-
- Downloads
AArch64: Add better costing for vector constants and operations
This patch adds extended costing to cost the creation of constants and the manipulation of constants. The default values provided are based on architectural expectations and each cost models can be individually tweaked as needed. The changes in this patch covers: * Construction of PARALLEL or CONST_VECTOR: Adds better costing for vector of constants which is based on the constant being created and the instruction that can be used to create it. i.e. a movi is cheaper than a literal load etc. * Construction of a vector through a vec_dup. gcc/ChangeLog: * config/arm/aarch-common-protos.h (struct vector_cost_table): Add movi, dup and extract costing fields. * config/aarch64/aarch64-cost-tables.h (qdf24xx_extra_costs, thunderx_extra_costs, thunderx2t99_extra_costs, thunderx3t110_extra_costs, tsv110_extra_costs, a64fx_extra_costs): Use them. * config/arm/aarch-cost-tables.h (generic_extra_costs, cortexa53_extra_costs, cortexa57_extra_costs, cortexa76_extra_costs, exynosm1_extra_costs, xgene1_extra_costs): Likewise * config/aarch64/aarch64-simd.md (aarch64_simd_dup<mode>): Add r->w dup. * config/aarch64/aarch64.c (aarch64_rtx_costs): Add extra costs. gcc/testsuite/ChangeLog: * gcc.target/aarch64/vect-cse-codegen.c: New test.
Showing
- gcc/config/aarch64/aarch64-cost-tables.h 24 additions, 6 deletionsgcc/config/aarch64/aarch64-cost-tables.h
- gcc/config/aarch64/aarch64-simd.md 6 additions, 4 deletionsgcc/config/aarch64/aarch64-simd.md
- gcc/config/aarch64/aarch64.c 34 additions, 4 deletionsgcc/config/aarch64/aarch64.c
- gcc/config/arm/aarch-common-protos.h 3 additions, 0 deletionsgcc/config/arm/aarch-common-protos.h
- gcc/config/arm/aarch-cost-tables.h 24 additions, 6 deletionsgcc/config/arm/aarch-cost-tables.h
- gcc/testsuite/gcc.target/aarch64/vect-cse-codegen.c 97 additions, 0 deletionsgcc/testsuite/gcc.target/aarch64/vect-cse-codegen.c
Loading
Please register or sign in to comment