https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89229
--- Comment #12 from H.J. Lu <hjl.tools at gmail dot com> --- [hjl@gnu-4 tmp]$ cat x.c /* { dg-do compile } */ /* { dg-options "-O2 -march=skylake-avx512" } */ extern int i; int foo1 (void) { register int xmm16 __asm ("xmm16") = i; asm volatile ("" : "+v" (xmm16)); register int xmm17 __asm ("xmm17") = xmm16; asm volatile ("" : "+v" (xmm17)); return xmm17; } int foo2 (void) { register int xmm1 __asm ("xmm1") = i; asm volatile ("" : "+v" (xmm1)); register int xmm17 __asm ("xmm17") = xmm1; asm volatile ("" : "+v" (xmm17)); return xmm1; } /* { dg-final { scan-assembler-not "%zmm\[0-9\]+" } } */ [hjl@gnu-4 tmp]$ gcc -S -O2 -march=skylake-avx512 x.c [hjl@gnu-4 tmp]$ cat x.s .file "x.c" .text .p2align 4,,15 .globl foo1 .type foo1, @function foo1: .LFB0: .cfi_startproc vmovd i(%rip), %xmm16 vmovdqa32 %zmm16, %zmm17 vmovd %xmm17, %eax ret .cfi_endproc .LFE0: .size foo1, .-foo1 .p2align 4,,15 .globl foo2 .type foo2, @function foo2: .LFB1: .cfi_startproc vmovd i(%rip), %xmm1 vmovdqa32 %zmm1, %zmm17 vmovd %xmm1, %eax ret .cfi_endproc .LFE1: .size foo2, .-foo2 .ident "GCC: (GNU) 8.2.1 20190209 (Red Hat 8.2.1-8)" .section .note.GNU-stack,"",@progbits [hjl@gnu-4 tmp]$