aboutsummaryrefslogtreecommitdiff
path: root/gcc/hosthooks.h
diff options
context:
space:
mode:
authorKyrylo Tkachov <kyrylo.tkachov@arm.com>2017-11-08 18:32:09 +0000
committerKyrylo Tkachov <ktkachov@gcc.gnu.org>2017-11-08 18:32:09 +0000
commit7692ce17a3383c956400a55af88d4ff500dd614a (patch)
tree6b60e45f9e51298e4f08ceb8aa7d81d37be4479f /gcc/hosthooks.h
parent040939a2387eff082f1594fac35f007f93d2dcd8 (diff)
downloadgcc-7692ce17a3383c956400a55af88d4ff500dd614a.zip
gcc-7692ce17a3383c956400a55af88d4ff500dd614a.tar.gz
gcc-7692ce17a3383c956400a55af88d4ff500dd614a.tar.bz2
[AArch64] Add STP pattern to store a vec_concat of two 64-bit registers
On top of the previous vec_merge simplifications [1] we can add this pattern to perform a store of a vec_concat of two 64-bit values in distinct registers as an STP. This avoids constructing such a vector explicitly in a register and storing it as a Q register. This way for the code in the testcase we can generate: construct_lane_1: ldp d1, d0, [x0] fmov d3, 1.0e+0 fmov d2, 2.0e+0 fadd d4, d1, d3 fadd d5, d0, d2 stp d4, d5, [x1, 32] ret construct_lane_2: ldp x2, x0, [x0] add x3, x2, 1 add x4, x0, 2 stp x3, x4, [x1, 32] ret instead of the current: construct_lane_1: ldp d0, d1, [x0] fmov d3, 1.0e+0 fmov d2, 2.0e+0 fadd d0, d0, d3 fadd d1, d1, d2 dup v0.2d, v0.d[0] ins v0.d[1], v1.d[0] str q0, [x1, 32] ret construct_lane_2: ldp x2, x3, [x0] add x0, x2, 1 add x2, x3, 2 dup v0.2d, x0 ins v0.d[1], x2 str q0, [x1, 32] ret Bootstrapped and tested on aarch64-none-linux-gnu. [1] https://gcc.gnu.org/ml/gcc-patches/2017-06/msg00272.html https://gcc.gnu.org/ml/gcc-patches/2017-06/msg00273.html https://gcc.gnu.org/ml/gcc-patches/2017-06/msg00274.html * config/aarch64/aarch64-simd.md (store_pair_lanes<mode>): New pattern. * config/aarch64/constraints.md (Uml): New constraint. * config/aarch64/predicates.md (aarch64_mem_pair_lanes_operand): New predicate. * gcc.target/aarch64/store_v2vec_lanes.c: New test. From-SVN: r254551
Diffstat (limited to 'gcc/hosthooks.h')
0 files changed, 0 insertions, 0 deletions