2 /* { dg-options "-mavx2 -O2" } */
3 /* { dg-require-effective-target avx2 } */
5 #include "avx2-check.h"
13 init_permq (unsigned long long *src1
, int seed
)
17 for (i
= 0; i
< 4; i
++)
19 src1
[i
] = (i
+ seed
) * (i
+ seed
) * sign
;
25 calc_permq (unsigned long long *src1
, unsigned int mask
,
26 unsigned long long *dst
)
30 for (i
= 0; i
< 4; i
++)
32 temp
= (mask
>> (2 * i
)) & 3;
40 union256i_q src1
, dst
;
41 unsigned long long dst_ref
[4];
44 for (i
= 0; i
< NUM
; i
++)
46 init_permq (src1
.a
, i
);
48 dst
.x
= _mm256_permute4x64_epi64 (src1
.x
, MASK
);
49 calc_permq (src1
.a
, MASK
, dst_ref
);
51 if (check_union256i_q (dst
, dst_ref
))