https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89229
--- Comment #17 from H.J. Lu <hjl.tools at gmail dot com> --- [hjl@gnu-4 gcc]$ cat /tmp/z.c /* { dg-do compile { target { ! ia32 } } } */ /* { dg-options "-O2 -march=skylake-avx512" } */ extern long long i; long long foo1 (void) { register long long xmm16 __asm ("xmm16") = i; asm volatile ("" : "+v" (xmm16)); register long long xmm17 __asm ("xmm17") = xmm16; asm volatile ("" : "+v" (xmm17)); return xmm17; } /* { dg-final { scan-assembler-times "vmovdqa32\[^\n\r]*xmm1\[67]\[^\n\r]*xmm1\[67]" 1 } } */ /* { dg-final { scan-assembler-not "%zmm\[0-9\]+" } } */ [hjl@gnu-4 gcc]$ gcc -S -O2 -march=skylake-avx512 /tmp/z.c -mno-avx512vl [hjl@gnu-4 gcc]$ cat z.s .file "z.c" .text .p2align 4,,15 .globl foo1 .type foo1, @function foo1: .LFB0: .cfi_startproc vmovq i(%rip), %xmm16 vmovdqa64 %xmm16, %xmm17 <<< This is an AVX512VL instruction. vmovq %xmm17, %rax ret .cfi_endproc .LFE0: .size foo1, .-foo1 .ident "GCC: (GNU) 8.2.1 20190209 (Red Hat 8.2.1-8)" .section .note.GNU-stack,"",@progbits [hjl@gnu-4 gcc]$