GCC Newspaper
JULY 29, 2026
Date
/
Architectures
Components
Topics
News & Policy
aarch64 Performance Win

Populate issue_info for Ampere1 family cores

Vector issue information is now populated for Ampere1 family cores, enabling reduction loop unrolling.

This commit addresses an issue where vector issue information was missing for Ampere1, Ampere1a, and Ampere1b cores. By populating the cpu_vector_cost with details from the Ampere1 optimization guide, the compiler can now correctly determine unroll factors for reduction loops, enabling multi-accumulator unrolling on these processors.

In Details

The issue_info struct in cpu_vector_cost was NULL for Ampere1 family cores (ampere1, ampere1a, ampere1b), preventing determine_suggested_unroll_factor from functioning. This patch adds new issue_info definitions (ampere1_scalar_issue_info, ampere1_advsimd_issue_info, ampere1_vec_issue_info, and similar for ampere1b) to tuning_models. These are populated based on Ampere1 optimization guide figures (e.g., L1D throughput, general op throughput) and used to fill vector_cost for these cores, enabling reduction unrolling.

For Context
issue_info
A data structure containing information about the instruction issue rates and capabilities of a processor core, used by the compiler for performance tuning.
Reduction Loop
A loop that computes a single scalar value from a sequence of operations, such as summing elements of an array or finding the maximum value.
Unrolling
A loop optimization technique where multiple iterations of a loop are duplicated within the loop body to reduce loop overhead and expose more instruction-level parallelism.
AArch64
The 64-bit ARM architecture, commonly used in mobile devices and increasingly in servers and laptops.
Filed Under: aarch64optimizationperformance