aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-ssa-loop-niter.c
diff options
context:
space:
mode:
authorRichard Sandiford <richard.sandiford@arm.com>2021-01-04 11:59:07 +0000
committerRichard Sandiford <richard.sandiford@arm.com>2021-01-04 11:59:07 +0000
commitb41e6dd50f329b0291457e939d4c0dacd81c82c1 (patch)
tree65dc2ac48b43e224d17ae38019837a277ca57bc6 /gcc/tree-ssa-loop-niter.c
parentba15b0fa0df773a90374f6b06775534ecd9f7b43 (diff)
downloadgcc-b41e6dd50f329b0291457e939d4c0dacd81c82c1.zip
gcc-b41e6dd50f329b0291457e939d4c0dacd81c82c1.tar.gz
gcc-b41e6dd50f329b0291457e939d4c0dacd81c82c1.tar.bz2
aarch64: Improve vcombine codegen [PR89057]
This patch fixes a codegen regression in the handling of things like: __temp.val[0] \ = vcombine_##funcsuffix (__b.val[0], \ vcreate_##funcsuffix (__AARCH64_UINT64_C (0))); \ in the 64-bit vst[234] functions. The zero was forced into a register at expand time, and we relied on combine to fuse the zero and combine back together into a single combinez pattern. The problem is that the zero could be hoisted before combine gets a chance to do its thing. gcc/ PR target/89057 * config/aarch64/aarch64-simd.md (aarch64_combine<mode>): Accept aarch64_simd_reg_or_zero for operand 2. Use the combinez patterns to handle zero operands. gcc/testsuite/ PR target/89057 * gcc.target/aarch64/pr89057.c: New test.
Diffstat (limited to 'gcc/tree-ssa-loop-niter.c')
0 files changed, 0 insertions, 0 deletions