Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(5)

Side by Side Diff: test/Transforms/NaCl/vector-canonicalization-inserts.ll

Issue 1423873002: PNaCl: Add a vector type legalization pass. Base URL: https://chromium.googlesource.com/native_client/pnacl-llvm.git@master
Patch Set: Created 5 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 ; RUN: opt -S -pnacl-vector-canonicalization %s | FileCheck %s
2
3 ; Auto-generated tests for insertelement instructions.
4
5 target datalayout = "e-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64 :64:64-p:32:32:32-v128:32:128"
6
7 define <2 x i8> @insert_2xi8_at_0(<2 x i8>, i8) {
8 entry:
9 %2 = insertelement <2 x i8> %0, i8 %1, i32 0
10 ret <2 x i8> %2
11 }
12 ; CHECK-LABEL: define <16 x i8> @insert_2xi8_at_0(<16 x i8>, i8) {
13 ; CHECK: entry:
14 ; CHECK-NEXT: %2 = insertelement <16 x i8> %0, i8 %1, i32 0
15 ; CHECK-NEXT: ret <16 x i8> %2
16 ; CHECK-NEXT: }
17
18 define <2 x i8> @insert_2xi8_at_1(<2 x i8>, i8) {
19 entry:
20 %2 = insertelement <2 x i8> %0, i8 %1, i32 1
21 ret <2 x i8> %2
22 }
23 ; CHECK-LABEL: define <16 x i8> @insert_2xi8_at_1(<16 x i8>, i8) {
24 ; CHECK: entry:
25 ; CHECK-NEXT: %2 = insertelement <16 x i8> %0, i8 %1, i32 1
26 ; CHECK-NEXT: ret <16 x i8> %2
27 ; CHECK-NEXT: }
28
29 define <2 x i8> @insert_2xi8_undef_idx(<2 x i8>, i8) {
30 entry:
31 %2 = insertelement <2 x i8> %0, i8 %1, i32 2
32 ret <2 x i8> %2
33 }
34 ; CHECK-LABEL: define <16 x i8> @insert_2xi8_undef_idx(<16 x i8>, i8) {
35 ; CHECK: entry:
36 ; CHECK-NEXT: ret <16 x i8> %0
37 ; CHECK-NEXT: }
38
39 define <2 x i16> @insert_2xi16_at_0(<2 x i16>, i16) {
40 entry:
41 %2 = insertelement <2 x i16> %0, i16 %1, i32 0
42 ret <2 x i16> %2
43 }
44 ; CHECK-LABEL: define <8 x i16> @insert_2xi16_at_0(<8 x i16>, i16) {
45 ; CHECK: entry:
46 ; CHECK-NEXT: %2 = insertelement <8 x i16> %0, i16 %1, i32 0
47 ; CHECK-NEXT: ret <8 x i16> %2
48 ; CHECK-NEXT: }
49
50 define <2 x i16> @insert_2xi16_at_1(<2 x i16>, i16) {
51 entry:
52 %2 = insertelement <2 x i16> %0, i16 %1, i32 1
53 ret <2 x i16> %2
54 }
55 ; CHECK-LABEL: define <8 x i16> @insert_2xi16_at_1(<8 x i16>, i16) {
56 ; CHECK: entry:
57 ; CHECK-NEXT: %2 = insertelement <8 x i16> %0, i16 %1, i32 1
58 ; CHECK-NEXT: ret <8 x i16> %2
59 ; CHECK-NEXT: }
60
61 define <2 x i16> @insert_2xi16_undef_idx(<2 x i16>, i16) {
62 entry:
63 %2 = insertelement <2 x i16> %0, i16 %1, i32 2
64 ret <2 x i16> %2
65 }
66 ; CHECK-LABEL: define <8 x i16> @insert_2xi16_undef_idx(<8 x i16>, i16) {
67 ; CHECK: entry:
68 ; CHECK-NEXT: ret <8 x i16> %0
69 ; CHECK-NEXT: }
70
71 define <2 x i32> @insert_2xi32_at_0(<2 x i32>, i32) {
72 entry:
73 %2 = insertelement <2 x i32> %0, i32 %1, i32 0
74 ret <2 x i32> %2
75 }
76 ; CHECK-LABEL: define <4 x i32> @insert_2xi32_at_0(<4 x i32>, i32) {
77 ; CHECK: entry:
78 ; CHECK-NEXT: %2 = insertelement <4 x i32> %0, i32 %1, i32 0
79 ; CHECK-NEXT: ret <4 x i32> %2
80 ; CHECK-NEXT: }
81
82 define <2 x i32> @insert_2xi32_at_1(<2 x i32>, i32) {
83 entry:
84 %2 = insertelement <2 x i32> %0, i32 %1, i32 1
85 ret <2 x i32> %2
86 }
87 ; CHECK-LABEL: define <4 x i32> @insert_2xi32_at_1(<4 x i32>, i32) {
88 ; CHECK: entry:
89 ; CHECK-NEXT: %2 = insertelement <4 x i32> %0, i32 %1, i32 1
90 ; CHECK-NEXT: ret <4 x i32> %2
91 ; CHECK-NEXT: }
92
93 define <2 x i32> @insert_2xi32_undef_idx(<2 x i32>, i32) {
94 entry:
95 %2 = insertelement <2 x i32> %0, i32 %1, i32 2
96 ret <2 x i32> %2
97 }
98 ; CHECK-LABEL: define <4 x i32> @insert_2xi32_undef_idx(<4 x i32>, i32) {
99 ; CHECK: entry:
100 ; CHECK-NEXT: ret <4 x i32> %0
101 ; CHECK-NEXT: }
102
103 define <2 x i64> @insert_2xi64_at_0(<2 x i64>, i64) {
104 entry:
105 %2 = insertelement <2 x i64> %0, i64 %1, i32 0
106 ret <2 x i64> %2
107 }
108 ; CHECK-LABEL: define <2 x i64> @insert_2xi64_at_0(<2 x i64>, i64) {
109 ; CHECK: entry:
110 ; CHECK-NEXT: %2 = insertelement <2 x i64> %0, i64 %1, i32 0
111 ; CHECK-NEXT: ret <2 x i64> %2
112 ; CHECK-NEXT: }
113
114 define <2 x i64> @insert_2xi64_at_1(<2 x i64>, i64) {
115 entry:
116 %2 = insertelement <2 x i64> %0, i64 %1, i32 1
117 ret <2 x i64> %2
118 }
119 ; CHECK-LABEL: define <2 x i64> @insert_2xi64_at_1(<2 x i64>, i64) {
120 ; CHECK: entry:
121 ; CHECK-NEXT: %2 = insertelement <2 x i64> %0, i64 %1, i32 1
122 ; CHECK-NEXT: ret <2 x i64> %2
123 ; CHECK-NEXT: }
124
125 define <2 x i64> @insert_2xi64_undef_idx(<2 x i64>, i64) {
126 entry:
127 %2 = insertelement <2 x i64> %0, i64 %1, i32 2
128 ret <2 x i64> %2
129 }
130 ; CHECK-LABEL: define <2 x i64> @insert_2xi64_undef_idx(<2 x i64>, i64) {
131 ; CHECK: entry:
132 ; CHECK-NEXT: %2 = insertelement <2 x i64> %0, i64 %1, i32 2
133 ; CHECK-NEXT: ret <2 x i64> %2
134 ; CHECK-NEXT: }
135
136 define <2 x i8*> @insert_2xi8ptr_at_0(<2 x i8*>, i8*) {
137 entry:
138 %2 = insertelement <2 x i8*> %0, i8* %1, i32 0
139 ret <2 x i8*> %2
140 }
141 ; CHECK-LABEL: define <4 x i8*> @insert_2xi8ptr_at_0(<4 x i8*>, i8*) {
142 ; CHECK: entry:
143 ; CHECK-NEXT: %2 = insertelement <4 x i8*> %0, i8* %1, i32 0
144 ; CHECK-NEXT: ret <4 x i8*> %2
145 ; CHECK-NEXT: }
146
147 define <2 x i8*> @insert_2xi8ptr_at_1(<2 x i8*>, i8*) {
148 entry:
149 %2 = insertelement <2 x i8*> %0, i8* %1, i32 1
150 ret <2 x i8*> %2
151 }
152 ; CHECK-LABEL: define <4 x i8*> @insert_2xi8ptr_at_1(<4 x i8*>, i8*) {
153 ; CHECK: entry:
154 ; CHECK-NEXT: %2 = insertelement <4 x i8*> %0, i8* %1, i32 1
155 ; CHECK-NEXT: ret <4 x i8*> %2
156 ; CHECK-NEXT: }
157
158 define <2 x i8*> @insert_2xi8ptr_undef_idx(<2 x i8*>, i8*) {
159 entry:
160 %2 = insertelement <2 x i8*> %0, i8* %1, i32 2
161 ret <2 x i8*> %2
162 }
163 ; CHECK-LABEL: define <4 x i8*> @insert_2xi8ptr_undef_idx(<4 x i8*>, i8*) {
164 ; CHECK: entry:
165 ; CHECK-NEXT: ret <4 x i8*> %0
166 ; CHECK-NEXT: }
167
168 define <2 x float> @insert_2xfloat_at_0(<2 x float>, float) {
169 entry:
170 %2 = insertelement <2 x float> %0, float %1, i32 0
171 ret <2 x float> %2
172 }
173 ; CHECK-LABEL: define <4 x float> @insert_2xfloat_at_0(<4 x float>, float) {
174 ; CHECK: entry:
175 ; CHECK-NEXT: %2 = insertelement <4 x float> %0, float %1, i32 0
176 ; CHECK-NEXT: ret <4 x float> %2
177 ; CHECK-NEXT: }
178
179 define <2 x float> @insert_2xfloat_at_1(<2 x float>, float) {
180 entry:
181 %2 = insertelement <2 x float> %0, float %1, i32 1
182 ret <2 x float> %2
183 }
184 ; CHECK-LABEL: define <4 x float> @insert_2xfloat_at_1(<4 x float>, float) {
185 ; CHECK: entry:
186 ; CHECK-NEXT: %2 = insertelement <4 x float> %0, float %1, i32 1
187 ; CHECK-NEXT: ret <4 x float> %2
188 ; CHECK-NEXT: }
189
190 define <2 x float> @insert_2xfloat_undef_idx(<2 x float>, float) {
191 entry:
192 %2 = insertelement <2 x float> %0, float %1, i32 2
193 ret <2 x float> %2
194 }
195 ; CHECK-LABEL: define <4 x float> @insert_2xfloat_undef_idx(<4 x float>, float) {
196 ; CHECK: entry:
197 ; CHECK-NEXT: ret <4 x float> %0
198 ; CHECK-NEXT: }
199
200 define <2 x double> @insert_2xdouble_at_0(<2 x double>, double) {
201 entry:
202 %2 = insertelement <2 x double> %0, double %1, i32 0
203 ret <2 x double> %2
204 }
205 ; CHECK-LABEL: define <2 x double> @insert_2xdouble_at_0(<2 x double>, double) {
206 ; CHECK: entry:
207 ; CHECK-NEXT: %2 = insertelement <2 x double> %0, double %1, i32 0
208 ; CHECK-NEXT: ret <2 x double> %2
209 ; CHECK-NEXT: }
210
211 define <2 x double> @insert_2xdouble_at_1(<2 x double>, double) {
212 entry:
213 %2 = insertelement <2 x double> %0, double %1, i32 1
214 ret <2 x double> %2
215 }
216 ; CHECK-LABEL: define <2 x double> @insert_2xdouble_at_1(<2 x double>, double) {
217 ; CHECK: entry:
218 ; CHECK-NEXT: %2 = insertelement <2 x double> %0, double %1, i32 1
219 ; CHECK-NEXT: ret <2 x double> %2
220 ; CHECK-NEXT: }
221
222 define <2 x double> @insert_2xdouble_undef_idx(<2 x double>, double) {
223 entry:
224 %2 = insertelement <2 x double> %0, double %1, i32 2
225 ret <2 x double> %2
226 }
227 ; CHECK-LABEL: define <2 x double> @insert_2xdouble_undef_idx(<2 x double>, doub le) {
228 ; CHECK: entry:
229 ; CHECK-NEXT: %2 = insertelement <2 x double> %0, double %1, i32 2
230 ; CHECK-NEXT: ret <2 x double> %2
231 ; CHECK-NEXT: }
232
233 define <4 x i8> @insert_4xi8_at_0(<4 x i8>, i8) {
234 entry:
235 %2 = insertelement <4 x i8> %0, i8 %1, i32 0
236 ret <4 x i8> %2
237 }
238 ; CHECK-LABEL: define <16 x i8> @insert_4xi8_at_0(<16 x i8>, i8) {
239 ; CHECK: entry:
240 ; CHECK-NEXT: %2 = insertelement <16 x i8> %0, i8 %1, i32 0
241 ; CHECK-NEXT: ret <16 x i8> %2
242 ; CHECK-NEXT: }
243
244 define <4 x i8> @insert_4xi8_at_1(<4 x i8>, i8) {
245 entry:
246 %2 = insertelement <4 x i8> %0, i8 %1, i32 1
247 ret <4 x i8> %2
248 }
249 ; CHECK-LABEL: define <16 x i8> @insert_4xi8_at_1(<16 x i8>, i8) {
250 ; CHECK: entry:
251 ; CHECK-NEXT: %2 = insertelement <16 x i8> %0, i8 %1, i32 1
252 ; CHECK-NEXT: ret <16 x i8> %2
253 ; CHECK-NEXT: }
254
255 define <4 x i8> @insert_4xi8_at_2(<4 x i8>, i8) {
256 entry:
257 %2 = insertelement <4 x i8> %0, i8 %1, i32 2
258 ret <4 x i8> %2
259 }
260 ; CHECK-LABEL: define <16 x i8> @insert_4xi8_at_2(<16 x i8>, i8) {
261 ; CHECK: entry:
262 ; CHECK-NEXT: %2 = insertelement <16 x i8> %0, i8 %1, i32 2
263 ; CHECK-NEXT: ret <16 x i8> %2
264 ; CHECK-NEXT: }
265
266 define <4 x i8> @insert_4xi8_at_3(<4 x i8>, i8) {
267 entry:
268 %2 = insertelement <4 x i8> %0, i8 %1, i32 3
269 ret <4 x i8> %2
270 }
271 ; CHECK-LABEL: define <16 x i8> @insert_4xi8_at_3(<16 x i8>, i8) {
272 ; CHECK: entry:
273 ; CHECK-NEXT: %2 = insertelement <16 x i8> %0, i8 %1, i32 3
274 ; CHECK-NEXT: ret <16 x i8> %2
275 ; CHECK-NEXT: }
276
277 define <4 x i8> @insert_4xi8_undef_idx(<4 x i8>, i8) {
278 entry:
279 %2 = insertelement <4 x i8> %0, i8 %1, i32 4
280 ret <4 x i8> %2
281 }
282 ; CHECK-LABEL: define <16 x i8> @insert_4xi8_undef_idx(<16 x i8>, i8) {
283 ; CHECK: entry:
284 ; CHECK-NEXT: ret <16 x i8> %0
285 ; CHECK-NEXT: }
286
287 define <4 x i16> @insert_4xi16_at_0(<4 x i16>, i16) {
288 entry:
289 %2 = insertelement <4 x i16> %0, i16 %1, i32 0
290 ret <4 x i16> %2
291 }
292 ; CHECK-LABEL: define <8 x i16> @insert_4xi16_at_0(<8 x i16>, i16) {
293 ; CHECK: entry:
294 ; CHECK-NEXT: %2 = insertelement <8 x i16> %0, i16 %1, i32 0
295 ; CHECK-NEXT: ret <8 x i16> %2
296 ; CHECK-NEXT: }
297
298 define <4 x i16> @insert_4xi16_at_1(<4 x i16>, i16) {
299 entry:
300 %2 = insertelement <4 x i16> %0, i16 %1, i32 1
301 ret <4 x i16> %2
302 }
303 ; CHECK-LABEL: define <8 x i16> @insert_4xi16_at_1(<8 x i16>, i16) {
304 ; CHECK: entry:
305 ; CHECK-NEXT: %2 = insertelement <8 x i16> %0, i16 %1, i32 1
306 ; CHECK-NEXT: ret <8 x i16> %2
307 ; CHECK-NEXT: }
308
309 define <4 x i16> @insert_4xi16_at_2(<4 x i16>, i16) {
310 entry:
311 %2 = insertelement <4 x i16> %0, i16 %1, i32 2
312 ret <4 x i16> %2
313 }
314 ; CHECK-LABEL: define <8 x i16> @insert_4xi16_at_2(<8 x i16>, i16) {
315 ; CHECK: entry:
316 ; CHECK-NEXT: %2 = insertelement <8 x i16> %0, i16 %1, i32 2
317 ; CHECK-NEXT: ret <8 x i16> %2
318 ; CHECK-NEXT: }
319
320 define <4 x i16> @insert_4xi16_at_3(<4 x i16>, i16) {
321 entry:
322 %2 = insertelement <4 x i16> %0, i16 %1, i32 3
323 ret <4 x i16> %2
324 }
325 ; CHECK-LABEL: define <8 x i16> @insert_4xi16_at_3(<8 x i16>, i16) {
326 ; CHECK: entry:
327 ; CHECK-NEXT: %2 = insertelement <8 x i16> %0, i16 %1, i32 3
328 ; CHECK-NEXT: ret <8 x i16> %2
329 ; CHECK-NEXT: }
330
331 define <4 x i16> @insert_4xi16_undef_idx(<4 x i16>, i16) {
332 entry:
333 %2 = insertelement <4 x i16> %0, i16 %1, i32 4
334 ret <4 x i16> %2
335 }
336 ; CHECK-LABEL: define <8 x i16> @insert_4xi16_undef_idx(<8 x i16>, i16) {
337 ; CHECK: entry:
338 ; CHECK-NEXT: ret <8 x i16> %0
339 ; CHECK-NEXT: }
340
341 define <4 x i32> @insert_4xi32_at_0(<4 x i32>, i32) {
342 entry:
343 %2 = insertelement <4 x i32> %0, i32 %1, i32 0
344 ret <4 x i32> %2
345 }
346 ; CHECK-LABEL: define <4 x i32> @insert_4xi32_at_0(<4 x i32>, i32) {
347 ; CHECK: entry:
348 ; CHECK-NEXT: %2 = insertelement <4 x i32> %0, i32 %1, i32 0
349 ; CHECK-NEXT: ret <4 x i32> %2
350 ; CHECK-NEXT: }
351
352 define <4 x i32> @insert_4xi32_at_1(<4 x i32>, i32) {
353 entry:
354 %2 = insertelement <4 x i32> %0, i32 %1, i32 1
355 ret <4 x i32> %2
356 }
357 ; CHECK-LABEL: define <4 x i32> @insert_4xi32_at_1(<4 x i32>, i32) {
358 ; CHECK: entry:
359 ; CHECK-NEXT: %2 = insertelement <4 x i32> %0, i32 %1, i32 1
360 ; CHECK-NEXT: ret <4 x i32> %2
361 ; CHECK-NEXT: }
362
363 define <4 x i32> @insert_4xi32_at_2(<4 x i32>, i32) {
364 entry:
365 %2 = insertelement <4 x i32> %0, i32 %1, i32 2
366 ret <4 x i32> %2
367 }
368 ; CHECK-LABEL: define <4 x i32> @insert_4xi32_at_2(<4 x i32>, i32) {
369 ; CHECK: entry:
370 ; CHECK-NEXT: %2 = insertelement <4 x i32> %0, i32 %1, i32 2
371 ; CHECK-NEXT: ret <4 x i32> %2
372 ; CHECK-NEXT: }
373
374 define <4 x i32> @insert_4xi32_at_3(<4 x i32>, i32) {
375 entry:
376 %2 = insertelement <4 x i32> %0, i32 %1, i32 3
377 ret <4 x i32> %2
378 }
379 ; CHECK-LABEL: define <4 x i32> @insert_4xi32_at_3(<4 x i32>, i32) {
380 ; CHECK: entry:
381 ; CHECK-NEXT: %2 = insertelement <4 x i32> %0, i32 %1, i32 3
382 ; CHECK-NEXT: ret <4 x i32> %2
383 ; CHECK-NEXT: }
384
385 define <4 x i32> @insert_4xi32_undef_idx(<4 x i32>, i32) {
386 entry:
387 %2 = insertelement <4 x i32> %0, i32 %1, i32 4
388 ret <4 x i32> %2
389 }
390 ; CHECK-LABEL: define <4 x i32> @insert_4xi32_undef_idx(<4 x i32>, i32) {
391 ; CHECK: entry:
392 ; CHECK-NEXT: %2 = insertelement <4 x i32> %0, i32 %1, i32 4
393 ; CHECK-NEXT: ret <4 x i32> %2
394 ; CHECK-NEXT: }
395
396 define <4 x i64> @insert_4xi64_at_0(<4 x i64>, i64) {
397 entry:
398 %2 = insertelement <4 x i64> %0, i64 %1, i32 0
399 ret <4 x i64> %2
400 }
401 ; CHECK-LABEL: define <2 x i64> @insert_4xi64_at_0(<2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>, <2 x i64>, i64) {
402 ; CHECK: entry:
403 ; CHECK-NEXT: %4 = insertelement <2 x i64> %1, i64 %3, i32 0
404 ; CHECK-NEXT: store <2 x i64> %2, <2 x i64>* %0, align 16
405 ; CHECK-NEXT: ret <2 x i64> %4
406 ; CHECK-NEXT: }
407
408 define <4 x i64> @insert_4xi64_at_1(<4 x i64>, i64) {
409 entry:
410 %2 = insertelement <4 x i64> %0, i64 %1, i32 1
411 ret <4 x i64> %2
412 }
413 ; CHECK-LABEL: define <2 x i64> @insert_4xi64_at_1(<2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>, <2 x i64>, i64) {
414 ; CHECK: entry:
415 ; CHECK-NEXT: %4 = insertelement <2 x i64> %1, i64 %3, i32 1
416 ; CHECK-NEXT: store <2 x i64> %2, <2 x i64>* %0, align 16
417 ; CHECK-NEXT: ret <2 x i64> %4
418 ; CHECK-NEXT: }
419
420 define <4 x i64> @insert_4xi64_at_2(<4 x i64>, i64) {
421 entry:
422 %2 = insertelement <4 x i64> %0, i64 %1, i32 2
423 ret <4 x i64> %2
424 }
425 ; CHECK-LABEL: define <2 x i64> @insert_4xi64_at_2(<2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>, <2 x i64>, i64) {
426 ; CHECK: entry:
427 ; CHECK-NEXT: %4 = insertelement <2 x i64> %2, i64 %3, i32 0
428 ; CHECK-NEXT: store <2 x i64> %4, <2 x i64>* %0, align 16
429 ; CHECK-NEXT: ret <2 x i64> %1
430 ; CHECK-NEXT: }
431
432 define <4 x i64> @insert_4xi64_at_3(<4 x i64>, i64) {
433 entry:
434 %2 = insertelement <4 x i64> %0, i64 %1, i32 3
435 ret <4 x i64> %2
436 }
437 ; CHECK-LABEL: define <2 x i64> @insert_4xi64_at_3(<2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>, <2 x i64>, i64) {
438 ; CHECK: entry:
439 ; CHECK-NEXT: %4 = insertelement <2 x i64> %2, i64 %3, i32 1
440 ; CHECK-NEXT: store <2 x i64> %4, <2 x i64>* %0, align 16
441 ; CHECK-NEXT: ret <2 x i64> %1
442 ; CHECK-NEXT: }
443
444 define <4 x i64> @insert_4xi64_undef_idx(<4 x i64>, i64) {
445 entry:
446 %2 = insertelement <4 x i64> %0, i64 %1, i32 4
447 ret <4 x i64> %2
448 }
449 ; CHECK-LABEL: define <2 x i64> @insert_4xi64_undef_idx(<2 x i64>* nocapture non null dereferenceable(16), <2 x i64>, <2 x i64>, i64) {
450 ; CHECK: entry:
451 ; CHECK-NEXT: store <2 x i64> %2, <2 x i64>* %0, align 16
452 ; CHECK-NEXT: ret <2 x i64> %1
453 ; CHECK-NEXT: }
454
455 define <4 x i8*> @insert_4xi8ptr_at_0(<4 x i8*>, i8*) {
456 entry:
457 %2 = insertelement <4 x i8*> %0, i8* %1, i32 0
458 ret <4 x i8*> %2
459 }
460 ; CHECK-LABEL: define <4 x i8*> @insert_4xi8ptr_at_0(<4 x i8*>, i8*) {
461 ; CHECK: entry:
462 ; CHECK-NEXT: %2 = insertelement <4 x i8*> %0, i8* %1, i32 0
463 ; CHECK-NEXT: ret <4 x i8*> %2
464 ; CHECK-NEXT: }
465
466 define <4 x i8*> @insert_4xi8ptr_at_1(<4 x i8*>, i8*) {
467 entry:
468 %2 = insertelement <4 x i8*> %0, i8* %1, i32 1
469 ret <4 x i8*> %2
470 }
471 ; CHECK-LABEL: define <4 x i8*> @insert_4xi8ptr_at_1(<4 x i8*>, i8*) {
472 ; CHECK: entry:
473 ; CHECK-NEXT: %2 = insertelement <4 x i8*> %0, i8* %1, i32 1
474 ; CHECK-NEXT: ret <4 x i8*> %2
475 ; CHECK-NEXT: }
476
477 define <4 x i8*> @insert_4xi8ptr_at_2(<4 x i8*>, i8*) {
478 entry:
479 %2 = insertelement <4 x i8*> %0, i8* %1, i32 2
480 ret <4 x i8*> %2
481 }
482 ; CHECK-LABEL: define <4 x i8*> @insert_4xi8ptr_at_2(<4 x i8*>, i8*) {
483 ; CHECK: entry:
484 ; CHECK-NEXT: %2 = insertelement <4 x i8*> %0, i8* %1, i32 2
485 ; CHECK-NEXT: ret <4 x i8*> %2
486 ; CHECK-NEXT: }
487
488 define <4 x i8*> @insert_4xi8ptr_at_3(<4 x i8*>, i8*) {
489 entry:
490 %2 = insertelement <4 x i8*> %0, i8* %1, i32 3
491 ret <4 x i8*> %2
492 }
493 ; CHECK-LABEL: define <4 x i8*> @insert_4xi8ptr_at_3(<4 x i8*>, i8*) {
494 ; CHECK: entry:
495 ; CHECK-NEXT: %2 = insertelement <4 x i8*> %0, i8* %1, i32 3
496 ; CHECK-NEXT: ret <4 x i8*> %2
497 ; CHECK-NEXT: }
498
499 define <4 x i8*> @insert_4xi8ptr_undef_idx(<4 x i8*>, i8*) {
500 entry:
501 %2 = insertelement <4 x i8*> %0, i8* %1, i32 4
502 ret <4 x i8*> %2
503 }
504 ; CHECK-LABEL: define <4 x i8*> @insert_4xi8ptr_undef_idx(<4 x i8*>, i8*) {
505 ; CHECK: entry:
506 ; CHECK-NEXT: %2 = insertelement <4 x i8*> %0, i8* %1, i32 4
507 ; CHECK-NEXT: ret <4 x i8*> %2
508 ; CHECK-NEXT: }
509
510 define <4 x float> @insert_4xfloat_at_0(<4 x float>, float) {
511 entry:
512 %2 = insertelement <4 x float> %0, float %1, i32 0
513 ret <4 x float> %2
514 }
515 ; CHECK-LABEL: define <4 x float> @insert_4xfloat_at_0(<4 x float>, float) {
516 ; CHECK: entry:
517 ; CHECK-NEXT: %2 = insertelement <4 x float> %0, float %1, i32 0
518 ; CHECK-NEXT: ret <4 x float> %2
519 ; CHECK-NEXT: }
520
521 define <4 x float> @insert_4xfloat_at_1(<4 x float>, float) {
522 entry:
523 %2 = insertelement <4 x float> %0, float %1, i32 1
524 ret <4 x float> %2
525 }
526 ; CHECK-LABEL: define <4 x float> @insert_4xfloat_at_1(<4 x float>, float) {
527 ; CHECK: entry:
528 ; CHECK-NEXT: %2 = insertelement <4 x float> %0, float %1, i32 1
529 ; CHECK-NEXT: ret <4 x float> %2
530 ; CHECK-NEXT: }
531
532 define <4 x float> @insert_4xfloat_at_2(<4 x float>, float) {
533 entry:
534 %2 = insertelement <4 x float> %0, float %1, i32 2
535 ret <4 x float> %2
536 }
537 ; CHECK-LABEL: define <4 x float> @insert_4xfloat_at_2(<4 x float>, float) {
538 ; CHECK: entry:
539 ; CHECK-NEXT: %2 = insertelement <4 x float> %0, float %1, i32 2
540 ; CHECK-NEXT: ret <4 x float> %2
541 ; CHECK-NEXT: }
542
543 define <4 x float> @insert_4xfloat_at_3(<4 x float>, float) {
544 entry:
545 %2 = insertelement <4 x float> %0, float %1, i32 3
546 ret <4 x float> %2
547 }
548 ; CHECK-LABEL: define <4 x float> @insert_4xfloat_at_3(<4 x float>, float) {
549 ; CHECK: entry:
550 ; CHECK-NEXT: %2 = insertelement <4 x float> %0, float %1, i32 3
551 ; CHECK-NEXT: ret <4 x float> %2
552 ; CHECK-NEXT: }
553
554 define <4 x float> @insert_4xfloat_undef_idx(<4 x float>, float) {
555 entry:
556 %2 = insertelement <4 x float> %0, float %1, i32 4
557 ret <4 x float> %2
558 }
559 ; CHECK-LABEL: define <4 x float> @insert_4xfloat_undef_idx(<4 x float>, float) {
560 ; CHECK: entry:
561 ; CHECK-NEXT: %2 = insertelement <4 x float> %0, float %1, i32 4
562 ; CHECK-NEXT: ret <4 x float> %2
563 ; CHECK-NEXT: }
564
565 define <4 x double> @insert_4xdouble_at_0(<4 x double>, double) {
566 entry:
567 %2 = insertelement <4 x double> %0, double %1, i32 0
568 ret <4 x double> %2
569 }
570 ; CHECK-LABEL: define <2 x double> @insert_4xdouble_at_0(<2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x double>, double) {
571 ; CHECK: entry:
572 ; CHECK-NEXT: %4 = insertelement <2 x double> %1, double %3, i32 0
573 ; CHECK-NEXT: store <2 x double> %2, <2 x double>* %0, align 16
574 ; CHECK-NEXT: ret <2 x double> %4
575 ; CHECK-NEXT: }
576
577 define <4 x double> @insert_4xdouble_at_1(<4 x double>, double) {
578 entry:
579 %2 = insertelement <4 x double> %0, double %1, i32 1
580 ret <4 x double> %2
581 }
582 ; CHECK-LABEL: define <2 x double> @insert_4xdouble_at_1(<2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x double>, double) {
583 ; CHECK: entry:
584 ; CHECK-NEXT: %4 = insertelement <2 x double> %1, double %3, i32 1
585 ; CHECK-NEXT: store <2 x double> %2, <2 x double>* %0, align 16
586 ; CHECK-NEXT: ret <2 x double> %4
587 ; CHECK-NEXT: }
588
589 define <4 x double> @insert_4xdouble_at_2(<4 x double>, double) {
590 entry:
591 %2 = insertelement <4 x double> %0, double %1, i32 2
592 ret <4 x double> %2
593 }
594 ; CHECK-LABEL: define <2 x double> @insert_4xdouble_at_2(<2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x double>, double) {
595 ; CHECK: entry:
596 ; CHECK-NEXT: %4 = insertelement <2 x double> %2, double %3, i32 0
597 ; CHECK-NEXT: store <2 x double> %4, <2 x double>* %0, align 16
598 ; CHECK-NEXT: ret <2 x double> %1
599 ; CHECK-NEXT: }
600
601 define <4 x double> @insert_4xdouble_at_3(<4 x double>, double) {
602 entry:
603 %2 = insertelement <4 x double> %0, double %1, i32 3
604 ret <4 x double> %2
605 }
606 ; CHECK-LABEL: define <2 x double> @insert_4xdouble_at_3(<2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x double>, double) {
607 ; CHECK: entry:
608 ; CHECK-NEXT: %4 = insertelement <2 x double> %2, double %3, i32 1
609 ; CHECK-NEXT: store <2 x double> %4, <2 x double>* %0, align 16
610 ; CHECK-NEXT: ret <2 x double> %1
611 ; CHECK-NEXT: }
612
613 define <4 x double> @insert_4xdouble_undef_idx(<4 x double>, double) {
614 entry:
615 %2 = insertelement <4 x double> %0, double %1, i32 4
616 ret <4 x double> %2
617 }
618 ; CHECK-LABEL: define <2 x double> @insert_4xdouble_undef_idx(<2 x double>* noca pture nonnull dereferenceable(16), <2 x double>, <2 x double>, double) {
619 ; CHECK: entry:
620 ; CHECK-NEXT: store <2 x double> %2, <2 x double>* %0, align 16
621 ; CHECK-NEXT: ret <2 x double> %1
622 ; CHECK-NEXT: }
623
624 define <6 x i8> @insert_6xi8_at_0(<6 x i8>, i8) {
625 entry:
626 %2 = insertelement <6 x i8> %0, i8 %1, i32 0
627 ret <6 x i8> %2
628 }
629 ; CHECK-LABEL: define <16 x i8> @insert_6xi8_at_0(<16 x i8>, i8) {
630 ; CHECK: entry:
631 ; CHECK-NEXT: %2 = insertelement <16 x i8> %0, i8 %1, i32 0
632 ; CHECK-NEXT: ret <16 x i8> %2
633 ; CHECK-NEXT: }
634
635 define <6 x i8> @insert_6xi8_at_1(<6 x i8>, i8) {
636 entry:
637 %2 = insertelement <6 x i8> %0, i8 %1, i32 1
638 ret <6 x i8> %2
639 }
640 ; CHECK-LABEL: define <16 x i8> @insert_6xi8_at_1(<16 x i8>, i8) {
641 ; CHECK: entry:
642 ; CHECK-NEXT: %2 = insertelement <16 x i8> %0, i8 %1, i32 1
643 ; CHECK-NEXT: ret <16 x i8> %2
644 ; CHECK-NEXT: }
645
646 define <6 x i8> @insert_6xi8_at_2(<6 x i8>, i8) {
647 entry:
648 %2 = insertelement <6 x i8> %0, i8 %1, i32 2
649 ret <6 x i8> %2
650 }
651 ; CHECK-LABEL: define <16 x i8> @insert_6xi8_at_2(<16 x i8>, i8) {
652 ; CHECK: entry:
653 ; CHECK-NEXT: %2 = insertelement <16 x i8> %0, i8 %1, i32 2
654 ; CHECK-NEXT: ret <16 x i8> %2
655 ; CHECK-NEXT: }
656
657 define <6 x i8> @insert_6xi8_at_3(<6 x i8>, i8) {
658 entry:
659 %2 = insertelement <6 x i8> %0, i8 %1, i32 3
660 ret <6 x i8> %2
661 }
662 ; CHECK-LABEL: define <16 x i8> @insert_6xi8_at_3(<16 x i8>, i8) {
663 ; CHECK: entry:
664 ; CHECK-NEXT: %2 = insertelement <16 x i8> %0, i8 %1, i32 3
665 ; CHECK-NEXT: ret <16 x i8> %2
666 ; CHECK-NEXT: }
667
668 define <6 x i8> @insert_6xi8_at_4(<6 x i8>, i8) {
669 entry:
670 %2 = insertelement <6 x i8> %0, i8 %1, i32 4
671 ret <6 x i8> %2
672 }
673 ; CHECK-LABEL: define <16 x i8> @insert_6xi8_at_4(<16 x i8>, i8) {
674 ; CHECK: entry:
675 ; CHECK-NEXT: %2 = insertelement <16 x i8> %0, i8 %1, i32 4
676 ; CHECK-NEXT: ret <16 x i8> %2
677 ; CHECK-NEXT: }
678
679 define <6 x i8> @insert_6xi8_at_5(<6 x i8>, i8) {
680 entry:
681 %2 = insertelement <6 x i8> %0, i8 %1, i32 5
682 ret <6 x i8> %2
683 }
684 ; CHECK-LABEL: define <16 x i8> @insert_6xi8_at_5(<16 x i8>, i8) {
685 ; CHECK: entry:
686 ; CHECK-NEXT: %2 = insertelement <16 x i8> %0, i8 %1, i32 5
687 ; CHECK-NEXT: ret <16 x i8> %2
688 ; CHECK-NEXT: }
689
690 define <6 x i8> @insert_6xi8_undef_idx(<6 x i8>, i8) {
691 entry:
692 %2 = insertelement <6 x i8> %0, i8 %1, i32 6
693 ret <6 x i8> %2
694 }
695 ; CHECK-LABEL: define <16 x i8> @insert_6xi8_undef_idx(<16 x i8>, i8) {
696 ; CHECK: entry:
697 ; CHECK-NEXT: ret <16 x i8> %0
698 ; CHECK-NEXT: }
699
700 define <6 x i16> @insert_6xi16_at_0(<6 x i16>, i16) {
701 entry:
702 %2 = insertelement <6 x i16> %0, i16 %1, i32 0
703 ret <6 x i16> %2
704 }
705 ; CHECK-LABEL: define <8 x i16> @insert_6xi16_at_0(<8 x i16>, i16) {
706 ; CHECK: entry:
707 ; CHECK-NEXT: %2 = insertelement <8 x i16> %0, i16 %1, i32 0
708 ; CHECK-NEXT: ret <8 x i16> %2
709 ; CHECK-NEXT: }
710
711 define <6 x i16> @insert_6xi16_at_1(<6 x i16>, i16) {
712 entry:
713 %2 = insertelement <6 x i16> %0, i16 %1, i32 1
714 ret <6 x i16> %2
715 }
716 ; CHECK-LABEL: define <8 x i16> @insert_6xi16_at_1(<8 x i16>, i16) {
717 ; CHECK: entry:
718 ; CHECK-NEXT: %2 = insertelement <8 x i16> %0, i16 %1, i32 1
719 ; CHECK-NEXT: ret <8 x i16> %2
720 ; CHECK-NEXT: }
721
722 define <6 x i16> @insert_6xi16_at_2(<6 x i16>, i16) {
723 entry:
724 %2 = insertelement <6 x i16> %0, i16 %1, i32 2
725 ret <6 x i16> %2
726 }
727 ; CHECK-LABEL: define <8 x i16> @insert_6xi16_at_2(<8 x i16>, i16) {
728 ; CHECK: entry:
729 ; CHECK-NEXT: %2 = insertelement <8 x i16> %0, i16 %1, i32 2
730 ; CHECK-NEXT: ret <8 x i16> %2
731 ; CHECK-NEXT: }
732
733 define <6 x i16> @insert_6xi16_at_3(<6 x i16>, i16) {
734 entry:
735 %2 = insertelement <6 x i16> %0, i16 %1, i32 3
736 ret <6 x i16> %2
737 }
738 ; CHECK-LABEL: define <8 x i16> @insert_6xi16_at_3(<8 x i16>, i16) {
739 ; CHECK: entry:
740 ; CHECK-NEXT: %2 = insertelement <8 x i16> %0, i16 %1, i32 3
741 ; CHECK-NEXT: ret <8 x i16> %2
742 ; CHECK-NEXT: }
743
744 define <6 x i16> @insert_6xi16_at_4(<6 x i16>, i16) {
745 entry:
746 %2 = insertelement <6 x i16> %0, i16 %1, i32 4
747 ret <6 x i16> %2
748 }
749 ; CHECK-LABEL: define <8 x i16> @insert_6xi16_at_4(<8 x i16>, i16) {
750 ; CHECK: entry:
751 ; CHECK-NEXT: %2 = insertelement <8 x i16> %0, i16 %1, i32 4
752 ; CHECK-NEXT: ret <8 x i16> %2
753 ; CHECK-NEXT: }
754
755 define <6 x i16> @insert_6xi16_at_5(<6 x i16>, i16) {
756 entry:
757 %2 = insertelement <6 x i16> %0, i16 %1, i32 5
758 ret <6 x i16> %2
759 }
760 ; CHECK-LABEL: define <8 x i16> @insert_6xi16_at_5(<8 x i16>, i16) {
761 ; CHECK: entry:
762 ; CHECK-NEXT: %2 = insertelement <8 x i16> %0, i16 %1, i32 5
763 ; CHECK-NEXT: ret <8 x i16> %2
764 ; CHECK-NEXT: }
765
766 define <6 x i16> @insert_6xi16_undef_idx(<6 x i16>, i16) {
767 entry:
768 %2 = insertelement <6 x i16> %0, i16 %1, i32 6
769 ret <6 x i16> %2
770 }
771 ; CHECK-LABEL: define <8 x i16> @insert_6xi16_undef_idx(<8 x i16>, i16) {
772 ; CHECK: entry:
773 ; CHECK-NEXT: ret <8 x i16> %0
774 ; CHECK-NEXT: }
775
776 define <6 x i32> @insert_6xi32_at_0(<6 x i32>, i32) {
777 entry:
778 %2 = insertelement <6 x i32> %0, i32 %1, i32 0
779 ret <6 x i32> %2
780 }
781 ; CHECK-LABEL: define <4 x i32> @insert_6xi32_at_0(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, i32) {
782 ; CHECK: entry:
783 ; CHECK-NEXT: %4 = insertelement <4 x i32> %1, i32 %3, i32 0
784 ; CHECK-NEXT: store <4 x i32> %2, <4 x i32>* %0, align 16
785 ; CHECK-NEXT: ret <4 x i32> %4
786 ; CHECK-NEXT: }
787
788 define <6 x i32> @insert_6xi32_at_1(<6 x i32>, i32) {
789 entry:
790 %2 = insertelement <6 x i32> %0, i32 %1, i32 1
791 ret <6 x i32> %2
792 }
793 ; CHECK-LABEL: define <4 x i32> @insert_6xi32_at_1(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, i32) {
794 ; CHECK: entry:
795 ; CHECK-NEXT: %4 = insertelement <4 x i32> %1, i32 %3, i32 1
796 ; CHECK-NEXT: store <4 x i32> %2, <4 x i32>* %0, align 16
797 ; CHECK-NEXT: ret <4 x i32> %4
798 ; CHECK-NEXT: }
799
800 define <6 x i32> @insert_6xi32_at_2(<6 x i32>, i32) {
801 entry:
802 %2 = insertelement <6 x i32> %0, i32 %1, i32 2
803 ret <6 x i32> %2
804 }
805 ; CHECK-LABEL: define <4 x i32> @insert_6xi32_at_2(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, i32) {
806 ; CHECK: entry:
807 ; CHECK-NEXT: %4 = insertelement <4 x i32> %1, i32 %3, i32 2
808 ; CHECK-NEXT: store <4 x i32> %2, <4 x i32>* %0, align 16
809 ; CHECK-NEXT: ret <4 x i32> %4
810 ; CHECK-NEXT: }
811
812 define <6 x i32> @insert_6xi32_at_3(<6 x i32>, i32) {
813 entry:
814 %2 = insertelement <6 x i32> %0, i32 %1, i32 3
815 ret <6 x i32> %2
816 }
817 ; CHECK-LABEL: define <4 x i32> @insert_6xi32_at_3(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, i32) {
818 ; CHECK: entry:
819 ; CHECK-NEXT: %4 = insertelement <4 x i32> %1, i32 %3, i32 3
820 ; CHECK-NEXT: store <4 x i32> %2, <4 x i32>* %0, align 16
821 ; CHECK-NEXT: ret <4 x i32> %4
822 ; CHECK-NEXT: }
823
824 define <6 x i32> @insert_6xi32_at_4(<6 x i32>, i32) {
825 entry:
826 %2 = insertelement <6 x i32> %0, i32 %1, i32 4
827 ret <6 x i32> %2
828 }
829 ; CHECK-LABEL: define <4 x i32> @insert_6xi32_at_4(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, i32) {
830 ; CHECK: entry:
831 ; CHECK-NEXT: %4 = insertelement <4 x i32> %2, i32 %3, i32 0
832 ; CHECK-NEXT: store <4 x i32> %4, <4 x i32>* %0, align 16
833 ; CHECK-NEXT: ret <4 x i32> %1
834 ; CHECK-NEXT: }
835
836 define <6 x i32> @insert_6xi32_at_5(<6 x i32>, i32) {
837 entry:
838 %2 = insertelement <6 x i32> %0, i32 %1, i32 5
839 ret <6 x i32> %2
840 }
841 ; CHECK-LABEL: define <4 x i32> @insert_6xi32_at_5(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, i32) {
842 ; CHECK: entry:
843 ; CHECK-NEXT: %4 = insertelement <4 x i32> %2, i32 %3, i32 1
844 ; CHECK-NEXT: store <4 x i32> %4, <4 x i32>* %0, align 16
845 ; CHECK-NEXT: ret <4 x i32> %1
846 ; CHECK-NEXT: }
847
848 define <6 x i32> @insert_6xi32_undef_idx(<6 x i32>, i32) {
849 entry:
850 %2 = insertelement <6 x i32> %0, i32 %1, i32 6
851 ret <6 x i32> %2
852 }
853 ; CHECK-LABEL: define <4 x i32> @insert_6xi32_undef_idx(<4 x i32>* nocapture non null dereferenceable(16), <4 x i32>, <4 x i32>, i32) {
854 ; CHECK: entry:
855 ; CHECK-NEXT: store <4 x i32> %2, <4 x i32>* %0, align 16
856 ; CHECK-NEXT: ret <4 x i32> %1
857 ; CHECK-NEXT: }
858
859 define <6 x i64> @insert_6xi64_at_0(<6 x i64>, i64) {
860 entry:
861 %2 = insertelement <6 x i64> %0, i64 %1, i32 0
862 ret <6 x i64> %2
863 }
864 ; CHECK-LABEL: define <2 x i64> @insert_6xi64_at_0(<2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64> , <2 x i64>, <2 x i64>, i64) {
865 ; CHECK: entry:
866 ; CHECK-NEXT: %6 = insertelement <2 x i64> %2, i64 %5, i32 0
867 ; CHECK-NEXT: store <2 x i64> %3, <2 x i64>* %0, align 16
868 ; CHECK-NEXT: store <2 x i64> %4, <2 x i64>* %1, align 16
869 ; CHECK-NEXT: ret <2 x i64> %6
870 ; CHECK-NEXT: }
871
872 define <6 x i64> @insert_6xi64_at_1(<6 x i64>, i64) {
873 entry:
874 %2 = insertelement <6 x i64> %0, i64 %1, i32 1
875 ret <6 x i64> %2
876 }
877 ; CHECK-LABEL: define <2 x i64> @insert_6xi64_at_1(<2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64> , <2 x i64>, <2 x i64>, i64) {
878 ; CHECK: entry:
879 ; CHECK-NEXT: %6 = insertelement <2 x i64> %2, i64 %5, i32 1
880 ; CHECK-NEXT: store <2 x i64> %3, <2 x i64>* %0, align 16
881 ; CHECK-NEXT: store <2 x i64> %4, <2 x i64>* %1, align 16
882 ; CHECK-NEXT: ret <2 x i64> %6
883 ; CHECK-NEXT: }
884
885 define <6 x i64> @insert_6xi64_at_2(<6 x i64>, i64) {
886 entry:
887 %2 = insertelement <6 x i64> %0, i64 %1, i32 2
888 ret <6 x i64> %2
889 }
890 ; CHECK-LABEL: define <2 x i64> @insert_6xi64_at_2(<2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64> , <2 x i64>, <2 x i64>, i64) {
891 ; CHECK: entry:
892 ; CHECK-NEXT: %6 = insertelement <2 x i64> %3, i64 %5, i32 0
893 ; CHECK-NEXT: store <2 x i64> %6, <2 x i64>* %0, align 16
894 ; CHECK-NEXT: store <2 x i64> %4, <2 x i64>* %1, align 16
895 ; CHECK-NEXT: ret <2 x i64> %2
896 ; CHECK-NEXT: }
897
898 define <6 x i64> @insert_6xi64_at_3(<6 x i64>, i64) {
899 entry:
900 %2 = insertelement <6 x i64> %0, i64 %1, i32 3
901 ret <6 x i64> %2
902 }
903 ; CHECK-LABEL: define <2 x i64> @insert_6xi64_at_3(<2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64> , <2 x i64>, <2 x i64>, i64) {
904 ; CHECK: entry:
905 ; CHECK-NEXT: %6 = insertelement <2 x i64> %3, i64 %5, i32 1
906 ; CHECK-NEXT: store <2 x i64> %6, <2 x i64>* %0, align 16
907 ; CHECK-NEXT: store <2 x i64> %4, <2 x i64>* %1, align 16
908 ; CHECK-NEXT: ret <2 x i64> %2
909 ; CHECK-NEXT: }
910
911 define <6 x i64> @insert_6xi64_at_4(<6 x i64>, i64) {
912 entry:
913 %2 = insertelement <6 x i64> %0, i64 %1, i32 4
914 ret <6 x i64> %2
915 }
916 ; CHECK-LABEL: define <2 x i64> @insert_6xi64_at_4(<2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64> , <2 x i64>, <2 x i64>, i64) {
917 ; CHECK: entry:
918 ; CHECK-NEXT: %6 = insertelement <2 x i64> %4, i64 %5, i32 0
919 ; CHECK-NEXT: store <2 x i64> %3, <2 x i64>* %0, align 16
920 ; CHECK-NEXT: store <2 x i64> %6, <2 x i64>* %1, align 16
921 ; CHECK-NEXT: ret <2 x i64> %2
922 ; CHECK-NEXT: }
923
924 define <6 x i64> @insert_6xi64_at_5(<6 x i64>, i64) {
925 entry:
926 %2 = insertelement <6 x i64> %0, i64 %1, i32 5
927 ret <6 x i64> %2
928 }
929 ; CHECK-LABEL: define <2 x i64> @insert_6xi64_at_5(<2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64> , <2 x i64>, <2 x i64>, i64) {
930 ; CHECK: entry:
931 ; CHECK-NEXT: %6 = insertelement <2 x i64> %4, i64 %5, i32 1
932 ; CHECK-NEXT: store <2 x i64> %3, <2 x i64>* %0, align 16
933 ; CHECK-NEXT: store <2 x i64> %6, <2 x i64>* %1, align 16
934 ; CHECK-NEXT: ret <2 x i64> %2
935 ; CHECK-NEXT: }
936
937 define <6 x i64> @insert_6xi64_undef_idx(<6 x i64>, i64) {
938 entry:
939 %2 = insertelement <6 x i64> %0, i64 %1, i32 6
940 ret <6 x i64> %2
941 }
942 ; CHECK-LABEL: define <2 x i64> @insert_6xi64_undef_idx(<2 x i64>* nocapture non null dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>, <2 x i64>, <2 x i64>, i64) {
943 ; CHECK: entry:
944 ; CHECK-NEXT: store <2 x i64> %3, <2 x i64>* %0, align 16
945 ; CHECK-NEXT: store <2 x i64> %4, <2 x i64>* %1, align 16
946 ; CHECK-NEXT: ret <2 x i64> %2
947 ; CHECK-NEXT: }
948
949 define <6 x i8*> @insert_6xi8ptr_at_0(<6 x i8*>, i8*) {
950 entry:
951 %2 = insertelement <6 x i8*> %0, i8* %1, i32 0
952 ret <6 x i8*> %2
953 }
954 ; CHECK-LABEL: define <4 x i8*> @insert_6xi8ptr_at_0(<4 x i8*>* nocapture nonnul l dereferenceable(16), <4 x i8*>, <4 x i8*>, i8*) {
955 ; CHECK: entry:
956 ; CHECK-NEXT: %4 = insertelement <4 x i8*> %1, i8* %3, i32 0
957 ; CHECK-NEXT: store <4 x i8*> %2, <4 x i8*>* %0, align 16
958 ; CHECK-NEXT: ret <4 x i8*> %4
959 ; CHECK-NEXT: }
960
961 define <6 x i8*> @insert_6xi8ptr_at_1(<6 x i8*>, i8*) {
962 entry:
963 %2 = insertelement <6 x i8*> %0, i8* %1, i32 1
964 ret <6 x i8*> %2
965 }
966 ; CHECK-LABEL: define <4 x i8*> @insert_6xi8ptr_at_1(<4 x i8*>* nocapture nonnul l dereferenceable(16), <4 x i8*>, <4 x i8*>, i8*) {
967 ; CHECK: entry:
968 ; CHECK-NEXT: %4 = insertelement <4 x i8*> %1, i8* %3, i32 1
969 ; CHECK-NEXT: store <4 x i8*> %2, <4 x i8*>* %0, align 16
970 ; CHECK-NEXT: ret <4 x i8*> %4
971 ; CHECK-NEXT: }
972
973 define <6 x i8*> @insert_6xi8ptr_at_2(<6 x i8*>, i8*) {
974 entry:
975 %2 = insertelement <6 x i8*> %0, i8* %1, i32 2
976 ret <6 x i8*> %2
977 }
978 ; CHECK-LABEL: define <4 x i8*> @insert_6xi8ptr_at_2(<4 x i8*>* nocapture nonnul l dereferenceable(16), <4 x i8*>, <4 x i8*>, i8*) {
979 ; CHECK: entry:
980 ; CHECK-NEXT: %4 = insertelement <4 x i8*> %1, i8* %3, i32 2
981 ; CHECK-NEXT: store <4 x i8*> %2, <4 x i8*>* %0, align 16
982 ; CHECK-NEXT: ret <4 x i8*> %4
983 ; CHECK-NEXT: }
984
985 define <6 x i8*> @insert_6xi8ptr_at_3(<6 x i8*>, i8*) {
986 entry:
987 %2 = insertelement <6 x i8*> %0, i8* %1, i32 3
988 ret <6 x i8*> %2
989 }
990 ; CHECK-LABEL: define <4 x i8*> @insert_6xi8ptr_at_3(<4 x i8*>* nocapture nonnul l dereferenceable(16), <4 x i8*>, <4 x i8*>, i8*) {
991 ; CHECK: entry:
992 ; CHECK-NEXT: %4 = insertelement <4 x i8*> %1, i8* %3, i32 3
993 ; CHECK-NEXT: store <4 x i8*> %2, <4 x i8*>* %0, align 16
994 ; CHECK-NEXT: ret <4 x i8*> %4
995 ; CHECK-NEXT: }
996
997 define <6 x i8*> @insert_6xi8ptr_at_4(<6 x i8*>, i8*) {
998 entry:
999 %2 = insertelement <6 x i8*> %0, i8* %1, i32 4
1000 ret <6 x i8*> %2
1001 }
1002 ; CHECK-LABEL: define <4 x i8*> @insert_6xi8ptr_at_4(<4 x i8*>* nocapture nonnul l dereferenceable(16), <4 x i8*>, <4 x i8*>, i8*) {
1003 ; CHECK: entry:
1004 ; CHECK-NEXT: %4 = insertelement <4 x i8*> %2, i8* %3, i32 0
1005 ; CHECK-NEXT: store <4 x i8*> %4, <4 x i8*>* %0, align 16
1006 ; CHECK-NEXT: ret <4 x i8*> %1
1007 ; CHECK-NEXT: }
1008
1009 define <6 x i8*> @insert_6xi8ptr_at_5(<6 x i8*>, i8*) {
1010 entry:
1011 %2 = insertelement <6 x i8*> %0, i8* %1, i32 5
1012 ret <6 x i8*> %2
1013 }
1014 ; CHECK-LABEL: define <4 x i8*> @insert_6xi8ptr_at_5(<4 x i8*>* nocapture nonnul l dereferenceable(16), <4 x i8*>, <4 x i8*>, i8*) {
1015 ; CHECK: entry:
1016 ; CHECK-NEXT: %4 = insertelement <4 x i8*> %2, i8* %3, i32 1
1017 ; CHECK-NEXT: store <4 x i8*> %4, <4 x i8*>* %0, align 16
1018 ; CHECK-NEXT: ret <4 x i8*> %1
1019 ; CHECK-NEXT: }
1020
1021 define <6 x i8*> @insert_6xi8ptr_undef_idx(<6 x i8*>, i8*) {
1022 entry:
1023 %2 = insertelement <6 x i8*> %0, i8* %1, i32 6
1024 ret <6 x i8*> %2
1025 }
1026 ; CHECK-LABEL: define <4 x i8*> @insert_6xi8ptr_undef_idx(<4 x i8*>* nocapture n onnull dereferenceable(16), <4 x i8*>, <4 x i8*>, i8*) {
1027 ; CHECK: entry:
1028 ; CHECK-NEXT: store <4 x i8*> %2, <4 x i8*>* %0, align 16
1029 ; CHECK-NEXT: ret <4 x i8*> %1
1030 ; CHECK-NEXT: }
1031
1032 define <6 x float> @insert_6xfloat_at_0(<6 x float>, float) {
1033 entry:
1034 %2 = insertelement <6 x float> %0, float %1, i32 0
1035 ret <6 x float> %2
1036 }
1037 ; CHECK-LABEL: define <4 x float> @insert_6xfloat_at_0(<4 x float>* nocapture no nnull dereferenceable(16), <4 x float>, <4 x float>, float) {
1038 ; CHECK: entry:
1039 ; CHECK-NEXT: %4 = insertelement <4 x float> %1, float %3, i32 0
1040 ; CHECK-NEXT: store <4 x float> %2, <4 x float>* %0, align 16
1041 ; CHECK-NEXT: ret <4 x float> %4
1042 ; CHECK-NEXT: }
1043
1044 define <6 x float> @insert_6xfloat_at_1(<6 x float>, float) {
1045 entry:
1046 %2 = insertelement <6 x float> %0, float %1, i32 1
1047 ret <6 x float> %2
1048 }
1049 ; CHECK-LABEL: define <4 x float> @insert_6xfloat_at_1(<4 x float>* nocapture no nnull dereferenceable(16), <4 x float>, <4 x float>, float) {
1050 ; CHECK: entry:
1051 ; CHECK-NEXT: %4 = insertelement <4 x float> %1, float %3, i32 1
1052 ; CHECK-NEXT: store <4 x float> %2, <4 x float>* %0, align 16
1053 ; CHECK-NEXT: ret <4 x float> %4
1054 ; CHECK-NEXT: }
1055
1056 define <6 x float> @insert_6xfloat_at_2(<6 x float>, float) {
1057 entry:
1058 %2 = insertelement <6 x float> %0, float %1, i32 2
1059 ret <6 x float> %2
1060 }
1061 ; CHECK-LABEL: define <4 x float> @insert_6xfloat_at_2(<4 x float>* nocapture no nnull dereferenceable(16), <4 x float>, <4 x float>, float) {
1062 ; CHECK: entry:
1063 ; CHECK-NEXT: %4 = insertelement <4 x float> %1, float %3, i32 2
1064 ; CHECK-NEXT: store <4 x float> %2, <4 x float>* %0, align 16
1065 ; CHECK-NEXT: ret <4 x float> %4
1066 ; CHECK-NEXT: }
1067
1068 define <6 x float> @insert_6xfloat_at_3(<6 x float>, float) {
1069 entry:
1070 %2 = insertelement <6 x float> %0, float %1, i32 3
1071 ret <6 x float> %2
1072 }
1073 ; CHECK-LABEL: define <4 x float> @insert_6xfloat_at_3(<4 x float>* nocapture no nnull dereferenceable(16), <4 x float>, <4 x float>, float) {
1074 ; CHECK: entry:
1075 ; CHECK-NEXT: %4 = insertelement <4 x float> %1, float %3, i32 3
1076 ; CHECK-NEXT: store <4 x float> %2, <4 x float>* %0, align 16
1077 ; CHECK-NEXT: ret <4 x float> %4
1078 ; CHECK-NEXT: }
1079
1080 define <6 x float> @insert_6xfloat_at_4(<6 x float>, float) {
1081 entry:
1082 %2 = insertelement <6 x float> %0, float %1, i32 4
1083 ret <6 x float> %2
1084 }
1085 ; CHECK-LABEL: define <4 x float> @insert_6xfloat_at_4(<4 x float>* nocapture no nnull dereferenceable(16), <4 x float>, <4 x float>, float) {
1086 ; CHECK: entry:
1087 ; CHECK-NEXT: %4 = insertelement <4 x float> %2, float %3, i32 0
1088 ; CHECK-NEXT: store <4 x float> %4, <4 x float>* %0, align 16
1089 ; CHECK-NEXT: ret <4 x float> %1
1090 ; CHECK-NEXT: }
1091
1092 define <6 x float> @insert_6xfloat_at_5(<6 x float>, float) {
1093 entry:
1094 %2 = insertelement <6 x float> %0, float %1, i32 5
1095 ret <6 x float> %2
1096 }
1097 ; CHECK-LABEL: define <4 x float> @insert_6xfloat_at_5(<4 x float>* nocapture no nnull dereferenceable(16), <4 x float>, <4 x float>, float) {
1098 ; CHECK: entry:
1099 ; CHECK-NEXT: %4 = insertelement <4 x float> %2, float %3, i32 1
1100 ; CHECK-NEXT: store <4 x float> %4, <4 x float>* %0, align 16
1101 ; CHECK-NEXT: ret <4 x float> %1
1102 ; CHECK-NEXT: }
1103
1104 define <6 x float> @insert_6xfloat_undef_idx(<6 x float>, float) {
1105 entry:
1106 %2 = insertelement <6 x float> %0, float %1, i32 6
1107 ret <6 x float> %2
1108 }
1109 ; CHECK-LABEL: define <4 x float> @insert_6xfloat_undef_idx(<4 x float>* nocaptu re nonnull dereferenceable(16), <4 x float>, <4 x float>, float) {
1110 ; CHECK: entry:
1111 ; CHECK-NEXT: store <4 x float> %2, <4 x float>* %0, align 16
1112 ; CHECK-NEXT: ret <4 x float> %1
1113 ; CHECK-NEXT: }
1114
1115 define <6 x double> @insert_6xdouble_at_0(<6 x double>, double) {
1116 entry:
1117 %2 = insertelement <6 x double> %0, double %1, i32 0
1118 ret <6 x double> %2
1119 }
1120 ; CHECK-LABEL: define <2 x double> @insert_6xdouble_at_0(<2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16 ), <2 x double>, <2 x double>, <2 x double>, double) {
1121 ; CHECK: entry:
1122 ; CHECK-NEXT: %6 = insertelement <2 x double> %2, double %5, i32 0
1123 ; CHECK-NEXT: store <2 x double> %3, <2 x double>* %0, align 16
1124 ; CHECK-NEXT: store <2 x double> %4, <2 x double>* %1, align 16
1125 ; CHECK-NEXT: ret <2 x double> %6
1126 ; CHECK-NEXT: }
1127
1128 define <6 x double> @insert_6xdouble_at_1(<6 x double>, double) {
1129 entry:
1130 %2 = insertelement <6 x double> %0, double %1, i32 1
1131 ret <6 x double> %2
1132 }
1133 ; CHECK-LABEL: define <2 x double> @insert_6xdouble_at_1(<2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16 ), <2 x double>, <2 x double>, <2 x double>, double) {
1134 ; CHECK: entry:
1135 ; CHECK-NEXT: %6 = insertelement <2 x double> %2, double %5, i32 1
1136 ; CHECK-NEXT: store <2 x double> %3, <2 x double>* %0, align 16
1137 ; CHECK-NEXT: store <2 x double> %4, <2 x double>* %1, align 16
1138 ; CHECK-NEXT: ret <2 x double> %6
1139 ; CHECK-NEXT: }
1140
1141 define <6 x double> @insert_6xdouble_at_2(<6 x double>, double) {
1142 entry:
1143 %2 = insertelement <6 x double> %0, double %1, i32 2
1144 ret <6 x double> %2
1145 }
1146 ; CHECK-LABEL: define <2 x double> @insert_6xdouble_at_2(<2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16 ), <2 x double>, <2 x double>, <2 x double>, double) {
1147 ; CHECK: entry:
1148 ; CHECK-NEXT: %6 = insertelement <2 x double> %3, double %5, i32 0
1149 ; CHECK-NEXT: store <2 x double> %6, <2 x double>* %0, align 16
1150 ; CHECK-NEXT: store <2 x double> %4, <2 x double>* %1, align 16
1151 ; CHECK-NEXT: ret <2 x double> %2
1152 ; CHECK-NEXT: }
1153
1154 define <6 x double> @insert_6xdouble_at_3(<6 x double>, double) {
1155 entry:
1156 %2 = insertelement <6 x double> %0, double %1, i32 3
1157 ret <6 x double> %2
1158 }
1159 ; CHECK-LABEL: define <2 x double> @insert_6xdouble_at_3(<2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16 ), <2 x double>, <2 x double>, <2 x double>, double) {
1160 ; CHECK: entry:
1161 ; CHECK-NEXT: %6 = insertelement <2 x double> %3, double %5, i32 1
1162 ; CHECK-NEXT: store <2 x double> %6, <2 x double>* %0, align 16
1163 ; CHECK-NEXT: store <2 x double> %4, <2 x double>* %1, align 16
1164 ; CHECK-NEXT: ret <2 x double> %2
1165 ; CHECK-NEXT: }
1166
1167 define <6 x double> @insert_6xdouble_at_4(<6 x double>, double) {
1168 entry:
1169 %2 = insertelement <6 x double> %0, double %1, i32 4
1170 ret <6 x double> %2
1171 }
1172 ; CHECK-LABEL: define <2 x double> @insert_6xdouble_at_4(<2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16 ), <2 x double>, <2 x double>, <2 x double>, double) {
1173 ; CHECK: entry:
1174 ; CHECK-NEXT: %6 = insertelement <2 x double> %4, double %5, i32 0
1175 ; CHECK-NEXT: store <2 x double> %3, <2 x double>* %0, align 16
1176 ; CHECK-NEXT: store <2 x double> %6, <2 x double>* %1, align 16
1177 ; CHECK-NEXT: ret <2 x double> %2
1178 ; CHECK-NEXT: }
1179
1180 define <6 x double> @insert_6xdouble_at_5(<6 x double>, double) {
1181 entry:
1182 %2 = insertelement <6 x double> %0, double %1, i32 5
1183 ret <6 x double> %2
1184 }
1185 ; CHECK-LABEL: define <2 x double> @insert_6xdouble_at_5(<2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16 ), <2 x double>, <2 x double>, <2 x double>, double) {
1186 ; CHECK: entry:
1187 ; CHECK-NEXT: %6 = insertelement <2 x double> %4, double %5, i32 1
1188 ; CHECK-NEXT: store <2 x double> %3, <2 x double>* %0, align 16
1189 ; CHECK-NEXT: store <2 x double> %6, <2 x double>* %1, align 16
1190 ; CHECK-NEXT: ret <2 x double> %2
1191 ; CHECK-NEXT: }
1192
1193 define <6 x double> @insert_6xdouble_undef_idx(<6 x double>, double) {
1194 entry:
1195 %2 = insertelement <6 x double> %0, double %1, i32 6
1196 ret <6 x double> %2
1197 }
1198 ; CHECK-LABEL: define <2 x double> @insert_6xdouble_undef_idx(<2 x double>* noca pture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceab le(16), <2 x double>, <2 x double>, <2 x double>, double) {
1199 ; CHECK: entry:
1200 ; CHECK-NEXT: store <2 x double> %3, <2 x double>* %0, align 16
1201 ; CHECK-NEXT: store <2 x double> %4, <2 x double>* %1, align 16
1202 ; CHECK-NEXT: ret <2 x double> %2
1203 ; CHECK-NEXT: }
1204
1205 define <8 x i8> @insert_8xi8_at_0(<8 x i8>, i8) {
1206 entry:
1207 %2 = insertelement <8 x i8> %0, i8 %1, i32 0
1208 ret <8 x i8> %2
1209 }
1210 ; CHECK-LABEL: define <16 x i8> @insert_8xi8_at_0(<16 x i8>, i8) {
1211 ; CHECK: entry:
1212 ; CHECK-NEXT: %2 = insertelement <16 x i8> %0, i8 %1, i32 0
1213 ; CHECK-NEXT: ret <16 x i8> %2
1214 ; CHECK-NEXT: }
1215
1216 define <8 x i8> @insert_8xi8_at_1(<8 x i8>, i8) {
1217 entry:
1218 %2 = insertelement <8 x i8> %0, i8 %1, i32 1
1219 ret <8 x i8> %2
1220 }
1221 ; CHECK-LABEL: define <16 x i8> @insert_8xi8_at_1(<16 x i8>, i8) {
1222 ; CHECK: entry:
1223 ; CHECK-NEXT: %2 = insertelement <16 x i8> %0, i8 %1, i32 1
1224 ; CHECK-NEXT: ret <16 x i8> %2
1225 ; CHECK-NEXT: }
1226
1227 define <8 x i8> @insert_8xi8_at_2(<8 x i8>, i8) {
1228 entry:
1229 %2 = insertelement <8 x i8> %0, i8 %1, i32 2
1230 ret <8 x i8> %2
1231 }
1232 ; CHECK-LABEL: define <16 x i8> @insert_8xi8_at_2(<16 x i8>, i8) {
1233 ; CHECK: entry:
1234 ; CHECK-NEXT: %2 = insertelement <16 x i8> %0, i8 %1, i32 2
1235 ; CHECK-NEXT: ret <16 x i8> %2
1236 ; CHECK-NEXT: }
1237
1238 define <8 x i8> @insert_8xi8_at_3(<8 x i8>, i8) {
1239 entry:
1240 %2 = insertelement <8 x i8> %0, i8 %1, i32 3
1241 ret <8 x i8> %2
1242 }
1243 ; CHECK-LABEL: define <16 x i8> @insert_8xi8_at_3(<16 x i8>, i8) {
1244 ; CHECK: entry:
1245 ; CHECK-NEXT: %2 = insertelement <16 x i8> %0, i8 %1, i32 3
1246 ; CHECK-NEXT: ret <16 x i8> %2
1247 ; CHECK-NEXT: }
1248
1249 define <8 x i8> @insert_8xi8_at_4(<8 x i8>, i8) {
1250 entry:
1251 %2 = insertelement <8 x i8> %0, i8 %1, i32 4
1252 ret <8 x i8> %2
1253 }
1254 ; CHECK-LABEL: define <16 x i8> @insert_8xi8_at_4(<16 x i8>, i8) {
1255 ; CHECK: entry:
1256 ; CHECK-NEXT: %2 = insertelement <16 x i8> %0, i8 %1, i32 4
1257 ; CHECK-NEXT: ret <16 x i8> %2
1258 ; CHECK-NEXT: }
1259
1260 define <8 x i8> @insert_8xi8_at_5(<8 x i8>, i8) {
1261 entry:
1262 %2 = insertelement <8 x i8> %0, i8 %1, i32 5
1263 ret <8 x i8> %2
1264 }
1265 ; CHECK-LABEL: define <16 x i8> @insert_8xi8_at_5(<16 x i8>, i8) {
1266 ; CHECK: entry:
1267 ; CHECK-NEXT: %2 = insertelement <16 x i8> %0, i8 %1, i32 5
1268 ; CHECK-NEXT: ret <16 x i8> %2
1269 ; CHECK-NEXT: }
1270
1271 define <8 x i8> @insert_8xi8_at_6(<8 x i8>, i8) {
1272 entry:
1273 %2 = insertelement <8 x i8> %0, i8 %1, i32 6
1274 ret <8 x i8> %2
1275 }
1276 ; CHECK-LABEL: define <16 x i8> @insert_8xi8_at_6(<16 x i8>, i8) {
1277 ; CHECK: entry:
1278 ; CHECK-NEXT: %2 = insertelement <16 x i8> %0, i8 %1, i32 6
1279 ; CHECK-NEXT: ret <16 x i8> %2
1280 ; CHECK-NEXT: }
1281
1282 define <8 x i8> @insert_8xi8_at_7(<8 x i8>, i8) {
1283 entry:
1284 %2 = insertelement <8 x i8> %0, i8 %1, i32 7
1285 ret <8 x i8> %2
1286 }
1287 ; CHECK-LABEL: define <16 x i8> @insert_8xi8_at_7(<16 x i8>, i8) {
1288 ; CHECK: entry:
1289 ; CHECK-NEXT: %2 = insertelement <16 x i8> %0, i8 %1, i32 7
1290 ; CHECK-NEXT: ret <16 x i8> %2
1291 ; CHECK-NEXT: }
1292
1293 define <8 x i8> @insert_8xi8_undef_idx(<8 x i8>, i8) {
1294 entry:
1295 %2 = insertelement <8 x i8> %0, i8 %1, i32 8
1296 ret <8 x i8> %2
1297 }
1298 ; CHECK-LABEL: define <16 x i8> @insert_8xi8_undef_idx(<16 x i8>, i8) {
1299 ; CHECK: entry:
1300 ; CHECK-NEXT: ret <16 x i8> %0
1301 ; CHECK-NEXT: }
1302
1303 define <8 x i16> @insert_8xi16_at_0(<8 x i16>, i16) {
1304 entry:
1305 %2 = insertelement <8 x i16> %0, i16 %1, i32 0
1306 ret <8 x i16> %2
1307 }
1308 ; CHECK-LABEL: define <8 x i16> @insert_8xi16_at_0(<8 x i16>, i16) {
1309 ; CHECK: entry:
1310 ; CHECK-NEXT: %2 = insertelement <8 x i16> %0, i16 %1, i32 0
1311 ; CHECK-NEXT: ret <8 x i16> %2
1312 ; CHECK-NEXT: }
1313
1314 define <8 x i16> @insert_8xi16_at_1(<8 x i16>, i16) {
1315 entry:
1316 %2 = insertelement <8 x i16> %0, i16 %1, i32 1
1317 ret <8 x i16> %2
1318 }
1319 ; CHECK-LABEL: define <8 x i16> @insert_8xi16_at_1(<8 x i16>, i16) {
1320 ; CHECK: entry:
1321 ; CHECK-NEXT: %2 = insertelement <8 x i16> %0, i16 %1, i32 1
1322 ; CHECK-NEXT: ret <8 x i16> %2
1323 ; CHECK-NEXT: }
1324
1325 define <8 x i16> @insert_8xi16_at_2(<8 x i16>, i16) {
1326 entry:
1327 %2 = insertelement <8 x i16> %0, i16 %1, i32 2
1328 ret <8 x i16> %2
1329 }
1330 ; CHECK-LABEL: define <8 x i16> @insert_8xi16_at_2(<8 x i16>, i16) {
1331 ; CHECK: entry:
1332 ; CHECK-NEXT: %2 = insertelement <8 x i16> %0, i16 %1, i32 2
1333 ; CHECK-NEXT: ret <8 x i16> %2
1334 ; CHECK-NEXT: }
1335
1336 define <8 x i16> @insert_8xi16_at_3(<8 x i16>, i16) {
1337 entry:
1338 %2 = insertelement <8 x i16> %0, i16 %1, i32 3
1339 ret <8 x i16> %2
1340 }
1341 ; CHECK-LABEL: define <8 x i16> @insert_8xi16_at_3(<8 x i16>, i16) {
1342 ; CHECK: entry:
1343 ; CHECK-NEXT: %2 = insertelement <8 x i16> %0, i16 %1, i32 3
1344 ; CHECK-NEXT: ret <8 x i16> %2
1345 ; CHECK-NEXT: }
1346
1347 define <8 x i16> @insert_8xi16_at_4(<8 x i16>, i16) {
1348 entry:
1349 %2 = insertelement <8 x i16> %0, i16 %1, i32 4
1350 ret <8 x i16> %2
1351 }
1352 ; CHECK-LABEL: define <8 x i16> @insert_8xi16_at_4(<8 x i16>, i16) {
1353 ; CHECK: entry:
1354 ; CHECK-NEXT: %2 = insertelement <8 x i16> %0, i16 %1, i32 4
1355 ; CHECK-NEXT: ret <8 x i16> %2
1356 ; CHECK-NEXT: }
1357
1358 define <8 x i16> @insert_8xi16_at_5(<8 x i16>, i16) {
1359 entry:
1360 %2 = insertelement <8 x i16> %0, i16 %1, i32 5
1361 ret <8 x i16> %2
1362 }
1363 ; CHECK-LABEL: define <8 x i16> @insert_8xi16_at_5(<8 x i16>, i16) {
1364 ; CHECK: entry:
1365 ; CHECK-NEXT: %2 = insertelement <8 x i16> %0, i16 %1, i32 5
1366 ; CHECK-NEXT: ret <8 x i16> %2
1367 ; CHECK-NEXT: }
1368
1369 define <8 x i16> @insert_8xi16_at_6(<8 x i16>, i16) {
1370 entry:
1371 %2 = insertelement <8 x i16> %0, i16 %1, i32 6
1372 ret <8 x i16> %2
1373 }
1374 ; CHECK-LABEL: define <8 x i16> @insert_8xi16_at_6(<8 x i16>, i16) {
1375 ; CHECK: entry:
1376 ; CHECK-NEXT: %2 = insertelement <8 x i16> %0, i16 %1, i32 6
1377 ; CHECK-NEXT: ret <8 x i16> %2
1378 ; CHECK-NEXT: }
1379
1380 define <8 x i16> @insert_8xi16_at_7(<8 x i16>, i16) {
1381 entry:
1382 %2 = insertelement <8 x i16> %0, i16 %1, i32 7
1383 ret <8 x i16> %2
1384 }
1385 ; CHECK-LABEL: define <8 x i16> @insert_8xi16_at_7(<8 x i16>, i16) {
1386 ; CHECK: entry:
1387 ; CHECK-NEXT: %2 = insertelement <8 x i16> %0, i16 %1, i32 7
1388 ; CHECK-NEXT: ret <8 x i16> %2
1389 ; CHECK-NEXT: }
1390
1391 define <8 x i16> @insert_8xi16_undef_idx(<8 x i16>, i16) {
1392 entry:
1393 %2 = insertelement <8 x i16> %0, i16 %1, i32 8
1394 ret <8 x i16> %2
1395 }
1396 ; CHECK-LABEL: define <8 x i16> @insert_8xi16_undef_idx(<8 x i16>, i16) {
1397 ; CHECK: entry:
1398 ; CHECK-NEXT: %2 = insertelement <8 x i16> %0, i16 %1, i32 8
1399 ; CHECK-NEXT: ret <8 x i16> %2
1400 ; CHECK-NEXT: }
1401
1402 define <8 x i32> @insert_8xi32_at_0(<8 x i32>, i32) {
1403 entry:
1404 %2 = insertelement <8 x i32> %0, i32 %1, i32 0
1405 ret <8 x i32> %2
1406 }
1407 ; CHECK-LABEL: define <4 x i32> @insert_8xi32_at_0(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, i32) {
1408 ; CHECK: entry:
1409 ; CHECK-NEXT: %4 = insertelement <4 x i32> %1, i32 %3, i32 0
1410 ; CHECK-NEXT: store <4 x i32> %2, <4 x i32>* %0, align 16
1411 ; CHECK-NEXT: ret <4 x i32> %4
1412 ; CHECK-NEXT: }
1413
1414 define <8 x i32> @insert_8xi32_at_1(<8 x i32>, i32) {
1415 entry:
1416 %2 = insertelement <8 x i32> %0, i32 %1, i32 1
1417 ret <8 x i32> %2
1418 }
1419 ; CHECK-LABEL: define <4 x i32> @insert_8xi32_at_1(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, i32) {
1420 ; CHECK: entry:
1421 ; CHECK-NEXT: %4 = insertelement <4 x i32> %1, i32 %3, i32 1
1422 ; CHECK-NEXT: store <4 x i32> %2, <4 x i32>* %0, align 16
1423 ; CHECK-NEXT: ret <4 x i32> %4
1424 ; CHECK-NEXT: }
1425
1426 define <8 x i32> @insert_8xi32_at_2(<8 x i32>, i32) {
1427 entry:
1428 %2 = insertelement <8 x i32> %0, i32 %1, i32 2
1429 ret <8 x i32> %2
1430 }
1431 ; CHECK-LABEL: define <4 x i32> @insert_8xi32_at_2(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, i32) {
1432 ; CHECK: entry:
1433 ; CHECK-NEXT: %4 = insertelement <4 x i32> %1, i32 %3, i32 2
1434 ; CHECK-NEXT: store <4 x i32> %2, <4 x i32>* %0, align 16
1435 ; CHECK-NEXT: ret <4 x i32> %4
1436 ; CHECK-NEXT: }
1437
1438 define <8 x i32> @insert_8xi32_at_3(<8 x i32>, i32) {
1439 entry:
1440 %2 = insertelement <8 x i32> %0, i32 %1, i32 3
1441 ret <8 x i32> %2
1442 }
1443 ; CHECK-LABEL: define <4 x i32> @insert_8xi32_at_3(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, i32) {
1444 ; CHECK: entry:
1445 ; CHECK-NEXT: %4 = insertelement <4 x i32> %1, i32 %3, i32 3
1446 ; CHECK-NEXT: store <4 x i32> %2, <4 x i32>* %0, align 16
1447 ; CHECK-NEXT: ret <4 x i32> %4
1448 ; CHECK-NEXT: }
1449
1450 define <8 x i32> @insert_8xi32_at_4(<8 x i32>, i32) {
1451 entry:
1452 %2 = insertelement <8 x i32> %0, i32 %1, i32 4
1453 ret <8 x i32> %2
1454 }
1455 ; CHECK-LABEL: define <4 x i32> @insert_8xi32_at_4(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, i32) {
1456 ; CHECK: entry:
1457 ; CHECK-NEXT: %4 = insertelement <4 x i32> %2, i32 %3, i32 0
1458 ; CHECK-NEXT: store <4 x i32> %4, <4 x i32>* %0, align 16
1459 ; CHECK-NEXT: ret <4 x i32> %1
1460 ; CHECK-NEXT: }
1461
1462 define <8 x i32> @insert_8xi32_at_5(<8 x i32>, i32) {
1463 entry:
1464 %2 = insertelement <8 x i32> %0, i32 %1, i32 5
1465 ret <8 x i32> %2
1466 }
1467 ; CHECK-LABEL: define <4 x i32> @insert_8xi32_at_5(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, i32) {
1468 ; CHECK: entry:
1469 ; CHECK-NEXT: %4 = insertelement <4 x i32> %2, i32 %3, i32 1
1470 ; CHECK-NEXT: store <4 x i32> %4, <4 x i32>* %0, align 16
1471 ; CHECK-NEXT: ret <4 x i32> %1
1472 ; CHECK-NEXT: }
1473
1474 define <8 x i32> @insert_8xi32_at_6(<8 x i32>, i32) {
1475 entry:
1476 %2 = insertelement <8 x i32> %0, i32 %1, i32 6
1477 ret <8 x i32> %2
1478 }
1479 ; CHECK-LABEL: define <4 x i32> @insert_8xi32_at_6(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, i32) {
1480 ; CHECK: entry:
1481 ; CHECK-NEXT: %4 = insertelement <4 x i32> %2, i32 %3, i32 2
1482 ; CHECK-NEXT: store <4 x i32> %4, <4 x i32>* %0, align 16
1483 ; CHECK-NEXT: ret <4 x i32> %1
1484 ; CHECK-NEXT: }
1485
1486 define <8 x i32> @insert_8xi32_at_7(<8 x i32>, i32) {
1487 entry:
1488 %2 = insertelement <8 x i32> %0, i32 %1, i32 7
1489 ret <8 x i32> %2
1490 }
1491 ; CHECK-LABEL: define <4 x i32> @insert_8xi32_at_7(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, i32) {
1492 ; CHECK: entry:
1493 ; CHECK-NEXT: %4 = insertelement <4 x i32> %2, i32 %3, i32 3
1494 ; CHECK-NEXT: store <4 x i32> %4, <4 x i32>* %0, align 16
1495 ; CHECK-NEXT: ret <4 x i32> %1
1496 ; CHECK-NEXT: }
1497
1498 define <8 x i32> @insert_8xi32_undef_idx(<8 x i32>, i32) {
1499 entry:
1500 %2 = insertelement <8 x i32> %0, i32 %1, i32 8
1501 ret <8 x i32> %2
1502 }
1503 ; CHECK-LABEL: define <4 x i32> @insert_8xi32_undef_idx(<4 x i32>* nocapture non null dereferenceable(16), <4 x i32>, <4 x i32>, i32) {
1504 ; CHECK: entry:
1505 ; CHECK-NEXT: store <4 x i32> %2, <4 x i32>* %0, align 16
1506 ; CHECK-NEXT: ret <4 x i32> %1
1507 ; CHECK-NEXT: }
1508
1509 define <8 x i64> @insert_8xi64_at_0(<8 x i64>, i64) {
1510 entry:
1511 %2 = insertelement <8 x i64> %0, i64 %1, i32 0
1512 ret <8 x i64> %2
1513 }
1514 ; CHECK-LABEL: define <2 x i64> @insert_8xi64_at_0(<2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64> * nocapture nonnull dereferenceable(16), <2 x i64>, <2 x i64>, <2 x i64>, <2 x i 64>, i64) {
1515 ; CHECK: entry:
1516 ; CHECK-NEXT: %8 = insertelement <2 x i64> %3, i64 %7, i32 0
1517 ; CHECK-NEXT: store <2 x i64> %4, <2 x i64>* %0, align 16
1518 ; CHECK-NEXT: store <2 x i64> %5, <2 x i64>* %1, align 16
1519 ; CHECK-NEXT: store <2 x i64> %6, <2 x i64>* %2, align 16
1520 ; CHECK-NEXT: ret <2 x i64> %8
1521 ; CHECK-NEXT: }
1522
1523 define <8 x i64> @insert_8xi64_at_1(<8 x i64>, i64) {
1524 entry:
1525 %2 = insertelement <8 x i64> %0, i64 %1, i32 1
1526 ret <8 x i64> %2
1527 }
1528 ; CHECK-LABEL: define <2 x i64> @insert_8xi64_at_1(<2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64> * nocapture nonnull dereferenceable(16), <2 x i64>, <2 x i64>, <2 x i64>, <2 x i 64>, i64) {
1529 ; CHECK: entry:
1530 ; CHECK-NEXT: %8 = insertelement <2 x i64> %3, i64 %7, i32 1
1531 ; CHECK-NEXT: store <2 x i64> %4, <2 x i64>* %0, align 16
1532 ; CHECK-NEXT: store <2 x i64> %5, <2 x i64>* %1, align 16
1533 ; CHECK-NEXT: store <2 x i64> %6, <2 x i64>* %2, align 16
1534 ; CHECK-NEXT: ret <2 x i64> %8
1535 ; CHECK-NEXT: }
1536
1537 define <8 x i64> @insert_8xi64_at_2(<8 x i64>, i64) {
1538 entry:
1539 %2 = insertelement <8 x i64> %0, i64 %1, i32 2
1540 ret <8 x i64> %2
1541 }
1542 ; CHECK-LABEL: define <2 x i64> @insert_8xi64_at_2(<2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64> * nocapture nonnull dereferenceable(16), <2 x i64>, <2 x i64>, <2 x i64>, <2 x i 64>, i64) {
1543 ; CHECK: entry:
1544 ; CHECK-NEXT: %8 = insertelement <2 x i64> %4, i64 %7, i32 0
1545 ; CHECK-NEXT: store <2 x i64> %8, <2 x i64>* %0, align 16
1546 ; CHECK-NEXT: store <2 x i64> %5, <2 x i64>* %1, align 16
1547 ; CHECK-NEXT: store <2 x i64> %6, <2 x i64>* %2, align 16
1548 ; CHECK-NEXT: ret <2 x i64> %3
1549 ; CHECK-NEXT: }
1550
1551 define <8 x i64> @insert_8xi64_at_3(<8 x i64>, i64) {
1552 entry:
1553 %2 = insertelement <8 x i64> %0, i64 %1, i32 3
1554 ret <8 x i64> %2
1555 }
1556 ; CHECK-LABEL: define <2 x i64> @insert_8xi64_at_3(<2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64> * nocapture nonnull dereferenceable(16), <2 x i64>, <2 x i64>, <2 x i64>, <2 x i 64>, i64) {
1557 ; CHECK: entry:
1558 ; CHECK-NEXT: %8 = insertelement <2 x i64> %4, i64 %7, i32 1
1559 ; CHECK-NEXT: store <2 x i64> %8, <2 x i64>* %0, align 16
1560 ; CHECK-NEXT: store <2 x i64> %5, <2 x i64>* %1, align 16
1561 ; CHECK-NEXT: store <2 x i64> %6, <2 x i64>* %2, align 16
1562 ; CHECK-NEXT: ret <2 x i64> %3
1563 ; CHECK-NEXT: }
1564
1565 define <8 x i64> @insert_8xi64_at_4(<8 x i64>, i64) {
1566 entry:
1567 %2 = insertelement <8 x i64> %0, i64 %1, i32 4
1568 ret <8 x i64> %2
1569 }
1570 ; CHECK-LABEL: define <2 x i64> @insert_8xi64_at_4(<2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64> * nocapture nonnull dereferenceable(16), <2 x i64>, <2 x i64>, <2 x i64>, <2 x i 64>, i64) {
1571 ; CHECK: entry:
1572 ; CHECK-NEXT: %8 = insertelement <2 x i64> %5, i64 %7, i32 0
1573 ; CHECK-NEXT: store <2 x i64> %4, <2 x i64>* %0, align 16
1574 ; CHECK-NEXT: store <2 x i64> %8, <2 x i64>* %1, align 16
1575 ; CHECK-NEXT: store <2 x i64> %6, <2 x i64>* %2, align 16
1576 ; CHECK-NEXT: ret <2 x i64> %3
1577 ; CHECK-NEXT: }
1578
1579 define <8 x i64> @insert_8xi64_at_5(<8 x i64>, i64) {
1580 entry:
1581 %2 = insertelement <8 x i64> %0, i64 %1, i32 5
1582 ret <8 x i64> %2
1583 }
1584 ; CHECK-LABEL: define <2 x i64> @insert_8xi64_at_5(<2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64> * nocapture nonnull dereferenceable(16), <2 x i64>, <2 x i64>, <2 x i64>, <2 x i 64>, i64) {
1585 ; CHECK: entry:
1586 ; CHECK-NEXT: %8 = insertelement <2 x i64> %5, i64 %7, i32 1
1587 ; CHECK-NEXT: store <2 x i64> %4, <2 x i64>* %0, align 16
1588 ; CHECK-NEXT: store <2 x i64> %8, <2 x i64>* %1, align 16
1589 ; CHECK-NEXT: store <2 x i64> %6, <2 x i64>* %2, align 16
1590 ; CHECK-NEXT: ret <2 x i64> %3
1591 ; CHECK-NEXT: }
1592
1593 define <8 x i64> @insert_8xi64_at_6(<8 x i64>, i64) {
1594 entry:
1595 %2 = insertelement <8 x i64> %0, i64 %1, i32 6
1596 ret <8 x i64> %2
1597 }
1598 ; CHECK-LABEL: define <2 x i64> @insert_8xi64_at_6(<2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64> * nocapture nonnull dereferenceable(16), <2 x i64>, <2 x i64>, <2 x i64>, <2 x i 64>, i64) {
1599 ; CHECK: entry:
1600 ; CHECK-NEXT: %8 = insertelement <2 x i64> %6, i64 %7, i32 0
1601 ; CHECK-NEXT: store <2 x i64> %4, <2 x i64>* %0, align 16
1602 ; CHECK-NEXT: store <2 x i64> %5, <2 x i64>* %1, align 16
1603 ; CHECK-NEXT: store <2 x i64> %8, <2 x i64>* %2, align 16
1604 ; CHECK-NEXT: ret <2 x i64> %3
1605 ; CHECK-NEXT: }
1606
1607 define <8 x i64> @insert_8xi64_at_7(<8 x i64>, i64) {
1608 entry:
1609 %2 = insertelement <8 x i64> %0, i64 %1, i32 7
1610 ret <8 x i64> %2
1611 }
1612 ; CHECK-LABEL: define <2 x i64> @insert_8xi64_at_7(<2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64> * nocapture nonnull dereferenceable(16), <2 x i64>, <2 x i64>, <2 x i64>, <2 x i 64>, i64) {
1613 ; CHECK: entry:
1614 ; CHECK-NEXT: %8 = insertelement <2 x i64> %6, i64 %7, i32 1
1615 ; CHECK-NEXT: store <2 x i64> %4, <2 x i64>* %0, align 16
1616 ; CHECK-NEXT: store <2 x i64> %5, <2 x i64>* %1, align 16
1617 ; CHECK-NEXT: store <2 x i64> %8, <2 x i64>* %2, align 16
1618 ; CHECK-NEXT: ret <2 x i64> %3
1619 ; CHECK-NEXT: }
1620
1621 define <8 x i64> @insert_8xi64_undef_idx(<8 x i64>, i64) {
1622 entry:
1623 %2 = insertelement <8 x i64> %0, i64 %1, i32 8
1624 ret <8 x i64> %2
1625 }
1626 ; CHECK-LABEL: define <2 x i64> @insert_8xi64_undef_idx(<2 x i64>* nocapture non null dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>, <2 x i64>, <2 x i64>, < 2 x i64>, i64) {
1627 ; CHECK: entry:
1628 ; CHECK-NEXT: store <2 x i64> %4, <2 x i64>* %0, align 16
1629 ; CHECK-NEXT: store <2 x i64> %5, <2 x i64>* %1, align 16
1630 ; CHECK-NEXT: store <2 x i64> %6, <2 x i64>* %2, align 16
1631 ; CHECK-NEXT: ret <2 x i64> %3
1632 ; CHECK-NEXT: }
1633
1634 define <8 x i8*> @insert_8xi8ptr_at_0(<8 x i8*>, i8*) {
1635 entry:
1636 %2 = insertelement <8 x i8*> %0, i8* %1, i32 0
1637 ret <8 x i8*> %2
1638 }
1639 ; CHECK-LABEL: define <4 x i8*> @insert_8xi8ptr_at_0(<4 x i8*>* nocapture nonnul l dereferenceable(16), <4 x i8*>, <4 x i8*>, i8*) {
1640 ; CHECK: entry:
1641 ; CHECK-NEXT: %4 = insertelement <4 x i8*> %1, i8* %3, i32 0
1642 ; CHECK-NEXT: store <4 x i8*> %2, <4 x i8*>* %0, align 16
1643 ; CHECK-NEXT: ret <4 x i8*> %4
1644 ; CHECK-NEXT: }
1645
1646 define <8 x i8*> @insert_8xi8ptr_at_1(<8 x i8*>, i8*) {
1647 entry:
1648 %2 = insertelement <8 x i8*> %0, i8* %1, i32 1
1649 ret <8 x i8*> %2
1650 }
1651 ; CHECK-LABEL: define <4 x i8*> @insert_8xi8ptr_at_1(<4 x i8*>* nocapture nonnul l dereferenceable(16), <4 x i8*>, <4 x i8*>, i8*) {
1652 ; CHECK: entry:
1653 ; CHECK-NEXT: %4 = insertelement <4 x i8*> %1, i8* %3, i32 1
1654 ; CHECK-NEXT: store <4 x i8*> %2, <4 x i8*>* %0, align 16
1655 ; CHECK-NEXT: ret <4 x i8*> %4
1656 ; CHECK-NEXT: }
1657
1658 define <8 x i8*> @insert_8xi8ptr_at_2(<8 x i8*>, i8*) {
1659 entry:
1660 %2 = insertelement <8 x i8*> %0, i8* %1, i32 2
1661 ret <8 x i8*> %2
1662 }
1663 ; CHECK-LABEL: define <4 x i8*> @insert_8xi8ptr_at_2(<4 x i8*>* nocapture nonnul l dereferenceable(16), <4 x i8*>, <4 x i8*>, i8*) {
1664 ; CHECK: entry:
1665 ; CHECK-NEXT: %4 = insertelement <4 x i8*> %1, i8* %3, i32 2
1666 ; CHECK-NEXT: store <4 x i8*> %2, <4 x i8*>* %0, align 16
1667 ; CHECK-NEXT: ret <4 x i8*> %4
1668 ; CHECK-NEXT: }
1669
1670 define <8 x i8*> @insert_8xi8ptr_at_3(<8 x i8*>, i8*) {
1671 entry:
1672 %2 = insertelement <8 x i8*> %0, i8* %1, i32 3
1673 ret <8 x i8*> %2
1674 }
1675 ; CHECK-LABEL: define <4 x i8*> @insert_8xi8ptr_at_3(<4 x i8*>* nocapture nonnul l dereferenceable(16), <4 x i8*>, <4 x i8*>, i8*) {
1676 ; CHECK: entry:
1677 ; CHECK-NEXT: %4 = insertelement <4 x i8*> %1, i8* %3, i32 3
1678 ; CHECK-NEXT: store <4 x i8*> %2, <4 x i8*>* %0, align 16
1679 ; CHECK-NEXT: ret <4 x i8*> %4
1680 ; CHECK-NEXT: }
1681
1682 define <8 x i8*> @insert_8xi8ptr_at_4(<8 x i8*>, i8*) {
1683 entry:
1684 %2 = insertelement <8 x i8*> %0, i8* %1, i32 4
1685 ret <8 x i8*> %2
1686 }
1687 ; CHECK-LABEL: define <4 x i8*> @insert_8xi8ptr_at_4(<4 x i8*>* nocapture nonnul l dereferenceable(16), <4 x i8*>, <4 x i8*>, i8*) {
1688 ; CHECK: entry:
1689 ; CHECK-NEXT: %4 = insertelement <4 x i8*> %2, i8* %3, i32 0
1690 ; CHECK-NEXT: store <4 x i8*> %4, <4 x i8*>* %0, align 16
1691 ; CHECK-NEXT: ret <4 x i8*> %1
1692 ; CHECK-NEXT: }
1693
1694 define <8 x i8*> @insert_8xi8ptr_at_5(<8 x i8*>, i8*) {
1695 entry:
1696 %2 = insertelement <8 x i8*> %0, i8* %1, i32 5
1697 ret <8 x i8*> %2
1698 }
1699 ; CHECK-LABEL: define <4 x i8*> @insert_8xi8ptr_at_5(<4 x i8*>* nocapture nonnul l dereferenceable(16), <4 x i8*>, <4 x i8*>, i8*) {
1700 ; CHECK: entry:
1701 ; CHECK-NEXT: %4 = insertelement <4 x i8*> %2, i8* %3, i32 1
1702 ; CHECK-NEXT: store <4 x i8*> %4, <4 x i8*>* %0, align 16
1703 ; CHECK-NEXT: ret <4 x i8*> %1
1704 ; CHECK-NEXT: }
1705
1706 define <8 x i8*> @insert_8xi8ptr_at_6(<8 x i8*>, i8*) {
1707 entry:
1708 %2 = insertelement <8 x i8*> %0, i8* %1, i32 6
1709 ret <8 x i8*> %2
1710 }
1711 ; CHECK-LABEL: define <4 x i8*> @insert_8xi8ptr_at_6(<4 x i8*>* nocapture nonnul l dereferenceable(16), <4 x i8*>, <4 x i8*>, i8*) {
1712 ; CHECK: entry:
1713 ; CHECK-NEXT: %4 = insertelement <4 x i8*> %2, i8* %3, i32 2
1714 ; CHECK-NEXT: store <4 x i8*> %4, <4 x i8*>* %0, align 16
1715 ; CHECK-NEXT: ret <4 x i8*> %1
1716 ; CHECK-NEXT: }
1717
1718 define <8 x i8*> @insert_8xi8ptr_at_7(<8 x i8*>, i8*) {
1719 entry:
1720 %2 = insertelement <8 x i8*> %0, i8* %1, i32 7
1721 ret <8 x i8*> %2
1722 }
1723 ; CHECK-LABEL: define <4 x i8*> @insert_8xi8ptr_at_7(<4 x i8*>* nocapture nonnul l dereferenceable(16), <4 x i8*>, <4 x i8*>, i8*) {
1724 ; CHECK: entry:
1725 ; CHECK-NEXT: %4 = insertelement <4 x i8*> %2, i8* %3, i32 3
1726 ; CHECK-NEXT: store <4 x i8*> %4, <4 x i8*>* %0, align 16
1727 ; CHECK-NEXT: ret <4 x i8*> %1
1728 ; CHECK-NEXT: }
1729
1730 define <8 x i8*> @insert_8xi8ptr_undef_idx(<8 x i8*>, i8*) {
1731 entry:
1732 %2 = insertelement <8 x i8*> %0, i8* %1, i32 8
1733 ret <8 x i8*> %2
1734 }
1735 ; CHECK-LABEL: define <4 x i8*> @insert_8xi8ptr_undef_idx(<4 x i8*>* nocapture n onnull dereferenceable(16), <4 x i8*>, <4 x i8*>, i8*) {
1736 ; CHECK: entry:
1737 ; CHECK-NEXT: store <4 x i8*> %2, <4 x i8*>* %0, align 16
1738 ; CHECK-NEXT: ret <4 x i8*> %1
1739 ; CHECK-NEXT: }
1740
1741 define <8 x float> @insert_8xfloat_at_0(<8 x float>, float) {
1742 entry:
1743 %2 = insertelement <8 x float> %0, float %1, i32 0
1744 ret <8 x float> %2
1745 }
1746 ; CHECK-LABEL: define <4 x float> @insert_8xfloat_at_0(<4 x float>* nocapture no nnull dereferenceable(16), <4 x float>, <4 x float>, float) {
1747 ; CHECK: entry:
1748 ; CHECK-NEXT: %4 = insertelement <4 x float> %1, float %3, i32 0
1749 ; CHECK-NEXT: store <4 x float> %2, <4 x float>* %0, align 16
1750 ; CHECK-NEXT: ret <4 x float> %4
1751 ; CHECK-NEXT: }
1752
1753 define <8 x float> @insert_8xfloat_at_1(<8 x float>, float) {
1754 entry:
1755 %2 = insertelement <8 x float> %0, float %1, i32 1
1756 ret <8 x float> %2
1757 }
1758 ; CHECK-LABEL: define <4 x float> @insert_8xfloat_at_1(<4 x float>* nocapture no nnull dereferenceable(16), <4 x float>, <4 x float>, float) {
1759 ; CHECK: entry:
1760 ; CHECK-NEXT: %4 = insertelement <4 x float> %1, float %3, i32 1
1761 ; CHECK-NEXT: store <4 x float> %2, <4 x float>* %0, align 16
1762 ; CHECK-NEXT: ret <4 x float> %4
1763 ; CHECK-NEXT: }
1764
1765 define <8 x float> @insert_8xfloat_at_2(<8 x float>, float) {
1766 entry:
1767 %2 = insertelement <8 x float> %0, float %1, i32 2
1768 ret <8 x float> %2
1769 }
1770 ; CHECK-LABEL: define <4 x float> @insert_8xfloat_at_2(<4 x float>* nocapture no nnull dereferenceable(16), <4 x float>, <4 x float>, float) {
1771 ; CHECK: entry:
1772 ; CHECK-NEXT: %4 = insertelement <4 x float> %1, float %3, i32 2
1773 ; CHECK-NEXT: store <4 x float> %2, <4 x float>* %0, align 16
1774 ; CHECK-NEXT: ret <4 x float> %4
1775 ; CHECK-NEXT: }
1776
1777 define <8 x float> @insert_8xfloat_at_3(<8 x float>, float) {
1778 entry:
1779 %2 = insertelement <8 x float> %0, float %1, i32 3
1780 ret <8 x float> %2
1781 }
1782 ; CHECK-LABEL: define <4 x float> @insert_8xfloat_at_3(<4 x float>* nocapture no nnull dereferenceable(16), <4 x float>, <4 x float>, float) {
1783 ; CHECK: entry:
1784 ; CHECK-NEXT: %4 = insertelement <4 x float> %1, float %3, i32 3
1785 ; CHECK-NEXT: store <4 x float> %2, <4 x float>* %0, align 16
1786 ; CHECK-NEXT: ret <4 x float> %4
1787 ; CHECK-NEXT: }
1788
1789 define <8 x float> @insert_8xfloat_at_4(<8 x float>, float) {
1790 entry:
1791 %2 = insertelement <8 x float> %0, float %1, i32 4
1792 ret <8 x float> %2
1793 }
1794 ; CHECK-LABEL: define <4 x float> @insert_8xfloat_at_4(<4 x float>* nocapture no nnull dereferenceable(16), <4 x float>, <4 x float>, float) {
1795 ; CHECK: entry:
1796 ; CHECK-NEXT: %4 = insertelement <4 x float> %2, float %3, i32 0
1797 ; CHECK-NEXT: store <4 x float> %4, <4 x float>* %0, align 16
1798 ; CHECK-NEXT: ret <4 x float> %1
1799 ; CHECK-NEXT: }
1800
1801 define <8 x float> @insert_8xfloat_at_5(<8 x float>, float) {
1802 entry:
1803 %2 = insertelement <8 x float> %0, float %1, i32 5
1804 ret <8 x float> %2
1805 }
1806 ; CHECK-LABEL: define <4 x float> @insert_8xfloat_at_5(<4 x float>* nocapture no nnull dereferenceable(16), <4 x float>, <4 x float>, float) {
1807 ; CHECK: entry:
1808 ; CHECK-NEXT: %4 = insertelement <4 x float> %2, float %3, i32 1
1809 ; CHECK-NEXT: store <4 x float> %4, <4 x float>* %0, align 16
1810 ; CHECK-NEXT: ret <4 x float> %1
1811 ; CHECK-NEXT: }
1812
1813 define <8 x float> @insert_8xfloat_at_6(<8 x float>, float) {
1814 entry:
1815 %2 = insertelement <8 x float> %0, float %1, i32 6
1816 ret <8 x float> %2
1817 }
1818 ; CHECK-LABEL: define <4 x float> @insert_8xfloat_at_6(<4 x float>* nocapture no nnull dereferenceable(16), <4 x float>, <4 x float>, float) {
1819 ; CHECK: entry:
1820 ; CHECK-NEXT: %4 = insertelement <4 x float> %2, float %3, i32 2
1821 ; CHECK-NEXT: store <4 x float> %4, <4 x float>* %0, align 16
1822 ; CHECK-NEXT: ret <4 x float> %1
1823 ; CHECK-NEXT: }
1824
1825 define <8 x float> @insert_8xfloat_at_7(<8 x float>, float) {
1826 entry:
1827 %2 = insertelement <8 x float> %0, float %1, i32 7
1828 ret <8 x float> %2
1829 }
1830 ; CHECK-LABEL: define <4 x float> @insert_8xfloat_at_7(<4 x float>* nocapture no nnull dereferenceable(16), <4 x float>, <4 x float>, float) {
1831 ; CHECK: entry:
1832 ; CHECK-NEXT: %4 = insertelement <4 x float> %2, float %3, i32 3
1833 ; CHECK-NEXT: store <4 x float> %4, <4 x float>* %0, align 16
1834 ; CHECK-NEXT: ret <4 x float> %1
1835 ; CHECK-NEXT: }
1836
1837 define <8 x float> @insert_8xfloat_undef_idx(<8 x float>, float) {
1838 entry:
1839 %2 = insertelement <8 x float> %0, float %1, i32 8
1840 ret <8 x float> %2
1841 }
1842 ; CHECK-LABEL: define <4 x float> @insert_8xfloat_undef_idx(<4 x float>* nocaptu re nonnull dereferenceable(16), <4 x float>, <4 x float>, float) {
1843 ; CHECK: entry:
1844 ; CHECK-NEXT: store <4 x float> %2, <4 x float>* %0, align 16
1845 ; CHECK-NEXT: ret <4 x float> %1
1846 ; CHECK-NEXT: }
1847
1848 define <8 x double> @insert_8xdouble_at_0(<8 x double>, double) {
1849 entry:
1850 %2 = insertelement <8 x double> %0, double %1, i32 0
1851 ret <8 x double> %2
1852 }
1853 ; CHECK-LABEL: define <2 x double> @insert_8xdouble_at_0(<2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16 ), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x doubl e>, <2 x double>, <2 x double>, double) {
1854 ; CHECK: entry:
1855 ; CHECK-NEXT: %8 = insertelement <2 x double> %3, double %7, i32 0
1856 ; CHECK-NEXT: store <2 x double> %4, <2 x double>* %0, align 16
1857 ; CHECK-NEXT: store <2 x double> %5, <2 x double>* %1, align 16
1858 ; CHECK-NEXT: store <2 x double> %6, <2 x double>* %2, align 16
1859 ; CHECK-NEXT: ret <2 x double> %8
1860 ; CHECK-NEXT: }
1861
1862 define <8 x double> @insert_8xdouble_at_1(<8 x double>, double) {
1863 entry:
1864 %2 = insertelement <8 x double> %0, double %1, i32 1
1865 ret <8 x double> %2
1866 }
1867 ; CHECK-LABEL: define <2 x double> @insert_8xdouble_at_1(<2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16 ), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x doubl e>, <2 x double>, <2 x double>, double) {
1868 ; CHECK: entry:
1869 ; CHECK-NEXT: %8 = insertelement <2 x double> %3, double %7, i32 1
1870 ; CHECK-NEXT: store <2 x double> %4, <2 x double>* %0, align 16
1871 ; CHECK-NEXT: store <2 x double> %5, <2 x double>* %1, align 16
1872 ; CHECK-NEXT: store <2 x double> %6, <2 x double>* %2, align 16
1873 ; CHECK-NEXT: ret <2 x double> %8
1874 ; CHECK-NEXT: }
1875
1876 define <8 x double> @insert_8xdouble_at_2(<8 x double>, double) {
1877 entry:
1878 %2 = insertelement <8 x double> %0, double %1, i32 2
1879 ret <8 x double> %2
1880 }
1881 ; CHECK-LABEL: define <2 x double> @insert_8xdouble_at_2(<2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16 ), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x doubl e>, <2 x double>, <2 x double>, double) {
1882 ; CHECK: entry:
1883 ; CHECK-NEXT: %8 = insertelement <2 x double> %4, double %7, i32 0
1884 ; CHECK-NEXT: store <2 x double> %8, <2 x double>* %0, align 16
1885 ; CHECK-NEXT: store <2 x double> %5, <2 x double>* %1, align 16
1886 ; CHECK-NEXT: store <2 x double> %6, <2 x double>* %2, align 16
1887 ; CHECK-NEXT: ret <2 x double> %3
1888 ; CHECK-NEXT: }
1889
1890 define <8 x double> @insert_8xdouble_at_3(<8 x double>, double) {
1891 entry:
1892 %2 = insertelement <8 x double> %0, double %1, i32 3
1893 ret <8 x double> %2
1894 }
1895 ; CHECK-LABEL: define <2 x double> @insert_8xdouble_at_3(<2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16 ), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x doubl e>, <2 x double>, <2 x double>, double) {
1896 ; CHECK: entry:
1897 ; CHECK-NEXT: %8 = insertelement <2 x double> %4, double %7, i32 1
1898 ; CHECK-NEXT: store <2 x double> %8, <2 x double>* %0, align 16
1899 ; CHECK-NEXT: store <2 x double> %5, <2 x double>* %1, align 16
1900 ; CHECK-NEXT: store <2 x double> %6, <2 x double>* %2, align 16
1901 ; CHECK-NEXT: ret <2 x double> %3
1902 ; CHECK-NEXT: }
1903
1904 define <8 x double> @insert_8xdouble_at_4(<8 x double>, double) {
1905 entry:
1906 %2 = insertelement <8 x double> %0, double %1, i32 4
1907 ret <8 x double> %2
1908 }
1909 ; CHECK-LABEL: define <2 x double> @insert_8xdouble_at_4(<2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16 ), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x doubl e>, <2 x double>, <2 x double>, double) {
1910 ; CHECK: entry:
1911 ; CHECK-NEXT: %8 = insertelement <2 x double> %5, double %7, i32 0
1912 ; CHECK-NEXT: store <2 x double> %4, <2 x double>* %0, align 16
1913 ; CHECK-NEXT: store <2 x double> %8, <2 x double>* %1, align 16
1914 ; CHECK-NEXT: store <2 x double> %6, <2 x double>* %2, align 16
1915 ; CHECK-NEXT: ret <2 x double> %3
1916 ; CHECK-NEXT: }
1917
1918 define <8 x double> @insert_8xdouble_at_5(<8 x double>, double) {
1919 entry:
1920 %2 = insertelement <8 x double> %0, double %1, i32 5
1921 ret <8 x double> %2
1922 }
1923 ; CHECK-LABEL: define <2 x double> @insert_8xdouble_at_5(<2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16 ), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x doubl e>, <2 x double>, <2 x double>, double) {
1924 ; CHECK: entry:
1925 ; CHECK-NEXT: %8 = insertelement <2 x double> %5, double %7, i32 1
1926 ; CHECK-NEXT: store <2 x double> %4, <2 x double>* %0, align 16
1927 ; CHECK-NEXT: store <2 x double> %8, <2 x double>* %1, align 16
1928 ; CHECK-NEXT: store <2 x double> %6, <2 x double>* %2, align 16
1929 ; CHECK-NEXT: ret <2 x double> %3
1930 ; CHECK-NEXT: }
1931
1932 define <8 x double> @insert_8xdouble_at_6(<8 x double>, double) {
1933 entry:
1934 %2 = insertelement <8 x double> %0, double %1, i32 6
1935 ret <8 x double> %2
1936 }
1937 ; CHECK-LABEL: define <2 x double> @insert_8xdouble_at_6(<2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16 ), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x doubl e>, <2 x double>, <2 x double>, double) {
1938 ; CHECK: entry:
1939 ; CHECK-NEXT: %8 = insertelement <2 x double> %6, double %7, i32 0
1940 ; CHECK-NEXT: store <2 x double> %4, <2 x double>* %0, align 16
1941 ; CHECK-NEXT: store <2 x double> %5, <2 x double>* %1, align 16
1942 ; CHECK-NEXT: store <2 x double> %8, <2 x double>* %2, align 16
1943 ; CHECK-NEXT: ret <2 x double> %3
1944 ; CHECK-NEXT: }
1945
1946 define <8 x double> @insert_8xdouble_at_7(<8 x double>, double) {
1947 entry:
1948 %2 = insertelement <8 x double> %0, double %1, i32 7
1949 ret <8 x double> %2
1950 }
1951 ; CHECK-LABEL: define <2 x double> @insert_8xdouble_at_7(<2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16 ), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x doubl e>, <2 x double>, <2 x double>, double) {
1952 ; CHECK: entry:
1953 ; CHECK-NEXT: %8 = insertelement <2 x double> %6, double %7, i32 1
1954 ; CHECK-NEXT: store <2 x double> %4, <2 x double>* %0, align 16
1955 ; CHECK-NEXT: store <2 x double> %5, <2 x double>* %1, align 16
1956 ; CHECK-NEXT: store <2 x double> %8, <2 x double>* %2, align 16
1957 ; CHECK-NEXT: ret <2 x double> %3
1958 ; CHECK-NEXT: }
1959
1960 define <8 x double> @insert_8xdouble_undef_idx(<8 x double>, double) {
1961 entry:
1962 %2 = insertelement <8 x double> %0, double %1, i32 8
1963 ret <8 x double> %2
1964 }
1965 ; CHECK-LABEL: define <2 x double> @insert_8xdouble_undef_idx(<2 x double>* noca pture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceab le(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x double>, <2 x double>, <2 x double>, double) {
1966 ; CHECK: entry:
1967 ; CHECK-NEXT: store <2 x double> %4, <2 x double>* %0, align 16
1968 ; CHECK-NEXT: store <2 x double> %5, <2 x double>* %1, align 16
1969 ; CHECK-NEXT: store <2 x double> %6, <2 x double>* %2, align 16
1970 ; CHECK-NEXT: ret <2 x double> %3
1971 ; CHECK-NEXT: }
1972
1973 define <12 x i8> @insert_12xi8_at_0(<12 x i8>, i8) {
1974 entry:
1975 %2 = insertelement <12 x i8> %0, i8 %1, i32 0
1976 ret <12 x i8> %2
1977 }
1978 ; CHECK-LABEL: define <16 x i8> @insert_12xi8_at_0(<16 x i8>, i8) {
1979 ; CHECK: entry:
1980 ; CHECK-NEXT: %2 = insertelement <16 x i8> %0, i8 %1, i32 0
1981 ; CHECK-NEXT: ret <16 x i8> %2
1982 ; CHECK-NEXT: }
1983
1984 define <12 x i8> @insert_12xi8_at_1(<12 x i8>, i8) {
1985 entry:
1986 %2 = insertelement <12 x i8> %0, i8 %1, i32 1
1987 ret <12 x i8> %2
1988 }
1989 ; CHECK-LABEL: define <16 x i8> @insert_12xi8_at_1(<16 x i8>, i8) {
1990 ; CHECK: entry:
1991 ; CHECK-NEXT: %2 = insertelement <16 x i8> %0, i8 %1, i32 1
1992 ; CHECK-NEXT: ret <16 x i8> %2
1993 ; CHECK-NEXT: }
1994
1995 define <12 x i8> @insert_12xi8_at_2(<12 x i8>, i8) {
1996 entry:
1997 %2 = insertelement <12 x i8> %0, i8 %1, i32 2
1998 ret <12 x i8> %2
1999 }
2000 ; CHECK-LABEL: define <16 x i8> @insert_12xi8_at_2(<16 x i8>, i8) {
2001 ; CHECK: entry:
2002 ; CHECK-NEXT: %2 = insertelement <16 x i8> %0, i8 %1, i32 2
2003 ; CHECK-NEXT: ret <16 x i8> %2
2004 ; CHECK-NEXT: }
2005
2006 define <12 x i8> @insert_12xi8_at_3(<12 x i8>, i8) {
2007 entry:
2008 %2 = insertelement <12 x i8> %0, i8 %1, i32 3
2009 ret <12 x i8> %2
2010 }
2011 ; CHECK-LABEL: define <16 x i8> @insert_12xi8_at_3(<16 x i8>, i8) {
2012 ; CHECK: entry:
2013 ; CHECK-NEXT: %2 = insertelement <16 x i8> %0, i8 %1, i32 3
2014 ; CHECK-NEXT: ret <16 x i8> %2
2015 ; CHECK-NEXT: }
2016
2017 define <12 x i8> @insert_12xi8_at_4(<12 x i8>, i8) {
2018 entry:
2019 %2 = insertelement <12 x i8> %0, i8 %1, i32 4
2020 ret <12 x i8> %2
2021 }
2022 ; CHECK-LABEL: define <16 x i8> @insert_12xi8_at_4(<16 x i8>, i8) {
2023 ; CHECK: entry:
2024 ; CHECK-NEXT: %2 = insertelement <16 x i8> %0, i8 %1, i32 4
2025 ; CHECK-NEXT: ret <16 x i8> %2
2026 ; CHECK-NEXT: }
2027
2028 define <12 x i8> @insert_12xi8_at_5(<12 x i8>, i8) {
2029 entry:
2030 %2 = insertelement <12 x i8> %0, i8 %1, i32 5
2031 ret <12 x i8> %2
2032 }
2033 ; CHECK-LABEL: define <16 x i8> @insert_12xi8_at_5(<16 x i8>, i8) {
2034 ; CHECK: entry:
2035 ; CHECK-NEXT: %2 = insertelement <16 x i8> %0, i8 %1, i32 5
2036 ; CHECK-NEXT: ret <16 x i8> %2
2037 ; CHECK-NEXT: }
2038
2039 define <12 x i8> @insert_12xi8_at_6(<12 x i8>, i8) {
2040 entry:
2041 %2 = insertelement <12 x i8> %0, i8 %1, i32 6
2042 ret <12 x i8> %2
2043 }
2044 ; CHECK-LABEL: define <16 x i8> @insert_12xi8_at_6(<16 x i8>, i8) {
2045 ; CHECK: entry:
2046 ; CHECK-NEXT: %2 = insertelement <16 x i8> %0, i8 %1, i32 6
2047 ; CHECK-NEXT: ret <16 x i8> %2
2048 ; CHECK-NEXT: }
2049
2050 define <12 x i8> @insert_12xi8_at_7(<12 x i8>, i8) {
2051 entry:
2052 %2 = insertelement <12 x i8> %0, i8 %1, i32 7
2053 ret <12 x i8> %2
2054 }
2055 ; CHECK-LABEL: define <16 x i8> @insert_12xi8_at_7(<16 x i8>, i8) {
2056 ; CHECK: entry:
2057 ; CHECK-NEXT: %2 = insertelement <16 x i8> %0, i8 %1, i32 7
2058 ; CHECK-NEXT: ret <16 x i8> %2
2059 ; CHECK-NEXT: }
2060
2061 define <12 x i8> @insert_12xi8_at_8(<12 x i8>, i8) {
2062 entry:
2063 %2 = insertelement <12 x i8> %0, i8 %1, i32 8
2064 ret <12 x i8> %2
2065 }
2066 ; CHECK-LABEL: define <16 x i8> @insert_12xi8_at_8(<16 x i8>, i8) {
2067 ; CHECK: entry:
2068 ; CHECK-NEXT: %2 = insertelement <16 x i8> %0, i8 %1, i32 8
2069 ; CHECK-NEXT: ret <16 x i8> %2
2070 ; CHECK-NEXT: }
2071
2072 define <12 x i8> @insert_12xi8_at_9(<12 x i8>, i8) {
2073 entry:
2074 %2 = insertelement <12 x i8> %0, i8 %1, i32 9
2075 ret <12 x i8> %2
2076 }
2077 ; CHECK-LABEL: define <16 x i8> @insert_12xi8_at_9(<16 x i8>, i8) {
2078 ; CHECK: entry:
2079 ; CHECK-NEXT: %2 = insertelement <16 x i8> %0, i8 %1, i32 9
2080 ; CHECK-NEXT: ret <16 x i8> %2
2081 ; CHECK-NEXT: }
2082
2083 define <12 x i8> @insert_12xi8_at_10(<12 x i8>, i8) {
2084 entry:
2085 %2 = insertelement <12 x i8> %0, i8 %1, i32 10
2086 ret <12 x i8> %2
2087 }
2088 ; CHECK-LABEL: define <16 x i8> @insert_12xi8_at_10(<16 x i8>, i8) {
2089 ; CHECK: entry:
2090 ; CHECK-NEXT: %2 = insertelement <16 x i8> %0, i8 %1, i32 10
2091 ; CHECK-NEXT: ret <16 x i8> %2
2092 ; CHECK-NEXT: }
2093
2094 define <12 x i8> @insert_12xi8_at_11(<12 x i8>, i8) {
2095 entry:
2096 %2 = insertelement <12 x i8> %0, i8 %1, i32 11
2097 ret <12 x i8> %2
2098 }
2099 ; CHECK-LABEL: define <16 x i8> @insert_12xi8_at_11(<16 x i8>, i8) {
2100 ; CHECK: entry:
2101 ; CHECK-NEXT: %2 = insertelement <16 x i8> %0, i8 %1, i32 11
2102 ; CHECK-NEXT: ret <16 x i8> %2
2103 ; CHECK-NEXT: }
2104
2105 define <12 x i8> @insert_12xi8_undef_idx(<12 x i8>, i8) {
2106 entry:
2107 %2 = insertelement <12 x i8> %0, i8 %1, i32 12
2108 ret <12 x i8> %2
2109 }
2110 ; CHECK-LABEL: define <16 x i8> @insert_12xi8_undef_idx(<16 x i8>, i8) {
2111 ; CHECK: entry:
2112 ; CHECK-NEXT: ret <16 x i8> %0
2113 ; CHECK-NEXT: }
2114
2115 define <12 x i16> @insert_12xi16_at_0(<12 x i16>, i16) {
2116 entry:
2117 %2 = insertelement <12 x i16> %0, i16 %1, i32 0
2118 ret <12 x i16> %2
2119 }
2120 ; CHECK-LABEL: define <8 x i16> @insert_12xi16_at_0(<8 x i16>* nocapture nonnull dereferenceable(16), <8 x i16>, <8 x i16>, i16) {
2121 ; CHECK: entry:
2122 ; CHECK-NEXT: %4 = insertelement <8 x i16> %1, i16 %3, i32 0
2123 ; CHECK-NEXT: store <8 x i16> %2, <8 x i16>* %0, align 16
2124 ; CHECK-NEXT: ret <8 x i16> %4
2125 ; CHECK-NEXT: }
2126
2127 define <12 x i16> @insert_12xi16_at_1(<12 x i16>, i16) {
2128 entry:
2129 %2 = insertelement <12 x i16> %0, i16 %1, i32 1
2130 ret <12 x i16> %2
2131 }
2132 ; CHECK-LABEL: define <8 x i16> @insert_12xi16_at_1(<8 x i16>* nocapture nonnull dereferenceable(16), <8 x i16>, <8 x i16>, i16) {
2133 ; CHECK: entry:
2134 ; CHECK-NEXT: %4 = insertelement <8 x i16> %1, i16 %3, i32 1
2135 ; CHECK-NEXT: store <8 x i16> %2, <8 x i16>* %0, align 16
2136 ; CHECK-NEXT: ret <8 x i16> %4
2137 ; CHECK-NEXT: }
2138
2139 define <12 x i16> @insert_12xi16_at_2(<12 x i16>, i16) {
2140 entry:
2141 %2 = insertelement <12 x i16> %0, i16 %1, i32 2
2142 ret <12 x i16> %2
2143 }
2144 ; CHECK-LABEL: define <8 x i16> @insert_12xi16_at_2(<8 x i16>* nocapture nonnull dereferenceable(16), <8 x i16>, <8 x i16>, i16) {
2145 ; CHECK: entry:
2146 ; CHECK-NEXT: %4 = insertelement <8 x i16> %1, i16 %3, i32 2
2147 ; CHECK-NEXT: store <8 x i16> %2, <8 x i16>* %0, align 16
2148 ; CHECK-NEXT: ret <8 x i16> %4
2149 ; CHECK-NEXT: }
2150
2151 define <12 x i16> @insert_12xi16_at_3(<12 x i16>, i16) {
2152 entry:
2153 %2 = insertelement <12 x i16> %0, i16 %1, i32 3
2154 ret <12 x i16> %2
2155 }
2156 ; CHECK-LABEL: define <8 x i16> @insert_12xi16_at_3(<8 x i16>* nocapture nonnull dereferenceable(16), <8 x i16>, <8 x i16>, i16) {
2157 ; CHECK: entry:
2158 ; CHECK-NEXT: %4 = insertelement <8 x i16> %1, i16 %3, i32 3
2159 ; CHECK-NEXT: store <8 x i16> %2, <8 x i16>* %0, align 16
2160 ; CHECK-NEXT: ret <8 x i16> %4
2161 ; CHECK-NEXT: }
2162
2163 define <12 x i16> @insert_12xi16_at_4(<12 x i16>, i16) {
2164 entry:
2165 %2 = insertelement <12 x i16> %0, i16 %1, i32 4
2166 ret <12 x i16> %2
2167 }
2168 ; CHECK-LABEL: define <8 x i16> @insert_12xi16_at_4(<8 x i16>* nocapture nonnull dereferenceable(16), <8 x i16>, <8 x i16>, i16) {
2169 ; CHECK: entry:
2170 ; CHECK-NEXT: %4 = insertelement <8 x i16> %1, i16 %3, i32 4
2171 ; CHECK-NEXT: store <8 x i16> %2, <8 x i16>* %0, align 16
2172 ; CHECK-NEXT: ret <8 x i16> %4
2173 ; CHECK-NEXT: }
2174
2175 define <12 x i16> @insert_12xi16_at_5(<12 x i16>, i16) {
2176 entry:
2177 %2 = insertelement <12 x i16> %0, i16 %1, i32 5
2178 ret <12 x i16> %2
2179 }
2180 ; CHECK-LABEL: define <8 x i16> @insert_12xi16_at_5(<8 x i16>* nocapture nonnull dereferenceable(16), <8 x i16>, <8 x i16>, i16) {
2181 ; CHECK: entry:
2182 ; CHECK-NEXT: %4 = insertelement <8 x i16> %1, i16 %3, i32 5
2183 ; CHECK-NEXT: store <8 x i16> %2, <8 x i16>* %0, align 16
2184 ; CHECK-NEXT: ret <8 x i16> %4
2185 ; CHECK-NEXT: }
2186
2187 define <12 x i16> @insert_12xi16_at_6(<12 x i16>, i16) {
2188 entry:
2189 %2 = insertelement <12 x i16> %0, i16 %1, i32 6
2190 ret <12 x i16> %2
2191 }
2192 ; CHECK-LABEL: define <8 x i16> @insert_12xi16_at_6(<8 x i16>* nocapture nonnull dereferenceable(16), <8 x i16>, <8 x i16>, i16) {
2193 ; CHECK: entry:
2194 ; CHECK-NEXT: %4 = insertelement <8 x i16> %1, i16 %3, i32 6
2195 ; CHECK-NEXT: store <8 x i16> %2, <8 x i16>* %0, align 16
2196 ; CHECK-NEXT: ret <8 x i16> %4
2197 ; CHECK-NEXT: }
2198
2199 define <12 x i16> @insert_12xi16_at_7(<12 x i16>, i16) {
2200 entry:
2201 %2 = insertelement <12 x i16> %0, i16 %1, i32 7
2202 ret <12 x i16> %2
2203 }
2204 ; CHECK-LABEL: define <8 x i16> @insert_12xi16_at_7(<8 x i16>* nocapture nonnull dereferenceable(16), <8 x i16>, <8 x i16>, i16) {
2205 ; CHECK: entry:
2206 ; CHECK-NEXT: %4 = insertelement <8 x i16> %1, i16 %3, i32 7
2207 ; CHECK-NEXT: store <8 x i16> %2, <8 x i16>* %0, align 16
2208 ; CHECK-NEXT: ret <8 x i16> %4
2209 ; CHECK-NEXT: }
2210
2211 define <12 x i16> @insert_12xi16_at_8(<12 x i16>, i16) {
2212 entry:
2213 %2 = insertelement <12 x i16> %0, i16 %1, i32 8
2214 ret <12 x i16> %2
2215 }
2216 ; CHECK-LABEL: define <8 x i16> @insert_12xi16_at_8(<8 x i16>* nocapture nonnull dereferenceable(16), <8 x i16>, <8 x i16>, i16) {
2217 ; CHECK: entry:
2218 ; CHECK-NEXT: %4 = insertelement <8 x i16> %2, i16 %3, i32 0
2219 ; CHECK-NEXT: store <8 x i16> %4, <8 x i16>* %0, align 16
2220 ; CHECK-NEXT: ret <8 x i16> %1
2221 ; CHECK-NEXT: }
2222
2223 define <12 x i16> @insert_12xi16_at_9(<12 x i16>, i16) {
2224 entry:
2225 %2 = insertelement <12 x i16> %0, i16 %1, i32 9
2226 ret <12 x i16> %2
2227 }
2228 ; CHECK-LABEL: define <8 x i16> @insert_12xi16_at_9(<8 x i16>* nocapture nonnull dereferenceable(16), <8 x i16>, <8 x i16>, i16) {
2229 ; CHECK: entry:
2230 ; CHECK-NEXT: %4 = insertelement <8 x i16> %2, i16 %3, i32 1
2231 ; CHECK-NEXT: store <8 x i16> %4, <8 x i16>* %0, align 16
2232 ; CHECK-NEXT: ret <8 x i16> %1
2233 ; CHECK-NEXT: }
2234
2235 define <12 x i16> @insert_12xi16_at_10(<12 x i16>, i16) {
2236 entry:
2237 %2 = insertelement <12 x i16> %0, i16 %1, i32 10
2238 ret <12 x i16> %2
2239 }
2240 ; CHECK-LABEL: define <8 x i16> @insert_12xi16_at_10(<8 x i16>* nocapture nonnul l dereferenceable(16), <8 x i16>, <8 x i16>, i16) {
2241 ; CHECK: entry:
2242 ; CHECK-NEXT: %4 = insertelement <8 x i16> %2, i16 %3, i32 2
2243 ; CHECK-NEXT: store <8 x i16> %4, <8 x i16>* %0, align 16
2244 ; CHECK-NEXT: ret <8 x i16> %1
2245 ; CHECK-NEXT: }
2246
2247 define <12 x i16> @insert_12xi16_at_11(<12 x i16>, i16) {
2248 entry:
2249 %2 = insertelement <12 x i16> %0, i16 %1, i32 11
2250 ret <12 x i16> %2
2251 }
2252 ; CHECK-LABEL: define <8 x i16> @insert_12xi16_at_11(<8 x i16>* nocapture nonnul l dereferenceable(16), <8 x i16>, <8 x i16>, i16) {
2253 ; CHECK: entry:
2254 ; CHECK-NEXT: %4 = insertelement <8 x i16> %2, i16 %3, i32 3
2255 ; CHECK-NEXT: store <8 x i16> %4, <8 x i16>* %0, align 16
2256 ; CHECK-NEXT: ret <8 x i16> %1
2257 ; CHECK-NEXT: }
2258
2259 define <12 x i16> @insert_12xi16_undef_idx(<12 x i16>, i16) {
2260 entry:
2261 %2 = insertelement <12 x i16> %0, i16 %1, i32 12
2262 ret <12 x i16> %2
2263 }
2264 ; CHECK-LABEL: define <8 x i16> @insert_12xi16_undef_idx(<8 x i16>* nocapture no nnull dereferenceable(16), <8 x i16>, <8 x i16>, i16) {
2265 ; CHECK: entry:
2266 ; CHECK-NEXT: store <8 x i16> %2, <8 x i16>* %0, align 16
2267 ; CHECK-NEXT: ret <8 x i16> %1
2268 ; CHECK-NEXT: }
2269
2270 define <12 x i32> @insert_12xi32_at_0(<12 x i32>, i32) {
2271 entry:
2272 %2 = insertelement <12 x i32> %0, i32 %1, i32 0
2273 ret <12 x i32> %2
2274 }
2275 ; CHECK-LABEL: define <4 x i32> @insert_12xi32_at_0(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32 >, <4 x i32>, <4 x i32>, i32) {
2276 ; CHECK: entry:
2277 ; CHECK-NEXT: %6 = insertelement <4 x i32> %2, i32 %5, i32 0
2278 ; CHECK-NEXT: store <4 x i32> %3, <4 x i32>* %0, align 16
2279 ; CHECK-NEXT: store <4 x i32> %4, <4 x i32>* %1, align 16
2280 ; CHECK-NEXT: ret <4 x i32> %6
2281 ; CHECK-NEXT: }
2282
2283 define <12 x i32> @insert_12xi32_at_1(<12 x i32>, i32) {
2284 entry:
2285 %2 = insertelement <12 x i32> %0, i32 %1, i32 1
2286 ret <12 x i32> %2
2287 }
2288 ; CHECK-LABEL: define <4 x i32> @insert_12xi32_at_1(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32 >, <4 x i32>, <4 x i32>, i32) {
2289 ; CHECK: entry:
2290 ; CHECK-NEXT: %6 = insertelement <4 x i32> %2, i32 %5, i32 1
2291 ; CHECK-NEXT: store <4 x i32> %3, <4 x i32>* %0, align 16
2292 ; CHECK-NEXT: store <4 x i32> %4, <4 x i32>* %1, align 16
2293 ; CHECK-NEXT: ret <4 x i32> %6
2294 ; CHECK-NEXT: }
2295
2296 define <12 x i32> @insert_12xi32_at_2(<12 x i32>, i32) {
2297 entry:
2298 %2 = insertelement <12 x i32> %0, i32 %1, i32 2
2299 ret <12 x i32> %2
2300 }
2301 ; CHECK-LABEL: define <4 x i32> @insert_12xi32_at_2(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32 >, <4 x i32>, <4 x i32>, i32) {
2302 ; CHECK: entry:
2303 ; CHECK-NEXT: %6 = insertelement <4 x i32> %2, i32 %5, i32 2
2304 ; CHECK-NEXT: store <4 x i32> %3, <4 x i32>* %0, align 16
2305 ; CHECK-NEXT: store <4 x i32> %4, <4 x i32>* %1, align 16
2306 ; CHECK-NEXT: ret <4 x i32> %6
2307 ; CHECK-NEXT: }
2308
2309 define <12 x i32> @insert_12xi32_at_3(<12 x i32>, i32) {
2310 entry:
2311 %2 = insertelement <12 x i32> %0, i32 %1, i32 3
2312 ret <12 x i32> %2
2313 }
2314 ; CHECK-LABEL: define <4 x i32> @insert_12xi32_at_3(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32 >, <4 x i32>, <4 x i32>, i32) {
2315 ; CHECK: entry:
2316 ; CHECK-NEXT: %6 = insertelement <4 x i32> %2, i32 %5, i32 3
2317 ; CHECK-NEXT: store <4 x i32> %3, <4 x i32>* %0, align 16
2318 ; CHECK-NEXT: store <4 x i32> %4, <4 x i32>* %1, align 16
2319 ; CHECK-NEXT: ret <4 x i32> %6
2320 ; CHECK-NEXT: }
2321
2322 define <12 x i32> @insert_12xi32_at_4(<12 x i32>, i32) {
2323 entry:
2324 %2 = insertelement <12 x i32> %0, i32 %1, i32 4
2325 ret <12 x i32> %2
2326 }
2327 ; CHECK-LABEL: define <4 x i32> @insert_12xi32_at_4(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32 >, <4 x i32>, <4 x i32>, i32) {
2328 ; CHECK: entry:
2329 ; CHECK-NEXT: %6 = insertelement <4 x i32> %3, i32 %5, i32 0
2330 ; CHECK-NEXT: store <4 x i32> %6, <4 x i32>* %0, align 16
2331 ; CHECK-NEXT: store <4 x i32> %4, <4 x i32>* %1, align 16
2332 ; CHECK-NEXT: ret <4 x i32> %2
2333 ; CHECK-NEXT: }
2334
2335 define <12 x i32> @insert_12xi32_at_5(<12 x i32>, i32) {
2336 entry:
2337 %2 = insertelement <12 x i32> %0, i32 %1, i32 5
2338 ret <12 x i32> %2
2339 }
2340 ; CHECK-LABEL: define <4 x i32> @insert_12xi32_at_5(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32 >, <4 x i32>, <4 x i32>, i32) {
2341 ; CHECK: entry:
2342 ; CHECK-NEXT: %6 = insertelement <4 x i32> %3, i32 %5, i32 1
2343 ; CHECK-NEXT: store <4 x i32> %6, <4 x i32>* %0, align 16
2344 ; CHECK-NEXT: store <4 x i32> %4, <4 x i32>* %1, align 16
2345 ; CHECK-NEXT: ret <4 x i32> %2
2346 ; CHECK-NEXT: }
2347
2348 define <12 x i32> @insert_12xi32_at_6(<12 x i32>, i32) {
2349 entry:
2350 %2 = insertelement <12 x i32> %0, i32 %1, i32 6
2351 ret <12 x i32> %2
2352 }
2353 ; CHECK-LABEL: define <4 x i32> @insert_12xi32_at_6(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32 >, <4 x i32>, <4 x i32>, i32) {
2354 ; CHECK: entry:
2355 ; CHECK-NEXT: %6 = insertelement <4 x i32> %3, i32 %5, i32 2
2356 ; CHECK-NEXT: store <4 x i32> %6, <4 x i32>* %0, align 16
2357 ; CHECK-NEXT: store <4 x i32> %4, <4 x i32>* %1, align 16
2358 ; CHECK-NEXT: ret <4 x i32> %2
2359 ; CHECK-NEXT: }
2360
2361 define <12 x i32> @insert_12xi32_at_7(<12 x i32>, i32) {
2362 entry:
2363 %2 = insertelement <12 x i32> %0, i32 %1, i32 7
2364 ret <12 x i32> %2
2365 }
2366 ; CHECK-LABEL: define <4 x i32> @insert_12xi32_at_7(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32 >, <4 x i32>, <4 x i32>, i32) {
2367 ; CHECK: entry:
2368 ; CHECK-NEXT: %6 = insertelement <4 x i32> %3, i32 %5, i32 3
2369 ; CHECK-NEXT: store <4 x i32> %6, <4 x i32>* %0, align 16
2370 ; CHECK-NEXT: store <4 x i32> %4, <4 x i32>* %1, align 16
2371 ; CHECK-NEXT: ret <4 x i32> %2
2372 ; CHECK-NEXT: }
2373
2374 define <12 x i32> @insert_12xi32_at_8(<12 x i32>, i32) {
2375 entry:
2376 %2 = insertelement <12 x i32> %0, i32 %1, i32 8
2377 ret <12 x i32> %2
2378 }
2379 ; CHECK-LABEL: define <4 x i32> @insert_12xi32_at_8(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32 >, <4 x i32>, <4 x i32>, i32) {
2380 ; CHECK: entry:
2381 ; CHECK-NEXT: %6 = insertelement <4 x i32> %4, i32 %5, i32 0
2382 ; CHECK-NEXT: store <4 x i32> %3, <4 x i32>* %0, align 16
2383 ; CHECK-NEXT: store <4 x i32> %6, <4 x i32>* %1, align 16
2384 ; CHECK-NEXT: ret <4 x i32> %2
2385 ; CHECK-NEXT: }
2386
2387 define <12 x i32> @insert_12xi32_at_9(<12 x i32>, i32) {
2388 entry:
2389 %2 = insertelement <12 x i32> %0, i32 %1, i32 9
2390 ret <12 x i32> %2
2391 }
2392 ; CHECK-LABEL: define <4 x i32> @insert_12xi32_at_9(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32 >, <4 x i32>, <4 x i32>, i32) {
2393 ; CHECK: entry:
2394 ; CHECK-NEXT: %6 = insertelement <4 x i32> %4, i32 %5, i32 1
2395 ; CHECK-NEXT: store <4 x i32> %3, <4 x i32>* %0, align 16
2396 ; CHECK-NEXT: store <4 x i32> %6, <4 x i32>* %1, align 16
2397 ; CHECK-NEXT: ret <4 x i32> %2
2398 ; CHECK-NEXT: }
2399
2400 define <12 x i32> @insert_12xi32_at_10(<12 x i32>, i32) {
2401 entry:
2402 %2 = insertelement <12 x i32> %0, i32 %1, i32 10
2403 ret <12 x i32> %2
2404 }
2405 ; CHECK-LABEL: define <4 x i32> @insert_12xi32_at_10(<4 x i32>* nocapture nonnul l dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i3 2>, <4 x i32>, <4 x i32>, i32) {
2406 ; CHECK: entry:
2407 ; CHECK-NEXT: %6 = insertelement <4 x i32> %4, i32 %5, i32 2
2408 ; CHECK-NEXT: store <4 x i32> %3, <4 x i32>* %0, align 16
2409 ; CHECK-NEXT: store <4 x i32> %6, <4 x i32>* %1, align 16
2410 ; CHECK-NEXT: ret <4 x i32> %2
2411 ; CHECK-NEXT: }
2412
2413 define <12 x i32> @insert_12xi32_at_11(<12 x i32>, i32) {
2414 entry:
2415 %2 = insertelement <12 x i32> %0, i32 %1, i32 11
2416 ret <12 x i32> %2
2417 }
2418 ; CHECK-LABEL: define <4 x i32> @insert_12xi32_at_11(<4 x i32>* nocapture nonnul l dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i3 2>, <4 x i32>, <4 x i32>, i32) {
2419 ; CHECK: entry:
2420 ; CHECK-NEXT: %6 = insertelement <4 x i32> %4, i32 %5, i32 3
2421 ; CHECK-NEXT: store <4 x i32> %3, <4 x i32>* %0, align 16
2422 ; CHECK-NEXT: store <4 x i32> %6, <4 x i32>* %1, align 16
2423 ; CHECK-NEXT: ret <4 x i32> %2
2424 ; CHECK-NEXT: }
2425
2426 define <12 x i32> @insert_12xi32_undef_idx(<12 x i32>, i32) {
2427 entry:
2428 %2 = insertelement <12 x i32> %0, i32 %1, i32 12
2429 ret <12 x i32> %2
2430 }
2431 ; CHECK-LABEL: define <4 x i32> @insert_12xi32_undef_idx(<4 x i32>* nocapture no nnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, i32) {
2432 ; CHECK: entry:
2433 ; CHECK-NEXT: store <4 x i32> %3, <4 x i32>* %0, align 16
2434 ; CHECK-NEXT: store <4 x i32> %4, <4 x i32>* %1, align 16
2435 ; CHECK-NEXT: ret <4 x i32> %2
2436 ; CHECK-NEXT: }
2437
2438 define <12 x i64> @insert_12xi64_at_0(<12 x i64>, i64) {
2439 entry:
2440 %2 = insertelement <12 x i64> %0, i64 %1, i32 0
2441 ret <12 x i64> %2
2442 }
2443 ; CHECK-LABEL: define <2 x i64> @insert_12xi64_at_0(<2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64 >* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferen ceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>, <2 x i6 4>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, i64) {
2444 ; CHECK: entry:
2445 ; CHECK-NEXT: %12 = insertelement <2 x i64> %5, i64 %11, i32 0
2446 ; CHECK-NEXT: store <2 x i64> %6, <2 x i64>* %0, align 16
2447 ; CHECK-NEXT: store <2 x i64> %7, <2 x i64>* %1, align 16
2448 ; CHECK-NEXT: store <2 x i64> %8, <2 x i64>* %2, align 16
2449 ; CHECK-NEXT: store <2 x i64> %9, <2 x i64>* %3, align 16
2450 ; CHECK-NEXT: store <2 x i64> %10, <2 x i64>* %4, align 16
2451 ; CHECK-NEXT: ret <2 x i64> %12
2452 ; CHECK-NEXT: }
2453
2454 define <12 x i64> @insert_12xi64_at_1(<12 x i64>, i64) {
2455 entry:
2456 %2 = insertelement <12 x i64> %0, i64 %1, i32 1
2457 ret <12 x i64> %2
2458 }
2459 ; CHECK-LABEL: define <2 x i64> @insert_12xi64_at_1(<2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64 >* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferen ceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>, <2 x i6 4>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, i64) {
2460 ; CHECK: entry:
2461 ; CHECK-NEXT: %12 = insertelement <2 x i64> %5, i64 %11, i32 1
2462 ; CHECK-NEXT: store <2 x i64> %6, <2 x i64>* %0, align 16
2463 ; CHECK-NEXT: store <2 x i64> %7, <2 x i64>* %1, align 16
2464 ; CHECK-NEXT: store <2 x i64> %8, <2 x i64>* %2, align 16
2465 ; CHECK-NEXT: store <2 x i64> %9, <2 x i64>* %3, align 16
2466 ; CHECK-NEXT: store <2 x i64> %10, <2 x i64>* %4, align 16
2467 ; CHECK-NEXT: ret <2 x i64> %12
2468 ; CHECK-NEXT: }
2469
2470 define <12 x i64> @insert_12xi64_at_2(<12 x i64>, i64) {
2471 entry:
2472 %2 = insertelement <12 x i64> %0, i64 %1, i32 2
2473 ret <12 x i64> %2
2474 }
2475 ; CHECK-LABEL: define <2 x i64> @insert_12xi64_at_2(<2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64 >* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferen ceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>, <2 x i6 4>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, i64) {
2476 ; CHECK: entry:
2477 ; CHECK-NEXT: %12 = insertelement <2 x i64> %6, i64 %11, i32 0
2478 ; CHECK-NEXT: store <2 x i64> %12, <2 x i64>* %0, align 16
2479 ; CHECK-NEXT: store <2 x i64> %7, <2 x i64>* %1, align 16
2480 ; CHECK-NEXT: store <2 x i64> %8, <2 x i64>* %2, align 16
2481 ; CHECK-NEXT: store <2 x i64> %9, <2 x i64>* %3, align 16
2482 ; CHECK-NEXT: store <2 x i64> %10, <2 x i64>* %4, align 16
2483 ; CHECK-NEXT: ret <2 x i64> %5
2484 ; CHECK-NEXT: }
2485
2486 define <12 x i64> @insert_12xi64_at_3(<12 x i64>, i64) {
2487 entry:
2488 %2 = insertelement <12 x i64> %0, i64 %1, i32 3
2489 ret <12 x i64> %2
2490 }
2491 ; CHECK-LABEL: define <2 x i64> @insert_12xi64_at_3(<2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64 >* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferen ceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>, <2 x i6 4>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, i64) {
2492 ; CHECK: entry:
2493 ; CHECK-NEXT: %12 = insertelement <2 x i64> %6, i64 %11, i32 1
2494 ; CHECK-NEXT: store <2 x i64> %12, <2 x i64>* %0, align 16
2495 ; CHECK-NEXT: store <2 x i64> %7, <2 x i64>* %1, align 16
2496 ; CHECK-NEXT: store <2 x i64> %8, <2 x i64>* %2, align 16
2497 ; CHECK-NEXT: store <2 x i64> %9, <2 x i64>* %3, align 16
2498 ; CHECK-NEXT: store <2 x i64> %10, <2 x i64>* %4, align 16
2499 ; CHECK-NEXT: ret <2 x i64> %5
2500 ; CHECK-NEXT: }
2501
2502 define <12 x i64> @insert_12xi64_at_4(<12 x i64>, i64) {
2503 entry:
2504 %2 = insertelement <12 x i64> %0, i64 %1, i32 4
2505 ret <12 x i64> %2
2506 }
2507 ; CHECK-LABEL: define <2 x i64> @insert_12xi64_at_4(<2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64 >* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferen ceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>, <2 x i6 4>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, i64) {
2508 ; CHECK: entry:
2509 ; CHECK-NEXT: %12 = insertelement <2 x i64> %7, i64 %11, i32 0
2510 ; CHECK-NEXT: store <2 x i64> %6, <2 x i64>* %0, align 16
2511 ; CHECK-NEXT: store <2 x i64> %12, <2 x i64>* %1, align 16
2512 ; CHECK-NEXT: store <2 x i64> %8, <2 x i64>* %2, align 16
2513 ; CHECK-NEXT: store <2 x i64> %9, <2 x i64>* %3, align 16
2514 ; CHECK-NEXT: store <2 x i64> %10, <2 x i64>* %4, align 16
2515 ; CHECK-NEXT: ret <2 x i64> %5
2516 ; CHECK-NEXT: }
2517
2518 define <12 x i64> @insert_12xi64_at_5(<12 x i64>, i64) {
2519 entry:
2520 %2 = insertelement <12 x i64> %0, i64 %1, i32 5
2521 ret <12 x i64> %2
2522 }
2523 ; CHECK-LABEL: define <2 x i64> @insert_12xi64_at_5(<2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64 >* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferen ceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>, <2 x i6 4>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, i64) {
2524 ; CHECK: entry:
2525 ; CHECK-NEXT: %12 = insertelement <2 x i64> %7, i64 %11, i32 1
2526 ; CHECK-NEXT: store <2 x i64> %6, <2 x i64>* %0, align 16
2527 ; CHECK-NEXT: store <2 x i64> %12, <2 x i64>* %1, align 16
2528 ; CHECK-NEXT: store <2 x i64> %8, <2 x i64>* %2, align 16
2529 ; CHECK-NEXT: store <2 x i64> %9, <2 x i64>* %3, align 16
2530 ; CHECK-NEXT: store <2 x i64> %10, <2 x i64>* %4, align 16
2531 ; CHECK-NEXT: ret <2 x i64> %5
2532 ; CHECK-NEXT: }
2533
2534 define <12 x i64> @insert_12xi64_at_6(<12 x i64>, i64) {
2535 entry:
2536 %2 = insertelement <12 x i64> %0, i64 %1, i32 6
2537 ret <12 x i64> %2
2538 }
2539 ; CHECK-LABEL: define <2 x i64> @insert_12xi64_at_6(<2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64 >* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferen ceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>, <2 x i6 4>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, i64) {
2540 ; CHECK: entry:
2541 ; CHECK-NEXT: %12 = insertelement <2 x i64> %8, i64 %11, i32 0
2542 ; CHECK-NEXT: store <2 x i64> %6, <2 x i64>* %0, align 16
2543 ; CHECK-NEXT: store <2 x i64> %7, <2 x i64>* %1, align 16
2544 ; CHECK-NEXT: store <2 x i64> %12, <2 x i64>* %2, align 16
2545 ; CHECK-NEXT: store <2 x i64> %9, <2 x i64>* %3, align 16
2546 ; CHECK-NEXT: store <2 x i64> %10, <2 x i64>* %4, align 16
2547 ; CHECK-NEXT: ret <2 x i64> %5
2548 ; CHECK-NEXT: }
2549
2550 define <12 x i64> @insert_12xi64_at_7(<12 x i64>, i64) {
2551 entry:
2552 %2 = insertelement <12 x i64> %0, i64 %1, i32 7
2553 ret <12 x i64> %2
2554 }
2555 ; CHECK-LABEL: define <2 x i64> @insert_12xi64_at_7(<2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64 >* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferen ceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>, <2 x i6 4>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, i64) {
2556 ; CHECK: entry:
2557 ; CHECK-NEXT: %12 = insertelement <2 x i64> %8, i64 %11, i32 1
2558 ; CHECK-NEXT: store <2 x i64> %6, <2 x i64>* %0, align 16
2559 ; CHECK-NEXT: store <2 x i64> %7, <2 x i64>* %1, align 16
2560 ; CHECK-NEXT: store <2 x i64> %12, <2 x i64>* %2, align 16
2561 ; CHECK-NEXT: store <2 x i64> %9, <2 x i64>* %3, align 16
2562 ; CHECK-NEXT: store <2 x i64> %10, <2 x i64>* %4, align 16
2563 ; CHECK-NEXT: ret <2 x i64> %5
2564 ; CHECK-NEXT: }
2565
2566 define <12 x i64> @insert_12xi64_at_8(<12 x i64>, i64) {
2567 entry:
2568 %2 = insertelement <12 x i64> %0, i64 %1, i32 8
2569 ret <12 x i64> %2
2570 }
2571 ; CHECK-LABEL: define <2 x i64> @insert_12xi64_at_8(<2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64 >* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferen ceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>, <2 x i6 4>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, i64) {
2572 ; CHECK: entry:
2573 ; CHECK-NEXT: %12 = insertelement <2 x i64> %9, i64 %11, i32 0
2574 ; CHECK-NEXT: store <2 x i64> %6, <2 x i64>* %0, align 16
2575 ; CHECK-NEXT: store <2 x i64> %7, <2 x i64>* %1, align 16
2576 ; CHECK-NEXT: store <2 x i64> %8, <2 x i64>* %2, align 16
2577 ; CHECK-NEXT: store <2 x i64> %12, <2 x i64>* %3, align 16
2578 ; CHECK-NEXT: store <2 x i64> %10, <2 x i64>* %4, align 16
2579 ; CHECK-NEXT: ret <2 x i64> %5
2580 ; CHECK-NEXT: }
2581
2582 define <12 x i64> @insert_12xi64_at_9(<12 x i64>, i64) {
2583 entry:
2584 %2 = insertelement <12 x i64> %0, i64 %1, i32 9
2585 ret <12 x i64> %2
2586 }
2587 ; CHECK-LABEL: define <2 x i64> @insert_12xi64_at_9(<2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64 >* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferen ceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>, <2 x i6 4>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, i64) {
2588 ; CHECK: entry:
2589 ; CHECK-NEXT: %12 = insertelement <2 x i64> %9, i64 %11, i32 1
2590 ; CHECK-NEXT: store <2 x i64> %6, <2 x i64>* %0, align 16
2591 ; CHECK-NEXT: store <2 x i64> %7, <2 x i64>* %1, align 16
2592 ; CHECK-NEXT: store <2 x i64> %8, <2 x i64>* %2, align 16
2593 ; CHECK-NEXT: store <2 x i64> %12, <2 x i64>* %3, align 16
2594 ; CHECK-NEXT: store <2 x i64> %10, <2 x i64>* %4, align 16
2595 ; CHECK-NEXT: ret <2 x i64> %5
2596 ; CHECK-NEXT: }
2597
2598 define <12 x i64> @insert_12xi64_at_10(<12 x i64>, i64) {
2599 entry:
2600 %2 = insertelement <12 x i64> %0, i64 %1, i32 10
2601 ret <12 x i64> %2
2602 }
2603 ; CHECK-LABEL: define <2 x i64> @insert_12xi64_at_10(<2 x i64>* nocapture nonnul l dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i6 4>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull derefere nceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>, <2 x i 64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, i64) {
2604 ; CHECK: entry:
2605 ; CHECK-NEXT: %12 = insertelement <2 x i64> %10, i64 %11, i32 0
2606 ; CHECK-NEXT: store <2 x i64> %6, <2 x i64>* %0, align 16
2607 ; CHECK-NEXT: store <2 x i64> %7, <2 x i64>* %1, align 16
2608 ; CHECK-NEXT: store <2 x i64> %8, <2 x i64>* %2, align 16
2609 ; CHECK-NEXT: store <2 x i64> %9, <2 x i64>* %3, align 16
2610 ; CHECK-NEXT: store <2 x i64> %12, <2 x i64>* %4, align 16
2611 ; CHECK-NEXT: ret <2 x i64> %5
2612 ; CHECK-NEXT: }
2613
2614 define <12 x i64> @insert_12xi64_at_11(<12 x i64>, i64) {
2615 entry:
2616 %2 = insertelement <12 x i64> %0, i64 %1, i32 11
2617 ret <12 x i64> %2
2618 }
2619 ; CHECK-LABEL: define <2 x i64> @insert_12xi64_at_11(<2 x i64>* nocapture nonnul l dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i6 4>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull derefere nceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>, <2 x i 64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, i64) {
2620 ; CHECK: entry:
2621 ; CHECK-NEXT: %12 = insertelement <2 x i64> %10, i64 %11, i32 1
2622 ; CHECK-NEXT: store <2 x i64> %6, <2 x i64>* %0, align 16
2623 ; CHECK-NEXT: store <2 x i64> %7, <2 x i64>* %1, align 16
2624 ; CHECK-NEXT: store <2 x i64> %8, <2 x i64>* %2, align 16
2625 ; CHECK-NEXT: store <2 x i64> %9, <2 x i64>* %3, align 16
2626 ; CHECK-NEXT: store <2 x i64> %12, <2 x i64>* %4, align 16
2627 ; CHECK-NEXT: ret <2 x i64> %5
2628 ; CHECK-NEXT: }
2629
2630 define <12 x i64> @insert_12xi64_undef_idx(<12 x i64>, i64) {
2631 entry:
2632 %2 = insertelement <12 x i64> %0, i64 %1, i32 12
2633 ret <12 x i64> %2
2634 }
2635 ; CHECK-LABEL: define <2 x i64> @insert_12xi64_undef_idx(<2 x i64>* nocapture no nnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dere ferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, i64) {
2636 ; CHECK: entry:
2637 ; CHECK-NEXT: store <2 x i64> %6, <2 x i64>* %0, align 16
2638 ; CHECK-NEXT: store <2 x i64> %7, <2 x i64>* %1, align 16
2639 ; CHECK-NEXT: store <2 x i64> %8, <2 x i64>* %2, align 16
2640 ; CHECK-NEXT: store <2 x i64> %9, <2 x i64>* %3, align 16
2641 ; CHECK-NEXT: store <2 x i64> %10, <2 x i64>* %4, align 16
2642 ; CHECK-NEXT: ret <2 x i64> %5
2643 ; CHECK-NEXT: }
2644
2645 define <12 x i8*> @insert_12xi8ptr_at_0(<12 x i8*>, i8*) {
2646 entry:
2647 %2 = insertelement <12 x i8*> %0, i8* %1, i32 0
2648 ret <12 x i8*> %2
2649 }
2650 ; CHECK-LABEL: define <4 x i8*> @insert_12xi8ptr_at_0(<4 x i8*>* nocapture nonnu ll dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i 8*>, <4 x i8*>, <4 x i8*>, i8*) {
2651 ; CHECK: entry:
2652 ; CHECK-NEXT: %6 = insertelement <4 x i8*> %2, i8* %5, i32 0
2653 ; CHECK-NEXT: store <4 x i8*> %3, <4 x i8*>* %0, align 16
2654 ; CHECK-NEXT: store <4 x i8*> %4, <4 x i8*>* %1, align 16
2655 ; CHECK-NEXT: ret <4 x i8*> %6
2656 ; CHECK-NEXT: }
2657
2658 define <12 x i8*> @insert_12xi8ptr_at_1(<12 x i8*>, i8*) {
2659 entry:
2660 %2 = insertelement <12 x i8*> %0, i8* %1, i32 1
2661 ret <12 x i8*> %2
2662 }
2663 ; CHECK-LABEL: define <4 x i8*> @insert_12xi8ptr_at_1(<4 x i8*>* nocapture nonnu ll dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i 8*>, <4 x i8*>, <4 x i8*>, i8*) {
2664 ; CHECK: entry:
2665 ; CHECK-NEXT: %6 = insertelement <4 x i8*> %2, i8* %5, i32 1
2666 ; CHECK-NEXT: store <4 x i8*> %3, <4 x i8*>* %0, align 16
2667 ; CHECK-NEXT: store <4 x i8*> %4, <4 x i8*>* %1, align 16
2668 ; CHECK-NEXT: ret <4 x i8*> %6
2669 ; CHECK-NEXT: }
2670
2671 define <12 x i8*> @insert_12xi8ptr_at_2(<12 x i8*>, i8*) {
2672 entry:
2673 %2 = insertelement <12 x i8*> %0, i8* %1, i32 2
2674 ret <12 x i8*> %2
2675 }
2676 ; CHECK-LABEL: define <4 x i8*> @insert_12xi8ptr_at_2(<4 x i8*>* nocapture nonnu ll dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i 8*>, <4 x i8*>, <4 x i8*>, i8*) {
2677 ; CHECK: entry:
2678 ; CHECK-NEXT: %6 = insertelement <4 x i8*> %2, i8* %5, i32 2
2679 ; CHECK-NEXT: store <4 x i8*> %3, <4 x i8*>* %0, align 16
2680 ; CHECK-NEXT: store <4 x i8*> %4, <4 x i8*>* %1, align 16
2681 ; CHECK-NEXT: ret <4 x i8*> %6
2682 ; CHECK-NEXT: }
2683
2684 define <12 x i8*> @insert_12xi8ptr_at_3(<12 x i8*>, i8*) {
2685 entry:
2686 %2 = insertelement <12 x i8*> %0, i8* %1, i32 3
2687 ret <12 x i8*> %2
2688 }
2689 ; CHECK-LABEL: define <4 x i8*> @insert_12xi8ptr_at_3(<4 x i8*>* nocapture nonnu ll dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i 8*>, <4 x i8*>, <4 x i8*>, i8*) {
2690 ; CHECK: entry:
2691 ; CHECK-NEXT: %6 = insertelement <4 x i8*> %2, i8* %5, i32 3
2692 ; CHECK-NEXT: store <4 x i8*> %3, <4 x i8*>* %0, align 16
2693 ; CHECK-NEXT: store <4 x i8*> %4, <4 x i8*>* %1, align 16
2694 ; CHECK-NEXT: ret <4 x i8*> %6
2695 ; CHECK-NEXT: }
2696
2697 define <12 x i8*> @insert_12xi8ptr_at_4(<12 x i8*>, i8*) {
2698 entry:
2699 %2 = insertelement <12 x i8*> %0, i8* %1, i32 4
2700 ret <12 x i8*> %2
2701 }
2702 ; CHECK-LABEL: define <4 x i8*> @insert_12xi8ptr_at_4(<4 x i8*>* nocapture nonnu ll dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i 8*>, <4 x i8*>, <4 x i8*>, i8*) {
2703 ; CHECK: entry:
2704 ; CHECK-NEXT: %6 = insertelement <4 x i8*> %3, i8* %5, i32 0
2705 ; CHECK-NEXT: store <4 x i8*> %6, <4 x i8*>* %0, align 16
2706 ; CHECK-NEXT: store <4 x i8*> %4, <4 x i8*>* %1, align 16
2707 ; CHECK-NEXT: ret <4 x i8*> %2
2708 ; CHECK-NEXT: }
2709
2710 define <12 x i8*> @insert_12xi8ptr_at_5(<12 x i8*>, i8*) {
2711 entry:
2712 %2 = insertelement <12 x i8*> %0, i8* %1, i32 5
2713 ret <12 x i8*> %2
2714 }
2715 ; CHECK-LABEL: define <4 x i8*> @insert_12xi8ptr_at_5(<4 x i8*>* nocapture nonnu ll dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i 8*>, <4 x i8*>, <4 x i8*>, i8*) {
2716 ; CHECK: entry:
2717 ; CHECK-NEXT: %6 = insertelement <4 x i8*> %3, i8* %5, i32 1
2718 ; CHECK-NEXT: store <4 x i8*> %6, <4 x i8*>* %0, align 16
2719 ; CHECK-NEXT: store <4 x i8*> %4, <4 x i8*>* %1, align 16
2720 ; CHECK-NEXT: ret <4 x i8*> %2
2721 ; CHECK-NEXT: }
2722
2723 define <12 x i8*> @insert_12xi8ptr_at_6(<12 x i8*>, i8*) {
2724 entry:
2725 %2 = insertelement <12 x i8*> %0, i8* %1, i32 6
2726 ret <12 x i8*> %2
2727 }
2728 ; CHECK-LABEL: define <4 x i8*> @insert_12xi8ptr_at_6(<4 x i8*>* nocapture nonnu ll dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i 8*>, <4 x i8*>, <4 x i8*>, i8*) {
2729 ; CHECK: entry:
2730 ; CHECK-NEXT: %6 = insertelement <4 x i8*> %3, i8* %5, i32 2
2731 ; CHECK-NEXT: store <4 x i8*> %6, <4 x i8*>* %0, align 16
2732 ; CHECK-NEXT: store <4 x i8*> %4, <4 x i8*>* %1, align 16
2733 ; CHECK-NEXT: ret <4 x i8*> %2
2734 ; CHECK-NEXT: }
2735
2736 define <12 x i8*> @insert_12xi8ptr_at_7(<12 x i8*>, i8*) {
2737 entry:
2738 %2 = insertelement <12 x i8*> %0, i8* %1, i32 7
2739 ret <12 x i8*> %2
2740 }
2741 ; CHECK-LABEL: define <4 x i8*> @insert_12xi8ptr_at_7(<4 x i8*>* nocapture nonnu ll dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i 8*>, <4 x i8*>, <4 x i8*>, i8*) {
2742 ; CHECK: entry:
2743 ; CHECK-NEXT: %6 = insertelement <4 x i8*> %3, i8* %5, i32 3
2744 ; CHECK-NEXT: store <4 x i8*> %6, <4 x i8*>* %0, align 16
2745 ; CHECK-NEXT: store <4 x i8*> %4, <4 x i8*>* %1, align 16
2746 ; CHECK-NEXT: ret <4 x i8*> %2
2747 ; CHECK-NEXT: }
2748
2749 define <12 x i8*> @insert_12xi8ptr_at_8(<12 x i8*>, i8*) {
2750 entry:
2751 %2 = insertelement <12 x i8*> %0, i8* %1, i32 8
2752 ret <12 x i8*> %2
2753 }
2754 ; CHECK-LABEL: define <4 x i8*> @insert_12xi8ptr_at_8(<4 x i8*>* nocapture nonnu ll dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i 8*>, <4 x i8*>, <4 x i8*>, i8*) {
2755 ; CHECK: entry:
2756 ; CHECK-NEXT: %6 = insertelement <4 x i8*> %4, i8* %5, i32 0
2757 ; CHECK-NEXT: store <4 x i8*> %3, <4 x i8*>* %0, align 16
2758 ; CHECK-NEXT: store <4 x i8*> %6, <4 x i8*>* %1, align 16
2759 ; CHECK-NEXT: ret <4 x i8*> %2
2760 ; CHECK-NEXT: }
2761
2762 define <12 x i8*> @insert_12xi8ptr_at_9(<12 x i8*>, i8*) {
2763 entry:
2764 %2 = insertelement <12 x i8*> %0, i8* %1, i32 9
2765 ret <12 x i8*> %2
2766 }
2767 ; CHECK-LABEL: define <4 x i8*> @insert_12xi8ptr_at_9(<4 x i8*>* nocapture nonnu ll dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i 8*>, <4 x i8*>, <4 x i8*>, i8*) {
2768 ; CHECK: entry:
2769 ; CHECK-NEXT: %6 = insertelement <4 x i8*> %4, i8* %5, i32 1
2770 ; CHECK-NEXT: store <4 x i8*> %3, <4 x i8*>* %0, align 16
2771 ; CHECK-NEXT: store <4 x i8*> %6, <4 x i8*>* %1, align 16
2772 ; CHECK-NEXT: ret <4 x i8*> %2
2773 ; CHECK-NEXT: }
2774
2775 define <12 x i8*> @insert_12xi8ptr_at_10(<12 x i8*>, i8*) {
2776 entry:
2777 %2 = insertelement <12 x i8*> %0, i8* %1, i32 10
2778 ret <12 x i8*> %2
2779 }
2780 ; CHECK-LABEL: define <4 x i8*> @insert_12xi8ptr_at_10(<4 x i8*>* nocapture nonn ull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>, <4 x i8*>, <4 x i8*>, i8*) {
2781 ; CHECK: entry:
2782 ; CHECK-NEXT: %6 = insertelement <4 x i8*> %4, i8* %5, i32 2
2783 ; CHECK-NEXT: store <4 x i8*> %3, <4 x i8*>* %0, align 16
2784 ; CHECK-NEXT: store <4 x i8*> %6, <4 x i8*>* %1, align 16
2785 ; CHECK-NEXT: ret <4 x i8*> %2
2786 ; CHECK-NEXT: }
2787
2788 define <12 x i8*> @insert_12xi8ptr_at_11(<12 x i8*>, i8*) {
2789 entry:
2790 %2 = insertelement <12 x i8*> %0, i8* %1, i32 11
2791 ret <12 x i8*> %2
2792 }
2793 ; CHECK-LABEL: define <4 x i8*> @insert_12xi8ptr_at_11(<4 x i8*>* nocapture nonn ull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>, <4 x i8*>, <4 x i8*>, i8*) {
2794 ; CHECK: entry:
2795 ; CHECK-NEXT: %6 = insertelement <4 x i8*> %4, i8* %5, i32 3
2796 ; CHECK-NEXT: store <4 x i8*> %3, <4 x i8*>* %0, align 16
2797 ; CHECK-NEXT: store <4 x i8*> %6, <4 x i8*>* %1, align 16
2798 ; CHECK-NEXT: ret <4 x i8*> %2
2799 ; CHECK-NEXT: }
2800
2801 define <12 x i8*> @insert_12xi8ptr_undef_idx(<12 x i8*>, i8*) {
2802 entry:
2803 %2 = insertelement <12 x i8*> %0, i8* %1, i32 12
2804 ret <12 x i8*> %2
2805 }
2806 ; CHECK-LABEL: define <4 x i8*> @insert_12xi8ptr_undef_idx(<4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), < 4 x i8*>, <4 x i8*>, <4 x i8*>, i8*) {
2807 ; CHECK: entry:
2808 ; CHECK-NEXT: store <4 x i8*> %3, <4 x i8*>* %0, align 16
2809 ; CHECK-NEXT: store <4 x i8*> %4, <4 x i8*>* %1, align 16
2810 ; CHECK-NEXT: ret <4 x i8*> %2
2811 ; CHECK-NEXT: }
2812
2813 define <12 x float> @insert_12xfloat_at_0(<12 x float>, float) {
2814 entry:
2815 %2 = insertelement <12 x float> %0, float %1, i32 0
2816 ret <12 x float> %2
2817 }
2818 ; CHECK-LABEL: define <4 x float> @insert_12xfloat_at_0(<4 x float>* nocapture n onnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>, <4 x float>, <4 x float>, float) {
2819 ; CHECK: entry:
2820 ; CHECK-NEXT: %6 = insertelement <4 x float> %2, float %5, i32 0
2821 ; CHECK-NEXT: store <4 x float> %3, <4 x float>* %0, align 16
2822 ; CHECK-NEXT: store <4 x float> %4, <4 x float>* %1, align 16
2823 ; CHECK-NEXT: ret <4 x float> %6
2824 ; CHECK-NEXT: }
2825
2826 define <12 x float> @insert_12xfloat_at_1(<12 x float>, float) {
2827 entry:
2828 %2 = insertelement <12 x float> %0, float %1, i32 1
2829 ret <12 x float> %2
2830 }
2831 ; CHECK-LABEL: define <4 x float> @insert_12xfloat_at_1(<4 x float>* nocapture n onnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>, <4 x float>, <4 x float>, float) {
2832 ; CHECK: entry:
2833 ; CHECK-NEXT: %6 = insertelement <4 x float> %2, float %5, i32 1
2834 ; CHECK-NEXT: store <4 x float> %3, <4 x float>* %0, align 16
2835 ; CHECK-NEXT: store <4 x float> %4, <4 x float>* %1, align 16
2836 ; CHECK-NEXT: ret <4 x float> %6
2837 ; CHECK-NEXT: }
2838
2839 define <12 x float> @insert_12xfloat_at_2(<12 x float>, float) {
2840 entry:
2841 %2 = insertelement <12 x float> %0, float %1, i32 2
2842 ret <12 x float> %2
2843 }
2844 ; CHECK-LABEL: define <4 x float> @insert_12xfloat_at_2(<4 x float>* nocapture n onnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>, <4 x float>, <4 x float>, float) {
2845 ; CHECK: entry:
2846 ; CHECK-NEXT: %6 = insertelement <4 x float> %2, float %5, i32 2
2847 ; CHECK-NEXT: store <4 x float> %3, <4 x float>* %0, align 16
2848 ; CHECK-NEXT: store <4 x float> %4, <4 x float>* %1, align 16
2849 ; CHECK-NEXT: ret <4 x float> %6
2850 ; CHECK-NEXT: }
2851
2852 define <12 x float> @insert_12xfloat_at_3(<12 x float>, float) {
2853 entry:
2854 %2 = insertelement <12 x float> %0, float %1, i32 3
2855 ret <12 x float> %2
2856 }
2857 ; CHECK-LABEL: define <4 x float> @insert_12xfloat_at_3(<4 x float>* nocapture n onnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>, <4 x float>, <4 x float>, float) {
2858 ; CHECK: entry:
2859 ; CHECK-NEXT: %6 = insertelement <4 x float> %2, float %5, i32 3
2860 ; CHECK-NEXT: store <4 x float> %3, <4 x float>* %0, align 16
2861 ; CHECK-NEXT: store <4 x float> %4, <4 x float>* %1, align 16
2862 ; CHECK-NEXT: ret <4 x float> %6
2863 ; CHECK-NEXT: }
2864
2865 define <12 x float> @insert_12xfloat_at_4(<12 x float>, float) {
2866 entry:
2867 %2 = insertelement <12 x float> %0, float %1, i32 4
2868 ret <12 x float> %2
2869 }
2870 ; CHECK-LABEL: define <4 x float> @insert_12xfloat_at_4(<4 x float>* nocapture n onnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>, <4 x float>, <4 x float>, float) {
2871 ; CHECK: entry:
2872 ; CHECK-NEXT: %6 = insertelement <4 x float> %3, float %5, i32 0
2873 ; CHECK-NEXT: store <4 x float> %6, <4 x float>* %0, align 16
2874 ; CHECK-NEXT: store <4 x float> %4, <4 x float>* %1, align 16
2875 ; CHECK-NEXT: ret <4 x float> %2
2876 ; CHECK-NEXT: }
2877
2878 define <12 x float> @insert_12xfloat_at_5(<12 x float>, float) {
2879 entry:
2880 %2 = insertelement <12 x float> %0, float %1, i32 5
2881 ret <12 x float> %2
2882 }
2883 ; CHECK-LABEL: define <4 x float> @insert_12xfloat_at_5(<4 x float>* nocapture n onnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>, <4 x float>, <4 x float>, float) {
2884 ; CHECK: entry:
2885 ; CHECK-NEXT: %6 = insertelement <4 x float> %3, float %5, i32 1
2886 ; CHECK-NEXT: store <4 x float> %6, <4 x float>* %0, align 16
2887 ; CHECK-NEXT: store <4 x float> %4, <4 x float>* %1, align 16
2888 ; CHECK-NEXT: ret <4 x float> %2
2889 ; CHECK-NEXT: }
2890
2891 define <12 x float> @insert_12xfloat_at_6(<12 x float>, float) {
2892 entry:
2893 %2 = insertelement <12 x float> %0, float %1, i32 6
2894 ret <12 x float> %2
2895 }
2896 ; CHECK-LABEL: define <4 x float> @insert_12xfloat_at_6(<4 x float>* nocapture n onnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>, <4 x float>, <4 x float>, float) {
2897 ; CHECK: entry:
2898 ; CHECK-NEXT: %6 = insertelement <4 x float> %3, float %5, i32 2
2899 ; CHECK-NEXT: store <4 x float> %6, <4 x float>* %0, align 16
2900 ; CHECK-NEXT: store <4 x float> %4, <4 x float>* %1, align 16
2901 ; CHECK-NEXT: ret <4 x float> %2
2902 ; CHECK-NEXT: }
2903
2904 define <12 x float> @insert_12xfloat_at_7(<12 x float>, float) {
2905 entry:
2906 %2 = insertelement <12 x float> %0, float %1, i32 7
2907 ret <12 x float> %2
2908 }
2909 ; CHECK-LABEL: define <4 x float> @insert_12xfloat_at_7(<4 x float>* nocapture n onnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>, <4 x float>, <4 x float>, float) {
2910 ; CHECK: entry:
2911 ; CHECK-NEXT: %6 = insertelement <4 x float> %3, float %5, i32 3
2912 ; CHECK-NEXT: store <4 x float> %6, <4 x float>* %0, align 16
2913 ; CHECK-NEXT: store <4 x float> %4, <4 x float>* %1, align 16
2914 ; CHECK-NEXT: ret <4 x float> %2
2915 ; CHECK-NEXT: }
2916
2917 define <12 x float> @insert_12xfloat_at_8(<12 x float>, float) {
2918 entry:
2919 %2 = insertelement <12 x float> %0, float %1, i32 8
2920 ret <12 x float> %2
2921 }
2922 ; CHECK-LABEL: define <4 x float> @insert_12xfloat_at_8(<4 x float>* nocapture n onnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>, <4 x float>, <4 x float>, float) {
2923 ; CHECK: entry:
2924 ; CHECK-NEXT: %6 = insertelement <4 x float> %4, float %5, i32 0
2925 ; CHECK-NEXT: store <4 x float> %3, <4 x float>* %0, align 16
2926 ; CHECK-NEXT: store <4 x float> %6, <4 x float>* %1, align 16
2927 ; CHECK-NEXT: ret <4 x float> %2
2928 ; CHECK-NEXT: }
2929
2930 define <12 x float> @insert_12xfloat_at_9(<12 x float>, float) {
2931 entry:
2932 %2 = insertelement <12 x float> %0, float %1, i32 9
2933 ret <12 x float> %2
2934 }
2935 ; CHECK-LABEL: define <4 x float> @insert_12xfloat_at_9(<4 x float>* nocapture n onnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>, <4 x float>, <4 x float>, float) {
2936 ; CHECK: entry:
2937 ; CHECK-NEXT: %6 = insertelement <4 x float> %4, float %5, i32 1
2938 ; CHECK-NEXT: store <4 x float> %3, <4 x float>* %0, align 16
2939 ; CHECK-NEXT: store <4 x float> %6, <4 x float>* %1, align 16
2940 ; CHECK-NEXT: ret <4 x float> %2
2941 ; CHECK-NEXT: }
2942
2943 define <12 x float> @insert_12xfloat_at_10(<12 x float>, float) {
2944 entry:
2945 %2 = insertelement <12 x float> %0, float %1, i32 10
2946 ret <12 x float> %2
2947 }
2948 ; CHECK-LABEL: define <4 x float> @insert_12xfloat_at_10(<4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>, <4 x float>, <4 x float>, float) {
2949 ; CHECK: entry:
2950 ; CHECK-NEXT: %6 = insertelement <4 x float> %4, float %5, i32 2
2951 ; CHECK-NEXT: store <4 x float> %3, <4 x float>* %0, align 16
2952 ; CHECK-NEXT: store <4 x float> %6, <4 x float>* %1, align 16
2953 ; CHECK-NEXT: ret <4 x float> %2
2954 ; CHECK-NEXT: }
2955
2956 define <12 x float> @insert_12xfloat_at_11(<12 x float>, float) {
2957 entry:
2958 %2 = insertelement <12 x float> %0, float %1, i32 11
2959 ret <12 x float> %2
2960 }
2961 ; CHECK-LABEL: define <4 x float> @insert_12xfloat_at_11(<4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>, <4 x float>, <4 x float>, float) {
2962 ; CHECK: entry:
2963 ; CHECK-NEXT: %6 = insertelement <4 x float> %4, float %5, i32 3
2964 ; CHECK-NEXT: store <4 x float> %3, <4 x float>* %0, align 16
2965 ; CHECK-NEXT: store <4 x float> %6, <4 x float>* %1, align 16
2966 ; CHECK-NEXT: ret <4 x float> %2
2967 ; CHECK-NEXT: }
2968
2969 define <12 x float> @insert_12xfloat_undef_idx(<12 x float>, float) {
2970 entry:
2971 %2 = insertelement <12 x float> %0, float %1, i32 12
2972 ret <12 x float> %2
2973 }
2974 ; CHECK-LABEL: define <4 x float> @insert_12xfloat_undef_idx(<4 x float>* nocapt ure nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable( 16), <4 x float>, <4 x float>, <4 x float>, float) {
2975 ; CHECK: entry:
2976 ; CHECK-NEXT: store <4 x float> %3, <4 x float>* %0, align 16
2977 ; CHECK-NEXT: store <4 x float> %4, <4 x float>* %1, align 16
2978 ; CHECK-NEXT: ret <4 x float> %2
2979 ; CHECK-NEXT: }
2980
2981 define <12 x double> @insert_12xdouble_at_0(<12 x double>, double) {
2982 entry:
2983 %2 = insertelement <12 x double> %0, double %1, i32 0
2984 ret <12 x double> %2
2985 }
2986 ; CHECK-LABEL: define <2 x double> @insert_12xdouble_at_0(<2 x double>* nocaptur e nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(1 6), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16 ), <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x do uble>, double) {
2987 ; CHECK: entry:
2988 ; CHECK-NEXT: %12 = insertelement <2 x double> %5, double %11, i32 0
2989 ; CHECK-NEXT: store <2 x double> %6, <2 x double>* %0, align 16
2990 ; CHECK-NEXT: store <2 x double> %7, <2 x double>* %1, align 16
2991 ; CHECK-NEXT: store <2 x double> %8, <2 x double>* %2, align 16
2992 ; CHECK-NEXT: store <2 x double> %9, <2 x double>* %3, align 16
2993 ; CHECK-NEXT: store <2 x double> %10, <2 x double>* %4, align 16
2994 ; CHECK-NEXT: ret <2 x double> %12
2995 ; CHECK-NEXT: }
2996
2997 define <12 x double> @insert_12xdouble_at_1(<12 x double>, double) {
2998 entry:
2999 %2 = insertelement <12 x double> %0, double %1, i32 1
3000 ret <12 x double> %2
3001 }
3002 ; CHECK-LABEL: define <2 x double> @insert_12xdouble_at_1(<2 x double>* nocaptur e nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(1 6), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16 ), <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x do uble>, double) {
3003 ; CHECK: entry:
3004 ; CHECK-NEXT: %12 = insertelement <2 x double> %5, double %11, i32 1
3005 ; CHECK-NEXT: store <2 x double> %6, <2 x double>* %0, align 16
3006 ; CHECK-NEXT: store <2 x double> %7, <2 x double>* %1, align 16
3007 ; CHECK-NEXT: store <2 x double> %8, <2 x double>* %2, align 16
3008 ; CHECK-NEXT: store <2 x double> %9, <2 x double>* %3, align 16
3009 ; CHECK-NEXT: store <2 x double> %10, <2 x double>* %4, align 16
3010 ; CHECK-NEXT: ret <2 x double> %12
3011 ; CHECK-NEXT: }
3012
3013 define <12 x double> @insert_12xdouble_at_2(<12 x double>, double) {
3014 entry:
3015 %2 = insertelement <12 x double> %0, double %1, i32 2
3016 ret <12 x double> %2
3017 }
3018 ; CHECK-LABEL: define <2 x double> @insert_12xdouble_at_2(<2 x double>* nocaptur e nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(1 6), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16 ), <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x do uble>, double) {
3019 ; CHECK: entry:
3020 ; CHECK-NEXT: %12 = insertelement <2 x double> %6, double %11, i32 0
3021 ; CHECK-NEXT: store <2 x double> %12, <2 x double>* %0, align 16
3022 ; CHECK-NEXT: store <2 x double> %7, <2 x double>* %1, align 16
3023 ; CHECK-NEXT: store <2 x double> %8, <2 x double>* %2, align 16
3024 ; CHECK-NEXT: store <2 x double> %9, <2 x double>* %3, align 16
3025 ; CHECK-NEXT: store <2 x double> %10, <2 x double>* %4, align 16
3026 ; CHECK-NEXT: ret <2 x double> %5
3027 ; CHECK-NEXT: }
3028
3029 define <12 x double> @insert_12xdouble_at_3(<12 x double>, double) {
3030 entry:
3031 %2 = insertelement <12 x double> %0, double %1, i32 3
3032 ret <12 x double> %2
3033 }
3034 ; CHECK-LABEL: define <2 x double> @insert_12xdouble_at_3(<2 x double>* nocaptur e nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(1 6), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16 ), <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x do uble>, double) {
3035 ; CHECK: entry:
3036 ; CHECK-NEXT: %12 = insertelement <2 x double> %6, double %11, i32 1
3037 ; CHECK-NEXT: store <2 x double> %12, <2 x double>* %0, align 16
3038 ; CHECK-NEXT: store <2 x double> %7, <2 x double>* %1, align 16
3039 ; CHECK-NEXT: store <2 x double> %8, <2 x double>* %2, align 16
3040 ; CHECK-NEXT: store <2 x double> %9, <2 x double>* %3, align 16
3041 ; CHECK-NEXT: store <2 x double> %10, <2 x double>* %4, align 16
3042 ; CHECK-NEXT: ret <2 x double> %5
3043 ; CHECK-NEXT: }
3044
3045 define <12 x double> @insert_12xdouble_at_4(<12 x double>, double) {
3046 entry:
3047 %2 = insertelement <12 x double> %0, double %1, i32 4
3048 ret <12 x double> %2
3049 }
3050 ; CHECK-LABEL: define <2 x double> @insert_12xdouble_at_4(<2 x double>* nocaptur e nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(1 6), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16 ), <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x do uble>, double) {
3051 ; CHECK: entry:
3052 ; CHECK-NEXT: %12 = insertelement <2 x double> %7, double %11, i32 0
3053 ; CHECK-NEXT: store <2 x double> %6, <2 x double>* %0, align 16
3054 ; CHECK-NEXT: store <2 x double> %12, <2 x double>* %1, align 16
3055 ; CHECK-NEXT: store <2 x double> %8, <2 x double>* %2, align 16
3056 ; CHECK-NEXT: store <2 x double> %9, <2 x double>* %3, align 16
3057 ; CHECK-NEXT: store <2 x double> %10, <2 x double>* %4, align 16
3058 ; CHECK-NEXT: ret <2 x double> %5
3059 ; CHECK-NEXT: }
3060
3061 define <12 x double> @insert_12xdouble_at_5(<12 x double>, double) {
3062 entry:
3063 %2 = insertelement <12 x double> %0, double %1, i32 5
3064 ret <12 x double> %2
3065 }
3066 ; CHECK-LABEL: define <2 x double> @insert_12xdouble_at_5(<2 x double>* nocaptur e nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(1 6), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16 ), <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x do uble>, double) {
3067 ; CHECK: entry:
3068 ; CHECK-NEXT: %12 = insertelement <2 x double> %7, double %11, i32 1
3069 ; CHECK-NEXT: store <2 x double> %6, <2 x double>* %0, align 16
3070 ; CHECK-NEXT: store <2 x double> %12, <2 x double>* %1, align 16
3071 ; CHECK-NEXT: store <2 x double> %8, <2 x double>* %2, align 16
3072 ; CHECK-NEXT: store <2 x double> %9, <2 x double>* %3, align 16
3073 ; CHECK-NEXT: store <2 x double> %10, <2 x double>* %4, align 16
3074 ; CHECK-NEXT: ret <2 x double> %5
3075 ; CHECK-NEXT: }
3076
3077 define <12 x double> @insert_12xdouble_at_6(<12 x double>, double) {
3078 entry:
3079 %2 = insertelement <12 x double> %0, double %1, i32 6
3080 ret <12 x double> %2
3081 }
3082 ; CHECK-LABEL: define <2 x double> @insert_12xdouble_at_6(<2 x double>* nocaptur e nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(1 6), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16 ), <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x do uble>, double) {
3083 ; CHECK: entry:
3084 ; CHECK-NEXT: %12 = insertelement <2 x double> %8, double %11, i32 0
3085 ; CHECK-NEXT: store <2 x double> %6, <2 x double>* %0, align 16
3086 ; CHECK-NEXT: store <2 x double> %7, <2 x double>* %1, align 16
3087 ; CHECK-NEXT: store <2 x double> %12, <2 x double>* %2, align 16
3088 ; CHECK-NEXT: store <2 x double> %9, <2 x double>* %3, align 16
3089 ; CHECK-NEXT: store <2 x double> %10, <2 x double>* %4, align 16
3090 ; CHECK-NEXT: ret <2 x double> %5
3091 ; CHECK-NEXT: }
3092
3093 define <12 x double> @insert_12xdouble_at_7(<12 x double>, double) {
3094 entry:
3095 %2 = insertelement <12 x double> %0, double %1, i32 7
3096 ret <12 x double> %2
3097 }
3098 ; CHECK-LABEL: define <2 x double> @insert_12xdouble_at_7(<2 x double>* nocaptur e nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(1 6), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16 ), <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x do uble>, double) {
3099 ; CHECK: entry:
3100 ; CHECK-NEXT: %12 = insertelement <2 x double> %8, double %11, i32 1
3101 ; CHECK-NEXT: store <2 x double> %6, <2 x double>* %0, align 16
3102 ; CHECK-NEXT: store <2 x double> %7, <2 x double>* %1, align 16
3103 ; CHECK-NEXT: store <2 x double> %12, <2 x double>* %2, align 16
3104 ; CHECK-NEXT: store <2 x double> %9, <2 x double>* %3, align 16
3105 ; CHECK-NEXT: store <2 x double> %10, <2 x double>* %4, align 16
3106 ; CHECK-NEXT: ret <2 x double> %5
3107 ; CHECK-NEXT: }
3108
3109 define <12 x double> @insert_12xdouble_at_8(<12 x double>, double) {
3110 entry:
3111 %2 = insertelement <12 x double> %0, double %1, i32 8
3112 ret <12 x double> %2
3113 }
3114 ; CHECK-LABEL: define <2 x double> @insert_12xdouble_at_8(<2 x double>* nocaptur e nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(1 6), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16 ), <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x do uble>, double) {
3115 ; CHECK: entry:
3116 ; CHECK-NEXT: %12 = insertelement <2 x double> %9, double %11, i32 0
3117 ; CHECK-NEXT: store <2 x double> %6, <2 x double>* %0, align 16
3118 ; CHECK-NEXT: store <2 x double> %7, <2 x double>* %1, align 16
3119 ; CHECK-NEXT: store <2 x double> %8, <2 x double>* %2, align 16
3120 ; CHECK-NEXT: store <2 x double> %12, <2 x double>* %3, align 16
3121 ; CHECK-NEXT: store <2 x double> %10, <2 x double>* %4, align 16
3122 ; CHECK-NEXT: ret <2 x double> %5
3123 ; CHECK-NEXT: }
3124
3125 define <12 x double> @insert_12xdouble_at_9(<12 x double>, double) {
3126 entry:
3127 %2 = insertelement <12 x double> %0, double %1, i32 9
3128 ret <12 x double> %2
3129 }
3130 ; CHECK-LABEL: define <2 x double> @insert_12xdouble_at_9(<2 x double>* nocaptur e nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(1 6), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16 ), <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x do uble>, double) {
3131 ; CHECK: entry:
3132 ; CHECK-NEXT: %12 = insertelement <2 x double> %9, double %11, i32 1
3133 ; CHECK-NEXT: store <2 x double> %6, <2 x double>* %0, align 16
3134 ; CHECK-NEXT: store <2 x double> %7, <2 x double>* %1, align 16
3135 ; CHECK-NEXT: store <2 x double> %8, <2 x double>* %2, align 16
3136 ; CHECK-NEXT: store <2 x double> %12, <2 x double>* %3, align 16
3137 ; CHECK-NEXT: store <2 x double> %10, <2 x double>* %4, align 16
3138 ; CHECK-NEXT: ret <2 x double> %5
3139 ; CHECK-NEXT: }
3140
3141 define <12 x double> @insert_12xdouble_at_10(<12 x double>, double) {
3142 entry:
3143 %2 = insertelement <12 x double> %0, double %1, i32 10
3144 ret <12 x double> %2
3145 }
3146 ; CHECK-LABEL: define <2 x double> @insert_12xdouble_at_10(<2 x double>* nocaptu re nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable( 16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocaptur e nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(1 6), <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x d ouble>, double) {
3147 ; CHECK: entry:
3148 ; CHECK-NEXT: %12 = insertelement <2 x double> %10, double %11, i32 0
3149 ; CHECK-NEXT: store <2 x double> %6, <2 x double>* %0, align 16
3150 ; CHECK-NEXT: store <2 x double> %7, <2 x double>* %1, align 16
3151 ; CHECK-NEXT: store <2 x double> %8, <2 x double>* %2, align 16
3152 ; CHECK-NEXT: store <2 x double> %9, <2 x double>* %3, align 16
3153 ; CHECK-NEXT: store <2 x double> %12, <2 x double>* %4, align 16
3154 ; CHECK-NEXT: ret <2 x double> %5
3155 ; CHECK-NEXT: }
3156
3157 define <12 x double> @insert_12xdouble_at_11(<12 x double>, double) {
3158 entry:
3159 %2 = insertelement <12 x double> %0, double %1, i32 11
3160 ret <12 x double> %2
3161 }
3162 ; CHECK-LABEL: define <2 x double> @insert_12xdouble_at_11(<2 x double>* nocaptu re nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable( 16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocaptur e nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(1 6), <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x d ouble>, double) {
3163 ; CHECK: entry:
3164 ; CHECK-NEXT: %12 = insertelement <2 x double> %10, double %11, i32 1
3165 ; CHECK-NEXT: store <2 x double> %6, <2 x double>* %0, align 16
3166 ; CHECK-NEXT: store <2 x double> %7, <2 x double>* %1, align 16
3167 ; CHECK-NEXT: store <2 x double> %8, <2 x double>* %2, align 16
3168 ; CHECK-NEXT: store <2 x double> %9, <2 x double>* %3, align 16
3169 ; CHECK-NEXT: store <2 x double> %12, <2 x double>* %4, align 16
3170 ; CHECK-NEXT: ret <2 x double> %5
3171 ; CHECK-NEXT: }
3172
3173 define <12 x double> @insert_12xdouble_undef_idx(<12 x double>, double) {
3174 entry:
3175 %2 = insertelement <12 x double> %0, double %1, i32 12
3176 ret <12 x double> %2
3177 }
3178 ; CHECK-LABEL: define <2 x double> @insert_12xdouble_undef_idx(<2 x double>* noc apture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferencea ble(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* noca pture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceab le(16), <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, double) {
3179 ; CHECK: entry:
3180 ; CHECK-NEXT: store <2 x double> %6, <2 x double>* %0, align 16
3181 ; CHECK-NEXT: store <2 x double> %7, <2 x double>* %1, align 16
3182 ; CHECK-NEXT: store <2 x double> %8, <2 x double>* %2, align 16
3183 ; CHECK-NEXT: store <2 x double> %9, <2 x double>* %3, align 16
3184 ; CHECK-NEXT: store <2 x double> %10, <2 x double>* %4, align 16
3185 ; CHECK-NEXT: ret <2 x double> %5
3186 ; CHECK-NEXT: }
3187
3188 define <16 x i8> @insert_16xi8_at_0(<16 x i8>, i8) {
3189 entry:
3190 %2 = insertelement <16 x i8> %0, i8 %1, i32 0
3191 ret <16 x i8> %2
3192 }
3193 ; CHECK-LABEL: define <16 x i8> @insert_16xi8_at_0(<16 x i8>, i8) {
3194 ; CHECK: entry:
3195 ; CHECK-NEXT: %2 = insertelement <16 x i8> %0, i8 %1, i32 0
3196 ; CHECK-NEXT: ret <16 x i8> %2
3197 ; CHECK-NEXT: }
3198
3199 define <16 x i8> @insert_16xi8_at_1(<16 x i8>, i8) {
3200 entry:
3201 %2 = insertelement <16 x i8> %0, i8 %1, i32 1
3202 ret <16 x i8> %2
3203 }
3204 ; CHECK-LABEL: define <16 x i8> @insert_16xi8_at_1(<16 x i8>, i8) {
3205 ; CHECK: entry:
3206 ; CHECK-NEXT: %2 = insertelement <16 x i8> %0, i8 %1, i32 1
3207 ; CHECK-NEXT: ret <16 x i8> %2
3208 ; CHECK-NEXT: }
3209
3210 define <16 x i8> @insert_16xi8_at_2(<16 x i8>, i8) {
3211 entry:
3212 %2 = insertelement <16 x i8> %0, i8 %1, i32 2
3213 ret <16 x i8> %2
3214 }
3215 ; CHECK-LABEL: define <16 x i8> @insert_16xi8_at_2(<16 x i8>, i8) {
3216 ; CHECK: entry:
3217 ; CHECK-NEXT: %2 = insertelement <16 x i8> %0, i8 %1, i32 2
3218 ; CHECK-NEXT: ret <16 x i8> %2
3219 ; CHECK-NEXT: }
3220
3221 define <16 x i8> @insert_16xi8_at_3(<16 x i8>, i8) {
3222 entry:
3223 %2 = insertelement <16 x i8> %0, i8 %1, i32 3
3224 ret <16 x i8> %2
3225 }
3226 ; CHECK-LABEL: define <16 x i8> @insert_16xi8_at_3(<16 x i8>, i8) {
3227 ; CHECK: entry:
3228 ; CHECK-NEXT: %2 = insertelement <16 x i8> %0, i8 %1, i32 3
3229 ; CHECK-NEXT: ret <16 x i8> %2
3230 ; CHECK-NEXT: }
3231
3232 define <16 x i8> @insert_16xi8_at_4(<16 x i8>, i8) {
3233 entry:
3234 %2 = insertelement <16 x i8> %0, i8 %1, i32 4
3235 ret <16 x i8> %2
3236 }
3237 ; CHECK-LABEL: define <16 x i8> @insert_16xi8_at_4(<16 x i8>, i8) {
3238 ; CHECK: entry:
3239 ; CHECK-NEXT: %2 = insertelement <16 x i8> %0, i8 %1, i32 4
3240 ; CHECK-NEXT: ret <16 x i8> %2
3241 ; CHECK-NEXT: }
3242
3243 define <16 x i8> @insert_16xi8_at_5(<16 x i8>, i8) {
3244 entry:
3245 %2 = insertelement <16 x i8> %0, i8 %1, i32 5
3246 ret <16 x i8> %2
3247 }
3248 ; CHECK-LABEL: define <16 x i8> @insert_16xi8_at_5(<16 x i8>, i8) {
3249 ; CHECK: entry:
3250 ; CHECK-NEXT: %2 = insertelement <16 x i8> %0, i8 %1, i32 5
3251 ; CHECK-NEXT: ret <16 x i8> %2
3252 ; CHECK-NEXT: }
3253
3254 define <16 x i8> @insert_16xi8_at_6(<16 x i8>, i8) {
3255 entry:
3256 %2 = insertelement <16 x i8> %0, i8 %1, i32 6
3257 ret <16 x i8> %2
3258 }
3259 ; CHECK-LABEL: define <16 x i8> @insert_16xi8_at_6(<16 x i8>, i8) {
3260 ; CHECK: entry:
3261 ; CHECK-NEXT: %2 = insertelement <16 x i8> %0, i8 %1, i32 6
3262 ; CHECK-NEXT: ret <16 x i8> %2
3263 ; CHECK-NEXT: }
3264
3265 define <16 x i8> @insert_16xi8_at_7(<16 x i8>, i8) {
3266 entry:
3267 %2 = insertelement <16 x i8> %0, i8 %1, i32 7
3268 ret <16 x i8> %2
3269 }
3270 ; CHECK-LABEL: define <16 x i8> @insert_16xi8_at_7(<16 x i8>, i8) {
3271 ; CHECK: entry:
3272 ; CHECK-NEXT: %2 = insertelement <16 x i8> %0, i8 %1, i32 7
3273 ; CHECK-NEXT: ret <16 x i8> %2
3274 ; CHECK-NEXT: }
3275
3276 define <16 x i8> @insert_16xi8_at_8(<16 x i8>, i8) {
3277 entry:
3278 %2 = insertelement <16 x i8> %0, i8 %1, i32 8
3279 ret <16 x i8> %2
3280 }
3281 ; CHECK-LABEL: define <16 x i8> @insert_16xi8_at_8(<16 x i8>, i8) {
3282 ; CHECK: entry:
3283 ; CHECK-NEXT: %2 = insertelement <16 x i8> %0, i8 %1, i32 8
3284 ; CHECK-NEXT: ret <16 x i8> %2
3285 ; CHECK-NEXT: }
3286
3287 define <16 x i8> @insert_16xi8_at_9(<16 x i8>, i8) {
3288 entry:
3289 %2 = insertelement <16 x i8> %0, i8 %1, i32 9
3290 ret <16 x i8> %2
3291 }
3292 ; CHECK-LABEL: define <16 x i8> @insert_16xi8_at_9(<16 x i8>, i8) {
3293 ; CHECK: entry:
3294 ; CHECK-NEXT: %2 = insertelement <16 x i8> %0, i8 %1, i32 9
3295 ; CHECK-NEXT: ret <16 x i8> %2
3296 ; CHECK-NEXT: }
3297
3298 define <16 x i8> @insert_16xi8_at_10(<16 x i8>, i8) {
3299 entry:
3300 %2 = insertelement <16 x i8> %0, i8 %1, i32 10
3301 ret <16 x i8> %2
3302 }
3303 ; CHECK-LABEL: define <16 x i8> @insert_16xi8_at_10(<16 x i8>, i8) {
3304 ; CHECK: entry:
3305 ; CHECK-NEXT: %2 = insertelement <16 x i8> %0, i8 %1, i32 10
3306 ; CHECK-NEXT: ret <16 x i8> %2
3307 ; CHECK-NEXT: }
3308
3309 define <16 x i8> @insert_16xi8_at_11(<16 x i8>, i8) {
3310 entry:
3311 %2 = insertelement <16 x i8> %0, i8 %1, i32 11
3312 ret <16 x i8> %2
3313 }
3314 ; CHECK-LABEL: define <16 x i8> @insert_16xi8_at_11(<16 x i8>, i8) {
3315 ; CHECK: entry:
3316 ; CHECK-NEXT: %2 = insertelement <16 x i8> %0, i8 %1, i32 11
3317 ; CHECK-NEXT: ret <16 x i8> %2
3318 ; CHECK-NEXT: }
3319
3320 define <16 x i8> @insert_16xi8_at_12(<16 x i8>, i8) {
3321 entry:
3322 %2 = insertelement <16 x i8> %0, i8 %1, i32 12
3323 ret <16 x i8> %2
3324 }
3325 ; CHECK-LABEL: define <16 x i8> @insert_16xi8_at_12(<16 x i8>, i8) {
3326 ; CHECK: entry:
3327 ; CHECK-NEXT: %2 = insertelement <16 x i8> %0, i8 %1, i32 12
3328 ; CHECK-NEXT: ret <16 x i8> %2
3329 ; CHECK-NEXT: }
3330
3331 define <16 x i8> @insert_16xi8_at_13(<16 x i8>, i8) {
3332 entry:
3333 %2 = insertelement <16 x i8> %0, i8 %1, i32 13
3334 ret <16 x i8> %2
3335 }
3336 ; CHECK-LABEL: define <16 x i8> @insert_16xi8_at_13(<16 x i8>, i8) {
3337 ; CHECK: entry:
3338 ; CHECK-NEXT: %2 = insertelement <16 x i8> %0, i8 %1, i32 13
3339 ; CHECK-NEXT: ret <16 x i8> %2
3340 ; CHECK-NEXT: }
3341
3342 define <16 x i8> @insert_16xi8_at_14(<16 x i8>, i8) {
3343 entry:
3344 %2 = insertelement <16 x i8> %0, i8 %1, i32 14
3345 ret <16 x i8> %2
3346 }
3347 ; CHECK-LABEL: define <16 x i8> @insert_16xi8_at_14(<16 x i8>, i8) {
3348 ; CHECK: entry:
3349 ; CHECK-NEXT: %2 = insertelement <16 x i8> %0, i8 %1, i32 14
3350 ; CHECK-NEXT: ret <16 x i8> %2
3351 ; CHECK-NEXT: }
3352
3353 define <16 x i8> @insert_16xi8_at_15(<16 x i8>, i8) {
3354 entry:
3355 %2 = insertelement <16 x i8> %0, i8 %1, i32 15
3356 ret <16 x i8> %2
3357 }
3358 ; CHECK-LABEL: define <16 x i8> @insert_16xi8_at_15(<16 x i8>, i8) {
3359 ; CHECK: entry:
3360 ; CHECK-NEXT: %2 = insertelement <16 x i8> %0, i8 %1, i32 15
3361 ; CHECK-NEXT: ret <16 x i8> %2
3362 ; CHECK-NEXT: }
3363
3364 define <16 x i8> @insert_16xi8_undef_idx(<16 x i8>, i8) {
3365 entry:
3366 %2 = insertelement <16 x i8> %0, i8 %1, i32 16
3367 ret <16 x i8> %2
3368 }
3369 ; CHECK-LABEL: define <16 x i8> @insert_16xi8_undef_idx(<16 x i8>, i8) {
3370 ; CHECK: entry:
3371 ; CHECK-NEXT: %2 = insertelement <16 x i8> %0, i8 %1, i32 16
3372 ; CHECK-NEXT: ret <16 x i8> %2
3373 ; CHECK-NEXT: }
3374
3375 define <16 x i16> @insert_16xi16_at_0(<16 x i16>, i16) {
3376 entry:
3377 %2 = insertelement <16 x i16> %0, i16 %1, i32 0
3378 ret <16 x i16> %2
3379 }
3380 ; CHECK-LABEL: define <8 x i16> @insert_16xi16_at_0(<8 x i16>* nocapture nonnull dereferenceable(16), <8 x i16>, <8 x i16>, i16) {
3381 ; CHECK: entry:
3382 ; CHECK-NEXT: %4 = insertelement <8 x i16> %1, i16 %3, i32 0
3383 ; CHECK-NEXT: store <8 x i16> %2, <8 x i16>* %0, align 16
3384 ; CHECK-NEXT: ret <8 x i16> %4
3385 ; CHECK-NEXT: }
3386
3387 define <16 x i16> @insert_16xi16_at_1(<16 x i16>, i16) {
3388 entry:
3389 %2 = insertelement <16 x i16> %0, i16 %1, i32 1
3390 ret <16 x i16> %2
3391 }
3392 ; CHECK-LABEL: define <8 x i16> @insert_16xi16_at_1(<8 x i16>* nocapture nonnull dereferenceable(16), <8 x i16>, <8 x i16>, i16) {
3393 ; CHECK: entry:
3394 ; CHECK-NEXT: %4 = insertelement <8 x i16> %1, i16 %3, i32 1
3395 ; CHECK-NEXT: store <8 x i16> %2, <8 x i16>* %0, align 16
3396 ; CHECK-NEXT: ret <8 x i16> %4
3397 ; CHECK-NEXT: }
3398
3399 define <16 x i16> @insert_16xi16_at_2(<16 x i16>, i16) {
3400 entry:
3401 %2 = insertelement <16 x i16> %0, i16 %1, i32 2
3402 ret <16 x i16> %2
3403 }
3404 ; CHECK-LABEL: define <8 x i16> @insert_16xi16_at_2(<8 x i16>* nocapture nonnull dereferenceable(16), <8 x i16>, <8 x i16>, i16) {
3405 ; CHECK: entry:
3406 ; CHECK-NEXT: %4 = insertelement <8 x i16> %1, i16 %3, i32 2
3407 ; CHECK-NEXT: store <8 x i16> %2, <8 x i16>* %0, align 16
3408 ; CHECK-NEXT: ret <8 x i16> %4
3409 ; CHECK-NEXT: }
3410
3411 define <16 x i16> @insert_16xi16_at_3(<16 x i16>, i16) {
3412 entry:
3413 %2 = insertelement <16 x i16> %0, i16 %1, i32 3
3414 ret <16 x i16> %2
3415 }
3416 ; CHECK-LABEL: define <8 x i16> @insert_16xi16_at_3(<8 x i16>* nocapture nonnull dereferenceable(16), <8 x i16>, <8 x i16>, i16) {
3417 ; CHECK: entry:
3418 ; CHECK-NEXT: %4 = insertelement <8 x i16> %1, i16 %3, i32 3
3419 ; CHECK-NEXT: store <8 x i16> %2, <8 x i16>* %0, align 16
3420 ; CHECK-NEXT: ret <8 x i16> %4
3421 ; CHECK-NEXT: }
3422
3423 define <16 x i16> @insert_16xi16_at_4(<16 x i16>, i16) {
3424 entry:
3425 %2 = insertelement <16 x i16> %0, i16 %1, i32 4
3426 ret <16 x i16> %2
3427 }
3428 ; CHECK-LABEL: define <8 x i16> @insert_16xi16_at_4(<8 x i16>* nocapture nonnull dereferenceable(16), <8 x i16>, <8 x i16>, i16) {
3429 ; CHECK: entry:
3430 ; CHECK-NEXT: %4 = insertelement <8 x i16> %1, i16 %3, i32 4
3431 ; CHECK-NEXT: store <8 x i16> %2, <8 x i16>* %0, align 16
3432 ; CHECK-NEXT: ret <8 x i16> %4
3433 ; CHECK-NEXT: }
3434
3435 define <16 x i16> @insert_16xi16_at_5(<16 x i16>, i16) {
3436 entry:
3437 %2 = insertelement <16 x i16> %0, i16 %1, i32 5
3438 ret <16 x i16> %2
3439 }
3440 ; CHECK-LABEL: define <8 x i16> @insert_16xi16_at_5(<8 x i16>* nocapture nonnull dereferenceable(16), <8 x i16>, <8 x i16>, i16) {
3441 ; CHECK: entry:
3442 ; CHECK-NEXT: %4 = insertelement <8 x i16> %1, i16 %3, i32 5
3443 ; CHECK-NEXT: store <8 x i16> %2, <8 x i16>* %0, align 16
3444 ; CHECK-NEXT: ret <8 x i16> %4
3445 ; CHECK-NEXT: }
3446
3447 define <16 x i16> @insert_16xi16_at_6(<16 x i16>, i16) {
3448 entry:
3449 %2 = insertelement <16 x i16> %0, i16 %1, i32 6
3450 ret <16 x i16> %2
3451 }
3452 ; CHECK-LABEL: define <8 x i16> @insert_16xi16_at_6(<8 x i16>* nocapture nonnull dereferenceable(16), <8 x i16>, <8 x i16>, i16) {
3453 ; CHECK: entry:
3454 ; CHECK-NEXT: %4 = insertelement <8 x i16> %1, i16 %3, i32 6
3455 ; CHECK-NEXT: store <8 x i16> %2, <8 x i16>* %0, align 16
3456 ; CHECK-NEXT: ret <8 x i16> %4
3457 ; CHECK-NEXT: }
3458
3459 define <16 x i16> @insert_16xi16_at_7(<16 x i16>, i16) {
3460 entry:
3461 %2 = insertelement <16 x i16> %0, i16 %1, i32 7
3462 ret <16 x i16> %2
3463 }
3464 ; CHECK-LABEL: define <8 x i16> @insert_16xi16_at_7(<8 x i16>* nocapture nonnull dereferenceable(16), <8 x i16>, <8 x i16>, i16) {
3465 ; CHECK: entry:
3466 ; CHECK-NEXT: %4 = insertelement <8 x i16> %1, i16 %3, i32 7
3467 ; CHECK-NEXT: store <8 x i16> %2, <8 x i16>* %0, align 16
3468 ; CHECK-NEXT: ret <8 x i16> %4
3469 ; CHECK-NEXT: }
3470
3471 define <16 x i16> @insert_16xi16_at_8(<16 x i16>, i16) {
3472 entry:
3473 %2 = insertelement <16 x i16> %0, i16 %1, i32 8
3474 ret <16 x i16> %2
3475 }
3476 ; CHECK-LABEL: define <8 x i16> @insert_16xi16_at_8(<8 x i16>* nocapture nonnull dereferenceable(16), <8 x i16>, <8 x i16>, i16) {
3477 ; CHECK: entry:
3478 ; CHECK-NEXT: %4 = insertelement <8 x i16> %2, i16 %3, i32 0
3479 ; CHECK-NEXT: store <8 x i16> %4, <8 x i16>* %0, align 16
3480 ; CHECK-NEXT: ret <8 x i16> %1
3481 ; CHECK-NEXT: }
3482
3483 define <16 x i16> @insert_16xi16_at_9(<16 x i16>, i16) {
3484 entry:
3485 %2 = insertelement <16 x i16> %0, i16 %1, i32 9
3486 ret <16 x i16> %2
3487 }
3488 ; CHECK-LABEL: define <8 x i16> @insert_16xi16_at_9(<8 x i16>* nocapture nonnull dereferenceable(16), <8 x i16>, <8 x i16>, i16) {
3489 ; CHECK: entry:
3490 ; CHECK-NEXT: %4 = insertelement <8 x i16> %2, i16 %3, i32 1
3491 ; CHECK-NEXT: store <8 x i16> %4, <8 x i16>* %0, align 16
3492 ; CHECK-NEXT: ret <8 x i16> %1
3493 ; CHECK-NEXT: }
3494
3495 define <16 x i16> @insert_16xi16_at_10(<16 x i16>, i16) {
3496 entry:
3497 %2 = insertelement <16 x i16> %0, i16 %1, i32 10
3498 ret <16 x i16> %2
3499 }
3500 ; CHECK-LABEL: define <8 x i16> @insert_16xi16_at_10(<8 x i16>* nocapture nonnul l dereferenceable(16), <8 x i16>, <8 x i16>, i16) {
3501 ; CHECK: entry:
3502 ; CHECK-NEXT: %4 = insertelement <8 x i16> %2, i16 %3, i32 2
3503 ; CHECK-NEXT: store <8 x i16> %4, <8 x i16>* %0, align 16
3504 ; CHECK-NEXT: ret <8 x i16> %1
3505 ; CHECK-NEXT: }
3506
3507 define <16 x i16> @insert_16xi16_at_11(<16 x i16>, i16) {
3508 entry:
3509 %2 = insertelement <16 x i16> %0, i16 %1, i32 11
3510 ret <16 x i16> %2
3511 }
3512 ; CHECK-LABEL: define <8 x i16> @insert_16xi16_at_11(<8 x i16>* nocapture nonnul l dereferenceable(16), <8 x i16>, <8 x i16>, i16) {
3513 ; CHECK: entry:
3514 ; CHECK-NEXT: %4 = insertelement <8 x i16> %2, i16 %3, i32 3
3515 ; CHECK-NEXT: store <8 x i16> %4, <8 x i16>* %0, align 16
3516 ; CHECK-NEXT: ret <8 x i16> %1
3517 ; CHECK-NEXT: }
3518
3519 define <16 x i16> @insert_16xi16_at_12(<16 x i16>, i16) {
3520 entry:
3521 %2 = insertelement <16 x i16> %0, i16 %1, i32 12
3522 ret <16 x i16> %2
3523 }
3524 ; CHECK-LABEL: define <8 x i16> @insert_16xi16_at_12(<8 x i16>* nocapture nonnul l dereferenceable(16), <8 x i16>, <8 x i16>, i16) {
3525 ; CHECK: entry:
3526 ; CHECK-NEXT: %4 = insertelement <8 x i16> %2, i16 %3, i32 4
3527 ; CHECK-NEXT: store <8 x i16> %4, <8 x i16>* %0, align 16
3528 ; CHECK-NEXT: ret <8 x i16> %1
3529 ; CHECK-NEXT: }
3530
3531 define <16 x i16> @insert_16xi16_at_13(<16 x i16>, i16) {
3532 entry:
3533 %2 = insertelement <16 x i16> %0, i16 %1, i32 13
3534 ret <16 x i16> %2
3535 }
3536 ; CHECK-LABEL: define <8 x i16> @insert_16xi16_at_13(<8 x i16>* nocapture nonnul l dereferenceable(16), <8 x i16>, <8 x i16>, i16) {
3537 ; CHECK: entry:
3538 ; CHECK-NEXT: %4 = insertelement <8 x i16> %2, i16 %3, i32 5
3539 ; CHECK-NEXT: store <8 x i16> %4, <8 x i16>* %0, align 16
3540 ; CHECK-NEXT: ret <8 x i16> %1
3541 ; CHECK-NEXT: }
3542
3543 define <16 x i16> @insert_16xi16_at_14(<16 x i16>, i16) {
3544 entry:
3545 %2 = insertelement <16 x i16> %0, i16 %1, i32 14
3546 ret <16 x i16> %2
3547 }
3548 ; CHECK-LABEL: define <8 x i16> @insert_16xi16_at_14(<8 x i16>* nocapture nonnul l dereferenceable(16), <8 x i16>, <8 x i16>, i16) {
3549 ; CHECK: entry:
3550 ; CHECK-NEXT: %4 = insertelement <8 x i16> %2, i16 %3, i32 6
3551 ; CHECK-NEXT: store <8 x i16> %4, <8 x i16>* %0, align 16
3552 ; CHECK-NEXT: ret <8 x i16> %1
3553 ; CHECK-NEXT: }
3554
3555 define <16 x i16> @insert_16xi16_at_15(<16 x i16>, i16) {
3556 entry:
3557 %2 = insertelement <16 x i16> %0, i16 %1, i32 15
3558 ret <16 x i16> %2
3559 }
3560 ; CHECK-LABEL: define <8 x i16> @insert_16xi16_at_15(<8 x i16>* nocapture nonnul l dereferenceable(16), <8 x i16>, <8 x i16>, i16) {
3561 ; CHECK: entry:
3562 ; CHECK-NEXT: %4 = insertelement <8 x i16> %2, i16 %3, i32 7
3563 ; CHECK-NEXT: store <8 x i16> %4, <8 x i16>* %0, align 16
3564 ; CHECK-NEXT: ret <8 x i16> %1
3565 ; CHECK-NEXT: }
3566
3567 define <16 x i16> @insert_16xi16_undef_idx(<16 x i16>, i16) {
3568 entry:
3569 %2 = insertelement <16 x i16> %0, i16 %1, i32 16
3570 ret <16 x i16> %2
3571 }
3572 ; CHECK-LABEL: define <8 x i16> @insert_16xi16_undef_idx(<8 x i16>* nocapture no nnull dereferenceable(16), <8 x i16>, <8 x i16>, i16) {
3573 ; CHECK: entry:
3574 ; CHECK-NEXT: store <8 x i16> %2, <8 x i16>* %0, align 16
3575 ; CHECK-NEXT: ret <8 x i16> %1
3576 ; CHECK-NEXT: }
3577
3578 define <16 x i32> @insert_16xi32_at_0(<16 x i32>, i32) {
3579 entry:
3580 %2 = insertelement <16 x i32> %0, i32 %1, i32 0
3581 ret <16 x i32> %2
3582 }
3583 ; CHECK-LABEL: define <4 x i32> @insert_16xi32_at_0(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32 >* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, i32) {
3584 ; CHECK: entry:
3585 ; CHECK-NEXT: %8 = insertelement <4 x i32> %3, i32 %7, i32 0
3586 ; CHECK-NEXT: store <4 x i32> %4, <4 x i32>* %0, align 16
3587 ; CHECK-NEXT: store <4 x i32> %5, <4 x i32>* %1, align 16
3588 ; CHECK-NEXT: store <4 x i32> %6, <4 x i32>* %2, align 16
3589 ; CHECK-NEXT: ret <4 x i32> %8
3590 ; CHECK-NEXT: }
3591
3592 define <16 x i32> @insert_16xi32_at_1(<16 x i32>, i32) {
3593 entry:
3594 %2 = insertelement <16 x i32> %0, i32 %1, i32 1
3595 ret <16 x i32> %2
3596 }
3597 ; CHECK-LABEL: define <4 x i32> @insert_16xi32_at_1(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32 >* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, i32) {
3598 ; CHECK: entry:
3599 ; CHECK-NEXT: %8 = insertelement <4 x i32> %3, i32 %7, i32 1
3600 ; CHECK-NEXT: store <4 x i32> %4, <4 x i32>* %0, align 16
3601 ; CHECK-NEXT: store <4 x i32> %5, <4 x i32>* %1, align 16
3602 ; CHECK-NEXT: store <4 x i32> %6, <4 x i32>* %2, align 16
3603 ; CHECK-NEXT: ret <4 x i32> %8
3604 ; CHECK-NEXT: }
3605
3606 define <16 x i32> @insert_16xi32_at_2(<16 x i32>, i32) {
3607 entry:
3608 %2 = insertelement <16 x i32> %0, i32 %1, i32 2
3609 ret <16 x i32> %2
3610 }
3611 ; CHECK-LABEL: define <4 x i32> @insert_16xi32_at_2(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32 >* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, i32) {
3612 ; CHECK: entry:
3613 ; CHECK-NEXT: %8 = insertelement <4 x i32> %3, i32 %7, i32 2
3614 ; CHECK-NEXT: store <4 x i32> %4, <4 x i32>* %0, align 16
3615 ; CHECK-NEXT: store <4 x i32> %5, <4 x i32>* %1, align 16
3616 ; CHECK-NEXT: store <4 x i32> %6, <4 x i32>* %2, align 16
3617 ; CHECK-NEXT: ret <4 x i32> %8
3618 ; CHECK-NEXT: }
3619
3620 define <16 x i32> @insert_16xi32_at_3(<16 x i32>, i32) {
3621 entry:
3622 %2 = insertelement <16 x i32> %0, i32 %1, i32 3
3623 ret <16 x i32> %2
3624 }
3625 ; CHECK-LABEL: define <4 x i32> @insert_16xi32_at_3(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32 >* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, i32) {
3626 ; CHECK: entry:
3627 ; CHECK-NEXT: %8 = insertelement <4 x i32> %3, i32 %7, i32 3
3628 ; CHECK-NEXT: store <4 x i32> %4, <4 x i32>* %0, align 16
3629 ; CHECK-NEXT: store <4 x i32> %5, <4 x i32>* %1, align 16
3630 ; CHECK-NEXT: store <4 x i32> %6, <4 x i32>* %2, align 16
3631 ; CHECK-NEXT: ret <4 x i32> %8
3632 ; CHECK-NEXT: }
3633
3634 define <16 x i32> @insert_16xi32_at_4(<16 x i32>, i32) {
3635 entry:
3636 %2 = insertelement <16 x i32> %0, i32 %1, i32 4
3637 ret <16 x i32> %2
3638 }
3639 ; CHECK-LABEL: define <4 x i32> @insert_16xi32_at_4(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32 >* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, i32) {
3640 ; CHECK: entry:
3641 ; CHECK-NEXT: %8 = insertelement <4 x i32> %4, i32 %7, i32 0
3642 ; CHECK-NEXT: store <4 x i32> %8, <4 x i32>* %0, align 16
3643 ; CHECK-NEXT: store <4 x i32> %5, <4 x i32>* %1, align 16
3644 ; CHECK-NEXT: store <4 x i32> %6, <4 x i32>* %2, align 16
3645 ; CHECK-NEXT: ret <4 x i32> %3
3646 ; CHECK-NEXT: }
3647
3648 define <16 x i32> @insert_16xi32_at_5(<16 x i32>, i32) {
3649 entry:
3650 %2 = insertelement <16 x i32> %0, i32 %1, i32 5
3651 ret <16 x i32> %2
3652 }
3653 ; CHECK-LABEL: define <4 x i32> @insert_16xi32_at_5(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32 >* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, i32) {
3654 ; CHECK: entry:
3655 ; CHECK-NEXT: %8 = insertelement <4 x i32> %4, i32 %7, i32 1
3656 ; CHECK-NEXT: store <4 x i32> %8, <4 x i32>* %0, align 16
3657 ; CHECK-NEXT: store <4 x i32> %5, <4 x i32>* %1, align 16
3658 ; CHECK-NEXT: store <4 x i32> %6, <4 x i32>* %2, align 16
3659 ; CHECK-NEXT: ret <4 x i32> %3
3660 ; CHECK-NEXT: }
3661
3662 define <16 x i32> @insert_16xi32_at_6(<16 x i32>, i32) {
3663 entry:
3664 %2 = insertelement <16 x i32> %0, i32 %1, i32 6
3665 ret <16 x i32> %2
3666 }
3667 ; CHECK-LABEL: define <4 x i32> @insert_16xi32_at_6(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32 >* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, i32) {
3668 ; CHECK: entry:
3669 ; CHECK-NEXT: %8 = insertelement <4 x i32> %4, i32 %7, i32 2
3670 ; CHECK-NEXT: store <4 x i32> %8, <4 x i32>* %0, align 16
3671 ; CHECK-NEXT: store <4 x i32> %5, <4 x i32>* %1, align 16
3672 ; CHECK-NEXT: store <4 x i32> %6, <4 x i32>* %2, align 16
3673 ; CHECK-NEXT: ret <4 x i32> %3
3674 ; CHECK-NEXT: }
3675
3676 define <16 x i32> @insert_16xi32_at_7(<16 x i32>, i32) {
3677 entry:
3678 %2 = insertelement <16 x i32> %0, i32 %1, i32 7
3679 ret <16 x i32> %2
3680 }
3681 ; CHECK-LABEL: define <4 x i32> @insert_16xi32_at_7(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32 >* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, i32) {
3682 ; CHECK: entry:
3683 ; CHECK-NEXT: %8 = insertelement <4 x i32> %4, i32 %7, i32 3
3684 ; CHECK-NEXT: store <4 x i32> %8, <4 x i32>* %0, align 16
3685 ; CHECK-NEXT: store <4 x i32> %5, <4 x i32>* %1, align 16
3686 ; CHECK-NEXT: store <4 x i32> %6, <4 x i32>* %2, align 16
3687 ; CHECK-NEXT: ret <4 x i32> %3
3688 ; CHECK-NEXT: }
3689
3690 define <16 x i32> @insert_16xi32_at_8(<16 x i32>, i32) {
3691 entry:
3692 %2 = insertelement <16 x i32> %0, i32 %1, i32 8
3693 ret <16 x i32> %2
3694 }
3695 ; CHECK-LABEL: define <4 x i32> @insert_16xi32_at_8(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32 >* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, i32) {
3696 ; CHECK: entry:
3697 ; CHECK-NEXT: %8 = insertelement <4 x i32> %5, i32 %7, i32 0
3698 ; CHECK-NEXT: store <4 x i32> %4, <4 x i32>* %0, align 16
3699 ; CHECK-NEXT: store <4 x i32> %8, <4 x i32>* %1, align 16
3700 ; CHECK-NEXT: store <4 x i32> %6, <4 x i32>* %2, align 16
3701 ; CHECK-NEXT: ret <4 x i32> %3
3702 ; CHECK-NEXT: }
3703
3704 define <16 x i32> @insert_16xi32_at_9(<16 x i32>, i32) {
3705 entry:
3706 %2 = insertelement <16 x i32> %0, i32 %1, i32 9
3707 ret <16 x i32> %2
3708 }
3709 ; CHECK-LABEL: define <4 x i32> @insert_16xi32_at_9(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32 >* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, i32) {
3710 ; CHECK: entry:
3711 ; CHECK-NEXT: %8 = insertelement <4 x i32> %5, i32 %7, i32 1
3712 ; CHECK-NEXT: store <4 x i32> %4, <4 x i32>* %0, align 16
3713 ; CHECK-NEXT: store <4 x i32> %8, <4 x i32>* %1, align 16
3714 ; CHECK-NEXT: store <4 x i32> %6, <4 x i32>* %2, align 16
3715 ; CHECK-NEXT: ret <4 x i32> %3
3716 ; CHECK-NEXT: }
3717
3718 define <16 x i32> @insert_16xi32_at_10(<16 x i32>, i32) {
3719 entry:
3720 %2 = insertelement <16 x i32> %0, i32 %1, i32 10
3721 ret <16 x i32> %2
3722 }
3723 ; CHECK-LABEL: define <4 x i32> @insert_16xi32_at_10(<4 x i32>* nocapture nonnul l dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i3 2>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, i32) {
3724 ; CHECK: entry:
3725 ; CHECK-NEXT: %8 = insertelement <4 x i32> %5, i32 %7, i32 2
3726 ; CHECK-NEXT: store <4 x i32> %4, <4 x i32>* %0, align 16
3727 ; CHECK-NEXT: store <4 x i32> %8, <4 x i32>* %1, align 16
3728 ; CHECK-NEXT: store <4 x i32> %6, <4 x i32>* %2, align 16
3729 ; CHECK-NEXT: ret <4 x i32> %3
3730 ; CHECK-NEXT: }
3731
3732 define <16 x i32> @insert_16xi32_at_11(<16 x i32>, i32) {
3733 entry:
3734 %2 = insertelement <16 x i32> %0, i32 %1, i32 11
3735 ret <16 x i32> %2
3736 }
3737 ; CHECK-LABEL: define <4 x i32> @insert_16xi32_at_11(<4 x i32>* nocapture nonnul l dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i3 2>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, i32) {
3738 ; CHECK: entry:
3739 ; CHECK-NEXT: %8 = insertelement <4 x i32> %5, i32 %7, i32 3
3740 ; CHECK-NEXT: store <4 x i32> %4, <4 x i32>* %0, align 16
3741 ; CHECK-NEXT: store <4 x i32> %8, <4 x i32>* %1, align 16
3742 ; CHECK-NEXT: store <4 x i32> %6, <4 x i32>* %2, align 16
3743 ; CHECK-NEXT: ret <4 x i32> %3
3744 ; CHECK-NEXT: }
3745
3746 define <16 x i32> @insert_16xi32_at_12(<16 x i32>, i32) {
3747 entry:
3748 %2 = insertelement <16 x i32> %0, i32 %1, i32 12
3749 ret <16 x i32> %2
3750 }
3751 ; CHECK-LABEL: define <4 x i32> @insert_16xi32_at_12(<4 x i32>* nocapture nonnul l dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i3 2>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, i32) {
3752 ; CHECK: entry:
3753 ; CHECK-NEXT: %8 = insertelement <4 x i32> %6, i32 %7, i32 0
3754 ; CHECK-NEXT: store <4 x i32> %4, <4 x i32>* %0, align 16
3755 ; CHECK-NEXT: store <4 x i32> %5, <4 x i32>* %1, align 16
3756 ; CHECK-NEXT: store <4 x i32> %8, <4 x i32>* %2, align 16
3757 ; CHECK-NEXT: ret <4 x i32> %3
3758 ; CHECK-NEXT: }
3759
3760 define <16 x i32> @insert_16xi32_at_13(<16 x i32>, i32) {
3761 entry:
3762 %2 = insertelement <16 x i32> %0, i32 %1, i32 13
3763 ret <16 x i32> %2
3764 }
3765 ; CHECK-LABEL: define <4 x i32> @insert_16xi32_at_13(<4 x i32>* nocapture nonnul l dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i3 2>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, i32) {
3766 ; CHECK: entry:
3767 ; CHECK-NEXT: %8 = insertelement <4 x i32> %6, i32 %7, i32 1
3768 ; CHECK-NEXT: store <4 x i32> %4, <4 x i32>* %0, align 16
3769 ; CHECK-NEXT: store <4 x i32> %5, <4 x i32>* %1, align 16
3770 ; CHECK-NEXT: store <4 x i32> %8, <4 x i32>* %2, align 16
3771 ; CHECK-NEXT: ret <4 x i32> %3
3772 ; CHECK-NEXT: }
3773
3774 define <16 x i32> @insert_16xi32_at_14(<16 x i32>, i32) {
3775 entry:
3776 %2 = insertelement <16 x i32> %0, i32 %1, i32 14
3777 ret <16 x i32> %2
3778 }
3779 ; CHECK-LABEL: define <4 x i32> @insert_16xi32_at_14(<4 x i32>* nocapture nonnul l dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i3 2>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, i32) {
3780 ; CHECK: entry:
3781 ; CHECK-NEXT: %8 = insertelement <4 x i32> %6, i32 %7, i32 2
3782 ; CHECK-NEXT: store <4 x i32> %4, <4 x i32>* %0, align 16
3783 ; CHECK-NEXT: store <4 x i32> %5, <4 x i32>* %1, align 16
3784 ; CHECK-NEXT: store <4 x i32> %8, <4 x i32>* %2, align 16
3785 ; CHECK-NEXT: ret <4 x i32> %3
3786 ; CHECK-NEXT: }
3787
3788 define <16 x i32> @insert_16xi32_at_15(<16 x i32>, i32) {
3789 entry:
3790 %2 = insertelement <16 x i32> %0, i32 %1, i32 15
3791 ret <16 x i32> %2
3792 }
3793 ; CHECK-LABEL: define <4 x i32> @insert_16xi32_at_15(<4 x i32>* nocapture nonnul l dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i3 2>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, i32) {
3794 ; CHECK: entry:
3795 ; CHECK-NEXT: %8 = insertelement <4 x i32> %6, i32 %7, i32 3
3796 ; CHECK-NEXT: store <4 x i32> %4, <4 x i32>* %0, align 16
3797 ; CHECK-NEXT: store <4 x i32> %5, <4 x i32>* %1, align 16
3798 ; CHECK-NEXT: store <4 x i32> %8, <4 x i32>* %2, align 16
3799 ; CHECK-NEXT: ret <4 x i32> %3
3800 ; CHECK-NEXT: }
3801
3802 define <16 x i32> @insert_16xi32_undef_idx(<16 x i32>, i32) {
3803 entry:
3804 %2 = insertelement <16 x i32> %0, i32 %1, i32 16
3805 ret <16 x i32> %2
3806 }
3807 ; CHECK-LABEL: define <4 x i32> @insert_16xi32_undef_idx(<4 x i32>* nocapture no nnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, i32) {
3808 ; CHECK: entry:
3809 ; CHECK-NEXT: store <4 x i32> %4, <4 x i32>* %0, align 16
3810 ; CHECK-NEXT: store <4 x i32> %5, <4 x i32>* %1, align 16
3811 ; CHECK-NEXT: store <4 x i32> %6, <4 x i32>* %2, align 16
3812 ; CHECK-NEXT: ret <4 x i32> %3
3813 ; CHECK-NEXT: }
3814
3815 define <16 x i64> @insert_16xi64_at_0(<16 x i64>, i64) {
3816 entry:
3817 %2 = insertelement <16 x i64> %0, i64 %1, i32 0
3818 ret <16 x i64> %2
3819 }
3820 ; CHECK-LABEL: define <2 x i64> @insert_16xi64_at_0(<2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64 >* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferen ceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocaptu re nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16) , <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, < 2 x i64>, i64) {
3821 ; CHECK: entry:
3822 ; CHECK-NEXT: %16 = insertelement <2 x i64> %7, i64 %15, i32 0
3823 ; CHECK-NEXT: store <2 x i64> %8, <2 x i64>* %0, align 16
3824 ; CHECK-NEXT: store <2 x i64> %9, <2 x i64>* %1, align 16
3825 ; CHECK-NEXT: store <2 x i64> %10, <2 x i64>* %2, align 16
3826 ; CHECK-NEXT: store <2 x i64> %11, <2 x i64>* %3, align 16
3827 ; CHECK-NEXT: store <2 x i64> %12, <2 x i64>* %4, align 16
3828 ; CHECK-NEXT: store <2 x i64> %13, <2 x i64>* %5, align 16
3829 ; CHECK-NEXT: store <2 x i64> %14, <2 x i64>* %6, align 16
3830 ; CHECK-NEXT: ret <2 x i64> %16
3831 ; CHECK-NEXT: }
3832
3833 define <16 x i64> @insert_16xi64_at_1(<16 x i64>, i64) {
3834 entry:
3835 %2 = insertelement <16 x i64> %0, i64 %1, i32 1
3836 ret <16 x i64> %2
3837 }
3838 ; CHECK-LABEL: define <2 x i64> @insert_16xi64_at_1(<2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64 >* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferen ceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocaptu re nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16) , <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, < 2 x i64>, i64) {
3839 ; CHECK: entry:
3840 ; CHECK-NEXT: %16 = insertelement <2 x i64> %7, i64 %15, i32 1
3841 ; CHECK-NEXT: store <2 x i64> %8, <2 x i64>* %0, align 16
3842 ; CHECK-NEXT: store <2 x i64> %9, <2 x i64>* %1, align 16
3843 ; CHECK-NEXT: store <2 x i64> %10, <2 x i64>* %2, align 16
3844 ; CHECK-NEXT: store <2 x i64> %11, <2 x i64>* %3, align 16
3845 ; CHECK-NEXT: store <2 x i64> %12, <2 x i64>* %4, align 16
3846 ; CHECK-NEXT: store <2 x i64> %13, <2 x i64>* %5, align 16
3847 ; CHECK-NEXT: store <2 x i64> %14, <2 x i64>* %6, align 16
3848 ; CHECK-NEXT: ret <2 x i64> %16
3849 ; CHECK-NEXT: }
3850
3851 define <16 x i64> @insert_16xi64_at_2(<16 x i64>, i64) {
3852 entry:
3853 %2 = insertelement <16 x i64> %0, i64 %1, i32 2
3854 ret <16 x i64> %2
3855 }
3856 ; CHECK-LABEL: define <2 x i64> @insert_16xi64_at_2(<2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64 >* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferen ceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocaptu re nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16) , <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, < 2 x i64>, i64) {
3857 ; CHECK: entry:
3858 ; CHECK-NEXT: %16 = insertelement <2 x i64> %8, i64 %15, i32 0
3859 ; CHECK-NEXT: store <2 x i64> %16, <2 x i64>* %0, align 16
3860 ; CHECK-NEXT: store <2 x i64> %9, <2 x i64>* %1, align 16
3861 ; CHECK-NEXT: store <2 x i64> %10, <2 x i64>* %2, align 16
3862 ; CHECK-NEXT: store <2 x i64> %11, <2 x i64>* %3, align 16
3863 ; CHECK-NEXT: store <2 x i64> %12, <2 x i64>* %4, align 16
3864 ; CHECK-NEXT: store <2 x i64> %13, <2 x i64>* %5, align 16
3865 ; CHECK-NEXT: store <2 x i64> %14, <2 x i64>* %6, align 16
3866 ; CHECK-NEXT: ret <2 x i64> %7
3867 ; CHECK-NEXT: }
3868
3869 define <16 x i64> @insert_16xi64_at_3(<16 x i64>, i64) {
3870 entry:
3871 %2 = insertelement <16 x i64> %0, i64 %1, i32 3
3872 ret <16 x i64> %2
3873 }
3874 ; CHECK-LABEL: define <2 x i64> @insert_16xi64_at_3(<2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64 >* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferen ceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocaptu re nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16) , <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, < 2 x i64>, i64) {
3875 ; CHECK: entry:
3876 ; CHECK-NEXT: %16 = insertelement <2 x i64> %8, i64 %15, i32 1
3877 ; CHECK-NEXT: store <2 x i64> %16, <2 x i64>* %0, align 16
3878 ; CHECK-NEXT: store <2 x i64> %9, <2 x i64>* %1, align 16
3879 ; CHECK-NEXT: store <2 x i64> %10, <2 x i64>* %2, align 16
3880 ; CHECK-NEXT: store <2 x i64> %11, <2 x i64>* %3, align 16
3881 ; CHECK-NEXT: store <2 x i64> %12, <2 x i64>* %4, align 16
3882 ; CHECK-NEXT: store <2 x i64> %13, <2 x i64>* %5, align 16
3883 ; CHECK-NEXT: store <2 x i64> %14, <2 x i64>* %6, align 16
3884 ; CHECK-NEXT: ret <2 x i64> %7
3885 ; CHECK-NEXT: }
3886
3887 define <16 x i64> @insert_16xi64_at_4(<16 x i64>, i64) {
3888 entry:
3889 %2 = insertelement <16 x i64> %0, i64 %1, i32 4
3890 ret <16 x i64> %2
3891 }
3892 ; CHECK-LABEL: define <2 x i64> @insert_16xi64_at_4(<2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64 >* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferen ceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocaptu re nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16) , <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, < 2 x i64>, i64) {
3893 ; CHECK: entry:
3894 ; CHECK-NEXT: %16 = insertelement <2 x i64> %9, i64 %15, i32 0
3895 ; CHECK-NEXT: store <2 x i64> %8, <2 x i64>* %0, align 16
3896 ; CHECK-NEXT: store <2 x i64> %16, <2 x i64>* %1, align 16
3897 ; CHECK-NEXT: store <2 x i64> %10, <2 x i64>* %2, align 16
3898 ; CHECK-NEXT: store <2 x i64> %11, <2 x i64>* %3, align 16
3899 ; CHECK-NEXT: store <2 x i64> %12, <2 x i64>* %4, align 16
3900 ; CHECK-NEXT: store <2 x i64> %13, <2 x i64>* %5, align 16
3901 ; CHECK-NEXT: store <2 x i64> %14, <2 x i64>* %6, align 16
3902 ; CHECK-NEXT: ret <2 x i64> %7
3903 ; CHECK-NEXT: }
3904
3905 define <16 x i64> @insert_16xi64_at_5(<16 x i64>, i64) {
3906 entry:
3907 %2 = insertelement <16 x i64> %0, i64 %1, i32 5
3908 ret <16 x i64> %2
3909 }
3910 ; CHECK-LABEL: define <2 x i64> @insert_16xi64_at_5(<2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64 >* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferen ceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocaptu re nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16) , <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, < 2 x i64>, i64) {
3911 ; CHECK: entry:
3912 ; CHECK-NEXT: %16 = insertelement <2 x i64> %9, i64 %15, i32 1
3913 ; CHECK-NEXT: store <2 x i64> %8, <2 x i64>* %0, align 16
3914 ; CHECK-NEXT: store <2 x i64> %16, <2 x i64>* %1, align 16
3915 ; CHECK-NEXT: store <2 x i64> %10, <2 x i64>* %2, align 16
3916 ; CHECK-NEXT: store <2 x i64> %11, <2 x i64>* %3, align 16
3917 ; CHECK-NEXT: store <2 x i64> %12, <2 x i64>* %4, align 16
3918 ; CHECK-NEXT: store <2 x i64> %13, <2 x i64>* %5, align 16
3919 ; CHECK-NEXT: store <2 x i64> %14, <2 x i64>* %6, align 16
3920 ; CHECK-NEXT: ret <2 x i64> %7
3921 ; CHECK-NEXT: }
3922
3923 define <16 x i64> @insert_16xi64_at_6(<16 x i64>, i64) {
3924 entry:
3925 %2 = insertelement <16 x i64> %0, i64 %1, i32 6
3926 ret <16 x i64> %2
3927 }
3928 ; CHECK-LABEL: define <2 x i64> @insert_16xi64_at_6(<2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64 >* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferen ceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocaptu re nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16) , <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, < 2 x i64>, i64) {
3929 ; CHECK: entry:
3930 ; CHECK-NEXT: %16 = insertelement <2 x i64> %10, i64 %15, i32 0
3931 ; CHECK-NEXT: store <2 x i64> %8, <2 x i64>* %0, align 16
3932 ; CHECK-NEXT: store <2 x i64> %9, <2 x i64>* %1, align 16
3933 ; CHECK-NEXT: store <2 x i64> %16, <2 x i64>* %2, align 16
3934 ; CHECK-NEXT: store <2 x i64> %11, <2 x i64>* %3, align 16
3935 ; CHECK-NEXT: store <2 x i64> %12, <2 x i64>* %4, align 16
3936 ; CHECK-NEXT: store <2 x i64> %13, <2 x i64>* %5, align 16
3937 ; CHECK-NEXT: store <2 x i64> %14, <2 x i64>* %6, align 16
3938 ; CHECK-NEXT: ret <2 x i64> %7
3939 ; CHECK-NEXT: }
3940
3941 define <16 x i64> @insert_16xi64_at_7(<16 x i64>, i64) {
3942 entry:
3943 %2 = insertelement <16 x i64> %0, i64 %1, i32 7
3944 ret <16 x i64> %2
3945 }
3946 ; CHECK-LABEL: define <2 x i64> @insert_16xi64_at_7(<2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64 >* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferen ceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocaptu re nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16) , <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, < 2 x i64>, i64) {
3947 ; CHECK: entry:
3948 ; CHECK-NEXT: %16 = insertelement <2 x i64> %10, i64 %15, i32 1
3949 ; CHECK-NEXT: store <2 x i64> %8, <2 x i64>* %0, align 16
3950 ; CHECK-NEXT: store <2 x i64> %9, <2 x i64>* %1, align 16
3951 ; CHECK-NEXT: store <2 x i64> %16, <2 x i64>* %2, align 16
3952 ; CHECK-NEXT: store <2 x i64> %11, <2 x i64>* %3, align 16
3953 ; CHECK-NEXT: store <2 x i64> %12, <2 x i64>* %4, align 16
3954 ; CHECK-NEXT: store <2 x i64> %13, <2 x i64>* %5, align 16
3955 ; CHECK-NEXT: store <2 x i64> %14, <2 x i64>* %6, align 16
3956 ; CHECK-NEXT: ret <2 x i64> %7
3957 ; CHECK-NEXT: }
3958
3959 define <16 x i64> @insert_16xi64_at_8(<16 x i64>, i64) {
3960 entry:
3961 %2 = insertelement <16 x i64> %0, i64 %1, i32 8
3962 ret <16 x i64> %2
3963 }
3964 ; CHECK-LABEL: define <2 x i64> @insert_16xi64_at_8(<2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64 >* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferen ceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocaptu re nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16) , <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, < 2 x i64>, i64) {
3965 ; CHECK: entry:
3966 ; CHECK-NEXT: %16 = insertelement <2 x i64> %11, i64 %15, i32 0
3967 ; CHECK-NEXT: store <2 x i64> %8, <2 x i64>* %0, align 16
3968 ; CHECK-NEXT: store <2 x i64> %9, <2 x i64>* %1, align 16
3969 ; CHECK-NEXT: store <2 x i64> %10, <2 x i64>* %2, align 16
3970 ; CHECK-NEXT: store <2 x i64> %16, <2 x i64>* %3, align 16
3971 ; CHECK-NEXT: store <2 x i64> %12, <2 x i64>* %4, align 16
3972 ; CHECK-NEXT: store <2 x i64> %13, <2 x i64>* %5, align 16
3973 ; CHECK-NEXT: store <2 x i64> %14, <2 x i64>* %6, align 16
3974 ; CHECK-NEXT: ret <2 x i64> %7
3975 ; CHECK-NEXT: }
3976
3977 define <16 x i64> @insert_16xi64_at_9(<16 x i64>, i64) {
3978 entry:
3979 %2 = insertelement <16 x i64> %0, i64 %1, i32 9
3980 ret <16 x i64> %2
3981 }
3982 ; CHECK-LABEL: define <2 x i64> @insert_16xi64_at_9(<2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64 >* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferen ceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocaptu re nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16) , <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, < 2 x i64>, i64) {
3983 ; CHECK: entry:
3984 ; CHECK-NEXT: %16 = insertelement <2 x i64> %11, i64 %15, i32 1
3985 ; CHECK-NEXT: store <2 x i64> %8, <2 x i64>* %0, align 16
3986 ; CHECK-NEXT: store <2 x i64> %9, <2 x i64>* %1, align 16
3987 ; CHECK-NEXT: store <2 x i64> %10, <2 x i64>* %2, align 16
3988 ; CHECK-NEXT: store <2 x i64> %16, <2 x i64>* %3, align 16
3989 ; CHECK-NEXT: store <2 x i64> %12, <2 x i64>* %4, align 16
3990 ; CHECK-NEXT: store <2 x i64> %13, <2 x i64>* %5, align 16
3991 ; CHECK-NEXT: store <2 x i64> %14, <2 x i64>* %6, align 16
3992 ; CHECK-NEXT: ret <2 x i64> %7
3993 ; CHECK-NEXT: }
3994
3995 define <16 x i64> @insert_16xi64_at_10(<16 x i64>, i64) {
3996 entry:
3997 %2 = insertelement <16 x i64> %0, i64 %1, i32 10
3998 ret <16 x i64> %2
3999 }
4000 ; CHECK-LABEL: define <2 x i64> @insert_16xi64_at_10(<2 x i64>* nocapture nonnul l dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i6 4>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull derefere nceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapt ure nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16 ), <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, i64) {
4001 ; CHECK: entry:
4002 ; CHECK-NEXT: %16 = insertelement <2 x i64> %12, i64 %15, i32 0
4003 ; CHECK-NEXT: store <2 x i64> %8, <2 x i64>* %0, align 16
4004 ; CHECK-NEXT: store <2 x i64> %9, <2 x i64>* %1, align 16
4005 ; CHECK-NEXT: store <2 x i64> %10, <2 x i64>* %2, align 16
4006 ; CHECK-NEXT: store <2 x i64> %11, <2 x i64>* %3, align 16
4007 ; CHECK-NEXT: store <2 x i64> %16, <2 x i64>* %4, align 16
4008 ; CHECK-NEXT: store <2 x i64> %13, <2 x i64>* %5, align 16
4009 ; CHECK-NEXT: store <2 x i64> %14, <2 x i64>* %6, align 16
4010 ; CHECK-NEXT: ret <2 x i64> %7
4011 ; CHECK-NEXT: }
4012
4013 define <16 x i64> @insert_16xi64_at_11(<16 x i64>, i64) {
4014 entry:
4015 %2 = insertelement <16 x i64> %0, i64 %1, i32 11
4016 ret <16 x i64> %2
4017 }
4018 ; CHECK-LABEL: define <2 x i64> @insert_16xi64_at_11(<2 x i64>* nocapture nonnul l dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i6 4>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull derefere nceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapt ure nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16 ), <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, i64) {
4019 ; CHECK: entry:
4020 ; CHECK-NEXT: %16 = insertelement <2 x i64> %12, i64 %15, i32 1
4021 ; CHECK-NEXT: store <2 x i64> %8, <2 x i64>* %0, align 16
4022 ; CHECK-NEXT: store <2 x i64> %9, <2 x i64>* %1, align 16
4023 ; CHECK-NEXT: store <2 x i64> %10, <2 x i64>* %2, align 16
4024 ; CHECK-NEXT: store <2 x i64> %11, <2 x i64>* %3, align 16
4025 ; CHECK-NEXT: store <2 x i64> %16, <2 x i64>* %4, align 16
4026 ; CHECK-NEXT: store <2 x i64> %13, <2 x i64>* %5, align 16
4027 ; CHECK-NEXT: store <2 x i64> %14, <2 x i64>* %6, align 16
4028 ; CHECK-NEXT: ret <2 x i64> %7
4029 ; CHECK-NEXT: }
4030
4031 define <16 x i64> @insert_16xi64_at_12(<16 x i64>, i64) {
4032 entry:
4033 %2 = insertelement <16 x i64> %0, i64 %1, i32 12
4034 ret <16 x i64> %2
4035 }
4036 ; CHECK-LABEL: define <2 x i64> @insert_16xi64_at_12(<2 x i64>* nocapture nonnul l dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i6 4>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull derefere nceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapt ure nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16 ), <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, i64) {
4037 ; CHECK: entry:
4038 ; CHECK-NEXT: %16 = insertelement <2 x i64> %13, i64 %15, i32 0
4039 ; CHECK-NEXT: store <2 x i64> %8, <2 x i64>* %0, align 16
4040 ; CHECK-NEXT: store <2 x i64> %9, <2 x i64>* %1, align 16
4041 ; CHECK-NEXT: store <2 x i64> %10, <2 x i64>* %2, align 16
4042 ; CHECK-NEXT: store <2 x i64> %11, <2 x i64>* %3, align 16
4043 ; CHECK-NEXT: store <2 x i64> %12, <2 x i64>* %4, align 16
4044 ; CHECK-NEXT: store <2 x i64> %16, <2 x i64>* %5, align 16
4045 ; CHECK-NEXT: store <2 x i64> %14, <2 x i64>* %6, align 16
4046 ; CHECK-NEXT: ret <2 x i64> %7
4047 ; CHECK-NEXT: }
4048
4049 define <16 x i64> @insert_16xi64_at_13(<16 x i64>, i64) {
4050 entry:
4051 %2 = insertelement <16 x i64> %0, i64 %1, i32 13
4052 ret <16 x i64> %2
4053 }
4054 ; CHECK-LABEL: define <2 x i64> @insert_16xi64_at_13(<2 x i64>* nocapture nonnul l dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i6 4>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull derefere nceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapt ure nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16 ), <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, i64) {
4055 ; CHECK: entry:
4056 ; CHECK-NEXT: %16 = insertelement <2 x i64> %13, i64 %15, i32 1
4057 ; CHECK-NEXT: store <2 x i64> %8, <2 x i64>* %0, align 16
4058 ; CHECK-NEXT: store <2 x i64> %9, <2 x i64>* %1, align 16
4059 ; CHECK-NEXT: store <2 x i64> %10, <2 x i64>* %2, align 16
4060 ; CHECK-NEXT: store <2 x i64> %11, <2 x i64>* %3, align 16
4061 ; CHECK-NEXT: store <2 x i64> %12, <2 x i64>* %4, align 16
4062 ; CHECK-NEXT: store <2 x i64> %16, <2 x i64>* %5, align 16
4063 ; CHECK-NEXT: store <2 x i64> %14, <2 x i64>* %6, align 16
4064 ; CHECK-NEXT: ret <2 x i64> %7
4065 ; CHECK-NEXT: }
4066
4067 define <16 x i64> @insert_16xi64_at_14(<16 x i64>, i64) {
4068 entry:
4069 %2 = insertelement <16 x i64> %0, i64 %1, i32 14
4070 ret <16 x i64> %2
4071 }
4072 ; CHECK-LABEL: define <2 x i64> @insert_16xi64_at_14(<2 x i64>* nocapture nonnul l dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i6 4>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull derefere nceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapt ure nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16 ), <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, i64) {
4073 ; CHECK: entry:
4074 ; CHECK-NEXT: %16 = insertelement <2 x i64> %14, i64 %15, i32 0
4075 ; CHECK-NEXT: store <2 x i64> %8, <2 x i64>* %0, align 16
4076 ; CHECK-NEXT: store <2 x i64> %9, <2 x i64>* %1, align 16
4077 ; CHECK-NEXT: store <2 x i64> %10, <2 x i64>* %2, align 16
4078 ; CHECK-NEXT: store <2 x i64> %11, <2 x i64>* %3, align 16
4079 ; CHECK-NEXT: store <2 x i64> %12, <2 x i64>* %4, align 16
4080 ; CHECK-NEXT: store <2 x i64> %13, <2 x i64>* %5, align 16
4081 ; CHECK-NEXT: store <2 x i64> %16, <2 x i64>* %6, align 16
4082 ; CHECK-NEXT: ret <2 x i64> %7
4083 ; CHECK-NEXT: }
4084
4085 define <16 x i64> @insert_16xi64_at_15(<16 x i64>, i64) {
4086 entry:
4087 %2 = insertelement <16 x i64> %0, i64 %1, i32 15
4088 ret <16 x i64> %2
4089 }
4090 ; CHECK-LABEL: define <2 x i64> @insert_16xi64_at_15(<2 x i64>* nocapture nonnul l dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i6 4>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull derefere nceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapt ure nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16 ), <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, i64) {
4091 ; CHECK: entry:
4092 ; CHECK-NEXT: %16 = insertelement <2 x i64> %14, i64 %15, i32 1
4093 ; CHECK-NEXT: store <2 x i64> %8, <2 x i64>* %0, align 16
4094 ; CHECK-NEXT: store <2 x i64> %9, <2 x i64>* %1, align 16
4095 ; CHECK-NEXT: store <2 x i64> %10, <2 x i64>* %2, align 16
4096 ; CHECK-NEXT: store <2 x i64> %11, <2 x i64>* %3, align 16
4097 ; CHECK-NEXT: store <2 x i64> %12, <2 x i64>* %4, align 16
4098 ; CHECK-NEXT: store <2 x i64> %13, <2 x i64>* %5, align 16
4099 ; CHECK-NEXT: store <2 x i64> %16, <2 x i64>* %6, align 16
4100 ; CHECK-NEXT: ret <2 x i64> %7
4101 ; CHECK-NEXT: }
4102
4103 define <16 x i64> @insert_16xi64_undef_idx(<16 x i64>, i64) {
4104 entry:
4105 %2 = insertelement <16 x i64> %0, i64 %1, i32 16
4106 ret <16 x i64> %2
4107 }
4108 ; CHECK-LABEL: define <2 x i64> @insert_16xi64_undef_idx(<2 x i64>* nocapture no nnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dere ferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* no capture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceabl e(16), <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i6 4>, <2 x i64>, i64) {
4109 ; CHECK: entry:
4110 ; CHECK-NEXT: store <2 x i64> %8, <2 x i64>* %0, align 16
4111 ; CHECK-NEXT: store <2 x i64> %9, <2 x i64>* %1, align 16
4112 ; CHECK-NEXT: store <2 x i64> %10, <2 x i64>* %2, align 16
4113 ; CHECK-NEXT: store <2 x i64> %11, <2 x i64>* %3, align 16
4114 ; CHECK-NEXT: store <2 x i64> %12, <2 x i64>* %4, align 16
4115 ; CHECK-NEXT: store <2 x i64> %13, <2 x i64>* %5, align 16
4116 ; CHECK-NEXT: store <2 x i64> %14, <2 x i64>* %6, align 16
4117 ; CHECK-NEXT: ret <2 x i64> %7
4118 ; CHECK-NEXT: }
4119
4120 define <16 x i8*> @insert_16xi8ptr_at_0(<16 x i8*>, i8*) {
4121 entry:
4122 %2 = insertelement <16 x i8*> %0, i8* %1, i32 0
4123 ret <16 x i8*> %2
4124 }
4125 ; CHECK-LABEL: define <4 x i8*> @insert_16xi8ptr_at_0(<4 x i8*>* nocapture nonnu ll dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i 8*>* nocapture nonnull dereferenceable(16), <4 x i8*>, <4 x i8*>, <4 x i8*>, <4 x i8*>, i8*) {
4126 ; CHECK: entry:
4127 ; CHECK-NEXT: %8 = insertelement <4 x i8*> %3, i8* %7, i32 0
4128 ; CHECK-NEXT: store <4 x i8*> %4, <4 x i8*>* %0, align 16
4129 ; CHECK-NEXT: store <4 x i8*> %5, <4 x i8*>* %1, align 16
4130 ; CHECK-NEXT: store <4 x i8*> %6, <4 x i8*>* %2, align 16
4131 ; CHECK-NEXT: ret <4 x i8*> %8
4132 ; CHECK-NEXT: }
4133
4134 define <16 x i8*> @insert_16xi8ptr_at_1(<16 x i8*>, i8*) {
4135 entry:
4136 %2 = insertelement <16 x i8*> %0, i8* %1, i32 1
4137 ret <16 x i8*> %2
4138 }
4139 ; CHECK-LABEL: define <4 x i8*> @insert_16xi8ptr_at_1(<4 x i8*>* nocapture nonnu ll dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i 8*>* nocapture nonnull dereferenceable(16), <4 x i8*>, <4 x i8*>, <4 x i8*>, <4 x i8*>, i8*) {
4140 ; CHECK: entry:
4141 ; CHECK-NEXT: %8 = insertelement <4 x i8*> %3, i8* %7, i32 1
4142 ; CHECK-NEXT: store <4 x i8*> %4, <4 x i8*>* %0, align 16
4143 ; CHECK-NEXT: store <4 x i8*> %5, <4 x i8*>* %1, align 16
4144 ; CHECK-NEXT: store <4 x i8*> %6, <4 x i8*>* %2, align 16
4145 ; CHECK-NEXT: ret <4 x i8*> %8
4146 ; CHECK-NEXT: }
4147
4148 define <16 x i8*> @insert_16xi8ptr_at_2(<16 x i8*>, i8*) {
4149 entry:
4150 %2 = insertelement <16 x i8*> %0, i8* %1, i32 2
4151 ret <16 x i8*> %2
4152 }
4153 ; CHECK-LABEL: define <4 x i8*> @insert_16xi8ptr_at_2(<4 x i8*>* nocapture nonnu ll dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i 8*>* nocapture nonnull dereferenceable(16), <4 x i8*>, <4 x i8*>, <4 x i8*>, <4 x i8*>, i8*) {
4154 ; CHECK: entry:
4155 ; CHECK-NEXT: %8 = insertelement <4 x i8*> %3, i8* %7, i32 2
4156 ; CHECK-NEXT: store <4 x i8*> %4, <4 x i8*>* %0, align 16
4157 ; CHECK-NEXT: store <4 x i8*> %5, <4 x i8*>* %1, align 16
4158 ; CHECK-NEXT: store <4 x i8*> %6, <4 x i8*>* %2, align 16
4159 ; CHECK-NEXT: ret <4 x i8*> %8
4160 ; CHECK-NEXT: }
4161
4162 define <16 x i8*> @insert_16xi8ptr_at_3(<16 x i8*>, i8*) {
4163 entry:
4164 %2 = insertelement <16 x i8*> %0, i8* %1, i32 3
4165 ret <16 x i8*> %2
4166 }
4167 ; CHECK-LABEL: define <4 x i8*> @insert_16xi8ptr_at_3(<4 x i8*>* nocapture nonnu ll dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i 8*>* nocapture nonnull dereferenceable(16), <4 x i8*>, <4 x i8*>, <4 x i8*>, <4 x i8*>, i8*) {
4168 ; CHECK: entry:
4169 ; CHECK-NEXT: %8 = insertelement <4 x i8*> %3, i8* %7, i32 3
4170 ; CHECK-NEXT: store <4 x i8*> %4, <4 x i8*>* %0, align 16
4171 ; CHECK-NEXT: store <4 x i8*> %5, <4 x i8*>* %1, align 16
4172 ; CHECK-NEXT: store <4 x i8*> %6, <4 x i8*>* %2, align 16
4173 ; CHECK-NEXT: ret <4 x i8*> %8
4174 ; CHECK-NEXT: }
4175
4176 define <16 x i8*> @insert_16xi8ptr_at_4(<16 x i8*>, i8*) {
4177 entry:
4178 %2 = insertelement <16 x i8*> %0, i8* %1, i32 4
4179 ret <16 x i8*> %2
4180 }
4181 ; CHECK-LABEL: define <4 x i8*> @insert_16xi8ptr_at_4(<4 x i8*>* nocapture nonnu ll dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i 8*>* nocapture nonnull dereferenceable(16), <4 x i8*>, <4 x i8*>, <4 x i8*>, <4 x i8*>, i8*) {
4182 ; CHECK: entry:
4183 ; CHECK-NEXT: %8 = insertelement <4 x i8*> %4, i8* %7, i32 0
4184 ; CHECK-NEXT: store <4 x i8*> %8, <4 x i8*>* %0, align 16
4185 ; CHECK-NEXT: store <4 x i8*> %5, <4 x i8*>* %1, align 16
4186 ; CHECK-NEXT: store <4 x i8*> %6, <4 x i8*>* %2, align 16
4187 ; CHECK-NEXT: ret <4 x i8*> %3
4188 ; CHECK-NEXT: }
4189
4190 define <16 x i8*> @insert_16xi8ptr_at_5(<16 x i8*>, i8*) {
4191 entry:
4192 %2 = insertelement <16 x i8*> %0, i8* %1, i32 5
4193 ret <16 x i8*> %2
4194 }
4195 ; CHECK-LABEL: define <4 x i8*> @insert_16xi8ptr_at_5(<4 x i8*>* nocapture nonnu ll dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i 8*>* nocapture nonnull dereferenceable(16), <4 x i8*>, <4 x i8*>, <4 x i8*>, <4 x i8*>, i8*) {
4196 ; CHECK: entry:
4197 ; CHECK-NEXT: %8 = insertelement <4 x i8*> %4, i8* %7, i32 1
4198 ; CHECK-NEXT: store <4 x i8*> %8, <4 x i8*>* %0, align 16
4199 ; CHECK-NEXT: store <4 x i8*> %5, <4 x i8*>* %1, align 16
4200 ; CHECK-NEXT: store <4 x i8*> %6, <4 x i8*>* %2, align 16
4201 ; CHECK-NEXT: ret <4 x i8*> %3
4202 ; CHECK-NEXT: }
4203
4204 define <16 x i8*> @insert_16xi8ptr_at_6(<16 x i8*>, i8*) {
4205 entry:
4206 %2 = insertelement <16 x i8*> %0, i8* %1, i32 6
4207 ret <16 x i8*> %2
4208 }
4209 ; CHECK-LABEL: define <4 x i8*> @insert_16xi8ptr_at_6(<4 x i8*>* nocapture nonnu ll dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i 8*>* nocapture nonnull dereferenceable(16), <4 x i8*>, <4 x i8*>, <4 x i8*>, <4 x i8*>, i8*) {
4210 ; CHECK: entry:
4211 ; CHECK-NEXT: %8 = insertelement <4 x i8*> %4, i8* %7, i32 2
4212 ; CHECK-NEXT: store <4 x i8*> %8, <4 x i8*>* %0, align 16
4213 ; CHECK-NEXT: store <4 x i8*> %5, <4 x i8*>* %1, align 16
4214 ; CHECK-NEXT: store <4 x i8*> %6, <4 x i8*>* %2, align 16
4215 ; CHECK-NEXT: ret <4 x i8*> %3
4216 ; CHECK-NEXT: }
4217
4218 define <16 x i8*> @insert_16xi8ptr_at_7(<16 x i8*>, i8*) {
4219 entry:
4220 %2 = insertelement <16 x i8*> %0, i8* %1, i32 7
4221 ret <16 x i8*> %2
4222 }
4223 ; CHECK-LABEL: define <4 x i8*> @insert_16xi8ptr_at_7(<4 x i8*>* nocapture nonnu ll dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i 8*>* nocapture nonnull dereferenceable(16), <4 x i8*>, <4 x i8*>, <4 x i8*>, <4 x i8*>, i8*) {
4224 ; CHECK: entry:
4225 ; CHECK-NEXT: %8 = insertelement <4 x i8*> %4, i8* %7, i32 3
4226 ; CHECK-NEXT: store <4 x i8*> %8, <4 x i8*>* %0, align 16
4227 ; CHECK-NEXT: store <4 x i8*> %5, <4 x i8*>* %1, align 16
4228 ; CHECK-NEXT: store <4 x i8*> %6, <4 x i8*>* %2, align 16
4229 ; CHECK-NEXT: ret <4 x i8*> %3
4230 ; CHECK-NEXT: }
4231
4232 define <16 x i8*> @insert_16xi8ptr_at_8(<16 x i8*>, i8*) {
4233 entry:
4234 %2 = insertelement <16 x i8*> %0, i8* %1, i32 8
4235 ret <16 x i8*> %2
4236 }
4237 ; CHECK-LABEL: define <4 x i8*> @insert_16xi8ptr_at_8(<4 x i8*>* nocapture nonnu ll dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i 8*>* nocapture nonnull dereferenceable(16), <4 x i8*>, <4 x i8*>, <4 x i8*>, <4 x i8*>, i8*) {
4238 ; CHECK: entry:
4239 ; CHECK-NEXT: %8 = insertelement <4 x i8*> %5, i8* %7, i32 0
4240 ; CHECK-NEXT: store <4 x i8*> %4, <4 x i8*>* %0, align 16
4241 ; CHECK-NEXT: store <4 x i8*> %8, <4 x i8*>* %1, align 16
4242 ; CHECK-NEXT: store <4 x i8*> %6, <4 x i8*>* %2, align 16
4243 ; CHECK-NEXT: ret <4 x i8*> %3
4244 ; CHECK-NEXT: }
4245
4246 define <16 x i8*> @insert_16xi8ptr_at_9(<16 x i8*>, i8*) {
4247 entry:
4248 %2 = insertelement <16 x i8*> %0, i8* %1, i32 9
4249 ret <16 x i8*> %2
4250 }
4251 ; CHECK-LABEL: define <4 x i8*> @insert_16xi8ptr_at_9(<4 x i8*>* nocapture nonnu ll dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i 8*>* nocapture nonnull dereferenceable(16), <4 x i8*>, <4 x i8*>, <4 x i8*>, <4 x i8*>, i8*) {
4252 ; CHECK: entry:
4253 ; CHECK-NEXT: %8 = insertelement <4 x i8*> %5, i8* %7, i32 1
4254 ; CHECK-NEXT: store <4 x i8*> %4, <4 x i8*>* %0, align 16
4255 ; CHECK-NEXT: store <4 x i8*> %8, <4 x i8*>* %1, align 16
4256 ; CHECK-NEXT: store <4 x i8*> %6, <4 x i8*>* %2, align 16
4257 ; CHECK-NEXT: ret <4 x i8*> %3
4258 ; CHECK-NEXT: }
4259
4260 define <16 x i8*> @insert_16xi8ptr_at_10(<16 x i8*>, i8*) {
4261 entry:
4262 %2 = insertelement <16 x i8*> %0, i8* %1, i32 10
4263 ret <16 x i8*> %2
4264 }
4265 ; CHECK-LABEL: define <4 x i8*> @insert_16xi8ptr_at_10(<4 x i8*>* nocapture nonn ull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>, <4 x i8*>, <4 x i8*>, <4 x i8*>, i8*) {
4266 ; CHECK: entry:
4267 ; CHECK-NEXT: %8 = insertelement <4 x i8*> %5, i8* %7, i32 2
4268 ; CHECK-NEXT: store <4 x i8*> %4, <4 x i8*>* %0, align 16
4269 ; CHECK-NEXT: store <4 x i8*> %8, <4 x i8*>* %1, align 16
4270 ; CHECK-NEXT: store <4 x i8*> %6, <4 x i8*>* %2, align 16
4271 ; CHECK-NEXT: ret <4 x i8*> %3
4272 ; CHECK-NEXT: }
4273
4274 define <16 x i8*> @insert_16xi8ptr_at_11(<16 x i8*>, i8*) {
4275 entry:
4276 %2 = insertelement <16 x i8*> %0, i8* %1, i32 11
4277 ret <16 x i8*> %2
4278 }
4279 ; CHECK-LABEL: define <4 x i8*> @insert_16xi8ptr_at_11(<4 x i8*>* nocapture nonn ull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>, <4 x i8*>, <4 x i8*>, <4 x i8*>, i8*) {
4280 ; CHECK: entry:
4281 ; CHECK-NEXT: %8 = insertelement <4 x i8*> %5, i8* %7, i32 3
4282 ; CHECK-NEXT: store <4 x i8*> %4, <4 x i8*>* %0, align 16
4283 ; CHECK-NEXT: store <4 x i8*> %8, <4 x i8*>* %1, align 16
4284 ; CHECK-NEXT: store <4 x i8*> %6, <4 x i8*>* %2, align 16
4285 ; CHECK-NEXT: ret <4 x i8*> %3
4286 ; CHECK-NEXT: }
4287
4288 define <16 x i8*> @insert_16xi8ptr_at_12(<16 x i8*>, i8*) {
4289 entry:
4290 %2 = insertelement <16 x i8*> %0, i8* %1, i32 12
4291 ret <16 x i8*> %2
4292 }
4293 ; CHECK-LABEL: define <4 x i8*> @insert_16xi8ptr_at_12(<4 x i8*>* nocapture nonn ull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>, <4 x i8*>, <4 x i8*>, <4 x i8*>, i8*) {
4294 ; CHECK: entry:
4295 ; CHECK-NEXT: %8 = insertelement <4 x i8*> %6, i8* %7, i32 0
4296 ; CHECK-NEXT: store <4 x i8*> %4, <4 x i8*>* %0, align 16
4297 ; CHECK-NEXT: store <4 x i8*> %5, <4 x i8*>* %1, align 16
4298 ; CHECK-NEXT: store <4 x i8*> %8, <4 x i8*>* %2, align 16
4299 ; CHECK-NEXT: ret <4 x i8*> %3
4300 ; CHECK-NEXT: }
4301
4302 define <16 x i8*> @insert_16xi8ptr_at_13(<16 x i8*>, i8*) {
4303 entry:
4304 %2 = insertelement <16 x i8*> %0, i8* %1, i32 13
4305 ret <16 x i8*> %2
4306 }
4307 ; CHECK-LABEL: define <4 x i8*> @insert_16xi8ptr_at_13(<4 x i8*>* nocapture nonn ull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>, <4 x i8*>, <4 x i8*>, <4 x i8*>, i8*) {
4308 ; CHECK: entry:
4309 ; CHECK-NEXT: %8 = insertelement <4 x i8*> %6, i8* %7, i32 1
4310 ; CHECK-NEXT: store <4 x i8*> %4, <4 x i8*>* %0, align 16
4311 ; CHECK-NEXT: store <4 x i8*> %5, <4 x i8*>* %1, align 16
4312 ; CHECK-NEXT: store <4 x i8*> %8, <4 x i8*>* %2, align 16
4313 ; CHECK-NEXT: ret <4 x i8*> %3
4314 ; CHECK-NEXT: }
4315
4316 define <16 x i8*> @insert_16xi8ptr_at_14(<16 x i8*>, i8*) {
4317 entry:
4318 %2 = insertelement <16 x i8*> %0, i8* %1, i32 14
4319 ret <16 x i8*> %2
4320 }
4321 ; CHECK-LABEL: define <4 x i8*> @insert_16xi8ptr_at_14(<4 x i8*>* nocapture nonn ull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>, <4 x i8*>, <4 x i8*>, <4 x i8*>, i8*) {
4322 ; CHECK: entry:
4323 ; CHECK-NEXT: %8 = insertelement <4 x i8*> %6, i8* %7, i32 2
4324 ; CHECK-NEXT: store <4 x i8*> %4, <4 x i8*>* %0, align 16
4325 ; CHECK-NEXT: store <4 x i8*> %5, <4 x i8*>* %1, align 16
4326 ; CHECK-NEXT: store <4 x i8*> %8, <4 x i8*>* %2, align 16
4327 ; CHECK-NEXT: ret <4 x i8*> %3
4328 ; CHECK-NEXT: }
4329
4330 define <16 x i8*> @insert_16xi8ptr_at_15(<16 x i8*>, i8*) {
4331 entry:
4332 %2 = insertelement <16 x i8*> %0, i8* %1, i32 15
4333 ret <16 x i8*> %2
4334 }
4335 ; CHECK-LABEL: define <4 x i8*> @insert_16xi8ptr_at_15(<4 x i8*>* nocapture nonn ull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>, <4 x i8*>, <4 x i8*>, <4 x i8*>, i8*) {
4336 ; CHECK: entry:
4337 ; CHECK-NEXT: %8 = insertelement <4 x i8*> %6, i8* %7, i32 3
4338 ; CHECK-NEXT: store <4 x i8*> %4, <4 x i8*>* %0, align 16
4339 ; CHECK-NEXT: store <4 x i8*> %5, <4 x i8*>* %1, align 16
4340 ; CHECK-NEXT: store <4 x i8*> %8, <4 x i8*>* %2, align 16
4341 ; CHECK-NEXT: ret <4 x i8*> %3
4342 ; CHECK-NEXT: }
4343
4344 define <16 x i8*> @insert_16xi8ptr_undef_idx(<16 x i8*>, i8*) {
4345 entry:
4346 %2 = insertelement <16 x i8*> %0, i8* %1, i32 16
4347 ret <16 x i8*> %2
4348 }
4349 ; CHECK-LABEL: define <4 x i8*> @insert_16xi8ptr_undef_idx(<4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), < 4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>, <4 x i8*>, <4 x i8*> , <4 x i8*>, i8*) {
4350 ; CHECK: entry:
4351 ; CHECK-NEXT: store <4 x i8*> %4, <4 x i8*>* %0, align 16
4352 ; CHECK-NEXT: store <4 x i8*> %5, <4 x i8*>* %1, align 16
4353 ; CHECK-NEXT: store <4 x i8*> %6, <4 x i8*>* %2, align 16
4354 ; CHECK-NEXT: ret <4 x i8*> %3
4355 ; CHECK-NEXT: }
4356
4357 define <16 x float> @insert_16xfloat_at_0(<16 x float>, float) {
4358 entry:
4359 %2 = insertelement <16 x float> %0, float %1, i32 0
4360 ret <16 x float> %2
4361 }
4362 ; CHECK-LABEL: define <4 x float> @insert_16xfloat_at_0(<4 x float>* nocapture n onnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>, <4 x float>, <4 x float>, <4 x float>, float) {
4363 ; CHECK: entry:
4364 ; CHECK-NEXT: %8 = insertelement <4 x float> %3, float %7, i32 0
4365 ; CHECK-NEXT: store <4 x float> %4, <4 x float>* %0, align 16
4366 ; CHECK-NEXT: store <4 x float> %5, <4 x float>* %1, align 16
4367 ; CHECK-NEXT: store <4 x float> %6, <4 x float>* %2, align 16
4368 ; CHECK-NEXT: ret <4 x float> %8
4369 ; CHECK-NEXT: }
4370
4371 define <16 x float> @insert_16xfloat_at_1(<16 x float>, float) {
4372 entry:
4373 %2 = insertelement <16 x float> %0, float %1, i32 1
4374 ret <16 x float> %2
4375 }
4376 ; CHECK-LABEL: define <4 x float> @insert_16xfloat_at_1(<4 x float>* nocapture n onnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>, <4 x float>, <4 x float>, <4 x float>, float) {
4377 ; CHECK: entry:
4378 ; CHECK-NEXT: %8 = insertelement <4 x float> %3, float %7, i32 1
4379 ; CHECK-NEXT: store <4 x float> %4, <4 x float>* %0, align 16
4380 ; CHECK-NEXT: store <4 x float> %5, <4 x float>* %1, align 16
4381 ; CHECK-NEXT: store <4 x float> %6, <4 x float>* %2, align 16
4382 ; CHECK-NEXT: ret <4 x float> %8
4383 ; CHECK-NEXT: }
4384
4385 define <16 x float> @insert_16xfloat_at_2(<16 x float>, float) {
4386 entry:
4387 %2 = insertelement <16 x float> %0, float %1, i32 2
4388 ret <16 x float> %2
4389 }
4390 ; CHECK-LABEL: define <4 x float> @insert_16xfloat_at_2(<4 x float>* nocapture n onnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>, <4 x float>, <4 x float>, <4 x float>, float) {
4391 ; CHECK: entry:
4392 ; CHECK-NEXT: %8 = insertelement <4 x float> %3, float %7, i32 2
4393 ; CHECK-NEXT: store <4 x float> %4, <4 x float>* %0, align 16
4394 ; CHECK-NEXT: store <4 x float> %5, <4 x float>* %1, align 16
4395 ; CHECK-NEXT: store <4 x float> %6, <4 x float>* %2, align 16
4396 ; CHECK-NEXT: ret <4 x float> %8
4397 ; CHECK-NEXT: }
4398
4399 define <16 x float> @insert_16xfloat_at_3(<16 x float>, float) {
4400 entry:
4401 %2 = insertelement <16 x float> %0, float %1, i32 3
4402 ret <16 x float> %2
4403 }
4404 ; CHECK-LABEL: define <4 x float> @insert_16xfloat_at_3(<4 x float>* nocapture n onnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>, <4 x float>, <4 x float>, <4 x float>, float) {
4405 ; CHECK: entry:
4406 ; CHECK-NEXT: %8 = insertelement <4 x float> %3, float %7, i32 3
4407 ; CHECK-NEXT: store <4 x float> %4, <4 x float>* %0, align 16
4408 ; CHECK-NEXT: store <4 x float> %5, <4 x float>* %1, align 16
4409 ; CHECK-NEXT: store <4 x float> %6, <4 x float>* %2, align 16
4410 ; CHECK-NEXT: ret <4 x float> %8
4411 ; CHECK-NEXT: }
4412
4413 define <16 x float> @insert_16xfloat_at_4(<16 x float>, float) {
4414 entry:
4415 %2 = insertelement <16 x float> %0, float %1, i32 4
4416 ret <16 x float> %2
4417 }
4418 ; CHECK-LABEL: define <4 x float> @insert_16xfloat_at_4(<4 x float>* nocapture n onnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>, <4 x float>, <4 x float>, <4 x float>, float) {
4419 ; CHECK: entry:
4420 ; CHECK-NEXT: %8 = insertelement <4 x float> %4, float %7, i32 0
4421 ; CHECK-NEXT: store <4 x float> %8, <4 x float>* %0, align 16
4422 ; CHECK-NEXT: store <4 x float> %5, <4 x float>* %1, align 16
4423 ; CHECK-NEXT: store <4 x float> %6, <4 x float>* %2, align 16
4424 ; CHECK-NEXT: ret <4 x float> %3
4425 ; CHECK-NEXT: }
4426
4427 define <16 x float> @insert_16xfloat_at_5(<16 x float>, float) {
4428 entry:
4429 %2 = insertelement <16 x float> %0, float %1, i32 5
4430 ret <16 x float> %2
4431 }
4432 ; CHECK-LABEL: define <4 x float> @insert_16xfloat_at_5(<4 x float>* nocapture n onnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>, <4 x float>, <4 x float>, <4 x float>, float) {
4433 ; CHECK: entry:
4434 ; CHECK-NEXT: %8 = insertelement <4 x float> %4, float %7, i32 1
4435 ; CHECK-NEXT: store <4 x float> %8, <4 x float>* %0, align 16
4436 ; CHECK-NEXT: store <4 x float> %5, <4 x float>* %1, align 16
4437 ; CHECK-NEXT: store <4 x float> %6, <4 x float>* %2, align 16
4438 ; CHECK-NEXT: ret <4 x float> %3
4439 ; CHECK-NEXT: }
4440
4441 define <16 x float> @insert_16xfloat_at_6(<16 x float>, float) {
4442 entry:
4443 %2 = insertelement <16 x float> %0, float %1, i32 6
4444 ret <16 x float> %2
4445 }
4446 ; CHECK-LABEL: define <4 x float> @insert_16xfloat_at_6(<4 x float>* nocapture n onnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>, <4 x float>, <4 x float>, <4 x float>, float) {
4447 ; CHECK: entry:
4448 ; CHECK-NEXT: %8 = insertelement <4 x float> %4, float %7, i32 2
4449 ; CHECK-NEXT: store <4 x float> %8, <4 x float>* %0, align 16
4450 ; CHECK-NEXT: store <4 x float> %5, <4 x float>* %1, align 16
4451 ; CHECK-NEXT: store <4 x float> %6, <4 x float>* %2, align 16
4452 ; CHECK-NEXT: ret <4 x float> %3
4453 ; CHECK-NEXT: }
4454
4455 define <16 x float> @insert_16xfloat_at_7(<16 x float>, float) {
4456 entry:
4457 %2 = insertelement <16 x float> %0, float %1, i32 7
4458 ret <16 x float> %2
4459 }
4460 ; CHECK-LABEL: define <4 x float> @insert_16xfloat_at_7(<4 x float>* nocapture n onnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>, <4 x float>, <4 x float>, <4 x float>, float) {
4461 ; CHECK: entry:
4462 ; CHECK-NEXT: %8 = insertelement <4 x float> %4, float %7, i32 3
4463 ; CHECK-NEXT: store <4 x float> %8, <4 x float>* %0, align 16
4464 ; CHECK-NEXT: store <4 x float> %5, <4 x float>* %1, align 16
4465 ; CHECK-NEXT: store <4 x float> %6, <4 x float>* %2, align 16
4466 ; CHECK-NEXT: ret <4 x float> %3
4467 ; CHECK-NEXT: }
4468
4469 define <16 x float> @insert_16xfloat_at_8(<16 x float>, float) {
4470 entry:
4471 %2 = insertelement <16 x float> %0, float %1, i32 8
4472 ret <16 x float> %2
4473 }
4474 ; CHECK-LABEL: define <4 x float> @insert_16xfloat_at_8(<4 x float>* nocapture n onnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>, <4 x float>, <4 x float>, <4 x float>, float) {
4475 ; CHECK: entry:
4476 ; CHECK-NEXT: %8 = insertelement <4 x float> %5, float %7, i32 0
4477 ; CHECK-NEXT: store <4 x float> %4, <4 x float>* %0, align 16
4478 ; CHECK-NEXT: store <4 x float> %8, <4 x float>* %1, align 16
4479 ; CHECK-NEXT: store <4 x float> %6, <4 x float>* %2, align 16
4480 ; CHECK-NEXT: ret <4 x float> %3
4481 ; CHECK-NEXT: }
4482
4483 define <16 x float> @insert_16xfloat_at_9(<16 x float>, float) {
4484 entry:
4485 %2 = insertelement <16 x float> %0, float %1, i32 9
4486 ret <16 x float> %2
4487 }
4488 ; CHECK-LABEL: define <4 x float> @insert_16xfloat_at_9(<4 x float>* nocapture n onnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>, <4 x float>, <4 x float>, <4 x float>, float) {
4489 ; CHECK: entry:
4490 ; CHECK-NEXT: %8 = insertelement <4 x float> %5, float %7, i32 1
4491 ; CHECK-NEXT: store <4 x float> %4, <4 x float>* %0, align 16
4492 ; CHECK-NEXT: store <4 x float> %8, <4 x float>* %1, align 16
4493 ; CHECK-NEXT: store <4 x float> %6, <4 x float>* %2, align 16
4494 ; CHECK-NEXT: ret <4 x float> %3
4495 ; CHECK-NEXT: }
4496
4497 define <16 x float> @insert_16xfloat_at_10(<16 x float>, float) {
4498 entry:
4499 %2 = insertelement <16 x float> %0, float %1, i32 10
4500 ret <16 x float> %2
4501 }
4502 ; CHECK-LABEL: define <4 x float> @insert_16xfloat_at_10(<4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>, <4 x float>, < 4 x float>, <4 x float>, float) {
4503 ; CHECK: entry:
4504 ; CHECK-NEXT: %8 = insertelement <4 x float> %5, float %7, i32 2
4505 ; CHECK-NEXT: store <4 x float> %4, <4 x float>* %0, align 16
4506 ; CHECK-NEXT: store <4 x float> %8, <4 x float>* %1, align 16
4507 ; CHECK-NEXT: store <4 x float> %6, <4 x float>* %2, align 16
4508 ; CHECK-NEXT: ret <4 x float> %3
4509 ; CHECK-NEXT: }
4510
4511 define <16 x float> @insert_16xfloat_at_11(<16 x float>, float) {
4512 entry:
4513 %2 = insertelement <16 x float> %0, float %1, i32 11
4514 ret <16 x float> %2
4515 }
4516 ; CHECK-LABEL: define <4 x float> @insert_16xfloat_at_11(<4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>, <4 x float>, < 4 x float>, <4 x float>, float) {
4517 ; CHECK: entry:
4518 ; CHECK-NEXT: %8 = insertelement <4 x float> %5, float %7, i32 3
4519 ; CHECK-NEXT: store <4 x float> %4, <4 x float>* %0, align 16
4520 ; CHECK-NEXT: store <4 x float> %8, <4 x float>* %1, align 16
4521 ; CHECK-NEXT: store <4 x float> %6, <4 x float>* %2, align 16
4522 ; CHECK-NEXT: ret <4 x float> %3
4523 ; CHECK-NEXT: }
4524
4525 define <16 x float> @insert_16xfloat_at_12(<16 x float>, float) {
4526 entry:
4527 %2 = insertelement <16 x float> %0, float %1, i32 12
4528 ret <16 x float> %2
4529 }
4530 ; CHECK-LABEL: define <4 x float> @insert_16xfloat_at_12(<4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>, <4 x float>, < 4 x float>, <4 x float>, float) {
4531 ; CHECK: entry:
4532 ; CHECK-NEXT: %8 = insertelement <4 x float> %6, float %7, i32 0
4533 ; CHECK-NEXT: store <4 x float> %4, <4 x float>* %0, align 16
4534 ; CHECK-NEXT: store <4 x float> %5, <4 x float>* %1, align 16
4535 ; CHECK-NEXT: store <4 x float> %8, <4 x float>* %2, align 16
4536 ; CHECK-NEXT: ret <4 x float> %3
4537 ; CHECK-NEXT: }
4538
4539 define <16 x float> @insert_16xfloat_at_13(<16 x float>, float) {
4540 entry:
4541 %2 = insertelement <16 x float> %0, float %1, i32 13
4542 ret <16 x float> %2
4543 }
4544 ; CHECK-LABEL: define <4 x float> @insert_16xfloat_at_13(<4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>, <4 x float>, < 4 x float>, <4 x float>, float) {
4545 ; CHECK: entry:
4546 ; CHECK-NEXT: %8 = insertelement <4 x float> %6, float %7, i32 1
4547 ; CHECK-NEXT: store <4 x float> %4, <4 x float>* %0, align 16
4548 ; CHECK-NEXT: store <4 x float> %5, <4 x float>* %1, align 16
4549 ; CHECK-NEXT: store <4 x float> %8, <4 x float>* %2, align 16
4550 ; CHECK-NEXT: ret <4 x float> %3
4551 ; CHECK-NEXT: }
4552
4553 define <16 x float> @insert_16xfloat_at_14(<16 x float>, float) {
4554 entry:
4555 %2 = insertelement <16 x float> %0, float %1, i32 14
4556 ret <16 x float> %2
4557 }
4558 ; CHECK-LABEL: define <4 x float> @insert_16xfloat_at_14(<4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>, <4 x float>, < 4 x float>, <4 x float>, float) {
4559 ; CHECK: entry:
4560 ; CHECK-NEXT: %8 = insertelement <4 x float> %6, float %7, i32 2
4561 ; CHECK-NEXT: store <4 x float> %4, <4 x float>* %0, align 16
4562 ; CHECK-NEXT: store <4 x float> %5, <4 x float>* %1, align 16
4563 ; CHECK-NEXT: store <4 x float> %8, <4 x float>* %2, align 16
4564 ; CHECK-NEXT: ret <4 x float> %3
4565 ; CHECK-NEXT: }
4566
4567 define <16 x float> @insert_16xfloat_at_15(<16 x float>, float) {
4568 entry:
4569 %2 = insertelement <16 x float> %0, float %1, i32 15
4570 ret <16 x float> %2
4571 }
4572 ; CHECK-LABEL: define <4 x float> @insert_16xfloat_at_15(<4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>, <4 x float>, < 4 x float>, <4 x float>, float) {
4573 ; CHECK: entry:
4574 ; CHECK-NEXT: %8 = insertelement <4 x float> %6, float %7, i32 3
4575 ; CHECK-NEXT: store <4 x float> %4, <4 x float>* %0, align 16
4576 ; CHECK-NEXT: store <4 x float> %5, <4 x float>* %1, align 16
4577 ; CHECK-NEXT: store <4 x float> %8, <4 x float>* %2, align 16
4578 ; CHECK-NEXT: ret <4 x float> %3
4579 ; CHECK-NEXT: }
4580
4581 define <16 x float> @insert_16xfloat_undef_idx(<16 x float>, float) {
4582 entry:
4583 %2 = insertelement <16 x float> %0, float %1, i32 16
4584 ret <16 x float> %2
4585 }
4586 ; CHECK-LABEL: define <4 x float> @insert_16xfloat_undef_idx(<4 x float>* nocapt ure nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable( 16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>, <4 x float >, <4 x float>, <4 x float>, float) {
4587 ; CHECK: entry:
4588 ; CHECK-NEXT: store <4 x float> %4, <4 x float>* %0, align 16
4589 ; CHECK-NEXT: store <4 x float> %5, <4 x float>* %1, align 16
4590 ; CHECK-NEXT: store <4 x float> %6, <4 x float>* %2, align 16
4591 ; CHECK-NEXT: ret <4 x float> %3
4592 ; CHECK-NEXT: }
4593
4594 define <16 x double> @insert_16xdouble_at_0(<16 x double>, double) {
4595 entry:
4596 %2 = insertelement <16 x double> %0, double %1, i32 0
4597 ret <16 x double> %2
4598 }
4599 ; CHECK-LABEL: define <2 x double> @insert_16xdouble_at_0(<2 x double>* nocaptur e nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(1 6), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16 ), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x double>, <2 x double>, <2 x doub le>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, double) {
4600 ; CHECK: entry:
4601 ; CHECK-NEXT: %16 = insertelement <2 x double> %7, double %15, i32 0
4602 ; CHECK-NEXT: store <2 x double> %8, <2 x double>* %0, align 16
4603 ; CHECK-NEXT: store <2 x double> %9, <2 x double>* %1, align 16
4604 ; CHECK-NEXT: store <2 x double> %10, <2 x double>* %2, align 16
4605 ; CHECK-NEXT: store <2 x double> %11, <2 x double>* %3, align 16
4606 ; CHECK-NEXT: store <2 x double> %12, <2 x double>* %4, align 16
4607 ; CHECK-NEXT: store <2 x double> %13, <2 x double>* %5, align 16
4608 ; CHECK-NEXT: store <2 x double> %14, <2 x double>* %6, align 16
4609 ; CHECK-NEXT: ret <2 x double> %16
4610 ; CHECK-NEXT: }
4611
4612 define <16 x double> @insert_16xdouble_at_1(<16 x double>, double) {
4613 entry:
4614 %2 = insertelement <16 x double> %0, double %1, i32 1
4615 ret <16 x double> %2
4616 }
4617 ; CHECK-LABEL: define <2 x double> @insert_16xdouble_at_1(<2 x double>* nocaptur e nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(1 6), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16 ), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x double>, <2 x double>, <2 x doub le>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, double) {
4618 ; CHECK: entry:
4619 ; CHECK-NEXT: %16 = insertelement <2 x double> %7, double %15, i32 1
4620 ; CHECK-NEXT: store <2 x double> %8, <2 x double>* %0, align 16
4621 ; CHECK-NEXT: store <2 x double> %9, <2 x double>* %1, align 16
4622 ; CHECK-NEXT: store <2 x double> %10, <2 x double>* %2, align 16
4623 ; CHECK-NEXT: store <2 x double> %11, <2 x double>* %3, align 16
4624 ; CHECK-NEXT: store <2 x double> %12, <2 x double>* %4, align 16
4625 ; CHECK-NEXT: store <2 x double> %13, <2 x double>* %5, align 16
4626 ; CHECK-NEXT: store <2 x double> %14, <2 x double>* %6, align 16
4627 ; CHECK-NEXT: ret <2 x double> %16
4628 ; CHECK-NEXT: }
4629
4630 define <16 x double> @insert_16xdouble_at_2(<16 x double>, double) {
4631 entry:
4632 %2 = insertelement <16 x double> %0, double %1, i32 2
4633 ret <16 x double> %2
4634 }
4635 ; CHECK-LABEL: define <2 x double> @insert_16xdouble_at_2(<2 x double>* nocaptur e nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(1 6), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16 ), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x double>, <2 x double>, <2 x doub le>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, double) {
4636 ; CHECK: entry:
4637 ; CHECK-NEXT: %16 = insertelement <2 x double> %8, double %15, i32 0
4638 ; CHECK-NEXT: store <2 x double> %16, <2 x double>* %0, align 16
4639 ; CHECK-NEXT: store <2 x double> %9, <2 x double>* %1, align 16
4640 ; CHECK-NEXT: store <2 x double> %10, <2 x double>* %2, align 16
4641 ; CHECK-NEXT: store <2 x double> %11, <2 x double>* %3, align 16
4642 ; CHECK-NEXT: store <2 x double> %12, <2 x double>* %4, align 16
4643 ; CHECK-NEXT: store <2 x double> %13, <2 x double>* %5, align 16
4644 ; CHECK-NEXT: store <2 x double> %14, <2 x double>* %6, align 16
4645 ; CHECK-NEXT: ret <2 x double> %7
4646 ; CHECK-NEXT: }
4647
4648 define <16 x double> @insert_16xdouble_at_3(<16 x double>, double) {
4649 entry:
4650 %2 = insertelement <16 x double> %0, double %1, i32 3
4651 ret <16 x double> %2
4652 }
4653 ; CHECK-LABEL: define <2 x double> @insert_16xdouble_at_3(<2 x double>* nocaptur e nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(1 6), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16 ), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x double>, <2 x double>, <2 x doub le>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, double) {
4654 ; CHECK: entry:
4655 ; CHECK-NEXT: %16 = insertelement <2 x double> %8, double %15, i32 1
4656 ; CHECK-NEXT: store <2 x double> %16, <2 x double>* %0, align 16
4657 ; CHECK-NEXT: store <2 x double> %9, <2 x double>* %1, align 16
4658 ; CHECK-NEXT: store <2 x double> %10, <2 x double>* %2, align 16
4659 ; CHECK-NEXT: store <2 x double> %11, <2 x double>* %3, align 16
4660 ; CHECK-NEXT: store <2 x double> %12, <2 x double>* %4, align 16
4661 ; CHECK-NEXT: store <2 x double> %13, <2 x double>* %5, align 16
4662 ; CHECK-NEXT: store <2 x double> %14, <2 x double>* %6, align 16
4663 ; CHECK-NEXT: ret <2 x double> %7
4664 ; CHECK-NEXT: }
4665
4666 define <16 x double> @insert_16xdouble_at_4(<16 x double>, double) {
4667 entry:
4668 %2 = insertelement <16 x double> %0, double %1, i32 4
4669 ret <16 x double> %2
4670 }
4671 ; CHECK-LABEL: define <2 x double> @insert_16xdouble_at_4(<2 x double>* nocaptur e nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(1 6), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16 ), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x double>, <2 x double>, <2 x doub le>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, double) {
4672 ; CHECK: entry:
4673 ; CHECK-NEXT: %16 = insertelement <2 x double> %9, double %15, i32 0
4674 ; CHECK-NEXT: store <2 x double> %8, <2 x double>* %0, align 16
4675 ; CHECK-NEXT: store <2 x double> %16, <2 x double>* %1, align 16
4676 ; CHECK-NEXT: store <2 x double> %10, <2 x double>* %2, align 16
4677 ; CHECK-NEXT: store <2 x double> %11, <2 x double>* %3, align 16
4678 ; CHECK-NEXT: store <2 x double> %12, <2 x double>* %4, align 16
4679 ; CHECK-NEXT: store <2 x double> %13, <2 x double>* %5, align 16
4680 ; CHECK-NEXT: store <2 x double> %14, <2 x double>* %6, align 16
4681 ; CHECK-NEXT: ret <2 x double> %7
4682 ; CHECK-NEXT: }
4683
4684 define <16 x double> @insert_16xdouble_at_5(<16 x double>, double) {
4685 entry:
4686 %2 = insertelement <16 x double> %0, double %1, i32 5
4687 ret <16 x double> %2
4688 }
4689 ; CHECK-LABEL: define <2 x double> @insert_16xdouble_at_5(<2 x double>* nocaptur e nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(1 6), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16 ), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x double>, <2 x double>, <2 x doub le>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, double) {
4690 ; CHECK: entry:
4691 ; CHECK-NEXT: %16 = insertelement <2 x double> %9, double %15, i32 1
4692 ; CHECK-NEXT: store <2 x double> %8, <2 x double>* %0, align 16
4693 ; CHECK-NEXT: store <2 x double> %16, <2 x double>* %1, align 16
4694 ; CHECK-NEXT: store <2 x double> %10, <2 x double>* %2, align 16
4695 ; CHECK-NEXT: store <2 x double> %11, <2 x double>* %3, align 16
4696 ; CHECK-NEXT: store <2 x double> %12, <2 x double>* %4, align 16
4697 ; CHECK-NEXT: store <2 x double> %13, <2 x double>* %5, align 16
4698 ; CHECK-NEXT: store <2 x double> %14, <2 x double>* %6, align 16
4699 ; CHECK-NEXT: ret <2 x double> %7
4700 ; CHECK-NEXT: }
4701
4702 define <16 x double> @insert_16xdouble_at_6(<16 x double>, double) {
4703 entry:
4704 %2 = insertelement <16 x double> %0, double %1, i32 6
4705 ret <16 x double> %2
4706 }
4707 ; CHECK-LABEL: define <2 x double> @insert_16xdouble_at_6(<2 x double>* nocaptur e nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(1 6), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16 ), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x double>, <2 x double>, <2 x doub le>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, double) {
4708 ; CHECK: entry:
4709 ; CHECK-NEXT: %16 = insertelement <2 x double> %10, double %15, i32 0
4710 ; CHECK-NEXT: store <2 x double> %8, <2 x double>* %0, align 16
4711 ; CHECK-NEXT: store <2 x double> %9, <2 x double>* %1, align 16
4712 ; CHECK-NEXT: store <2 x double> %16, <2 x double>* %2, align 16
4713 ; CHECK-NEXT: store <2 x double> %11, <2 x double>* %3, align 16
4714 ; CHECK-NEXT: store <2 x double> %12, <2 x double>* %4, align 16
4715 ; CHECK-NEXT: store <2 x double> %13, <2 x double>* %5, align 16
4716 ; CHECK-NEXT: store <2 x double> %14, <2 x double>* %6, align 16
4717 ; CHECK-NEXT: ret <2 x double> %7
4718 ; CHECK-NEXT: }
4719
4720 define <16 x double> @insert_16xdouble_at_7(<16 x double>, double) {
4721 entry:
4722 %2 = insertelement <16 x double> %0, double %1, i32 7
4723 ret <16 x double> %2
4724 }
4725 ; CHECK-LABEL: define <2 x double> @insert_16xdouble_at_7(<2 x double>* nocaptur e nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(1 6), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16 ), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x double>, <2 x double>, <2 x doub le>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, double) {
4726 ; CHECK: entry:
4727 ; CHECK-NEXT: %16 = insertelement <2 x double> %10, double %15, i32 1
4728 ; CHECK-NEXT: store <2 x double> %8, <2 x double>* %0, align 16
4729 ; CHECK-NEXT: store <2 x double> %9, <2 x double>* %1, align 16
4730 ; CHECK-NEXT: store <2 x double> %16, <2 x double>* %2, align 16
4731 ; CHECK-NEXT: store <2 x double> %11, <2 x double>* %3, align 16
4732 ; CHECK-NEXT: store <2 x double> %12, <2 x double>* %4, align 16
4733 ; CHECK-NEXT: store <2 x double> %13, <2 x double>* %5, align 16
4734 ; CHECK-NEXT: store <2 x double> %14, <2 x double>* %6, align 16
4735 ; CHECK-NEXT: ret <2 x double> %7
4736 ; CHECK-NEXT: }
4737
4738 define <16 x double> @insert_16xdouble_at_8(<16 x double>, double) {
4739 entry:
4740 %2 = insertelement <16 x double> %0, double %1, i32 8
4741 ret <16 x double> %2
4742 }
4743 ; CHECK-LABEL: define <2 x double> @insert_16xdouble_at_8(<2 x double>* nocaptur e nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(1 6), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16 ), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x double>, <2 x double>, <2 x doub le>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, double) {
4744 ; CHECK: entry:
4745 ; CHECK-NEXT: %16 = insertelement <2 x double> %11, double %15, i32 0
4746 ; CHECK-NEXT: store <2 x double> %8, <2 x double>* %0, align 16
4747 ; CHECK-NEXT: store <2 x double> %9, <2 x double>* %1, align 16
4748 ; CHECK-NEXT: store <2 x double> %10, <2 x double>* %2, align 16
4749 ; CHECK-NEXT: store <2 x double> %16, <2 x double>* %3, align 16
4750 ; CHECK-NEXT: store <2 x double> %12, <2 x double>* %4, align 16
4751 ; CHECK-NEXT: store <2 x double> %13, <2 x double>* %5, align 16
4752 ; CHECK-NEXT: store <2 x double> %14, <2 x double>* %6, align 16
4753 ; CHECK-NEXT: ret <2 x double> %7
4754 ; CHECK-NEXT: }
4755
4756 define <16 x double> @insert_16xdouble_at_9(<16 x double>, double) {
4757 entry:
4758 %2 = insertelement <16 x double> %0, double %1, i32 9
4759 ret <16 x double> %2
4760 }
4761 ; CHECK-LABEL: define <2 x double> @insert_16xdouble_at_9(<2 x double>* nocaptur e nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(1 6), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16 ), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x double>, <2 x double>, <2 x doub le>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, double) {
4762 ; CHECK: entry:
4763 ; CHECK-NEXT: %16 = insertelement <2 x double> %11, double %15, i32 1
4764 ; CHECK-NEXT: store <2 x double> %8, <2 x double>* %0, align 16
4765 ; CHECK-NEXT: store <2 x double> %9, <2 x double>* %1, align 16
4766 ; CHECK-NEXT: store <2 x double> %10, <2 x double>* %2, align 16
4767 ; CHECK-NEXT: store <2 x double> %16, <2 x double>* %3, align 16
4768 ; CHECK-NEXT: store <2 x double> %12, <2 x double>* %4, align 16
4769 ; CHECK-NEXT: store <2 x double> %13, <2 x double>* %5, align 16
4770 ; CHECK-NEXT: store <2 x double> %14, <2 x double>* %6, align 16
4771 ; CHECK-NEXT: ret <2 x double> %7
4772 ; CHECK-NEXT: }
4773
4774 define <16 x double> @insert_16xdouble_at_10(<16 x double>, double) {
4775 entry:
4776 %2 = insertelement <16 x double> %0, double %1, i32 10
4777 ret <16 x double> %2
4778 }
4779 ; CHECK-LABEL: define <2 x double> @insert_16xdouble_at_10(<2 x double>* nocaptu re nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable( 16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocaptur e nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(1 6), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x double>, <2 x double>, <2 x dou ble>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, double) {
4780 ; CHECK: entry:
4781 ; CHECK-NEXT: %16 = insertelement <2 x double> %12, double %15, i32 0
4782 ; CHECK-NEXT: store <2 x double> %8, <2 x double>* %0, align 16
4783 ; CHECK-NEXT: store <2 x double> %9, <2 x double>* %1, align 16
4784 ; CHECK-NEXT: store <2 x double> %10, <2 x double>* %2, align 16
4785 ; CHECK-NEXT: store <2 x double> %11, <2 x double>* %3, align 16
4786 ; CHECK-NEXT: store <2 x double> %16, <2 x double>* %4, align 16
4787 ; CHECK-NEXT: store <2 x double> %13, <2 x double>* %5, align 16
4788 ; CHECK-NEXT: store <2 x double> %14, <2 x double>* %6, align 16
4789 ; CHECK-NEXT: ret <2 x double> %7
4790 ; CHECK-NEXT: }
4791
4792 define <16 x double> @insert_16xdouble_at_11(<16 x double>, double) {
4793 entry:
4794 %2 = insertelement <16 x double> %0, double %1, i32 11
4795 ret <16 x double> %2
4796 }
4797 ; CHECK-LABEL: define <2 x double> @insert_16xdouble_at_11(<2 x double>* nocaptu re nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable( 16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocaptur e nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(1 6), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x double>, <2 x double>, <2 x dou ble>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, double) {
4798 ; CHECK: entry:
4799 ; CHECK-NEXT: %16 = insertelement <2 x double> %12, double %15, i32 1
4800 ; CHECK-NEXT: store <2 x double> %8, <2 x double>* %0, align 16
4801 ; CHECK-NEXT: store <2 x double> %9, <2 x double>* %1, align 16
4802 ; CHECK-NEXT: store <2 x double> %10, <2 x double>* %2, align 16
4803 ; CHECK-NEXT: store <2 x double> %11, <2 x double>* %3, align 16
4804 ; CHECK-NEXT: store <2 x double> %16, <2 x double>* %4, align 16
4805 ; CHECK-NEXT: store <2 x double> %13, <2 x double>* %5, align 16
4806 ; CHECK-NEXT: store <2 x double> %14, <2 x double>* %6, align 16
4807 ; CHECK-NEXT: ret <2 x double> %7
4808 ; CHECK-NEXT: }
4809
4810 define <16 x double> @insert_16xdouble_at_12(<16 x double>, double) {
4811 entry:
4812 %2 = insertelement <16 x double> %0, double %1, i32 12
4813 ret <16 x double> %2
4814 }
4815 ; CHECK-LABEL: define <2 x double> @insert_16xdouble_at_12(<2 x double>* nocaptu re nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable( 16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocaptur e nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(1 6), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x double>, <2 x double>, <2 x dou ble>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, double) {
4816 ; CHECK: entry:
4817 ; CHECK-NEXT: %16 = insertelement <2 x double> %13, double %15, i32 0
4818 ; CHECK-NEXT: store <2 x double> %8, <2 x double>* %0, align 16
4819 ; CHECK-NEXT: store <2 x double> %9, <2 x double>* %1, align 16
4820 ; CHECK-NEXT: store <2 x double> %10, <2 x double>* %2, align 16
4821 ; CHECK-NEXT: store <2 x double> %11, <2 x double>* %3, align 16
4822 ; CHECK-NEXT: store <2 x double> %12, <2 x double>* %4, align 16
4823 ; CHECK-NEXT: store <2 x double> %16, <2 x double>* %5, align 16
4824 ; CHECK-NEXT: store <2 x double> %14, <2 x double>* %6, align 16
4825 ; CHECK-NEXT: ret <2 x double> %7
4826 ; CHECK-NEXT: }
4827
4828 define <16 x double> @insert_16xdouble_at_13(<16 x double>, double) {
4829 entry:
4830 %2 = insertelement <16 x double> %0, double %1, i32 13
4831 ret <16 x double> %2
4832 }
4833 ; CHECK-LABEL: define <2 x double> @insert_16xdouble_at_13(<2 x double>* nocaptu re nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable( 16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocaptur e nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(1 6), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x double>, <2 x double>, <2 x dou ble>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, double) {
4834 ; CHECK: entry:
4835 ; CHECK-NEXT: %16 = insertelement <2 x double> %13, double %15, i32 1
4836 ; CHECK-NEXT: store <2 x double> %8, <2 x double>* %0, align 16
4837 ; CHECK-NEXT: store <2 x double> %9, <2 x double>* %1, align 16
4838 ; CHECK-NEXT: store <2 x double> %10, <2 x double>* %2, align 16
4839 ; CHECK-NEXT: store <2 x double> %11, <2 x double>* %3, align 16
4840 ; CHECK-NEXT: store <2 x double> %12, <2 x double>* %4, align 16
4841 ; CHECK-NEXT: store <2 x double> %16, <2 x double>* %5, align 16
4842 ; CHECK-NEXT: store <2 x double> %14, <2 x double>* %6, align 16
4843 ; CHECK-NEXT: ret <2 x double> %7
4844 ; CHECK-NEXT: }
4845
4846 define <16 x double> @insert_16xdouble_at_14(<16 x double>, double) {
4847 entry:
4848 %2 = insertelement <16 x double> %0, double %1, i32 14
4849 ret <16 x double> %2
4850 }
4851 ; CHECK-LABEL: define <2 x double> @insert_16xdouble_at_14(<2 x double>* nocaptu re nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable( 16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocaptur e nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(1 6), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x double>, <2 x double>, <2 x dou ble>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, double) {
4852 ; CHECK: entry:
4853 ; CHECK-NEXT: %16 = insertelement <2 x double> %14, double %15, i32 0
4854 ; CHECK-NEXT: store <2 x double> %8, <2 x double>* %0, align 16
4855 ; CHECK-NEXT: store <2 x double> %9, <2 x double>* %1, align 16
4856 ; CHECK-NEXT: store <2 x double> %10, <2 x double>* %2, align 16
4857 ; CHECK-NEXT: store <2 x double> %11, <2 x double>* %3, align 16
4858 ; CHECK-NEXT: store <2 x double> %12, <2 x double>* %4, align 16
4859 ; CHECK-NEXT: store <2 x double> %13, <2 x double>* %5, align 16
4860 ; CHECK-NEXT: store <2 x double> %16, <2 x double>* %6, align 16
4861 ; CHECK-NEXT: ret <2 x double> %7
4862 ; CHECK-NEXT: }
4863
4864 define <16 x double> @insert_16xdouble_at_15(<16 x double>, double) {
4865 entry:
4866 %2 = insertelement <16 x double> %0, double %1, i32 15
4867 ret <16 x double> %2
4868 }
4869 ; CHECK-LABEL: define <2 x double> @insert_16xdouble_at_15(<2 x double>* nocaptu re nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable( 16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocaptur e nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(1 6), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x double>, <2 x double>, <2 x dou ble>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, double) {
4870 ; CHECK: entry:
4871 ; CHECK-NEXT: %16 = insertelement <2 x double> %14, double %15, i32 1
4872 ; CHECK-NEXT: store <2 x double> %8, <2 x double>* %0, align 16
4873 ; CHECK-NEXT: store <2 x double> %9, <2 x double>* %1, align 16
4874 ; CHECK-NEXT: store <2 x double> %10, <2 x double>* %2, align 16
4875 ; CHECK-NEXT: store <2 x double> %11, <2 x double>* %3, align 16
4876 ; CHECK-NEXT: store <2 x double> %12, <2 x double>* %4, align 16
4877 ; CHECK-NEXT: store <2 x double> %13, <2 x double>* %5, align 16
4878 ; CHECK-NEXT: store <2 x double> %16, <2 x double>* %6, align 16
4879 ; CHECK-NEXT: ret <2 x double> %7
4880 ; CHECK-NEXT: }
4881
4882 define <16 x double> @insert_16xdouble_undef_idx(<16 x double>, double) {
4883 entry:
4884 %2 = insertelement <16 x double> %0, double %1, i32 16
4885 ret <16 x double> %2
4886 }
4887 ; CHECK-LABEL: define <2 x double> @insert_16xdouble_undef_idx(<2 x double>* noc apture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferencea ble(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* noca pture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceab le(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocap ture nonnull dereferenceable(16), <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, double) {
4888 ; CHECK: entry:
4889 ; CHECK-NEXT: store <2 x double> %8, <2 x double>* %0, align 16
4890 ; CHECK-NEXT: store <2 x double> %9, <2 x double>* %1, align 16
4891 ; CHECK-NEXT: store <2 x double> %10, <2 x double>* %2, align 16
4892 ; CHECK-NEXT: store <2 x double> %11, <2 x double>* %3, align 16
4893 ; CHECK-NEXT: store <2 x double> %12, <2 x double>* %4, align 16
4894 ; CHECK-NEXT: store <2 x double> %13, <2 x double>* %5, align 16
4895 ; CHECK-NEXT: store <2 x double> %14, <2 x double>* %6, align 16
4896 ; CHECK-NEXT: ret <2 x double> %7
4897 ; CHECK-NEXT: }
4898
4899 define <20 x i8> @insert_20xi8_at_0(<20 x i8>, i8) {
4900 entry:
4901 %2 = insertelement <20 x i8> %0, i8 %1, i32 0
4902 ret <20 x i8> %2
4903 }
4904 ; CHECK-LABEL: define <16 x i8> @insert_20xi8_at_0(<16 x i8>* nocapture nonnull dereferenceable(16), <16 x i8>, <16 x i8>, i8) {
4905 ; CHECK: entry:
4906 ; CHECK-NEXT: %4 = insertelement <16 x i8> %1, i8 %3, i32 0
4907 ; CHECK-NEXT: store <16 x i8> %2, <16 x i8>* %0, align 16
4908 ; CHECK-NEXT: ret <16 x i8> %4
4909 ; CHECK-NEXT: }
4910
4911 define <20 x i8> @insert_20xi8_at_1(<20 x i8>, i8) {
4912 entry:
4913 %2 = insertelement <20 x i8> %0, i8 %1, i32 1
4914 ret <20 x i8> %2
4915 }
4916 ; CHECK-LABEL: define <16 x i8> @insert_20xi8_at_1(<16 x i8>* nocapture nonnull dereferenceable(16), <16 x i8>, <16 x i8>, i8) {
4917 ; CHECK: entry:
4918 ; CHECK-NEXT: %4 = insertelement <16 x i8> %1, i8 %3, i32 1
4919 ; CHECK-NEXT: store <16 x i8> %2, <16 x i8>* %0, align 16
4920 ; CHECK-NEXT: ret <16 x i8> %4
4921 ; CHECK-NEXT: }
4922
4923 define <20 x i8> @insert_20xi8_at_2(<20 x i8>, i8) {
4924 entry:
4925 %2 = insertelement <20 x i8> %0, i8 %1, i32 2
4926 ret <20 x i8> %2
4927 }
4928 ; CHECK-LABEL: define <16 x i8> @insert_20xi8_at_2(<16 x i8>* nocapture nonnull dereferenceable(16), <16 x i8>, <16 x i8>, i8) {
4929 ; CHECK: entry:
4930 ; CHECK-NEXT: %4 = insertelement <16 x i8> %1, i8 %3, i32 2
4931 ; CHECK-NEXT: store <16 x i8> %2, <16 x i8>* %0, align 16
4932 ; CHECK-NEXT: ret <16 x i8> %4
4933 ; CHECK-NEXT: }
4934
4935 define <20 x i8> @insert_20xi8_at_3(<20 x i8>, i8) {
4936 entry:
4937 %2 = insertelement <20 x i8> %0, i8 %1, i32 3
4938 ret <20 x i8> %2
4939 }
4940 ; CHECK-LABEL: define <16 x i8> @insert_20xi8_at_3(<16 x i8>* nocapture nonnull dereferenceable(16), <16 x i8>, <16 x i8>, i8) {
4941 ; CHECK: entry:
4942 ; CHECK-NEXT: %4 = insertelement <16 x i8> %1, i8 %3, i32 3
4943 ; CHECK-NEXT: store <16 x i8> %2, <16 x i8>* %0, align 16
4944 ; CHECK-NEXT: ret <16 x i8> %4
4945 ; CHECK-NEXT: }
4946
4947 define <20 x i8> @insert_20xi8_at_4(<20 x i8>, i8) {
4948 entry:
4949 %2 = insertelement <20 x i8> %0, i8 %1, i32 4
4950 ret <20 x i8> %2
4951 }
4952 ; CHECK-LABEL: define <16 x i8> @insert_20xi8_at_4(<16 x i8>* nocapture nonnull dereferenceable(16), <16 x i8>, <16 x i8>, i8) {
4953 ; CHECK: entry:
4954 ; CHECK-NEXT: %4 = insertelement <16 x i8> %1, i8 %3, i32 4
4955 ; CHECK-NEXT: store <16 x i8> %2, <16 x i8>* %0, align 16
4956 ; CHECK-NEXT: ret <16 x i8> %4
4957 ; CHECK-NEXT: }
4958
4959 define <20 x i8> @insert_20xi8_at_5(<20 x i8>, i8) {
4960 entry:
4961 %2 = insertelement <20 x i8> %0, i8 %1, i32 5
4962 ret <20 x i8> %2
4963 }
4964 ; CHECK-LABEL: define <16 x i8> @insert_20xi8_at_5(<16 x i8>* nocapture nonnull dereferenceable(16), <16 x i8>, <16 x i8>, i8) {
4965 ; CHECK: entry:
4966 ; CHECK-NEXT: %4 = insertelement <16 x i8> %1, i8 %3, i32 5
4967 ; CHECK-NEXT: store <16 x i8> %2, <16 x i8>* %0, align 16
4968 ; CHECK-NEXT: ret <16 x i8> %4
4969 ; CHECK-NEXT: }
4970
4971 define <20 x i8> @insert_20xi8_at_6(<20 x i8>, i8) {
4972 entry:
4973 %2 = insertelement <20 x i8> %0, i8 %1, i32 6
4974 ret <20 x i8> %2
4975 }
4976 ; CHECK-LABEL: define <16 x i8> @insert_20xi8_at_6(<16 x i8>* nocapture nonnull dereferenceable(16), <16 x i8>, <16 x i8>, i8) {
4977 ; CHECK: entry:
4978 ; CHECK-NEXT: %4 = insertelement <16 x i8> %1, i8 %3, i32 6
4979 ; CHECK-NEXT: store <16 x i8> %2, <16 x i8>* %0, align 16
4980 ; CHECK-NEXT: ret <16 x i8> %4
4981 ; CHECK-NEXT: }
4982
4983 define <20 x i8> @insert_20xi8_at_7(<20 x i8>, i8) {
4984 entry:
4985 %2 = insertelement <20 x i8> %0, i8 %1, i32 7
4986 ret <20 x i8> %2
4987 }
4988 ; CHECK-LABEL: define <16 x i8> @insert_20xi8_at_7(<16 x i8>* nocapture nonnull dereferenceable(16), <16 x i8>, <16 x i8>, i8) {
4989 ; CHECK: entry:
4990 ; CHECK-NEXT: %4 = insertelement <16 x i8> %1, i8 %3, i32 7
4991 ; CHECK-NEXT: store <16 x i8> %2, <16 x i8>* %0, align 16
4992 ; CHECK-NEXT: ret <16 x i8> %4
4993 ; CHECK-NEXT: }
4994
4995 define <20 x i8> @insert_20xi8_at_8(<20 x i8>, i8) {
4996 entry:
4997 %2 = insertelement <20 x i8> %0, i8 %1, i32 8
4998 ret <20 x i8> %2
4999 }
5000 ; CHECK-LABEL: define <16 x i8> @insert_20xi8_at_8(<16 x i8>* nocapture nonnull dereferenceable(16), <16 x i8>, <16 x i8>, i8) {
5001 ; CHECK: entry:
5002 ; CHECK-NEXT: %4 = insertelement <16 x i8> %1, i8 %3, i32 8
5003 ; CHECK-NEXT: store <16 x i8> %2, <16 x i8>* %0, align 16
5004 ; CHECK-NEXT: ret <16 x i8> %4
5005 ; CHECK-NEXT: }
5006
5007 define <20 x i8> @insert_20xi8_at_9(<20 x i8>, i8) {
5008 entry:
5009 %2 = insertelement <20 x i8> %0, i8 %1, i32 9
5010 ret <20 x i8> %2
5011 }
5012 ; CHECK-LABEL: define <16 x i8> @insert_20xi8_at_9(<16 x i8>* nocapture nonnull dereferenceable(16), <16 x i8>, <16 x i8>, i8) {
5013 ; CHECK: entry:
5014 ; CHECK-NEXT: %4 = insertelement <16 x i8> %1, i8 %3, i32 9
5015 ; CHECK-NEXT: store <16 x i8> %2, <16 x i8>* %0, align 16
5016 ; CHECK-NEXT: ret <16 x i8> %4
5017 ; CHECK-NEXT: }
5018
5019 define <20 x i8> @insert_20xi8_at_10(<20 x i8>, i8) {
5020 entry:
5021 %2 = insertelement <20 x i8> %0, i8 %1, i32 10
5022 ret <20 x i8> %2
5023 }
5024 ; CHECK-LABEL: define <16 x i8> @insert_20xi8_at_10(<16 x i8>* nocapture nonnull dereferenceable(16), <16 x i8>, <16 x i8>, i8) {
5025 ; CHECK: entry:
5026 ; CHECK-NEXT: %4 = insertelement <16 x i8> %1, i8 %3, i32 10
5027 ; CHECK-NEXT: store <16 x i8> %2, <16 x i8>* %0, align 16
5028 ; CHECK-NEXT: ret <16 x i8> %4
5029 ; CHECK-NEXT: }
5030
5031 define <20 x i8> @insert_20xi8_at_11(<20 x i8>, i8) {
5032 entry:
5033 %2 = insertelement <20 x i8> %0, i8 %1, i32 11
5034 ret <20 x i8> %2
5035 }
5036 ; CHECK-LABEL: define <16 x i8> @insert_20xi8_at_11(<16 x i8>* nocapture nonnull dereferenceable(16), <16 x i8>, <16 x i8>, i8) {
5037 ; CHECK: entry:
5038 ; CHECK-NEXT: %4 = insertelement <16 x i8> %1, i8 %3, i32 11
5039 ; CHECK-NEXT: store <16 x i8> %2, <16 x i8>* %0, align 16
5040 ; CHECK-NEXT: ret <16 x i8> %4
5041 ; CHECK-NEXT: }
5042
5043 define <20 x i8> @insert_20xi8_at_12(<20 x i8>, i8) {
5044 entry:
5045 %2 = insertelement <20 x i8> %0, i8 %1, i32 12
5046 ret <20 x i8> %2
5047 }
5048 ; CHECK-LABEL: define <16 x i8> @insert_20xi8_at_12(<16 x i8>* nocapture nonnull dereferenceable(16), <16 x i8>, <16 x i8>, i8) {
5049 ; CHECK: entry:
5050 ; CHECK-NEXT: %4 = insertelement <16 x i8> %1, i8 %3, i32 12
5051 ; CHECK-NEXT: store <16 x i8> %2, <16 x i8>* %0, align 16
5052 ; CHECK-NEXT: ret <16 x i8> %4
5053 ; CHECK-NEXT: }
5054
5055 define <20 x i8> @insert_20xi8_at_13(<20 x i8>, i8) {
5056 entry:
5057 %2 = insertelement <20 x i8> %0, i8 %1, i32 13
5058 ret <20 x i8> %2
5059 }
5060 ; CHECK-LABEL: define <16 x i8> @insert_20xi8_at_13(<16 x i8>* nocapture nonnull dereferenceable(16), <16 x i8>, <16 x i8>, i8) {
5061 ; CHECK: entry:
5062 ; CHECK-NEXT: %4 = insertelement <16 x i8> %1, i8 %3, i32 13
5063 ; CHECK-NEXT: store <16 x i8> %2, <16 x i8>* %0, align 16
5064 ; CHECK-NEXT: ret <16 x i8> %4
5065 ; CHECK-NEXT: }
5066
5067 define <20 x i8> @insert_20xi8_at_14(<20 x i8>, i8) {
5068 entry:
5069 %2 = insertelement <20 x i8> %0, i8 %1, i32 14
5070 ret <20 x i8> %2
5071 }
5072 ; CHECK-LABEL: define <16 x i8> @insert_20xi8_at_14(<16 x i8>* nocapture nonnull dereferenceable(16), <16 x i8>, <16 x i8>, i8) {
5073 ; CHECK: entry:
5074 ; CHECK-NEXT: %4 = insertelement <16 x i8> %1, i8 %3, i32 14
5075 ; CHECK-NEXT: store <16 x i8> %2, <16 x i8>* %0, align 16
5076 ; CHECK-NEXT: ret <16 x i8> %4
5077 ; CHECK-NEXT: }
5078
5079 define <20 x i8> @insert_20xi8_at_15(<20 x i8>, i8) {
5080 entry:
5081 %2 = insertelement <20 x i8> %0, i8 %1, i32 15
5082 ret <20 x i8> %2
5083 }
5084 ; CHECK-LABEL: define <16 x i8> @insert_20xi8_at_15(<16 x i8>* nocapture nonnull dereferenceable(16), <16 x i8>, <16 x i8>, i8) {
5085 ; CHECK: entry:
5086 ; CHECK-NEXT: %4 = insertelement <16 x i8> %1, i8 %3, i32 15
5087 ; CHECK-NEXT: store <16 x i8> %2, <16 x i8>* %0, align 16
5088 ; CHECK-NEXT: ret <16 x i8> %4
5089 ; CHECK-NEXT: }
5090
5091 define <20 x i8> @insert_20xi8_at_16(<20 x i8>, i8) {
5092 entry:
5093 %2 = insertelement <20 x i8> %0, i8 %1, i32 16
5094 ret <20 x i8> %2
5095 }
5096 ; CHECK-LABEL: define <16 x i8> @insert_20xi8_at_16(<16 x i8>* nocapture nonnull dereferenceable(16), <16 x i8>, <16 x i8>, i8) {
5097 ; CHECK: entry:
5098 ; CHECK-NEXT: %4 = insertelement <16 x i8> %2, i8 %3, i32 0
5099 ; CHECK-NEXT: store <16 x i8> %4, <16 x i8>* %0, align 16
5100 ; CHECK-NEXT: ret <16 x i8> %1
5101 ; CHECK-NEXT: }
5102
5103 define <20 x i8> @insert_20xi8_at_17(<20 x i8>, i8) {
5104 entry:
5105 %2 = insertelement <20 x i8> %0, i8 %1, i32 17
5106 ret <20 x i8> %2
5107 }
5108 ; CHECK-LABEL: define <16 x i8> @insert_20xi8_at_17(<16 x i8>* nocapture nonnull dereferenceable(16), <16 x i8>, <16 x i8>, i8) {
5109 ; CHECK: entry:
5110 ; CHECK-NEXT: %4 = insertelement <16 x i8> %2, i8 %3, i32 1
5111 ; CHECK-NEXT: store <16 x i8> %4, <16 x i8>* %0, align 16
5112 ; CHECK-NEXT: ret <16 x i8> %1
5113 ; CHECK-NEXT: }
5114
5115 define <20 x i8> @insert_20xi8_at_18(<20 x i8>, i8) {
5116 entry:
5117 %2 = insertelement <20 x i8> %0, i8 %1, i32 18
5118 ret <20 x i8> %2
5119 }
5120 ; CHECK-LABEL: define <16 x i8> @insert_20xi8_at_18(<16 x i8>* nocapture nonnull dereferenceable(16), <16 x i8>, <16 x i8>, i8) {
5121 ; CHECK: entry:
5122 ; CHECK-NEXT: %4 = insertelement <16 x i8> %2, i8 %3, i32 2
5123 ; CHECK-NEXT: store <16 x i8> %4, <16 x i8>* %0, align 16
5124 ; CHECK-NEXT: ret <16 x i8> %1
5125 ; CHECK-NEXT: }
5126
5127 define <20 x i8> @insert_20xi8_at_19(<20 x i8>, i8) {
5128 entry:
5129 %2 = insertelement <20 x i8> %0, i8 %1, i32 19
5130 ret <20 x i8> %2
5131 }
5132 ; CHECK-LABEL: define <16 x i8> @insert_20xi8_at_19(<16 x i8>* nocapture nonnull dereferenceable(16), <16 x i8>, <16 x i8>, i8) {
5133 ; CHECK: entry:
5134 ; CHECK-NEXT: %4 = insertelement <16 x i8> %2, i8 %3, i32 3
5135 ; CHECK-NEXT: store <16 x i8> %4, <16 x i8>* %0, align 16
5136 ; CHECK-NEXT: ret <16 x i8> %1
5137 ; CHECK-NEXT: }
5138
5139 define <20 x i8> @insert_20xi8_undef_idx(<20 x i8>, i8) {
5140 entry:
5141 %2 = insertelement <20 x i8> %0, i8 %1, i32 20
5142 ret <20 x i8> %2
5143 }
5144 ; CHECK-LABEL: define <16 x i8> @insert_20xi8_undef_idx(<16 x i8>* nocapture non null dereferenceable(16), <16 x i8>, <16 x i8>, i8) {
5145 ; CHECK: entry:
5146 ; CHECK-NEXT: store <16 x i8> %2, <16 x i8>* %0, align 16
5147 ; CHECK-NEXT: ret <16 x i8> %1
5148 ; CHECK-NEXT: }
5149
5150 define <20 x i16> @insert_20xi16_at_0(<20 x i16>, i16) {
5151 entry:
5152 %2 = insertelement <20 x i16> %0, i16 %1, i32 0
5153 ret <20 x i16> %2
5154 }
5155 ; CHECK-LABEL: define <8 x i16> @insert_20xi16_at_0(<8 x i16>* nocapture nonnull dereferenceable(16), <8 x i16>* nocapture nonnull dereferenceable(16), <8 x i16 >, <8 x i16>, <8 x i16>, i16) {
5156 ; CHECK: entry:
5157 ; CHECK-NEXT: %6 = insertelement <8 x i16> %2, i16 %5, i32 0
5158 ; CHECK-NEXT: store <8 x i16> %3, <8 x i16>* %0, align 16
5159 ; CHECK-NEXT: store <8 x i16> %4, <8 x i16>* %1, align 16
5160 ; CHECK-NEXT: ret <8 x i16> %6
5161 ; CHECK-NEXT: }
5162
5163 define <20 x i16> @insert_20xi16_at_1(<20 x i16>, i16) {
5164 entry:
5165 %2 = insertelement <20 x i16> %0, i16 %1, i32 1
5166 ret <20 x i16> %2
5167 }
5168 ; CHECK-LABEL: define <8 x i16> @insert_20xi16_at_1(<8 x i16>* nocapture nonnull dereferenceable(16), <8 x i16>* nocapture nonnull dereferenceable(16), <8 x i16 >, <8 x i16>, <8 x i16>, i16) {
5169 ; CHECK: entry:
5170 ; CHECK-NEXT: %6 = insertelement <8 x i16> %2, i16 %5, i32 1
5171 ; CHECK-NEXT: store <8 x i16> %3, <8 x i16>* %0, align 16
5172 ; CHECK-NEXT: store <8 x i16> %4, <8 x i16>* %1, align 16
5173 ; CHECK-NEXT: ret <8 x i16> %6
5174 ; CHECK-NEXT: }
5175
5176 define <20 x i16> @insert_20xi16_at_2(<20 x i16>, i16) {
5177 entry:
5178 %2 = insertelement <20 x i16> %0, i16 %1, i32 2
5179 ret <20 x i16> %2
5180 }
5181 ; CHECK-LABEL: define <8 x i16> @insert_20xi16_at_2(<8 x i16>* nocapture nonnull dereferenceable(16), <8 x i16>* nocapture nonnull dereferenceable(16), <8 x i16 >, <8 x i16>, <8 x i16>, i16) {
5182 ; CHECK: entry:
5183 ; CHECK-NEXT: %6 = insertelement <8 x i16> %2, i16 %5, i32 2
5184 ; CHECK-NEXT: store <8 x i16> %3, <8 x i16>* %0, align 16
5185 ; CHECK-NEXT: store <8 x i16> %4, <8 x i16>* %1, align 16
5186 ; CHECK-NEXT: ret <8 x i16> %6
5187 ; CHECK-NEXT: }
5188
5189 define <20 x i16> @insert_20xi16_at_3(<20 x i16>, i16) {
5190 entry:
5191 %2 = insertelement <20 x i16> %0, i16 %1, i32 3
5192 ret <20 x i16> %2
5193 }
5194 ; CHECK-LABEL: define <8 x i16> @insert_20xi16_at_3(<8 x i16>* nocapture nonnull dereferenceable(16), <8 x i16>* nocapture nonnull dereferenceable(16), <8 x i16 >, <8 x i16>, <8 x i16>, i16) {
5195 ; CHECK: entry:
5196 ; CHECK-NEXT: %6 = insertelement <8 x i16> %2, i16 %5, i32 3
5197 ; CHECK-NEXT: store <8 x i16> %3, <8 x i16>* %0, align 16
5198 ; CHECK-NEXT: store <8 x i16> %4, <8 x i16>* %1, align 16
5199 ; CHECK-NEXT: ret <8 x i16> %6
5200 ; CHECK-NEXT: }
5201
5202 define <20 x i16> @insert_20xi16_at_4(<20 x i16>, i16) {
5203 entry:
5204 %2 = insertelement <20 x i16> %0, i16 %1, i32 4
5205 ret <20 x i16> %2
5206 }
5207 ; CHECK-LABEL: define <8 x i16> @insert_20xi16_at_4(<8 x i16>* nocapture nonnull dereferenceable(16), <8 x i16>* nocapture nonnull dereferenceable(16), <8 x i16 >, <8 x i16>, <8 x i16>, i16) {
5208 ; CHECK: entry:
5209 ; CHECK-NEXT: %6 = insertelement <8 x i16> %2, i16 %5, i32 4
5210 ; CHECK-NEXT: store <8 x i16> %3, <8 x i16>* %0, align 16
5211 ; CHECK-NEXT: store <8 x i16> %4, <8 x i16>* %1, align 16
5212 ; CHECK-NEXT: ret <8 x i16> %6
5213 ; CHECK-NEXT: }
5214
5215 define <20 x i16> @insert_20xi16_at_5(<20 x i16>, i16) {
5216 entry:
5217 %2 = insertelement <20 x i16> %0, i16 %1, i32 5
5218 ret <20 x i16> %2
5219 }
5220 ; CHECK-LABEL: define <8 x i16> @insert_20xi16_at_5(<8 x i16>* nocapture nonnull dereferenceable(16), <8 x i16>* nocapture nonnull dereferenceable(16), <8 x i16 >, <8 x i16>, <8 x i16>, i16) {
5221 ; CHECK: entry:
5222 ; CHECK-NEXT: %6 = insertelement <8 x i16> %2, i16 %5, i32 5
5223 ; CHECK-NEXT: store <8 x i16> %3, <8 x i16>* %0, align 16
5224 ; CHECK-NEXT: store <8 x i16> %4, <8 x i16>* %1, align 16
5225 ; CHECK-NEXT: ret <8 x i16> %6
5226 ; CHECK-NEXT: }
5227
5228 define <20 x i16> @insert_20xi16_at_6(<20 x i16>, i16) {
5229 entry:
5230 %2 = insertelement <20 x i16> %0, i16 %1, i32 6
5231 ret <20 x i16> %2
5232 }
5233 ; CHECK-LABEL: define <8 x i16> @insert_20xi16_at_6(<8 x i16>* nocapture nonnull dereferenceable(16), <8 x i16>* nocapture nonnull dereferenceable(16), <8 x i16 >, <8 x i16>, <8 x i16>, i16) {
5234 ; CHECK: entry:
5235 ; CHECK-NEXT: %6 = insertelement <8 x i16> %2, i16 %5, i32 6
5236 ; CHECK-NEXT: store <8 x i16> %3, <8 x i16>* %0, align 16
5237 ; CHECK-NEXT: store <8 x i16> %4, <8 x i16>* %1, align 16
5238 ; CHECK-NEXT: ret <8 x i16> %6
5239 ; CHECK-NEXT: }
5240
5241 define <20 x i16> @insert_20xi16_at_7(<20 x i16>, i16) {
5242 entry:
5243 %2 = insertelement <20 x i16> %0, i16 %1, i32 7
5244 ret <20 x i16> %2
5245 }
5246 ; CHECK-LABEL: define <8 x i16> @insert_20xi16_at_7(<8 x i16>* nocapture nonnull dereferenceable(16), <8 x i16>* nocapture nonnull dereferenceable(16), <8 x i16 >, <8 x i16>, <8 x i16>, i16) {
5247 ; CHECK: entry:
5248 ; CHECK-NEXT: %6 = insertelement <8 x i16> %2, i16 %5, i32 7
5249 ; CHECK-NEXT: store <8 x i16> %3, <8 x i16>* %0, align 16
5250 ; CHECK-NEXT: store <8 x i16> %4, <8 x i16>* %1, align 16
5251 ; CHECK-NEXT: ret <8 x i16> %6
5252 ; CHECK-NEXT: }
5253
5254 define <20 x i16> @insert_20xi16_at_8(<20 x i16>, i16) {
5255 entry:
5256 %2 = insertelement <20 x i16> %0, i16 %1, i32 8
5257 ret <20 x i16> %2
5258 }
5259 ; CHECK-LABEL: define <8 x i16> @insert_20xi16_at_8(<8 x i16>* nocapture nonnull dereferenceable(16), <8 x i16>* nocapture nonnull dereferenceable(16), <8 x i16 >, <8 x i16>, <8 x i16>, i16) {
5260 ; CHECK: entry:
5261 ; CHECK-NEXT: %6 = insertelement <8 x i16> %3, i16 %5, i32 0
5262 ; CHECK-NEXT: store <8 x i16> %6, <8 x i16>* %0, align 16
5263 ; CHECK-NEXT: store <8 x i16> %4, <8 x i16>* %1, align 16
5264 ; CHECK-NEXT: ret <8 x i16> %2
5265 ; CHECK-NEXT: }
5266
5267 define <20 x i16> @insert_20xi16_at_9(<20 x i16>, i16) {
5268 entry:
5269 %2 = insertelement <20 x i16> %0, i16 %1, i32 9
5270 ret <20 x i16> %2
5271 }
5272 ; CHECK-LABEL: define <8 x i16> @insert_20xi16_at_9(<8 x i16>* nocapture nonnull dereferenceable(16), <8 x i16>* nocapture nonnull dereferenceable(16), <8 x i16 >, <8 x i16>, <8 x i16>, i16) {
5273 ; CHECK: entry:
5274 ; CHECK-NEXT: %6 = insertelement <8 x i16> %3, i16 %5, i32 1
5275 ; CHECK-NEXT: store <8 x i16> %6, <8 x i16>* %0, align 16
5276 ; CHECK-NEXT: store <8 x i16> %4, <8 x i16>* %1, align 16
5277 ; CHECK-NEXT: ret <8 x i16> %2
5278 ; CHECK-NEXT: }
5279
5280 define <20 x i16> @insert_20xi16_at_10(<20 x i16>, i16) {
5281 entry:
5282 %2 = insertelement <20 x i16> %0, i16 %1, i32 10
5283 ret <20 x i16> %2
5284 }
5285 ; CHECK-LABEL: define <8 x i16> @insert_20xi16_at_10(<8 x i16>* nocapture nonnul l dereferenceable(16), <8 x i16>* nocapture nonnull dereferenceable(16), <8 x i1 6>, <8 x i16>, <8 x i16>, i16) {
5286 ; CHECK: entry:
5287 ; CHECK-NEXT: %6 = insertelement <8 x i16> %3, i16 %5, i32 2
5288 ; CHECK-NEXT: store <8 x i16> %6, <8 x i16>* %0, align 16
5289 ; CHECK-NEXT: store <8 x i16> %4, <8 x i16>* %1, align 16
5290 ; CHECK-NEXT: ret <8 x i16> %2
5291 ; CHECK-NEXT: }
5292
5293 define <20 x i16> @insert_20xi16_at_11(<20 x i16>, i16) {
5294 entry:
5295 %2 = insertelement <20 x i16> %0, i16 %1, i32 11
5296 ret <20 x i16> %2
5297 }
5298 ; CHECK-LABEL: define <8 x i16> @insert_20xi16_at_11(<8 x i16>* nocapture nonnul l dereferenceable(16), <8 x i16>* nocapture nonnull dereferenceable(16), <8 x i1 6>, <8 x i16>, <8 x i16>, i16) {
5299 ; CHECK: entry:
5300 ; CHECK-NEXT: %6 = insertelement <8 x i16> %3, i16 %5, i32 3
5301 ; CHECK-NEXT: store <8 x i16> %6, <8 x i16>* %0, align 16
5302 ; CHECK-NEXT: store <8 x i16> %4, <8 x i16>* %1, align 16
5303 ; CHECK-NEXT: ret <8 x i16> %2
5304 ; CHECK-NEXT: }
5305
5306 define <20 x i16> @insert_20xi16_at_12(<20 x i16>, i16) {
5307 entry:
5308 %2 = insertelement <20 x i16> %0, i16 %1, i32 12
5309 ret <20 x i16> %2
5310 }
5311 ; CHECK-LABEL: define <8 x i16> @insert_20xi16_at_12(<8 x i16>* nocapture nonnul l dereferenceable(16), <8 x i16>* nocapture nonnull dereferenceable(16), <8 x i1 6>, <8 x i16>, <8 x i16>, i16) {
5312 ; CHECK: entry:
5313 ; CHECK-NEXT: %6 = insertelement <8 x i16> %3, i16 %5, i32 4
5314 ; CHECK-NEXT: store <8 x i16> %6, <8 x i16>* %0, align 16
5315 ; CHECK-NEXT: store <8 x i16> %4, <8 x i16>* %1, align 16
5316 ; CHECK-NEXT: ret <8 x i16> %2
5317 ; CHECK-NEXT: }
5318
5319 define <20 x i16> @insert_20xi16_at_13(<20 x i16>, i16) {
5320 entry:
5321 %2 = insertelement <20 x i16> %0, i16 %1, i32 13
5322 ret <20 x i16> %2
5323 }
5324 ; CHECK-LABEL: define <8 x i16> @insert_20xi16_at_13(<8 x i16>* nocapture nonnul l dereferenceable(16), <8 x i16>* nocapture nonnull dereferenceable(16), <8 x i1 6>, <8 x i16>, <8 x i16>, i16) {
5325 ; CHECK: entry:
5326 ; CHECK-NEXT: %6 = insertelement <8 x i16> %3, i16 %5, i32 5
5327 ; CHECK-NEXT: store <8 x i16> %6, <8 x i16>* %0, align 16
5328 ; CHECK-NEXT: store <8 x i16> %4, <8 x i16>* %1, align 16
5329 ; CHECK-NEXT: ret <8 x i16> %2
5330 ; CHECK-NEXT: }
5331
5332 define <20 x i16> @insert_20xi16_at_14(<20 x i16>, i16) {
5333 entry:
5334 %2 = insertelement <20 x i16> %0, i16 %1, i32 14
5335 ret <20 x i16> %2
5336 }
5337 ; CHECK-LABEL: define <8 x i16> @insert_20xi16_at_14(<8 x i16>* nocapture nonnul l dereferenceable(16), <8 x i16>* nocapture nonnull dereferenceable(16), <8 x i1 6>, <8 x i16>, <8 x i16>, i16) {
5338 ; CHECK: entry:
5339 ; CHECK-NEXT: %6 = insertelement <8 x i16> %3, i16 %5, i32 6
5340 ; CHECK-NEXT: store <8 x i16> %6, <8 x i16>* %0, align 16
5341 ; CHECK-NEXT: store <8 x i16> %4, <8 x i16>* %1, align 16
5342 ; CHECK-NEXT: ret <8 x i16> %2
5343 ; CHECK-NEXT: }
5344
5345 define <20 x i16> @insert_20xi16_at_15(<20 x i16>, i16) {
5346 entry:
5347 %2 = insertelement <20 x i16> %0, i16 %1, i32 15
5348 ret <20 x i16> %2
5349 }
5350 ; CHECK-LABEL: define <8 x i16> @insert_20xi16_at_15(<8 x i16>* nocapture nonnul l dereferenceable(16), <8 x i16>* nocapture nonnull dereferenceable(16), <8 x i1 6>, <8 x i16>, <8 x i16>, i16) {
5351 ; CHECK: entry:
5352 ; CHECK-NEXT: %6 = insertelement <8 x i16> %3, i16 %5, i32 7
5353 ; CHECK-NEXT: store <8 x i16> %6, <8 x i16>* %0, align 16
5354 ; CHECK-NEXT: store <8 x i16> %4, <8 x i16>* %1, align 16
5355 ; CHECK-NEXT: ret <8 x i16> %2
5356 ; CHECK-NEXT: }
5357
5358 define <20 x i16> @insert_20xi16_at_16(<20 x i16>, i16) {
5359 entry:
5360 %2 = insertelement <20 x i16> %0, i16 %1, i32 16
5361 ret <20 x i16> %2
5362 }
5363 ; CHECK-LABEL: define <8 x i16> @insert_20xi16_at_16(<8 x i16>* nocapture nonnul l dereferenceable(16), <8 x i16>* nocapture nonnull dereferenceable(16), <8 x i1 6>, <8 x i16>, <8 x i16>, i16) {
5364 ; CHECK: entry:
5365 ; CHECK-NEXT: %6 = insertelement <8 x i16> %4, i16 %5, i32 0
5366 ; CHECK-NEXT: store <8 x i16> %3, <8 x i16>* %0, align 16
5367 ; CHECK-NEXT: store <8 x i16> %6, <8 x i16>* %1, align 16
5368 ; CHECK-NEXT: ret <8 x i16> %2
5369 ; CHECK-NEXT: }
5370
5371 define <20 x i16> @insert_20xi16_at_17(<20 x i16>, i16) {
5372 entry:
5373 %2 = insertelement <20 x i16> %0, i16 %1, i32 17
5374 ret <20 x i16> %2
5375 }
5376 ; CHECK-LABEL: define <8 x i16> @insert_20xi16_at_17(<8 x i16>* nocapture nonnul l dereferenceable(16), <8 x i16>* nocapture nonnull dereferenceable(16), <8 x i1 6>, <8 x i16>, <8 x i16>, i16) {
5377 ; CHECK: entry:
5378 ; CHECK-NEXT: %6 = insertelement <8 x i16> %4, i16 %5, i32 1
5379 ; CHECK-NEXT: store <8 x i16> %3, <8 x i16>* %0, align 16
5380 ; CHECK-NEXT: store <8 x i16> %6, <8 x i16>* %1, align 16
5381 ; CHECK-NEXT: ret <8 x i16> %2
5382 ; CHECK-NEXT: }
5383
5384 define <20 x i16> @insert_20xi16_at_18(<20 x i16>, i16) {
5385 entry:
5386 %2 = insertelement <20 x i16> %0, i16 %1, i32 18
5387 ret <20 x i16> %2
5388 }
5389 ; CHECK-LABEL: define <8 x i16> @insert_20xi16_at_18(<8 x i16>* nocapture nonnul l dereferenceable(16), <8 x i16>* nocapture nonnull dereferenceable(16), <8 x i1 6>, <8 x i16>, <8 x i16>, i16) {
5390 ; CHECK: entry:
5391 ; CHECK-NEXT: %6 = insertelement <8 x i16> %4, i16 %5, i32 2
5392 ; CHECK-NEXT: store <8 x i16> %3, <8 x i16>* %0, align 16
5393 ; CHECK-NEXT: store <8 x i16> %6, <8 x i16>* %1, align 16
5394 ; CHECK-NEXT: ret <8 x i16> %2
5395 ; CHECK-NEXT: }
5396
5397 define <20 x i16> @insert_20xi16_at_19(<20 x i16>, i16) {
5398 entry:
5399 %2 = insertelement <20 x i16> %0, i16 %1, i32 19
5400 ret <20 x i16> %2
5401 }
5402 ; CHECK-LABEL: define <8 x i16> @insert_20xi16_at_19(<8 x i16>* nocapture nonnul l dereferenceable(16), <8 x i16>* nocapture nonnull dereferenceable(16), <8 x i1 6>, <8 x i16>, <8 x i16>, i16) {
5403 ; CHECK: entry:
5404 ; CHECK-NEXT: %6 = insertelement <8 x i16> %4, i16 %5, i32 3
5405 ; CHECK-NEXT: store <8 x i16> %3, <8 x i16>* %0, align 16
5406 ; CHECK-NEXT: store <8 x i16> %6, <8 x i16>* %1, align 16
5407 ; CHECK-NEXT: ret <8 x i16> %2
5408 ; CHECK-NEXT: }
5409
5410 define <20 x i16> @insert_20xi16_undef_idx(<20 x i16>, i16) {
5411 entry:
5412 %2 = insertelement <20 x i16> %0, i16 %1, i32 20
5413 ret <20 x i16> %2
5414 }
5415 ; CHECK-LABEL: define <8 x i16> @insert_20xi16_undef_idx(<8 x i16>* nocapture no nnull dereferenceable(16), <8 x i16>* nocapture nonnull dereferenceable(16), <8 x i16>, <8 x i16>, <8 x i16>, i16) {
5416 ; CHECK: entry:
5417 ; CHECK-NEXT: store <8 x i16> %3, <8 x i16>* %0, align 16
5418 ; CHECK-NEXT: store <8 x i16> %4, <8 x i16>* %1, align 16
5419 ; CHECK-NEXT: ret <8 x i16> %2
5420 ; CHECK-NEXT: }
5421
5422 define <20 x i32> @insert_20xi32_at_0(<20 x i32>, i32) {
5423 entry:
5424 %2 = insertelement <20 x i32> %0, i32 %1, i32 0
5425 ret <20 x i32> %2
5426 }
5427 ; CHECK-LABEL: define <4 x i32> @insert_20xi32_at_0(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32 >* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferen ceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, i32) {
5428 ; CHECK: entry:
5429 ; CHECK-NEXT: %10 = insertelement <4 x i32> %4, i32 %9, i32 0
5430 ; CHECK-NEXT: store <4 x i32> %5, <4 x i32>* %0, align 16
5431 ; CHECK-NEXT: store <4 x i32> %6, <4 x i32>* %1, align 16
5432 ; CHECK-NEXT: store <4 x i32> %7, <4 x i32>* %2, align 16
5433 ; CHECK-NEXT: store <4 x i32> %8, <4 x i32>* %3, align 16
5434 ; CHECK-NEXT: ret <4 x i32> %10
5435 ; CHECK-NEXT: }
5436
5437 define <20 x i32> @insert_20xi32_at_1(<20 x i32>, i32) {
5438 entry:
5439 %2 = insertelement <20 x i32> %0, i32 %1, i32 1
5440 ret <20 x i32> %2
5441 }
5442 ; CHECK-LABEL: define <4 x i32> @insert_20xi32_at_1(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32 >* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferen ceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, i32) {
5443 ; CHECK: entry:
5444 ; CHECK-NEXT: %10 = insertelement <4 x i32> %4, i32 %9, i32 1
5445 ; CHECK-NEXT: store <4 x i32> %5, <4 x i32>* %0, align 16
5446 ; CHECK-NEXT: store <4 x i32> %6, <4 x i32>* %1, align 16
5447 ; CHECK-NEXT: store <4 x i32> %7, <4 x i32>* %2, align 16
5448 ; CHECK-NEXT: store <4 x i32> %8, <4 x i32>* %3, align 16
5449 ; CHECK-NEXT: ret <4 x i32> %10
5450 ; CHECK-NEXT: }
5451
5452 define <20 x i32> @insert_20xi32_at_2(<20 x i32>, i32) {
5453 entry:
5454 %2 = insertelement <20 x i32> %0, i32 %1, i32 2
5455 ret <20 x i32> %2
5456 }
5457 ; CHECK-LABEL: define <4 x i32> @insert_20xi32_at_2(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32 >* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferen ceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, i32) {
5458 ; CHECK: entry:
5459 ; CHECK-NEXT: %10 = insertelement <4 x i32> %4, i32 %9, i32 2
5460 ; CHECK-NEXT: store <4 x i32> %5, <4 x i32>* %0, align 16
5461 ; CHECK-NEXT: store <4 x i32> %6, <4 x i32>* %1, align 16
5462 ; CHECK-NEXT: store <4 x i32> %7, <4 x i32>* %2, align 16
5463 ; CHECK-NEXT: store <4 x i32> %8, <4 x i32>* %3, align 16
5464 ; CHECK-NEXT: ret <4 x i32> %10
5465 ; CHECK-NEXT: }
5466
5467 define <20 x i32> @insert_20xi32_at_3(<20 x i32>, i32) {
5468 entry:
5469 %2 = insertelement <20 x i32> %0, i32 %1, i32 3
5470 ret <20 x i32> %2
5471 }
5472 ; CHECK-LABEL: define <4 x i32> @insert_20xi32_at_3(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32 >* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferen ceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, i32) {
5473 ; CHECK: entry:
5474 ; CHECK-NEXT: %10 = insertelement <4 x i32> %4, i32 %9, i32 3
5475 ; CHECK-NEXT: store <4 x i32> %5, <4 x i32>* %0, align 16
5476 ; CHECK-NEXT: store <4 x i32> %6, <4 x i32>* %1, align 16
5477 ; CHECK-NEXT: store <4 x i32> %7, <4 x i32>* %2, align 16
5478 ; CHECK-NEXT: store <4 x i32> %8, <4 x i32>* %3, align 16
5479 ; CHECK-NEXT: ret <4 x i32> %10
5480 ; CHECK-NEXT: }
5481
5482 define <20 x i32> @insert_20xi32_at_4(<20 x i32>, i32) {
5483 entry:
5484 %2 = insertelement <20 x i32> %0, i32 %1, i32 4
5485 ret <20 x i32> %2
5486 }
5487 ; CHECK-LABEL: define <4 x i32> @insert_20xi32_at_4(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32 >* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferen ceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, i32) {
5488 ; CHECK: entry:
5489 ; CHECK-NEXT: %10 = insertelement <4 x i32> %5, i32 %9, i32 0
5490 ; CHECK-NEXT: store <4 x i32> %10, <4 x i32>* %0, align 16
5491 ; CHECK-NEXT: store <4 x i32> %6, <4 x i32>* %1, align 16
5492 ; CHECK-NEXT: store <4 x i32> %7, <4 x i32>* %2, align 16
5493 ; CHECK-NEXT: store <4 x i32> %8, <4 x i32>* %3, align 16
5494 ; CHECK-NEXT: ret <4 x i32> %4
5495 ; CHECK-NEXT: }
5496
5497 define <20 x i32> @insert_20xi32_at_5(<20 x i32>, i32) {
5498 entry:
5499 %2 = insertelement <20 x i32> %0, i32 %1, i32 5
5500 ret <20 x i32> %2
5501 }
5502 ; CHECK-LABEL: define <4 x i32> @insert_20xi32_at_5(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32 >* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferen ceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, i32) {
5503 ; CHECK: entry:
5504 ; CHECK-NEXT: %10 = insertelement <4 x i32> %5, i32 %9, i32 1
5505 ; CHECK-NEXT: store <4 x i32> %10, <4 x i32>* %0, align 16
5506 ; CHECK-NEXT: store <4 x i32> %6, <4 x i32>* %1, align 16
5507 ; CHECK-NEXT: store <4 x i32> %7, <4 x i32>* %2, align 16
5508 ; CHECK-NEXT: store <4 x i32> %8, <4 x i32>* %3, align 16
5509 ; CHECK-NEXT: ret <4 x i32> %4
5510 ; CHECK-NEXT: }
5511
5512 define <20 x i32> @insert_20xi32_at_6(<20 x i32>, i32) {
5513 entry:
5514 %2 = insertelement <20 x i32> %0, i32 %1, i32 6
5515 ret <20 x i32> %2
5516 }
5517 ; CHECK-LABEL: define <4 x i32> @insert_20xi32_at_6(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32 >* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferen ceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, i32) {
5518 ; CHECK: entry:
5519 ; CHECK-NEXT: %10 = insertelement <4 x i32> %5, i32 %9, i32 2
5520 ; CHECK-NEXT: store <4 x i32> %10, <4 x i32>* %0, align 16
5521 ; CHECK-NEXT: store <4 x i32> %6, <4 x i32>* %1, align 16
5522 ; CHECK-NEXT: store <4 x i32> %7, <4 x i32>* %2, align 16
5523 ; CHECK-NEXT: store <4 x i32> %8, <4 x i32>* %3, align 16
5524 ; CHECK-NEXT: ret <4 x i32> %4
5525 ; CHECK-NEXT: }
5526
5527 define <20 x i32> @insert_20xi32_at_7(<20 x i32>, i32) {
5528 entry:
5529 %2 = insertelement <20 x i32> %0, i32 %1, i32 7
5530 ret <20 x i32> %2
5531 }
5532 ; CHECK-LABEL: define <4 x i32> @insert_20xi32_at_7(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32 >* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferen ceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, i32) {
5533 ; CHECK: entry:
5534 ; CHECK-NEXT: %10 = insertelement <4 x i32> %5, i32 %9, i32 3
5535 ; CHECK-NEXT: store <4 x i32> %10, <4 x i32>* %0, align 16
5536 ; CHECK-NEXT: store <4 x i32> %6, <4 x i32>* %1, align 16
5537 ; CHECK-NEXT: store <4 x i32> %7, <4 x i32>* %2, align 16
5538 ; CHECK-NEXT: store <4 x i32> %8, <4 x i32>* %3, align 16
5539 ; CHECK-NEXT: ret <4 x i32> %4
5540 ; CHECK-NEXT: }
5541
5542 define <20 x i32> @insert_20xi32_at_8(<20 x i32>, i32) {
5543 entry:
5544 %2 = insertelement <20 x i32> %0, i32 %1, i32 8
5545 ret <20 x i32> %2
5546 }
5547 ; CHECK-LABEL: define <4 x i32> @insert_20xi32_at_8(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32 >* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferen ceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, i32) {
5548 ; CHECK: entry:
5549 ; CHECK-NEXT: %10 = insertelement <4 x i32> %6, i32 %9, i32 0
5550 ; CHECK-NEXT: store <4 x i32> %5, <4 x i32>* %0, align 16
5551 ; CHECK-NEXT: store <4 x i32> %10, <4 x i32>* %1, align 16
5552 ; CHECK-NEXT: store <4 x i32> %7, <4 x i32>* %2, align 16
5553 ; CHECK-NEXT: store <4 x i32> %8, <4 x i32>* %3, align 16
5554 ; CHECK-NEXT: ret <4 x i32> %4
5555 ; CHECK-NEXT: }
5556
5557 define <20 x i32> @insert_20xi32_at_9(<20 x i32>, i32) {
5558 entry:
5559 %2 = insertelement <20 x i32> %0, i32 %1, i32 9
5560 ret <20 x i32> %2
5561 }
5562 ; CHECK-LABEL: define <4 x i32> @insert_20xi32_at_9(<4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32 >* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferen ceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, i32) {
5563 ; CHECK: entry:
5564 ; CHECK-NEXT: %10 = insertelement <4 x i32> %6, i32 %9, i32 1
5565 ; CHECK-NEXT: store <4 x i32> %5, <4 x i32>* %0, align 16
5566 ; CHECK-NEXT: store <4 x i32> %10, <4 x i32>* %1, align 16
5567 ; CHECK-NEXT: store <4 x i32> %7, <4 x i32>* %2, align 16
5568 ; CHECK-NEXT: store <4 x i32> %8, <4 x i32>* %3, align 16
5569 ; CHECK-NEXT: ret <4 x i32> %4
5570 ; CHECK-NEXT: }
5571
5572 define <20 x i32> @insert_20xi32_at_10(<20 x i32>, i32) {
5573 entry:
5574 %2 = insertelement <20 x i32> %0, i32 %1, i32 10
5575 ret <20 x i32> %2
5576 }
5577 ; CHECK-LABEL: define <4 x i32> @insert_20xi32_at_10(<4 x i32>* nocapture nonnul l dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i3 2>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull derefere nceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, i32) {
5578 ; CHECK: entry:
5579 ; CHECK-NEXT: %10 = insertelement <4 x i32> %6, i32 %9, i32 2
5580 ; CHECK-NEXT: store <4 x i32> %5, <4 x i32>* %0, align 16
5581 ; CHECK-NEXT: store <4 x i32> %10, <4 x i32>* %1, align 16
5582 ; CHECK-NEXT: store <4 x i32> %7, <4 x i32>* %2, align 16
5583 ; CHECK-NEXT: store <4 x i32> %8, <4 x i32>* %3, align 16
5584 ; CHECK-NEXT: ret <4 x i32> %4
5585 ; CHECK-NEXT: }
5586
5587 define <20 x i32> @insert_20xi32_at_11(<20 x i32>, i32) {
5588 entry:
5589 %2 = insertelement <20 x i32> %0, i32 %1, i32 11
5590 ret <20 x i32> %2
5591 }
5592 ; CHECK-LABEL: define <4 x i32> @insert_20xi32_at_11(<4 x i32>* nocapture nonnul l dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i3 2>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull derefere nceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, i32) {
5593 ; CHECK: entry:
5594 ; CHECK-NEXT: %10 = insertelement <4 x i32> %6, i32 %9, i32 3
5595 ; CHECK-NEXT: store <4 x i32> %5, <4 x i32>* %0, align 16
5596 ; CHECK-NEXT: store <4 x i32> %10, <4 x i32>* %1, align 16
5597 ; CHECK-NEXT: store <4 x i32> %7, <4 x i32>* %2, align 16
5598 ; CHECK-NEXT: store <4 x i32> %8, <4 x i32>* %3, align 16
5599 ; CHECK-NEXT: ret <4 x i32> %4
5600 ; CHECK-NEXT: }
5601
5602 define <20 x i32> @insert_20xi32_at_12(<20 x i32>, i32) {
5603 entry:
5604 %2 = insertelement <20 x i32> %0, i32 %1, i32 12
5605 ret <20 x i32> %2
5606 }
5607 ; CHECK-LABEL: define <4 x i32> @insert_20xi32_at_12(<4 x i32>* nocapture nonnul l dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i3 2>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull derefere nceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, i32) {
5608 ; CHECK: entry:
5609 ; CHECK-NEXT: %10 = insertelement <4 x i32> %7, i32 %9, i32 0
5610 ; CHECK-NEXT: store <4 x i32> %5, <4 x i32>* %0, align 16
5611 ; CHECK-NEXT: store <4 x i32> %6, <4 x i32>* %1, align 16
5612 ; CHECK-NEXT: store <4 x i32> %10, <4 x i32>* %2, align 16
5613 ; CHECK-NEXT: store <4 x i32> %8, <4 x i32>* %3, align 16
5614 ; CHECK-NEXT: ret <4 x i32> %4
5615 ; CHECK-NEXT: }
5616
5617 define <20 x i32> @insert_20xi32_at_13(<20 x i32>, i32) {
5618 entry:
5619 %2 = insertelement <20 x i32> %0, i32 %1, i32 13
5620 ret <20 x i32> %2
5621 }
5622 ; CHECK-LABEL: define <4 x i32> @insert_20xi32_at_13(<4 x i32>* nocapture nonnul l dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i3 2>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull derefere nceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, i32) {
5623 ; CHECK: entry:
5624 ; CHECK-NEXT: %10 = insertelement <4 x i32> %7, i32 %9, i32 1
5625 ; CHECK-NEXT: store <4 x i32> %5, <4 x i32>* %0, align 16
5626 ; CHECK-NEXT: store <4 x i32> %6, <4 x i32>* %1, align 16
5627 ; CHECK-NEXT: store <4 x i32> %10, <4 x i32>* %2, align 16
5628 ; CHECK-NEXT: store <4 x i32> %8, <4 x i32>* %3, align 16
5629 ; CHECK-NEXT: ret <4 x i32> %4
5630 ; CHECK-NEXT: }
5631
5632 define <20 x i32> @insert_20xi32_at_14(<20 x i32>, i32) {
5633 entry:
5634 %2 = insertelement <20 x i32> %0, i32 %1, i32 14
5635 ret <20 x i32> %2
5636 }
5637 ; CHECK-LABEL: define <4 x i32> @insert_20xi32_at_14(<4 x i32>* nocapture nonnul l dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i3 2>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull derefere nceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, i32) {
5638 ; CHECK: entry:
5639 ; CHECK-NEXT: %10 = insertelement <4 x i32> %7, i32 %9, i32 2
5640 ; CHECK-NEXT: store <4 x i32> %5, <4 x i32>* %0, align 16
5641 ; CHECK-NEXT: store <4 x i32> %6, <4 x i32>* %1, align 16
5642 ; CHECK-NEXT: store <4 x i32> %10, <4 x i32>* %2, align 16
5643 ; CHECK-NEXT: store <4 x i32> %8, <4 x i32>* %3, align 16
5644 ; CHECK-NEXT: ret <4 x i32> %4
5645 ; CHECK-NEXT: }
5646
5647 define <20 x i32> @insert_20xi32_at_15(<20 x i32>, i32) {
5648 entry:
5649 %2 = insertelement <20 x i32> %0, i32 %1, i32 15
5650 ret <20 x i32> %2
5651 }
5652 ; CHECK-LABEL: define <4 x i32> @insert_20xi32_at_15(<4 x i32>* nocapture nonnul l dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i3 2>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull derefere nceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, i32) {
5653 ; CHECK: entry:
5654 ; CHECK-NEXT: %10 = insertelement <4 x i32> %7, i32 %9, i32 3
5655 ; CHECK-NEXT: store <4 x i32> %5, <4 x i32>* %0, align 16
5656 ; CHECK-NEXT: store <4 x i32> %6, <4 x i32>* %1, align 16
5657 ; CHECK-NEXT: store <4 x i32> %10, <4 x i32>* %2, align 16
5658 ; CHECK-NEXT: store <4 x i32> %8, <4 x i32>* %3, align 16
5659 ; CHECK-NEXT: ret <4 x i32> %4
5660 ; CHECK-NEXT: }
5661
5662 define <20 x i32> @insert_20xi32_at_16(<20 x i32>, i32) {
5663 entry:
5664 %2 = insertelement <20 x i32> %0, i32 %1, i32 16
5665 ret <20 x i32> %2
5666 }
5667 ; CHECK-LABEL: define <4 x i32> @insert_20xi32_at_16(<4 x i32>* nocapture nonnul l dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i3 2>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull derefere nceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, i32) {
5668 ; CHECK: entry:
5669 ; CHECK-NEXT: %10 = insertelement <4 x i32> %8, i32 %9, i32 0
5670 ; CHECK-NEXT: store <4 x i32> %5, <4 x i32>* %0, align 16
5671 ; CHECK-NEXT: store <4 x i32> %6, <4 x i32>* %1, align 16
5672 ; CHECK-NEXT: store <4 x i32> %7, <4 x i32>* %2, align 16
5673 ; CHECK-NEXT: store <4 x i32> %10, <4 x i32>* %3, align 16
5674 ; CHECK-NEXT: ret <4 x i32> %4
5675 ; CHECK-NEXT: }
5676
5677 define <20 x i32> @insert_20xi32_at_17(<20 x i32>, i32) {
5678 entry:
5679 %2 = insertelement <20 x i32> %0, i32 %1, i32 17
5680 ret <20 x i32> %2
5681 }
5682 ; CHECK-LABEL: define <4 x i32> @insert_20xi32_at_17(<4 x i32>* nocapture nonnul l dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i3 2>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull derefere nceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, i32) {
5683 ; CHECK: entry:
5684 ; CHECK-NEXT: %10 = insertelement <4 x i32> %8, i32 %9, i32 1
5685 ; CHECK-NEXT: store <4 x i32> %5, <4 x i32>* %0, align 16
5686 ; CHECK-NEXT: store <4 x i32> %6, <4 x i32>* %1, align 16
5687 ; CHECK-NEXT: store <4 x i32> %7, <4 x i32>* %2, align 16
5688 ; CHECK-NEXT: store <4 x i32> %10, <4 x i32>* %3, align 16
5689 ; CHECK-NEXT: ret <4 x i32> %4
5690 ; CHECK-NEXT: }
5691
5692 define <20 x i32> @insert_20xi32_at_18(<20 x i32>, i32) {
5693 entry:
5694 %2 = insertelement <20 x i32> %0, i32 %1, i32 18
5695 ret <20 x i32> %2
5696 }
5697 ; CHECK-LABEL: define <4 x i32> @insert_20xi32_at_18(<4 x i32>* nocapture nonnul l dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i3 2>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull derefere nceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, i32) {
5698 ; CHECK: entry:
5699 ; CHECK-NEXT: %10 = insertelement <4 x i32> %8, i32 %9, i32 2
5700 ; CHECK-NEXT: store <4 x i32> %5, <4 x i32>* %0, align 16
5701 ; CHECK-NEXT: store <4 x i32> %6, <4 x i32>* %1, align 16
5702 ; CHECK-NEXT: store <4 x i32> %7, <4 x i32>* %2, align 16
5703 ; CHECK-NEXT: store <4 x i32> %10, <4 x i32>* %3, align 16
5704 ; CHECK-NEXT: ret <4 x i32> %4
5705 ; CHECK-NEXT: }
5706
5707 define <20 x i32> @insert_20xi32_at_19(<20 x i32>, i32) {
5708 entry:
5709 %2 = insertelement <20 x i32> %0, i32 %1, i32 19
5710 ret <20 x i32> %2
5711 }
5712 ; CHECK-LABEL: define <4 x i32> @insert_20xi32_at_19(<4 x i32>* nocapture nonnul l dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i3 2>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull derefere nceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, i32) {
5713 ; CHECK: entry:
5714 ; CHECK-NEXT: %10 = insertelement <4 x i32> %8, i32 %9, i32 3
5715 ; CHECK-NEXT: store <4 x i32> %5, <4 x i32>* %0, align 16
5716 ; CHECK-NEXT: store <4 x i32> %6, <4 x i32>* %1, align 16
5717 ; CHECK-NEXT: store <4 x i32> %7, <4 x i32>* %2, align 16
5718 ; CHECK-NEXT: store <4 x i32> %10, <4 x i32>* %3, align 16
5719 ; CHECK-NEXT: ret <4 x i32> %4
5720 ; CHECK-NEXT: }
5721
5722 define <20 x i32> @insert_20xi32_undef_idx(<20 x i32>, i32) {
5723 entry:
5724 %2 = insertelement <20 x i32> %0, i32 %1, i32 20
5725 ret <20 x i32> %2
5726 }
5727 ; CHECK-LABEL: define <4 x i32> @insert_20xi32_undef_idx(<4 x i32>* nocapture no nnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dere ferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, i32) {
5728 ; CHECK: entry:
5729 ; CHECK-NEXT: store <4 x i32> %5, <4 x i32>* %0, align 16
5730 ; CHECK-NEXT: store <4 x i32> %6, <4 x i32>* %1, align 16
5731 ; CHECK-NEXT: store <4 x i32> %7, <4 x i32>* %2, align 16
5732 ; CHECK-NEXT: store <4 x i32> %8, <4 x i32>* %3, align 16
5733 ; CHECK-NEXT: ret <4 x i32> %4
5734 ; CHECK-NEXT: }
5735
5736 define <20 x i64> @insert_20xi64_at_0(<20 x i64>, i64) {
5737 entry:
5738 %2 = insertelement <20 x i64> %0, i64 %1, i32 0
5739 ret <20 x i64> %2
5740 }
5741 ; CHECK-LABEL: define <2 x i64> @insert_20xi64_at_0(<2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64 >* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferen ceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocaptu re nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16) , <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, i64) {
5742 ; CHECK: entry:
5743 ; CHECK-NEXT: %20 = insertelement <2 x i64> %9, i64 %19, i32 0
5744 ; CHECK-NEXT: store <2 x i64> %10, <2 x i64>* %0, align 16
5745 ; CHECK-NEXT: store <2 x i64> %11, <2 x i64>* %1, align 16
5746 ; CHECK-NEXT: store <2 x i64> %12, <2 x i64>* %2, align 16
5747 ; CHECK-NEXT: store <2 x i64> %13, <2 x i64>* %3, align 16
5748 ; CHECK-NEXT: store <2 x i64> %14, <2 x i64>* %4, align 16
5749 ; CHECK-NEXT: store <2 x i64> %15, <2 x i64>* %5, align 16
5750 ; CHECK-NEXT: store <2 x i64> %16, <2 x i64>* %6, align 16
5751 ; CHECK-NEXT: store <2 x i64> %17, <2 x i64>* %7, align 16
5752 ; CHECK-NEXT: store <2 x i64> %18, <2 x i64>* %8, align 16
5753 ; CHECK-NEXT: ret <2 x i64> %20
5754 ; CHECK-NEXT: }
5755
5756 define <20 x i64> @insert_20xi64_at_1(<20 x i64>, i64) {
5757 entry:
5758 %2 = insertelement <20 x i64> %0, i64 %1, i32 1
5759 ret <20 x i64> %2
5760 }
5761 ; CHECK-LABEL: define <2 x i64> @insert_20xi64_at_1(<2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64 >* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferen ceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocaptu re nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16) , <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, i64) {
5762 ; CHECK: entry:
5763 ; CHECK-NEXT: %20 = insertelement <2 x i64> %9, i64 %19, i32 1
5764 ; CHECK-NEXT: store <2 x i64> %10, <2 x i64>* %0, align 16
5765 ; CHECK-NEXT: store <2 x i64> %11, <2 x i64>* %1, align 16
5766 ; CHECK-NEXT: store <2 x i64> %12, <2 x i64>* %2, align 16
5767 ; CHECK-NEXT: store <2 x i64> %13, <2 x i64>* %3, align 16
5768 ; CHECK-NEXT: store <2 x i64> %14, <2 x i64>* %4, align 16
5769 ; CHECK-NEXT: store <2 x i64> %15, <2 x i64>* %5, align 16
5770 ; CHECK-NEXT: store <2 x i64> %16, <2 x i64>* %6, align 16
5771 ; CHECK-NEXT: store <2 x i64> %17, <2 x i64>* %7, align 16
5772 ; CHECK-NEXT: store <2 x i64> %18, <2 x i64>* %8, align 16
5773 ; CHECK-NEXT: ret <2 x i64> %20
5774 ; CHECK-NEXT: }
5775
5776 define <20 x i64> @insert_20xi64_at_2(<20 x i64>, i64) {
5777 entry:
5778 %2 = insertelement <20 x i64> %0, i64 %1, i32 2
5779 ret <20 x i64> %2
5780 }
5781 ; CHECK-LABEL: define <2 x i64> @insert_20xi64_at_2(<2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64 >* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferen ceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocaptu re nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16) , <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, i64) {
5782 ; CHECK: entry:
5783 ; CHECK-NEXT: %20 = insertelement <2 x i64> %10, i64 %19, i32 0
5784 ; CHECK-NEXT: store <2 x i64> %20, <2 x i64>* %0, align 16
5785 ; CHECK-NEXT: store <2 x i64> %11, <2 x i64>* %1, align 16
5786 ; CHECK-NEXT: store <2 x i64> %12, <2 x i64>* %2, align 16
5787 ; CHECK-NEXT: store <2 x i64> %13, <2 x i64>* %3, align 16
5788 ; CHECK-NEXT: store <2 x i64> %14, <2 x i64>* %4, align 16
5789 ; CHECK-NEXT: store <2 x i64> %15, <2 x i64>* %5, align 16
5790 ; CHECK-NEXT: store <2 x i64> %16, <2 x i64>* %6, align 16
5791 ; CHECK-NEXT: store <2 x i64> %17, <2 x i64>* %7, align 16
5792 ; CHECK-NEXT: store <2 x i64> %18, <2 x i64>* %8, align 16
5793 ; CHECK-NEXT: ret <2 x i64> %9
5794 ; CHECK-NEXT: }
5795
5796 define <20 x i64> @insert_20xi64_at_3(<20 x i64>, i64) {
5797 entry:
5798 %2 = insertelement <20 x i64> %0, i64 %1, i32 3
5799 ret <20 x i64> %2
5800 }
5801 ; CHECK-LABEL: define <2 x i64> @insert_20xi64_at_3(<2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64 >* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferen ceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocaptu re nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16) , <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, i64) {
5802 ; CHECK: entry:
5803 ; CHECK-NEXT: %20 = insertelement <2 x i64> %10, i64 %19, i32 1
5804 ; CHECK-NEXT: store <2 x i64> %20, <2 x i64>* %0, align 16
5805 ; CHECK-NEXT: store <2 x i64> %11, <2 x i64>* %1, align 16
5806 ; CHECK-NEXT: store <2 x i64> %12, <2 x i64>* %2, align 16
5807 ; CHECK-NEXT: store <2 x i64> %13, <2 x i64>* %3, align 16
5808 ; CHECK-NEXT: store <2 x i64> %14, <2 x i64>* %4, align 16
5809 ; CHECK-NEXT: store <2 x i64> %15, <2 x i64>* %5, align 16
5810 ; CHECK-NEXT: store <2 x i64> %16, <2 x i64>* %6, align 16
5811 ; CHECK-NEXT: store <2 x i64> %17, <2 x i64>* %7, align 16
5812 ; CHECK-NEXT: store <2 x i64> %18, <2 x i64>* %8, align 16
5813 ; CHECK-NEXT: ret <2 x i64> %9
5814 ; CHECK-NEXT: }
5815
5816 define <20 x i64> @insert_20xi64_at_4(<20 x i64>, i64) {
5817 entry:
5818 %2 = insertelement <20 x i64> %0, i64 %1, i32 4
5819 ret <20 x i64> %2
5820 }
5821 ; CHECK-LABEL: define <2 x i64> @insert_20xi64_at_4(<2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64 >* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferen ceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocaptu re nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16) , <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, i64) {
5822 ; CHECK: entry:
5823 ; CHECK-NEXT: %20 = insertelement <2 x i64> %11, i64 %19, i32 0
5824 ; CHECK-NEXT: store <2 x i64> %10, <2 x i64>* %0, align 16
5825 ; CHECK-NEXT: store <2 x i64> %20, <2 x i64>* %1, align 16
5826 ; CHECK-NEXT: store <2 x i64> %12, <2 x i64>* %2, align 16
5827 ; CHECK-NEXT: store <2 x i64> %13, <2 x i64>* %3, align 16
5828 ; CHECK-NEXT: store <2 x i64> %14, <2 x i64>* %4, align 16
5829 ; CHECK-NEXT: store <2 x i64> %15, <2 x i64>* %5, align 16
5830 ; CHECK-NEXT: store <2 x i64> %16, <2 x i64>* %6, align 16
5831 ; CHECK-NEXT: store <2 x i64> %17, <2 x i64>* %7, align 16
5832 ; CHECK-NEXT: store <2 x i64> %18, <2 x i64>* %8, align 16
5833 ; CHECK-NEXT: ret <2 x i64> %9
5834 ; CHECK-NEXT: }
5835
5836 define <20 x i64> @insert_20xi64_at_5(<20 x i64>, i64) {
5837 entry:
5838 %2 = insertelement <20 x i64> %0, i64 %1, i32 5
5839 ret <20 x i64> %2
5840 }
5841 ; CHECK-LABEL: define <2 x i64> @insert_20xi64_at_5(<2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64 >* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferen ceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocaptu re nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16) , <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, i64) {
5842 ; CHECK: entry:
5843 ; CHECK-NEXT: %20 = insertelement <2 x i64> %11, i64 %19, i32 1
5844 ; CHECK-NEXT: store <2 x i64> %10, <2 x i64>* %0, align 16
5845 ; CHECK-NEXT: store <2 x i64> %20, <2 x i64>* %1, align 16
5846 ; CHECK-NEXT: store <2 x i64> %12, <2 x i64>* %2, align 16
5847 ; CHECK-NEXT: store <2 x i64> %13, <2 x i64>* %3, align 16
5848 ; CHECK-NEXT: store <2 x i64> %14, <2 x i64>* %4, align 16
5849 ; CHECK-NEXT: store <2 x i64> %15, <2 x i64>* %5, align 16
5850 ; CHECK-NEXT: store <2 x i64> %16, <2 x i64>* %6, align 16
5851 ; CHECK-NEXT: store <2 x i64> %17, <2 x i64>* %7, align 16
5852 ; CHECK-NEXT: store <2 x i64> %18, <2 x i64>* %8, align 16
5853 ; CHECK-NEXT: ret <2 x i64> %9
5854 ; CHECK-NEXT: }
5855
5856 define <20 x i64> @insert_20xi64_at_6(<20 x i64>, i64) {
5857 entry:
5858 %2 = insertelement <20 x i64> %0, i64 %1, i32 6
5859 ret <20 x i64> %2
5860 }
5861 ; CHECK-LABEL: define <2 x i64> @insert_20xi64_at_6(<2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64 >* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferen ceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocaptu re nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16) , <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, i64) {
5862 ; CHECK: entry:
5863 ; CHECK-NEXT: %20 = insertelement <2 x i64> %12, i64 %19, i32 0
5864 ; CHECK-NEXT: store <2 x i64> %10, <2 x i64>* %0, align 16
5865 ; CHECK-NEXT: store <2 x i64> %11, <2 x i64>* %1, align 16
5866 ; CHECK-NEXT: store <2 x i64> %20, <2 x i64>* %2, align 16
5867 ; CHECK-NEXT: store <2 x i64> %13, <2 x i64>* %3, align 16
5868 ; CHECK-NEXT: store <2 x i64> %14, <2 x i64>* %4, align 16
5869 ; CHECK-NEXT: store <2 x i64> %15, <2 x i64>* %5, align 16
5870 ; CHECK-NEXT: store <2 x i64> %16, <2 x i64>* %6, align 16
5871 ; CHECK-NEXT: store <2 x i64> %17, <2 x i64>* %7, align 16
5872 ; CHECK-NEXT: store <2 x i64> %18, <2 x i64>* %8, align 16
5873 ; CHECK-NEXT: ret <2 x i64> %9
5874 ; CHECK-NEXT: }
5875
5876 define <20 x i64> @insert_20xi64_at_7(<20 x i64>, i64) {
5877 entry:
5878 %2 = insertelement <20 x i64> %0, i64 %1, i32 7
5879 ret <20 x i64> %2
5880 }
5881 ; CHECK-LABEL: define <2 x i64> @insert_20xi64_at_7(<2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64 >* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferen ceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocaptu re nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16) , <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, i64) {
5882 ; CHECK: entry:
5883 ; CHECK-NEXT: %20 = insertelement <2 x i64> %12, i64 %19, i32 1
5884 ; CHECK-NEXT: store <2 x i64> %10, <2 x i64>* %0, align 16
5885 ; CHECK-NEXT: store <2 x i64> %11, <2 x i64>* %1, align 16
5886 ; CHECK-NEXT: store <2 x i64> %20, <2 x i64>* %2, align 16
5887 ; CHECK-NEXT: store <2 x i64> %13, <2 x i64>* %3, align 16
5888 ; CHECK-NEXT: store <2 x i64> %14, <2 x i64>* %4, align 16
5889 ; CHECK-NEXT: store <2 x i64> %15, <2 x i64>* %5, align 16
5890 ; CHECK-NEXT: store <2 x i64> %16, <2 x i64>* %6, align 16
5891 ; CHECK-NEXT: store <2 x i64> %17, <2 x i64>* %7, align 16
5892 ; CHECK-NEXT: store <2 x i64> %18, <2 x i64>* %8, align 16
5893 ; CHECK-NEXT: ret <2 x i64> %9
5894 ; CHECK-NEXT: }
5895
5896 define <20 x i64> @insert_20xi64_at_8(<20 x i64>, i64) {
5897 entry:
5898 %2 = insertelement <20 x i64> %0, i64 %1, i32 8
5899 ret <20 x i64> %2
5900 }
5901 ; CHECK-LABEL: define <2 x i64> @insert_20xi64_at_8(<2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64 >* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferen ceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocaptu re nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16) , <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, i64) {
5902 ; CHECK: entry:
5903 ; CHECK-NEXT: %20 = insertelement <2 x i64> %13, i64 %19, i32 0
5904 ; CHECK-NEXT: store <2 x i64> %10, <2 x i64>* %0, align 16
5905 ; CHECK-NEXT: store <2 x i64> %11, <2 x i64>* %1, align 16
5906 ; CHECK-NEXT: store <2 x i64> %12, <2 x i64>* %2, align 16
5907 ; CHECK-NEXT: store <2 x i64> %20, <2 x i64>* %3, align 16
5908 ; CHECK-NEXT: store <2 x i64> %14, <2 x i64>* %4, align 16
5909 ; CHECK-NEXT: store <2 x i64> %15, <2 x i64>* %5, align 16
5910 ; CHECK-NEXT: store <2 x i64> %16, <2 x i64>* %6, align 16
5911 ; CHECK-NEXT: store <2 x i64> %17, <2 x i64>* %7, align 16
5912 ; CHECK-NEXT: store <2 x i64> %18, <2 x i64>* %8, align 16
5913 ; CHECK-NEXT: ret <2 x i64> %9
5914 ; CHECK-NEXT: }
5915
5916 define <20 x i64> @insert_20xi64_at_9(<20 x i64>, i64) {
5917 entry:
5918 %2 = insertelement <20 x i64> %0, i64 %1, i32 9
5919 ret <20 x i64> %2
5920 }
5921 ; CHECK-LABEL: define <2 x i64> @insert_20xi64_at_9(<2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64 >* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferen ceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocaptu re nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16) , <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, i64) {
5922 ; CHECK: entry:
5923 ; CHECK-NEXT: %20 = insertelement <2 x i64> %13, i64 %19, i32 1
5924 ; CHECK-NEXT: store <2 x i64> %10, <2 x i64>* %0, align 16
5925 ; CHECK-NEXT: store <2 x i64> %11, <2 x i64>* %1, align 16
5926 ; CHECK-NEXT: store <2 x i64> %12, <2 x i64>* %2, align 16
5927 ; CHECK-NEXT: store <2 x i64> %20, <2 x i64>* %3, align 16
5928 ; CHECK-NEXT: store <2 x i64> %14, <2 x i64>* %4, align 16
5929 ; CHECK-NEXT: store <2 x i64> %15, <2 x i64>* %5, align 16
5930 ; CHECK-NEXT: store <2 x i64> %16, <2 x i64>* %6, align 16
5931 ; CHECK-NEXT: store <2 x i64> %17, <2 x i64>* %7, align 16
5932 ; CHECK-NEXT: store <2 x i64> %18, <2 x i64>* %8, align 16
5933 ; CHECK-NEXT: ret <2 x i64> %9
5934 ; CHECK-NEXT: }
5935
5936 define <20 x i64> @insert_20xi64_at_10(<20 x i64>, i64) {
5937 entry:
5938 %2 = insertelement <20 x i64> %0, i64 %1, i32 10
5939 ret <20 x i64> %2
5940 }
5941 ; CHECK-LABEL: define <2 x i64> @insert_20xi64_at_10(<2 x i64>* nocapture nonnul l dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i6 4>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull derefere nceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapt ure nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16 ), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnul l dereferenceable(16), <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, i64) {
5942 ; CHECK: entry:
5943 ; CHECK-NEXT: %20 = insertelement <2 x i64> %14, i64 %19, i32 0
5944 ; CHECK-NEXT: store <2 x i64> %10, <2 x i64>* %0, align 16
5945 ; CHECK-NEXT: store <2 x i64> %11, <2 x i64>* %1, align 16
5946 ; CHECK-NEXT: store <2 x i64> %12, <2 x i64>* %2, align 16
5947 ; CHECK-NEXT: store <2 x i64> %13, <2 x i64>* %3, align 16
5948 ; CHECK-NEXT: store <2 x i64> %20, <2 x i64>* %4, align 16
5949 ; CHECK-NEXT: store <2 x i64> %15, <2 x i64>* %5, align 16
5950 ; CHECK-NEXT: store <2 x i64> %16, <2 x i64>* %6, align 16
5951 ; CHECK-NEXT: store <2 x i64> %17, <2 x i64>* %7, align 16
5952 ; CHECK-NEXT: store <2 x i64> %18, <2 x i64>* %8, align 16
5953 ; CHECK-NEXT: ret <2 x i64> %9
5954 ; CHECK-NEXT: }
5955
5956 define <20 x i64> @insert_20xi64_at_11(<20 x i64>, i64) {
5957 entry:
5958 %2 = insertelement <20 x i64> %0, i64 %1, i32 11
5959 ret <20 x i64> %2
5960 }
5961 ; CHECK-LABEL: define <2 x i64> @insert_20xi64_at_11(<2 x i64>* nocapture nonnul l dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i6 4>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull derefere nceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapt ure nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16 ), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnul l dereferenceable(16), <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, i64) {
5962 ; CHECK: entry:
5963 ; CHECK-NEXT: %20 = insertelement <2 x i64> %14, i64 %19, i32 1
5964 ; CHECK-NEXT: store <2 x i64> %10, <2 x i64>* %0, align 16
5965 ; CHECK-NEXT: store <2 x i64> %11, <2 x i64>* %1, align 16
5966 ; CHECK-NEXT: store <2 x i64> %12, <2 x i64>* %2, align 16
5967 ; CHECK-NEXT: store <2 x i64> %13, <2 x i64>* %3, align 16
5968 ; CHECK-NEXT: store <2 x i64> %20, <2 x i64>* %4, align 16
5969 ; CHECK-NEXT: store <2 x i64> %15, <2 x i64>* %5, align 16
5970 ; CHECK-NEXT: store <2 x i64> %16, <2 x i64>* %6, align 16
5971 ; CHECK-NEXT: store <2 x i64> %17, <2 x i64>* %7, align 16
5972 ; CHECK-NEXT: store <2 x i64> %18, <2 x i64>* %8, align 16
5973 ; CHECK-NEXT: ret <2 x i64> %9
5974 ; CHECK-NEXT: }
5975
5976 define <20 x i64> @insert_20xi64_at_12(<20 x i64>, i64) {
5977 entry:
5978 %2 = insertelement <20 x i64> %0, i64 %1, i32 12
5979 ret <20 x i64> %2
5980 }
5981 ; CHECK-LABEL: define <2 x i64> @insert_20xi64_at_12(<2 x i64>* nocapture nonnul l dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i6 4>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull derefere nceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapt ure nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16 ), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnul l dereferenceable(16), <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, i64) {
5982 ; CHECK: entry:
5983 ; CHECK-NEXT: %20 = insertelement <2 x i64> %15, i64 %19, i32 0
5984 ; CHECK-NEXT: store <2 x i64> %10, <2 x i64>* %0, align 16
5985 ; CHECK-NEXT: store <2 x i64> %11, <2 x i64>* %1, align 16
5986 ; CHECK-NEXT: store <2 x i64> %12, <2 x i64>* %2, align 16
5987 ; CHECK-NEXT: store <2 x i64> %13, <2 x i64>* %3, align 16
5988 ; CHECK-NEXT: store <2 x i64> %14, <2 x i64>* %4, align 16
5989 ; CHECK-NEXT: store <2 x i64> %20, <2 x i64>* %5, align 16
5990 ; CHECK-NEXT: store <2 x i64> %16, <2 x i64>* %6, align 16
5991 ; CHECK-NEXT: store <2 x i64> %17, <2 x i64>* %7, align 16
5992 ; CHECK-NEXT: store <2 x i64> %18, <2 x i64>* %8, align 16
5993 ; CHECK-NEXT: ret <2 x i64> %9
5994 ; CHECK-NEXT: }
5995
5996 define <20 x i64> @insert_20xi64_at_13(<20 x i64>, i64) {
5997 entry:
5998 %2 = insertelement <20 x i64> %0, i64 %1, i32 13
5999 ret <20 x i64> %2
6000 }
6001 ; CHECK-LABEL: define <2 x i64> @insert_20xi64_at_13(<2 x i64>* nocapture nonnul l dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i6 4>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull derefere nceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapt ure nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16 ), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnul l dereferenceable(16), <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, i64) {
6002 ; CHECK: entry:
6003 ; CHECK-NEXT: %20 = insertelement <2 x i64> %15, i64 %19, i32 1
6004 ; CHECK-NEXT: store <2 x i64> %10, <2 x i64>* %0, align 16
6005 ; CHECK-NEXT: store <2 x i64> %11, <2 x i64>* %1, align 16
6006 ; CHECK-NEXT: store <2 x i64> %12, <2 x i64>* %2, align 16
6007 ; CHECK-NEXT: store <2 x i64> %13, <2 x i64>* %3, align 16
6008 ; CHECK-NEXT: store <2 x i64> %14, <2 x i64>* %4, align 16
6009 ; CHECK-NEXT: store <2 x i64> %20, <2 x i64>* %5, align 16
6010 ; CHECK-NEXT: store <2 x i64> %16, <2 x i64>* %6, align 16
6011 ; CHECK-NEXT: store <2 x i64> %17, <2 x i64>* %7, align 16
6012 ; CHECK-NEXT: store <2 x i64> %18, <2 x i64>* %8, align 16
6013 ; CHECK-NEXT: ret <2 x i64> %9
6014 ; CHECK-NEXT: }
6015
6016 define <20 x i64> @insert_20xi64_at_14(<20 x i64>, i64) {
6017 entry:
6018 %2 = insertelement <20 x i64> %0, i64 %1, i32 14
6019 ret <20 x i64> %2
6020 }
6021 ; CHECK-LABEL: define <2 x i64> @insert_20xi64_at_14(<2 x i64>* nocapture nonnul l dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i6 4>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull derefere nceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapt ure nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16 ), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnul l dereferenceable(16), <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, i64) {
6022 ; CHECK: entry:
6023 ; CHECK-NEXT: %20 = insertelement <2 x i64> %16, i64 %19, i32 0
6024 ; CHECK-NEXT: store <2 x i64> %10, <2 x i64>* %0, align 16
6025 ; CHECK-NEXT: store <2 x i64> %11, <2 x i64>* %1, align 16
6026 ; CHECK-NEXT: store <2 x i64> %12, <2 x i64>* %2, align 16
6027 ; CHECK-NEXT: store <2 x i64> %13, <2 x i64>* %3, align 16
6028 ; CHECK-NEXT: store <2 x i64> %14, <2 x i64>* %4, align 16
6029 ; CHECK-NEXT: store <2 x i64> %15, <2 x i64>* %5, align 16
6030 ; CHECK-NEXT: store <2 x i64> %20, <2 x i64>* %6, align 16
6031 ; CHECK-NEXT: store <2 x i64> %17, <2 x i64>* %7, align 16
6032 ; CHECK-NEXT: store <2 x i64> %18, <2 x i64>* %8, align 16
6033 ; CHECK-NEXT: ret <2 x i64> %9
6034 ; CHECK-NEXT: }
6035
6036 define <20 x i64> @insert_20xi64_at_15(<20 x i64>, i64) {
6037 entry:
6038 %2 = insertelement <20 x i64> %0, i64 %1, i32 15
6039 ret <20 x i64> %2
6040 }
6041 ; CHECK-LABEL: define <2 x i64> @insert_20xi64_at_15(<2 x i64>* nocapture nonnul l dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i6 4>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull derefere nceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapt ure nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16 ), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnul l dereferenceable(16), <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, i64) {
6042 ; CHECK: entry:
6043 ; CHECK-NEXT: %20 = insertelement <2 x i64> %16, i64 %19, i32 1
6044 ; CHECK-NEXT: store <2 x i64> %10, <2 x i64>* %0, align 16
6045 ; CHECK-NEXT: store <2 x i64> %11, <2 x i64>* %1, align 16
6046 ; CHECK-NEXT: store <2 x i64> %12, <2 x i64>* %2, align 16
6047 ; CHECK-NEXT: store <2 x i64> %13, <2 x i64>* %3, align 16
6048 ; CHECK-NEXT: store <2 x i64> %14, <2 x i64>* %4, align 16
6049 ; CHECK-NEXT: store <2 x i64> %15, <2 x i64>* %5, align 16
6050 ; CHECK-NEXT: store <2 x i64> %20, <2 x i64>* %6, align 16
6051 ; CHECK-NEXT: store <2 x i64> %17, <2 x i64>* %7, align 16
6052 ; CHECK-NEXT: store <2 x i64> %18, <2 x i64>* %8, align 16
6053 ; CHECK-NEXT: ret <2 x i64> %9
6054 ; CHECK-NEXT: }
6055
6056 define <20 x i64> @insert_20xi64_at_16(<20 x i64>, i64) {
6057 entry:
6058 %2 = insertelement <20 x i64> %0, i64 %1, i32 16
6059 ret <20 x i64> %2
6060 }
6061 ; CHECK-LABEL: define <2 x i64> @insert_20xi64_at_16(<2 x i64>* nocapture nonnul l dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i6 4>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull derefere nceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapt ure nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16 ), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnul l dereferenceable(16), <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, i64) {
6062 ; CHECK: entry:
6063 ; CHECK-NEXT: %20 = insertelement <2 x i64> %17, i64 %19, i32 0
6064 ; CHECK-NEXT: store <2 x i64> %10, <2 x i64>* %0, align 16
6065 ; CHECK-NEXT: store <2 x i64> %11, <2 x i64>* %1, align 16
6066 ; CHECK-NEXT: store <2 x i64> %12, <2 x i64>* %2, align 16
6067 ; CHECK-NEXT: store <2 x i64> %13, <2 x i64>* %3, align 16
6068 ; CHECK-NEXT: store <2 x i64> %14, <2 x i64>* %4, align 16
6069 ; CHECK-NEXT: store <2 x i64> %15, <2 x i64>* %5, align 16
6070 ; CHECK-NEXT: store <2 x i64> %16, <2 x i64>* %6, align 16
6071 ; CHECK-NEXT: store <2 x i64> %20, <2 x i64>* %7, align 16
6072 ; CHECK-NEXT: store <2 x i64> %18, <2 x i64>* %8, align 16
6073 ; CHECK-NEXT: ret <2 x i64> %9
6074 ; CHECK-NEXT: }
6075
6076 define <20 x i64> @insert_20xi64_at_17(<20 x i64>, i64) {
6077 entry:
6078 %2 = insertelement <20 x i64> %0, i64 %1, i32 17
6079 ret <20 x i64> %2
6080 }
6081 ; CHECK-LABEL: define <2 x i64> @insert_20xi64_at_17(<2 x i64>* nocapture nonnul l dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i6 4>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull derefere nceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapt ure nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16 ), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnul l dereferenceable(16), <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, i64) {
6082 ; CHECK: entry:
6083 ; CHECK-NEXT: %20 = insertelement <2 x i64> %17, i64 %19, i32 1
6084 ; CHECK-NEXT: store <2 x i64> %10, <2 x i64>* %0, align 16
6085 ; CHECK-NEXT: store <2 x i64> %11, <2 x i64>* %1, align 16
6086 ; CHECK-NEXT: store <2 x i64> %12, <2 x i64>* %2, align 16
6087 ; CHECK-NEXT: store <2 x i64> %13, <2 x i64>* %3, align 16
6088 ; CHECK-NEXT: store <2 x i64> %14, <2 x i64>* %4, align 16
6089 ; CHECK-NEXT: store <2 x i64> %15, <2 x i64>* %5, align 16
6090 ; CHECK-NEXT: store <2 x i64> %16, <2 x i64>* %6, align 16
6091 ; CHECK-NEXT: store <2 x i64> %20, <2 x i64>* %7, align 16
6092 ; CHECK-NEXT: store <2 x i64> %18, <2 x i64>* %8, align 16
6093 ; CHECK-NEXT: ret <2 x i64> %9
6094 ; CHECK-NEXT: }
6095
6096 define <20 x i64> @insert_20xi64_at_18(<20 x i64>, i64) {
6097 entry:
6098 %2 = insertelement <20 x i64> %0, i64 %1, i32 18
6099 ret <20 x i64> %2
6100 }
6101 ; CHECK-LABEL: define <2 x i64> @insert_20xi64_at_18(<2 x i64>* nocapture nonnul l dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i6 4>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull derefere nceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapt ure nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16 ), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnul l dereferenceable(16), <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, i64) {
6102 ; CHECK: entry:
6103 ; CHECK-NEXT: %20 = insertelement <2 x i64> %18, i64 %19, i32 0
6104 ; CHECK-NEXT: store <2 x i64> %10, <2 x i64>* %0, align 16
6105 ; CHECK-NEXT: store <2 x i64> %11, <2 x i64>* %1, align 16
6106 ; CHECK-NEXT: store <2 x i64> %12, <2 x i64>* %2, align 16
6107 ; CHECK-NEXT: store <2 x i64> %13, <2 x i64>* %3, align 16
6108 ; CHECK-NEXT: store <2 x i64> %14, <2 x i64>* %4, align 16
6109 ; CHECK-NEXT: store <2 x i64> %15, <2 x i64>* %5, align 16
6110 ; CHECK-NEXT: store <2 x i64> %16, <2 x i64>* %6, align 16
6111 ; CHECK-NEXT: store <2 x i64> %17, <2 x i64>* %7, align 16
6112 ; CHECK-NEXT: store <2 x i64> %20, <2 x i64>* %8, align 16
6113 ; CHECK-NEXT: ret <2 x i64> %9
6114 ; CHECK-NEXT: }
6115
6116 define <20 x i64> @insert_20xi64_at_19(<20 x i64>, i64) {
6117 entry:
6118 %2 = insertelement <20 x i64> %0, i64 %1, i32 19
6119 ret <20 x i64> %2
6120 }
6121 ; CHECK-LABEL: define <2 x i64> @insert_20xi64_at_19(<2 x i64>* nocapture nonnul l dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i6 4>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull derefere nceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapt ure nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16 ), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnul l dereferenceable(16), <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, i64) {
6122 ; CHECK: entry:
6123 ; CHECK-NEXT: %20 = insertelement <2 x i64> %18, i64 %19, i32 1
6124 ; CHECK-NEXT: store <2 x i64> %10, <2 x i64>* %0, align 16
6125 ; CHECK-NEXT: store <2 x i64> %11, <2 x i64>* %1, align 16
6126 ; CHECK-NEXT: store <2 x i64> %12, <2 x i64>* %2, align 16
6127 ; CHECK-NEXT: store <2 x i64> %13, <2 x i64>* %3, align 16
6128 ; CHECK-NEXT: store <2 x i64> %14, <2 x i64>* %4, align 16
6129 ; CHECK-NEXT: store <2 x i64> %15, <2 x i64>* %5, align 16
6130 ; CHECK-NEXT: store <2 x i64> %16, <2 x i64>* %6, align 16
6131 ; CHECK-NEXT: store <2 x i64> %17, <2 x i64>* %7, align 16
6132 ; CHECK-NEXT: store <2 x i64> %20, <2 x i64>* %8, align 16
6133 ; CHECK-NEXT: ret <2 x i64> %9
6134 ; CHECK-NEXT: }
6135
6136 define <20 x i64> @insert_20xi64_undef_idx(<20 x i64>, i64) {
6137 entry:
6138 %2 = insertelement <20 x i64> %0, i64 %1, i32 20
6139 ret <20 x i64> %2
6140 }
6141 ; CHECK-LABEL: define <2 x i64> @insert_20xi64_undef_idx(<2 x i64>* nocapture no nnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dere ferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* no capture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceabl e(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture no nnull dereferenceable(16), <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> , <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, i64) {
6142 ; CHECK: entry:
6143 ; CHECK-NEXT: store <2 x i64> %10, <2 x i64>* %0, align 16
6144 ; CHECK-NEXT: store <2 x i64> %11, <2 x i64>* %1, align 16
6145 ; CHECK-NEXT: store <2 x i64> %12, <2 x i64>* %2, align 16
6146 ; CHECK-NEXT: store <2 x i64> %13, <2 x i64>* %3, align 16
6147 ; CHECK-NEXT: store <2 x i64> %14, <2 x i64>* %4, align 16
6148 ; CHECK-NEXT: store <2 x i64> %15, <2 x i64>* %5, align 16
6149 ; CHECK-NEXT: store <2 x i64> %16, <2 x i64>* %6, align 16
6150 ; CHECK-NEXT: store <2 x i64> %17, <2 x i64>* %7, align 16
6151 ; CHECK-NEXT: store <2 x i64> %18, <2 x i64>* %8, align 16
6152 ; CHECK-NEXT: ret <2 x i64> %9
6153 ; CHECK-NEXT: }
6154
6155 define <20 x i8*> @insert_20xi8ptr_at_0(<20 x i8*>, i8*) {
6156 entry:
6157 %2 = insertelement <20 x i8*> %0, i8* %1, i32 0
6158 ret <20 x i8*> %2
6159 }
6160 ; CHECK-LABEL: define <4 x i8*> @insert_20xi8ptr_at_0(<4 x i8*>* nocapture nonnu ll dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i 8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull derefer enceable(16), <4 x i8*>, <4 x i8*>, <4 x i8*>, <4 x i8*>, <4 x i8*>, i8*) {
6161 ; CHECK: entry:
6162 ; CHECK-NEXT: %10 = insertelement <4 x i8*> %4, i8* %9, i32 0
6163 ; CHECK-NEXT: store <4 x i8*> %5, <4 x i8*>* %0, align 16
6164 ; CHECK-NEXT: store <4 x i8*> %6, <4 x i8*>* %1, align 16
6165 ; CHECK-NEXT: store <4 x i8*> %7, <4 x i8*>* %2, align 16
6166 ; CHECK-NEXT: store <4 x i8*> %8, <4 x i8*>* %3, align 16
6167 ; CHECK-NEXT: ret <4 x i8*> %10
6168 ; CHECK-NEXT: }
6169
6170 define <20 x i8*> @insert_20xi8ptr_at_1(<20 x i8*>, i8*) {
6171 entry:
6172 %2 = insertelement <20 x i8*> %0, i8* %1, i32 1
6173 ret <20 x i8*> %2
6174 }
6175 ; CHECK-LABEL: define <4 x i8*> @insert_20xi8ptr_at_1(<4 x i8*>* nocapture nonnu ll dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i 8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull derefer enceable(16), <4 x i8*>, <4 x i8*>, <4 x i8*>, <4 x i8*>, <4 x i8*>, i8*) {
6176 ; CHECK: entry:
6177 ; CHECK-NEXT: %10 = insertelement <4 x i8*> %4, i8* %9, i32 1
6178 ; CHECK-NEXT: store <4 x i8*> %5, <4 x i8*>* %0, align 16
6179 ; CHECK-NEXT: store <4 x i8*> %6, <4 x i8*>* %1, align 16
6180 ; CHECK-NEXT: store <4 x i8*> %7, <4 x i8*>* %2, align 16
6181 ; CHECK-NEXT: store <4 x i8*> %8, <4 x i8*>* %3, align 16
6182 ; CHECK-NEXT: ret <4 x i8*> %10
6183 ; CHECK-NEXT: }
6184
6185 define <20 x i8*> @insert_20xi8ptr_at_2(<20 x i8*>, i8*) {
6186 entry:
6187 %2 = insertelement <20 x i8*> %0, i8* %1, i32 2
6188 ret <20 x i8*> %2
6189 }
6190 ; CHECK-LABEL: define <4 x i8*> @insert_20xi8ptr_at_2(<4 x i8*>* nocapture nonnu ll dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i 8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull derefer enceable(16), <4 x i8*>, <4 x i8*>, <4 x i8*>, <4 x i8*>, <4 x i8*>, i8*) {
6191 ; CHECK: entry:
6192 ; CHECK-NEXT: %10 = insertelement <4 x i8*> %4, i8* %9, i32 2
6193 ; CHECK-NEXT: store <4 x i8*> %5, <4 x i8*>* %0, align 16
6194 ; CHECK-NEXT: store <4 x i8*> %6, <4 x i8*>* %1, align 16
6195 ; CHECK-NEXT: store <4 x i8*> %7, <4 x i8*>* %2, align 16
6196 ; CHECK-NEXT: store <4 x i8*> %8, <4 x i8*>* %3, align 16
6197 ; CHECK-NEXT: ret <4 x i8*> %10
6198 ; CHECK-NEXT: }
6199
6200 define <20 x i8*> @insert_20xi8ptr_at_3(<20 x i8*>, i8*) {
6201 entry:
6202 %2 = insertelement <20 x i8*> %0, i8* %1, i32 3
6203 ret <20 x i8*> %2
6204 }
6205 ; CHECK-LABEL: define <4 x i8*> @insert_20xi8ptr_at_3(<4 x i8*>* nocapture nonnu ll dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i 8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull derefer enceable(16), <4 x i8*>, <4 x i8*>, <4 x i8*>, <4 x i8*>, <4 x i8*>, i8*) {
6206 ; CHECK: entry:
6207 ; CHECK-NEXT: %10 = insertelement <4 x i8*> %4, i8* %9, i32 3
6208 ; CHECK-NEXT: store <4 x i8*> %5, <4 x i8*>* %0, align 16
6209 ; CHECK-NEXT: store <4 x i8*> %6, <4 x i8*>* %1, align 16
6210 ; CHECK-NEXT: store <4 x i8*> %7, <4 x i8*>* %2, align 16
6211 ; CHECK-NEXT: store <4 x i8*> %8, <4 x i8*>* %3, align 16
6212 ; CHECK-NEXT: ret <4 x i8*> %10
6213 ; CHECK-NEXT: }
6214
6215 define <20 x i8*> @insert_20xi8ptr_at_4(<20 x i8*>, i8*) {
6216 entry:
6217 %2 = insertelement <20 x i8*> %0, i8* %1, i32 4
6218 ret <20 x i8*> %2
6219 }
6220 ; CHECK-LABEL: define <4 x i8*> @insert_20xi8ptr_at_4(<4 x i8*>* nocapture nonnu ll dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i 8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull derefer enceable(16), <4 x i8*>, <4 x i8*>, <4 x i8*>, <4 x i8*>, <4 x i8*>, i8*) {
6221 ; CHECK: entry:
6222 ; CHECK-NEXT: %10 = insertelement <4 x i8*> %5, i8* %9, i32 0
6223 ; CHECK-NEXT: store <4 x i8*> %10, <4 x i8*>* %0, align 16
6224 ; CHECK-NEXT: store <4 x i8*> %6, <4 x i8*>* %1, align 16
6225 ; CHECK-NEXT: store <4 x i8*> %7, <4 x i8*>* %2, align 16
6226 ; CHECK-NEXT: store <4 x i8*> %8, <4 x i8*>* %3, align 16
6227 ; CHECK-NEXT: ret <4 x i8*> %4
6228 ; CHECK-NEXT: }
6229
6230 define <20 x i8*> @insert_20xi8ptr_at_5(<20 x i8*>, i8*) {
6231 entry:
6232 %2 = insertelement <20 x i8*> %0, i8* %1, i32 5
6233 ret <20 x i8*> %2
6234 }
6235 ; CHECK-LABEL: define <4 x i8*> @insert_20xi8ptr_at_5(<4 x i8*>* nocapture nonnu ll dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i 8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull derefer enceable(16), <4 x i8*>, <4 x i8*>, <4 x i8*>, <4 x i8*>, <4 x i8*>, i8*) {
6236 ; CHECK: entry:
6237 ; CHECK-NEXT: %10 = insertelement <4 x i8*> %5, i8* %9, i32 1
6238 ; CHECK-NEXT: store <4 x i8*> %10, <4 x i8*>* %0, align 16
6239 ; CHECK-NEXT: store <4 x i8*> %6, <4 x i8*>* %1, align 16
6240 ; CHECK-NEXT: store <4 x i8*> %7, <4 x i8*>* %2, align 16
6241 ; CHECK-NEXT: store <4 x i8*> %8, <4 x i8*>* %3, align 16
6242 ; CHECK-NEXT: ret <4 x i8*> %4
6243 ; CHECK-NEXT: }
6244
6245 define <20 x i8*> @insert_20xi8ptr_at_6(<20 x i8*>, i8*) {
6246 entry:
6247 %2 = insertelement <20 x i8*> %0, i8* %1, i32 6
6248 ret <20 x i8*> %2
6249 }
6250 ; CHECK-LABEL: define <4 x i8*> @insert_20xi8ptr_at_6(<4 x i8*>* nocapture nonnu ll dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i 8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull derefer enceable(16), <4 x i8*>, <4 x i8*>, <4 x i8*>, <4 x i8*>, <4 x i8*>, i8*) {
6251 ; CHECK: entry:
6252 ; CHECK-NEXT: %10 = insertelement <4 x i8*> %5, i8* %9, i32 2
6253 ; CHECK-NEXT: store <4 x i8*> %10, <4 x i8*>* %0, align 16
6254 ; CHECK-NEXT: store <4 x i8*> %6, <4 x i8*>* %1, align 16
6255 ; CHECK-NEXT: store <4 x i8*> %7, <4 x i8*>* %2, align 16
6256 ; CHECK-NEXT: store <4 x i8*> %8, <4 x i8*>* %3, align 16
6257 ; CHECK-NEXT: ret <4 x i8*> %4
6258 ; CHECK-NEXT: }
6259
6260 define <20 x i8*> @insert_20xi8ptr_at_7(<20 x i8*>, i8*) {
6261 entry:
6262 %2 = insertelement <20 x i8*> %0, i8* %1, i32 7
6263 ret <20 x i8*> %2
6264 }
6265 ; CHECK-LABEL: define <4 x i8*> @insert_20xi8ptr_at_7(<4 x i8*>* nocapture nonnu ll dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i 8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull derefer enceable(16), <4 x i8*>, <4 x i8*>, <4 x i8*>, <4 x i8*>, <4 x i8*>, i8*) {
6266 ; CHECK: entry:
6267 ; CHECK-NEXT: %10 = insertelement <4 x i8*> %5, i8* %9, i32 3
6268 ; CHECK-NEXT: store <4 x i8*> %10, <4 x i8*>* %0, align 16
6269 ; CHECK-NEXT: store <4 x i8*> %6, <4 x i8*>* %1, align 16
6270 ; CHECK-NEXT: store <4 x i8*> %7, <4 x i8*>* %2, align 16
6271 ; CHECK-NEXT: store <4 x i8*> %8, <4 x i8*>* %3, align 16
6272 ; CHECK-NEXT: ret <4 x i8*> %4
6273 ; CHECK-NEXT: }
6274
6275 define <20 x i8*> @insert_20xi8ptr_at_8(<20 x i8*>, i8*) {
6276 entry:
6277 %2 = insertelement <20 x i8*> %0, i8* %1, i32 8
6278 ret <20 x i8*> %2
6279 }
6280 ; CHECK-LABEL: define <4 x i8*> @insert_20xi8ptr_at_8(<4 x i8*>* nocapture nonnu ll dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i 8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull derefer enceable(16), <4 x i8*>, <4 x i8*>, <4 x i8*>, <4 x i8*>, <4 x i8*>, i8*) {
6281 ; CHECK: entry:
6282 ; CHECK-NEXT: %10 = insertelement <4 x i8*> %6, i8* %9, i32 0
6283 ; CHECK-NEXT: store <4 x i8*> %5, <4 x i8*>* %0, align 16
6284 ; CHECK-NEXT: store <4 x i8*> %10, <4 x i8*>* %1, align 16
6285 ; CHECK-NEXT: store <4 x i8*> %7, <4 x i8*>* %2, align 16
6286 ; CHECK-NEXT: store <4 x i8*> %8, <4 x i8*>* %3, align 16
6287 ; CHECK-NEXT: ret <4 x i8*> %4
6288 ; CHECK-NEXT: }
6289
6290 define <20 x i8*> @insert_20xi8ptr_at_9(<20 x i8*>, i8*) {
6291 entry:
6292 %2 = insertelement <20 x i8*> %0, i8* %1, i32 9
6293 ret <20 x i8*> %2
6294 }
6295 ; CHECK-LABEL: define <4 x i8*> @insert_20xi8ptr_at_9(<4 x i8*>* nocapture nonnu ll dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i 8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull derefer enceable(16), <4 x i8*>, <4 x i8*>, <4 x i8*>, <4 x i8*>, <4 x i8*>, i8*) {
6296 ; CHECK: entry:
6297 ; CHECK-NEXT: %10 = insertelement <4 x i8*> %6, i8* %9, i32 1
6298 ; CHECK-NEXT: store <4 x i8*> %5, <4 x i8*>* %0, align 16
6299 ; CHECK-NEXT: store <4 x i8*> %10, <4 x i8*>* %1, align 16
6300 ; CHECK-NEXT: store <4 x i8*> %7, <4 x i8*>* %2, align 16
6301 ; CHECK-NEXT: store <4 x i8*> %8, <4 x i8*>* %3, align 16
6302 ; CHECK-NEXT: ret <4 x i8*> %4
6303 ; CHECK-NEXT: }
6304
6305 define <20 x i8*> @insert_20xi8ptr_at_10(<20 x i8*>, i8*) {
6306 entry:
6307 %2 = insertelement <20 x i8*> %0, i8* %1, i32 10
6308 ret <20 x i8*> %2
6309 }
6310 ; CHECK-LABEL: define <4 x i8*> @insert_20xi8ptr_at_10(<4 x i8*>* nocapture nonn ull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull derefe renceable(16), <4 x i8*>, <4 x i8*>, <4 x i8*>, <4 x i8*>, <4 x i8*>, i8*) {
6311 ; CHECK: entry:
6312 ; CHECK-NEXT: %10 = insertelement <4 x i8*> %6, i8* %9, i32 2
6313 ; CHECK-NEXT: store <4 x i8*> %5, <4 x i8*>* %0, align 16
6314 ; CHECK-NEXT: store <4 x i8*> %10, <4 x i8*>* %1, align 16
6315 ; CHECK-NEXT: store <4 x i8*> %7, <4 x i8*>* %2, align 16
6316 ; CHECK-NEXT: store <4 x i8*> %8, <4 x i8*>* %3, align 16
6317 ; CHECK-NEXT: ret <4 x i8*> %4
6318 ; CHECK-NEXT: }
6319
6320 define <20 x i8*> @insert_20xi8ptr_at_11(<20 x i8*>, i8*) {
6321 entry:
6322 %2 = insertelement <20 x i8*> %0, i8* %1, i32 11
6323 ret <20 x i8*> %2
6324 }
6325 ; CHECK-LABEL: define <4 x i8*> @insert_20xi8ptr_at_11(<4 x i8*>* nocapture nonn ull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull derefe renceable(16), <4 x i8*>, <4 x i8*>, <4 x i8*>, <4 x i8*>, <4 x i8*>, i8*) {
6326 ; CHECK: entry:
6327 ; CHECK-NEXT: %10 = insertelement <4 x i8*> %6, i8* %9, i32 3
6328 ; CHECK-NEXT: store <4 x i8*> %5, <4 x i8*>* %0, align 16
6329 ; CHECK-NEXT: store <4 x i8*> %10, <4 x i8*>* %1, align 16
6330 ; CHECK-NEXT: store <4 x i8*> %7, <4 x i8*>* %2, align 16
6331 ; CHECK-NEXT: store <4 x i8*> %8, <4 x i8*>* %3, align 16
6332 ; CHECK-NEXT: ret <4 x i8*> %4
6333 ; CHECK-NEXT: }
6334
6335 define <20 x i8*> @insert_20xi8ptr_at_12(<20 x i8*>, i8*) {
6336 entry:
6337 %2 = insertelement <20 x i8*> %0, i8* %1, i32 12
6338 ret <20 x i8*> %2
6339 }
6340 ; CHECK-LABEL: define <4 x i8*> @insert_20xi8ptr_at_12(<4 x i8*>* nocapture nonn ull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull derefe renceable(16), <4 x i8*>, <4 x i8*>, <4 x i8*>, <4 x i8*>, <4 x i8*>, i8*) {
6341 ; CHECK: entry:
6342 ; CHECK-NEXT: %10 = insertelement <4 x i8*> %7, i8* %9, i32 0
6343 ; CHECK-NEXT: store <4 x i8*> %5, <4 x i8*>* %0, align 16
6344 ; CHECK-NEXT: store <4 x i8*> %6, <4 x i8*>* %1, align 16
6345 ; CHECK-NEXT: store <4 x i8*> %10, <4 x i8*>* %2, align 16
6346 ; CHECK-NEXT: store <4 x i8*> %8, <4 x i8*>* %3, align 16
6347 ; CHECK-NEXT: ret <4 x i8*> %4
6348 ; CHECK-NEXT: }
6349
6350 define <20 x i8*> @insert_20xi8ptr_at_13(<20 x i8*>, i8*) {
6351 entry:
6352 %2 = insertelement <20 x i8*> %0, i8* %1, i32 13
6353 ret <20 x i8*> %2
6354 }
6355 ; CHECK-LABEL: define <4 x i8*> @insert_20xi8ptr_at_13(<4 x i8*>* nocapture nonn ull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull derefe renceable(16), <4 x i8*>, <4 x i8*>, <4 x i8*>, <4 x i8*>, <4 x i8*>, i8*) {
6356 ; CHECK: entry:
6357 ; CHECK-NEXT: %10 = insertelement <4 x i8*> %7, i8* %9, i32 1
6358 ; CHECK-NEXT: store <4 x i8*> %5, <4 x i8*>* %0, align 16
6359 ; CHECK-NEXT: store <4 x i8*> %6, <4 x i8*>* %1, align 16
6360 ; CHECK-NEXT: store <4 x i8*> %10, <4 x i8*>* %2, align 16
6361 ; CHECK-NEXT: store <4 x i8*> %8, <4 x i8*>* %3, align 16
6362 ; CHECK-NEXT: ret <4 x i8*> %4
6363 ; CHECK-NEXT: }
6364
6365 define <20 x i8*> @insert_20xi8ptr_at_14(<20 x i8*>, i8*) {
6366 entry:
6367 %2 = insertelement <20 x i8*> %0, i8* %1, i32 14
6368 ret <20 x i8*> %2
6369 }
6370 ; CHECK-LABEL: define <4 x i8*> @insert_20xi8ptr_at_14(<4 x i8*>* nocapture nonn ull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull derefe renceable(16), <4 x i8*>, <4 x i8*>, <4 x i8*>, <4 x i8*>, <4 x i8*>, i8*) {
6371 ; CHECK: entry:
6372 ; CHECK-NEXT: %10 = insertelement <4 x i8*> %7, i8* %9, i32 2
6373 ; CHECK-NEXT: store <4 x i8*> %5, <4 x i8*>* %0, align 16
6374 ; CHECK-NEXT: store <4 x i8*> %6, <4 x i8*>* %1, align 16
6375 ; CHECK-NEXT: store <4 x i8*> %10, <4 x i8*>* %2, align 16
6376 ; CHECK-NEXT: store <4 x i8*> %8, <4 x i8*>* %3, align 16
6377 ; CHECK-NEXT: ret <4 x i8*> %4
6378 ; CHECK-NEXT: }
6379
6380 define <20 x i8*> @insert_20xi8ptr_at_15(<20 x i8*>, i8*) {
6381 entry:
6382 %2 = insertelement <20 x i8*> %0, i8* %1, i32 15
6383 ret <20 x i8*> %2
6384 }
6385 ; CHECK-LABEL: define <4 x i8*> @insert_20xi8ptr_at_15(<4 x i8*>* nocapture nonn ull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull derefe renceable(16), <4 x i8*>, <4 x i8*>, <4 x i8*>, <4 x i8*>, <4 x i8*>, i8*) {
6386 ; CHECK: entry:
6387 ; CHECK-NEXT: %10 = insertelement <4 x i8*> %7, i8* %9, i32 3
6388 ; CHECK-NEXT: store <4 x i8*> %5, <4 x i8*>* %0, align 16
6389 ; CHECK-NEXT: store <4 x i8*> %6, <4 x i8*>* %1, align 16
6390 ; CHECK-NEXT: store <4 x i8*> %10, <4 x i8*>* %2, align 16
6391 ; CHECK-NEXT: store <4 x i8*> %8, <4 x i8*>* %3, align 16
6392 ; CHECK-NEXT: ret <4 x i8*> %4
6393 ; CHECK-NEXT: }
6394
6395 define <20 x i8*> @insert_20xi8ptr_at_16(<20 x i8*>, i8*) {
6396 entry:
6397 %2 = insertelement <20 x i8*> %0, i8* %1, i32 16
6398 ret <20 x i8*> %2
6399 }
6400 ; CHECK-LABEL: define <4 x i8*> @insert_20xi8ptr_at_16(<4 x i8*>* nocapture nonn ull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull derefe renceable(16), <4 x i8*>, <4 x i8*>, <4 x i8*>, <4 x i8*>, <4 x i8*>, i8*) {
6401 ; CHECK: entry:
6402 ; CHECK-NEXT: %10 = insertelement <4 x i8*> %8, i8* %9, i32 0
6403 ; CHECK-NEXT: store <4 x i8*> %5, <4 x i8*>* %0, align 16
6404 ; CHECK-NEXT: store <4 x i8*> %6, <4 x i8*>* %1, align 16
6405 ; CHECK-NEXT: store <4 x i8*> %7, <4 x i8*>* %2, align 16
6406 ; CHECK-NEXT: store <4 x i8*> %10, <4 x i8*>* %3, align 16
6407 ; CHECK-NEXT: ret <4 x i8*> %4
6408 ; CHECK-NEXT: }
6409
6410 define <20 x i8*> @insert_20xi8ptr_at_17(<20 x i8*>, i8*) {
6411 entry:
6412 %2 = insertelement <20 x i8*> %0, i8* %1, i32 17
6413 ret <20 x i8*> %2
6414 }
6415 ; CHECK-LABEL: define <4 x i8*> @insert_20xi8ptr_at_17(<4 x i8*>* nocapture nonn ull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull derefe renceable(16), <4 x i8*>, <4 x i8*>, <4 x i8*>, <4 x i8*>, <4 x i8*>, i8*) {
6416 ; CHECK: entry:
6417 ; CHECK-NEXT: %10 = insertelement <4 x i8*> %8, i8* %9, i32 1
6418 ; CHECK-NEXT: store <4 x i8*> %5, <4 x i8*>* %0, align 16
6419 ; CHECK-NEXT: store <4 x i8*> %6, <4 x i8*>* %1, align 16
6420 ; CHECK-NEXT: store <4 x i8*> %7, <4 x i8*>* %2, align 16
6421 ; CHECK-NEXT: store <4 x i8*> %10, <4 x i8*>* %3, align 16
6422 ; CHECK-NEXT: ret <4 x i8*> %4
6423 ; CHECK-NEXT: }
6424
6425 define <20 x i8*> @insert_20xi8ptr_at_18(<20 x i8*>, i8*) {
6426 entry:
6427 %2 = insertelement <20 x i8*> %0, i8* %1, i32 18
6428 ret <20 x i8*> %2
6429 }
6430 ; CHECK-LABEL: define <4 x i8*> @insert_20xi8ptr_at_18(<4 x i8*>* nocapture nonn ull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull derefe renceable(16), <4 x i8*>, <4 x i8*>, <4 x i8*>, <4 x i8*>, <4 x i8*>, i8*) {
6431 ; CHECK: entry:
6432 ; CHECK-NEXT: %10 = insertelement <4 x i8*> %8, i8* %9, i32 2
6433 ; CHECK-NEXT: store <4 x i8*> %5, <4 x i8*>* %0, align 16
6434 ; CHECK-NEXT: store <4 x i8*> %6, <4 x i8*>* %1, align 16
6435 ; CHECK-NEXT: store <4 x i8*> %7, <4 x i8*>* %2, align 16
6436 ; CHECK-NEXT: store <4 x i8*> %10, <4 x i8*>* %3, align 16
6437 ; CHECK-NEXT: ret <4 x i8*> %4
6438 ; CHECK-NEXT: }
6439
6440 define <20 x i8*> @insert_20xi8ptr_at_19(<20 x i8*>, i8*) {
6441 entry:
6442 %2 = insertelement <20 x i8*> %0, i8* %1, i32 19
6443 ret <20 x i8*> %2
6444 }
6445 ; CHECK-LABEL: define <4 x i8*> @insert_20xi8ptr_at_19(<4 x i8*>* nocapture nonn ull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull derefe renceable(16), <4 x i8*>, <4 x i8*>, <4 x i8*>, <4 x i8*>, <4 x i8*>, i8*) {
6446 ; CHECK: entry:
6447 ; CHECK-NEXT: %10 = insertelement <4 x i8*> %8, i8* %9, i32 3
6448 ; CHECK-NEXT: store <4 x i8*> %5, <4 x i8*>* %0, align 16
6449 ; CHECK-NEXT: store <4 x i8*> %6, <4 x i8*>* %1, align 16
6450 ; CHECK-NEXT: store <4 x i8*> %7, <4 x i8*>* %2, align 16
6451 ; CHECK-NEXT: store <4 x i8*> %10, <4 x i8*>* %3, align 16
6452 ; CHECK-NEXT: ret <4 x i8*> %4
6453 ; CHECK-NEXT: }
6454
6455 define <20 x i8*> @insert_20xi8ptr_undef_idx(<20 x i8*>, i8*) {
6456 entry:
6457 %2 = insertelement <20 x i8*> %0, i8* %1, i32 20
6458 ret <20 x i8*> %2
6459 }
6460 ; CHECK-LABEL: define <4 x i8*> @insert_20xi8ptr_undef_idx(<4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), < 4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull de referenceable(16), <4 x i8*>, <4 x i8*>, <4 x i8*>, <4 x i8*>, <4 x i8*>, i8*) {
6461 ; CHECK: entry:
6462 ; CHECK-NEXT: store <4 x i8*> %5, <4 x i8*>* %0, align 16
6463 ; CHECK-NEXT: store <4 x i8*> %6, <4 x i8*>* %1, align 16
6464 ; CHECK-NEXT: store <4 x i8*> %7, <4 x i8*>* %2, align 16
6465 ; CHECK-NEXT: store <4 x i8*> %8, <4 x i8*>* %3, align 16
6466 ; CHECK-NEXT: ret <4 x i8*> %4
6467 ; CHECK-NEXT: }
6468
6469 define <20 x float> @insert_20xfloat_at_0(<20 x float>, float) {
6470 entry:
6471 %2 = insertelement <20 x float> %0, float %1, i32 0
6472 ret <20 x float> %2
6473 }
6474 ; CHECK-LABEL: define <4 x float> @insert_20xfloat_at_0(<4 x float>* nocapture n onnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnu ll dereferenceable(16), <4 x float>, <4 x float>, <4 x float>, <4 x float>, <4 x float>, float) {
6475 ; CHECK: entry:
6476 ; CHECK-NEXT: %10 = insertelement <4 x float> %4, float %9, i32 0
6477 ; CHECK-NEXT: store <4 x float> %5, <4 x float>* %0, align 16
6478 ; CHECK-NEXT: store <4 x float> %6, <4 x float>* %1, align 16
6479 ; CHECK-NEXT: store <4 x float> %7, <4 x float>* %2, align 16
6480 ; CHECK-NEXT: store <4 x float> %8, <4 x float>* %3, align 16
6481 ; CHECK-NEXT: ret <4 x float> %10
6482 ; CHECK-NEXT: }
6483
6484 define <20 x float> @insert_20xfloat_at_1(<20 x float>, float) {
6485 entry:
6486 %2 = insertelement <20 x float> %0, float %1, i32 1
6487 ret <20 x float> %2
6488 }
6489 ; CHECK-LABEL: define <4 x float> @insert_20xfloat_at_1(<4 x float>* nocapture n onnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnu ll dereferenceable(16), <4 x float>, <4 x float>, <4 x float>, <4 x float>, <4 x float>, float) {
6490 ; CHECK: entry:
6491 ; CHECK-NEXT: %10 = insertelement <4 x float> %4, float %9, i32 1
6492 ; CHECK-NEXT: store <4 x float> %5, <4 x float>* %0, align 16
6493 ; CHECK-NEXT: store <4 x float> %6, <4 x float>* %1, align 16
6494 ; CHECK-NEXT: store <4 x float> %7, <4 x float>* %2, align 16
6495 ; CHECK-NEXT: store <4 x float> %8, <4 x float>* %3, align 16
6496 ; CHECK-NEXT: ret <4 x float> %10
6497 ; CHECK-NEXT: }
6498
6499 define <20 x float> @insert_20xfloat_at_2(<20 x float>, float) {
6500 entry:
6501 %2 = insertelement <20 x float> %0, float %1, i32 2
6502 ret <20 x float> %2
6503 }
6504 ; CHECK-LABEL: define <4 x float> @insert_20xfloat_at_2(<4 x float>* nocapture n onnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnu ll dereferenceable(16), <4 x float>, <4 x float>, <4 x float>, <4 x float>, <4 x float>, float) {
6505 ; CHECK: entry:
6506 ; CHECK-NEXT: %10 = insertelement <4 x float> %4, float %9, i32 2
6507 ; CHECK-NEXT: store <4 x float> %5, <4 x float>* %0, align 16
6508 ; CHECK-NEXT: store <4 x float> %6, <4 x float>* %1, align 16
6509 ; CHECK-NEXT: store <4 x float> %7, <4 x float>* %2, align 16
6510 ; CHECK-NEXT: store <4 x float> %8, <4 x float>* %3, align 16
6511 ; CHECK-NEXT: ret <4 x float> %10
6512 ; CHECK-NEXT: }
6513
6514 define <20 x float> @insert_20xfloat_at_3(<20 x float>, float) {
6515 entry:
6516 %2 = insertelement <20 x float> %0, float %1, i32 3
6517 ret <20 x float> %2
6518 }
6519 ; CHECK-LABEL: define <4 x float> @insert_20xfloat_at_3(<4 x float>* nocapture n onnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnu ll dereferenceable(16), <4 x float>, <4 x float>, <4 x float>, <4 x float>, <4 x float>, float) {
6520 ; CHECK: entry:
6521 ; CHECK-NEXT: %10 = insertelement <4 x float> %4, float %9, i32 3
6522 ; CHECK-NEXT: store <4 x float> %5, <4 x float>* %0, align 16
6523 ; CHECK-NEXT: store <4 x float> %6, <4 x float>* %1, align 16
6524 ; CHECK-NEXT: store <4 x float> %7, <4 x float>* %2, align 16
6525 ; CHECK-NEXT: store <4 x float> %8, <4 x float>* %3, align 16
6526 ; CHECK-NEXT: ret <4 x float> %10
6527 ; CHECK-NEXT: }
6528
6529 define <20 x float> @insert_20xfloat_at_4(<20 x float>, float) {
6530 entry:
6531 %2 = insertelement <20 x float> %0, float %1, i32 4
6532 ret <20 x float> %2
6533 }
6534 ; CHECK-LABEL: define <4 x float> @insert_20xfloat_at_4(<4 x float>* nocapture n onnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnu ll dereferenceable(16), <4 x float>, <4 x float>, <4 x float>, <4 x float>, <4 x float>, float) {
6535 ; CHECK: entry:
6536 ; CHECK-NEXT: %10 = insertelement <4 x float> %5, float %9, i32 0
6537 ; CHECK-NEXT: store <4 x float> %10, <4 x float>* %0, align 16
6538 ; CHECK-NEXT: store <4 x float> %6, <4 x float>* %1, align 16
6539 ; CHECK-NEXT: store <4 x float> %7, <4 x float>* %2, align 16
6540 ; CHECK-NEXT: store <4 x float> %8, <4 x float>* %3, align 16
6541 ; CHECK-NEXT: ret <4 x float> %4
6542 ; CHECK-NEXT: }
6543
6544 define <20 x float> @insert_20xfloat_at_5(<20 x float>, float) {
6545 entry:
6546 %2 = insertelement <20 x float> %0, float %1, i32 5
6547 ret <20 x float> %2
6548 }
6549 ; CHECK-LABEL: define <4 x float> @insert_20xfloat_at_5(<4 x float>* nocapture n onnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnu ll dereferenceable(16), <4 x float>, <4 x float>, <4 x float>, <4 x float>, <4 x float>, float) {
6550 ; CHECK: entry:
6551 ; CHECK-NEXT: %10 = insertelement <4 x float> %5, float %9, i32 1
6552 ; CHECK-NEXT: store <4 x float> %10, <4 x float>* %0, align 16
6553 ; CHECK-NEXT: store <4 x float> %6, <4 x float>* %1, align 16
6554 ; CHECK-NEXT: store <4 x float> %7, <4 x float>* %2, align 16
6555 ; CHECK-NEXT: store <4 x float> %8, <4 x float>* %3, align 16
6556 ; CHECK-NEXT: ret <4 x float> %4
6557 ; CHECK-NEXT: }
6558
6559 define <20 x float> @insert_20xfloat_at_6(<20 x float>, float) {
6560 entry:
6561 %2 = insertelement <20 x float> %0, float %1, i32 6
6562 ret <20 x float> %2
6563 }
6564 ; CHECK-LABEL: define <4 x float> @insert_20xfloat_at_6(<4 x float>* nocapture n onnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnu ll dereferenceable(16), <4 x float>, <4 x float>, <4 x float>, <4 x float>, <4 x float>, float) {
6565 ; CHECK: entry:
6566 ; CHECK-NEXT: %10 = insertelement <4 x float> %5, float %9, i32 2
6567 ; CHECK-NEXT: store <4 x float> %10, <4 x float>* %0, align 16
6568 ; CHECK-NEXT: store <4 x float> %6, <4 x float>* %1, align 16
6569 ; CHECK-NEXT: store <4 x float> %7, <4 x float>* %2, align 16
6570 ; CHECK-NEXT: store <4 x float> %8, <4 x float>* %3, align 16
6571 ; CHECK-NEXT: ret <4 x float> %4
6572 ; CHECK-NEXT: }
6573
6574 define <20 x float> @insert_20xfloat_at_7(<20 x float>, float) {
6575 entry:
6576 %2 = insertelement <20 x float> %0, float %1, i32 7
6577 ret <20 x float> %2
6578 }
6579 ; CHECK-LABEL: define <4 x float> @insert_20xfloat_at_7(<4 x float>* nocapture n onnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnu ll dereferenceable(16), <4 x float>, <4 x float>, <4 x float>, <4 x float>, <4 x float>, float) {
6580 ; CHECK: entry:
6581 ; CHECK-NEXT: %10 = insertelement <4 x float> %5, float %9, i32 3
6582 ; CHECK-NEXT: store <4 x float> %10, <4 x float>* %0, align 16
6583 ; CHECK-NEXT: store <4 x float> %6, <4 x float>* %1, align 16
6584 ; CHECK-NEXT: store <4 x float> %7, <4 x float>* %2, align 16
6585 ; CHECK-NEXT: store <4 x float> %8, <4 x float>* %3, align 16
6586 ; CHECK-NEXT: ret <4 x float> %4
6587 ; CHECK-NEXT: }
6588
6589 define <20 x float> @insert_20xfloat_at_8(<20 x float>, float) {
6590 entry:
6591 %2 = insertelement <20 x float> %0, float %1, i32 8
6592 ret <20 x float> %2
6593 }
6594 ; CHECK-LABEL: define <4 x float> @insert_20xfloat_at_8(<4 x float>* nocapture n onnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnu ll dereferenceable(16), <4 x float>, <4 x float>, <4 x float>, <4 x float>, <4 x float>, float) {
6595 ; CHECK: entry:
6596 ; CHECK-NEXT: %10 = insertelement <4 x float> %6, float %9, i32 0
6597 ; CHECK-NEXT: store <4 x float> %5, <4 x float>* %0, align 16
6598 ; CHECK-NEXT: store <4 x float> %10, <4 x float>* %1, align 16
6599 ; CHECK-NEXT: store <4 x float> %7, <4 x float>* %2, align 16
6600 ; CHECK-NEXT: store <4 x float> %8, <4 x float>* %3, align 16
6601 ; CHECK-NEXT: ret <4 x float> %4
6602 ; CHECK-NEXT: }
6603
6604 define <20 x float> @insert_20xfloat_at_9(<20 x float>, float) {
6605 entry:
6606 %2 = insertelement <20 x float> %0, float %1, i32 9
6607 ret <20 x float> %2
6608 }
6609 ; CHECK-LABEL: define <4 x float> @insert_20xfloat_at_9(<4 x float>* nocapture n onnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnu ll dereferenceable(16), <4 x float>, <4 x float>, <4 x float>, <4 x float>, <4 x float>, float) {
6610 ; CHECK: entry:
6611 ; CHECK-NEXT: %10 = insertelement <4 x float> %6, float %9, i32 1
6612 ; CHECK-NEXT: store <4 x float> %5, <4 x float>* %0, align 16
6613 ; CHECK-NEXT: store <4 x float> %10, <4 x float>* %1, align 16
6614 ; CHECK-NEXT: store <4 x float> %7, <4 x float>* %2, align 16
6615 ; CHECK-NEXT: store <4 x float> %8, <4 x float>* %3, align 16
6616 ; CHECK-NEXT: ret <4 x float> %4
6617 ; CHECK-NEXT: }
6618
6619 define <20 x float> @insert_20xfloat_at_10(<20 x float>, float) {
6620 entry:
6621 %2 = insertelement <20 x float> %0, float %1, i32 10
6622 ret <20 x float> %2
6623 }
6624 ; CHECK-LABEL: define <4 x float> @insert_20xfloat_at_10(<4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonn ull dereferenceable(16), <4 x float>, <4 x float>, <4 x float>, <4 x float>, <4 x float>, float) {
6625 ; CHECK: entry:
6626 ; CHECK-NEXT: %10 = insertelement <4 x float> %6, float %9, i32 2
6627 ; CHECK-NEXT: store <4 x float> %5, <4 x float>* %0, align 16
6628 ; CHECK-NEXT: store <4 x float> %10, <4 x float>* %1, align 16
6629 ; CHECK-NEXT: store <4 x float> %7, <4 x float>* %2, align 16
6630 ; CHECK-NEXT: store <4 x float> %8, <4 x float>* %3, align 16
6631 ; CHECK-NEXT: ret <4 x float> %4
6632 ; CHECK-NEXT: }
6633
6634 define <20 x float> @insert_20xfloat_at_11(<20 x float>, float) {
6635 entry:
6636 %2 = insertelement <20 x float> %0, float %1, i32 11
6637 ret <20 x float> %2
6638 }
6639 ; CHECK-LABEL: define <4 x float> @insert_20xfloat_at_11(<4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonn ull dereferenceable(16), <4 x float>, <4 x float>, <4 x float>, <4 x float>, <4 x float>, float) {
6640 ; CHECK: entry:
6641 ; CHECK-NEXT: %10 = insertelement <4 x float> %6, float %9, i32 3
6642 ; CHECK-NEXT: store <4 x float> %5, <4 x float>* %0, align 16
6643 ; CHECK-NEXT: store <4 x float> %10, <4 x float>* %1, align 16
6644 ; CHECK-NEXT: store <4 x float> %7, <4 x float>* %2, align 16
6645 ; CHECK-NEXT: store <4 x float> %8, <4 x float>* %3, align 16
6646 ; CHECK-NEXT: ret <4 x float> %4
6647 ; CHECK-NEXT: }
6648
6649 define <20 x float> @insert_20xfloat_at_12(<20 x float>, float) {
6650 entry:
6651 %2 = insertelement <20 x float> %0, float %1, i32 12
6652 ret <20 x float> %2
6653 }
6654 ; CHECK-LABEL: define <4 x float> @insert_20xfloat_at_12(<4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonn ull dereferenceable(16), <4 x float>, <4 x float>, <4 x float>, <4 x float>, <4 x float>, float) {
6655 ; CHECK: entry:
6656 ; CHECK-NEXT: %10 = insertelement <4 x float> %7, float %9, i32 0
6657 ; CHECK-NEXT: store <4 x float> %5, <4 x float>* %0, align 16
6658 ; CHECK-NEXT: store <4 x float> %6, <4 x float>* %1, align 16
6659 ; CHECK-NEXT: store <4 x float> %10, <4 x float>* %2, align 16
6660 ; CHECK-NEXT: store <4 x float> %8, <4 x float>* %3, align 16
6661 ; CHECK-NEXT: ret <4 x float> %4
6662 ; CHECK-NEXT: }
6663
6664 define <20 x float> @insert_20xfloat_at_13(<20 x float>, float) {
6665 entry:
6666 %2 = insertelement <20 x float> %0, float %1, i32 13
6667 ret <20 x float> %2
6668 }
6669 ; CHECK-LABEL: define <4 x float> @insert_20xfloat_at_13(<4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonn ull dereferenceable(16), <4 x float>, <4 x float>, <4 x float>, <4 x float>, <4 x float>, float) {
6670 ; CHECK: entry:
6671 ; CHECK-NEXT: %10 = insertelement <4 x float> %7, float %9, i32 1
6672 ; CHECK-NEXT: store <4 x float> %5, <4 x float>* %0, align 16
6673 ; CHECK-NEXT: store <4 x float> %6, <4 x float>* %1, align 16
6674 ; CHECK-NEXT: store <4 x float> %10, <4 x float>* %2, align 16
6675 ; CHECK-NEXT: store <4 x float> %8, <4 x float>* %3, align 16
6676 ; CHECK-NEXT: ret <4 x float> %4
6677 ; CHECK-NEXT: }
6678
6679 define <20 x float> @insert_20xfloat_at_14(<20 x float>, float) {
6680 entry:
6681 %2 = insertelement <20 x float> %0, float %1, i32 14
6682 ret <20 x float> %2
6683 }
6684 ; CHECK-LABEL: define <4 x float> @insert_20xfloat_at_14(<4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonn ull dereferenceable(16), <4 x float>, <4 x float>, <4 x float>, <4 x float>, <4 x float>, float) {
6685 ; CHECK: entry:
6686 ; CHECK-NEXT: %10 = insertelement <4 x float> %7, float %9, i32 2
6687 ; CHECK-NEXT: store <4 x float> %5, <4 x float>* %0, align 16
6688 ; CHECK-NEXT: store <4 x float> %6, <4 x float>* %1, align 16
6689 ; CHECK-NEXT: store <4 x float> %10, <4 x float>* %2, align 16
6690 ; CHECK-NEXT: store <4 x float> %8, <4 x float>* %3, align 16
6691 ; CHECK-NEXT: ret <4 x float> %4
6692 ; CHECK-NEXT: }
6693
6694 define <20 x float> @insert_20xfloat_at_15(<20 x float>, float) {
6695 entry:
6696 %2 = insertelement <20 x float> %0, float %1, i32 15
6697 ret <20 x float> %2
6698 }
6699 ; CHECK-LABEL: define <4 x float> @insert_20xfloat_at_15(<4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonn ull dereferenceable(16), <4 x float>, <4 x float>, <4 x float>, <4 x float>, <4 x float>, float) {
6700 ; CHECK: entry:
6701 ; CHECK-NEXT: %10 = insertelement <4 x float> %7, float %9, i32 3
6702 ; CHECK-NEXT: store <4 x float> %5, <4 x float>* %0, align 16
6703 ; CHECK-NEXT: store <4 x float> %6, <4 x float>* %1, align 16
6704 ; CHECK-NEXT: store <4 x float> %10, <4 x float>* %2, align 16
6705 ; CHECK-NEXT: store <4 x float> %8, <4 x float>* %3, align 16
6706 ; CHECK-NEXT: ret <4 x float> %4
6707 ; CHECK-NEXT: }
6708
6709 define <20 x float> @insert_20xfloat_at_16(<20 x float>, float) {
6710 entry:
6711 %2 = insertelement <20 x float> %0, float %1, i32 16
6712 ret <20 x float> %2
6713 }
6714 ; CHECK-LABEL: define <4 x float> @insert_20xfloat_at_16(<4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonn ull dereferenceable(16), <4 x float>, <4 x float>, <4 x float>, <4 x float>, <4 x float>, float) {
6715 ; CHECK: entry:
6716 ; CHECK-NEXT: %10 = insertelement <4 x float> %8, float %9, i32 0
6717 ; CHECK-NEXT: store <4 x float> %5, <4 x float>* %0, align 16
6718 ; CHECK-NEXT: store <4 x float> %6, <4 x float>* %1, align 16
6719 ; CHECK-NEXT: store <4 x float> %7, <4 x float>* %2, align 16
6720 ; CHECK-NEXT: store <4 x float> %10, <4 x float>* %3, align 16
6721 ; CHECK-NEXT: ret <4 x float> %4
6722 ; CHECK-NEXT: }
6723
6724 define <20 x float> @insert_20xfloat_at_17(<20 x float>, float) {
6725 entry:
6726 %2 = insertelement <20 x float> %0, float %1, i32 17
6727 ret <20 x float> %2
6728 }
6729 ; CHECK-LABEL: define <4 x float> @insert_20xfloat_at_17(<4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonn ull dereferenceable(16), <4 x float>, <4 x float>, <4 x float>, <4 x float>, <4 x float>, float) {
6730 ; CHECK: entry:
6731 ; CHECK-NEXT: %10 = insertelement <4 x float> %8, float %9, i32 1
6732 ; CHECK-NEXT: store <4 x float> %5, <4 x float>* %0, align 16
6733 ; CHECK-NEXT: store <4 x float> %6, <4 x float>* %1, align 16
6734 ; CHECK-NEXT: store <4 x float> %7, <4 x float>* %2, align 16
6735 ; CHECK-NEXT: store <4 x float> %10, <4 x float>* %3, align 16
6736 ; CHECK-NEXT: ret <4 x float> %4
6737 ; CHECK-NEXT: }
6738
6739 define <20 x float> @insert_20xfloat_at_18(<20 x float>, float) {
6740 entry:
6741 %2 = insertelement <20 x float> %0, float %1, i32 18
6742 ret <20 x float> %2
6743 }
6744 ; CHECK-LABEL: define <4 x float> @insert_20xfloat_at_18(<4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonn ull dereferenceable(16), <4 x float>, <4 x float>, <4 x float>, <4 x float>, <4 x float>, float) {
6745 ; CHECK: entry:
6746 ; CHECK-NEXT: %10 = insertelement <4 x float> %8, float %9, i32 2
6747 ; CHECK-NEXT: store <4 x float> %5, <4 x float>* %0, align 16
6748 ; CHECK-NEXT: store <4 x float> %6, <4 x float>* %1, align 16
6749 ; CHECK-NEXT: store <4 x float> %7, <4 x float>* %2, align 16
6750 ; CHECK-NEXT: store <4 x float> %10, <4 x float>* %3, align 16
6751 ; CHECK-NEXT: ret <4 x float> %4
6752 ; CHECK-NEXT: }
6753
6754 define <20 x float> @insert_20xfloat_at_19(<20 x float>, float) {
6755 entry:
6756 %2 = insertelement <20 x float> %0, float %1, i32 19
6757 ret <20 x float> %2
6758 }
6759 ; CHECK-LABEL: define <4 x float> @insert_20xfloat_at_19(<4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonn ull dereferenceable(16), <4 x float>, <4 x float>, <4 x float>, <4 x float>, <4 x float>, float) {
6760 ; CHECK: entry:
6761 ; CHECK-NEXT: %10 = insertelement <4 x float> %8, float %9, i32 3
6762 ; CHECK-NEXT: store <4 x float> %5, <4 x float>* %0, align 16
6763 ; CHECK-NEXT: store <4 x float> %6, <4 x float>* %1, align 16
6764 ; CHECK-NEXT: store <4 x float> %7, <4 x float>* %2, align 16
6765 ; CHECK-NEXT: store <4 x float> %10, <4 x float>* %3, align 16
6766 ; CHECK-NEXT: ret <4 x float> %4
6767 ; CHECK-NEXT: }
6768
6769 define <20 x float> @insert_20xfloat_undef_idx(<20 x float>, float) {
6770 entry:
6771 %2 = insertelement <20 x float> %0, float %1, i32 20
6772 ret <20 x float> %2
6773 }
6774 ; CHECK-LABEL: define <4 x float> @insert_20xfloat_undef_idx(<4 x float>* nocapt ure nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable( 16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>, <4 x float>, <4 x float>, <4 x float>, <4 x float>, float) {
6775 ; CHECK: entry:
6776 ; CHECK-NEXT: store <4 x float> %5, <4 x float>* %0, align 16
6777 ; CHECK-NEXT: store <4 x float> %6, <4 x float>* %1, align 16
6778 ; CHECK-NEXT: store <4 x float> %7, <4 x float>* %2, align 16
6779 ; CHECK-NEXT: store <4 x float> %8, <4 x float>* %3, align 16
6780 ; CHECK-NEXT: ret <4 x float> %4
6781 ; CHECK-NEXT: }
6782
6783 define <20 x double> @insert_20xdouble_at_0(<20 x double>, double) {
6784 entry:
6785 %2 = insertelement <20 x double> %0, double %1, i32 0
6786 ret <20 x double> %2
6787 }
6788 ; CHECK-LABEL: define <2 x double> @insert_20xdouble_at_0(<2 x double>* nocaptur e nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(1 6), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16 ), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16) , <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x double >, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x do uble>, <2 x double>, <2 x double>, double) {
6789 ; CHECK: entry:
6790 ; CHECK-NEXT: %20 = insertelement <2 x double> %9, double %19, i32 0
6791 ; CHECK-NEXT: store <2 x double> %10, <2 x double>* %0, align 16
6792 ; CHECK-NEXT: store <2 x double> %11, <2 x double>* %1, align 16
6793 ; CHECK-NEXT: store <2 x double> %12, <2 x double>* %2, align 16
6794 ; CHECK-NEXT: store <2 x double> %13, <2 x double>* %3, align 16
6795 ; CHECK-NEXT: store <2 x double> %14, <2 x double>* %4, align 16
6796 ; CHECK-NEXT: store <2 x double> %15, <2 x double>* %5, align 16
6797 ; CHECK-NEXT: store <2 x double> %16, <2 x double>* %6, align 16
6798 ; CHECK-NEXT: store <2 x double> %17, <2 x double>* %7, align 16
6799 ; CHECK-NEXT: store <2 x double> %18, <2 x double>* %8, align 16
6800 ; CHECK-NEXT: ret <2 x double> %20
6801 ; CHECK-NEXT: }
6802
6803 define <20 x double> @insert_20xdouble_at_1(<20 x double>, double) {
6804 entry:
6805 %2 = insertelement <20 x double> %0, double %1, i32 1
6806 ret <20 x double> %2
6807 }
6808 ; CHECK-LABEL: define <2 x double> @insert_20xdouble_at_1(<2 x double>* nocaptur e nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(1 6), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16 ), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16) , <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x double >, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x do uble>, <2 x double>, <2 x double>, double) {
6809 ; CHECK: entry:
6810 ; CHECK-NEXT: %20 = insertelement <2 x double> %9, double %19, i32 1
6811 ; CHECK-NEXT: store <2 x double> %10, <2 x double>* %0, align 16
6812 ; CHECK-NEXT: store <2 x double> %11, <2 x double>* %1, align 16
6813 ; CHECK-NEXT: store <2 x double> %12, <2 x double>* %2, align 16
6814 ; CHECK-NEXT: store <2 x double> %13, <2 x double>* %3, align 16
6815 ; CHECK-NEXT: store <2 x double> %14, <2 x double>* %4, align 16
6816 ; CHECK-NEXT: store <2 x double> %15, <2 x double>* %5, align 16
6817 ; CHECK-NEXT: store <2 x double> %16, <2 x double>* %6, align 16
6818 ; CHECK-NEXT: store <2 x double> %17, <2 x double>* %7, align 16
6819 ; CHECK-NEXT: store <2 x double> %18, <2 x double>* %8, align 16
6820 ; CHECK-NEXT: ret <2 x double> %20
6821 ; CHECK-NEXT: }
6822
6823 define <20 x double> @insert_20xdouble_at_2(<20 x double>, double) {
6824 entry:
6825 %2 = insertelement <20 x double> %0, double %1, i32 2
6826 ret <20 x double> %2
6827 }
6828 ; CHECK-LABEL: define <2 x double> @insert_20xdouble_at_2(<2 x double>* nocaptur e nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(1 6), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16 ), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16) , <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x double >, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x do uble>, <2 x double>, <2 x double>, double) {
6829 ; CHECK: entry:
6830 ; CHECK-NEXT: %20 = insertelement <2 x double> %10, double %19, i32 0
6831 ; CHECK-NEXT: store <2 x double> %20, <2 x double>* %0, align 16
6832 ; CHECK-NEXT: store <2 x double> %11, <2 x double>* %1, align 16
6833 ; CHECK-NEXT: store <2 x double> %12, <2 x double>* %2, align 16
6834 ; CHECK-NEXT: store <2 x double> %13, <2 x double>* %3, align 16
6835 ; CHECK-NEXT: store <2 x double> %14, <2 x double>* %4, align 16
6836 ; CHECK-NEXT: store <2 x double> %15, <2 x double>* %5, align 16
6837 ; CHECK-NEXT: store <2 x double> %16, <2 x double>* %6, align 16
6838 ; CHECK-NEXT: store <2 x double> %17, <2 x double>* %7, align 16
6839 ; CHECK-NEXT: store <2 x double> %18, <2 x double>* %8, align 16
6840 ; CHECK-NEXT: ret <2 x double> %9
6841 ; CHECK-NEXT: }
6842
6843 define <20 x double> @insert_20xdouble_at_3(<20 x double>, double) {
6844 entry:
6845 %2 = insertelement <20 x double> %0, double %1, i32 3
6846 ret <20 x double> %2
6847 }
6848 ; CHECK-LABEL: define <2 x double> @insert_20xdouble_at_3(<2 x double>* nocaptur e nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(1 6), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16 ), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16) , <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x double >, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x do uble>, <2 x double>, <2 x double>, double) {
6849 ; CHECK: entry:
6850 ; CHECK-NEXT: %20 = insertelement <2 x double> %10, double %19, i32 1
6851 ; CHECK-NEXT: store <2 x double> %20, <2 x double>* %0, align 16
6852 ; CHECK-NEXT: store <2 x double> %11, <2 x double>* %1, align 16
6853 ; CHECK-NEXT: store <2 x double> %12, <2 x double>* %2, align 16
6854 ; CHECK-NEXT: store <2 x double> %13, <2 x double>* %3, align 16
6855 ; CHECK-NEXT: store <2 x double> %14, <2 x double>* %4, align 16
6856 ; CHECK-NEXT: store <2 x double> %15, <2 x double>* %5, align 16
6857 ; CHECK-NEXT: store <2 x double> %16, <2 x double>* %6, align 16
6858 ; CHECK-NEXT: store <2 x double> %17, <2 x double>* %7, align 16
6859 ; CHECK-NEXT: store <2 x double> %18, <2 x double>* %8, align 16
6860 ; CHECK-NEXT: ret <2 x double> %9
6861 ; CHECK-NEXT: }
6862
6863 define <20 x double> @insert_20xdouble_at_4(<20 x double>, double) {
6864 entry:
6865 %2 = insertelement <20 x double> %0, double %1, i32 4
6866 ret <20 x double> %2
6867 }
6868 ; CHECK-LABEL: define <2 x double> @insert_20xdouble_at_4(<2 x double>* nocaptur e nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(1 6), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16 ), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16) , <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x double >, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x do uble>, <2 x double>, <2 x double>, double) {
6869 ; CHECK: entry:
6870 ; CHECK-NEXT: %20 = insertelement <2 x double> %11, double %19, i32 0
6871 ; CHECK-NEXT: store <2 x double> %10, <2 x double>* %0, align 16
6872 ; CHECK-NEXT: store <2 x double> %20, <2 x double>* %1, align 16
6873 ; CHECK-NEXT: store <2 x double> %12, <2 x double>* %2, align 16
6874 ; CHECK-NEXT: store <2 x double> %13, <2 x double>* %3, align 16
6875 ; CHECK-NEXT: store <2 x double> %14, <2 x double>* %4, align 16
6876 ; CHECK-NEXT: store <2 x double> %15, <2 x double>* %5, align 16
6877 ; CHECK-NEXT: store <2 x double> %16, <2 x double>* %6, align 16
6878 ; CHECK-NEXT: store <2 x double> %17, <2 x double>* %7, align 16
6879 ; CHECK-NEXT: store <2 x double> %18, <2 x double>* %8, align 16
6880 ; CHECK-NEXT: ret <2 x double> %9
6881 ; CHECK-NEXT: }
6882
6883 define <20 x double> @insert_20xdouble_at_5(<20 x double>, double) {
6884 entry:
6885 %2 = insertelement <20 x double> %0, double %1, i32 5
6886 ret <20 x double> %2
6887 }
6888 ; CHECK-LABEL: define <2 x double> @insert_20xdouble_at_5(<2 x double>* nocaptur e nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(1 6), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16 ), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16) , <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x double >, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x do uble>, <2 x double>, <2 x double>, double) {
6889 ; CHECK: entry:
6890 ; CHECK-NEXT: %20 = insertelement <2 x double> %11, double %19, i32 1
6891 ; CHECK-NEXT: store <2 x double> %10, <2 x double>* %0, align 16
6892 ; CHECK-NEXT: store <2 x double> %20, <2 x double>* %1, align 16
6893 ; CHECK-NEXT: store <2 x double> %12, <2 x double>* %2, align 16
6894 ; CHECK-NEXT: store <2 x double> %13, <2 x double>* %3, align 16
6895 ; CHECK-NEXT: store <2 x double> %14, <2 x double>* %4, align 16
6896 ; CHECK-NEXT: store <2 x double> %15, <2 x double>* %5, align 16
6897 ; CHECK-NEXT: store <2 x double> %16, <2 x double>* %6, align 16
6898 ; CHECK-NEXT: store <2 x double> %17, <2 x double>* %7, align 16
6899 ; CHECK-NEXT: store <2 x double> %18, <2 x double>* %8, align 16
6900 ; CHECK-NEXT: ret <2 x double> %9
6901 ; CHECK-NEXT: }
6902
6903 define <20 x double> @insert_20xdouble_at_6(<20 x double>, double) {
6904 entry:
6905 %2 = insertelement <20 x double> %0, double %1, i32 6
6906 ret <20 x double> %2
6907 }
6908 ; CHECK-LABEL: define <2 x double> @insert_20xdouble_at_6(<2 x double>* nocaptur e nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(1 6), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16 ), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16) , <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x double >, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x do uble>, <2 x double>, <2 x double>, double) {
6909 ; CHECK: entry:
6910 ; CHECK-NEXT: %20 = insertelement <2 x double> %12, double %19, i32 0
6911 ; CHECK-NEXT: store <2 x double> %10, <2 x double>* %0, align 16
6912 ; CHECK-NEXT: store <2 x double> %11, <2 x double>* %1, align 16
6913 ; CHECK-NEXT: store <2 x double> %20, <2 x double>* %2, align 16
6914 ; CHECK-NEXT: store <2 x double> %13, <2 x double>* %3, align 16
6915 ; CHECK-NEXT: store <2 x double> %14, <2 x double>* %4, align 16
6916 ; CHECK-NEXT: store <2 x double> %15, <2 x double>* %5, align 16
6917 ; CHECK-NEXT: store <2 x double> %16, <2 x double>* %6, align 16
6918 ; CHECK-NEXT: store <2 x double> %17, <2 x double>* %7, align 16
6919 ; CHECK-NEXT: store <2 x double> %18, <2 x double>* %8, align 16
6920 ; CHECK-NEXT: ret <2 x double> %9
6921 ; CHECK-NEXT: }
6922
6923 define <20 x double> @insert_20xdouble_at_7(<20 x double>, double) {
6924 entry:
6925 %2 = insertelement <20 x double> %0, double %1, i32 7
6926 ret <20 x double> %2
6927 }
6928 ; CHECK-LABEL: define <2 x double> @insert_20xdouble_at_7(<2 x double>* nocaptur e nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(1 6), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16 ), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16) , <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x double >, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x do uble>, <2 x double>, <2 x double>, double) {
6929 ; CHECK: entry:
6930 ; CHECK-NEXT: %20 = insertelement <2 x double> %12, double %19, i32 1
6931 ; CHECK-NEXT: store <2 x double> %10, <2 x double>* %0, align 16
6932 ; CHECK-NEXT: store <2 x double> %11, <2 x double>* %1, align 16
6933 ; CHECK-NEXT: store <2 x double> %20, <2 x double>* %2, align 16
6934 ; CHECK-NEXT: store <2 x double> %13, <2 x double>* %3, align 16
6935 ; CHECK-NEXT: store <2 x double> %14, <2 x double>* %4, align 16
6936 ; CHECK-NEXT: store <2 x double> %15, <2 x double>* %5, align 16
6937 ; CHECK-NEXT: store <2 x double> %16, <2 x double>* %6, align 16
6938 ; CHECK-NEXT: store <2 x double> %17, <2 x double>* %7, align 16
6939 ; CHECK-NEXT: store <2 x double> %18, <2 x double>* %8, align 16
6940 ; CHECK-NEXT: ret <2 x double> %9
6941 ; CHECK-NEXT: }
6942
6943 define <20 x double> @insert_20xdouble_at_8(<20 x double>, double) {
6944 entry:
6945 %2 = insertelement <20 x double> %0, double %1, i32 8
6946 ret <20 x double> %2
6947 }
6948 ; CHECK-LABEL: define <2 x double> @insert_20xdouble_at_8(<2 x double>* nocaptur e nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(1 6), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16 ), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16) , <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x double >, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x do uble>, <2 x double>, <2 x double>, double) {
6949 ; CHECK: entry:
6950 ; CHECK-NEXT: %20 = insertelement <2 x double> %13, double %19, i32 0
6951 ; CHECK-NEXT: store <2 x double> %10, <2 x double>* %0, align 16
6952 ; CHECK-NEXT: store <2 x double> %11, <2 x double>* %1, align 16
6953 ; CHECK-NEXT: store <2 x double> %12, <2 x double>* %2, align 16
6954 ; CHECK-NEXT: store <2 x double> %20, <2 x double>* %3, align 16
6955 ; CHECK-NEXT: store <2 x double> %14, <2 x double>* %4, align 16
6956 ; CHECK-NEXT: store <2 x double> %15, <2 x double>* %5, align 16
6957 ; CHECK-NEXT: store <2 x double> %16, <2 x double>* %6, align 16
6958 ; CHECK-NEXT: store <2 x double> %17, <2 x double>* %7, align 16
6959 ; CHECK-NEXT: store <2 x double> %18, <2 x double>* %8, align 16
6960 ; CHECK-NEXT: ret <2 x double> %9
6961 ; CHECK-NEXT: }
6962
6963 define <20 x double> @insert_20xdouble_at_9(<20 x double>, double) {
6964 entry:
6965 %2 = insertelement <20 x double> %0, double %1, i32 9
6966 ret <20 x double> %2
6967 }
6968 ; CHECK-LABEL: define <2 x double> @insert_20xdouble_at_9(<2 x double>* nocaptur e nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(1 6), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16 ), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16) , <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x double >, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x do uble>, <2 x double>, <2 x double>, double) {
6969 ; CHECK: entry:
6970 ; CHECK-NEXT: %20 = insertelement <2 x double> %13, double %19, i32 1
6971 ; CHECK-NEXT: store <2 x double> %10, <2 x double>* %0, align 16
6972 ; CHECK-NEXT: store <2 x double> %11, <2 x double>* %1, align 16
6973 ; CHECK-NEXT: store <2 x double> %12, <2 x double>* %2, align 16
6974 ; CHECK-NEXT: store <2 x double> %20, <2 x double>* %3, align 16
6975 ; CHECK-NEXT: store <2 x double> %14, <2 x double>* %4, align 16
6976 ; CHECK-NEXT: store <2 x double> %15, <2 x double>* %5, align 16
6977 ; CHECK-NEXT: store <2 x double> %16, <2 x double>* %6, align 16
6978 ; CHECK-NEXT: store <2 x double> %17, <2 x double>* %7, align 16
6979 ; CHECK-NEXT: store <2 x double> %18, <2 x double>* %8, align 16
6980 ; CHECK-NEXT: ret <2 x double> %9
6981 ; CHECK-NEXT: }
6982
6983 define <20 x double> @insert_20xdouble_at_10(<20 x double>, double) {
6984 entry:
6985 %2 = insertelement <20 x double> %0, double %1, i32 10
6986 ret <20 x double> %2
6987 }
6988 ; CHECK-LABEL: define <2 x double> @insert_20xdouble_at_10(<2 x double>* nocaptu re nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable( 16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocaptur e nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(1 6), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16 ), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x doubl e>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x d ouble>, <2 x double>, <2 x double>, double) {
6989 ; CHECK: entry:
6990 ; CHECK-NEXT: %20 = insertelement <2 x double> %14, double %19, i32 0
6991 ; CHECK-NEXT: store <2 x double> %10, <2 x double>* %0, align 16
6992 ; CHECK-NEXT: store <2 x double> %11, <2 x double>* %1, align 16
6993 ; CHECK-NEXT: store <2 x double> %12, <2 x double>* %2, align 16
6994 ; CHECK-NEXT: store <2 x double> %13, <2 x double>* %3, align 16
6995 ; CHECK-NEXT: store <2 x double> %20, <2 x double>* %4, align 16
6996 ; CHECK-NEXT: store <2 x double> %15, <2 x double>* %5, align 16
6997 ; CHECK-NEXT: store <2 x double> %16, <2 x double>* %6, align 16
6998 ; CHECK-NEXT: store <2 x double> %17, <2 x double>* %7, align 16
6999 ; CHECK-NEXT: store <2 x double> %18, <2 x double>* %8, align 16
7000 ; CHECK-NEXT: ret <2 x double> %9
7001 ; CHECK-NEXT: }
7002
7003 define <20 x double> @insert_20xdouble_at_11(<20 x double>, double) {
7004 entry:
7005 %2 = insertelement <20 x double> %0, double %1, i32 11
7006 ret <20 x double> %2
7007 }
7008 ; CHECK-LABEL: define <2 x double> @insert_20xdouble_at_11(<2 x double>* nocaptu re nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable( 16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocaptur e nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(1 6), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16 ), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x doubl e>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x d ouble>, <2 x double>, <2 x double>, double) {
7009 ; CHECK: entry:
7010 ; CHECK-NEXT: %20 = insertelement <2 x double> %14, double %19, i32 1
7011 ; CHECK-NEXT: store <2 x double> %10, <2 x double>* %0, align 16
7012 ; CHECK-NEXT: store <2 x double> %11, <2 x double>* %1, align 16
7013 ; CHECK-NEXT: store <2 x double> %12, <2 x double>* %2, align 16
7014 ; CHECK-NEXT: store <2 x double> %13, <2 x double>* %3, align 16
7015 ; CHECK-NEXT: store <2 x double> %20, <2 x double>* %4, align 16
7016 ; CHECK-NEXT: store <2 x double> %15, <2 x double>* %5, align 16
7017 ; CHECK-NEXT: store <2 x double> %16, <2 x double>* %6, align 16
7018 ; CHECK-NEXT: store <2 x double> %17, <2 x double>* %7, align 16
7019 ; CHECK-NEXT: store <2 x double> %18, <2 x double>* %8, align 16
7020 ; CHECK-NEXT: ret <2 x double> %9
7021 ; CHECK-NEXT: }
7022
7023 define <20 x double> @insert_20xdouble_at_12(<20 x double>, double) {
7024 entry:
7025 %2 = insertelement <20 x double> %0, double %1, i32 12
7026 ret <20 x double> %2
7027 }
7028 ; CHECK-LABEL: define <2 x double> @insert_20xdouble_at_12(<2 x double>* nocaptu re nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable( 16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocaptur e nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(1 6), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16 ), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x doubl e>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x d ouble>, <2 x double>, <2 x double>, double) {
7029 ; CHECK: entry:
7030 ; CHECK-NEXT: %20 = insertelement <2 x double> %15, double %19, i32 0
7031 ; CHECK-NEXT: store <2 x double> %10, <2 x double>* %0, align 16
7032 ; CHECK-NEXT: store <2 x double> %11, <2 x double>* %1, align 16
7033 ; CHECK-NEXT: store <2 x double> %12, <2 x double>* %2, align 16
7034 ; CHECK-NEXT: store <2 x double> %13, <2 x double>* %3, align 16
7035 ; CHECK-NEXT: store <2 x double> %14, <2 x double>* %4, align 16
7036 ; CHECK-NEXT: store <2 x double> %20, <2 x double>* %5, align 16
7037 ; CHECK-NEXT: store <2 x double> %16, <2 x double>* %6, align 16
7038 ; CHECK-NEXT: store <2 x double> %17, <2 x double>* %7, align 16
7039 ; CHECK-NEXT: store <2 x double> %18, <2 x double>* %8, align 16
7040 ; CHECK-NEXT: ret <2 x double> %9
7041 ; CHECK-NEXT: }
7042
7043 define <20 x double> @insert_20xdouble_at_13(<20 x double>, double) {
7044 entry:
7045 %2 = insertelement <20 x double> %0, double %1, i32 13
7046 ret <20 x double> %2
7047 }
7048 ; CHECK-LABEL: define <2 x double> @insert_20xdouble_at_13(<2 x double>* nocaptu re nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable( 16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocaptur e nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(1 6), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16 ), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x doubl e>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x d ouble>, <2 x double>, <2 x double>, double) {
7049 ; CHECK: entry:
7050 ; CHECK-NEXT: %20 = insertelement <2 x double> %15, double %19, i32 1
7051 ; CHECK-NEXT: store <2 x double> %10, <2 x double>* %0, align 16
7052 ; CHECK-NEXT: store <2 x double> %11, <2 x double>* %1, align 16
7053 ; CHECK-NEXT: store <2 x double> %12, <2 x double>* %2, align 16
7054 ; CHECK-NEXT: store <2 x double> %13, <2 x double>* %3, align 16
7055 ; CHECK-NEXT: store <2 x double> %14, <2 x double>* %4, align 16
7056 ; CHECK-NEXT: store <2 x double> %20, <2 x double>* %5, align 16
7057 ; CHECK-NEXT: store <2 x double> %16, <2 x double>* %6, align 16
7058 ; CHECK-NEXT: store <2 x double> %17, <2 x double>* %7, align 16
7059 ; CHECK-NEXT: store <2 x double> %18, <2 x double>* %8, align 16
7060 ; CHECK-NEXT: ret <2 x double> %9
7061 ; CHECK-NEXT: }
7062
7063 define <20 x double> @insert_20xdouble_at_14(<20 x double>, double) {
7064 entry:
7065 %2 = insertelement <20 x double> %0, double %1, i32 14
7066 ret <20 x double> %2
7067 }
7068 ; CHECK-LABEL: define <2 x double> @insert_20xdouble_at_14(<2 x double>* nocaptu re nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable( 16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocaptur e nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(1 6), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16 ), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x doubl e>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x d ouble>, <2 x double>, <2 x double>, double) {
7069 ; CHECK: entry:
7070 ; CHECK-NEXT: %20 = insertelement <2 x double> %16, double %19, i32 0
7071 ; CHECK-NEXT: store <2 x double> %10, <2 x double>* %0, align 16
7072 ; CHECK-NEXT: store <2 x double> %11, <2 x double>* %1, align 16
7073 ; CHECK-NEXT: store <2 x double> %12, <2 x double>* %2, align 16
7074 ; CHECK-NEXT: store <2 x double> %13, <2 x double>* %3, align 16
7075 ; CHECK-NEXT: store <2 x double> %14, <2 x double>* %4, align 16
7076 ; CHECK-NEXT: store <2 x double> %15, <2 x double>* %5, align 16
7077 ; CHECK-NEXT: store <2 x double> %20, <2 x double>* %6, align 16
7078 ; CHECK-NEXT: store <2 x double> %17, <2 x double>* %7, align 16
7079 ; CHECK-NEXT: store <2 x double> %18, <2 x double>* %8, align 16
7080 ; CHECK-NEXT: ret <2 x double> %9
7081 ; CHECK-NEXT: }
7082
7083 define <20 x double> @insert_20xdouble_at_15(<20 x double>, double) {
7084 entry:
7085 %2 = insertelement <20 x double> %0, double %1, i32 15
7086 ret <20 x double> %2
7087 }
7088 ; CHECK-LABEL: define <2 x double> @insert_20xdouble_at_15(<2 x double>* nocaptu re nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable( 16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocaptur e nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(1 6), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16 ), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x doubl e>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x d ouble>, <2 x double>, <2 x double>, double) {
7089 ; CHECK: entry:
7090 ; CHECK-NEXT: %20 = insertelement <2 x double> %16, double %19, i32 1
7091 ; CHECK-NEXT: store <2 x double> %10, <2 x double>* %0, align 16
7092 ; CHECK-NEXT: store <2 x double> %11, <2 x double>* %1, align 16
7093 ; CHECK-NEXT: store <2 x double> %12, <2 x double>* %2, align 16
7094 ; CHECK-NEXT: store <2 x double> %13, <2 x double>* %3, align 16
7095 ; CHECK-NEXT: store <2 x double> %14, <2 x double>* %4, align 16
7096 ; CHECK-NEXT: store <2 x double> %15, <2 x double>* %5, align 16
7097 ; CHECK-NEXT: store <2 x double> %20, <2 x double>* %6, align 16
7098 ; CHECK-NEXT: store <2 x double> %17, <2 x double>* %7, align 16
7099 ; CHECK-NEXT: store <2 x double> %18, <2 x double>* %8, align 16
7100 ; CHECK-NEXT: ret <2 x double> %9
7101 ; CHECK-NEXT: }
7102
7103 define <20 x double> @insert_20xdouble_at_16(<20 x double>, double) {
7104 entry:
7105 %2 = insertelement <20 x double> %0, double %1, i32 16
7106 ret <20 x double> %2
7107 }
7108 ; CHECK-LABEL: define <2 x double> @insert_20xdouble_at_16(<2 x double>* nocaptu re nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable( 16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocaptur e nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(1 6), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16 ), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x doubl e>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x d ouble>, <2 x double>, <2 x double>, double) {
7109 ; CHECK: entry:
7110 ; CHECK-NEXT: %20 = insertelement <2 x double> %17, double %19, i32 0
7111 ; CHECK-NEXT: store <2 x double> %10, <2 x double>* %0, align 16
7112 ; CHECK-NEXT: store <2 x double> %11, <2 x double>* %1, align 16
7113 ; CHECK-NEXT: store <2 x double> %12, <2 x double>* %2, align 16
7114 ; CHECK-NEXT: store <2 x double> %13, <2 x double>* %3, align 16
7115 ; CHECK-NEXT: store <2 x double> %14, <2 x double>* %4, align 16
7116 ; CHECK-NEXT: store <2 x double> %15, <2 x double>* %5, align 16
7117 ; CHECK-NEXT: store <2 x double> %16, <2 x double>* %6, align 16
7118 ; CHECK-NEXT: store <2 x double> %20, <2 x double>* %7, align 16
7119 ; CHECK-NEXT: store <2 x double> %18, <2 x double>* %8, align 16
7120 ; CHECK-NEXT: ret <2 x double> %9
7121 ; CHECK-NEXT: }
7122
7123 define <20 x double> @insert_20xdouble_at_17(<20 x double>, double) {
7124 entry:
7125 %2 = insertelement <20 x double> %0, double %1, i32 17
7126 ret <20 x double> %2
7127 }
7128 ; CHECK-LABEL: define <2 x double> @insert_20xdouble_at_17(<2 x double>* nocaptu re nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable( 16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocaptur e nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(1 6), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16 ), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x doubl e>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x d ouble>, <2 x double>, <2 x double>, double) {
7129 ; CHECK: entry:
7130 ; CHECK-NEXT: %20 = insertelement <2 x double> %17, double %19, i32 1
7131 ; CHECK-NEXT: store <2 x double> %10, <2 x double>* %0, align 16
7132 ; CHECK-NEXT: store <2 x double> %11, <2 x double>* %1, align 16
7133 ; CHECK-NEXT: store <2 x double> %12, <2 x double>* %2, align 16
7134 ; CHECK-NEXT: store <2 x double> %13, <2 x double>* %3, align 16
7135 ; CHECK-NEXT: store <2 x double> %14, <2 x double>* %4, align 16
7136 ; CHECK-NEXT: store <2 x double> %15, <2 x double>* %5, align 16
7137 ; CHECK-NEXT: store <2 x double> %16, <2 x double>* %6, align 16
7138 ; CHECK-NEXT: store <2 x double> %20, <2 x double>* %7, align 16
7139 ; CHECK-NEXT: store <2 x double> %18, <2 x double>* %8, align 16
7140 ; CHECK-NEXT: ret <2 x double> %9
7141 ; CHECK-NEXT: }
7142
7143 define <20 x double> @insert_20xdouble_at_18(<20 x double>, double) {
7144 entry:
7145 %2 = insertelement <20 x double> %0, double %1, i32 18
7146 ret <20 x double> %2
7147 }
7148 ; CHECK-LABEL: define <2 x double> @insert_20xdouble_at_18(<2 x double>* nocaptu re nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable( 16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocaptur e nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(1 6), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16 ), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x doubl e>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x d ouble>, <2 x double>, <2 x double>, double) {
7149 ; CHECK: entry:
7150 ; CHECK-NEXT: %20 = insertelement <2 x double> %18, double %19, i32 0
7151 ; CHECK-NEXT: store <2 x double> %10, <2 x double>* %0, align 16
7152 ; CHECK-NEXT: store <2 x double> %11, <2 x double>* %1, align 16
7153 ; CHECK-NEXT: store <2 x double> %12, <2 x double>* %2, align 16
7154 ; CHECK-NEXT: store <2 x double> %13, <2 x double>* %3, align 16
7155 ; CHECK-NEXT: store <2 x double> %14, <2 x double>* %4, align 16
7156 ; CHECK-NEXT: store <2 x double> %15, <2 x double>* %5, align 16
7157 ; CHECK-NEXT: store <2 x double> %16, <2 x double>* %6, align 16
7158 ; CHECK-NEXT: store <2 x double> %17, <2 x double>* %7, align 16
7159 ; CHECK-NEXT: store <2 x double> %20, <2 x double>* %8, align 16
7160 ; CHECK-NEXT: ret <2 x double> %9
7161 ; CHECK-NEXT: }
7162
7163 define <20 x double> @insert_20xdouble_at_19(<20 x double>, double) {
7164 entry:
7165 %2 = insertelement <20 x double> %0, double %1, i32 19
7166 ret <20 x double> %2
7167 }
7168 ; CHECK-LABEL: define <2 x double> @insert_20xdouble_at_19(<2 x double>* nocaptu re nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable( 16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocaptur e nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(1 6), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable(16 ), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x doubl e>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x d ouble>, <2 x double>, <2 x double>, double) {
7169 ; CHECK: entry:
7170 ; CHECK-NEXT: %20 = insertelement <2 x double> %18, double %19, i32 1
7171 ; CHECK-NEXT: store <2 x double> %10, <2 x double>* %0, align 16
7172 ; CHECK-NEXT: store <2 x double> %11, <2 x double>* %1, align 16
7173 ; CHECK-NEXT: store <2 x double> %12, <2 x double>* %2, align 16
7174 ; CHECK-NEXT: store <2 x double> %13, <2 x double>* %3, align 16
7175 ; CHECK-NEXT: store <2 x double> %14, <2 x double>* %4, align 16
7176 ; CHECK-NEXT: store <2 x double> %15, <2 x double>* %5, align 16
7177 ; CHECK-NEXT: store <2 x double> %16, <2 x double>* %6, align 16
7178 ; CHECK-NEXT: store <2 x double> %17, <2 x double>* %7, align 16
7179 ; CHECK-NEXT: store <2 x double> %20, <2 x double>* %8, align 16
7180 ; CHECK-NEXT: ret <2 x double> %9
7181 ; CHECK-NEXT: }
7182
7183 define <20 x double> @insert_20xdouble_undef_idx(<20 x double>, double) {
7184 entry:
7185 %2 = insertelement <20 x double> %0, double %1, i32 20
7186 ret <20 x double> %2
7187 }
7188 ; CHECK-LABEL: define <2 x double> @insert_20xdouble_undef_idx(<2 x double>* noc apture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferencea ble(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* noca pture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceab le(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocap ture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceabl e(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x d ouble>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, double) {
7189 ; CHECK: entry:
7190 ; CHECK-NEXT: store <2 x double> %10, <2 x double>* %0, align 16
7191 ; CHECK-NEXT: store <2 x double> %11, <2 x double>* %1, align 16
7192 ; CHECK-NEXT: store <2 x double> %12, <2 x double>* %2, align 16
7193 ; CHECK-NEXT: store <2 x double> %13, <2 x double>* %3, align 16
7194 ; CHECK-NEXT: store <2 x double> %14, <2 x double>* %4, align 16
7195 ; CHECK-NEXT: store <2 x double> %15, <2 x double>* %5, align 16
7196 ; CHECK-NEXT: store <2 x double> %16, <2 x double>* %6, align 16
7197 ; CHECK-NEXT: store <2 x double> %17, <2 x double>* %7, align 16
7198 ; CHECK-NEXT: store <2 x double> %18, <2 x double>* %8, align 16
7199 ; CHECK-NEXT: ret <2 x double> %9
7200 ; CHECK-NEXT: }
7201
7202 define <2 x i8> @insert_2xi8_var_idx(<2 x i8>, i8, i32) {
7203 entry:
7204 %3 = insertelement <2 x i8> %0, i8 %1, i32 %2
7205 ret <2 x i8> %3
7206 }
7207 ; CHECK-LABEL: define <16 x i8> @insert_2xi8_var_idx(<16 x i8>, i8, i32) {
7208 ; CHECK: entry:
7209 ; CHECK-NEXT: %3 = insertelement <16 x i8> %0, i8 %1, i32 %2
7210 ; CHECK-NEXT: ret <16 x i8> %3
7211 ; CHECK-NEXT: }
7212
7213 define <2 x i16> @insert_2xi16_var_idx(<2 x i16>, i16, i32) {
7214 entry:
7215 %3 = insertelement <2 x i16> %0, i16 %1, i32 %2
7216 ret <2 x i16> %3
7217 }
7218 ; CHECK-LABEL: define <8 x i16> @insert_2xi16_var_idx(<8 x i16>, i16, i32) {
7219 ; CHECK: entry:
7220 ; CHECK-NEXT: %3 = insertelement <8 x i16> %0, i16 %1, i32 %2
7221 ; CHECK-NEXT: ret <8 x i16> %3
7222 ; CHECK-NEXT: }
7223
7224 define <2 x i32> @insert_2xi32_var_idx(<2 x i32>, i32, i32) {
7225 entry:
7226 %3 = insertelement <2 x i32> %0, i32 %1, i32 %2
7227 ret <2 x i32> %3
7228 }
7229 ; CHECK-LABEL: define <4 x i32> @insert_2xi32_var_idx(<4 x i32>, i32, i32) {
7230 ; CHECK: entry:
7231 ; CHECK-NEXT: %3 = insertelement <4 x i32> %0, i32 %1, i32 %2
7232 ; CHECK-NEXT: ret <4 x i32> %3
7233 ; CHECK-NEXT: }
7234
7235 define <2 x i64> @insert_2xi64_var_idx(<2 x i64>, i64, i32) {
7236 entry:
7237 %3 = insertelement <2 x i64> %0, i64 %1, i32 %2
7238 ret <2 x i64> %3
7239 }
7240 ; CHECK-LABEL: define <2 x i64> @insert_2xi64_var_idx(<2 x i64>, i64, i32) {
7241 ; CHECK: entry:
7242 ; CHECK-NEXT: %3 = insertelement <2 x i64> %0, i64 %1, i32 %2
7243 ; CHECK-NEXT: ret <2 x i64> %3
7244 ; CHECK-NEXT: }
7245
7246 define <2 x i8*> @insert_2xi8ptr_var_idx(<2 x i8*>, i8*, i32) {
7247 entry:
7248 %3 = insertelement <2 x i8*> %0, i8* %1, i32 %2
7249 ret <2 x i8*> %3
7250 }
7251 ; CHECK-LABEL: define <4 x i8*> @insert_2xi8ptr_var_idx(<4 x i8*>, i8*, i32) {
7252 ; CHECK: entry:
7253 ; CHECK-NEXT: %3 = insertelement <4 x i8*> %0, i8* %1, i32 %2
7254 ; CHECK-NEXT: ret <4 x i8*> %3
7255 ; CHECK-NEXT: }
7256
7257 define <2 x float> @insert_2xfloat_var_idx(<2 x float>, float, i32) {
7258 entry:
7259 %3 = insertelement <2 x float> %0, float %1, i32 %2
7260 ret <2 x float> %3
7261 }
7262 ; CHECK-LABEL: define <4 x float> @insert_2xfloat_var_idx(<4 x float>, float, i3 2) {
7263 ; CHECK: entry:
7264 ; CHECK-NEXT: %3 = insertelement <4 x float> %0, float %1, i32 %2
7265 ; CHECK-NEXT: ret <4 x float> %3
7266 ; CHECK-NEXT: }
7267
7268 define <2 x double> @insert_2xdouble_var_idx(<2 x double>, double, i32) {
7269 entry:
7270 %3 = insertelement <2 x double> %0, double %1, i32 %2
7271 ret <2 x double> %3
7272 }
7273 ; CHECK-LABEL: define <2 x double> @insert_2xdouble_var_idx(<2 x double>, double , i32) {
7274 ; CHECK: entry:
7275 ; CHECK-NEXT: %3 = insertelement <2 x double> %0, double %1, i32 %2
7276 ; CHECK-NEXT: ret <2 x double> %3
7277 ; CHECK-NEXT: }
7278
7279 define <4 x i8> @insert_4xi8_var_idx(<4 x i8>, i8, i32) {
7280 entry:
7281 %3 = insertelement <4 x i8> %0, i8 %1, i32 %2
7282 ret <4 x i8> %3
7283 }
7284 ; CHECK-LABEL: define <16 x i8> @insert_4xi8_var_idx(<16 x i8>, i8, i32) {
7285 ; CHECK: entry:
7286 ; CHECK-NEXT: %3 = insertelement <16 x i8> %0, i8 %1, i32 %2
7287 ; CHECK-NEXT: ret <16 x i8> %3
7288 ; CHECK-NEXT: }
7289
7290 define <4 x i16> @insert_4xi16_var_idx(<4 x i16>, i16, i32) {
7291 entry:
7292 %3 = insertelement <4 x i16> %0, i16 %1, i32 %2
7293 ret <4 x i16> %3
7294 }
7295 ; CHECK-LABEL: define <8 x i16> @insert_4xi16_var_idx(<8 x i16>, i16, i32) {
7296 ; CHECK: entry:
7297 ; CHECK-NEXT: %3 = insertelement <8 x i16> %0, i16 %1, i32 %2
7298 ; CHECK-NEXT: ret <8 x i16> %3
7299 ; CHECK-NEXT: }
7300
7301 define <4 x i32> @insert_4xi32_var_idx(<4 x i32>, i32, i32) {
7302 entry:
7303 %3 = insertelement <4 x i32> %0, i32 %1, i32 %2
7304 ret <4 x i32> %3
7305 }
7306 ; CHECK-LABEL: define <4 x i32> @insert_4xi32_var_idx(<4 x i32>, i32, i32) {
7307 ; CHECK: entry:
7308 ; CHECK-NEXT: %3 = insertelement <4 x i32> %0, i32 %1, i32 %2
7309 ; CHECK-NEXT: ret <4 x i32> %3
7310 ; CHECK-NEXT: }
7311
7312 define <4 x i64> @insert_4xi64_var_idx(<4 x i64>, i64, i32) {
7313 entry:
7314 %3 = insertelement <4 x i64> %0, i64 %1, i32 %2
7315 ret <4 x i64> %3
7316 }
7317 ; CHECK-LABEL: define <2 x i64> @insert_4xi64_var_idx(<2 x i64>* nocapture nonnu ll dereferenceable(16), <2 x i64>, <2 x i64>, i64, i32) {
7318 ; CHECK: entry:
7319 ; CHECK-NEXT: %5 = insertelement <2 x i64> %1, i64 %3, i32 0
7320 ; CHECK-NEXT: %6 = icmp eq i32 0, %4
7321 ; CHECK-NEXT: %7 = select i1 %6, <2 x i64> %5, <2 x i64> %1
7322 ; CHECK-NEXT: %8 = insertelement <2 x i64> %7, i64 %3, i32 1
7323 ; CHECK-NEXT: %9 = icmp eq i32 1, %4
7324 ; CHECK-NEXT: %10 = select i1 %9, <2 x i64> %8, <2 x i64> %7
7325 ; CHECK-NEXT: %11 = insertelement <2 x i64> %2, i64 %3, i32 0
7326 ; CHECK-NEXT: %12 = icmp eq i32 2, %4
7327 ; CHECK-NEXT: %13 = select i1 %12, <2 x i64> %11, <2 x i64> %2
7328 ; CHECK-NEXT: %14 = insertelement <2 x i64> %13, i64 %3, i32 1
7329 ; CHECK-NEXT: %15 = icmp eq i32 3, %4
7330 ; CHECK-NEXT: %16 = select i1 %15, <2 x i64> %14, <2 x i64> %13
7331 ; CHECK-NEXT: store <2 x i64> %16, <2 x i64>* %0, align 16
7332 ; CHECK-NEXT: ret <2 x i64> %10
7333 ; CHECK-NEXT: }
7334
7335 define <4 x i8*> @insert_4xi8ptr_var_idx(<4 x i8*>, i8*, i32) {
7336 entry:
7337 %3 = insertelement <4 x i8*> %0, i8* %1, i32 %2
7338 ret <4 x i8*> %3
7339 }
7340 ; CHECK-LABEL: define <4 x i8*> @insert_4xi8ptr_var_idx(<4 x i8*>, i8*, i32) {
7341 ; CHECK: entry:
7342 ; CHECK-NEXT: %3 = insertelement <4 x i8*> %0, i8* %1, i32 %2
7343 ; CHECK-NEXT: ret <4 x i8*> %3
7344 ; CHECK-NEXT: }
7345
7346 define <4 x float> @insert_4xfloat_var_idx(<4 x float>, float, i32) {
7347 entry:
7348 %3 = insertelement <4 x float> %0, float %1, i32 %2
7349 ret <4 x float> %3
7350 }
7351 ; CHECK-LABEL: define <4 x float> @insert_4xfloat_var_idx(<4 x float>, float, i3 2) {
7352 ; CHECK: entry:
7353 ; CHECK-NEXT: %3 = insertelement <4 x float> %0, float %1, i32 %2
7354 ; CHECK-NEXT: ret <4 x float> %3
7355 ; CHECK-NEXT: }
7356
7357 define <4 x double> @insert_4xdouble_var_idx(<4 x double>, double, i32) {
7358 entry:
7359 %3 = insertelement <4 x double> %0, double %1, i32 %2
7360 ret <4 x double> %3
7361 }
7362 ; CHECK-LABEL: define <2 x double> @insert_4xdouble_var_idx(<2 x double>* nocapt ure nonnull dereferenceable(16), <2 x double>, <2 x double>, double, i32) {
7363 ; CHECK: entry:
7364 ; CHECK-NEXT: %5 = insertelement <2 x double> %1, double %3, i32 0
7365 ; CHECK-NEXT: %6 = icmp eq i32 0, %4
7366 ; CHECK-NEXT: %7 = select i1 %6, <2 x double> %5, <2 x double> %1
7367 ; CHECK-NEXT: %8 = insertelement <2 x double> %7, double %3, i32 1
7368 ; CHECK-NEXT: %9 = icmp eq i32 1, %4
7369 ; CHECK-NEXT: %10 = select i1 %9, <2 x double> %8, <2 x double> %7
7370 ; CHECK-NEXT: %11 = insertelement <2 x double> %2, double %3, i32 0
7371 ; CHECK-NEXT: %12 = icmp eq i32 2, %4
7372 ; CHECK-NEXT: %13 = select i1 %12, <2 x double> %11, <2 x double> %2
7373 ; CHECK-NEXT: %14 = insertelement <2 x double> %13, double %3, i32 1
7374 ; CHECK-NEXT: %15 = icmp eq i32 3, %4
7375 ; CHECK-NEXT: %16 = select i1 %15, <2 x double> %14, <2 x double> %13
7376 ; CHECK-NEXT: store <2 x double> %16, <2 x double>* %0, align 16
7377 ; CHECK-NEXT: ret <2 x double> %10
7378 ; CHECK-NEXT: }
7379
7380 define <6 x i8> @insert_6xi8_var_idx(<6 x i8>, i8, i32) {
7381 entry:
7382 %3 = insertelement <6 x i8> %0, i8 %1, i32 %2
7383 ret <6 x i8> %3
7384 }
7385 ; CHECK-LABEL: define <16 x i8> @insert_6xi8_var_idx(<16 x i8>, i8, i32) {
7386 ; CHECK: entry:
7387 ; CHECK-NEXT: %3 = insertelement <16 x i8> %0, i8 %1, i32 %2
7388 ; CHECK-NEXT: ret <16 x i8> %3
7389 ; CHECK-NEXT: }
7390
7391 define <6 x i16> @insert_6xi16_var_idx(<6 x i16>, i16, i32) {
7392 entry:
7393 %3 = insertelement <6 x i16> %0, i16 %1, i32 %2
7394 ret <6 x i16> %3
7395 }
7396 ; CHECK-LABEL: define <8 x i16> @insert_6xi16_var_idx(<8 x i16>, i16, i32) {
7397 ; CHECK: entry:
7398 ; CHECK-NEXT: %3 = insertelement <8 x i16> %0, i16 %1, i32 %2
7399 ; CHECK-NEXT: ret <8 x i16> %3
7400 ; CHECK-NEXT: }
7401
7402 define <6 x i32> @insert_6xi32_var_idx(<6 x i32>, i32, i32) {
7403 entry:
7404 %3 = insertelement <6 x i32> %0, i32 %1, i32 %2
7405 ret <6 x i32> %3
7406 }
7407 ; CHECK-LABEL: define <4 x i32> @insert_6xi32_var_idx(<4 x i32>* nocapture nonnu ll dereferenceable(16), <4 x i32>, <4 x i32>, i32, i32) {
7408 ; CHECK: entry:
7409 ; CHECK-NEXT: %5 = insertelement <4 x i32> %1, i32 %3, i32 0
7410 ; CHECK-NEXT: %6 = icmp eq i32 0, %4
7411 ; CHECK-NEXT: %7 = select i1 %6, <4 x i32> %5, <4 x i32> %1
7412 ; CHECK-NEXT: %8 = insertelement <4 x i32> %7, i32 %3, i32 1
7413 ; CHECK-NEXT: %9 = icmp eq i32 1, %4
7414 ; CHECK-NEXT: %10 = select i1 %9, <4 x i32> %8, <4 x i32> %7
7415 ; CHECK-NEXT: %11 = insertelement <4 x i32> %10, i32 %3, i32 2
7416 ; CHECK-NEXT: %12 = icmp eq i32 2, %4
7417 ; CHECK-NEXT: %13 = select i1 %12, <4 x i32> %11, <4 x i32> %10
7418 ; CHECK-NEXT: %14 = insertelement <4 x i32> %13, i32 %3, i32 3
7419 ; CHECK-NEXT: %15 = icmp eq i32 3, %4
7420 ; CHECK-NEXT: %16 = select i1 %15, <4 x i32> %14, <4 x i32> %13
7421 ; CHECK-NEXT: %17 = insertelement <4 x i32> %2, i32 %3, i32 0
7422 ; CHECK-NEXT: %18 = icmp eq i32 4, %4
7423 ; CHECK-NEXT: %19 = select i1 %18, <4 x i32> %17, <4 x i32> %2
7424 ; CHECK-NEXT: %20 = insertelement <4 x i32> %19, i32 %3, i32 1
7425 ; CHECK-NEXT: %21 = icmp eq i32 5, %4
7426 ; CHECK-NEXT: %22 = select i1 %21, <4 x i32> %20, <4 x i32> %19
7427 ; CHECK-NEXT: store <4 x i32> %22, <4 x i32>* %0, align 16
7428 ; CHECK-NEXT: ret <4 x i32> %16
7429 ; CHECK-NEXT: }
7430
7431 define <6 x i64> @insert_6xi64_var_idx(<6 x i64>, i64, i32) {
7432 entry:
7433 %3 = insertelement <6 x i64> %0, i64 %1, i32 %2
7434 ret <6 x i64> %3
7435 }
7436 ; CHECK-LABEL: define <2 x i64> @insert_6xi64_var_idx(<2 x i64>* nocapture nonnu ll dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i 64>, <2 x i64>, <2 x i64>, i64, i32) {
7437 ; CHECK: entry:
7438 ; CHECK-NEXT: %7 = insertelement <2 x i64> %2, i64 %5, i32 0
7439 ; CHECK-NEXT: %8 = icmp eq i32 0, %6
7440 ; CHECK-NEXT: %9 = select i1 %8, <2 x i64> %7, <2 x i64> %2
7441 ; CHECK-NEXT: %10 = insertelement <2 x i64> %9, i64 %5, i32 1
7442 ; CHECK-NEXT: %11 = icmp eq i32 1, %6
7443 ; CHECK-NEXT: %12 = select i1 %11, <2 x i64> %10, <2 x i64> %9
7444 ; CHECK-NEXT: %13 = insertelement <2 x i64> %3, i64 %5, i32 0
7445 ; CHECK-NEXT: %14 = icmp eq i32 2, %6
7446 ; CHECK-NEXT: %15 = select i1 %14, <2 x i64> %13, <2 x i64> %3
7447 ; CHECK-NEXT: %16 = insertelement <2 x i64> %15, i64 %5, i32 1
7448 ; CHECK-NEXT: %17 = icmp eq i32 3, %6
7449 ; CHECK-NEXT: %18 = select i1 %17, <2 x i64> %16, <2 x i64> %15
7450 ; CHECK-NEXT: %19 = insertelement <2 x i64> %4, i64 %5, i32 0
7451 ; CHECK-NEXT: %20 = icmp eq i32 4, %6
7452 ; CHECK-NEXT: %21 = select i1 %20, <2 x i64> %19, <2 x i64> %4
7453 ; CHECK-NEXT: %22 = insertelement <2 x i64> %21, i64 %5, i32 1
7454 ; CHECK-NEXT: %23 = icmp eq i32 5, %6
7455 ; CHECK-NEXT: %24 = select i1 %23, <2 x i64> %22, <2 x i64> %21
7456 ; CHECK-NEXT: store <2 x i64> %18, <2 x i64>* %0, align 16
7457 ; CHECK-NEXT: store <2 x i64> %24, <2 x i64>* %1, align 16
7458 ; CHECK-NEXT: ret <2 x i64> %12
7459 ; CHECK-NEXT: }
7460
7461 define <6 x i8*> @insert_6xi8ptr_var_idx(<6 x i8*>, i8*, i32) {
7462 entry:
7463 %3 = insertelement <6 x i8*> %0, i8* %1, i32 %2
7464 ret <6 x i8*> %3
7465 }
7466 ; CHECK-LABEL: define <4 x i8*> @insert_6xi8ptr_var_idx(<4 x i8*>* nocapture non null dereferenceable(16), <4 x i8*>, <4 x i8*>, i8*, i32) {
7467 ; CHECK: entry:
7468 ; CHECK-NEXT: %5 = insertelement <4 x i8*> %1, i8* %3, i32 0
7469 ; CHECK-NEXT: %6 = icmp eq i32 0, %4
7470 ; CHECK-NEXT: %7 = select i1 %6, <4 x i8*> %5, <4 x i8*> %1
7471 ; CHECK-NEXT: %8 = insertelement <4 x i8*> %7, i8* %3, i32 1
7472 ; CHECK-NEXT: %9 = icmp eq i32 1, %4
7473 ; CHECK-NEXT: %10 = select i1 %9, <4 x i8*> %8, <4 x i8*> %7
7474 ; CHECK-NEXT: %11 = insertelement <4 x i8*> %10, i8* %3, i32 2
7475 ; CHECK-NEXT: %12 = icmp eq i32 2, %4
7476 ; CHECK-NEXT: %13 = select i1 %12, <4 x i8*> %11, <4 x i8*> %10
7477 ; CHECK-NEXT: %14 = insertelement <4 x i8*> %13, i8* %3, i32 3
7478 ; CHECK-NEXT: %15 = icmp eq i32 3, %4
7479 ; CHECK-NEXT: %16 = select i1 %15, <4 x i8*> %14, <4 x i8*> %13
7480 ; CHECK-NEXT: %17 = insertelement <4 x i8*> %2, i8* %3, i32 0
7481 ; CHECK-NEXT: %18 = icmp eq i32 4, %4
7482 ; CHECK-NEXT: %19 = select i1 %18, <4 x i8*> %17, <4 x i8*> %2
7483 ; CHECK-NEXT: %20 = insertelement <4 x i8*> %19, i8* %3, i32 1
7484 ; CHECK-NEXT: %21 = icmp eq i32 5, %4
7485 ; CHECK-NEXT: %22 = select i1 %21, <4 x i8*> %20, <4 x i8*> %19
7486 ; CHECK-NEXT: store <4 x i8*> %22, <4 x i8*>* %0, align 16
7487 ; CHECK-NEXT: ret <4 x i8*> %16
7488 ; CHECK-NEXT: }
7489
7490 define <6 x float> @insert_6xfloat_var_idx(<6 x float>, float, i32) {
7491 entry:
7492 %3 = insertelement <6 x float> %0, float %1, i32 %2
7493 ret <6 x float> %3
7494 }
7495 ; CHECK-LABEL: define <4 x float> @insert_6xfloat_var_idx(<4 x float>* nocapture nonnull dereferenceable(16), <4 x float>, <4 x float>, float, i32) {
7496 ; CHECK: entry:
7497 ; CHECK-NEXT: %5 = insertelement <4 x float> %1, float %3, i32 0
7498 ; CHECK-NEXT: %6 = icmp eq i32 0, %4
7499 ; CHECK-NEXT: %7 = select i1 %6, <4 x float> %5, <4 x float> %1
7500 ; CHECK-NEXT: %8 = insertelement <4 x float> %7, float %3, i32 1
7501 ; CHECK-NEXT: %9 = icmp eq i32 1, %4
7502 ; CHECK-NEXT: %10 = select i1 %9, <4 x float> %8, <4 x float> %7
7503 ; CHECK-NEXT: %11 = insertelement <4 x float> %10, float %3, i32 2
7504 ; CHECK-NEXT: %12 = icmp eq i32 2, %4
7505 ; CHECK-NEXT: %13 = select i1 %12, <4 x float> %11, <4 x float> %10
7506 ; CHECK-NEXT: %14 = insertelement <4 x float> %13, float %3, i32 3
7507 ; CHECK-NEXT: %15 = icmp eq i32 3, %4
7508 ; CHECK-NEXT: %16 = select i1 %15, <4 x float> %14, <4 x float> %13
7509 ; CHECK-NEXT: %17 = insertelement <4 x float> %2, float %3, i32 0
7510 ; CHECK-NEXT: %18 = icmp eq i32 4, %4
7511 ; CHECK-NEXT: %19 = select i1 %18, <4 x float> %17, <4 x float> %2
7512 ; CHECK-NEXT: %20 = insertelement <4 x float> %19, float %3, i32 1
7513 ; CHECK-NEXT: %21 = icmp eq i32 5, %4
7514 ; CHECK-NEXT: %22 = select i1 %21, <4 x float> %20, <4 x float> %19
7515 ; CHECK-NEXT: store <4 x float> %22, <4 x float>* %0, align 16
7516 ; CHECK-NEXT: ret <4 x float> %16
7517 ; CHECK-NEXT: }
7518
7519 define <6 x double> @insert_6xdouble_var_idx(<6 x double>, double, i32) {
7520 entry:
7521 %3 = insertelement <6 x double> %0, double %1, i32 %2
7522 ret <6 x double> %3
7523 }
7524 ; CHECK-LABEL: define <2 x double> @insert_6xdouble_var_idx(<2 x double>* nocapt ure nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable (16), <2 x double>, <2 x double>, <2 x double>, double, i32) {
7525 ; CHECK: entry:
7526 ; CHECK-NEXT: %7 = insertelement <2 x double> %2, double %5, i32 0
7527 ; CHECK-NEXT: %8 = icmp eq i32 0, %6
7528 ; CHECK-NEXT: %9 = select i1 %8, <2 x double> %7, <2 x double> %2
7529 ; CHECK-NEXT: %10 = insertelement <2 x double> %9, double %5, i32 1
7530 ; CHECK-NEXT: %11 = icmp eq i32 1, %6
7531 ; CHECK-NEXT: %12 = select i1 %11, <2 x double> %10, <2 x double> %9
7532 ; CHECK-NEXT: %13 = insertelement <2 x double> %3, double %5, i32 0
7533 ; CHECK-NEXT: %14 = icmp eq i32 2, %6
7534 ; CHECK-NEXT: %15 = select i1 %14, <2 x double> %13, <2 x double> %3
7535 ; CHECK-NEXT: %16 = insertelement <2 x double> %15, double %5, i32 1
7536 ; CHECK-NEXT: %17 = icmp eq i32 3, %6
7537 ; CHECK-NEXT: %18 = select i1 %17, <2 x double> %16, <2 x double> %15
7538 ; CHECK-NEXT: %19 = insertelement <2 x double> %4, double %5, i32 0
7539 ; CHECK-NEXT: %20 = icmp eq i32 4, %6
7540 ; CHECK-NEXT: %21 = select i1 %20, <2 x double> %19, <2 x double> %4
7541 ; CHECK-NEXT: %22 = insertelement <2 x double> %21, double %5, i32 1
7542 ; CHECK-NEXT: %23 = icmp eq i32 5, %6
7543 ; CHECK-NEXT: %24 = select i1 %23, <2 x double> %22, <2 x double> %21
7544 ; CHECK-NEXT: store <2 x double> %18, <2 x double>* %0, align 16
7545 ; CHECK-NEXT: store <2 x double> %24, <2 x double>* %1, align 16
7546 ; CHECK-NEXT: ret <2 x double> %12
7547 ; CHECK-NEXT: }
7548
7549 define <8 x i8> @insert_8xi8_var_idx(<8 x i8>, i8, i32) {
7550 entry:
7551 %3 = insertelement <8 x i8> %0, i8 %1, i32 %2
7552 ret <8 x i8> %3
7553 }
7554 ; CHECK-LABEL: define <16 x i8> @insert_8xi8_var_idx(<16 x i8>, i8, i32) {
7555 ; CHECK: entry:
7556 ; CHECK-NEXT: %3 = insertelement <16 x i8> %0, i8 %1, i32 %2
7557 ; CHECK-NEXT: ret <16 x i8> %3
7558 ; CHECK-NEXT: }
7559
7560 define <8 x i16> @insert_8xi16_var_idx(<8 x i16>, i16, i32) {
7561 entry:
7562 %3 = insertelement <8 x i16> %0, i16 %1, i32 %2
7563 ret <8 x i16> %3
7564 }
7565 ; CHECK-LABEL: define <8 x i16> @insert_8xi16_var_idx(<8 x i16>, i16, i32) {
7566 ; CHECK: entry:
7567 ; CHECK-NEXT: %3 = insertelement <8 x i16> %0, i16 %1, i32 %2
7568 ; CHECK-NEXT: ret <8 x i16> %3
7569 ; CHECK-NEXT: }
7570
7571 define <8 x i32> @insert_8xi32_var_idx(<8 x i32>, i32, i32) {
7572 entry:
7573 %3 = insertelement <8 x i32> %0, i32 %1, i32 %2
7574 ret <8 x i32> %3
7575 }
7576 ; CHECK-LABEL: define <4 x i32> @insert_8xi32_var_idx(<4 x i32>* nocapture nonnu ll dereferenceable(16), <4 x i32>, <4 x i32>, i32, i32) {
7577 ; CHECK: entry:
7578 ; CHECK-NEXT: %5 = insertelement <4 x i32> %1, i32 %3, i32 0
7579 ; CHECK-NEXT: %6 = icmp eq i32 0, %4
7580 ; CHECK-NEXT: %7 = select i1 %6, <4 x i32> %5, <4 x i32> %1
7581 ; CHECK-NEXT: %8 = insertelement <4 x i32> %7, i32 %3, i32 1
7582 ; CHECK-NEXT: %9 = icmp eq i32 1, %4
7583 ; CHECK-NEXT: %10 = select i1 %9, <4 x i32> %8, <4 x i32> %7
7584 ; CHECK-NEXT: %11 = insertelement <4 x i32> %10, i32 %3, i32 2
7585 ; CHECK-NEXT: %12 = icmp eq i32 2, %4
7586 ; CHECK-NEXT: %13 = select i1 %12, <4 x i32> %11, <4 x i32> %10
7587 ; CHECK-NEXT: %14 = insertelement <4 x i32> %13, i32 %3, i32 3
7588 ; CHECK-NEXT: %15 = icmp eq i32 3, %4
7589 ; CHECK-NEXT: %16 = select i1 %15, <4 x i32> %14, <4 x i32> %13
7590 ; CHECK-NEXT: %17 = insertelement <4 x i32> %2, i32 %3, i32 0
7591 ; CHECK-NEXT: %18 = icmp eq i32 4, %4
7592 ; CHECK-NEXT: %19 = select i1 %18, <4 x i32> %17, <4 x i32> %2
7593 ; CHECK-NEXT: %20 = insertelement <4 x i32> %19, i32 %3, i32 1
7594 ; CHECK-NEXT: %21 = icmp eq i32 5, %4
7595 ; CHECK-NEXT: %22 = select i1 %21, <4 x i32> %20, <4 x i32> %19
7596 ; CHECK-NEXT: %23 = insertelement <4 x i32> %22, i32 %3, i32 2
7597 ; CHECK-NEXT: %24 = icmp eq i32 6, %4
7598 ; CHECK-NEXT: %25 = select i1 %24, <4 x i32> %23, <4 x i32> %22
7599 ; CHECK-NEXT: %26 = insertelement <4 x i32> %25, i32 %3, i32 3
7600 ; CHECK-NEXT: %27 = icmp eq i32 7, %4
7601 ; CHECK-NEXT: %28 = select i1 %27, <4 x i32> %26, <4 x i32> %25
7602 ; CHECK-NEXT: store <4 x i32> %28, <4 x i32>* %0, align 16
7603 ; CHECK-NEXT: ret <4 x i32> %16
7604 ; CHECK-NEXT: }
7605
7606 define <8 x i64> @insert_8xi64_var_idx(<8 x i64>, i64, i32) {
7607 entry:
7608 %3 = insertelement <8 x i64> %0, i64 %1, i32 %2
7609 ret <8 x i64> %3
7610 }
7611 ; CHECK-LABEL: define <2 x i64> @insert_8xi64_var_idx(<2 x i64>* nocapture nonnu ll dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i 64>* nocapture nonnull dereferenceable(16), <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, i64, i32) {
7612 ; CHECK: entry:
7613 ; CHECK-NEXT: %9 = insertelement <2 x i64> %3, i64 %7, i32 0
7614 ; CHECK-NEXT: %10 = icmp eq i32 0, %8
7615 ; CHECK-NEXT: %11 = select i1 %10, <2 x i64> %9, <2 x i64> %3
7616 ; CHECK-NEXT: %12 = insertelement <2 x i64> %11, i64 %7, i32 1
7617 ; CHECK-NEXT: %13 = icmp eq i32 1, %8
7618 ; CHECK-NEXT: %14 = select i1 %13, <2 x i64> %12, <2 x i64> %11
7619 ; CHECK-NEXT: %15 = insertelement <2 x i64> %4, i64 %7, i32 0
7620 ; CHECK-NEXT: %16 = icmp eq i32 2, %8
7621 ; CHECK-NEXT: %17 = select i1 %16, <2 x i64> %15, <2 x i64> %4
7622 ; CHECK-NEXT: %18 = insertelement <2 x i64> %17, i64 %7, i32 1
7623 ; CHECK-NEXT: %19 = icmp eq i32 3, %8
7624 ; CHECK-NEXT: %20 = select i1 %19, <2 x i64> %18, <2 x i64> %17
7625 ; CHECK-NEXT: %21 = insertelement <2 x i64> %5, i64 %7, i32 0
7626 ; CHECK-NEXT: %22 = icmp eq i32 4, %8
7627 ; CHECK-NEXT: %23 = select i1 %22, <2 x i64> %21, <2 x i64> %5
7628 ; CHECK-NEXT: %24 = insertelement <2 x i64> %23, i64 %7, i32 1
7629 ; CHECK-NEXT: %25 = icmp eq i32 5, %8
7630 ; CHECK-NEXT: %26 = select i1 %25, <2 x i64> %24, <2 x i64> %23
7631 ; CHECK-NEXT: %27 = insertelement <2 x i64> %6, i64 %7, i32 0
7632 ; CHECK-NEXT: %28 = icmp eq i32 6, %8
7633 ; CHECK-NEXT: %29 = select i1 %28, <2 x i64> %27, <2 x i64> %6
7634 ; CHECK-NEXT: %30 = insertelement <2 x i64> %29, i64 %7, i32 1
7635 ; CHECK-NEXT: %31 = icmp eq i32 7, %8
7636 ; CHECK-NEXT: %32 = select i1 %31, <2 x i64> %30, <2 x i64> %29
7637 ; CHECK-NEXT: store <2 x i64> %20, <2 x i64>* %0, align 16
7638 ; CHECK-NEXT: store <2 x i64> %26, <2 x i64>* %1, align 16
7639 ; CHECK-NEXT: store <2 x i64> %32, <2 x i64>* %2, align 16
7640 ; CHECK-NEXT: ret <2 x i64> %14
7641 ; CHECK-NEXT: }
7642
7643 define <8 x i8*> @insert_8xi8ptr_var_idx(<8 x i8*>, i8*, i32) {
7644 entry:
7645 %3 = insertelement <8 x i8*> %0, i8* %1, i32 %2
7646 ret <8 x i8*> %3
7647 }
7648 ; CHECK-LABEL: define <4 x i8*> @insert_8xi8ptr_var_idx(<4 x i8*>* nocapture non null dereferenceable(16), <4 x i8*>, <4 x i8*>, i8*, i32) {
7649 ; CHECK: entry:
7650 ; CHECK-NEXT: %5 = insertelement <4 x i8*> %1, i8* %3, i32 0
7651 ; CHECK-NEXT: %6 = icmp eq i32 0, %4
7652 ; CHECK-NEXT: %7 = select i1 %6, <4 x i8*> %5, <4 x i8*> %1
7653 ; CHECK-NEXT: %8 = insertelement <4 x i8*> %7, i8* %3, i32 1
7654 ; CHECK-NEXT: %9 = icmp eq i32 1, %4
7655 ; CHECK-NEXT: %10 = select i1 %9, <4 x i8*> %8, <4 x i8*> %7
7656 ; CHECK-NEXT: %11 = insertelement <4 x i8*> %10, i8* %3, i32 2
7657 ; CHECK-NEXT: %12 = icmp eq i32 2, %4
7658 ; CHECK-NEXT: %13 = select i1 %12, <4 x i8*> %11, <4 x i8*> %10
7659 ; CHECK-NEXT: %14 = insertelement <4 x i8*> %13, i8* %3, i32 3
7660 ; CHECK-NEXT: %15 = icmp eq i32 3, %4
7661 ; CHECK-NEXT: %16 = select i1 %15, <4 x i8*> %14, <4 x i8*> %13
7662 ; CHECK-NEXT: %17 = insertelement <4 x i8*> %2, i8* %3, i32 0
7663 ; CHECK-NEXT: %18 = icmp eq i32 4, %4
7664 ; CHECK-NEXT: %19 = select i1 %18, <4 x i8*> %17, <4 x i8*> %2
7665 ; CHECK-NEXT: %20 = insertelement <4 x i8*> %19, i8* %3, i32 1
7666 ; CHECK-NEXT: %21 = icmp eq i32 5, %4
7667 ; CHECK-NEXT: %22 = select i1 %21, <4 x i8*> %20, <4 x i8*> %19
7668 ; CHECK-NEXT: %23 = insertelement <4 x i8*> %22, i8* %3, i32 2
7669 ; CHECK-NEXT: %24 = icmp eq i32 6, %4
7670 ; CHECK-NEXT: %25 = select i1 %24, <4 x i8*> %23, <4 x i8*> %22
7671 ; CHECK-NEXT: %26 = insertelement <4 x i8*> %25, i8* %3, i32 3
7672 ; CHECK-NEXT: %27 = icmp eq i32 7, %4
7673 ; CHECK-NEXT: %28 = select i1 %27, <4 x i8*> %26, <4 x i8*> %25
7674 ; CHECK-NEXT: store <4 x i8*> %28, <4 x i8*>* %0, align 16
7675 ; CHECK-NEXT: ret <4 x i8*> %16
7676 ; CHECK-NEXT: }
7677
7678 define <8 x float> @insert_8xfloat_var_idx(<8 x float>, float, i32) {
7679 entry:
7680 %3 = insertelement <8 x float> %0, float %1, i32 %2
7681 ret <8 x float> %3
7682 }
7683 ; CHECK-LABEL: define <4 x float> @insert_8xfloat_var_idx(<4 x float>* nocapture nonnull dereferenceable(16), <4 x float>, <4 x float>, float, i32) {
7684 ; CHECK: entry:
7685 ; CHECK-NEXT: %5 = insertelement <4 x float> %1, float %3, i32 0
7686 ; CHECK-NEXT: %6 = icmp eq i32 0, %4
7687 ; CHECK-NEXT: %7 = select i1 %6, <4 x float> %5, <4 x float> %1
7688 ; CHECK-NEXT: %8 = insertelement <4 x float> %7, float %3, i32 1
7689 ; CHECK-NEXT: %9 = icmp eq i32 1, %4
7690 ; CHECK-NEXT: %10 = select i1 %9, <4 x float> %8, <4 x float> %7
7691 ; CHECK-NEXT: %11 = insertelement <4 x float> %10, float %3, i32 2
7692 ; CHECK-NEXT: %12 = icmp eq i32 2, %4
7693 ; CHECK-NEXT: %13 = select i1 %12, <4 x float> %11, <4 x float> %10
7694 ; CHECK-NEXT: %14 = insertelement <4 x float> %13, float %3, i32 3
7695 ; CHECK-NEXT: %15 = icmp eq i32 3, %4
7696 ; CHECK-NEXT: %16 = select i1 %15, <4 x float> %14, <4 x float> %13
7697 ; CHECK-NEXT: %17 = insertelement <4 x float> %2, float %3, i32 0
7698 ; CHECK-NEXT: %18 = icmp eq i32 4, %4
7699 ; CHECK-NEXT: %19 = select i1 %18, <4 x float> %17, <4 x float> %2
7700 ; CHECK-NEXT: %20 = insertelement <4 x float> %19, float %3, i32 1
7701 ; CHECK-NEXT: %21 = icmp eq i32 5, %4
7702 ; CHECK-NEXT: %22 = select i1 %21, <4 x float> %20, <4 x float> %19
7703 ; CHECK-NEXT: %23 = insertelement <4 x float> %22, float %3, i32 2
7704 ; CHECK-NEXT: %24 = icmp eq i32 6, %4
7705 ; CHECK-NEXT: %25 = select i1 %24, <4 x float> %23, <4 x float> %22
7706 ; CHECK-NEXT: %26 = insertelement <4 x float> %25, float %3, i32 3
7707 ; CHECK-NEXT: %27 = icmp eq i32 7, %4
7708 ; CHECK-NEXT: %28 = select i1 %27, <4 x float> %26, <4 x float> %25
7709 ; CHECK-NEXT: store <4 x float> %28, <4 x float>* %0, align 16
7710 ; CHECK-NEXT: ret <4 x float> %16
7711 ; CHECK-NEXT: }
7712
7713 define <8 x double> @insert_8xdouble_var_idx(<8 x double>, double, i32) {
7714 entry:
7715 %3 = insertelement <8 x double> %0, double %1, i32 %2
7716 ret <8 x double> %3
7717 }
7718 ; CHECK-LABEL: define <2 x double> @insert_8xdouble_var_idx(<2 x double>* nocapt ure nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable (16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x do uble>, <2 x double>, <2 x double>, double, i32) {
7719 ; CHECK: entry:
7720 ; CHECK-NEXT: %9 = insertelement <2 x double> %3, double %7, i32 0
7721 ; CHECK-NEXT: %10 = icmp eq i32 0, %8
7722 ; CHECK-NEXT: %11 = select i1 %10, <2 x double> %9, <2 x double> %3
7723 ; CHECK-NEXT: %12 = insertelement <2 x double> %11, double %7, i32 1
7724 ; CHECK-NEXT: %13 = icmp eq i32 1, %8
7725 ; CHECK-NEXT: %14 = select i1 %13, <2 x double> %12, <2 x double> %11
7726 ; CHECK-NEXT: %15 = insertelement <2 x double> %4, double %7, i32 0
7727 ; CHECK-NEXT: %16 = icmp eq i32 2, %8
7728 ; CHECK-NEXT: %17 = select i1 %16, <2 x double> %15, <2 x double> %4
7729 ; CHECK-NEXT: %18 = insertelement <2 x double> %17, double %7, i32 1
7730 ; CHECK-NEXT: %19 = icmp eq i32 3, %8
7731 ; CHECK-NEXT: %20 = select i1 %19, <2 x double> %18, <2 x double> %17
7732 ; CHECK-NEXT: %21 = insertelement <2 x double> %5, double %7, i32 0
7733 ; CHECK-NEXT: %22 = icmp eq i32 4, %8
7734 ; CHECK-NEXT: %23 = select i1 %22, <2 x double> %21, <2 x double> %5
7735 ; CHECK-NEXT: %24 = insertelement <2 x double> %23, double %7, i32 1
7736 ; CHECK-NEXT: %25 = icmp eq i32 5, %8
7737 ; CHECK-NEXT: %26 = select i1 %25, <2 x double> %24, <2 x double> %23
7738 ; CHECK-NEXT: %27 = insertelement <2 x double> %6, double %7, i32 0
7739 ; CHECK-NEXT: %28 = icmp eq i32 6, %8
7740 ; CHECK-NEXT: %29 = select i1 %28, <2 x double> %27, <2 x double> %6
7741 ; CHECK-NEXT: %30 = insertelement <2 x double> %29, double %7, i32 1
7742 ; CHECK-NEXT: %31 = icmp eq i32 7, %8
7743 ; CHECK-NEXT: %32 = select i1 %31, <2 x double> %30, <2 x double> %29
7744 ; CHECK-NEXT: store <2 x double> %20, <2 x double>* %0, align 16
7745 ; CHECK-NEXT: store <2 x double> %26, <2 x double>* %1, align 16
7746 ; CHECK-NEXT: store <2 x double> %32, <2 x double>* %2, align 16
7747 ; CHECK-NEXT: ret <2 x double> %14
7748 ; CHECK-NEXT: }
7749
7750 define <12 x i8> @insert_12xi8_var_idx(<12 x i8>, i8, i32) {
7751 entry:
7752 %3 = insertelement <12 x i8> %0, i8 %1, i32 %2
7753 ret <12 x i8> %3
7754 }
7755 ; CHECK-LABEL: define <16 x i8> @insert_12xi8_var_idx(<16 x i8>, i8, i32) {
7756 ; CHECK: entry:
7757 ; CHECK-NEXT: %3 = insertelement <16 x i8> %0, i8 %1, i32 %2
7758 ; CHECK-NEXT: ret <16 x i8> %3
7759 ; CHECK-NEXT: }
7760
7761 define <12 x i16> @insert_12xi16_var_idx(<12 x i16>, i16, i32) {
7762 entry:
7763 %3 = insertelement <12 x i16> %0, i16 %1, i32 %2
7764 ret <12 x i16> %3
7765 }
7766 ; CHECK-LABEL: define <8 x i16> @insert_12xi16_var_idx(<8 x i16>* nocapture nonn ull dereferenceable(16), <8 x i16>, <8 x i16>, i16, i32) {
7767 ; CHECK: entry:
7768 ; CHECK-NEXT: %5 = insertelement <8 x i16> %1, i16 %3, i32 0
7769 ; CHECK-NEXT: %6 = icmp eq i32 0, %4
7770 ; CHECK-NEXT: %7 = select i1 %6, <8 x i16> %5, <8 x i16> %1
7771 ; CHECK-NEXT: %8 = insertelement <8 x i16> %7, i16 %3, i32 1
7772 ; CHECK-NEXT: %9 = icmp eq i32 1, %4
7773 ; CHECK-NEXT: %10 = select i1 %9, <8 x i16> %8, <8 x i16> %7
7774 ; CHECK-NEXT: %11 = insertelement <8 x i16> %10, i16 %3, i32 2
7775 ; CHECK-NEXT: %12 = icmp eq i32 2, %4
7776 ; CHECK-NEXT: %13 = select i1 %12, <8 x i16> %11, <8 x i16> %10
7777 ; CHECK-NEXT: %14 = insertelement <8 x i16> %13, i16 %3, i32 3
7778 ; CHECK-NEXT: %15 = icmp eq i32 3, %4
7779 ; CHECK-NEXT: %16 = select i1 %15, <8 x i16> %14, <8 x i16> %13
7780 ; CHECK-NEXT: %17 = insertelement <8 x i16> %16, i16 %3, i32 4
7781 ; CHECK-NEXT: %18 = icmp eq i32 4, %4
7782 ; CHECK-NEXT: %19 = select i1 %18, <8 x i16> %17, <8 x i16> %16
7783 ; CHECK-NEXT: %20 = insertelement <8 x i16> %19, i16 %3, i32 5
7784 ; CHECK-NEXT: %21 = icmp eq i32 5, %4
7785 ; CHECK-NEXT: %22 = select i1 %21, <8 x i16> %20, <8 x i16> %19
7786 ; CHECK-NEXT: %23 = insertelement <8 x i16> %22, i16 %3, i32 6
7787 ; CHECK-NEXT: %24 = icmp eq i32 6, %4
7788 ; CHECK-NEXT: %25 = select i1 %24, <8 x i16> %23, <8 x i16> %22
7789 ; CHECK-NEXT: %26 = insertelement <8 x i16> %25, i16 %3, i32 7
7790 ; CHECK-NEXT: %27 = icmp eq i32 7, %4
7791 ; CHECK-NEXT: %28 = select i1 %27, <8 x i16> %26, <8 x i16> %25
7792 ; CHECK-NEXT: %29 = insertelement <8 x i16> %2, i16 %3, i32 0
7793 ; CHECK-NEXT: %30 = icmp eq i32 8, %4
7794 ; CHECK-NEXT: %31 = select i1 %30, <8 x i16> %29, <8 x i16> %2
7795 ; CHECK-NEXT: %32 = insertelement <8 x i16> %31, i16 %3, i32 1
7796 ; CHECK-NEXT: %33 = icmp eq i32 9, %4
7797 ; CHECK-NEXT: %34 = select i1 %33, <8 x i16> %32, <8 x i16> %31
7798 ; CHECK-NEXT: %35 = insertelement <8 x i16> %34, i16 %3, i32 2
7799 ; CHECK-NEXT: %36 = icmp eq i32 10, %4
7800 ; CHECK-NEXT: %37 = select i1 %36, <8 x i16> %35, <8 x i16> %34
7801 ; CHECK-NEXT: %38 = insertelement <8 x i16> %37, i16 %3, i32 3
7802 ; CHECK-NEXT: %39 = icmp eq i32 11, %4
7803 ; CHECK-NEXT: %40 = select i1 %39, <8 x i16> %38, <8 x i16> %37
7804 ; CHECK-NEXT: store <8 x i16> %40, <8 x i16>* %0, align 16
7805 ; CHECK-NEXT: ret <8 x i16> %28
7806 ; CHECK-NEXT: }
7807
7808 define <12 x i32> @insert_12xi32_var_idx(<12 x i32>, i32, i32) {
7809 entry:
7810 %3 = insertelement <12 x i32> %0, i32 %1, i32 %2
7811 ret <12 x i32> %3
7812 }
7813 ; CHECK-LABEL: define <4 x i32> @insert_12xi32_var_idx(<4 x i32>* nocapture nonn ull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, i32, i32) {
7814 ; CHECK: entry:
7815 ; CHECK-NEXT: %7 = insertelement <4 x i32> %2, i32 %5, i32 0
7816 ; CHECK-NEXT: %8 = icmp eq i32 0, %6
7817 ; CHECK-NEXT: %9 = select i1 %8, <4 x i32> %7, <4 x i32> %2
7818 ; CHECK-NEXT: %10 = insertelement <4 x i32> %9, i32 %5, i32 1
7819 ; CHECK-NEXT: %11 = icmp eq i32 1, %6
7820 ; CHECK-NEXT: %12 = select i1 %11, <4 x i32> %10, <4 x i32> %9
7821 ; CHECK-NEXT: %13 = insertelement <4 x i32> %12, i32 %5, i32 2
7822 ; CHECK-NEXT: %14 = icmp eq i32 2, %6
7823 ; CHECK-NEXT: %15 = select i1 %14, <4 x i32> %13, <4 x i32> %12
7824 ; CHECK-NEXT: %16 = insertelement <4 x i32> %15, i32 %5, i32 3
7825 ; CHECK-NEXT: %17 = icmp eq i32 3, %6
7826 ; CHECK-NEXT: %18 = select i1 %17, <4 x i32> %16, <4 x i32> %15
7827 ; CHECK-NEXT: %19 = insertelement <4 x i32> %3, i32 %5, i32 0
7828 ; CHECK-NEXT: %20 = icmp eq i32 4, %6
7829 ; CHECK-NEXT: %21 = select i1 %20, <4 x i32> %19, <4 x i32> %3
7830 ; CHECK-NEXT: %22 = insertelement <4 x i32> %21, i32 %5, i32 1
7831 ; CHECK-NEXT: %23 = icmp eq i32 5, %6
7832 ; CHECK-NEXT: %24 = select i1 %23, <4 x i32> %22, <4 x i32> %21
7833 ; CHECK-NEXT: %25 = insertelement <4 x i32> %24, i32 %5, i32 2
7834 ; CHECK-NEXT: %26 = icmp eq i32 6, %6
7835 ; CHECK-NEXT: %27 = select i1 %26, <4 x i32> %25, <4 x i32> %24
7836 ; CHECK-NEXT: %28 = insertelement <4 x i32> %27, i32 %5, i32 3
7837 ; CHECK-NEXT: %29 = icmp eq i32 7, %6
7838 ; CHECK-NEXT: %30 = select i1 %29, <4 x i32> %28, <4 x i32> %27
7839 ; CHECK-NEXT: %31 = insertelement <4 x i32> %4, i32 %5, i32 0
7840 ; CHECK-NEXT: %32 = icmp eq i32 8, %6
7841 ; CHECK-NEXT: %33 = select i1 %32, <4 x i32> %31, <4 x i32> %4
7842 ; CHECK-NEXT: %34 = insertelement <4 x i32> %33, i32 %5, i32 1
7843 ; CHECK-NEXT: %35 = icmp eq i32 9, %6
7844 ; CHECK-NEXT: %36 = select i1 %35, <4 x i32> %34, <4 x i32> %33
7845 ; CHECK-NEXT: %37 = insertelement <4 x i32> %36, i32 %5, i32 2
7846 ; CHECK-NEXT: %38 = icmp eq i32 10, %6
7847 ; CHECK-NEXT: %39 = select i1 %38, <4 x i32> %37, <4 x i32> %36
7848 ; CHECK-NEXT: %40 = insertelement <4 x i32> %39, i32 %5, i32 3
7849 ; CHECK-NEXT: %41 = icmp eq i32 11, %6
7850 ; CHECK-NEXT: %42 = select i1 %41, <4 x i32> %40, <4 x i32> %39
7851 ; CHECK-NEXT: store <4 x i32> %30, <4 x i32>* %0, align 16
7852 ; CHECK-NEXT: store <4 x i32> %42, <4 x i32>* %1, align 16
7853 ; CHECK-NEXT: ret <4 x i32> %18
7854 ; CHECK-NEXT: }
7855
7856 define <12 x i64> @insert_12xi64_var_idx(<12 x i64>, i64, i32) {
7857 entry:
7858 %3 = insertelement <12 x i64> %0, i64 %1, i32 %2
7859 ret <12 x i64> %3
7860 }
7861 ; CHECK-LABEL: define <2 x i64> @insert_12xi64_var_idx(<2 x i64>* nocapture nonn ull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull derefe renceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, i64, i32) {
7862 ; CHECK: entry:
7863 ; CHECK-NEXT: %13 = insertelement <2 x i64> %5, i64 %11, i32 0
7864 ; CHECK-NEXT: %14 = icmp eq i32 0, %12
7865 ; CHECK-NEXT: %15 = select i1 %14, <2 x i64> %13, <2 x i64> %5
7866 ; CHECK-NEXT: %16 = insertelement <2 x i64> %15, i64 %11, i32 1
7867 ; CHECK-NEXT: %17 = icmp eq i32 1, %12
7868 ; CHECK-NEXT: %18 = select i1 %17, <2 x i64> %16, <2 x i64> %15
7869 ; CHECK-NEXT: %19 = insertelement <2 x i64> %6, i64 %11, i32 0
7870 ; CHECK-NEXT: %20 = icmp eq i32 2, %12
7871 ; CHECK-NEXT: %21 = select i1 %20, <2 x i64> %19, <2 x i64> %6
7872 ; CHECK-NEXT: %22 = insertelement <2 x i64> %21, i64 %11, i32 1
7873 ; CHECK-NEXT: %23 = icmp eq i32 3, %12
7874 ; CHECK-NEXT: %24 = select i1 %23, <2 x i64> %22, <2 x i64> %21
7875 ; CHECK-NEXT: %25 = insertelement <2 x i64> %7, i64 %11, i32 0
7876 ; CHECK-NEXT: %26 = icmp eq i32 4, %12
7877 ; CHECK-NEXT: %27 = select i1 %26, <2 x i64> %25, <2 x i64> %7
7878 ; CHECK-NEXT: %28 = insertelement <2 x i64> %27, i64 %11, i32 1
7879 ; CHECK-NEXT: %29 = icmp eq i32 5, %12
7880 ; CHECK-NEXT: %30 = select i1 %29, <2 x i64> %28, <2 x i64> %27
7881 ; CHECK-NEXT: %31 = insertelement <2 x i64> %8, i64 %11, i32 0
7882 ; CHECK-NEXT: %32 = icmp eq i32 6, %12
7883 ; CHECK-NEXT: %33 = select i1 %32, <2 x i64> %31, <2 x i64> %8
7884 ; CHECK-NEXT: %34 = insertelement <2 x i64> %33, i64 %11, i32 1
7885 ; CHECK-NEXT: %35 = icmp eq i32 7, %12
7886 ; CHECK-NEXT: %36 = select i1 %35, <2 x i64> %34, <2 x i64> %33
7887 ; CHECK-NEXT: %37 = insertelement <2 x i64> %9, i64 %11, i32 0
7888 ; CHECK-NEXT: %38 = icmp eq i32 8, %12
7889 ; CHECK-NEXT: %39 = select i1 %38, <2 x i64> %37, <2 x i64> %9
7890 ; CHECK-NEXT: %40 = insertelement <2 x i64> %39, i64 %11, i32 1
7891 ; CHECK-NEXT: %41 = icmp eq i32 9, %12
7892 ; CHECK-NEXT: %42 = select i1 %41, <2 x i64> %40, <2 x i64> %39
7893 ; CHECK-NEXT: %43 = insertelement <2 x i64> %10, i64 %11, i32 0
7894 ; CHECK-NEXT: %44 = icmp eq i32 10, %12
7895 ; CHECK-NEXT: %45 = select i1 %44, <2 x i64> %43, <2 x i64> %10
7896 ; CHECK-NEXT: %46 = insertelement <2 x i64> %45, i64 %11, i32 1
7897 ; CHECK-NEXT: %47 = icmp eq i32 11, %12
7898 ; CHECK-NEXT: %48 = select i1 %47, <2 x i64> %46, <2 x i64> %45
7899 ; CHECK-NEXT: store <2 x i64> %24, <2 x i64>* %0, align 16
7900 ; CHECK-NEXT: store <2 x i64> %30, <2 x i64>* %1, align 16
7901 ; CHECK-NEXT: store <2 x i64> %36, <2 x i64>* %2, align 16
7902 ; CHECK-NEXT: store <2 x i64> %42, <2 x i64>* %3, align 16
7903 ; CHECK-NEXT: store <2 x i64> %48, <2 x i64>* %4, align 16
7904 ; CHECK-NEXT: ret <2 x i64> %18
7905 ; CHECK-NEXT: }
7906
7907 define <12 x i8*> @insert_12xi8ptr_var_idx(<12 x i8*>, i8*, i32) {
7908 entry:
7909 %3 = insertelement <12 x i8*> %0, i8* %1, i32 %2
7910 ret <12 x i8*> %3
7911 }
7912 ; CHECK-LABEL: define <4 x i8*> @insert_12xi8ptr_var_idx(<4 x i8*>* nocapture no nnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>, <4 x i8*>, <4 x i8*>, i8*, i32) {
7913 ; CHECK: entry:
7914 ; CHECK-NEXT: %7 = insertelement <4 x i8*> %2, i8* %5, i32 0
7915 ; CHECK-NEXT: %8 = icmp eq i32 0, %6
7916 ; CHECK-NEXT: %9 = select i1 %8, <4 x i8*> %7, <4 x i8*> %2
7917 ; CHECK-NEXT: %10 = insertelement <4 x i8*> %9, i8* %5, i32 1
7918 ; CHECK-NEXT: %11 = icmp eq i32 1, %6
7919 ; CHECK-NEXT: %12 = select i1 %11, <4 x i8*> %10, <4 x i8*> %9
7920 ; CHECK-NEXT: %13 = insertelement <4 x i8*> %12, i8* %5, i32 2
7921 ; CHECK-NEXT: %14 = icmp eq i32 2, %6
7922 ; CHECK-NEXT: %15 = select i1 %14, <4 x i8*> %13, <4 x i8*> %12
7923 ; CHECK-NEXT: %16 = insertelement <4 x i8*> %15, i8* %5, i32 3
7924 ; CHECK-NEXT: %17 = icmp eq i32 3, %6
7925 ; CHECK-NEXT: %18 = select i1 %17, <4 x i8*> %16, <4 x i8*> %15
7926 ; CHECK-NEXT: %19 = insertelement <4 x i8*> %3, i8* %5, i32 0
7927 ; CHECK-NEXT: %20 = icmp eq i32 4, %6
7928 ; CHECK-NEXT: %21 = select i1 %20, <4 x i8*> %19, <4 x i8*> %3
7929 ; CHECK-NEXT: %22 = insertelement <4 x i8*> %21, i8* %5, i32 1
7930 ; CHECK-NEXT: %23 = icmp eq i32 5, %6
7931 ; CHECK-NEXT: %24 = select i1 %23, <4 x i8*> %22, <4 x i8*> %21
7932 ; CHECK-NEXT: %25 = insertelement <4 x i8*> %24, i8* %5, i32 2
7933 ; CHECK-NEXT: %26 = icmp eq i32 6, %6
7934 ; CHECK-NEXT: %27 = select i1 %26, <4 x i8*> %25, <4 x i8*> %24
7935 ; CHECK-NEXT: %28 = insertelement <4 x i8*> %27, i8* %5, i32 3
7936 ; CHECK-NEXT: %29 = icmp eq i32 7, %6
7937 ; CHECK-NEXT: %30 = select i1 %29, <4 x i8*> %28, <4 x i8*> %27
7938 ; CHECK-NEXT: %31 = insertelement <4 x i8*> %4, i8* %5, i32 0
7939 ; CHECK-NEXT: %32 = icmp eq i32 8, %6
7940 ; CHECK-NEXT: %33 = select i1 %32, <4 x i8*> %31, <4 x i8*> %4
7941 ; CHECK-NEXT: %34 = insertelement <4 x i8*> %33, i8* %5, i32 1
7942 ; CHECK-NEXT: %35 = icmp eq i32 9, %6
7943 ; CHECK-NEXT: %36 = select i1 %35, <4 x i8*> %34, <4 x i8*> %33
7944 ; CHECK-NEXT: %37 = insertelement <4 x i8*> %36, i8* %5, i32 2
7945 ; CHECK-NEXT: %38 = icmp eq i32 10, %6
7946 ; CHECK-NEXT: %39 = select i1 %38, <4 x i8*> %37, <4 x i8*> %36
7947 ; CHECK-NEXT: %40 = insertelement <4 x i8*> %39, i8* %5, i32 3
7948 ; CHECK-NEXT: %41 = icmp eq i32 11, %6
7949 ; CHECK-NEXT: %42 = select i1 %41, <4 x i8*> %40, <4 x i8*> %39
7950 ; CHECK-NEXT: store <4 x i8*> %30, <4 x i8*>* %0, align 16
7951 ; CHECK-NEXT: store <4 x i8*> %42, <4 x i8*>* %1, align 16
7952 ; CHECK-NEXT: ret <4 x i8*> %18
7953 ; CHECK-NEXT: }
7954
7955 define <12 x float> @insert_12xfloat_var_idx(<12 x float>, float, i32) {
7956 entry:
7957 %3 = insertelement <12 x float> %0, float %1, i32 %2
7958 ret <12 x float> %3
7959 }
7960 ; CHECK-LABEL: define <4 x float> @insert_12xfloat_var_idx(<4 x float>* nocaptur e nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16 ), <4 x float>, <4 x float>, <4 x float>, float, i32) {
7961 ; CHECK: entry:
7962 ; CHECK-NEXT: %7 = insertelement <4 x float> %2, float %5, i32 0
7963 ; CHECK-NEXT: %8 = icmp eq i32 0, %6
7964 ; CHECK-NEXT: %9 = select i1 %8, <4 x float> %7, <4 x float> %2
7965 ; CHECK-NEXT: %10 = insertelement <4 x float> %9, float %5, i32 1
7966 ; CHECK-NEXT: %11 = icmp eq i32 1, %6
7967 ; CHECK-NEXT: %12 = select i1 %11, <4 x float> %10, <4 x float> %9
7968 ; CHECK-NEXT: %13 = insertelement <4 x float> %12, float %5, i32 2
7969 ; CHECK-NEXT: %14 = icmp eq i32 2, %6
7970 ; CHECK-NEXT: %15 = select i1 %14, <4 x float> %13, <4 x float> %12
7971 ; CHECK-NEXT: %16 = insertelement <4 x float> %15, float %5, i32 3
7972 ; CHECK-NEXT: %17 = icmp eq i32 3, %6
7973 ; CHECK-NEXT: %18 = select i1 %17, <4 x float> %16, <4 x float> %15
7974 ; CHECK-NEXT: %19 = insertelement <4 x float> %3, float %5, i32 0
7975 ; CHECK-NEXT: %20 = icmp eq i32 4, %6
7976 ; CHECK-NEXT: %21 = select i1 %20, <4 x float> %19, <4 x float> %3
7977 ; CHECK-NEXT: %22 = insertelement <4 x float> %21, float %5, i32 1
7978 ; CHECK-NEXT: %23 = icmp eq i32 5, %6
7979 ; CHECK-NEXT: %24 = select i1 %23, <4 x float> %22, <4 x float> %21
7980 ; CHECK-NEXT: %25 = insertelement <4 x float> %24, float %5, i32 2
7981 ; CHECK-NEXT: %26 = icmp eq i32 6, %6
7982 ; CHECK-NEXT: %27 = select i1 %26, <4 x float> %25, <4 x float> %24
7983 ; CHECK-NEXT: %28 = insertelement <4 x float> %27, float %5, i32 3
7984 ; CHECK-NEXT: %29 = icmp eq i32 7, %6
7985 ; CHECK-NEXT: %30 = select i1 %29, <4 x float> %28, <4 x float> %27
7986 ; CHECK-NEXT: %31 = insertelement <4 x float> %4, float %5, i32 0
7987 ; CHECK-NEXT: %32 = icmp eq i32 8, %6
7988 ; CHECK-NEXT: %33 = select i1 %32, <4 x float> %31, <4 x float> %4
7989 ; CHECK-NEXT: %34 = insertelement <4 x float> %33, float %5, i32 1
7990 ; CHECK-NEXT: %35 = icmp eq i32 9, %6
7991 ; CHECK-NEXT: %36 = select i1 %35, <4 x float> %34, <4 x float> %33
7992 ; CHECK-NEXT: %37 = insertelement <4 x float> %36, float %5, i32 2
7993 ; CHECK-NEXT: %38 = icmp eq i32 10, %6
7994 ; CHECK-NEXT: %39 = select i1 %38, <4 x float> %37, <4 x float> %36
7995 ; CHECK-NEXT: %40 = insertelement <4 x float> %39, float %5, i32 3
7996 ; CHECK-NEXT: %41 = icmp eq i32 11, %6
7997 ; CHECK-NEXT: %42 = select i1 %41, <4 x float> %40, <4 x float> %39
7998 ; CHECK-NEXT: store <4 x float> %30, <4 x float>* %0, align 16
7999 ; CHECK-NEXT: store <4 x float> %42, <4 x float>* %1, align 16
8000 ; CHECK-NEXT: ret <4 x float> %18
8001 ; CHECK-NEXT: }
8002
8003 define <12 x double> @insert_12xdouble_var_idx(<12 x double>, double, i32) {
8004 entry:
8005 %3 = insertelement <12 x double> %0, double %1, i32 %2
8006 ret <12 x double> %3
8007 }
8008 ; CHECK-LABEL: define <2 x double> @insert_12xdouble_var_idx(<2 x double>* nocap ture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceabl e(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapt ure nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable (16), <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, double, i32) {
8009 ; CHECK: entry:
8010 ; CHECK-NEXT: %13 = insertelement <2 x double> %5, double %11, i32 0
8011 ; CHECK-NEXT: %14 = icmp eq i32 0, %12
8012 ; CHECK-NEXT: %15 = select i1 %14, <2 x double> %13, <2 x double> %5
8013 ; CHECK-NEXT: %16 = insertelement <2 x double> %15, double %11, i32 1
8014 ; CHECK-NEXT: %17 = icmp eq i32 1, %12
8015 ; CHECK-NEXT: %18 = select i1 %17, <2 x double> %16, <2 x double> %15
8016 ; CHECK-NEXT: %19 = insertelement <2 x double> %6, double %11, i32 0
8017 ; CHECK-NEXT: %20 = icmp eq i32 2, %12
8018 ; CHECK-NEXT: %21 = select i1 %20, <2 x double> %19, <2 x double> %6
8019 ; CHECK-NEXT: %22 = insertelement <2 x double> %21, double %11, i32 1
8020 ; CHECK-NEXT: %23 = icmp eq i32 3, %12
8021 ; CHECK-NEXT: %24 = select i1 %23, <2 x double> %22, <2 x double> %21
8022 ; CHECK-NEXT: %25 = insertelement <2 x double> %7, double %11, i32 0
8023 ; CHECK-NEXT: %26 = icmp eq i32 4, %12
8024 ; CHECK-NEXT: %27 = select i1 %26, <2 x double> %25, <2 x double> %7
8025 ; CHECK-NEXT: %28 = insertelement <2 x double> %27, double %11, i32 1
8026 ; CHECK-NEXT: %29 = icmp eq i32 5, %12
8027 ; CHECK-NEXT: %30 = select i1 %29, <2 x double> %28, <2 x double> %27
8028 ; CHECK-NEXT: %31 = insertelement <2 x double> %8, double %11, i32 0
8029 ; CHECK-NEXT: %32 = icmp eq i32 6, %12
8030 ; CHECK-NEXT: %33 = select i1 %32, <2 x double> %31, <2 x double> %8
8031 ; CHECK-NEXT: %34 = insertelement <2 x double> %33, double %11, i32 1
8032 ; CHECK-NEXT: %35 = icmp eq i32 7, %12
8033 ; CHECK-NEXT: %36 = select i1 %35, <2 x double> %34, <2 x double> %33
8034 ; CHECK-NEXT: %37 = insertelement <2 x double> %9, double %11, i32 0
8035 ; CHECK-NEXT: %38 = icmp eq i32 8, %12
8036 ; CHECK-NEXT: %39 = select i1 %38, <2 x double> %37, <2 x double> %9
8037 ; CHECK-NEXT: %40 = insertelement <2 x double> %39, double %11, i32 1
8038 ; CHECK-NEXT: %41 = icmp eq i32 9, %12
8039 ; CHECK-NEXT: %42 = select i1 %41, <2 x double> %40, <2 x double> %39
8040 ; CHECK-NEXT: %43 = insertelement <2 x double> %10, double %11, i32 0
8041 ; CHECK-NEXT: %44 = icmp eq i32 10, %12
8042 ; CHECK-NEXT: %45 = select i1 %44, <2 x double> %43, <2 x double> %10
8043 ; CHECK-NEXT: %46 = insertelement <2 x double> %45, double %11, i32 1
8044 ; CHECK-NEXT: %47 = icmp eq i32 11, %12
8045 ; CHECK-NEXT: %48 = select i1 %47, <2 x double> %46, <2 x double> %45
8046 ; CHECK-NEXT: store <2 x double> %24, <2 x double>* %0, align 16
8047 ; CHECK-NEXT: store <2 x double> %30, <2 x double>* %1, align 16
8048 ; CHECK-NEXT: store <2 x double> %36, <2 x double>* %2, align 16
8049 ; CHECK-NEXT: store <2 x double> %42, <2 x double>* %3, align 16
8050 ; CHECK-NEXT: store <2 x double> %48, <2 x double>* %4, align 16
8051 ; CHECK-NEXT: ret <2 x double> %18
8052 ; CHECK-NEXT: }
8053
8054 define <16 x i8> @insert_16xi8_var_idx(<16 x i8>, i8, i32) {
8055 entry:
8056 %3 = insertelement <16 x i8> %0, i8 %1, i32 %2
8057 ret <16 x i8> %3
8058 }
8059 ; CHECK-LABEL: define <16 x i8> @insert_16xi8_var_idx(<16 x i8>, i8, i32) {
8060 ; CHECK: entry:
8061 ; CHECK-NEXT: %3 = insertelement <16 x i8> %0, i8 %1, i32 %2
8062 ; CHECK-NEXT: ret <16 x i8> %3
8063 ; CHECK-NEXT: }
8064
8065 define <16 x i16> @insert_16xi16_var_idx(<16 x i16>, i16, i32) {
8066 entry:
8067 %3 = insertelement <16 x i16> %0, i16 %1, i32 %2
8068 ret <16 x i16> %3
8069 }
8070 ; CHECK-LABEL: define <8 x i16> @insert_16xi16_var_idx(<8 x i16>* nocapture nonn ull dereferenceable(16), <8 x i16>, <8 x i16>, i16, i32) {
8071 ; CHECK: entry:
8072 ; CHECK-NEXT: %5 = insertelement <8 x i16> %1, i16 %3, i32 0
8073 ; CHECK-NEXT: %6 = icmp eq i32 0, %4
8074 ; CHECK-NEXT: %7 = select i1 %6, <8 x i16> %5, <8 x i16> %1
8075 ; CHECK-NEXT: %8 = insertelement <8 x i16> %7, i16 %3, i32 1
8076 ; CHECK-NEXT: %9 = icmp eq i32 1, %4
8077 ; CHECK-NEXT: %10 = select i1 %9, <8 x i16> %8, <8 x i16> %7
8078 ; CHECK-NEXT: %11 = insertelement <8 x i16> %10, i16 %3, i32 2
8079 ; CHECK-NEXT: %12 = icmp eq i32 2, %4
8080 ; CHECK-NEXT: %13 = select i1 %12, <8 x i16> %11, <8 x i16> %10
8081 ; CHECK-NEXT: %14 = insertelement <8 x i16> %13, i16 %3, i32 3
8082 ; CHECK-NEXT: %15 = icmp eq i32 3, %4
8083 ; CHECK-NEXT: %16 = select i1 %15, <8 x i16> %14, <8 x i16> %13
8084 ; CHECK-NEXT: %17 = insertelement <8 x i16> %16, i16 %3, i32 4
8085 ; CHECK-NEXT: %18 = icmp eq i32 4, %4
8086 ; CHECK-NEXT: %19 = select i1 %18, <8 x i16> %17, <8 x i16> %16
8087 ; CHECK-NEXT: %20 = insertelement <8 x i16> %19, i16 %3, i32 5
8088 ; CHECK-NEXT: %21 = icmp eq i32 5, %4
8089 ; CHECK-NEXT: %22 = select i1 %21, <8 x i16> %20, <8 x i16> %19
8090 ; CHECK-NEXT: %23 = insertelement <8 x i16> %22, i16 %3, i32 6
8091 ; CHECK-NEXT: %24 = icmp eq i32 6, %4
8092 ; CHECK-NEXT: %25 = select i1 %24, <8 x i16> %23, <8 x i16> %22
8093 ; CHECK-NEXT: %26 = insertelement <8 x i16> %25, i16 %3, i32 7
8094 ; CHECK-NEXT: %27 = icmp eq i32 7, %4
8095 ; CHECK-NEXT: %28 = select i1 %27, <8 x i16> %26, <8 x i16> %25
8096 ; CHECK-NEXT: %29 = insertelement <8 x i16> %2, i16 %3, i32 0
8097 ; CHECK-NEXT: %30 = icmp eq i32 8, %4
8098 ; CHECK-NEXT: %31 = select i1 %30, <8 x i16> %29, <8 x i16> %2
8099 ; CHECK-NEXT: %32 = insertelement <8 x i16> %31, i16 %3, i32 1
8100 ; CHECK-NEXT: %33 = icmp eq i32 9, %4
8101 ; CHECK-NEXT: %34 = select i1 %33, <8 x i16> %32, <8 x i16> %31
8102 ; CHECK-NEXT: %35 = insertelement <8 x i16> %34, i16 %3, i32 2
8103 ; CHECK-NEXT: %36 = icmp eq i32 10, %4
8104 ; CHECK-NEXT: %37 = select i1 %36, <8 x i16> %35, <8 x i16> %34
8105 ; CHECK-NEXT: %38 = insertelement <8 x i16> %37, i16 %3, i32 3
8106 ; CHECK-NEXT: %39 = icmp eq i32 11, %4
8107 ; CHECK-NEXT: %40 = select i1 %39, <8 x i16> %38, <8 x i16> %37
8108 ; CHECK-NEXT: %41 = insertelement <8 x i16> %40, i16 %3, i32 4
8109 ; CHECK-NEXT: %42 = icmp eq i32 12, %4
8110 ; CHECK-NEXT: %43 = select i1 %42, <8 x i16> %41, <8 x i16> %40
8111 ; CHECK-NEXT: %44 = insertelement <8 x i16> %43, i16 %3, i32 5
8112 ; CHECK-NEXT: %45 = icmp eq i32 13, %4
8113 ; CHECK-NEXT: %46 = select i1 %45, <8 x i16> %44, <8 x i16> %43
8114 ; CHECK-NEXT: %47 = insertelement <8 x i16> %46, i16 %3, i32 6
8115 ; CHECK-NEXT: %48 = icmp eq i32 14, %4
8116 ; CHECK-NEXT: %49 = select i1 %48, <8 x i16> %47, <8 x i16> %46
8117 ; CHECK-NEXT: %50 = insertelement <8 x i16> %49, i16 %3, i32 7
8118 ; CHECK-NEXT: %51 = icmp eq i32 15, %4
8119 ; CHECK-NEXT: %52 = select i1 %51, <8 x i16> %50, <8 x i16> %49
8120 ; CHECK-NEXT: store <8 x i16> %52, <8 x i16>* %0, align 16
8121 ; CHECK-NEXT: ret <8 x i16> %28
8122 ; CHECK-NEXT: }
8123
8124 define <16 x i32> @insert_16xi32_var_idx(<16 x i32>, i32, i32) {
8125 entry:
8126 %3 = insertelement <16 x i32> %0, i32 %1, i32 %2
8127 ret <16 x i32> %3
8128 }
8129 ; CHECK-LABEL: define <4 x i32> @insert_16xi32_var_idx(<4 x i32>* nocapture nonn ull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, i32, i32) {
8130 ; CHECK: entry:
8131 ; CHECK-NEXT: %9 = insertelement <4 x i32> %3, i32 %7, i32 0
8132 ; CHECK-NEXT: %10 = icmp eq i32 0, %8
8133 ; CHECK-NEXT: %11 = select i1 %10, <4 x i32> %9, <4 x i32> %3
8134 ; CHECK-NEXT: %12 = insertelement <4 x i32> %11, i32 %7, i32 1
8135 ; CHECK-NEXT: %13 = icmp eq i32 1, %8
8136 ; CHECK-NEXT: %14 = select i1 %13, <4 x i32> %12, <4 x i32> %11
8137 ; CHECK-NEXT: %15 = insertelement <4 x i32> %14, i32 %7, i32 2
8138 ; CHECK-NEXT: %16 = icmp eq i32 2, %8
8139 ; CHECK-NEXT: %17 = select i1 %16, <4 x i32> %15, <4 x i32> %14
8140 ; CHECK-NEXT: %18 = insertelement <4 x i32> %17, i32 %7, i32 3
8141 ; CHECK-NEXT: %19 = icmp eq i32 3, %8
8142 ; CHECK-NEXT: %20 = select i1 %19, <4 x i32> %18, <4 x i32> %17
8143 ; CHECK-NEXT: %21 = insertelement <4 x i32> %4, i32 %7, i32 0
8144 ; CHECK-NEXT: %22 = icmp eq i32 4, %8
8145 ; CHECK-NEXT: %23 = select i1 %22, <4 x i32> %21, <4 x i32> %4
8146 ; CHECK-NEXT: %24 = insertelement <4 x i32> %23, i32 %7, i32 1
8147 ; CHECK-NEXT: %25 = icmp eq i32 5, %8
8148 ; CHECK-NEXT: %26 = select i1 %25, <4 x i32> %24, <4 x i32> %23
8149 ; CHECK-NEXT: %27 = insertelement <4 x i32> %26, i32 %7, i32 2
8150 ; CHECK-NEXT: %28 = icmp eq i32 6, %8
8151 ; CHECK-NEXT: %29 = select i1 %28, <4 x i32> %27, <4 x i32> %26
8152 ; CHECK-NEXT: %30 = insertelement <4 x i32> %29, i32 %7, i32 3
8153 ; CHECK-NEXT: %31 = icmp eq i32 7, %8
8154 ; CHECK-NEXT: %32 = select i1 %31, <4 x i32> %30, <4 x i32> %29
8155 ; CHECK-NEXT: %33 = insertelement <4 x i32> %5, i32 %7, i32 0
8156 ; CHECK-NEXT: %34 = icmp eq i32 8, %8
8157 ; CHECK-NEXT: %35 = select i1 %34, <4 x i32> %33, <4 x i32> %5
8158 ; CHECK-NEXT: %36 = insertelement <4 x i32> %35, i32 %7, i32 1
8159 ; CHECK-NEXT: %37 = icmp eq i32 9, %8
8160 ; CHECK-NEXT: %38 = select i1 %37, <4 x i32> %36, <4 x i32> %35
8161 ; CHECK-NEXT: %39 = insertelement <4 x i32> %38, i32 %7, i32 2
8162 ; CHECK-NEXT: %40 = icmp eq i32 10, %8
8163 ; CHECK-NEXT: %41 = select i1 %40, <4 x i32> %39, <4 x i32> %38
8164 ; CHECK-NEXT: %42 = insertelement <4 x i32> %41, i32 %7, i32 3
8165 ; CHECK-NEXT: %43 = icmp eq i32 11, %8
8166 ; CHECK-NEXT: %44 = select i1 %43, <4 x i32> %42, <4 x i32> %41
8167 ; CHECK-NEXT: %45 = insertelement <4 x i32> %6, i32 %7, i32 0
8168 ; CHECK-NEXT: %46 = icmp eq i32 12, %8
8169 ; CHECK-NEXT: %47 = select i1 %46, <4 x i32> %45, <4 x i32> %6
8170 ; CHECK-NEXT: %48 = insertelement <4 x i32> %47, i32 %7, i32 1
8171 ; CHECK-NEXT: %49 = icmp eq i32 13, %8
8172 ; CHECK-NEXT: %50 = select i1 %49, <4 x i32> %48, <4 x i32> %47
8173 ; CHECK-NEXT: %51 = insertelement <4 x i32> %50, i32 %7, i32 2
8174 ; CHECK-NEXT: %52 = icmp eq i32 14, %8
8175 ; CHECK-NEXT: %53 = select i1 %52, <4 x i32> %51, <4 x i32> %50
8176 ; CHECK-NEXT: %54 = insertelement <4 x i32> %53, i32 %7, i32 3
8177 ; CHECK-NEXT: %55 = icmp eq i32 15, %8
8178 ; CHECK-NEXT: %56 = select i1 %55, <4 x i32> %54, <4 x i32> %53
8179 ; CHECK-NEXT: store <4 x i32> %32, <4 x i32>* %0, align 16
8180 ; CHECK-NEXT: store <4 x i32> %44, <4 x i32>* %1, align 16
8181 ; CHECK-NEXT: store <4 x i32> %56, <4 x i32>* %2, align 16
8182 ; CHECK-NEXT: ret <4 x i32> %20
8183 ; CHECK-NEXT: }
8184
8185 define <16 x i64> @insert_16xi64_var_idx(<16 x i64>, i64, i32) {
8186 entry:
8187 %3 = insertelement <16 x i64> %0, i64 %1, i32 %2
8188 ret <16 x i64> %3
8189 }
8190 ; CHECK-LABEL: define <2 x i64> @insert_16xi64_var_idx(<2 x i64>* nocapture nonn ull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull derefe renceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* noca pture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable( 16), <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> , <2 x i64>, i64, i32) {
8191 ; CHECK: entry:
8192 ; CHECK-NEXT: %17 = insertelement <2 x i64> %7, i64 %15, i32 0
8193 ; CHECK-NEXT: %18 = icmp eq i32 0, %16
8194 ; CHECK-NEXT: %19 = select i1 %18, <2 x i64> %17, <2 x i64> %7
8195 ; CHECK-NEXT: %20 = insertelement <2 x i64> %19, i64 %15, i32 1
8196 ; CHECK-NEXT: %21 = icmp eq i32 1, %16
8197 ; CHECK-NEXT: %22 = select i1 %21, <2 x i64> %20, <2 x i64> %19
8198 ; CHECK-NEXT: %23 = insertelement <2 x i64> %8, i64 %15, i32 0
8199 ; CHECK-NEXT: %24 = icmp eq i32 2, %16
8200 ; CHECK-NEXT: %25 = select i1 %24, <2 x i64> %23, <2 x i64> %8
8201 ; CHECK-NEXT: %26 = insertelement <2 x i64> %25, i64 %15, i32 1
8202 ; CHECK-NEXT: %27 = icmp eq i32 3, %16
8203 ; CHECK-NEXT: %28 = select i1 %27, <2 x i64> %26, <2 x i64> %25
8204 ; CHECK-NEXT: %29 = insertelement <2 x i64> %9, i64 %15, i32 0
8205 ; CHECK-NEXT: %30 = icmp eq i32 4, %16
8206 ; CHECK-NEXT: %31 = select i1 %30, <2 x i64> %29, <2 x i64> %9
8207 ; CHECK-NEXT: %32 = insertelement <2 x i64> %31, i64 %15, i32 1
8208 ; CHECK-NEXT: %33 = icmp eq i32 5, %16
8209 ; CHECK-NEXT: %34 = select i1 %33, <2 x i64> %32, <2 x i64> %31
8210 ; CHECK-NEXT: %35 = insertelement <2 x i64> %10, i64 %15, i32 0
8211 ; CHECK-NEXT: %36 = icmp eq i32 6, %16
8212 ; CHECK-NEXT: %37 = select i1 %36, <2 x i64> %35, <2 x i64> %10
8213 ; CHECK-NEXT: %38 = insertelement <2 x i64> %37, i64 %15, i32 1
8214 ; CHECK-NEXT: %39 = icmp eq i32 7, %16
8215 ; CHECK-NEXT: %40 = select i1 %39, <2 x i64> %38, <2 x i64> %37
8216 ; CHECK-NEXT: %41 = insertelement <2 x i64> %11, i64 %15, i32 0
8217 ; CHECK-NEXT: %42 = icmp eq i32 8, %16
8218 ; CHECK-NEXT: %43 = select i1 %42, <2 x i64> %41, <2 x i64> %11
8219 ; CHECK-NEXT: %44 = insertelement <2 x i64> %43, i64 %15, i32 1
8220 ; CHECK-NEXT: %45 = icmp eq i32 9, %16
8221 ; CHECK-NEXT: %46 = select i1 %45, <2 x i64> %44, <2 x i64> %43
8222 ; CHECK-NEXT: %47 = insertelement <2 x i64> %12, i64 %15, i32 0
8223 ; CHECK-NEXT: %48 = icmp eq i32 10, %16
8224 ; CHECK-NEXT: %49 = select i1 %48, <2 x i64> %47, <2 x i64> %12
8225 ; CHECK-NEXT: %50 = insertelement <2 x i64> %49, i64 %15, i32 1
8226 ; CHECK-NEXT: %51 = icmp eq i32 11, %16
8227 ; CHECK-NEXT: %52 = select i1 %51, <2 x i64> %50, <2 x i64> %49
8228 ; CHECK-NEXT: %53 = insertelement <2 x i64> %13, i64 %15, i32 0
8229 ; CHECK-NEXT: %54 = icmp eq i32 12, %16
8230 ; CHECK-NEXT: %55 = select i1 %54, <2 x i64> %53, <2 x i64> %13
8231 ; CHECK-NEXT: %56 = insertelement <2 x i64> %55, i64 %15, i32 1
8232 ; CHECK-NEXT: %57 = icmp eq i32 13, %16
8233 ; CHECK-NEXT: %58 = select i1 %57, <2 x i64> %56, <2 x i64> %55
8234 ; CHECK-NEXT: %59 = insertelement <2 x i64> %14, i64 %15, i32 0
8235 ; CHECK-NEXT: %60 = icmp eq i32 14, %16
8236 ; CHECK-NEXT: %61 = select i1 %60, <2 x i64> %59, <2 x i64> %14
8237 ; CHECK-NEXT: %62 = insertelement <2 x i64> %61, i64 %15, i32 1
8238 ; CHECK-NEXT: %63 = icmp eq i32 15, %16
8239 ; CHECK-NEXT: %64 = select i1 %63, <2 x i64> %62, <2 x i64> %61
8240 ; CHECK-NEXT: store <2 x i64> %28, <2 x i64>* %0, align 16
8241 ; CHECK-NEXT: store <2 x i64> %34, <2 x i64>* %1, align 16
8242 ; CHECK-NEXT: store <2 x i64> %40, <2 x i64>* %2, align 16
8243 ; CHECK-NEXT: store <2 x i64> %46, <2 x i64>* %3, align 16
8244 ; CHECK-NEXT: store <2 x i64> %52, <2 x i64>* %4, align 16
8245 ; CHECK-NEXT: store <2 x i64> %58, <2 x i64>* %5, align 16
8246 ; CHECK-NEXT: store <2 x i64> %64, <2 x i64>* %6, align 16
8247 ; CHECK-NEXT: ret <2 x i64> %22
8248 ; CHECK-NEXT: }
8249
8250 define <16 x i8*> @insert_16xi8ptr_var_idx(<16 x i8*>, i8*, i32) {
8251 entry:
8252 %3 = insertelement <16 x i8*> %0, i8* %1, i32 %2
8253 ret <16 x i8*> %3
8254 }
8255 ; CHECK-LABEL: define <4 x i8*> @insert_16xi8ptr_var_idx(<4 x i8*>* nocapture no nnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>, <4 x i8*>, <4 x i8*>, <4 x i8*>, i8*, i32) {
8256 ; CHECK: entry:
8257 ; CHECK-NEXT: %9 = insertelement <4 x i8*> %3, i8* %7, i32 0
8258 ; CHECK-NEXT: %10 = icmp eq i32 0, %8
8259 ; CHECK-NEXT: %11 = select i1 %10, <4 x i8*> %9, <4 x i8*> %3
8260 ; CHECK-NEXT: %12 = insertelement <4 x i8*> %11, i8* %7, i32 1
8261 ; CHECK-NEXT: %13 = icmp eq i32 1, %8
8262 ; CHECK-NEXT: %14 = select i1 %13, <4 x i8*> %12, <4 x i8*> %11
8263 ; CHECK-NEXT: %15 = insertelement <4 x i8*> %14, i8* %7, i32 2
8264 ; CHECK-NEXT: %16 = icmp eq i32 2, %8
8265 ; CHECK-NEXT: %17 = select i1 %16, <4 x i8*> %15, <4 x i8*> %14
8266 ; CHECK-NEXT: %18 = insertelement <4 x i8*> %17, i8* %7, i32 3
8267 ; CHECK-NEXT: %19 = icmp eq i32 3, %8
8268 ; CHECK-NEXT: %20 = select i1 %19, <4 x i8*> %18, <4 x i8*> %17
8269 ; CHECK-NEXT: %21 = insertelement <4 x i8*> %4, i8* %7, i32 0
8270 ; CHECK-NEXT: %22 = icmp eq i32 4, %8
8271 ; CHECK-NEXT: %23 = select i1 %22, <4 x i8*> %21, <4 x i8*> %4
8272 ; CHECK-NEXT: %24 = insertelement <4 x i8*> %23, i8* %7, i32 1
8273 ; CHECK-NEXT: %25 = icmp eq i32 5, %8
8274 ; CHECK-NEXT: %26 = select i1 %25, <4 x i8*> %24, <4 x i8*> %23
8275 ; CHECK-NEXT: %27 = insertelement <4 x i8*> %26, i8* %7, i32 2
8276 ; CHECK-NEXT: %28 = icmp eq i32 6, %8
8277 ; CHECK-NEXT: %29 = select i1 %28, <4 x i8*> %27, <4 x i8*> %26
8278 ; CHECK-NEXT: %30 = insertelement <4 x i8*> %29, i8* %7, i32 3
8279 ; CHECK-NEXT: %31 = icmp eq i32 7, %8
8280 ; CHECK-NEXT: %32 = select i1 %31, <4 x i8*> %30, <4 x i8*> %29
8281 ; CHECK-NEXT: %33 = insertelement <4 x i8*> %5, i8* %7, i32 0
8282 ; CHECK-NEXT: %34 = icmp eq i32 8, %8
8283 ; CHECK-NEXT: %35 = select i1 %34, <4 x i8*> %33, <4 x i8*> %5
8284 ; CHECK-NEXT: %36 = insertelement <4 x i8*> %35, i8* %7, i32 1
8285 ; CHECK-NEXT: %37 = icmp eq i32 9, %8
8286 ; CHECK-NEXT: %38 = select i1 %37, <4 x i8*> %36, <4 x i8*> %35
8287 ; CHECK-NEXT: %39 = insertelement <4 x i8*> %38, i8* %7, i32 2
8288 ; CHECK-NEXT: %40 = icmp eq i32 10, %8
8289 ; CHECK-NEXT: %41 = select i1 %40, <4 x i8*> %39, <4 x i8*> %38
8290 ; CHECK-NEXT: %42 = insertelement <4 x i8*> %41, i8* %7, i32 3
8291 ; CHECK-NEXT: %43 = icmp eq i32 11, %8
8292 ; CHECK-NEXT: %44 = select i1 %43, <4 x i8*> %42, <4 x i8*> %41
8293 ; CHECK-NEXT: %45 = insertelement <4 x i8*> %6, i8* %7, i32 0
8294 ; CHECK-NEXT: %46 = icmp eq i32 12, %8
8295 ; CHECK-NEXT: %47 = select i1 %46, <4 x i8*> %45, <4 x i8*> %6
8296 ; CHECK-NEXT: %48 = insertelement <4 x i8*> %47, i8* %7, i32 1
8297 ; CHECK-NEXT: %49 = icmp eq i32 13, %8
8298 ; CHECK-NEXT: %50 = select i1 %49, <4 x i8*> %48, <4 x i8*> %47
8299 ; CHECK-NEXT: %51 = insertelement <4 x i8*> %50, i8* %7, i32 2
8300 ; CHECK-NEXT: %52 = icmp eq i32 14, %8
8301 ; CHECK-NEXT: %53 = select i1 %52, <4 x i8*> %51, <4 x i8*> %50
8302 ; CHECK-NEXT: %54 = insertelement <4 x i8*> %53, i8* %7, i32 3
8303 ; CHECK-NEXT: %55 = icmp eq i32 15, %8
8304 ; CHECK-NEXT: %56 = select i1 %55, <4 x i8*> %54, <4 x i8*> %53
8305 ; CHECK-NEXT: store <4 x i8*> %32, <4 x i8*>* %0, align 16
8306 ; CHECK-NEXT: store <4 x i8*> %44, <4 x i8*>* %1, align 16
8307 ; CHECK-NEXT: store <4 x i8*> %56, <4 x i8*>* %2, align 16
8308 ; CHECK-NEXT: ret <4 x i8*> %20
8309 ; CHECK-NEXT: }
8310
8311 define <16 x float> @insert_16xfloat_var_idx(<16 x float>, float, i32) {
8312 entry:
8313 %3 = insertelement <16 x float> %0, float %1, i32 %2
8314 ret <16 x float> %3
8315 }
8316 ; CHECK-LABEL: define <4 x float> @insert_16xfloat_var_idx(<4 x float>* nocaptur e nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16 ), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>, <4 x float>, <4 x float>, <4 x float>, float, i32) {
8317 ; CHECK: entry:
8318 ; CHECK-NEXT: %9 = insertelement <4 x float> %3, float %7, i32 0
8319 ; CHECK-NEXT: %10 = icmp eq i32 0, %8
8320 ; CHECK-NEXT: %11 = select i1 %10, <4 x float> %9, <4 x float> %3
8321 ; CHECK-NEXT: %12 = insertelement <4 x float> %11, float %7, i32 1
8322 ; CHECK-NEXT: %13 = icmp eq i32 1, %8
8323 ; CHECK-NEXT: %14 = select i1 %13, <4 x float> %12, <4 x float> %11
8324 ; CHECK-NEXT: %15 = insertelement <4 x float> %14, float %7, i32 2
8325 ; CHECK-NEXT: %16 = icmp eq i32 2, %8
8326 ; CHECK-NEXT: %17 = select i1 %16, <4 x float> %15, <4 x float> %14
8327 ; CHECK-NEXT: %18 = insertelement <4 x float> %17, float %7, i32 3
8328 ; CHECK-NEXT: %19 = icmp eq i32 3, %8
8329 ; CHECK-NEXT: %20 = select i1 %19, <4 x float> %18, <4 x float> %17
8330 ; CHECK-NEXT: %21 = insertelement <4 x float> %4, float %7, i32 0
8331 ; CHECK-NEXT: %22 = icmp eq i32 4, %8
8332 ; CHECK-NEXT: %23 = select i1 %22, <4 x float> %21, <4 x float> %4
8333 ; CHECK-NEXT: %24 = insertelement <4 x float> %23, float %7, i32 1
8334 ; CHECK-NEXT: %25 = icmp eq i32 5, %8
8335 ; CHECK-NEXT: %26 = select i1 %25, <4 x float> %24, <4 x float> %23
8336 ; CHECK-NEXT: %27 = insertelement <4 x float> %26, float %7, i32 2
8337 ; CHECK-NEXT: %28 = icmp eq i32 6, %8
8338 ; CHECK-NEXT: %29 = select i1 %28, <4 x float> %27, <4 x float> %26
8339 ; CHECK-NEXT: %30 = insertelement <4 x float> %29, float %7, i32 3
8340 ; CHECK-NEXT: %31 = icmp eq i32 7, %8
8341 ; CHECK-NEXT: %32 = select i1 %31, <4 x float> %30, <4 x float> %29
8342 ; CHECK-NEXT: %33 = insertelement <4 x float> %5, float %7, i32 0
8343 ; CHECK-NEXT: %34 = icmp eq i32 8, %8
8344 ; CHECK-NEXT: %35 = select i1 %34, <4 x float> %33, <4 x float> %5
8345 ; CHECK-NEXT: %36 = insertelement <4 x float> %35, float %7, i32 1
8346 ; CHECK-NEXT: %37 = icmp eq i32 9, %8
8347 ; CHECK-NEXT: %38 = select i1 %37, <4 x float> %36, <4 x float> %35
8348 ; CHECK-NEXT: %39 = insertelement <4 x float> %38, float %7, i32 2
8349 ; CHECK-NEXT: %40 = icmp eq i32 10, %8
8350 ; CHECK-NEXT: %41 = select i1 %40, <4 x float> %39, <4 x float> %38
8351 ; CHECK-NEXT: %42 = insertelement <4 x float> %41, float %7, i32 3
8352 ; CHECK-NEXT: %43 = icmp eq i32 11, %8
8353 ; CHECK-NEXT: %44 = select i1 %43, <4 x float> %42, <4 x float> %41
8354 ; CHECK-NEXT: %45 = insertelement <4 x float> %6, float %7, i32 0
8355 ; CHECK-NEXT: %46 = icmp eq i32 12, %8
8356 ; CHECK-NEXT: %47 = select i1 %46, <4 x float> %45, <4 x float> %6
8357 ; CHECK-NEXT: %48 = insertelement <4 x float> %47, float %7, i32 1
8358 ; CHECK-NEXT: %49 = icmp eq i32 13, %8
8359 ; CHECK-NEXT: %50 = select i1 %49, <4 x float> %48, <4 x float> %47
8360 ; CHECK-NEXT: %51 = insertelement <4 x float> %50, float %7, i32 2
8361 ; CHECK-NEXT: %52 = icmp eq i32 14, %8
8362 ; CHECK-NEXT: %53 = select i1 %52, <4 x float> %51, <4 x float> %50
8363 ; CHECK-NEXT: %54 = insertelement <4 x float> %53, float %7, i32 3
8364 ; CHECK-NEXT: %55 = icmp eq i32 15, %8
8365 ; CHECK-NEXT: %56 = select i1 %55, <4 x float> %54, <4 x float> %53
8366 ; CHECK-NEXT: store <4 x float> %32, <4 x float>* %0, align 16
8367 ; CHECK-NEXT: store <4 x float> %44, <4 x float>* %1, align 16
8368 ; CHECK-NEXT: store <4 x float> %56, <4 x float>* %2, align 16
8369 ; CHECK-NEXT: ret <4 x float> %20
8370 ; CHECK-NEXT: }
8371
8372 define <16 x double> @insert_16xdouble_var_idx(<16 x double>, double, i32) {
8373 entry:
8374 %3 = insertelement <16 x double> %0, double %1, i32 %2
8375 ret <16 x double> %3
8376 }
8377 ; CHECK-LABEL: define <2 x double> @insert_16xdouble_var_idx(<2 x double>* nocap ture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceabl e(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapt ure nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable (16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocaptu re nonnull dereferenceable(16), <2 x double>, <2 x double>, <2 x double>, <2 x d ouble>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, double, i32) {
8378 ; CHECK: entry:
8379 ; CHECK-NEXT: %17 = insertelement <2 x double> %7, double %15, i32 0
8380 ; CHECK-NEXT: %18 = icmp eq i32 0, %16
8381 ; CHECK-NEXT: %19 = select i1 %18, <2 x double> %17, <2 x double> %7
8382 ; CHECK-NEXT: %20 = insertelement <2 x double> %19, double %15, i32 1
8383 ; CHECK-NEXT: %21 = icmp eq i32 1, %16
8384 ; CHECK-NEXT: %22 = select i1 %21, <2 x double> %20, <2 x double> %19
8385 ; CHECK-NEXT: %23 = insertelement <2 x double> %8, double %15, i32 0
8386 ; CHECK-NEXT: %24 = icmp eq i32 2, %16
8387 ; CHECK-NEXT: %25 = select i1 %24, <2 x double> %23, <2 x double> %8
8388 ; CHECK-NEXT: %26 = insertelement <2 x double> %25, double %15, i32 1
8389 ; CHECK-NEXT: %27 = icmp eq i32 3, %16
8390 ; CHECK-NEXT: %28 = select i1 %27, <2 x double> %26, <2 x double> %25
8391 ; CHECK-NEXT: %29 = insertelement <2 x double> %9, double %15, i32 0
8392 ; CHECK-NEXT: %30 = icmp eq i32 4, %16
8393 ; CHECK-NEXT: %31 = select i1 %30, <2 x double> %29, <2 x double> %9
8394 ; CHECK-NEXT: %32 = insertelement <2 x double> %31, double %15, i32 1
8395 ; CHECK-NEXT: %33 = icmp eq i32 5, %16
8396 ; CHECK-NEXT: %34 = select i1 %33, <2 x double> %32, <2 x double> %31
8397 ; CHECK-NEXT: %35 = insertelement <2 x double> %10, double %15, i32 0
8398 ; CHECK-NEXT: %36 = icmp eq i32 6, %16
8399 ; CHECK-NEXT: %37 = select i1 %36, <2 x double> %35, <2 x double> %10
8400 ; CHECK-NEXT: %38 = insertelement <2 x double> %37, double %15, i32 1
8401 ; CHECK-NEXT: %39 = icmp eq i32 7, %16
8402 ; CHECK-NEXT: %40 = select i1 %39, <2 x double> %38, <2 x double> %37
8403 ; CHECK-NEXT: %41 = insertelement <2 x double> %11, double %15, i32 0
8404 ; CHECK-NEXT: %42 = icmp eq i32 8, %16
8405 ; CHECK-NEXT: %43 = select i1 %42, <2 x double> %41, <2 x double> %11
8406 ; CHECK-NEXT: %44 = insertelement <2 x double> %43, double %15, i32 1
8407 ; CHECK-NEXT: %45 = icmp eq i32 9, %16
8408 ; CHECK-NEXT: %46 = select i1 %45, <2 x double> %44, <2 x double> %43
8409 ; CHECK-NEXT: %47 = insertelement <2 x double> %12, double %15, i32 0
8410 ; CHECK-NEXT: %48 = icmp eq i32 10, %16
8411 ; CHECK-NEXT: %49 = select i1 %48, <2 x double> %47, <2 x double> %12
8412 ; CHECK-NEXT: %50 = insertelement <2 x double> %49, double %15, i32 1
8413 ; CHECK-NEXT: %51 = icmp eq i32 11, %16
8414 ; CHECK-NEXT: %52 = select i1 %51, <2 x double> %50, <2 x double> %49
8415 ; CHECK-NEXT: %53 = insertelement <2 x double> %13, double %15, i32 0
8416 ; CHECK-NEXT: %54 = icmp eq i32 12, %16
8417 ; CHECK-NEXT: %55 = select i1 %54, <2 x double> %53, <2 x double> %13
8418 ; CHECK-NEXT: %56 = insertelement <2 x double> %55, double %15, i32 1
8419 ; CHECK-NEXT: %57 = icmp eq i32 13, %16
8420 ; CHECK-NEXT: %58 = select i1 %57, <2 x double> %56, <2 x double> %55
8421 ; CHECK-NEXT: %59 = insertelement <2 x double> %14, double %15, i32 0
8422 ; CHECK-NEXT: %60 = icmp eq i32 14, %16
8423 ; CHECK-NEXT: %61 = select i1 %60, <2 x double> %59, <2 x double> %14
8424 ; CHECK-NEXT: %62 = insertelement <2 x double> %61, double %15, i32 1
8425 ; CHECK-NEXT: %63 = icmp eq i32 15, %16
8426 ; CHECK-NEXT: %64 = select i1 %63, <2 x double> %62, <2 x double> %61
8427 ; CHECK-NEXT: store <2 x double> %28, <2 x double>* %0, align 16
8428 ; CHECK-NEXT: store <2 x double> %34, <2 x double>* %1, align 16
8429 ; CHECK-NEXT: store <2 x double> %40, <2 x double>* %2, align 16
8430 ; CHECK-NEXT: store <2 x double> %46, <2 x double>* %3, align 16
8431 ; CHECK-NEXT: store <2 x double> %52, <2 x double>* %4, align 16
8432 ; CHECK-NEXT: store <2 x double> %58, <2 x double>* %5, align 16
8433 ; CHECK-NEXT: store <2 x double> %64, <2 x double>* %6, align 16
8434 ; CHECK-NEXT: ret <2 x double> %22
8435 ; CHECK-NEXT: }
8436
8437 define <20 x i8> @insert_20xi8_var_idx(<20 x i8>, i8, i32) {
8438 entry:
8439 %3 = insertelement <20 x i8> %0, i8 %1, i32 %2
8440 ret <20 x i8> %3
8441 }
8442 ; CHECK-LABEL: define <16 x i8> @insert_20xi8_var_idx(<16 x i8>* nocapture nonnu ll dereferenceable(16), <16 x i8>, <16 x i8>, i8, i32) {
8443 ; CHECK: entry:
8444 ; CHECK-NEXT: %5 = insertelement <16 x i8> %1, i8 %3, i32 0
8445 ; CHECK-NEXT: %6 = icmp eq i32 0, %4
8446 ; CHECK-NEXT: %7 = select i1 %6, <16 x i8> %5, <16 x i8> %1
8447 ; CHECK-NEXT: %8 = insertelement <16 x i8> %7, i8 %3, i32 1
8448 ; CHECK-NEXT: %9 = icmp eq i32 1, %4
8449 ; CHECK-NEXT: %10 = select i1 %9, <16 x i8> %8, <16 x i8> %7
8450 ; CHECK-NEXT: %11 = insertelement <16 x i8> %10, i8 %3, i32 2
8451 ; CHECK-NEXT: %12 = icmp eq i32 2, %4
8452 ; CHECK-NEXT: %13 = select i1 %12, <16 x i8> %11, <16 x i8> %10
8453 ; CHECK-NEXT: %14 = insertelement <16 x i8> %13, i8 %3, i32 3
8454 ; CHECK-NEXT: %15 = icmp eq i32 3, %4
8455 ; CHECK-NEXT: %16 = select i1 %15, <16 x i8> %14, <16 x i8> %13
8456 ; CHECK-NEXT: %17 = insertelement <16 x i8> %16, i8 %3, i32 4
8457 ; CHECK-NEXT: %18 = icmp eq i32 4, %4
8458 ; CHECK-NEXT: %19 = select i1 %18, <16 x i8> %17, <16 x i8> %16
8459 ; CHECK-NEXT: %20 = insertelement <16 x i8> %19, i8 %3, i32 5
8460 ; CHECK-NEXT: %21 = icmp eq i32 5, %4
8461 ; CHECK-NEXT: %22 = select i1 %21, <16 x i8> %20, <16 x i8> %19
8462 ; CHECK-NEXT: %23 = insertelement <16 x i8> %22, i8 %3, i32 6
8463 ; CHECK-NEXT: %24 = icmp eq i32 6, %4
8464 ; CHECK-NEXT: %25 = select i1 %24, <16 x i8> %23, <16 x i8> %22
8465 ; CHECK-NEXT: %26 = insertelement <16 x i8> %25, i8 %3, i32 7
8466 ; CHECK-NEXT: %27 = icmp eq i32 7, %4
8467 ; CHECK-NEXT: %28 = select i1 %27, <16 x i8> %26, <16 x i8> %25
8468 ; CHECK-NEXT: %29 = insertelement <16 x i8> %28, i8 %3, i32 8
8469 ; CHECK-NEXT: %30 = icmp eq i32 8, %4
8470 ; CHECK-NEXT: %31 = select i1 %30, <16 x i8> %29, <16 x i8> %28
8471 ; CHECK-NEXT: %32 = insertelement <16 x i8> %31, i8 %3, i32 9
8472 ; CHECK-NEXT: %33 = icmp eq i32 9, %4
8473 ; CHECK-NEXT: %34 = select i1 %33, <16 x i8> %32, <16 x i8> %31
8474 ; CHECK-NEXT: %35 = insertelement <16 x i8> %34, i8 %3, i32 10
8475 ; CHECK-NEXT: %36 = icmp eq i32 10, %4
8476 ; CHECK-NEXT: %37 = select i1 %36, <16 x i8> %35, <16 x i8> %34
8477 ; CHECK-NEXT: %38 = insertelement <16 x i8> %37, i8 %3, i32 11
8478 ; CHECK-NEXT: %39 = icmp eq i32 11, %4
8479 ; CHECK-NEXT: %40 = select i1 %39, <16 x i8> %38, <16 x i8> %37
8480 ; CHECK-NEXT: %41 = insertelement <16 x i8> %40, i8 %3, i32 12
8481 ; CHECK-NEXT: %42 = icmp eq i32 12, %4
8482 ; CHECK-NEXT: %43 = select i1 %42, <16 x i8> %41, <16 x i8> %40
8483 ; CHECK-NEXT: %44 = insertelement <16 x i8> %43, i8 %3, i32 13
8484 ; CHECK-NEXT: %45 = icmp eq i32 13, %4
8485 ; CHECK-NEXT: %46 = select i1 %45, <16 x i8> %44, <16 x i8> %43
8486 ; CHECK-NEXT: %47 = insertelement <16 x i8> %46, i8 %3, i32 14
8487 ; CHECK-NEXT: %48 = icmp eq i32 14, %4
8488 ; CHECK-NEXT: %49 = select i1 %48, <16 x i8> %47, <16 x i8> %46
8489 ; CHECK-NEXT: %50 = insertelement <16 x i8> %49, i8 %3, i32 15
8490 ; CHECK-NEXT: %51 = icmp eq i32 15, %4
8491 ; CHECK-NEXT: %52 = select i1 %51, <16 x i8> %50, <16 x i8> %49
8492 ; CHECK-NEXT: %53 = insertelement <16 x i8> %2, i8 %3, i32 0
8493 ; CHECK-NEXT: %54 = icmp eq i32 16, %4
8494 ; CHECK-NEXT: %55 = select i1 %54, <16 x i8> %53, <16 x i8> %2
8495 ; CHECK-NEXT: %56 = insertelement <16 x i8> %55, i8 %3, i32 1
8496 ; CHECK-NEXT: %57 = icmp eq i32 17, %4
8497 ; CHECK-NEXT: %58 = select i1 %57, <16 x i8> %56, <16 x i8> %55
8498 ; CHECK-NEXT: %59 = insertelement <16 x i8> %58, i8 %3, i32 2
8499 ; CHECK-NEXT: %60 = icmp eq i32 18, %4
8500 ; CHECK-NEXT: %61 = select i1 %60, <16 x i8> %59, <16 x i8> %58
8501 ; CHECK-NEXT: %62 = insertelement <16 x i8> %61, i8 %3, i32 3
8502 ; CHECK-NEXT: %63 = icmp eq i32 19, %4
8503 ; CHECK-NEXT: %64 = select i1 %63, <16 x i8> %62, <16 x i8> %61
8504 ; CHECK-NEXT: store <16 x i8> %64, <16 x i8>* %0, align 16
8505 ; CHECK-NEXT: ret <16 x i8> %52
8506 ; CHECK-NEXT: }
8507
8508 define <20 x i16> @insert_20xi16_var_idx(<20 x i16>, i16, i32) {
8509 entry:
8510 %3 = insertelement <20 x i16> %0, i16 %1, i32 %2
8511 ret <20 x i16> %3
8512 }
8513 ; CHECK-LABEL: define <8 x i16> @insert_20xi16_var_idx(<8 x i16>* nocapture nonn ull dereferenceable(16), <8 x i16>* nocapture nonnull dereferenceable(16), <8 x i16>, <8 x i16>, <8 x i16>, i16, i32) {
8514 ; CHECK: entry:
8515 ; CHECK-NEXT: %7 = insertelement <8 x i16> %2, i16 %5, i32 0
8516 ; CHECK-NEXT: %8 = icmp eq i32 0, %6
8517 ; CHECK-NEXT: %9 = select i1 %8, <8 x i16> %7, <8 x i16> %2
8518 ; CHECK-NEXT: %10 = insertelement <8 x i16> %9, i16 %5, i32 1
8519 ; CHECK-NEXT: %11 = icmp eq i32 1, %6
8520 ; CHECK-NEXT: %12 = select i1 %11, <8 x i16> %10, <8 x i16> %9
8521 ; CHECK-NEXT: %13 = insertelement <8 x i16> %12, i16 %5, i32 2
8522 ; CHECK-NEXT: %14 = icmp eq i32 2, %6
8523 ; CHECK-NEXT: %15 = select i1 %14, <8 x i16> %13, <8 x i16> %12
8524 ; CHECK-NEXT: %16 = insertelement <8 x i16> %15, i16 %5, i32 3
8525 ; CHECK-NEXT: %17 = icmp eq i32 3, %6
8526 ; CHECK-NEXT: %18 = select i1 %17, <8 x i16> %16, <8 x i16> %15
8527 ; CHECK-NEXT: %19 = insertelement <8 x i16> %18, i16 %5, i32 4
8528 ; CHECK-NEXT: %20 = icmp eq i32 4, %6
8529 ; CHECK-NEXT: %21 = select i1 %20, <8 x i16> %19, <8 x i16> %18
8530 ; CHECK-NEXT: %22 = insertelement <8 x i16> %21, i16 %5, i32 5
8531 ; CHECK-NEXT: %23 = icmp eq i32 5, %6
8532 ; CHECK-NEXT: %24 = select i1 %23, <8 x i16> %22, <8 x i16> %21
8533 ; CHECK-NEXT: %25 = insertelement <8 x i16> %24, i16 %5, i32 6
8534 ; CHECK-NEXT: %26 = icmp eq i32 6, %6
8535 ; CHECK-NEXT: %27 = select i1 %26, <8 x i16> %25, <8 x i16> %24
8536 ; CHECK-NEXT: %28 = insertelement <8 x i16> %27, i16 %5, i32 7
8537 ; CHECK-NEXT: %29 = icmp eq i32 7, %6
8538 ; CHECK-NEXT: %30 = select i1 %29, <8 x i16> %28, <8 x i16> %27
8539 ; CHECK-NEXT: %31 = insertelement <8 x i16> %3, i16 %5, i32 0
8540 ; CHECK-NEXT: %32 = icmp eq i32 8, %6
8541 ; CHECK-NEXT: %33 = select i1 %32, <8 x i16> %31, <8 x i16> %3
8542 ; CHECK-NEXT: %34 = insertelement <8 x i16> %33, i16 %5, i32 1
8543 ; CHECK-NEXT: %35 = icmp eq i32 9, %6
8544 ; CHECK-NEXT: %36 = select i1 %35, <8 x i16> %34, <8 x i16> %33
8545 ; CHECK-NEXT: %37 = insertelement <8 x i16> %36, i16 %5, i32 2
8546 ; CHECK-NEXT: %38 = icmp eq i32 10, %6
8547 ; CHECK-NEXT: %39 = select i1 %38, <8 x i16> %37, <8 x i16> %36
8548 ; CHECK-NEXT: %40 = insertelement <8 x i16> %39, i16 %5, i32 3
8549 ; CHECK-NEXT: %41 = icmp eq i32 11, %6
8550 ; CHECK-NEXT: %42 = select i1 %41, <8 x i16> %40, <8 x i16> %39
8551 ; CHECK-NEXT: %43 = insertelement <8 x i16> %42, i16 %5, i32 4
8552 ; CHECK-NEXT: %44 = icmp eq i32 12, %6
8553 ; CHECK-NEXT: %45 = select i1 %44, <8 x i16> %43, <8 x i16> %42
8554 ; CHECK-NEXT: %46 = insertelement <8 x i16> %45, i16 %5, i32 5
8555 ; CHECK-NEXT: %47 = icmp eq i32 13, %6
8556 ; CHECK-NEXT: %48 = select i1 %47, <8 x i16> %46, <8 x i16> %45
8557 ; CHECK-NEXT: %49 = insertelement <8 x i16> %48, i16 %5, i32 6
8558 ; CHECK-NEXT: %50 = icmp eq i32 14, %6
8559 ; CHECK-NEXT: %51 = select i1 %50, <8 x i16> %49, <8 x i16> %48
8560 ; CHECK-NEXT: %52 = insertelement <8 x i16> %51, i16 %5, i32 7
8561 ; CHECK-NEXT: %53 = icmp eq i32 15, %6
8562 ; CHECK-NEXT: %54 = select i1 %53, <8 x i16> %52, <8 x i16> %51
8563 ; CHECK-NEXT: %55 = insertelement <8 x i16> %4, i16 %5, i32 0
8564 ; CHECK-NEXT: %56 = icmp eq i32 16, %6
8565 ; CHECK-NEXT: %57 = select i1 %56, <8 x i16> %55, <8 x i16> %4
8566 ; CHECK-NEXT: %58 = insertelement <8 x i16> %57, i16 %5, i32 1
8567 ; CHECK-NEXT: %59 = icmp eq i32 17, %6
8568 ; CHECK-NEXT: %60 = select i1 %59, <8 x i16> %58, <8 x i16> %57
8569 ; CHECK-NEXT: %61 = insertelement <8 x i16> %60, i16 %5, i32 2
8570 ; CHECK-NEXT: %62 = icmp eq i32 18, %6
8571 ; CHECK-NEXT: %63 = select i1 %62, <8 x i16> %61, <8 x i16> %60
8572 ; CHECK-NEXT: %64 = insertelement <8 x i16> %63, i16 %5, i32 3
8573 ; CHECK-NEXT: %65 = icmp eq i32 19, %6
8574 ; CHECK-NEXT: %66 = select i1 %65, <8 x i16> %64, <8 x i16> %63
8575 ; CHECK-NEXT: store <8 x i16> %54, <8 x i16>* %0, align 16
8576 ; CHECK-NEXT: store <8 x i16> %66, <8 x i16>* %1, align 16
8577 ; CHECK-NEXT: ret <8 x i16> %30
8578 ; CHECK-NEXT: }
8579
8580 define <20 x i32> @insert_20xi32_var_idx(<20 x i32>, i32, i32) {
8581 entry:
8582 %3 = insertelement <20 x i32> %0, i32 %1, i32 %2
8583 ret <20 x i32> %3
8584 }
8585 ; CHECK-LABEL: define <4 x i32> @insert_20xi32_var_idx(<4 x i32>* nocapture nonn ull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull dereferenceable(16), <4 x i32>* nocapture nonnull derefe renceable(16), <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, i32, i32) {
8586 ; CHECK: entry:
8587 ; CHECK-NEXT: %11 = insertelement <4 x i32> %4, i32 %9, i32 0
8588 ; CHECK-NEXT: %12 = icmp eq i32 0, %10
8589 ; CHECK-NEXT: %13 = select i1 %12, <4 x i32> %11, <4 x i32> %4
8590 ; CHECK-NEXT: %14 = insertelement <4 x i32> %13, i32 %9, i32 1
8591 ; CHECK-NEXT: %15 = icmp eq i32 1, %10
8592 ; CHECK-NEXT: %16 = select i1 %15, <4 x i32> %14, <4 x i32> %13
8593 ; CHECK-NEXT: %17 = insertelement <4 x i32> %16, i32 %9, i32 2
8594 ; CHECK-NEXT: %18 = icmp eq i32 2, %10
8595 ; CHECK-NEXT: %19 = select i1 %18, <4 x i32> %17, <4 x i32> %16
8596 ; CHECK-NEXT: %20 = insertelement <4 x i32> %19, i32 %9, i32 3
8597 ; CHECK-NEXT: %21 = icmp eq i32 3, %10
8598 ; CHECK-NEXT: %22 = select i1 %21, <4 x i32> %20, <4 x i32> %19
8599 ; CHECK-NEXT: %23 = insertelement <4 x i32> %5, i32 %9, i32 0
8600 ; CHECK-NEXT: %24 = icmp eq i32 4, %10
8601 ; CHECK-NEXT: %25 = select i1 %24, <4 x i32> %23, <4 x i32> %5
8602 ; CHECK-NEXT: %26 = insertelement <4 x i32> %25, i32 %9, i32 1
8603 ; CHECK-NEXT: %27 = icmp eq i32 5, %10
8604 ; CHECK-NEXT: %28 = select i1 %27, <4 x i32> %26, <4 x i32> %25
8605 ; CHECK-NEXT: %29 = insertelement <4 x i32> %28, i32 %9, i32 2
8606 ; CHECK-NEXT: %30 = icmp eq i32 6, %10
8607 ; CHECK-NEXT: %31 = select i1 %30, <4 x i32> %29, <4 x i32> %28
8608 ; CHECK-NEXT: %32 = insertelement <4 x i32> %31, i32 %9, i32 3
8609 ; CHECK-NEXT: %33 = icmp eq i32 7, %10
8610 ; CHECK-NEXT: %34 = select i1 %33, <4 x i32> %32, <4 x i32> %31
8611 ; CHECK-NEXT: %35 = insertelement <4 x i32> %6, i32 %9, i32 0
8612 ; CHECK-NEXT: %36 = icmp eq i32 8, %10
8613 ; CHECK-NEXT: %37 = select i1 %36, <4 x i32> %35, <4 x i32> %6
8614 ; CHECK-NEXT: %38 = insertelement <4 x i32> %37, i32 %9, i32 1
8615 ; CHECK-NEXT: %39 = icmp eq i32 9, %10
8616 ; CHECK-NEXT: %40 = select i1 %39, <4 x i32> %38, <4 x i32> %37
8617 ; CHECK-NEXT: %41 = insertelement <4 x i32> %40, i32 %9, i32 2
8618 ; CHECK-NEXT: %42 = icmp eq i32 10, %10
8619 ; CHECK-NEXT: %43 = select i1 %42, <4 x i32> %41, <4 x i32> %40
8620 ; CHECK-NEXT: %44 = insertelement <4 x i32> %43, i32 %9, i32 3
8621 ; CHECK-NEXT: %45 = icmp eq i32 11, %10
8622 ; CHECK-NEXT: %46 = select i1 %45, <4 x i32> %44, <4 x i32> %43
8623 ; CHECK-NEXT: %47 = insertelement <4 x i32> %7, i32 %9, i32 0
8624 ; CHECK-NEXT: %48 = icmp eq i32 12, %10
8625 ; CHECK-NEXT: %49 = select i1 %48, <4 x i32> %47, <4 x i32> %7
8626 ; CHECK-NEXT: %50 = insertelement <4 x i32> %49, i32 %9, i32 1
8627 ; CHECK-NEXT: %51 = icmp eq i32 13, %10
8628 ; CHECK-NEXT: %52 = select i1 %51, <4 x i32> %50, <4 x i32> %49
8629 ; CHECK-NEXT: %53 = insertelement <4 x i32> %52, i32 %9, i32 2
8630 ; CHECK-NEXT: %54 = icmp eq i32 14, %10
8631 ; CHECK-NEXT: %55 = select i1 %54, <4 x i32> %53, <4 x i32> %52
8632 ; CHECK-NEXT: %56 = insertelement <4 x i32> %55, i32 %9, i32 3
8633 ; CHECK-NEXT: %57 = icmp eq i32 15, %10
8634 ; CHECK-NEXT: %58 = select i1 %57, <4 x i32> %56, <4 x i32> %55
8635 ; CHECK-NEXT: %59 = insertelement <4 x i32> %8, i32 %9, i32 0
8636 ; CHECK-NEXT: %60 = icmp eq i32 16, %10
8637 ; CHECK-NEXT: %61 = select i1 %60, <4 x i32> %59, <4 x i32> %8
8638 ; CHECK-NEXT: %62 = insertelement <4 x i32> %61, i32 %9, i32 1
8639 ; CHECK-NEXT: %63 = icmp eq i32 17, %10
8640 ; CHECK-NEXT: %64 = select i1 %63, <4 x i32> %62, <4 x i32> %61
8641 ; CHECK-NEXT: %65 = insertelement <4 x i32> %64, i32 %9, i32 2
8642 ; CHECK-NEXT: %66 = icmp eq i32 18, %10
8643 ; CHECK-NEXT: %67 = select i1 %66, <4 x i32> %65, <4 x i32> %64
8644 ; CHECK-NEXT: %68 = insertelement <4 x i32> %67, i32 %9, i32 3
8645 ; CHECK-NEXT: %69 = icmp eq i32 19, %10
8646 ; CHECK-NEXT: %70 = select i1 %69, <4 x i32> %68, <4 x i32> %67
8647 ; CHECK-NEXT: store <4 x i32> %34, <4 x i32>* %0, align 16
8648 ; CHECK-NEXT: store <4 x i32> %46, <4 x i32>* %1, align 16
8649 ; CHECK-NEXT: store <4 x i32> %58, <4 x i32>* %2, align 16
8650 ; CHECK-NEXT: store <4 x i32> %70, <4 x i32>* %3, align 16
8651 ; CHECK-NEXT: ret <4 x i32> %22
8652 ; CHECK-NEXT: }
8653
8654 define <20 x i64> @insert_20xi64_var_idx(<20 x i64>, i64, i32) {
8655 entry:
8656 %3 = insertelement <20 x i64> %0, i64 %1, i32 %2
8657 ret <20 x i64> %3
8658 }
8659 ; CHECK-LABEL: define <2 x i64> @insert_20xi64_var_idx(<2 x i64>* nocapture nonn ull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull derefe renceable(16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* noca pture nonnull dereferenceable(16), <2 x i64>* nocapture nonnull dereferenceable( 16), <2 x i64>* nocapture nonnull dereferenceable(16), <2 x i64>* nocapture nonn ull dereferenceable(16), <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, i64, i32) {
8660 ; CHECK: entry:
8661 ; CHECK-NEXT: %21 = insertelement <2 x i64> %9, i64 %19, i32 0
8662 ; CHECK-NEXT: %22 = icmp eq i32 0, %20
8663 ; CHECK-NEXT: %23 = select i1 %22, <2 x i64> %21, <2 x i64> %9
8664 ; CHECK-NEXT: %24 = insertelement <2 x i64> %23, i64 %19, i32 1
8665 ; CHECK-NEXT: %25 = icmp eq i32 1, %20
8666 ; CHECK-NEXT: %26 = select i1 %25, <2 x i64> %24, <2 x i64> %23
8667 ; CHECK-NEXT: %27 = insertelement <2 x i64> %10, i64 %19, i32 0
8668 ; CHECK-NEXT: %28 = icmp eq i32 2, %20
8669 ; CHECK-NEXT: %29 = select i1 %28, <2 x i64> %27, <2 x i64> %10
8670 ; CHECK-NEXT: %30 = insertelement <2 x i64> %29, i64 %19, i32 1
8671 ; CHECK-NEXT: %31 = icmp eq i32 3, %20
8672 ; CHECK-NEXT: %32 = select i1 %31, <2 x i64> %30, <2 x i64> %29
8673 ; CHECK-NEXT: %33 = insertelement <2 x i64> %11, i64 %19, i32 0
8674 ; CHECK-NEXT: %34 = icmp eq i32 4, %20
8675 ; CHECK-NEXT: %35 = select i1 %34, <2 x i64> %33, <2 x i64> %11
8676 ; CHECK-NEXT: %36 = insertelement <2 x i64> %35, i64 %19, i32 1
8677 ; CHECK-NEXT: %37 = icmp eq i32 5, %20
8678 ; CHECK-NEXT: %38 = select i1 %37, <2 x i64> %36, <2 x i64> %35
8679 ; CHECK-NEXT: %39 = insertelement <2 x i64> %12, i64 %19, i32 0
8680 ; CHECK-NEXT: %40 = icmp eq i32 6, %20
8681 ; CHECK-NEXT: %41 = select i1 %40, <2 x i64> %39, <2 x i64> %12
8682 ; CHECK-NEXT: %42 = insertelement <2 x i64> %41, i64 %19, i32 1
8683 ; CHECK-NEXT: %43 = icmp eq i32 7, %20
8684 ; CHECK-NEXT: %44 = select i1 %43, <2 x i64> %42, <2 x i64> %41
8685 ; CHECK-NEXT: %45 = insertelement <2 x i64> %13, i64 %19, i32 0
8686 ; CHECK-NEXT: %46 = icmp eq i32 8, %20
8687 ; CHECK-NEXT: %47 = select i1 %46, <2 x i64> %45, <2 x i64> %13
8688 ; CHECK-NEXT: %48 = insertelement <2 x i64> %47, i64 %19, i32 1
8689 ; CHECK-NEXT: %49 = icmp eq i32 9, %20
8690 ; CHECK-NEXT: %50 = select i1 %49, <2 x i64> %48, <2 x i64> %47
8691 ; CHECK-NEXT: %51 = insertelement <2 x i64> %14, i64 %19, i32 0
8692 ; CHECK-NEXT: %52 = icmp eq i32 10, %20
8693 ; CHECK-NEXT: %53 = select i1 %52, <2 x i64> %51, <2 x i64> %14
8694 ; CHECK-NEXT: %54 = insertelement <2 x i64> %53, i64 %19, i32 1
8695 ; CHECK-NEXT: %55 = icmp eq i32 11, %20
8696 ; CHECK-NEXT: %56 = select i1 %55, <2 x i64> %54, <2 x i64> %53
8697 ; CHECK-NEXT: %57 = insertelement <2 x i64> %15, i64 %19, i32 0
8698 ; CHECK-NEXT: %58 = icmp eq i32 12, %20
8699 ; CHECK-NEXT: %59 = select i1 %58, <2 x i64> %57, <2 x i64> %15
8700 ; CHECK-NEXT: %60 = insertelement <2 x i64> %59, i64 %19, i32 1
8701 ; CHECK-NEXT: %61 = icmp eq i32 13, %20
8702 ; CHECK-NEXT: %62 = select i1 %61, <2 x i64> %60, <2 x i64> %59
8703 ; CHECK-NEXT: %63 = insertelement <2 x i64> %16, i64 %19, i32 0
8704 ; CHECK-NEXT: %64 = icmp eq i32 14, %20
8705 ; CHECK-NEXT: %65 = select i1 %64, <2 x i64> %63, <2 x i64> %16
8706 ; CHECK-NEXT: %66 = insertelement <2 x i64> %65, i64 %19, i32 1
8707 ; CHECK-NEXT: %67 = icmp eq i32 15, %20
8708 ; CHECK-NEXT: %68 = select i1 %67, <2 x i64> %66, <2 x i64> %65
8709 ; CHECK-NEXT: %69 = insertelement <2 x i64> %17, i64 %19, i32 0
8710 ; CHECK-NEXT: %70 = icmp eq i32 16, %20
8711 ; CHECK-NEXT: %71 = select i1 %70, <2 x i64> %69, <2 x i64> %17
8712 ; CHECK-NEXT: %72 = insertelement <2 x i64> %71, i64 %19, i32 1
8713 ; CHECK-NEXT: %73 = icmp eq i32 17, %20
8714 ; CHECK-NEXT: %74 = select i1 %73, <2 x i64> %72, <2 x i64> %71
8715 ; CHECK-NEXT: %75 = insertelement <2 x i64> %18, i64 %19, i32 0
8716 ; CHECK-NEXT: %76 = icmp eq i32 18, %20
8717 ; CHECK-NEXT: %77 = select i1 %76, <2 x i64> %75, <2 x i64> %18
8718 ; CHECK-NEXT: %78 = insertelement <2 x i64> %77, i64 %19, i32 1
8719 ; CHECK-NEXT: %79 = icmp eq i32 19, %20
8720 ; CHECK-NEXT: %80 = select i1 %79, <2 x i64> %78, <2 x i64> %77
8721 ; CHECK-NEXT: store <2 x i64> %32, <2 x i64>* %0, align 16
8722 ; CHECK-NEXT: store <2 x i64> %38, <2 x i64>* %1, align 16
8723 ; CHECK-NEXT: store <2 x i64> %44, <2 x i64>* %2, align 16
8724 ; CHECK-NEXT: store <2 x i64> %50, <2 x i64>* %3, align 16
8725 ; CHECK-NEXT: store <2 x i64> %56, <2 x i64>* %4, align 16
8726 ; CHECK-NEXT: store <2 x i64> %62, <2 x i64>* %5, align 16
8727 ; CHECK-NEXT: store <2 x i64> %68, <2 x i64>* %6, align 16
8728 ; CHECK-NEXT: store <2 x i64> %74, <2 x i64>* %7, align 16
8729 ; CHECK-NEXT: store <2 x i64> %80, <2 x i64>* %8, align 16
8730 ; CHECK-NEXT: ret <2 x i64> %26
8731 ; CHECK-NEXT: }
8732
8733 define <20 x i8*> @insert_20xi8ptr_var_idx(<20 x i8*>, i8*, i32) {
8734 entry:
8735 %3 = insertelement <20 x i8*> %0, i8* %1, i32 %2
8736 ret <20 x i8*> %3
8737 }
8738 ; CHECK-LABEL: define <4 x i8*> @insert_20xi8ptr_var_idx(<4 x i8*>* nocapture no nnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dereferenceable(16), <4 x i8*>* nocapture nonnull dere ferenceable(16), <4 x i8*>, <4 x i8*>, <4 x i8*>, <4 x i8*>, <4 x i8*>, i8*, i32 ) {
8739 ; CHECK: entry:
8740 ; CHECK-NEXT: %11 = insertelement <4 x i8*> %4, i8* %9, i32 0
8741 ; CHECK-NEXT: %12 = icmp eq i32 0, %10
8742 ; CHECK-NEXT: %13 = select i1 %12, <4 x i8*> %11, <4 x i8*> %4
8743 ; CHECK-NEXT: %14 = insertelement <4 x i8*> %13, i8* %9, i32 1
8744 ; CHECK-NEXT: %15 = icmp eq i32 1, %10
8745 ; CHECK-NEXT: %16 = select i1 %15, <4 x i8*> %14, <4 x i8*> %13
8746 ; CHECK-NEXT: %17 = insertelement <4 x i8*> %16, i8* %9, i32 2
8747 ; CHECK-NEXT: %18 = icmp eq i32 2, %10
8748 ; CHECK-NEXT: %19 = select i1 %18, <4 x i8*> %17, <4 x i8*> %16
8749 ; CHECK-NEXT: %20 = insertelement <4 x i8*> %19, i8* %9, i32 3
8750 ; CHECK-NEXT: %21 = icmp eq i32 3, %10
8751 ; CHECK-NEXT: %22 = select i1 %21, <4 x i8*> %20, <4 x i8*> %19
8752 ; CHECK-NEXT: %23 = insertelement <4 x i8*> %5, i8* %9, i32 0
8753 ; CHECK-NEXT: %24 = icmp eq i32 4, %10
8754 ; CHECK-NEXT: %25 = select i1 %24, <4 x i8*> %23, <4 x i8*> %5
8755 ; CHECK-NEXT: %26 = insertelement <4 x i8*> %25, i8* %9, i32 1
8756 ; CHECK-NEXT: %27 = icmp eq i32 5, %10
8757 ; CHECK-NEXT: %28 = select i1 %27, <4 x i8*> %26, <4 x i8*> %25
8758 ; CHECK-NEXT: %29 = insertelement <4 x i8*> %28, i8* %9, i32 2
8759 ; CHECK-NEXT: %30 = icmp eq i32 6, %10
8760 ; CHECK-NEXT: %31 = select i1 %30, <4 x i8*> %29, <4 x i8*> %28
8761 ; CHECK-NEXT: %32 = insertelement <4 x i8*> %31, i8* %9, i32 3
8762 ; CHECK-NEXT: %33 = icmp eq i32 7, %10
8763 ; CHECK-NEXT: %34 = select i1 %33, <4 x i8*> %32, <4 x i8*> %31
8764 ; CHECK-NEXT: %35 = insertelement <4 x i8*> %6, i8* %9, i32 0
8765 ; CHECK-NEXT: %36 = icmp eq i32 8, %10
8766 ; CHECK-NEXT: %37 = select i1 %36, <4 x i8*> %35, <4 x i8*> %6
8767 ; CHECK-NEXT: %38 = insertelement <4 x i8*> %37, i8* %9, i32 1
8768 ; CHECK-NEXT: %39 = icmp eq i32 9, %10
8769 ; CHECK-NEXT: %40 = select i1 %39, <4 x i8*> %38, <4 x i8*> %37
8770 ; CHECK-NEXT: %41 = insertelement <4 x i8*> %40, i8* %9, i32 2
8771 ; CHECK-NEXT: %42 = icmp eq i32 10, %10
8772 ; CHECK-NEXT: %43 = select i1 %42, <4 x i8*> %41, <4 x i8*> %40
8773 ; CHECK-NEXT: %44 = insertelement <4 x i8*> %43, i8* %9, i32 3
8774 ; CHECK-NEXT: %45 = icmp eq i32 11, %10
8775 ; CHECK-NEXT: %46 = select i1 %45, <4 x i8*> %44, <4 x i8*> %43
8776 ; CHECK-NEXT: %47 = insertelement <4 x i8*> %7, i8* %9, i32 0
8777 ; CHECK-NEXT: %48 = icmp eq i32 12, %10
8778 ; CHECK-NEXT: %49 = select i1 %48, <4 x i8*> %47, <4 x i8*> %7
8779 ; CHECK-NEXT: %50 = insertelement <4 x i8*> %49, i8* %9, i32 1
8780 ; CHECK-NEXT: %51 = icmp eq i32 13, %10
8781 ; CHECK-NEXT: %52 = select i1 %51, <4 x i8*> %50, <4 x i8*> %49
8782 ; CHECK-NEXT: %53 = insertelement <4 x i8*> %52, i8* %9, i32 2
8783 ; CHECK-NEXT: %54 = icmp eq i32 14, %10
8784 ; CHECK-NEXT: %55 = select i1 %54, <4 x i8*> %53, <4 x i8*> %52
8785 ; CHECK-NEXT: %56 = insertelement <4 x i8*> %55, i8* %9, i32 3
8786 ; CHECK-NEXT: %57 = icmp eq i32 15, %10
8787 ; CHECK-NEXT: %58 = select i1 %57, <4 x i8*> %56, <4 x i8*> %55
8788 ; CHECK-NEXT: %59 = insertelement <4 x i8*> %8, i8* %9, i32 0
8789 ; CHECK-NEXT: %60 = icmp eq i32 16, %10
8790 ; CHECK-NEXT: %61 = select i1 %60, <4 x i8*> %59, <4 x i8*> %8
8791 ; CHECK-NEXT: %62 = insertelement <4 x i8*> %61, i8* %9, i32 1
8792 ; CHECK-NEXT: %63 = icmp eq i32 17, %10
8793 ; CHECK-NEXT: %64 = select i1 %63, <4 x i8*> %62, <4 x i8*> %61
8794 ; CHECK-NEXT: %65 = insertelement <4 x i8*> %64, i8* %9, i32 2
8795 ; CHECK-NEXT: %66 = icmp eq i32 18, %10
8796 ; CHECK-NEXT: %67 = select i1 %66, <4 x i8*> %65, <4 x i8*> %64
8797 ; CHECK-NEXT: %68 = insertelement <4 x i8*> %67, i8* %9, i32 3
8798 ; CHECK-NEXT: %69 = icmp eq i32 19, %10
8799 ; CHECK-NEXT: %70 = select i1 %69, <4 x i8*> %68, <4 x i8*> %67
8800 ; CHECK-NEXT: store <4 x i8*> %34, <4 x i8*>* %0, align 16
8801 ; CHECK-NEXT: store <4 x i8*> %46, <4 x i8*>* %1, align 16
8802 ; CHECK-NEXT: store <4 x i8*> %58, <4 x i8*>* %2, align 16
8803 ; CHECK-NEXT: store <4 x i8*> %70, <4 x i8*>* %3, align 16
8804 ; CHECK-NEXT: ret <4 x i8*> %22
8805 ; CHECK-NEXT: }
8806
8807 define <20 x float> @insert_20xfloat_var_idx(<20 x float>, float, i32) {
8808 entry:
8809 %3 = insertelement <20 x float> %0, float %1, i32 %2
8810 ret <20 x float> %3
8811 }
8812 ; CHECK-LABEL: define <4 x float> @insert_20xfloat_var_idx(<4 x float>* nocaptur e nonnull dereferenceable(16), <4 x float>* nocapture nonnull dereferenceable(16 ), <4 x float>* nocapture nonnull dereferenceable(16), <4 x float>* nocapture no nnull dereferenceable(16), <4 x float>, <4 x float>, <4 x float>, <4 x float>, < 4 x float>, float, i32) {
8813 ; CHECK: entry:
8814 ; CHECK-NEXT: %11 = insertelement <4 x float> %4, float %9, i32 0
8815 ; CHECK-NEXT: %12 = icmp eq i32 0, %10
8816 ; CHECK-NEXT: %13 = select i1 %12, <4 x float> %11, <4 x float> %4
8817 ; CHECK-NEXT: %14 = insertelement <4 x float> %13, float %9, i32 1
8818 ; CHECK-NEXT: %15 = icmp eq i32 1, %10
8819 ; CHECK-NEXT: %16 = select i1 %15, <4 x float> %14, <4 x float> %13
8820 ; CHECK-NEXT: %17 = insertelement <4 x float> %16, float %9, i32 2
8821 ; CHECK-NEXT: %18 = icmp eq i32 2, %10
8822 ; CHECK-NEXT: %19 = select i1 %18, <4 x float> %17, <4 x float> %16
8823 ; CHECK-NEXT: %20 = insertelement <4 x float> %19, float %9, i32 3
8824 ; CHECK-NEXT: %21 = icmp eq i32 3, %10
8825 ; CHECK-NEXT: %22 = select i1 %21, <4 x float> %20, <4 x float> %19
8826 ; CHECK-NEXT: %23 = insertelement <4 x float> %5, float %9, i32 0
8827 ; CHECK-NEXT: %24 = icmp eq i32 4, %10
8828 ; CHECK-NEXT: %25 = select i1 %24, <4 x float> %23, <4 x float> %5
8829 ; CHECK-NEXT: %26 = insertelement <4 x float> %25, float %9, i32 1
8830 ; CHECK-NEXT: %27 = icmp eq i32 5, %10
8831 ; CHECK-NEXT: %28 = select i1 %27, <4 x float> %26, <4 x float> %25
8832 ; CHECK-NEXT: %29 = insertelement <4 x float> %28, float %9, i32 2
8833 ; CHECK-NEXT: %30 = icmp eq i32 6, %10
8834 ; CHECK-NEXT: %31 = select i1 %30, <4 x float> %29, <4 x float> %28
8835 ; CHECK-NEXT: %32 = insertelement <4 x float> %31, float %9, i32 3
8836 ; CHECK-NEXT: %33 = icmp eq i32 7, %10
8837 ; CHECK-NEXT: %34 = select i1 %33, <4 x float> %32, <4 x float> %31
8838 ; CHECK-NEXT: %35 = insertelement <4 x float> %6, float %9, i32 0
8839 ; CHECK-NEXT: %36 = icmp eq i32 8, %10
8840 ; CHECK-NEXT: %37 = select i1 %36, <4 x float> %35, <4 x float> %6
8841 ; CHECK-NEXT: %38 = insertelement <4 x float> %37, float %9, i32 1
8842 ; CHECK-NEXT: %39 = icmp eq i32 9, %10
8843 ; CHECK-NEXT: %40 = select i1 %39, <4 x float> %38, <4 x float> %37
8844 ; CHECK-NEXT: %41 = insertelement <4 x float> %40, float %9, i32 2
8845 ; CHECK-NEXT: %42 = icmp eq i32 10, %10
8846 ; CHECK-NEXT: %43 = select i1 %42, <4 x float> %41, <4 x float> %40
8847 ; CHECK-NEXT: %44 = insertelement <4 x float> %43, float %9, i32 3
8848 ; CHECK-NEXT: %45 = icmp eq i32 11, %10
8849 ; CHECK-NEXT: %46 = select i1 %45, <4 x float> %44, <4 x float> %43
8850 ; CHECK-NEXT: %47 = insertelement <4 x float> %7, float %9, i32 0
8851 ; CHECK-NEXT: %48 = icmp eq i32 12, %10
8852 ; CHECK-NEXT: %49 = select i1 %48, <4 x float> %47, <4 x float> %7
8853 ; CHECK-NEXT: %50 = insertelement <4 x float> %49, float %9, i32 1
8854 ; CHECK-NEXT: %51 = icmp eq i32 13, %10
8855 ; CHECK-NEXT: %52 = select i1 %51, <4 x float> %50, <4 x float> %49
8856 ; CHECK-NEXT: %53 = insertelement <4 x float> %52, float %9, i32 2
8857 ; CHECK-NEXT: %54 = icmp eq i32 14, %10
8858 ; CHECK-NEXT: %55 = select i1 %54, <4 x float> %53, <4 x float> %52
8859 ; CHECK-NEXT: %56 = insertelement <4 x float> %55, float %9, i32 3
8860 ; CHECK-NEXT: %57 = icmp eq i32 15, %10
8861 ; CHECK-NEXT: %58 = select i1 %57, <4 x float> %56, <4 x float> %55
8862 ; CHECK-NEXT: %59 = insertelement <4 x float> %8, float %9, i32 0
8863 ; CHECK-NEXT: %60 = icmp eq i32 16, %10
8864 ; CHECK-NEXT: %61 = select i1 %60, <4 x float> %59, <4 x float> %8
8865 ; CHECK-NEXT: %62 = insertelement <4 x float> %61, float %9, i32 1
8866 ; CHECK-NEXT: %63 = icmp eq i32 17, %10
8867 ; CHECK-NEXT: %64 = select i1 %63, <4 x float> %62, <4 x float> %61
8868 ; CHECK-NEXT: %65 = insertelement <4 x float> %64, float %9, i32 2
8869 ; CHECK-NEXT: %66 = icmp eq i32 18, %10
8870 ; CHECK-NEXT: %67 = select i1 %66, <4 x float> %65, <4 x float> %64
8871 ; CHECK-NEXT: %68 = insertelement <4 x float> %67, float %9, i32 3
8872 ; CHECK-NEXT: %69 = icmp eq i32 19, %10
8873 ; CHECK-NEXT: %70 = select i1 %69, <4 x float> %68, <4 x float> %67
8874 ; CHECK-NEXT: store <4 x float> %34, <4 x float>* %0, align 16
8875 ; CHECK-NEXT: store <4 x float> %46, <4 x float>* %1, align 16
8876 ; CHECK-NEXT: store <4 x float> %58, <4 x float>* %2, align 16
8877 ; CHECK-NEXT: store <4 x float> %70, <4 x float>* %3, align 16
8878 ; CHECK-NEXT: ret <4 x float> %22
8879 ; CHECK-NEXT: }
8880
8881 define <20 x double> @insert_20xdouble_var_idx(<20 x double>, double, i32) {
8882 entry:
8883 %3 = insertelement <20 x double> %0, double %1, i32 %2
8884 ret <20 x double> %3
8885 }
8886 ; CHECK-LABEL: define <2 x double> @insert_20xdouble_var_idx(<2 x double>* nocap ture nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceabl e(16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocapt ure nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable (16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>* nocaptu re nonnull dereferenceable(16), <2 x double>* nocapture nonnull dereferenceable( 16), <2 x double>* nocapture nonnull dereferenceable(16), <2 x double>, <2 x dou ble>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, double, i32) {
8887 ; CHECK: entry:
8888 ; CHECK-NEXT: %21 = insertelement <2 x double> %9, double %19, i32 0
8889 ; CHECK-NEXT: %22 = icmp eq i32 0, %20
8890 ; CHECK-NEXT: %23 = select i1 %22, <2 x double> %21, <2 x double> %9
8891 ; CHECK-NEXT: %24 = insertelement <2 x double> %23, double %19, i32 1
8892 ; CHECK-NEXT: %25 = icmp eq i32 1, %20
8893 ; CHECK-NEXT: %26 = select i1 %25, <2 x double> %24, <2 x double> %23
8894 ; CHECK-NEXT: %27 = insertelement <2 x double> %10, double %19, i32 0
8895 ; CHECK-NEXT: %28 = icmp eq i32 2, %20
8896 ; CHECK-NEXT: %29 = select i1 %28, <2 x double> %27, <2 x double> %10
8897 ; CHECK-NEXT: %30 = insertelement <2 x double> %29, double %19, i32 1
8898 ; CHECK-NEXT: %31 = icmp eq i32 3, %20
8899 ; CHECK-NEXT: %32 = select i1 %31, <2 x double> %30, <2 x double> %29
8900 ; CHECK-NEXT: %33 = insertelement <2 x double> %11, double %19, i32 0
8901 ; CHECK-NEXT: %34 = icmp eq i32 4, %20
8902 ; CHECK-NEXT: %35 = select i1 %34, <2 x double> %33, <2 x double> %11
8903 ; CHECK-NEXT: %36 = insertelement <2 x double> %35, double %19, i32 1
8904 ; CHECK-NEXT: %37 = icmp eq i32 5, %20
8905 ; CHECK-NEXT: %38 = select i1 %37, <2 x double> %36, <2 x double> %35
8906 ; CHECK-NEXT: %39 = insertelement <2 x double> %12, double %19, i32 0
8907 ; CHECK-NEXT: %40 = icmp eq i32 6, %20
8908 ; CHECK-NEXT: %41 = select i1 %40, <2 x double> %39, <2 x double> %12
8909 ; CHECK-NEXT: %42 = insertelement <2 x double> %41, double %19, i32 1
8910 ; CHECK-NEXT: %43 = icmp eq i32 7, %20
8911 ; CHECK-NEXT: %44 = select i1 %43, <2 x double> %42, <2 x double> %41
8912 ; CHECK-NEXT: %45 = insertelement <2 x double> %13, double %19, i32 0
8913 ; CHECK-NEXT: %46 = icmp eq i32 8, %20
8914 ; CHECK-NEXT: %47 = select i1 %46, <2 x double> %45, <2 x double> %13
8915 ; CHECK-NEXT: %48 = insertelement <2 x double> %47, double %19, i32 1
8916 ; CHECK-NEXT: %49 = icmp eq i32 9, %20
8917 ; CHECK-NEXT: %50 = select i1 %49, <2 x double> %48, <2 x double> %47
8918 ; CHECK-NEXT: %51 = insertelement <2 x double> %14, double %19, i32 0
8919 ; CHECK-NEXT: %52 = icmp eq i32 10, %20
8920 ; CHECK-NEXT: %53 = select i1 %52, <2 x double> %51, <2 x double> %14
8921 ; CHECK-NEXT: %54 = insertelement <2 x double> %53, double %19, i32 1
8922 ; CHECK-NEXT: %55 = icmp eq i32 11, %20
8923 ; CHECK-NEXT: %56 = select i1 %55, <2 x double> %54, <2 x double> %53
8924 ; CHECK-NEXT: %57 = insertelement <2 x double> %15, double %19, i32 0
8925 ; CHECK-NEXT: %58 = icmp eq i32 12, %20
8926 ; CHECK-NEXT: %59 = select i1 %58, <2 x double> %57, <2 x double> %15
8927 ; CHECK-NEXT: %60 = insertelement <2 x double> %59, double %19, i32 1
8928 ; CHECK-NEXT: %61 = icmp eq i32 13, %20
8929 ; CHECK-NEXT: %62 = select i1 %61, <2 x double> %60, <2 x double> %59
8930 ; CHECK-NEXT: %63 = insertelement <2 x double> %16, double %19, i32 0
8931 ; CHECK-NEXT: %64 = icmp eq i32 14, %20
8932 ; CHECK-NEXT: %65 = select i1 %64, <2 x double> %63, <2 x double> %16
8933 ; CHECK-NEXT: %66 = insertelement <2 x double> %65, double %19, i32 1
8934 ; CHECK-NEXT: %67 = icmp eq i32 15, %20
8935 ; CHECK-NEXT: %68 = select i1 %67, <2 x double> %66, <2 x double> %65
8936 ; CHECK-NEXT: %69 = insertelement <2 x double> %17, double %19, i32 0
8937 ; CHECK-NEXT: %70 = icmp eq i32 16, %20
8938 ; CHECK-NEXT: %71 = select i1 %70, <2 x double> %69, <2 x double> %17
8939 ; CHECK-NEXT: %72 = insertelement <2 x double> %71, double %19, i32 1
8940 ; CHECK-NEXT: %73 = icmp eq i32 17, %20
8941 ; CHECK-NEXT: %74 = select i1 %73, <2 x double> %72, <2 x double> %71
8942 ; CHECK-NEXT: %75 = insertelement <2 x double> %18, double %19, i32 0
8943 ; CHECK-NEXT: %76 = icmp eq i32 18, %20
8944 ; CHECK-NEXT: %77 = select i1 %76, <2 x double> %75, <2 x double> %18
8945 ; CHECK-NEXT: %78 = insertelement <2 x double> %77, double %19, i32 1
8946 ; CHECK-NEXT: %79 = icmp eq i32 19, %20
8947 ; CHECK-NEXT: %80 = select i1 %79, <2 x double> %78, <2 x double> %77
8948 ; CHECK-NEXT: store <2 x double> %32, <2 x double>* %0, align 16
8949 ; CHECK-NEXT: store <2 x double> %38, <2 x double>* %1, align 16
8950 ; CHECK-NEXT: store <2 x double> %44, <2 x double>* %2, align 16
8951 ; CHECK-NEXT: store <2 x double> %50, <2 x double>* %3, align 16
8952 ; CHECK-NEXT: store <2 x double> %56, <2 x double>* %4, align 16
8953 ; CHECK-NEXT: store <2 x double> %62, <2 x double>* %5, align 16
8954 ; CHECK-NEXT: store <2 x double> %68, <2 x double>* %6, align 16
8955 ; CHECK-NEXT: store <2 x double> %74, <2 x double>* %7, align 16
8956 ; CHECK-NEXT: store <2 x double> %80, <2 x double>* %8, align 16
8957 ; CHECK-NEXT: ret <2 x double> %26
8958 ; CHECK-NEXT: }
8959
OLDNEW
« no previous file with comments | « test/Transforms/NaCl/vector-canonicalization-extracts.ll ('k') | test/Transforms/NaCl/vector-canonicalization-loads.ll » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698