1 /* { dg-do compile } */
2 /* { dg-options "-O3 -mavx512f" } */
3 /* { dg-final { scan-assembler-times "vmovdqa64\[ \\t\]+%zmm" 2 } } */
4 /* { dg-final { scan-assembler-times "vpbroadcastd" 1 } } */
5 /* { dg-final { scan-assembler-times "vpbroadcastq" 1 } } */
6 /* { dg-final { scan-assembler-times "vpbroadcastb" 2 } } */
7 /* { dg-final { scan-assembler-times "vpbroadcastw" 2 } } */
8 /* { dg-final { scan-assembler-times "vbroadcastss" 1 } } */
9 /* { dg-final { scan-assembler-times "vbroadcastsd" 1 } } */
11 #include <x86intrin.h>
13 typedef char __v64qi
__attribute__ ((vector_size (64)));
14 typedef short __v32hi
__attribute__ ((vector_size (64)));
16 __v64qi
foo_1 (char c
)
19 c
, c
, c
, c
, c
, c
, c
, c
,
20 c
, c
, c
, c
, c
, c
, c
, c
,
21 c
, c
, c
, c
, c
, c
, c
, c
,
22 c
, c
, c
, c
, c
, c
, c
, c
,
23 c
, c
, c
, c
, c
, c
, c
, c
,
24 c
, c
, c
, c
, c
, c
, c
, c
,
25 c
, c
, c
, c
, c
, c
, c
, c
,
26 c
, c
, c
, c
, c
, c
, c
, c
32 __v32hi
foo_2 (short c
)
35 c
, c
, c
, c
, c
, c
, c
, c
,
36 c
, c
, c
, c
, c
, c
, c
, c
,
37 c
, c
, c
, c
, c
, c
, c
, c
,
38 c
, c
, c
, c
, c
, c
, c
, c
47 c
, c
, c
, c
, c
, c
, c
, c
,
48 c
, c
, c
, c
, c
, c
, c
, c
54 __v8di
foo_4 (long long c
)
57 c
, c
, c
, c
, c
, c
, c
, c
63 __v32qi
foo_5 (char c
)
66 c
, c
, c
, c
, c
, c
, c
, c
,
67 c
, c
, c
, c
, c
, c
, c
, c
,
68 c
, c
, c
, c
, c
, c
, c
, c
,
69 c
, c
, c
, c
, c
, c
, c
, c
75 __v16hi
foo_6 (short c
)
78 c
, c
, c
, c
, c
, c
, c
, c
,
79 c
, c
, c
, c
, c
, c
, c
, c
88 c
, c
, c
, c
, c
, c
, c
, c
94 __v4di
foo_8 (long long c
)
104 __v16qi
foo_9 (char c
)
107 c
, c
, c
, c
, c
, c
, c
, c
,
108 c
, c
, c
, c
, c
, c
, c
, c
114 __v8hi
foo_10(short c
)
117 c
, c
, c
, c
, c
, c
, c
, c