2 /* { dg-require-effective-target avx512f } */
3 /* { dg-options "-O2 -mavx512f" } */
6 #include "avx512f-check.h"
7 #include "avx512f-helper.h"
13 union256i_q res1
, res2
, res3
;
15 long long int res_ref
[4];
18 for (j
= 0; j
< 8; j
++)
21 for (j
= 0; j
< 4; j
++)
23 res1
.a
[j
] = DEFAULT_VALUE
;
24 res2
.a
[j
] = DEFAULT_VALUE
;
25 res3
.a
[j
] = DEFAULT_VALUE
;
27 res1
.x
= _mm512_extracti64x4_epi64 (s1
.x
, 0);
28 res2
.x
= _mm512_mask_extracti64x4_epi64 (res2
.x
, mask
, s1
.x
, 0);
29 res3
.x
= _mm512_maskz_extracti64x4_epi64 (mask
, s1
.x
, 0);
31 memset (res_ref
, 0, 32);
32 memcpy (res_ref
, s1
.a
, 32);
34 if (check_union256i_q (res1
, res_ref
))
37 MASK_MERGE (i_q
) (res_ref
, mask
, 4);
38 if (check_union256i_q (res2
, res_ref
))
41 MASK_ZERO (i_q
) (res_ref
, mask
, 4);
42 if (check_union256i_q (res3
, res_ref
))
45 res1
.x
= _mm512_extracti64x4_epi64 (s1
.x
, 1);
46 res2
.x
= _mm512_mask_extracti64x4_epi64 (res2
.x
, mask
, s1
.x
, 1);
47 res3
.x
= _mm512_maskz_extracti64x4_epi64 (mask
, s1
.x
, 1);
49 memset (res_ref
, 0, 32);
50 memcpy (res_ref
, s1
.a
+ 4, 32);
52 if (check_union256i_q (res1
, res_ref
))
55 MASK_MERGE (i_q
) (res_ref
, mask
, 4);
56 if (check_union256i_q (res2
, res_ref
))
59 MASK_ZERO (i_q
) (res_ref
, mask
, 4);
60 if (check_union256i_q (res3
, res_ref
))