On 3/4/21 3:08 PM, Ilya Leoshkevich wrote:
> v1: https://gcc.gnu.org/pipermail/gcc-patches/2021-January/563799.html
> v1 -> v2:
> - Handle constraint modifiers, use AR constraint instead of R, add
>   testcases for & and %.
> 
> v2: https://gcc.gnu.org/pipermail/gcc-patches/2021-January/564380.html
> v2 -> v3:
> - The main prereq is now committed:
>   https://gcc.gnu.org/pipermail/gcc-patches/2021-March/566237.html
> - Dropped long-double-asm-abi.c test, because its prereq is not
>   approved (yet):
>   https://gcc.gnu.org/pipermail/gcc-patches/2021-March/566218.html
> - Removed superfluous constraint pointer increment.
> 
> 
> 
> 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  <i...@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.
>       * config/s390/vector.md (fprx2_to_tf): Rename from *fprx2_to_tf,
>       add memory alternative.
>       (tf_to_fprx2): New pattern.
> 
> gcc/testsuite/ChangeLog:
> 
> 2020-12-14  Ilya Leoshkevich  <i...@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.

Ok. Thanks!

Andreas

Reply via email to