2016-12-07 Thomas Preud'homme <thomas.preudhomme@arm.com>
[official-gcc.git] / gcc / testsuite / gcc.target / sparc / bmaskbshuf-2.c
blob874e3db9982bbaceb9e0dcb4abceec8afed6f8a7
1 /* { dg-do run } */
2 /* { dg-require-effective-target ultrasparc_vis2_hw } */
3 /* { dg-options "-mcpu=ultrasparc3 -O" } */
5 typedef unsigned int Vect __attribute__((vector_size(8)));
7 extern void abort (void);
9 Vect a, b, c, d;
11 __attribute__((noinline, noclone)) void test (void)
13 Vect mask = { 2, 2 };
14 int i;
16 c = __builtin_shuffle (a, mask);
17 d = __builtin_shuffle (a, b, mask);
19 __asm__ ("" : : "r" (&c), "r" (&d) : "memory");
21 for (i = 0; i < 2; ++i)
22 if (c[i] != a[mask[i] & 1])
23 abort ();
24 else if (mask[i] & 2)
26 if (d[i] != b[mask[i] & 1])
27 abort ();
31 int main (void)
33 int i;
34 for (i = 0; i < 2; ++i)
36 a[i] = i + 2;
37 b[i] = 2 + i + 2;
40 test ();
41 return 0;