aboutsummaryrefslogtreecommitdiff
path: root/gcc/lra-constraints.c
diff options
context:
space:
mode:
authorRichard Sandiford <richard.sandiford@arm.com>2021-03-26 16:08:31 +0000
committerRichard Sandiford <richard.sandiford@arm.com>2021-03-26 16:08:31 +0000
commitd1ff0847b2df6ad21f77e26e7e516643c5aa7d40 (patch)
tree440a0b8c313edb0c1413035c48bd295afca6dbe7 /gcc/lra-constraints.c
parentb1a831f0dd869543788f08f94dc7ff64df3f2064 (diff)
downloadgcc-d1ff0847b2df6ad21f77e26e7e516643c5aa7d40.zip
gcc-d1ff0847b2df6ad21f77e26e7e516643c5aa7d40.tar.gz
gcc-d1ff0847b2df6ad21f77e26e7e516643c5aa7d40.tar.bz2
aarch64: Add costs for storing one element of a vector
Storing one element of a vector is costed as a vec_to_scalar followed by a scalar_store. However, vec_to_scalar is also used for reductions and for vector-to-GPR moves, which makes it difficult to pick one cost for them all. This patch therefore adds a cost for extracting one element of a vector in preparation for storing it out. The store itself is still costed separately. Like with the previous patches, this one only becomes active if a CPU selects use_new_vector_costs. It should therefore have a very low impact on other CPUs. gcc/ * config/aarch64/aarch64-protos.h (simd_vec_cost::store_elt_extra_cost): New member variable. * config/aarch64/aarch64.c (generic_advsimd_vector_cost): Update accordingly, using the vec_to_scalar cost for the new field. (generic_sve_vector_cost, a64fx_advsimd_vector_cost): Likewise. (a64fx_sve_vector_cost, qdf24xx_advsimd_vector_cost): Likewise. (thunderx_advsimd_vector_cost, tsv110_advsimd_vector_cost): Likewise. (cortexa57_advsimd_vector_cost, exynosm1_advsimd_vector_cost) (xgene1_advsimd_vector_cost, thunderx2t99_advsimd_vector_cost) (thunderx3t110_advsimd_vector_cost): Likewise. (aarch64_detect_vector_stmt_subtype): Detect single-element stores.
Diffstat (limited to 'gcc/lra-constraints.c')
0 files changed, 0 insertions, 0 deletions