1 /* { dg-do compile } */
2 /* { dg-options "-O3 -mavx512f" } */
3 /* { dg-final { scan-assembler-times "vmovdqa64\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)"  0 } } */
4 /* { dg-final { scan-assembler-times "vpbroadcastd\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
5 /* { dg-final { scan-assembler-times "vpbroadcastd\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
6 /* { dg-final { scan-assembler-times "vpbroadcastq\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
7 /* { dg-final { scan-assembler-times "vpbroadcastq\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
8 /* { dg-final { scan-assembler-times "vpbroadcastq\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
9 /* { dg-final { scan-assembler-times "vpbroadcastb\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+(?:\n|\[ \\t\]+#)"  2 } } */
10 /* { dg-final { scan-assembler-times "vpbroadcastb\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)"  1 } } */
11 /* { dg-final { scan-assembler-times "vpbroadcastw\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+(?:\n|\[ \\t\]+#)"  2 } } */
12 /* { dg-final { scan-assembler-times "vpbroadcastw\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)"  1 } } */
13 /* { dg-final { scan-assembler-times "vbroadcastss\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+(?:\n|\[ \\t\]+#)" 0 } } */
14 /* { dg-final { scan-assembler-times "vbroadcastsd\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+(?:\n|\[ \\t\]+#)" 0 } } */
15 
16 #include <x86intrin.h>
17 
18 typedef char __v64qi __attribute__ ((vector_size (64)));
19 typedef short __v32hi __attribute__ ((vector_size (64)));
20 
foo_1(char c)21 __v64qi foo_1 (char c)
22 {
23   __v64qi v1 = {
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,
27       c, c, c, c, c, c, c, c,
28       c, c, c, c, c, c, c, c,
29       c, c, c, c, c, c, c, c,
30       c, c, c, c, c, c, c, c,
31       c, c, c, c, c, c, c, c
32   };
33 
34   return v1;
35 }
36 
foo_2(short c)37 __v32hi foo_2 (short c)
38 {
39   __v32hi v1 = {
40       c, c, c, c, c, c, c, c,
41       c, c, c, c, c, c, c, c,
42       c, c, c, c, c, c, c, c,
43       c, c, c, c, c, c, c, c
44   };
45 
46   return v1;
47 }
48 
foo_3(int c)49 __v16si foo_3 (int c)
50 {
51   __v16si v1 = {
52       c, c, c, c, c, c, c, c,
53       c, c, c, c, c, c, c, c
54   };
55 
56   return v1;
57 }
58 
foo_4(long long c)59 __v8di foo_4 (long long c)
60 {
61   __v8di v1 = {
62       c, c, c, c, c, c, c, c
63   };
64 
65   return v1;
66 }
67 
foo_5(char c)68 __v32qi foo_5 (char c)
69 {
70   __v32qi v1 = {
71       c, c, c, c, c, c, c, c,
72       c, c, c, c, c, c, c, c,
73       c, c, c, c, c, c, c, c,
74       c, c, c, c, c, c, c, c
75   };
76 
77   return v1;
78 }
79 
foo_6(short c)80 __v16hi foo_6 (short c)
81 {
82   __v16hi v1 = {
83       c, c, c, c, c, c, c, c,
84       c, c, c, c, c, c, c, c
85   };
86 
87   return v1;
88 }
89 
foo_7(int c)90 __v8si foo_7 (int c)
91 {
92   __v8si v1 = {
93       c, c, c, c, c, c, c, c
94   };
95 
96   return v1;
97 }
98 
foo_8(long long c)99 __v4di foo_8 (long long c)
100 {
101   __v4di v1 = {
102       c, c, c, c
103   };
104 
105   return v1;
106 }
107 
108 
foo_9(char c)109 __v16qi foo_9 (char c)
110 {
111   __v16qi v1 = {
112       c, c, c, c, c, c, c, c,
113       c, c, c, c, c, c, c, c
114   };
115 
116   return v1;
117 }
118 
foo_10(short c)119 __v8hi foo_10(short c)
120 {
121   __v8hi v1 = {
122       c, c, c, c, c, c, c, c
123   };
124 
125   return v1;
126 }
127