aboutsummaryrefslogtreecommitdiff
path: root/gcc/lra-constraints.c
diff options
context:
space:
mode:
authorIlya Leoshkevich <iii@linux.ibm.com>2020-12-10 15:43:59 +0100
committerIlya Leoshkevich <iii@linux.ibm.com>2021-03-08 14:41:39 +0100
commit3cb8aab390ccf31e4581863b080db30c6735e51e (patch)
tree94ad54a15d2535fb4ebac9feee12414da40f4556 /gcc/lra-constraints.c
parent8a6a62614a8ae4544770420416d1632d6c3d3f6e (diff)
downloadgcc-3cb8aab390ccf31e4581863b080db30c6735e51e.zip
gcc-3cb8aab390ccf31e4581863b080db30c6735e51e.tar.gz
gcc-3cb8aab390ccf31e4581863b080db30c6735e51e.tar.bz2
IBM Z: Fix usage of "f" constraint with long doubles
After switching the s390 backend to store long doubles in vector registers, "f" constraint broke when used with the former: long doubles correspond to TFmode, which in combination with "f" corresponds to hard regs %v0-%v15, however, asm users expect a %f0-%f15 pair. Fix by using TARGET_MD_ASM_ADJUST hook to convert TFmode values to FPRX2mode and back. gcc/ChangeLog: 2020-12-14 Ilya Leoshkevich <iii@linux.ibm.com> * config/s390/s390.c (f_constraint_p): New function. (s390_md_asm_adjust): Implement TARGET_MD_ASM_ADJUST. (TARGET_MD_ASM_ADJUST): Likewise. gcc/testsuite/ChangeLog: 2020-12-14 Ilya Leoshkevich <iii@linux.ibm.com> * gcc.target/s390/vector/long-double-asm-commutative.c: New test. * gcc.target/s390/vector/long-double-asm-earlyclobber.c: New test. * gcc.target/s390/vector/long-double-asm-in-out.c: New test. * gcc.target/s390/vector/long-double-asm-inout.c: New test. * gcc.target/s390/vector/long-double-asm-matching.c: New test. * gcc.target/s390/vector/long-double-asm-regmem.c: New test. * gcc.target/s390/vector/long-double-volatile-from-i64.c: New test.
Diffstat (limited to 'gcc/lra-constraints.c')
0 files changed, 0 insertions, 0 deletions