/* { dg-do compile { target { ! ia32 } } } */ | |
/* { dg-options "-O2 -mavx512vl" } */ | |
typedef int V __attribute__((vector_size (8))); | |
typedef int W __attribute__((vector_size (16))); | |
void | |
f1 (V x, V y) | |
{ | |
register W c __asm ("xmm16"); | |
c = (W) { x[0], x[1], x[0], x[1] }; | |
asm volatile ("" : "+v" (c)); | |
} | |
void | |
f2 (V x, V *y) | |
{ | |
register W c __asm ("xmm16"); | |
c = (W) { x[0], x[1], (*y)[0], (*y)[1] }; | |
asm volatile ("" : "+v" (c)); | |
} | |
/* { dg-final { scan-assembler-times "vpunpcklqdq\[^\n\r]*xmm16" 2 } } */ |