diff --git a/gcc/ChangeLog b/gcc/ChangeLog index e9ce10c287060..72c8ee6bd6774 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,6 +1,13 @@ 2020-02-13 Jakub Jelinek Backported from mainline + 2020-02-08 Uroš Bizjak + Jakub Jelinek + + PR target/65782 + * config/i386/i386.h (CALL_USED_REGISTERS): Make + xmm16-xmm31 call-used even in 64-bit ms-abi. + 2020-02-06 Jakub Jelinek PR libgomp/93515 diff --git a/gcc/config/i386/i386.h b/gcc/config/i386/i386.h index 95e1733f12a4e..14e5a392f62c9 100644 --- a/gcc/config/i386/i386.h +++ b/gcc/config/i386/i386.h @@ -1082,9 +1082,9 @@ extern const char *host_detect_local_cpu (int argc, const char **argv); /*xmm8,xmm9,xmm10,xmm11,xmm12,xmm13,xmm14,xmm15*/ \ 6, 6, 6, 6, 6, 6, 6, 6, \ /*xmm16,xmm17,xmm18,xmm19,xmm20,xmm21,xmm22,xmm23*/ \ - 6, 6, 6, 6, 6, 6, 6, 6, \ + 1, 1, 1, 1, 1, 1, 1, 1, \ /*xmm24,xmm25,xmm26,xmm27,xmm28,xmm29,xmm30,xmm31*/ \ - 6, 6, 6, 6, 6, 6, 6, 6, \ + 1, 1, 1, 1, 1, 1, 1, 1, \ /* k0, k1, k2, k3, k4, k5, k6, k7*/ \ 1, 1, 1, 1, 1, 1, 1, 1 } diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 2cfc06f5605e2..c7b8e6a585ae0 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,6 +1,12 @@ 2020-02-13 Jakub Jelinek Backported from mainline + 2020-02-08 Uroš Bizjak + Jakub Jelinek + + PR target/65782 + * gcc.target/i386/pr65782.c: New test. + 2020-02-05 Jakub Jelinek PR c++/93557 diff --git a/gcc/testsuite/gcc.target/i386/pr65782.c b/gcc/testsuite/gcc.target/i386/pr65782.c new file mode 100644 index 0000000000000..298dca1be97ce --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr65782.c @@ -0,0 +1,16 @@ +/* PR target/65782 */ +/* { dg-do assemble { target { avx512vl && { ! ia32 } } } } */ +/* { dg-options "-O2 -mavx512vl" } */ + +void +foo (void) +{ + register double x __asm ("xmm14"); + register double y __asm ("xmm18"); + asm ("" : "=x" (x)); + asm ("" : "=v" (y)); + x += y; + y += x; + asm ("" : : "x" (x)); + asm ("" : : "v" (y)); +}