1 /* { dg-do run } */
2 /* { dg-options "-O2 -mavx512f" } */
3 /* { dg-require-effective-target avx512f } */
4 
5 #include "avx512f-check.h"
6 
7 static __m512i
8 __attribute__ ((noinline))
foo(long long x1,long long x2,long long x3,long long x4,long long x5,long long x6,long long x7,long long x8)9 foo (long long x1, long long x2, long long x3, long long x4,
10      long long x5, long long x6, long long x7, long long x8)
11 {
12   return _mm512_set_epi64 (x1, x2, x3, x4, x5, x6, x7, x8);
13 }
14 
15 static __m512i
16 __attribute__ ((noinline))
foo_r(long long x1,long long x2,long long x3,long long x4,long long x5,long long x6,long long x7,long long x8)17 foo_r (long long x1, long long x2, long long x3, long long x4,
18        long long x5, long long x6, long long x7, long long x8)
19 {
20   return _mm512_setr_epi64 (x8, x7, x6, x5, x4, x3, x2, x1);
21 }
22 
23 static void
avx512f_test(void)24 avx512f_test (void)
25 {
26   long long v[8] = { 0x12e9e94645ad8LL, 0x851c0b39446LL, 2134, 6678,
27 		     0x786784645245LL, 0x9487731234LL, 41124, 86530 };
28   union512i_q res;
29 
30   res.x = foo (v[7], v[6], v[5], v[4], v[3], v[2], v[1], v[0]);
31 
32   if (check_union512i_q (res, v))
33     abort ();
34 
35   res.x = _mm512_setzero_si512 ();
36 
37   res.x = foo_r (v[7], v[6], v[5], v[4], v[3], v[2], v[1], v[0]);
38 
39   if (check_union512i_q (res, v))
40     abort ();
41 }
42