1 /* PR target/85918 */
2 /* { dg-do compile } */
3 /* { dg-options "-O3 -mavx512dq -mavx512vl -mprefer-vector-width=512 -fno-vect-cost-model -fdump-tree-vect-details" } */
4 /* { dg-final { scan-tree-dump-times "vectorized 1 loops in function" 24 "vect" } } */
5 
6 #define N 1024
7 
8 long long ll[N] __attribute__((aligned (64)));
9 unsigned long long ull[N] __attribute__((aligned (64)));
10 float f[N] __attribute__((aligned (64)));
11 double d[N] __attribute__((aligned (64)));
12 
ll2d1(void)13 void ll2d1 (void)
14 {
15   int i;
16 
17   for (i = 0; i < 4; i++)
18     d[i] = ll[i];
19 }
20 
ull2d1(void)21 void ull2d1 (void)
22 {
23   int i;
24 
25   for (i = 0; i < 4; i++)
26     d[i] = ull[i];
27 }
28 
d2ll1(void)29 void d2ll1 (void)
30 {
31   int i;
32 
33   for (i = 0; i < 4; i++)
34     ll[i] = d[i];
35 }
36 
d2ull1(void)37 void d2ull1 (void)
38 {
39   int i;
40 
41   for (i = 0; i < 4; i++)
42     ull[i] = d[i];
43 }
44 
ll2f1(void)45 void ll2f1 (void)
46 {
47   int i;
48 
49   for (i = 0; i < 4; i++)
50     f[i] = ll[i];
51 }
52 
ull2f1(void)53 void ull2f1 (void)
54 {
55   int i;
56 
57   for (i = 0; i < 4; i++)
58     f[i] = ull[i];
59 }
60 
f2ll1(void)61 void f2ll1 (void)
62 {
63   int i;
64 
65   for (i = 0; i < 4; i++)
66     ll[i] = f[i];
67 }
68 
f2ull1(void)69 void f2ull1 (void)
70 {
71   int i;
72 
73   for (i = 0; i < 4; i++)
74     ull[i] = f[i];
75 }
76 
ll2d2(void)77 void ll2d2 (void)
78 {
79   int i;
80 
81   for (i = 0; i < 8; i++)
82     d[i] = ll[i];
83 }
84 
ull2d2(void)85 void ull2d2 (void)
86 {
87   int i;
88 
89   for (i = 0; i < 8; i++)
90     d[i] = ull[i];
91 }
92 
d2ll2(void)93 void d2ll2 (void)
94 {
95   int i;
96 
97   for (i = 0; i < 8; i++)
98     ll[i] = d[i];
99 }
100 
d2ull2(void)101 void d2ull2 (void)
102 {
103   int i;
104 
105   for (i = 0; i < 8; i++)
106     ull[i] = d[i];
107 }
108 
ll2f2(void)109 void ll2f2 (void)
110 {
111   int i;
112 
113   for (i = 0; i < 8; i++)
114     f[i] = ll[i];
115 }
116 
ull2f2(void)117 void ull2f2 (void)
118 {
119   int i;
120 
121   for (i = 0; i < 8; i++)
122     f[i] = ull[i];
123 }
124 
f2ll2(void)125 void f2ll2 (void)
126 {
127   int i;
128 
129   for (i = 0; i < 8; i++)
130     ll[i] = f[i];
131 }
132 
f2ull2(void)133 void f2ull2 (void)
134 {
135   int i;
136 
137   for (i = 0; i < 8; i++)
138     ull[i] = f[i];
139 }
140 
ll2d3(void)141 void ll2d3 (void)
142 {
143   int i;
144 
145   for (i = 0; i < 16; i++)
146     d[i] = ll[i];
147 }
148 
ull2d3(void)149 void ull2d3 (void)
150 {
151   int i;
152 
153   for (i = 0; i < 16; i++)
154     d[i] = ull[i];
155 }
156 
d2ll3(void)157 void d2ll3 (void)
158 {
159   int i;
160 
161   for (i = 0; i < 16; i++)
162     ll[i] = d[i];
163 }
164 
d2ull3(void)165 void d2ull3 (void)
166 {
167   int i;
168 
169   for (i = 0; i < 16; i++)
170     ull[i] = d[i];
171 }
172 
ll2f3(void)173 void ll2f3 (void)
174 {
175   int i;
176 
177   for (i = 0; i < 16; i++)
178     f[i] = ll[i];
179 }
180 
ull2f3(void)181 void ull2f3 (void)
182 {
183   int i;
184 
185   for (i = 0; i < 16; i++)
186     f[i] = ull[i];
187 }
188 
f2ll3(void)189 void f2ll3 (void)
190 {
191   int i;
192 
193   for (i = 0; i < 16; i++)
194     ll[i] = f[i];
195 }
196 
f2ull3(void)197 void f2ull3 (void)
198 {
199   int i;
200 
201   for (i = 0; i < 16; i++)
202     ull[i] = f[i];
203 }
204