aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran/options.cc
diff options
context:
space:
mode:
authorWilco Dijkstra <wilco.dijkstra@arm.com>2024-10-15 16:22:23 +0000
committerWilco Dijkstra <wilco.dijkstra@arm.com>2024-10-23 13:20:01 +0000
commit7c7c895c2f34d2a5c0cd2139c5e76c13c6c030c9 (patch)
tree61d52891bf10fa7a9f2d693fdc8a8aabd65b1d4f /gcc/fortran/options.cc
parent2b666dc4d1c96e0ea3597fe7e502a70198a66c03 (diff)
downloadgcc-7c7c895c2f34d2a5c0cd2139c5e76c13c6c030c9.zip
gcc-7c7c895c2f34d2a5c0cd2139c5e76c13c6c030c9.tar.gz
gcc-7c7c895c2f34d2a5c0cd2139c5e76c13c6c030c9.tar.bz2
AArch64: Fix copysign patterns
The current copysign pattern has a mismatch in the predicates and constraints - operand[2] is a register_operand but also has an alternative X which allows any operand. Since it is a floating point operation, having an integer alternative makes no sense. Change the expander to always use vector immediates which results in better code and sharing of immediates between copysign and xorsign. gcc/ChangeLog: * config/aarch64/aarch64.md (copysign<GPF:mode>3): Widen immediate to vector. (copysign<GPF:mode>3_insn): Use VQ_INT_EQUIV in operand 3. * config/aarch64/iterators.md (VQ_INT_EQUIV): New iterator. (vq_int_equiv): Likewise. gcc/testsuite/ChangeLog: * gcc.target/aarch64/copysign_3.c: New test. * gcc.target/aarch64/copysign_4.c: New test. * gcc.target/aarch64/fneg-abs_2.c: Fixup test. * gcc.target/aarch64/sve/fneg-abs_2.c: Likewise.
Diffstat (limited to 'gcc/fortran/options.cc')
0 files changed, 0 insertions, 0 deletions