| /* PR target/93430 */ |
| /* { dg-do compile } */ |
| /* { dg-options "-O2" } */ |
| /* { dg-additional-options "-mavx -mno-avx2" { target avx } } */ |
| |
| typedef double V __attribute__((vector_size (4 * sizeof (double)))); |
| typedef long long VI __attribute__((vector_size (4 * sizeof (long long)))); |
| |
| #if __SIZEOF_DOUBLE__ == __SIZEOF_LONG_LONG__ |
| void |
| foo (V *x, V *y) |
| { |
| y[0] = __builtin_shuffle (x[0], x[0], (VI) { 0, 0, 0, 0 }); |
| } |
| |
| void |
| bar (V *x, V *y) |
| { |
| y[0] = __builtin_shuffle (x[0], x[0], (VI) { 1, 1, 1, 1 }); |
| } |
| |
| void |
| baz (V *x, V *y) |
| { |
| y[0] = __builtin_shuffle (x[0], x[0], (VI) { 2, 2, 2, 2 }); |
| } |
| |
| void |
| qux (V *x, V *y) |
| { |
| y[0] = __builtin_shuffle (x[0], x[0], (VI) { 3, 3, 3, 3 }); |
| } |
| #endif |