2 /* { dg-options "-mavx512f -O2" } */
3 /* { dg-require-effective-target avx512f } */
5 #include "avx512f-check.h"
10 compute_scatterdq (__mmask8 m8
, int *idx
, long long *src
,
11 int scale
, long long *r
)
15 for (i
= 0; i
< 8; i
++)
18 *(long long *) (((unsigned char *) r
) + idx
[i
] * scale
) =
29 long long res
[8] = { 0 };
30 long long res_ref
[8] = { 0 };
33 for (i
= 0; i
< 8; i
++)
35 src
.a
[i
] = 1983 * (i
+ 1) * (i
+ 2);
37 /* About to gather in reverse order,
38 divide by 2 to demonstrate scale */
39 idx
.a
[i
] = (64 - (i
+ 1) * 8) >> 1;
42 _mm512_mask_i32scatter_epi64 (res
, m8
, idx
.x
, src
.x
, SCALE
);
43 compute_scatterdq (m8
, idx
.a
, src
.a
, SCALE
, res_ref
);
45 if (checkVl (res
, res_ref
, 8))
48 _mm512_i32scatter_epi64 (res
, idx
.x
, src
.x
, SCALE
);
49 compute_scatterdq (0xFF, idx
.a
, src
.a
, SCALE
, res_ref
);
51 if (checkVl (res
, res_ref
, 8))