blob: 6ac293d74d3b4b3f3a3d9b7d2b26aa69ea0e26ee [file] [log] [blame]
/* { dg-do compile { target { ! ia32 } } } */
/* { dg-options "-O2 -mavx512vl -mno-avx512dq -masm=att" } */
typedef int V __attribute__((vector_size (8)));
void
f1 (int x, int y)
{
register int a __asm ("xmm16");
register int b __asm ("xmm17");
register V c __asm ("xmm3");
a = x;
b = y;
asm volatile ("" : "+v" (a), "+v" (b));
c = (V) { a, b };
asm volatile ("" : "+v" (c));
}
/* { dg-final { scan-assembler "vpunpckldq\[^\n\r]*%xmm17\[^\n\r]*%xmm16\[^\n\r]*%xmm3" } } */
void
f2 (int x, int y)
{
register int a __asm ("xmm16");
register V c __asm ("xmm3");
a = x;
asm volatile ("" : "+v" (a));
c = (V) { a, y };
asm volatile ("" : "+v" (c));
}
void
f3 (int x, int *y)
{
register int a __asm ("xmm16");
register V c __asm ("xmm3");
a = x;
asm volatile ("" : "+v" (a));
c = (V) { a, *y };
asm volatile ("" : "+v" (c));
}
/* { dg-final { scan-assembler-not "vpinsrd\[^\n\r]*\\\$1\[^\n\r]*%xmm16\[^\n\r]*%xmm3" } } */