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