3 /* { dg-require-effective-target xop } */
4 /* { dg-options "-O2 -mxop" } */
10 extern void abort (void);
18 unsigned long long l
[2];
21 #define TEST1(F, N, S, SS) \
23 for (i = 0; i < sizeof (a.F) / sizeof (a.F[0]); i++) \
25 s = _mm_set1_epi##SS (N); \
26 b.v = _mm_roti_epi##S (a.v, N); \
27 c.v = _mm_rot_epi##S (a.v, s); \
28 for (i = 0; i < sizeof (a.F) / sizeof (a.F[0]); i++) \
30 int mask = __CHAR_BIT__ * sizeof (a.F[i]) - 1; \
31 d.F[i] = a.F[i] << (N & mask); \
33 d.F[i] |= a.F[i] >> (mask + 1 - (N & mask)); \
34 if (b.F[i] != c.F[i] || b.F[i] != d.F[i]) \
40 TEST1 (s, N, 16, 16); \
41 TEST1 (i, N, 32, 32); \