2 /* { dg-options "-mavx2 -O2" } */
3 /* { dg-require-effective-target avx2 } */
5 #include "avx2-check.h"
14 init_pblendw (short *src1
, short *src2
, int seed
)
18 for (i
= 0; i
< 16; i
++)
20 src1
[i
] = (i
+ seed
) * (i
+ seed
) * sign
;
21 src2
[i
] = (i
+ seed
+ 20) * sign
;
27 calc_pblendw (short *src1
, short *src2
, unsigned int mask
, short *dst
)
31 memcpy (dst
, src1
, 32);
32 for (i
= 0; i
< 16; i
++)
33 if (mask
& (1 << (i
% 8)))
40 union256i_w src1
, src2
, dst
;
44 for (i
= 0; i
< NUM
; i
++)
46 init_pblendw (src1
.a
, src2
.a
, i
);
48 dst
.x
= _mm256_blend_epi16 (src1
.x
, src2
.x
, MASK
);
49 calc_pblendw (src1
.a
, src2
.a
, MASK
, dst_ref
);
51 if (check_union256i_w (dst
, dst_ref
))