1 /* { dg-do compile } */
2 /* { dg-options "-mavx512bw -mavx512vl -O2" } */
3 /* { dg-final { scan-assembler-times "vpbroadcastw\[ \\t\]+\[^\n\]*%zmm\[0-9\]\[^\{\]" 2 } } */
4 /* { dg-final { scan-assembler-times "vpbroadcastw\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 2 } } */
5 /* { dg-final { scan-assembler-times "vpbroadcastw\[ \\t\]+\[^\n\]*%zmm\[0-9\]\{%k\[1-7\]\}\{z\}" 2 } } */
6 /* { dg-final { scan-assembler-times "vpbroadcastw\[ \\t\]+\[^\n\]*%ymm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 2 } } */
7 /* { dg-final { scan-assembler-times "vpbroadcastw\[ \\t\]+\[^\n\]*%ymm\[0-9\]\{%k\[1-7\]\}\{z\}" 2 } } */
8 /* { dg-final { scan-assembler-times "vpbroadcastw\[ \\t\]+\[^\n\]*%xmm\[0-9\]\{%k\[1-7\]\}\[^\{\]" 2 } } */
9 /* { dg-final { scan-assembler-times "vpbroadcastw\[ \\t\]+\[^\n\]*%xmm\[0-9\]\{%k\[1-7\]\}\{z\}" 2 } } */
11 #include <immintrin.h>
17 volatile __mmask32 mx
;
18 volatile __mmask16 my
;
24 x
= _mm512_broadcastw_epi16 (z
);
25 x
= _mm512_mask_broadcastw_epi16 (x
, mx
, z
);
26 x
= _mm512_maskz_broadcastw_epi16 (mx
, z
);
27 y
= _mm256_mask_broadcastw_epi16 (y
, my
, z
);
28 y
= _mm256_maskz_broadcastw_epi16 (my
, z
);
29 z
= _mm_mask_broadcastw_epi16 (z
, mz
, z
);
30 z
= _mm_maskz_broadcastw_epi16 (mz
, z
);
32 x
= _mm512_set1_epi16 (w
);
33 x
= _mm512_mask_set1_epi16 (x
, mx
, w
);
34 x
= _mm512_maskz_set1_epi16 (mx
, w
);
35 y
= _mm256_mask_set1_epi16 (y
, my
, w
);
36 y
= _mm256_maskz_set1_epi16 (my
, w
);
37 z
= _mm_mask_set1_epi16 (z
, mz
, w
);
38 z
= _mm_maskz_set1_epi16 (mz
, w
);