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

Side by Side Diff: test/Transforms/NaCl/vector-canonicalization-extracts.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 extractelement 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 i8 @extract_2xi8_at_0(<2 x i8>) {
8 entry:
9 %1 = extractelement <2 x i8> %0, i32 0
10 ret i8 %1
11 }
12 ; CHECK-LABEL: define i8 @extract_2xi8_at_0(<16 x i8>) {
13 ; CHECK: entry:
14 ; CHECK-NEXT: %1 = extractelement <16 x i8> %0, i32 0
15 ; CHECK-NEXT: ret i8 %1
16 ; CHECK-NEXT: }
17
18 define i8 @extract_2xi8_at_1(<2 x i8>) {
19 entry:
20 %1 = extractelement <2 x i8> %0, i32 1
21 ret i8 %1
22 }
23 ; CHECK-LABEL: define i8 @extract_2xi8_at_1(<16 x i8>) {
24 ; CHECK: entry:
25 ; CHECK-NEXT: %1 = extractelement <16 x i8> %0, i32 1
26 ; CHECK-NEXT: ret i8 %1
27 ; CHECK-NEXT: }
28
29 define i8 @extract_2xi8_undef_idx(<2 x i8>) {
30 entry:
31 %1 = extractelement <2 x i8> %0, i32 2
32 ret i8 %1
33 }
34 ; CHECK-LABEL: define i8 @extract_2xi8_undef_idx(<16 x i8>) {
35 ; CHECK: entry:
36 ; CHECK-NEXT: %1 = extractelement <16 x i8> %0, i32 2
37 ; CHECK-NEXT: ret i8 %1
38 ; CHECK-NEXT: }
39
40 define i16 @extract_2xi16_at_0(<2 x i16>) {
41 entry:
42 %1 = extractelement <2 x i16> %0, i32 0
43 ret i16 %1
44 }
45 ; CHECK-LABEL: define i16 @extract_2xi16_at_0(<8 x i16>) {
46 ; CHECK: entry:
47 ; CHECK-NEXT: %1 = extractelement <8 x i16> %0, i32 0
48 ; CHECK-NEXT: ret i16 %1
49 ; CHECK-NEXT: }
50
51 define i16 @extract_2xi16_at_1(<2 x i16>) {
52 entry:
53 %1 = extractelement <2 x i16> %0, i32 1
54 ret i16 %1
55 }
56 ; CHECK-LABEL: define i16 @extract_2xi16_at_1(<8 x i16>) {
57 ; CHECK: entry:
58 ; CHECK-NEXT: %1 = extractelement <8 x i16> %0, i32 1
59 ; CHECK-NEXT: ret i16 %1
60 ; CHECK-NEXT: }
61
62 define i16 @extract_2xi16_undef_idx(<2 x i16>) {
63 entry:
64 %1 = extractelement <2 x i16> %0, i32 2
65 ret i16 %1
66 }
67 ; CHECK-LABEL: define i16 @extract_2xi16_undef_idx(<8 x i16>) {
68 ; CHECK: entry:
69 ; CHECK-NEXT: %1 = extractelement <8 x i16> %0, i32 2
70 ; CHECK-NEXT: ret i16 %1
71 ; CHECK-NEXT: }
72
73 define i32 @extract_2xi32_at_0(<2 x i32>) {
74 entry:
75 %1 = extractelement <2 x i32> %0, i32 0
76 ret i32 %1
77 }
78 ; CHECK-LABEL: define i32 @extract_2xi32_at_0(<4 x i32>) {
79 ; CHECK: entry:
80 ; CHECK-NEXT: %1 = extractelement <4 x i32> %0, i32 0
81 ; CHECK-NEXT: ret i32 %1
82 ; CHECK-NEXT: }
83
84 define i32 @extract_2xi32_at_1(<2 x i32>) {
85 entry:
86 %1 = extractelement <2 x i32> %0, i32 1
87 ret i32 %1
88 }
89 ; CHECK-LABEL: define i32 @extract_2xi32_at_1(<4 x i32>) {
90 ; CHECK: entry:
91 ; CHECK-NEXT: %1 = extractelement <4 x i32> %0, i32 1
92 ; CHECK-NEXT: ret i32 %1
93 ; CHECK-NEXT: }
94
95 define i32 @extract_2xi32_undef_idx(<2 x i32>) {
96 entry:
97 %1 = extractelement <2 x i32> %0, i32 2
98 ret i32 %1
99 }
100 ; CHECK-LABEL: define i32 @extract_2xi32_undef_idx(<4 x i32>) {
101 ; CHECK: entry:
102 ; CHECK-NEXT: %1 = extractelement <4 x i32> %0, i32 2
103 ; CHECK-NEXT: ret i32 %1
104 ; CHECK-NEXT: }
105
106 define i64 @extract_2xi64_at_0(<2 x i64>) {
107 entry:
108 %1 = extractelement <2 x i64> %0, i32 0
109 ret i64 %1
110 }
111 ; CHECK-LABEL: define i64 @extract_2xi64_at_0(<2 x i64>) {
112 ; CHECK: entry:
113 ; CHECK-NEXT: %1 = extractelement <2 x i64> %0, i32 0
114 ; CHECK-NEXT: ret i64 %1
115 ; CHECK-NEXT: }
116
117 define i64 @extract_2xi64_at_1(<2 x i64>) {
118 entry:
119 %1 = extractelement <2 x i64> %0, i32 1
120 ret i64 %1
121 }
122 ; CHECK-LABEL: define i64 @extract_2xi64_at_1(<2 x i64>) {
123 ; CHECK: entry:
124 ; CHECK-NEXT: %1 = extractelement <2 x i64> %0, i32 1
125 ; CHECK-NEXT: ret i64 %1
126 ; CHECK-NEXT: }
127
128 define i64 @extract_2xi64_undef_idx(<2 x i64>) {
129 entry:
130 %1 = extractelement <2 x i64> %0, i32 2
131 ret i64 %1
132 }
133 ; CHECK-LABEL: define i64 @extract_2xi64_undef_idx(<2 x i64>) {
134 ; CHECK: entry:
135 ; CHECK-NEXT: %1 = extractelement <2 x i64> %0, i32 2
136 ; CHECK-NEXT: ret i64 %1
137 ; CHECK-NEXT: }
138
139 define i8* @extract_2xi8ptr_at_0(<2 x i8*>) {
140 entry:
141 %1 = extractelement <2 x i8*> %0, i32 0
142 ret i8* %1
143 }
144 ; CHECK-LABEL: define i8* @extract_2xi8ptr_at_0(<4 x i8*>) {
145 ; CHECK: entry:
146 ; CHECK-NEXT: %1 = extractelement <4 x i8*> %0, i32 0
147 ; CHECK-NEXT: ret i8* %1
148 ; CHECK-NEXT: }
149
150 define i8* @extract_2xi8ptr_at_1(<2 x i8*>) {
151 entry:
152 %1 = extractelement <2 x i8*> %0, i32 1
153 ret i8* %1
154 }
155 ; CHECK-LABEL: define i8* @extract_2xi8ptr_at_1(<4 x i8*>) {
156 ; CHECK: entry:
157 ; CHECK-NEXT: %1 = extractelement <4 x i8*> %0, i32 1
158 ; CHECK-NEXT: ret i8* %1
159 ; CHECK-NEXT: }
160
161 define i8* @extract_2xi8ptr_undef_idx(<2 x i8*>) {
162 entry:
163 %1 = extractelement <2 x i8*> %0, i32 2
164 ret i8* %1
165 }
166 ; CHECK-LABEL: define i8* @extract_2xi8ptr_undef_idx(<4 x i8*>) {
167 ; CHECK: entry:
168 ; CHECK-NEXT: %1 = extractelement <4 x i8*> %0, i32 2
169 ; CHECK-NEXT: ret i8* %1
170 ; CHECK-NEXT: }
171
172 define float @extract_2xfloat_at_0(<2 x float>) {
173 entry:
174 %1 = extractelement <2 x float> %0, i32 0
175 ret float %1
176 }
177 ; CHECK-LABEL: define float @extract_2xfloat_at_0(<4 x float>) {
178 ; CHECK: entry:
179 ; CHECK-NEXT: %1 = extractelement <4 x float> %0, i32 0
180 ; CHECK-NEXT: ret float %1
181 ; CHECK-NEXT: }
182
183 define float @extract_2xfloat_at_1(<2 x float>) {
184 entry:
185 %1 = extractelement <2 x float> %0, i32 1
186 ret float %1
187 }
188 ; CHECK-LABEL: define float @extract_2xfloat_at_1(<4 x float>) {
189 ; CHECK: entry:
190 ; CHECK-NEXT: %1 = extractelement <4 x float> %0, i32 1
191 ; CHECK-NEXT: ret float %1
192 ; CHECK-NEXT: }
193
194 define float @extract_2xfloat_undef_idx(<2 x float>) {
195 entry:
196 %1 = extractelement <2 x float> %0, i32 2
197 ret float %1
198 }
199 ; CHECK-LABEL: define float @extract_2xfloat_undef_idx(<4 x float>) {
200 ; CHECK: entry:
201 ; CHECK-NEXT: %1 = extractelement <4 x float> %0, i32 2
202 ; CHECK-NEXT: ret float %1
203 ; CHECK-NEXT: }
204
205 define double @extract_2xdouble_at_0(<2 x double>) {
206 entry:
207 %1 = extractelement <2 x double> %0, i32 0
208 ret double %1
209 }
210 ; CHECK-LABEL: define double @extract_2xdouble_at_0(<2 x double>) {
211 ; CHECK: entry:
212 ; CHECK-NEXT: %1 = extractelement <2 x double> %0, i32 0
213 ; CHECK-NEXT: ret double %1
214 ; CHECK-NEXT: }
215
216 define double @extract_2xdouble_at_1(<2 x double>) {
217 entry:
218 %1 = extractelement <2 x double> %0, i32 1
219 ret double %1
220 }
221 ; CHECK-LABEL: define double @extract_2xdouble_at_1(<2 x double>) {
222 ; CHECK: entry:
223 ; CHECK-NEXT: %1 = extractelement <2 x double> %0, i32 1
224 ; CHECK-NEXT: ret double %1
225 ; CHECK-NEXT: }
226
227 define double @extract_2xdouble_undef_idx(<2 x double>) {
228 entry:
229 %1 = extractelement <2 x double> %0, i32 2
230 ret double %1
231 }
232 ; CHECK-LABEL: define double @extract_2xdouble_undef_idx(<2 x double>) {
233 ; CHECK: entry:
234 ; CHECK-NEXT: %1 = extractelement <2 x double> %0, i32 2
235 ; CHECK-NEXT: ret double %1
236 ; CHECK-NEXT: }
237
238 define i8 @extract_4xi8_at_0(<4 x i8>) {
239 entry:
240 %1 = extractelement <4 x i8> %0, i32 0
241 ret i8 %1
242 }
243 ; CHECK-LABEL: define i8 @extract_4xi8_at_0(<16 x i8>) {
244 ; CHECK: entry:
245 ; CHECK-NEXT: %1 = extractelement <16 x i8> %0, i32 0
246 ; CHECK-NEXT: ret i8 %1
247 ; CHECK-NEXT: }
248
249 define i8 @extract_4xi8_at_1(<4 x i8>) {
250 entry:
251 %1 = extractelement <4 x i8> %0, i32 1
252 ret i8 %1
253 }
254 ; CHECK-LABEL: define i8 @extract_4xi8_at_1(<16 x i8>) {
255 ; CHECK: entry:
256 ; CHECK-NEXT: %1 = extractelement <16 x i8> %0, i32 1
257 ; CHECK-NEXT: ret i8 %1
258 ; CHECK-NEXT: }
259
260 define i8 @extract_4xi8_at_2(<4 x i8>) {
261 entry:
262 %1 = extractelement <4 x i8> %0, i32 2
263 ret i8 %1
264 }
265 ; CHECK-LABEL: define i8 @extract_4xi8_at_2(<16 x i8>) {
266 ; CHECK: entry:
267 ; CHECK-NEXT: %1 = extractelement <16 x i8> %0, i32 2
268 ; CHECK-NEXT: ret i8 %1
269 ; CHECK-NEXT: }
270
271 define i8 @extract_4xi8_at_3(<4 x i8>) {
272 entry:
273 %1 = extractelement <4 x i8> %0, i32 3
274 ret i8 %1
275 }
276 ; CHECK-LABEL: define i8 @extract_4xi8_at_3(<16 x i8>) {
277 ; CHECK: entry:
278 ; CHECK-NEXT: %1 = extractelement <16 x i8> %0, i32 3
279 ; CHECK-NEXT: ret i8 %1
280 ; CHECK-NEXT: }
281
282 define i8 @extract_4xi8_undef_idx(<4 x i8>) {
283 entry:
284 %1 = extractelement <4 x i8> %0, i32 4
285 ret i8 %1
286 }
287 ; CHECK-LABEL: define i8 @extract_4xi8_undef_idx(<16 x i8>) {
288 ; CHECK: entry:
289 ; CHECK-NEXT: %1 = extractelement <16 x i8> %0, i32 4
290 ; CHECK-NEXT: ret i8 %1
291 ; CHECK-NEXT: }
292
293 define i16 @extract_4xi16_at_0(<4 x i16>) {
294 entry:
295 %1 = extractelement <4 x i16> %0, i32 0
296 ret i16 %1
297 }
298 ; CHECK-LABEL: define i16 @extract_4xi16_at_0(<8 x i16>) {
299 ; CHECK: entry:
300 ; CHECK-NEXT: %1 = extractelement <8 x i16> %0, i32 0
301 ; CHECK-NEXT: ret i16 %1
302 ; CHECK-NEXT: }
303
304 define i16 @extract_4xi16_at_1(<4 x i16>) {
305 entry:
306 %1 = extractelement <4 x i16> %0, i32 1
307 ret i16 %1
308 }
309 ; CHECK-LABEL: define i16 @extract_4xi16_at_1(<8 x i16>) {
310 ; CHECK: entry:
311 ; CHECK-NEXT: %1 = extractelement <8 x i16> %0, i32 1
312 ; CHECK-NEXT: ret i16 %1
313 ; CHECK-NEXT: }
314
315 define i16 @extract_4xi16_at_2(<4 x i16>) {
316 entry:
317 %1 = extractelement <4 x i16> %0, i32 2
318 ret i16 %1
319 }
320 ; CHECK-LABEL: define i16 @extract_4xi16_at_2(<8 x i16>) {
321 ; CHECK: entry:
322 ; CHECK-NEXT: %1 = extractelement <8 x i16> %0, i32 2
323 ; CHECK-NEXT: ret i16 %1
324 ; CHECK-NEXT: }
325
326 define i16 @extract_4xi16_at_3(<4 x i16>) {
327 entry:
328 %1 = extractelement <4 x i16> %0, i32 3
329 ret i16 %1
330 }
331 ; CHECK-LABEL: define i16 @extract_4xi16_at_3(<8 x i16>) {
332 ; CHECK: entry:
333 ; CHECK-NEXT: %1 = extractelement <8 x i16> %0, i32 3
334 ; CHECK-NEXT: ret i16 %1
335 ; CHECK-NEXT: }
336
337 define i16 @extract_4xi16_undef_idx(<4 x i16>) {
338 entry:
339 %1 = extractelement <4 x i16> %0, i32 4
340 ret i16 %1
341 }
342 ; CHECK-LABEL: define i16 @extract_4xi16_undef_idx(<8 x i16>) {
343 ; CHECK: entry:
344 ; CHECK-NEXT: %1 = extractelement <8 x i16> %0, i32 4
345 ; CHECK-NEXT: ret i16 %1
346 ; CHECK-NEXT: }
347
348 define i32 @extract_4xi32_at_0(<4 x i32>) {
349 entry:
350 %1 = extractelement <4 x i32> %0, i32 0
351 ret i32 %1
352 }
353 ; CHECK-LABEL: define i32 @extract_4xi32_at_0(<4 x i32>) {
354 ; CHECK: entry:
355 ; CHECK-NEXT: %1 = extractelement <4 x i32> %0, i32 0
356 ; CHECK-NEXT: ret i32 %1
357 ; CHECK-NEXT: }
358
359 define i32 @extract_4xi32_at_1(<4 x i32>) {
360 entry:
361 %1 = extractelement <4 x i32> %0, i32 1
362 ret i32 %1
363 }
364 ; CHECK-LABEL: define i32 @extract_4xi32_at_1(<4 x i32>) {
365 ; CHECK: entry:
366 ; CHECK-NEXT: %1 = extractelement <4 x i32> %0, i32 1
367 ; CHECK-NEXT: ret i32 %1
368 ; CHECK-NEXT: }
369
370 define i32 @extract_4xi32_at_2(<4 x i32>) {
371 entry:
372 %1 = extractelement <4 x i32> %0, i32 2
373 ret i32 %1
374 }
375 ; CHECK-LABEL: define i32 @extract_4xi32_at_2(<4 x i32>) {
376 ; CHECK: entry:
377 ; CHECK-NEXT: %1 = extractelement <4 x i32> %0, i32 2
378 ; CHECK-NEXT: ret i32 %1
379 ; CHECK-NEXT: }
380
381 define i32 @extract_4xi32_at_3(<4 x i32>) {
382 entry:
383 %1 = extractelement <4 x i32> %0, i32 3
384 ret i32 %1
385 }
386 ; CHECK-LABEL: define i32 @extract_4xi32_at_3(<4 x i32>) {
387 ; CHECK: entry:
388 ; CHECK-NEXT: %1 = extractelement <4 x i32> %0, i32 3
389 ; CHECK-NEXT: ret i32 %1
390 ; CHECK-NEXT: }
391
392 define i32 @extract_4xi32_undef_idx(<4 x i32>) {
393 entry:
394 %1 = extractelement <4 x i32> %0, i32 4
395 ret i32 %1
396 }
397 ; CHECK-LABEL: define i32 @extract_4xi32_undef_idx(<4 x i32>) {
398 ; CHECK: entry:
399 ; CHECK-NEXT: %1 = extractelement <4 x i32> %0, i32 4
400 ; CHECK-NEXT: ret i32 %1
401 ; CHECK-NEXT: }
402
403 define i64 @extract_4xi64_at_0(<4 x i64>) {
404 entry:
405 %1 = extractelement <4 x i64> %0, i32 0
406 ret i64 %1
407 }
408 ; CHECK-LABEL: define i64 @extract_4xi64_at_0(<2 x i64>, <2 x i64>) {
409 ; CHECK: entry:
410 ; CHECK-NEXT: %2 = extractelement <2 x i64> %0, i32 0
411 ; CHECK-NEXT: ret i64 %2
412 ; CHECK-NEXT: }
413
414 define i64 @extract_4xi64_at_1(<4 x i64>) {
415 entry:
416 %1 = extractelement <4 x i64> %0, i32 1
417 ret i64 %1
418 }
419 ; CHECK-LABEL: define i64 @extract_4xi64_at_1(<2 x i64>, <2 x i64>) {
420 ; CHECK: entry:
421 ; CHECK-NEXT: %2 = extractelement <2 x i64> %0, i32 1
422 ; CHECK-NEXT: ret i64 %2
423 ; CHECK-NEXT: }
424
425 define i64 @extract_4xi64_at_2(<4 x i64>) {
426 entry:
427 %1 = extractelement <4 x i64> %0, i32 2
428 ret i64 %1
429 }
430 ; CHECK-LABEL: define i64 @extract_4xi64_at_2(<2 x i64>, <2 x i64>) {
431 ; CHECK: entry:
432 ; CHECK-NEXT: %2 = extractelement <2 x i64> %1, i32 0
433 ; CHECK-NEXT: ret i64 %2
434 ; CHECK-NEXT: }
435
436 define i64 @extract_4xi64_at_3(<4 x i64>) {
437 entry:
438 %1 = extractelement <4 x i64> %0, i32 3
439 ret i64 %1
440 }
441 ; CHECK-LABEL: define i64 @extract_4xi64_at_3(<2 x i64>, <2 x i64>) {
442 ; CHECK: entry:
443 ; CHECK-NEXT: %2 = extractelement <2 x i64> %1, i32 1
444 ; CHECK-NEXT: ret i64 %2
445 ; CHECK-NEXT: }
446
447 define i64 @extract_4xi64_undef_idx(<4 x i64>) {
448 entry:
449 %1 = extractelement <4 x i64> %0, i32 4
450 ret i64 %1
451 }
452 ; CHECK-LABEL: define i64 @extract_4xi64_undef_idx(<2 x i64>, <2 x i64>) {
453 ; CHECK: entry:
454 ; CHECK-NEXT: %2 = extractelement <2 x i64> %1, i32 2
455 ; CHECK-NEXT: ret i64 %2
456 ; CHECK-NEXT: }
457
458 define i8* @extract_4xi8ptr_at_0(<4 x i8*>) {
459 entry:
460 %1 = extractelement <4 x i8*> %0, i32 0
461 ret i8* %1
462 }
463 ; CHECK-LABEL: define i8* @extract_4xi8ptr_at_0(<4 x i8*>) {
464 ; CHECK: entry:
465 ; CHECK-NEXT: %1 = extractelement <4 x i8*> %0, i32 0
466 ; CHECK-NEXT: ret i8* %1
467 ; CHECK-NEXT: }
468
469 define i8* @extract_4xi8ptr_at_1(<4 x i8*>) {
470 entry:
471 %1 = extractelement <4 x i8*> %0, i32 1
472 ret i8* %1
473 }
474 ; CHECK-LABEL: define i8* @extract_4xi8ptr_at_1(<4 x i8*>) {
475 ; CHECK: entry:
476 ; CHECK-NEXT: %1 = extractelement <4 x i8*> %0, i32 1
477 ; CHECK-NEXT: ret i8* %1
478 ; CHECK-NEXT: }
479
480 define i8* @extract_4xi8ptr_at_2(<4 x i8*>) {
481 entry:
482 %1 = extractelement <4 x i8*> %0, i32 2
483 ret i8* %1
484 }
485 ; CHECK-LABEL: define i8* @extract_4xi8ptr_at_2(<4 x i8*>) {
486 ; CHECK: entry:
487 ; CHECK-NEXT: %1 = extractelement <4 x i8*> %0, i32 2
488 ; CHECK-NEXT: ret i8* %1
489 ; CHECK-NEXT: }
490
491 define i8* @extract_4xi8ptr_at_3(<4 x i8*>) {
492 entry:
493 %1 = extractelement <4 x i8*> %0, i32 3
494 ret i8* %1
495 }
496 ; CHECK-LABEL: define i8* @extract_4xi8ptr_at_3(<4 x i8*>) {
497 ; CHECK: entry:
498 ; CHECK-NEXT: %1 = extractelement <4 x i8*> %0, i32 3
499 ; CHECK-NEXT: ret i8* %1
500 ; CHECK-NEXT: }
501
502 define i8* @extract_4xi8ptr_undef_idx(<4 x i8*>) {
503 entry:
504 %1 = extractelement <4 x i8*> %0, i32 4
505 ret i8* %1
506 }
507 ; CHECK-LABEL: define i8* @extract_4xi8ptr_undef_idx(<4 x i8*>) {
508 ; CHECK: entry:
509 ; CHECK-NEXT: %1 = extractelement <4 x i8*> %0, i32 4
510 ; CHECK-NEXT: ret i8* %1
511 ; CHECK-NEXT: }
512
513 define float @extract_4xfloat_at_0(<4 x float>) {
514 entry:
515 %1 = extractelement <4 x float> %0, i32 0
516 ret float %1
517 }
518 ; CHECK-LABEL: define float @extract_4xfloat_at_0(<4 x float>) {
519 ; CHECK: entry:
520 ; CHECK-NEXT: %1 = extractelement <4 x float> %0, i32 0
521 ; CHECK-NEXT: ret float %1
522 ; CHECK-NEXT: }
523
524 define float @extract_4xfloat_at_1(<4 x float>) {
525 entry:
526 %1 = extractelement <4 x float> %0, i32 1
527 ret float %1
528 }
529 ; CHECK-LABEL: define float @extract_4xfloat_at_1(<4 x float>) {
530 ; CHECK: entry:
531 ; CHECK-NEXT: %1 = extractelement <4 x float> %0, i32 1
532 ; CHECK-NEXT: ret float %1
533 ; CHECK-NEXT: }
534
535 define float @extract_4xfloat_at_2(<4 x float>) {
536 entry:
537 %1 = extractelement <4 x float> %0, i32 2
538 ret float %1
539 }
540 ; CHECK-LABEL: define float @extract_4xfloat_at_2(<4 x float>) {
541 ; CHECK: entry:
542 ; CHECK-NEXT: %1 = extractelement <4 x float> %0, i32 2
543 ; CHECK-NEXT: ret float %1
544 ; CHECK-NEXT: }
545
546 define float @extract_4xfloat_at_3(<4 x float>) {
547 entry:
548 %1 = extractelement <4 x float> %0, i32 3
549 ret float %1
550 }
551 ; CHECK-LABEL: define float @extract_4xfloat_at_3(<4 x float>) {
552 ; CHECK: entry:
553 ; CHECK-NEXT: %1 = extractelement <4 x float> %0, i32 3
554 ; CHECK-NEXT: ret float %1
555 ; CHECK-NEXT: }
556
557 define float @extract_4xfloat_undef_idx(<4 x float>) {
558 entry:
559 %1 = extractelement <4 x float> %0, i32 4
560 ret float %1
561 }
562 ; CHECK-LABEL: define float @extract_4xfloat_undef_idx(<4 x float>) {
563 ; CHECK: entry:
564 ; CHECK-NEXT: %1 = extractelement <4 x float> %0, i32 4
565 ; CHECK-NEXT: ret float %1
566 ; CHECK-NEXT: }
567
568 define double @extract_4xdouble_at_0(<4 x double>) {
569 entry:
570 %1 = extractelement <4 x double> %0, i32 0
571 ret double %1
572 }
573 ; CHECK-LABEL: define double @extract_4xdouble_at_0(<2 x double>, <2 x double>) {
574 ; CHECK: entry:
575 ; CHECK-NEXT: %2 = extractelement <2 x double> %0, i32 0
576 ; CHECK-NEXT: ret double %2
577 ; CHECK-NEXT: }
578
579 define double @extract_4xdouble_at_1(<4 x double>) {
580 entry:
581 %1 = extractelement <4 x double> %0, i32 1
582 ret double %1
583 }
584 ; CHECK-LABEL: define double @extract_4xdouble_at_1(<2 x double>, <2 x double>) {
585 ; CHECK: entry:
586 ; CHECK-NEXT: %2 = extractelement <2 x double> %0, i32 1
587 ; CHECK-NEXT: ret double %2
588 ; CHECK-NEXT: }
589
590 define double @extract_4xdouble_at_2(<4 x double>) {
591 entry:
592 %1 = extractelement <4 x double> %0, i32 2
593 ret double %1
594 }
595 ; CHECK-LABEL: define double @extract_4xdouble_at_2(<2 x double>, <2 x double>) {
596 ; CHECK: entry:
597 ; CHECK-NEXT: %2 = extractelement <2 x double> %1, i32 0
598 ; CHECK-NEXT: ret double %2
599 ; CHECK-NEXT: }
600
601 define double @extract_4xdouble_at_3(<4 x double>) {
602 entry:
603 %1 = extractelement <4 x double> %0, i32 3
604 ret double %1
605 }
606 ; CHECK-LABEL: define double @extract_4xdouble_at_3(<2 x double>, <2 x double>) {
607 ; CHECK: entry:
608 ; CHECK-NEXT: %2 = extractelement <2 x double> %1, i32 1
609 ; CHECK-NEXT: ret double %2
610 ; CHECK-NEXT: }
611
612 define double @extract_4xdouble_undef_idx(<4 x double>) {
613 entry:
614 %1 = extractelement <4 x double> %0, i32 4
615 ret double %1
616 }
617 ; CHECK-LABEL: define double @extract_4xdouble_undef_idx(<2 x double>, <2 x doub le>) {
618 ; CHECK: entry:
619 ; CHECK-NEXT: %2 = extractelement <2 x double> %1, i32 2
620 ; CHECK-NEXT: ret double %2
621 ; CHECK-NEXT: }
622
623 define i8 @extract_6xi8_at_0(<6 x i8>) {
624 entry:
625 %1 = extractelement <6 x i8> %0, i32 0
626 ret i8 %1
627 }
628 ; CHECK-LABEL: define i8 @extract_6xi8_at_0(<16 x i8>) {
629 ; CHECK: entry:
630 ; CHECK-NEXT: %1 = extractelement <16 x i8> %0, i32 0
631 ; CHECK-NEXT: ret i8 %1
632 ; CHECK-NEXT: }
633
634 define i8 @extract_6xi8_at_1(<6 x i8>) {
635 entry:
636 %1 = extractelement <6 x i8> %0, i32 1
637 ret i8 %1
638 }
639 ; CHECK-LABEL: define i8 @extract_6xi8_at_1(<16 x i8>) {
640 ; CHECK: entry:
641 ; CHECK-NEXT: %1 = extractelement <16 x i8> %0, i32 1
642 ; CHECK-NEXT: ret i8 %1
643 ; CHECK-NEXT: }
644
645 define i8 @extract_6xi8_at_2(<6 x i8>) {
646 entry:
647 %1 = extractelement <6 x i8> %0, i32 2
648 ret i8 %1
649 }
650 ; CHECK-LABEL: define i8 @extract_6xi8_at_2(<16 x i8>) {
651 ; CHECK: entry:
652 ; CHECK-NEXT: %1 = extractelement <16 x i8> %0, i32 2
653 ; CHECK-NEXT: ret i8 %1
654 ; CHECK-NEXT: }
655
656 define i8 @extract_6xi8_at_3(<6 x i8>) {
657 entry:
658 %1 = extractelement <6 x i8> %0, i32 3
659 ret i8 %1
660 }
661 ; CHECK-LABEL: define i8 @extract_6xi8_at_3(<16 x i8>) {
662 ; CHECK: entry:
663 ; CHECK-NEXT: %1 = extractelement <16 x i8> %0, i32 3
664 ; CHECK-NEXT: ret i8 %1
665 ; CHECK-NEXT: }
666
667 define i8 @extract_6xi8_at_4(<6 x i8>) {
668 entry:
669 %1 = extractelement <6 x i8> %0, i32 4
670 ret i8 %1
671 }
672 ; CHECK-LABEL: define i8 @extract_6xi8_at_4(<16 x i8>) {
673 ; CHECK: entry:
674 ; CHECK-NEXT: %1 = extractelement <16 x i8> %0, i32 4
675 ; CHECK-NEXT: ret i8 %1
676 ; CHECK-NEXT: }
677
678 define i8 @extract_6xi8_at_5(<6 x i8>) {
679 entry:
680 %1 = extractelement <6 x i8> %0, i32 5
681 ret i8 %1
682 }
683 ; CHECK-LABEL: define i8 @extract_6xi8_at_5(<16 x i8>) {
684 ; CHECK: entry:
685 ; CHECK-NEXT: %1 = extractelement <16 x i8> %0, i32 5
686 ; CHECK-NEXT: ret i8 %1
687 ; CHECK-NEXT: }
688
689 define i8 @extract_6xi8_undef_idx(<6 x i8>) {
690 entry:
691 %1 = extractelement <6 x i8> %0, i32 6
692 ret i8 %1
693 }
694 ; CHECK-LABEL: define i8 @extract_6xi8_undef_idx(<16 x i8>) {
695 ; CHECK: entry:
696 ; CHECK-NEXT: %1 = extractelement <16 x i8> %0, i32 6
697 ; CHECK-NEXT: ret i8 %1
698 ; CHECK-NEXT: }
699
700 define i16 @extract_6xi16_at_0(<6 x i16>) {
701 entry:
702 %1 = extractelement <6 x i16> %0, i32 0
703 ret i16 %1
704 }
705 ; CHECK-LABEL: define i16 @extract_6xi16_at_0(<8 x i16>) {
706 ; CHECK: entry:
707 ; CHECK-NEXT: %1 = extractelement <8 x i16> %0, i32 0
708 ; CHECK-NEXT: ret i16 %1
709 ; CHECK-NEXT: }
710
711 define i16 @extract_6xi16_at_1(<6 x i16>) {
712 entry:
713 %1 = extractelement <6 x i16> %0, i32 1
714 ret i16 %1
715 }
716 ; CHECK-LABEL: define i16 @extract_6xi16_at_1(<8 x i16>) {
717 ; CHECK: entry:
718 ; CHECK-NEXT: %1 = extractelement <8 x i16> %0, i32 1
719 ; CHECK-NEXT: ret i16 %1
720 ; CHECK-NEXT: }
721
722 define i16 @extract_6xi16_at_2(<6 x i16>) {
723 entry:
724 %1 = extractelement <6 x i16> %0, i32 2
725 ret i16 %1
726 }
727 ; CHECK-LABEL: define i16 @extract_6xi16_at_2(<8 x i16>) {
728 ; CHECK: entry:
729 ; CHECK-NEXT: %1 = extractelement <8 x i16> %0, i32 2
730 ; CHECK-NEXT: ret i16 %1
731 ; CHECK-NEXT: }
732
733 define i16 @extract_6xi16_at_3(<6 x i16>) {
734 entry:
735 %1 = extractelement <6 x i16> %0, i32 3
736 ret i16 %1
737 }
738 ; CHECK-LABEL: define i16 @extract_6xi16_at_3(<8 x i16>) {
739 ; CHECK: entry:
740 ; CHECK-NEXT: %1 = extractelement <8 x i16> %0, i32 3
741 ; CHECK-NEXT: ret i16 %1
742 ; CHECK-NEXT: }
743
744 define i16 @extract_6xi16_at_4(<6 x i16>) {
745 entry:
746 %1 = extractelement <6 x i16> %0, i32 4
747 ret i16 %1
748 }
749 ; CHECK-LABEL: define i16 @extract_6xi16_at_4(<8 x i16>) {
750 ; CHECK: entry:
751 ; CHECK-NEXT: %1 = extractelement <8 x i16> %0, i32 4
752 ; CHECK-NEXT: ret i16 %1
753 ; CHECK-NEXT: }
754
755 define i16 @extract_6xi16_at_5(<6 x i16>) {
756 entry:
757 %1 = extractelement <6 x i16> %0, i32 5
758 ret i16 %1
759 }
760 ; CHECK-LABEL: define i16 @extract_6xi16_at_5(<8 x i16>) {
761 ; CHECK: entry:
762 ; CHECK-NEXT: %1 = extractelement <8 x i16> %0, i32 5
763 ; CHECK-NEXT: ret i16 %1
764 ; CHECK-NEXT: }
765
766 define i16 @extract_6xi16_undef_idx(<6 x i16>) {
767 entry:
768 %1 = extractelement <6 x i16> %0, i32 6
769 ret i16 %1
770 }
771 ; CHECK-LABEL: define i16 @extract_6xi16_undef_idx(<8 x i16>) {
772 ; CHECK: entry:
773 ; CHECK-NEXT: %1 = extractelement <8 x i16> %0, i32 6
774 ; CHECK-NEXT: ret i16 %1
775 ; CHECK-NEXT: }
776
777 define i32 @extract_6xi32_at_0(<6 x i32>) {
778 entry:
779 %1 = extractelement <6 x i32> %0, i32 0
780 ret i32 %1
781 }
782 ; CHECK-LABEL: define i32 @extract_6xi32_at_0(<4 x i32>, <4 x i32>) {
783 ; CHECK: entry:
784 ; CHECK-NEXT: %2 = extractelement <4 x i32> %0, i32 0
785 ; CHECK-NEXT: ret i32 %2
786 ; CHECK-NEXT: }
787
788 define i32 @extract_6xi32_at_1(<6 x i32>) {
789 entry:
790 %1 = extractelement <6 x i32> %0, i32 1
791 ret i32 %1
792 }
793 ; CHECK-LABEL: define i32 @extract_6xi32_at_1(<4 x i32>, <4 x i32>) {
794 ; CHECK: entry:
795 ; CHECK-NEXT: %2 = extractelement <4 x i32> %0, i32 1
796 ; CHECK-NEXT: ret i32 %2
797 ; CHECK-NEXT: }
798
799 define i32 @extract_6xi32_at_2(<6 x i32>) {
800 entry:
801 %1 = extractelement <6 x i32> %0, i32 2
802 ret i32 %1
803 }
804 ; CHECK-LABEL: define i32 @extract_6xi32_at_2(<4 x i32>, <4 x i32>) {
805 ; CHECK: entry:
806 ; CHECK-NEXT: %2 = extractelement <4 x i32> %0, i32 2
807 ; CHECK-NEXT: ret i32 %2
808 ; CHECK-NEXT: }
809
810 define i32 @extract_6xi32_at_3(<6 x i32>) {
811 entry:
812 %1 = extractelement <6 x i32> %0, i32 3
813 ret i32 %1
814 }
815 ; CHECK-LABEL: define i32 @extract_6xi32_at_3(<4 x i32>, <4 x i32>) {
816 ; CHECK: entry:
817 ; CHECK-NEXT: %2 = extractelement <4 x i32> %0, i32 3
818 ; CHECK-NEXT: ret i32 %2
819 ; CHECK-NEXT: }
820
821 define i32 @extract_6xi32_at_4(<6 x i32>) {
822 entry:
823 %1 = extractelement <6 x i32> %0, i32 4
824 ret i32 %1
825 }
826 ; CHECK-LABEL: define i32 @extract_6xi32_at_4(<4 x i32>, <4 x i32>) {
827 ; CHECK: entry:
828 ; CHECK-NEXT: %2 = extractelement <4 x i32> %1, i32 0
829 ; CHECK-NEXT: ret i32 %2
830 ; CHECK-NEXT: }
831
832 define i32 @extract_6xi32_at_5(<6 x i32>) {
833 entry:
834 %1 = extractelement <6 x i32> %0, i32 5
835 ret i32 %1
836 }
837 ; CHECK-LABEL: define i32 @extract_6xi32_at_5(<4 x i32>, <4 x i32>) {
838 ; CHECK: entry:
839 ; CHECK-NEXT: %2 = extractelement <4 x i32> %1, i32 1
840 ; CHECK-NEXT: ret i32 %2
841 ; CHECK-NEXT: }
842
843 define i32 @extract_6xi32_undef_idx(<6 x i32>) {
844 entry:
845 %1 = extractelement <6 x i32> %0, i32 6
846 ret i32 %1
847 }
848 ; CHECK-LABEL: define i32 @extract_6xi32_undef_idx(<4 x i32>, <4 x i32>) {
849 ; CHECK: entry:
850 ; CHECK-NEXT: %2 = extractelement <4 x i32> %1, i32 2
851 ; CHECK-NEXT: ret i32 %2
852 ; CHECK-NEXT: }
853
854 define i64 @extract_6xi64_at_0(<6 x i64>) {
855 entry:
856 %1 = extractelement <6 x i64> %0, i32 0
857 ret i64 %1
858 }
859 ; CHECK-LABEL: define i64 @extract_6xi64_at_0(<2 x i64>, <2 x i64>, <2 x i64>) {
860 ; CHECK: entry:
861 ; CHECK-NEXT: %3 = extractelement <2 x i64> %0, i32 0
862 ; CHECK-NEXT: ret i64 %3
863 ; CHECK-NEXT: }
864
865 define i64 @extract_6xi64_at_1(<6 x i64>) {
866 entry:
867 %1 = extractelement <6 x i64> %0, i32 1
868 ret i64 %1
869 }
870 ; CHECK-LABEL: define i64 @extract_6xi64_at_1(<2 x i64>, <2 x i64>, <2 x i64>) {
871 ; CHECK: entry:
872 ; CHECK-NEXT: %3 = extractelement <2 x i64> %0, i32 1
873 ; CHECK-NEXT: ret i64 %3
874 ; CHECK-NEXT: }
875
876 define i64 @extract_6xi64_at_2(<6 x i64>) {
877 entry:
878 %1 = extractelement <6 x i64> %0, i32 2
879 ret i64 %1
880 }
881 ; CHECK-LABEL: define i64 @extract_6xi64_at_2(<2 x i64>, <2 x i64>, <2 x i64>) {
882 ; CHECK: entry:
883 ; CHECK-NEXT: %3 = extractelement <2 x i64> %1, i32 0
884 ; CHECK-NEXT: ret i64 %3
885 ; CHECK-NEXT: }
886
887 define i64 @extract_6xi64_at_3(<6 x i64>) {
888 entry:
889 %1 = extractelement <6 x i64> %0, i32 3
890 ret i64 %1
891 }
892 ; CHECK-LABEL: define i64 @extract_6xi64_at_3(<2 x i64>, <2 x i64>, <2 x i64>) {
893 ; CHECK: entry:
894 ; CHECK-NEXT: %3 = extractelement <2 x i64> %1, i32 1
895 ; CHECK-NEXT: ret i64 %3
896 ; CHECK-NEXT: }
897
898 define i64 @extract_6xi64_at_4(<6 x i64>) {
899 entry:
900 %1 = extractelement <6 x i64> %0, i32 4
901 ret i64 %1
902 }
903 ; CHECK-LABEL: define i64 @extract_6xi64_at_4(<2 x i64>, <2 x i64>, <2 x i64>) {
904 ; CHECK: entry:
905 ; CHECK-NEXT: %3 = extractelement <2 x i64> %2, i32 0
906 ; CHECK-NEXT: ret i64 %3
907 ; CHECK-NEXT: }
908
909 define i64 @extract_6xi64_at_5(<6 x i64>) {
910 entry:
911 %1 = extractelement <6 x i64> %0, i32 5
912 ret i64 %1
913 }
914 ; CHECK-LABEL: define i64 @extract_6xi64_at_5(<2 x i64>, <2 x i64>, <2 x i64>) {
915 ; CHECK: entry:
916 ; CHECK-NEXT: %3 = extractelement <2 x i64> %2, i32 1
917 ; CHECK-NEXT: ret i64 %3
918 ; CHECK-NEXT: }
919
920 define i64 @extract_6xi64_undef_idx(<6 x i64>) {
921 entry:
922 %1 = extractelement <6 x i64> %0, i32 6
923 ret i64 %1
924 }
925 ; CHECK-LABEL: define i64 @extract_6xi64_undef_idx(<2 x i64>, <2 x i64>, <2 x i6 4>) {
926 ; CHECK: entry:
927 ; CHECK-NEXT: %3 = extractelement <2 x i64> %2, i32 2
928 ; CHECK-NEXT: ret i64 %3
929 ; CHECK-NEXT: }
930
931 define i8* @extract_6xi8ptr_at_0(<6 x i8*>) {
932 entry:
933 %1 = extractelement <6 x i8*> %0, i32 0
934 ret i8* %1
935 }
936 ; CHECK-LABEL: define i8* @extract_6xi8ptr_at_0(<4 x i8*>, <4 x i8*>) {
937 ; CHECK: entry:
938 ; CHECK-NEXT: %2 = extractelement <4 x i8*> %0, i32 0
939 ; CHECK-NEXT: ret i8* %2
940 ; CHECK-NEXT: }
941
942 define i8* @extract_6xi8ptr_at_1(<6 x i8*>) {
943 entry:
944 %1 = extractelement <6 x i8*> %0, i32 1
945 ret i8* %1
946 }
947 ; CHECK-LABEL: define i8* @extract_6xi8ptr_at_1(<4 x i8*>, <4 x i8*>) {
948 ; CHECK: entry:
949 ; CHECK-NEXT: %2 = extractelement <4 x i8*> %0, i32 1
950 ; CHECK-NEXT: ret i8* %2
951 ; CHECK-NEXT: }
952
953 define i8* @extract_6xi8ptr_at_2(<6 x i8*>) {
954 entry:
955 %1 = extractelement <6 x i8*> %0, i32 2
956 ret i8* %1
957 }
958 ; CHECK-LABEL: define i8* @extract_6xi8ptr_at_2(<4 x i8*>, <4 x i8*>) {
959 ; CHECK: entry:
960 ; CHECK-NEXT: %2 = extractelement <4 x i8*> %0, i32 2
961 ; CHECK-NEXT: ret i8* %2
962 ; CHECK-NEXT: }
963
964 define i8* @extract_6xi8ptr_at_3(<6 x i8*>) {
965 entry:
966 %1 = extractelement <6 x i8*> %0, i32 3
967 ret i8* %1
968 }
969 ; CHECK-LABEL: define i8* @extract_6xi8ptr_at_3(<4 x i8*>, <4 x i8*>) {
970 ; CHECK: entry:
971 ; CHECK-NEXT: %2 = extractelement <4 x i8*> %0, i32 3
972 ; CHECK-NEXT: ret i8* %2
973 ; CHECK-NEXT: }
974
975 define i8* @extract_6xi8ptr_at_4(<6 x i8*>) {
976 entry:
977 %1 = extractelement <6 x i8*> %0, i32 4
978 ret i8* %1
979 }
980 ; CHECK-LABEL: define i8* @extract_6xi8ptr_at_4(<4 x i8*>, <4 x i8*>) {
981 ; CHECK: entry:
982 ; CHECK-NEXT: %2 = extractelement <4 x i8*> %1, i32 0
983 ; CHECK-NEXT: ret i8* %2
984 ; CHECK-NEXT: }
985
986 define i8* @extract_6xi8ptr_at_5(<6 x i8*>) {
987 entry:
988 %1 = extractelement <6 x i8*> %0, i32 5
989 ret i8* %1
990 }
991 ; CHECK-LABEL: define i8* @extract_6xi8ptr_at_5(<4 x i8*>, <4 x i8*>) {
992 ; CHECK: entry:
993 ; CHECK-NEXT: %2 = extractelement <4 x i8*> %1, i32 1
994 ; CHECK-NEXT: ret i8* %2
995 ; CHECK-NEXT: }
996
997 define i8* @extract_6xi8ptr_undef_idx(<6 x i8*>) {
998 entry:
999 %1 = extractelement <6 x i8*> %0, i32 6
1000 ret i8* %1
1001 }
1002 ; CHECK-LABEL: define i8* @extract_6xi8ptr_undef_idx(<4 x i8*>, <4 x i8*>) {
1003 ; CHECK: entry:
1004 ; CHECK-NEXT: %2 = extractelement <4 x i8*> %1, i32 2
1005 ; CHECK-NEXT: ret i8* %2
1006 ; CHECK-NEXT: }
1007
1008 define float @extract_6xfloat_at_0(<6 x float>) {
1009 entry:
1010 %1 = extractelement <6 x float> %0, i32 0
1011 ret float %1
1012 }
1013 ; CHECK-LABEL: define float @extract_6xfloat_at_0(<4 x float>, <4 x float>) {
1014 ; CHECK: entry:
1015 ; CHECK-NEXT: %2 = extractelement <4 x float> %0, i32 0
1016 ; CHECK-NEXT: ret float %2
1017 ; CHECK-NEXT: }
1018
1019 define float @extract_6xfloat_at_1(<6 x float>) {
1020 entry:
1021 %1 = extractelement <6 x float> %0, i32 1
1022 ret float %1
1023 }
1024 ; CHECK-LABEL: define float @extract_6xfloat_at_1(<4 x float>, <4 x float>) {
1025 ; CHECK: entry:
1026 ; CHECK-NEXT: %2 = extractelement <4 x float> %0, i32 1
1027 ; CHECK-NEXT: ret float %2
1028 ; CHECK-NEXT: }
1029
1030 define float @extract_6xfloat_at_2(<6 x float>) {
1031 entry:
1032 %1 = extractelement <6 x float> %0, i32 2
1033 ret float %1
1034 }
1035 ; CHECK-LABEL: define float @extract_6xfloat_at_2(<4 x float>, <4 x float>) {
1036 ; CHECK: entry:
1037 ; CHECK-NEXT: %2 = extractelement <4 x float> %0, i32 2
1038 ; CHECK-NEXT: ret float %2
1039 ; CHECK-NEXT: }
1040
1041 define float @extract_6xfloat_at_3(<6 x float>) {
1042 entry:
1043 %1 = extractelement <6 x float> %0, i32 3
1044 ret float %1
1045 }
1046 ; CHECK-LABEL: define float @extract_6xfloat_at_3(<4 x float>, <4 x float>) {
1047 ; CHECK: entry:
1048 ; CHECK-NEXT: %2 = extractelement <4 x float> %0, i32 3
1049 ; CHECK-NEXT: ret float %2
1050 ; CHECK-NEXT: }
1051
1052 define float @extract_6xfloat_at_4(<6 x float>) {
1053 entry:
1054 %1 = extractelement <6 x float> %0, i32 4
1055 ret float %1
1056 }
1057 ; CHECK-LABEL: define float @extract_6xfloat_at_4(<4 x float>, <4 x float>) {
1058 ; CHECK: entry:
1059 ; CHECK-NEXT: %2 = extractelement <4 x float> %1, i32 0
1060 ; CHECK-NEXT: ret float %2
1061 ; CHECK-NEXT: }
1062
1063 define float @extract_6xfloat_at_5(<6 x float>) {
1064 entry:
1065 %1 = extractelement <6 x float> %0, i32 5
1066 ret float %1
1067 }
1068 ; CHECK-LABEL: define float @extract_6xfloat_at_5(<4 x float>, <4 x float>) {
1069 ; CHECK: entry:
1070 ; CHECK-NEXT: %2 = extractelement <4 x float> %1, i32 1
1071 ; CHECK-NEXT: ret float %2
1072 ; CHECK-NEXT: }
1073
1074 define float @extract_6xfloat_undef_idx(<6 x float>) {
1075 entry:
1076 %1 = extractelement <6 x float> %0, i32 6
1077 ret float %1
1078 }
1079 ; CHECK-LABEL: define float @extract_6xfloat_undef_idx(<4 x float>, <4 x float>) {
1080 ; CHECK: entry:
1081 ; CHECK-NEXT: %2 = extractelement <4 x float> %1, i32 2
1082 ; CHECK-NEXT: ret float %2
1083 ; CHECK-NEXT: }
1084
1085 define double @extract_6xdouble_at_0(<6 x double>) {
1086 entry:
1087 %1 = extractelement <6 x double> %0, i32 0
1088 ret double %1
1089 }
1090 ; CHECK-LABEL: define double @extract_6xdouble_at_0(<2 x double>, <2 x double>, <2 x double>) {
1091 ; CHECK: entry:
1092 ; CHECK-NEXT: %3 = extractelement <2 x double> %0, i32 0
1093 ; CHECK-NEXT: ret double %3
1094 ; CHECK-NEXT: }
1095
1096 define double @extract_6xdouble_at_1(<6 x double>) {
1097 entry:
1098 %1 = extractelement <6 x double> %0, i32 1
1099 ret double %1
1100 }
1101 ; CHECK-LABEL: define double @extract_6xdouble_at_1(<2 x double>, <2 x double>, <2 x double>) {
1102 ; CHECK: entry:
1103 ; CHECK-NEXT: %3 = extractelement <2 x double> %0, i32 1
1104 ; CHECK-NEXT: ret double %3
1105 ; CHECK-NEXT: }
1106
1107 define double @extract_6xdouble_at_2(<6 x double>) {
1108 entry:
1109 %1 = extractelement <6 x double> %0, i32 2
1110 ret double %1
1111 }
1112 ; CHECK-LABEL: define double @extract_6xdouble_at_2(<2 x double>, <2 x double>, <2 x double>) {
1113 ; CHECK: entry:
1114 ; CHECK-NEXT: %3 = extractelement <2 x double> %1, i32 0
1115 ; CHECK-NEXT: ret double %3
1116 ; CHECK-NEXT: }
1117
1118 define double @extract_6xdouble_at_3(<6 x double>) {
1119 entry:
1120 %1 = extractelement <6 x double> %0, i32 3
1121 ret double %1
1122 }
1123 ; CHECK-LABEL: define double @extract_6xdouble_at_3(<2 x double>, <2 x double>, <2 x double>) {
1124 ; CHECK: entry:
1125 ; CHECK-NEXT: %3 = extractelement <2 x double> %1, i32 1
1126 ; CHECK-NEXT: ret double %3
1127 ; CHECK-NEXT: }
1128
1129 define double @extract_6xdouble_at_4(<6 x double>) {
1130 entry:
1131 %1 = extractelement <6 x double> %0, i32 4
1132 ret double %1
1133 }
1134 ; CHECK-LABEL: define double @extract_6xdouble_at_4(<2 x double>, <2 x double>, <2 x double>) {
1135 ; CHECK: entry:
1136 ; CHECK-NEXT: %3 = extractelement <2 x double> %2, i32 0
1137 ; CHECK-NEXT: ret double %3
1138 ; CHECK-NEXT: }
1139
1140 define double @extract_6xdouble_at_5(<6 x double>) {
1141 entry:
1142 %1 = extractelement <6 x double> %0, i32 5
1143 ret double %1
1144 }
1145 ; CHECK-LABEL: define double @extract_6xdouble_at_5(<2 x double>, <2 x double>, <2 x double>) {
1146 ; CHECK: entry:
1147 ; CHECK-NEXT: %3 = extractelement <2 x double> %2, i32 1
1148 ; CHECK-NEXT: ret double %3
1149 ; CHECK-NEXT: }
1150
1151 define double @extract_6xdouble_undef_idx(<6 x double>) {
1152 entry:
1153 %1 = extractelement <6 x double> %0, i32 6
1154 ret double %1
1155 }
1156 ; CHECK-LABEL: define double @extract_6xdouble_undef_idx(<2 x double>, <2 x doub le>, <2 x double>) {
1157 ; CHECK: entry:
1158 ; CHECK-NEXT: %3 = extractelement <2 x double> %2, i32 2
1159 ; CHECK-NEXT: ret double %3
1160 ; CHECK-NEXT: }
1161
1162 define i8 @extract_8xi8_at_0(<8 x i8>) {
1163 entry:
1164 %1 = extractelement <8 x i8> %0, i32 0
1165 ret i8 %1
1166 }
1167 ; CHECK-LABEL: define i8 @extract_8xi8_at_0(<16 x i8>) {
1168 ; CHECK: entry:
1169 ; CHECK-NEXT: %1 = extractelement <16 x i8> %0, i32 0
1170 ; CHECK-NEXT: ret i8 %1
1171 ; CHECK-NEXT: }
1172
1173 define i8 @extract_8xi8_at_1(<8 x i8>) {
1174 entry:
1175 %1 = extractelement <8 x i8> %0, i32 1
1176 ret i8 %1
1177 }
1178 ; CHECK-LABEL: define i8 @extract_8xi8_at_1(<16 x i8>) {
1179 ; CHECK: entry:
1180 ; CHECK-NEXT: %1 = extractelement <16 x i8> %0, i32 1
1181 ; CHECK-NEXT: ret i8 %1
1182 ; CHECK-NEXT: }
1183
1184 define i8 @extract_8xi8_at_2(<8 x i8>) {
1185 entry:
1186 %1 = extractelement <8 x i8> %0, i32 2
1187 ret i8 %1
1188 }
1189 ; CHECK-LABEL: define i8 @extract_8xi8_at_2(<16 x i8>) {
1190 ; CHECK: entry:
1191 ; CHECK-NEXT: %1 = extractelement <16 x i8> %0, i32 2
1192 ; CHECK-NEXT: ret i8 %1
1193 ; CHECK-NEXT: }
1194
1195 define i8 @extract_8xi8_at_3(<8 x i8>) {
1196 entry:
1197 %1 = extractelement <8 x i8> %0, i32 3
1198 ret i8 %1
1199 }
1200 ; CHECK-LABEL: define i8 @extract_8xi8_at_3(<16 x i8>) {
1201 ; CHECK: entry:
1202 ; CHECK-NEXT: %1 = extractelement <16 x i8> %0, i32 3
1203 ; CHECK-NEXT: ret i8 %1
1204 ; CHECK-NEXT: }
1205
1206 define i8 @extract_8xi8_at_4(<8 x i8>) {
1207 entry:
1208 %1 = extractelement <8 x i8> %0, i32 4
1209 ret i8 %1
1210 }
1211 ; CHECK-LABEL: define i8 @extract_8xi8_at_4(<16 x i8>) {
1212 ; CHECK: entry:
1213 ; CHECK-NEXT: %1 = extractelement <16 x i8> %0, i32 4
1214 ; CHECK-NEXT: ret i8 %1
1215 ; CHECK-NEXT: }
1216
1217 define i8 @extract_8xi8_at_5(<8 x i8>) {
1218 entry:
1219 %1 = extractelement <8 x i8> %0, i32 5
1220 ret i8 %1
1221 }
1222 ; CHECK-LABEL: define i8 @extract_8xi8_at_5(<16 x i8>) {
1223 ; CHECK: entry:
1224 ; CHECK-NEXT: %1 = extractelement <16 x i8> %0, i32 5
1225 ; CHECK-NEXT: ret i8 %1
1226 ; CHECK-NEXT: }
1227
1228 define i8 @extract_8xi8_at_6(<8 x i8>) {
1229 entry:
1230 %1 = extractelement <8 x i8> %0, i32 6
1231 ret i8 %1
1232 }
1233 ; CHECK-LABEL: define i8 @extract_8xi8_at_6(<16 x i8>) {
1234 ; CHECK: entry:
1235 ; CHECK-NEXT: %1 = extractelement <16 x i8> %0, i32 6
1236 ; CHECK-NEXT: ret i8 %1
1237 ; CHECK-NEXT: }
1238
1239 define i8 @extract_8xi8_at_7(<8 x i8>) {
1240 entry:
1241 %1 = extractelement <8 x i8> %0, i32 7
1242 ret i8 %1
1243 }
1244 ; CHECK-LABEL: define i8 @extract_8xi8_at_7(<16 x i8>) {
1245 ; CHECK: entry:
1246 ; CHECK-NEXT: %1 = extractelement <16 x i8> %0, i32 7
1247 ; CHECK-NEXT: ret i8 %1
1248 ; CHECK-NEXT: }
1249
1250 define i8 @extract_8xi8_undef_idx(<8 x i8>) {
1251 entry:
1252 %1 = extractelement <8 x i8> %0, i32 8
1253 ret i8 %1
1254 }
1255 ; CHECK-LABEL: define i8 @extract_8xi8_undef_idx(<16 x i8>) {
1256 ; CHECK: entry:
1257 ; CHECK-NEXT: %1 = extractelement <16 x i8> %0, i32 8
1258 ; CHECK-NEXT: ret i8 %1
1259 ; CHECK-NEXT: }
1260
1261 define i16 @extract_8xi16_at_0(<8 x i16>) {
1262 entry:
1263 %1 = extractelement <8 x i16> %0, i32 0
1264 ret i16 %1
1265 }
1266 ; CHECK-LABEL: define i16 @extract_8xi16_at_0(<8 x i16>) {
1267 ; CHECK: entry:
1268 ; CHECK-NEXT: %1 = extractelement <8 x i16> %0, i32 0
1269 ; CHECK-NEXT: ret i16 %1
1270 ; CHECK-NEXT: }
1271
1272 define i16 @extract_8xi16_at_1(<8 x i16>) {
1273 entry:
1274 %1 = extractelement <8 x i16> %0, i32 1
1275 ret i16 %1
1276 }
1277 ; CHECK-LABEL: define i16 @extract_8xi16_at_1(<8 x i16>) {
1278 ; CHECK: entry:
1279 ; CHECK-NEXT: %1 = extractelement <8 x i16> %0, i32 1
1280 ; CHECK-NEXT: ret i16 %1
1281 ; CHECK-NEXT: }
1282
1283 define i16 @extract_8xi16_at_2(<8 x i16>) {
1284 entry:
1285 %1 = extractelement <8 x i16> %0, i32 2
1286 ret i16 %1
1287 }
1288 ; CHECK-LABEL: define i16 @extract_8xi16_at_2(<8 x i16>) {
1289 ; CHECK: entry:
1290 ; CHECK-NEXT: %1 = extractelement <8 x i16> %0, i32 2
1291 ; CHECK-NEXT: ret i16 %1
1292 ; CHECK-NEXT: }
1293
1294 define i16 @extract_8xi16_at_3(<8 x i16>) {
1295 entry:
1296 %1 = extractelement <8 x i16> %0, i32 3
1297 ret i16 %1
1298 }
1299 ; CHECK-LABEL: define i16 @extract_8xi16_at_3(<8 x i16>) {
1300 ; CHECK: entry:
1301 ; CHECK-NEXT: %1 = extractelement <8 x i16> %0, i32 3
1302 ; CHECK-NEXT: ret i16 %1
1303 ; CHECK-NEXT: }
1304
1305 define i16 @extract_8xi16_at_4(<8 x i16>) {
1306 entry:
1307 %1 = extractelement <8 x i16> %0, i32 4
1308 ret i16 %1
1309 }
1310 ; CHECK-LABEL: define i16 @extract_8xi16_at_4(<8 x i16>) {
1311 ; CHECK: entry:
1312 ; CHECK-NEXT: %1 = extractelement <8 x i16> %0, i32 4
1313 ; CHECK-NEXT: ret i16 %1
1314 ; CHECK-NEXT: }
1315
1316 define i16 @extract_8xi16_at_5(<8 x i16>) {
1317 entry:
1318 %1 = extractelement <8 x i16> %0, i32 5
1319 ret i16 %1
1320 }
1321 ; CHECK-LABEL: define i16 @extract_8xi16_at_5(<8 x i16>) {
1322 ; CHECK: entry:
1323 ; CHECK-NEXT: %1 = extractelement <8 x i16> %0, i32 5
1324 ; CHECK-NEXT: ret i16 %1
1325 ; CHECK-NEXT: }
1326
1327 define i16 @extract_8xi16_at_6(<8 x i16>) {
1328 entry:
1329 %1 = extractelement <8 x i16> %0, i32 6
1330 ret i16 %1
1331 }
1332 ; CHECK-LABEL: define i16 @extract_8xi16_at_6(<8 x i16>) {
1333 ; CHECK: entry:
1334 ; CHECK-NEXT: %1 = extractelement <8 x i16> %0, i32 6
1335 ; CHECK-NEXT: ret i16 %1
1336 ; CHECK-NEXT: }
1337
1338 define i16 @extract_8xi16_at_7(<8 x i16>) {
1339 entry:
1340 %1 = extractelement <8 x i16> %0, i32 7
1341 ret i16 %1
1342 }
1343 ; CHECK-LABEL: define i16 @extract_8xi16_at_7(<8 x i16>) {
1344 ; CHECK: entry:
1345 ; CHECK-NEXT: %1 = extractelement <8 x i16> %0, i32 7
1346 ; CHECK-NEXT: ret i16 %1
1347 ; CHECK-NEXT: }
1348
1349 define i16 @extract_8xi16_undef_idx(<8 x i16>) {
1350 entry:
1351 %1 = extractelement <8 x i16> %0, i32 8
1352 ret i16 %1
1353 }
1354 ; CHECK-LABEL: define i16 @extract_8xi16_undef_idx(<8 x i16>) {
1355 ; CHECK: entry:
1356 ; CHECK-NEXT: %1 = extractelement <8 x i16> %0, i32 8
1357 ; CHECK-NEXT: ret i16 %1
1358 ; CHECK-NEXT: }
1359
1360 define i32 @extract_8xi32_at_0(<8 x i32>) {
1361 entry:
1362 %1 = extractelement <8 x i32> %0, i32 0
1363 ret i32 %1
1364 }
1365 ; CHECK-LABEL: define i32 @extract_8xi32_at_0(<4 x i32>, <4 x i32>) {
1366 ; CHECK: entry:
1367 ; CHECK-NEXT: %2 = extractelement <4 x i32> %0, i32 0
1368 ; CHECK-NEXT: ret i32 %2
1369 ; CHECK-NEXT: }
1370
1371 define i32 @extract_8xi32_at_1(<8 x i32>) {
1372 entry:
1373 %1 = extractelement <8 x i32> %0, i32 1
1374 ret i32 %1
1375 }
1376 ; CHECK-LABEL: define i32 @extract_8xi32_at_1(<4 x i32>, <4 x i32>) {
1377 ; CHECK: entry:
1378 ; CHECK-NEXT: %2 = extractelement <4 x i32> %0, i32 1
1379 ; CHECK-NEXT: ret i32 %2
1380 ; CHECK-NEXT: }
1381
1382 define i32 @extract_8xi32_at_2(<8 x i32>) {
1383 entry:
1384 %1 = extractelement <8 x i32> %0, i32 2
1385 ret i32 %1
1386 }
1387 ; CHECK-LABEL: define i32 @extract_8xi32_at_2(<4 x i32>, <4 x i32>) {
1388 ; CHECK: entry:
1389 ; CHECK-NEXT: %2 = extractelement <4 x i32> %0, i32 2
1390 ; CHECK-NEXT: ret i32 %2
1391 ; CHECK-NEXT: }
1392
1393 define i32 @extract_8xi32_at_3(<8 x i32>) {
1394 entry:
1395 %1 = extractelement <8 x i32> %0, i32 3
1396 ret i32 %1
1397 }
1398 ; CHECK-LABEL: define i32 @extract_8xi32_at_3(<4 x i32>, <4 x i32>) {
1399 ; CHECK: entry:
1400 ; CHECK-NEXT: %2 = extractelement <4 x i32> %0, i32 3
1401 ; CHECK-NEXT: ret i32 %2
1402 ; CHECK-NEXT: }
1403
1404 define i32 @extract_8xi32_at_4(<8 x i32>) {
1405 entry:
1406 %1 = extractelement <8 x i32> %0, i32 4
1407 ret i32 %1
1408 }
1409 ; CHECK-LABEL: define i32 @extract_8xi32_at_4(<4 x i32>, <4 x i32>) {
1410 ; CHECK: entry:
1411 ; CHECK-NEXT: %2 = extractelement <4 x i32> %1, i32 0
1412 ; CHECK-NEXT: ret i32 %2
1413 ; CHECK-NEXT: }
1414
1415 define i32 @extract_8xi32_at_5(<8 x i32>) {
1416 entry:
1417 %1 = extractelement <8 x i32> %0, i32 5
1418 ret i32 %1
1419 }
1420 ; CHECK-LABEL: define i32 @extract_8xi32_at_5(<4 x i32>, <4 x i32>) {
1421 ; CHECK: entry:
1422 ; CHECK-NEXT: %2 = extractelement <4 x i32> %1, i32 1
1423 ; CHECK-NEXT: ret i32 %2
1424 ; CHECK-NEXT: }
1425
1426 define i32 @extract_8xi32_at_6(<8 x i32>) {
1427 entry:
1428 %1 = extractelement <8 x i32> %0, i32 6
1429 ret i32 %1
1430 }
1431 ; CHECK-LABEL: define i32 @extract_8xi32_at_6(<4 x i32>, <4 x i32>) {
1432 ; CHECK: entry:
1433 ; CHECK-NEXT: %2 = extractelement <4 x i32> %1, i32 2
1434 ; CHECK-NEXT: ret i32 %2
1435 ; CHECK-NEXT: }
1436
1437 define i32 @extract_8xi32_at_7(<8 x i32>) {
1438 entry:
1439 %1 = extractelement <8 x i32> %0, i32 7
1440 ret i32 %1
1441 }
1442 ; CHECK-LABEL: define i32 @extract_8xi32_at_7(<4 x i32>, <4 x i32>) {
1443 ; CHECK: entry:
1444 ; CHECK-NEXT: %2 = extractelement <4 x i32> %1, i32 3
1445 ; CHECK-NEXT: ret i32 %2
1446 ; CHECK-NEXT: }
1447
1448 define i32 @extract_8xi32_undef_idx(<8 x i32>) {
1449 entry:
1450 %1 = extractelement <8 x i32> %0, i32 8
1451 ret i32 %1
1452 }
1453 ; CHECK-LABEL: define i32 @extract_8xi32_undef_idx(<4 x i32>, <4 x i32>) {
1454 ; CHECK: entry:
1455 ; CHECK-NEXT: %2 = extractelement <4 x i32> %1, i32 4
1456 ; CHECK-NEXT: ret i32 %2
1457 ; CHECK-NEXT: }
1458
1459 define i64 @extract_8xi64_at_0(<8 x i64>) {
1460 entry:
1461 %1 = extractelement <8 x i64> %0, i32 0
1462 ret i64 %1
1463 }
1464 ; CHECK-LABEL: define i64 @extract_8xi64_at_0(<2 x i64>, <2 x i64>, <2 x i64>, < 2 x i64>) {
1465 ; CHECK: entry:
1466 ; CHECK-NEXT: %4 = extractelement <2 x i64> %0, i32 0
1467 ; CHECK-NEXT: ret i64 %4
1468 ; CHECK-NEXT: }
1469
1470 define i64 @extract_8xi64_at_1(<8 x i64>) {
1471 entry:
1472 %1 = extractelement <8 x i64> %0, i32 1
1473 ret i64 %1
1474 }
1475 ; CHECK-LABEL: define i64 @extract_8xi64_at_1(<2 x i64>, <2 x i64>, <2 x i64>, < 2 x i64>) {
1476 ; CHECK: entry:
1477 ; CHECK-NEXT: %4 = extractelement <2 x i64> %0, i32 1
1478 ; CHECK-NEXT: ret i64 %4
1479 ; CHECK-NEXT: }
1480
1481 define i64 @extract_8xi64_at_2(<8 x i64>) {
1482 entry:
1483 %1 = extractelement <8 x i64> %0, i32 2
1484 ret i64 %1
1485 }
1486 ; CHECK-LABEL: define i64 @extract_8xi64_at_2(<2 x i64>, <2 x i64>, <2 x i64>, < 2 x i64>) {
1487 ; CHECK: entry:
1488 ; CHECK-NEXT: %4 = extractelement <2 x i64> %1, i32 0
1489 ; CHECK-NEXT: ret i64 %4
1490 ; CHECK-NEXT: }
1491
1492 define i64 @extract_8xi64_at_3(<8 x i64>) {
1493 entry:
1494 %1 = extractelement <8 x i64> %0, i32 3
1495 ret i64 %1
1496 }
1497 ; CHECK-LABEL: define i64 @extract_8xi64_at_3(<2 x i64>, <2 x i64>, <2 x i64>, < 2 x i64>) {
1498 ; CHECK: entry:
1499 ; CHECK-NEXT: %4 = extractelement <2 x i64> %1, i32 1
1500 ; CHECK-NEXT: ret i64 %4
1501 ; CHECK-NEXT: }
1502
1503 define i64 @extract_8xi64_at_4(<8 x i64>) {
1504 entry:
1505 %1 = extractelement <8 x i64> %0, i32 4
1506 ret i64 %1
1507 }
1508 ; CHECK-LABEL: define i64 @extract_8xi64_at_4(<2 x i64>, <2 x i64>, <2 x i64>, < 2 x i64>) {
1509 ; CHECK: entry:
1510 ; CHECK-NEXT: %4 = extractelement <2 x i64> %2, i32 0
1511 ; CHECK-NEXT: ret i64 %4
1512 ; CHECK-NEXT: }
1513
1514 define i64 @extract_8xi64_at_5(<8 x i64>) {
1515 entry:
1516 %1 = extractelement <8 x i64> %0, i32 5
1517 ret i64 %1
1518 }
1519 ; CHECK-LABEL: define i64 @extract_8xi64_at_5(<2 x i64>, <2 x i64>, <2 x i64>, < 2 x i64>) {
1520 ; CHECK: entry:
1521 ; CHECK-NEXT: %4 = extractelement <2 x i64> %2, i32 1
1522 ; CHECK-NEXT: ret i64 %4
1523 ; CHECK-NEXT: }
1524
1525 define i64 @extract_8xi64_at_6(<8 x i64>) {
1526 entry:
1527 %1 = extractelement <8 x i64> %0, i32 6
1528 ret i64 %1
1529 }
1530 ; CHECK-LABEL: define i64 @extract_8xi64_at_6(<2 x i64>, <2 x i64>, <2 x i64>, < 2 x i64>) {
1531 ; CHECK: entry:
1532 ; CHECK-NEXT: %4 = extractelement <2 x i64> %3, i32 0
1533 ; CHECK-NEXT: ret i64 %4
1534 ; CHECK-NEXT: }
1535
1536 define i64 @extract_8xi64_at_7(<8 x i64>) {
1537 entry:
1538 %1 = extractelement <8 x i64> %0, i32 7
1539 ret i64 %1
1540 }
1541 ; CHECK-LABEL: define i64 @extract_8xi64_at_7(<2 x i64>, <2 x i64>, <2 x i64>, < 2 x i64>) {
1542 ; CHECK: entry:
1543 ; CHECK-NEXT: %4 = extractelement <2 x i64> %3, i32 1
1544 ; CHECK-NEXT: ret i64 %4
1545 ; CHECK-NEXT: }
1546
1547 define i64 @extract_8xi64_undef_idx(<8 x i64>) {
1548 entry:
1549 %1 = extractelement <8 x i64> %0, i32 8
1550 ret i64 %1
1551 }
1552 ; CHECK-LABEL: define i64 @extract_8xi64_undef_idx(<2 x i64>, <2 x i64>, <2 x i6 4>, <2 x i64>) {
1553 ; CHECK: entry:
1554 ; CHECK-NEXT: %4 = extractelement <2 x i64> %3, i32 2
1555 ; CHECK-NEXT: ret i64 %4
1556 ; CHECK-NEXT: }
1557
1558 define i8* @extract_8xi8ptr_at_0(<8 x i8*>) {
1559 entry:
1560 %1 = extractelement <8 x i8*> %0, i32 0
1561 ret i8* %1
1562 }
1563 ; CHECK-LABEL: define i8* @extract_8xi8ptr_at_0(<4 x i8*>, <4 x i8*>) {
1564 ; CHECK: entry:
1565 ; CHECK-NEXT: %2 = extractelement <4 x i8*> %0, i32 0
1566 ; CHECK-NEXT: ret i8* %2
1567 ; CHECK-NEXT: }
1568
1569 define i8* @extract_8xi8ptr_at_1(<8 x i8*>) {
1570 entry:
1571 %1 = extractelement <8 x i8*> %0, i32 1
1572 ret i8* %1
1573 }
1574 ; CHECK-LABEL: define i8* @extract_8xi8ptr_at_1(<4 x i8*>, <4 x i8*>) {
1575 ; CHECK: entry:
1576 ; CHECK-NEXT: %2 = extractelement <4 x i8*> %0, i32 1
1577 ; CHECK-NEXT: ret i8* %2
1578 ; CHECK-NEXT: }
1579
1580 define i8* @extract_8xi8ptr_at_2(<8 x i8*>) {
1581 entry:
1582 %1 = extractelement <8 x i8*> %0, i32 2
1583 ret i8* %1
1584 }
1585 ; CHECK-LABEL: define i8* @extract_8xi8ptr_at_2(<4 x i8*>, <4 x i8*>) {
1586 ; CHECK: entry:
1587 ; CHECK-NEXT: %2 = extractelement <4 x i8*> %0, i32 2
1588 ; CHECK-NEXT: ret i8* %2
1589 ; CHECK-NEXT: }
1590
1591 define i8* @extract_8xi8ptr_at_3(<8 x i8*>) {
1592 entry:
1593 %1 = extractelement <8 x i8*> %0, i32 3
1594 ret i8* %1
1595 }
1596 ; CHECK-LABEL: define i8* @extract_8xi8ptr_at_3(<4 x i8*>, <4 x i8*>) {
1597 ; CHECK: entry:
1598 ; CHECK-NEXT: %2 = extractelement <4 x i8*> %0, i32 3
1599 ; CHECK-NEXT: ret i8* %2
1600 ; CHECK-NEXT: }
1601
1602 define i8* @extract_8xi8ptr_at_4(<8 x i8*>) {
1603 entry:
1604 %1 = extractelement <8 x i8*> %0, i32 4
1605 ret i8* %1
1606 }
1607 ; CHECK-LABEL: define i8* @extract_8xi8ptr_at_4(<4 x i8*>, <4 x i8*>) {
1608 ; CHECK: entry:
1609 ; CHECK-NEXT: %2 = extractelement <4 x i8*> %1, i32 0
1610 ; CHECK-NEXT: ret i8* %2
1611 ; CHECK-NEXT: }
1612
1613 define i8* @extract_8xi8ptr_at_5(<8 x i8*>) {
1614 entry:
1615 %1 = extractelement <8 x i8*> %0, i32 5
1616 ret i8* %1
1617 }
1618 ; CHECK-LABEL: define i8* @extract_8xi8ptr_at_5(<4 x i8*>, <4 x i8*>) {
1619 ; CHECK: entry:
1620 ; CHECK-NEXT: %2 = extractelement <4 x i8*> %1, i32 1
1621 ; CHECK-NEXT: ret i8* %2
1622 ; CHECK-NEXT: }
1623
1624 define i8* @extract_8xi8ptr_at_6(<8 x i8*>) {
1625 entry:
1626 %1 = extractelement <8 x i8*> %0, i32 6
1627 ret i8* %1
1628 }
1629 ; CHECK-LABEL: define i8* @extract_8xi8ptr_at_6(<4 x i8*>, <4 x i8*>) {
1630 ; CHECK: entry:
1631 ; CHECK-NEXT: %2 = extractelement <4 x i8*> %1, i32 2
1632 ; CHECK-NEXT: ret i8* %2
1633 ; CHECK-NEXT: }
1634
1635 define i8* @extract_8xi8ptr_at_7(<8 x i8*>) {
1636 entry:
1637 %1 = extractelement <8 x i8*> %0, i32 7
1638 ret i8* %1
1639 }
1640 ; CHECK-LABEL: define i8* @extract_8xi8ptr_at_7(<4 x i8*>, <4 x i8*>) {
1641 ; CHECK: entry:
1642 ; CHECK-NEXT: %2 = extractelement <4 x i8*> %1, i32 3
1643 ; CHECK-NEXT: ret i8* %2
1644 ; CHECK-NEXT: }
1645
1646 define i8* @extract_8xi8ptr_undef_idx(<8 x i8*>) {
1647 entry:
1648 %1 = extractelement <8 x i8*> %0, i32 8
1649 ret i8* %1
1650 }
1651 ; CHECK-LABEL: define i8* @extract_8xi8ptr_undef_idx(<4 x i8*>, <4 x i8*>) {
1652 ; CHECK: entry:
1653 ; CHECK-NEXT: %2 = extractelement <4 x i8*> %1, i32 4
1654 ; CHECK-NEXT: ret i8* %2
1655 ; CHECK-NEXT: }
1656
1657 define float @extract_8xfloat_at_0(<8 x float>) {
1658 entry:
1659 %1 = extractelement <8 x float> %0, i32 0
1660 ret float %1
1661 }
1662 ; CHECK-LABEL: define float @extract_8xfloat_at_0(<4 x float>, <4 x float>) {
1663 ; CHECK: entry:
1664 ; CHECK-NEXT: %2 = extractelement <4 x float> %0, i32 0
1665 ; CHECK-NEXT: ret float %2
1666 ; CHECK-NEXT: }
1667
1668 define float @extract_8xfloat_at_1(<8 x float>) {
1669 entry:
1670 %1 = extractelement <8 x float> %0, i32 1
1671 ret float %1
1672 }
1673 ; CHECK-LABEL: define float @extract_8xfloat_at_1(<4 x float>, <4 x float>) {
1674 ; CHECK: entry:
1675 ; CHECK-NEXT: %2 = extractelement <4 x float> %0, i32 1
1676 ; CHECK-NEXT: ret float %2
1677 ; CHECK-NEXT: }
1678
1679 define float @extract_8xfloat_at_2(<8 x float>) {
1680 entry:
1681 %1 = extractelement <8 x float> %0, i32 2
1682 ret float %1
1683 }
1684 ; CHECK-LABEL: define float @extract_8xfloat_at_2(<4 x float>, <4 x float>) {
1685 ; CHECK: entry:
1686 ; CHECK-NEXT: %2 = extractelement <4 x float> %0, i32 2
1687 ; CHECK-NEXT: ret float %2
1688 ; CHECK-NEXT: }
1689
1690 define float @extract_8xfloat_at_3(<8 x float>) {
1691 entry:
1692 %1 = extractelement <8 x float> %0, i32 3
1693 ret float %1
1694 }
1695 ; CHECK-LABEL: define float @extract_8xfloat_at_3(<4 x float>, <4 x float>) {
1696 ; CHECK: entry:
1697 ; CHECK-NEXT: %2 = extractelement <4 x float> %0, i32 3
1698 ; CHECK-NEXT: ret float %2
1699 ; CHECK-NEXT: }
1700
1701 define float @extract_8xfloat_at_4(<8 x float>) {
1702 entry:
1703 %1 = extractelement <8 x float> %0, i32 4
1704 ret float %1
1705 }
1706 ; CHECK-LABEL: define float @extract_8xfloat_at_4(<4 x float>, <4 x float>) {
1707 ; CHECK: entry:
1708 ; CHECK-NEXT: %2 = extractelement <4 x float> %1, i32 0
1709 ; CHECK-NEXT: ret float %2
1710 ; CHECK-NEXT: }
1711
1712 define float @extract_8xfloat_at_5(<8 x float>) {
1713 entry:
1714 %1 = extractelement <8 x float> %0, i32 5
1715 ret float %1
1716 }
1717 ; CHECK-LABEL: define float @extract_8xfloat_at_5(<4 x float>, <4 x float>) {
1718 ; CHECK: entry:
1719 ; CHECK-NEXT: %2 = extractelement <4 x float> %1, i32 1
1720 ; CHECK-NEXT: ret float %2
1721 ; CHECK-NEXT: }
1722
1723 define float @extract_8xfloat_at_6(<8 x float>) {
1724 entry:
1725 %1 = extractelement <8 x float> %0, i32 6
1726 ret float %1
1727 }
1728 ; CHECK-LABEL: define float @extract_8xfloat_at_6(<4 x float>, <4 x float>) {
1729 ; CHECK: entry:
1730 ; CHECK-NEXT: %2 = extractelement <4 x float> %1, i32 2
1731 ; CHECK-NEXT: ret float %2
1732 ; CHECK-NEXT: }
1733
1734 define float @extract_8xfloat_at_7(<8 x float>) {
1735 entry:
1736 %1 = extractelement <8 x float> %0, i32 7
1737 ret float %1
1738 }
1739 ; CHECK-LABEL: define float @extract_8xfloat_at_7(<4 x float>, <4 x float>) {
1740 ; CHECK: entry:
1741 ; CHECK-NEXT: %2 = extractelement <4 x float> %1, i32 3
1742 ; CHECK-NEXT: ret float %2
1743 ; CHECK-NEXT: }
1744
1745 define float @extract_8xfloat_undef_idx(<8 x float>) {
1746 entry:
1747 %1 = extractelement <8 x float> %0, i32 8
1748 ret float %1
1749 }
1750 ; CHECK-LABEL: define float @extract_8xfloat_undef_idx(<4 x float>, <4 x float>) {
1751 ; CHECK: entry:
1752 ; CHECK-NEXT: %2 = extractelement <4 x float> %1, i32 4
1753 ; CHECK-NEXT: ret float %2
1754 ; CHECK-NEXT: }
1755
1756 define double @extract_8xdouble_at_0(<8 x double>) {
1757 entry:
1758 %1 = extractelement <8 x double> %0, i32 0
1759 ret double %1
1760 }
1761 ; CHECK-LABEL: define double @extract_8xdouble_at_0(<2 x double>, <2 x double>, <2 x double>, <2 x double>) {
1762 ; CHECK: entry:
1763 ; CHECK-NEXT: %4 = extractelement <2 x double> %0, i32 0
1764 ; CHECK-NEXT: ret double %4
1765 ; CHECK-NEXT: }
1766
1767 define double @extract_8xdouble_at_1(<8 x double>) {
1768 entry:
1769 %1 = extractelement <8 x double> %0, i32 1
1770 ret double %1
1771 }
1772 ; CHECK-LABEL: define double @extract_8xdouble_at_1(<2 x double>, <2 x double>, <2 x double>, <2 x double>) {
1773 ; CHECK: entry:
1774 ; CHECK-NEXT: %4 = extractelement <2 x double> %0, i32 1
1775 ; CHECK-NEXT: ret double %4
1776 ; CHECK-NEXT: }
1777
1778 define double @extract_8xdouble_at_2(<8 x double>) {
1779 entry:
1780 %1 = extractelement <8 x double> %0, i32 2
1781 ret double %1
1782 }
1783 ; CHECK-LABEL: define double @extract_8xdouble_at_2(<2 x double>, <2 x double>, <2 x double>, <2 x double>) {
1784 ; CHECK: entry:
1785 ; CHECK-NEXT: %4 = extractelement <2 x double> %1, i32 0
1786 ; CHECK-NEXT: ret double %4
1787 ; CHECK-NEXT: }
1788
1789 define double @extract_8xdouble_at_3(<8 x double>) {
1790 entry:
1791 %1 = extractelement <8 x double> %0, i32 3
1792 ret double %1
1793 }
1794 ; CHECK-LABEL: define double @extract_8xdouble_at_3(<2 x double>, <2 x double>, <2 x double>, <2 x double>) {
1795 ; CHECK: entry:
1796 ; CHECK-NEXT: %4 = extractelement <2 x double> %1, i32 1
1797 ; CHECK-NEXT: ret double %4
1798 ; CHECK-NEXT: }
1799
1800 define double @extract_8xdouble_at_4(<8 x double>) {
1801 entry:
1802 %1 = extractelement <8 x double> %0, i32 4
1803 ret double %1
1804 }
1805 ; CHECK-LABEL: define double @extract_8xdouble_at_4(<2 x double>, <2 x double>, <2 x double>, <2 x double>) {
1806 ; CHECK: entry:
1807 ; CHECK-NEXT: %4 = extractelement <2 x double> %2, i32 0
1808 ; CHECK-NEXT: ret double %4
1809 ; CHECK-NEXT: }
1810
1811 define double @extract_8xdouble_at_5(<8 x double>) {
1812 entry:
1813 %1 = extractelement <8 x double> %0, i32 5
1814 ret double %1
1815 }
1816 ; CHECK-LABEL: define double @extract_8xdouble_at_5(<2 x double>, <2 x double>, <2 x double>, <2 x double>) {
1817 ; CHECK: entry:
1818 ; CHECK-NEXT: %4 = extractelement <2 x double> %2, i32 1
1819 ; CHECK-NEXT: ret double %4
1820 ; CHECK-NEXT: }
1821
1822 define double @extract_8xdouble_at_6(<8 x double>) {
1823 entry:
1824 %1 = extractelement <8 x double> %0, i32 6
1825 ret double %1
1826 }
1827 ; CHECK-LABEL: define double @extract_8xdouble_at_6(<2 x double>, <2 x double>, <2 x double>, <2 x double>) {
1828 ; CHECK: entry:
1829 ; CHECK-NEXT: %4 = extractelement <2 x double> %3, i32 0
1830 ; CHECK-NEXT: ret double %4
1831 ; CHECK-NEXT: }
1832
1833 define double @extract_8xdouble_at_7(<8 x double>) {
1834 entry:
1835 %1 = extractelement <8 x double> %0, i32 7
1836 ret double %1
1837 }
1838 ; CHECK-LABEL: define double @extract_8xdouble_at_7(<2 x double>, <2 x double>, <2 x double>, <2 x double>) {
1839 ; CHECK: entry:
1840 ; CHECK-NEXT: %4 = extractelement <2 x double> %3, i32 1
1841 ; CHECK-NEXT: ret double %4
1842 ; CHECK-NEXT: }
1843
1844 define double @extract_8xdouble_undef_idx(<8 x double>) {
1845 entry:
1846 %1 = extractelement <8 x double> %0, i32 8
1847 ret double %1
1848 }
1849 ; CHECK-LABEL: define double @extract_8xdouble_undef_idx(<2 x double>, <2 x doub le>, <2 x double>, <2 x double>) {
1850 ; CHECK: entry:
1851 ; CHECK-NEXT: %4 = extractelement <2 x double> %3, i32 2
1852 ; CHECK-NEXT: ret double %4
1853 ; CHECK-NEXT: }
1854
1855 define i8 @extract_12xi8_at_0(<12 x i8>) {
1856 entry:
1857 %1 = extractelement <12 x i8> %0, i32 0
1858 ret i8 %1
1859 }
1860 ; CHECK-LABEL: define i8 @extract_12xi8_at_0(<16 x i8>) {
1861 ; CHECK: entry:
1862 ; CHECK-NEXT: %1 = extractelement <16 x i8> %0, i32 0
1863 ; CHECK-NEXT: ret i8 %1
1864 ; CHECK-NEXT: }
1865
1866 define i8 @extract_12xi8_at_1(<12 x i8>) {
1867 entry:
1868 %1 = extractelement <12 x i8> %0, i32 1
1869 ret i8 %1
1870 }
1871 ; CHECK-LABEL: define i8 @extract_12xi8_at_1(<16 x i8>) {
1872 ; CHECK: entry:
1873 ; CHECK-NEXT: %1 = extractelement <16 x i8> %0, i32 1
1874 ; CHECK-NEXT: ret i8 %1
1875 ; CHECK-NEXT: }
1876
1877 define i8 @extract_12xi8_at_2(<12 x i8>) {
1878 entry:
1879 %1 = extractelement <12 x i8> %0, i32 2
1880 ret i8 %1
1881 }
1882 ; CHECK-LABEL: define i8 @extract_12xi8_at_2(<16 x i8>) {
1883 ; CHECK: entry:
1884 ; CHECK-NEXT: %1 = extractelement <16 x i8> %0, i32 2
1885 ; CHECK-NEXT: ret i8 %1
1886 ; CHECK-NEXT: }
1887
1888 define i8 @extract_12xi8_at_3(<12 x i8>) {
1889 entry:
1890 %1 = extractelement <12 x i8> %0, i32 3
1891 ret i8 %1
1892 }
1893 ; CHECK-LABEL: define i8 @extract_12xi8_at_3(<16 x i8>) {
1894 ; CHECK: entry:
1895 ; CHECK-NEXT: %1 = extractelement <16 x i8> %0, i32 3
1896 ; CHECK-NEXT: ret i8 %1
1897 ; CHECK-NEXT: }
1898
1899 define i8 @extract_12xi8_at_4(<12 x i8>) {
1900 entry:
1901 %1 = extractelement <12 x i8> %0, i32 4
1902 ret i8 %1
1903 }
1904 ; CHECK-LABEL: define i8 @extract_12xi8_at_4(<16 x i8>) {
1905 ; CHECK: entry:
1906 ; CHECK-NEXT: %1 = extractelement <16 x i8> %0, i32 4
1907 ; CHECK-NEXT: ret i8 %1
1908 ; CHECK-NEXT: }
1909
1910 define i8 @extract_12xi8_at_5(<12 x i8>) {
1911 entry:
1912 %1 = extractelement <12 x i8> %0, i32 5
1913 ret i8 %1
1914 }
1915 ; CHECK-LABEL: define i8 @extract_12xi8_at_5(<16 x i8>) {
1916 ; CHECK: entry:
1917 ; CHECK-NEXT: %1 = extractelement <16 x i8> %0, i32 5
1918 ; CHECK-NEXT: ret i8 %1
1919 ; CHECK-NEXT: }
1920
1921 define i8 @extract_12xi8_at_6(<12 x i8>) {
1922 entry:
1923 %1 = extractelement <12 x i8> %0, i32 6
1924 ret i8 %1
1925 }
1926 ; CHECK-LABEL: define i8 @extract_12xi8_at_6(<16 x i8>) {
1927 ; CHECK: entry:
1928 ; CHECK-NEXT: %1 = extractelement <16 x i8> %0, i32 6
1929 ; CHECK-NEXT: ret i8 %1
1930 ; CHECK-NEXT: }
1931
1932 define i8 @extract_12xi8_at_7(<12 x i8>) {
1933 entry:
1934 %1 = extractelement <12 x i8> %0, i32 7
1935 ret i8 %1
1936 }
1937 ; CHECK-LABEL: define i8 @extract_12xi8_at_7(<16 x i8>) {
1938 ; CHECK: entry:
1939 ; CHECK-NEXT: %1 = extractelement <16 x i8> %0, i32 7
1940 ; CHECK-NEXT: ret i8 %1
1941 ; CHECK-NEXT: }
1942
1943 define i8 @extract_12xi8_at_8(<12 x i8>) {
1944 entry:
1945 %1 = extractelement <12 x i8> %0, i32 8
1946 ret i8 %1
1947 }
1948 ; CHECK-LABEL: define i8 @extract_12xi8_at_8(<16 x i8>) {
1949 ; CHECK: entry:
1950 ; CHECK-NEXT: %1 = extractelement <16 x i8> %0, i32 8
1951 ; CHECK-NEXT: ret i8 %1
1952 ; CHECK-NEXT: }
1953
1954 define i8 @extract_12xi8_at_9(<12 x i8>) {
1955 entry:
1956 %1 = extractelement <12 x i8> %0, i32 9
1957 ret i8 %1
1958 }
1959 ; CHECK-LABEL: define i8 @extract_12xi8_at_9(<16 x i8>) {
1960 ; CHECK: entry:
1961 ; CHECK-NEXT: %1 = extractelement <16 x i8> %0, i32 9
1962 ; CHECK-NEXT: ret i8 %1
1963 ; CHECK-NEXT: }
1964
1965 define i8 @extract_12xi8_at_10(<12 x i8>) {
1966 entry:
1967 %1 = extractelement <12 x i8> %0, i32 10
1968 ret i8 %1
1969 }
1970 ; CHECK-LABEL: define i8 @extract_12xi8_at_10(<16 x i8>) {
1971 ; CHECK: entry:
1972 ; CHECK-NEXT: %1 = extractelement <16 x i8> %0, i32 10
1973 ; CHECK-NEXT: ret i8 %1
1974 ; CHECK-NEXT: }
1975
1976 define i8 @extract_12xi8_at_11(<12 x i8>) {
1977 entry:
1978 %1 = extractelement <12 x i8> %0, i32 11
1979 ret i8 %1
1980 }
1981 ; CHECK-LABEL: define i8 @extract_12xi8_at_11(<16 x i8>) {
1982 ; CHECK: entry:
1983 ; CHECK-NEXT: %1 = extractelement <16 x i8> %0, i32 11
1984 ; CHECK-NEXT: ret i8 %1
1985 ; CHECK-NEXT: }
1986
1987 define i8 @extract_12xi8_undef_idx(<12 x i8>) {
1988 entry:
1989 %1 = extractelement <12 x i8> %0, i32 12
1990 ret i8 %1
1991 }
1992 ; CHECK-LABEL: define i8 @extract_12xi8_undef_idx(<16 x i8>) {
1993 ; CHECK: entry:
1994 ; CHECK-NEXT: %1 = extractelement <16 x i8> %0, i32 12
1995 ; CHECK-NEXT: ret i8 %1
1996 ; CHECK-NEXT: }
1997
1998 define i16 @extract_12xi16_at_0(<12 x i16>) {
1999 entry:
2000 %1 = extractelement <12 x i16> %0, i32 0
2001 ret i16 %1
2002 }
2003 ; CHECK-LABEL: define i16 @extract_12xi16_at_0(<8 x i16>, <8 x i16>) {
2004 ; CHECK: entry:
2005 ; CHECK-NEXT: %2 = extractelement <8 x i16> %0, i32 0
2006 ; CHECK-NEXT: ret i16 %2
2007 ; CHECK-NEXT: }
2008
2009 define i16 @extract_12xi16_at_1(<12 x i16>) {
2010 entry:
2011 %1 = extractelement <12 x i16> %0, i32 1
2012 ret i16 %1
2013 }
2014 ; CHECK-LABEL: define i16 @extract_12xi16_at_1(<8 x i16>, <8 x i16>) {
2015 ; CHECK: entry:
2016 ; CHECK-NEXT: %2 = extractelement <8 x i16> %0, i32 1
2017 ; CHECK-NEXT: ret i16 %2
2018 ; CHECK-NEXT: }
2019
2020 define i16 @extract_12xi16_at_2(<12 x i16>) {
2021 entry:
2022 %1 = extractelement <12 x i16> %0, i32 2
2023 ret i16 %1
2024 }
2025 ; CHECK-LABEL: define i16 @extract_12xi16_at_2(<8 x i16>, <8 x i16>) {
2026 ; CHECK: entry:
2027 ; CHECK-NEXT: %2 = extractelement <8 x i16> %0, i32 2
2028 ; CHECK-NEXT: ret i16 %2
2029 ; CHECK-NEXT: }
2030
2031 define i16 @extract_12xi16_at_3(<12 x i16>) {
2032 entry:
2033 %1 = extractelement <12 x i16> %0, i32 3
2034 ret i16 %1
2035 }
2036 ; CHECK-LABEL: define i16 @extract_12xi16_at_3(<8 x i16>, <8 x i16>) {
2037 ; CHECK: entry:
2038 ; CHECK-NEXT: %2 = extractelement <8 x i16> %0, i32 3
2039 ; CHECK-NEXT: ret i16 %2
2040 ; CHECK-NEXT: }
2041
2042 define i16 @extract_12xi16_at_4(<12 x i16>) {
2043 entry:
2044 %1 = extractelement <12 x i16> %0, i32 4
2045 ret i16 %1
2046 }
2047 ; CHECK-LABEL: define i16 @extract_12xi16_at_4(<8 x i16>, <8 x i16>) {
2048 ; CHECK: entry:
2049 ; CHECK-NEXT: %2 = extractelement <8 x i16> %0, i32 4
2050 ; CHECK-NEXT: ret i16 %2
2051 ; CHECK-NEXT: }
2052
2053 define i16 @extract_12xi16_at_5(<12 x i16>) {
2054 entry:
2055 %1 = extractelement <12 x i16> %0, i32 5
2056 ret i16 %1
2057 }
2058 ; CHECK-LABEL: define i16 @extract_12xi16_at_5(<8 x i16>, <8 x i16>) {
2059 ; CHECK: entry:
2060 ; CHECK-NEXT: %2 = extractelement <8 x i16> %0, i32 5
2061 ; CHECK-NEXT: ret i16 %2
2062 ; CHECK-NEXT: }
2063
2064 define i16 @extract_12xi16_at_6(<12 x i16>) {
2065 entry:
2066 %1 = extractelement <12 x i16> %0, i32 6
2067 ret i16 %1
2068 }
2069 ; CHECK-LABEL: define i16 @extract_12xi16_at_6(<8 x i16>, <8 x i16>) {
2070 ; CHECK: entry:
2071 ; CHECK-NEXT: %2 = extractelement <8 x i16> %0, i32 6
2072 ; CHECK-NEXT: ret i16 %2
2073 ; CHECK-NEXT: }
2074
2075 define i16 @extract_12xi16_at_7(<12 x i16>) {
2076 entry:
2077 %1 = extractelement <12 x i16> %0, i32 7
2078 ret i16 %1
2079 }
2080 ; CHECK-LABEL: define i16 @extract_12xi16_at_7(<8 x i16>, <8 x i16>) {
2081 ; CHECK: entry:
2082 ; CHECK-NEXT: %2 = extractelement <8 x i16> %0, i32 7
2083 ; CHECK-NEXT: ret i16 %2
2084 ; CHECK-NEXT: }
2085
2086 define i16 @extract_12xi16_at_8(<12 x i16>) {
2087 entry:
2088 %1 = extractelement <12 x i16> %0, i32 8
2089 ret i16 %1
2090 }
2091 ; CHECK-LABEL: define i16 @extract_12xi16_at_8(<8 x i16>, <8 x i16>) {
2092 ; CHECK: entry:
2093 ; CHECK-NEXT: %2 = extractelement <8 x i16> %1, i32 0
2094 ; CHECK-NEXT: ret i16 %2
2095 ; CHECK-NEXT: }
2096
2097 define i16 @extract_12xi16_at_9(<12 x i16>) {
2098 entry:
2099 %1 = extractelement <12 x i16> %0, i32 9
2100 ret i16 %1
2101 }
2102 ; CHECK-LABEL: define i16 @extract_12xi16_at_9(<8 x i16>, <8 x i16>) {
2103 ; CHECK: entry:
2104 ; CHECK-NEXT: %2 = extractelement <8 x i16> %1, i32 1
2105 ; CHECK-NEXT: ret i16 %2
2106 ; CHECK-NEXT: }
2107
2108 define i16 @extract_12xi16_at_10(<12 x i16>) {
2109 entry:
2110 %1 = extractelement <12 x i16> %0, i32 10
2111 ret i16 %1
2112 }
2113 ; CHECK-LABEL: define i16 @extract_12xi16_at_10(<8 x i16>, <8 x i16>) {
2114 ; CHECK: entry:
2115 ; CHECK-NEXT: %2 = extractelement <8 x i16> %1, i32 2
2116 ; CHECK-NEXT: ret i16 %2
2117 ; CHECK-NEXT: }
2118
2119 define i16 @extract_12xi16_at_11(<12 x i16>) {
2120 entry:
2121 %1 = extractelement <12 x i16> %0, i32 11
2122 ret i16 %1
2123 }
2124 ; CHECK-LABEL: define i16 @extract_12xi16_at_11(<8 x i16>, <8 x i16>) {
2125 ; CHECK: entry:
2126 ; CHECK-NEXT: %2 = extractelement <8 x i16> %1, i32 3
2127 ; CHECK-NEXT: ret i16 %2
2128 ; CHECK-NEXT: }
2129
2130 define i16 @extract_12xi16_undef_idx(<12 x i16>) {
2131 entry:
2132 %1 = extractelement <12 x i16> %0, i32 12
2133 ret i16 %1
2134 }
2135 ; CHECK-LABEL: define i16 @extract_12xi16_undef_idx(<8 x i16>, <8 x i16>) {
2136 ; CHECK: entry:
2137 ; CHECK-NEXT: %2 = extractelement <8 x i16> %1, i32 4
2138 ; CHECK-NEXT: ret i16 %2
2139 ; CHECK-NEXT: }
2140
2141 define i32 @extract_12xi32_at_0(<12 x i32>) {
2142 entry:
2143 %1 = extractelement <12 x i32> %0, i32 0
2144 ret i32 %1
2145 }
2146 ; CHECK-LABEL: define i32 @extract_12xi32_at_0(<4 x i32>, <4 x i32>, <4 x i32>) {
2147 ; CHECK: entry:
2148 ; CHECK-NEXT: %3 = extractelement <4 x i32> %0, i32 0
2149 ; CHECK-NEXT: ret i32 %3
2150 ; CHECK-NEXT: }
2151
2152 define i32 @extract_12xi32_at_1(<12 x i32>) {
2153 entry:
2154 %1 = extractelement <12 x i32> %0, i32 1
2155 ret i32 %1
2156 }
2157 ; CHECK-LABEL: define i32 @extract_12xi32_at_1(<4 x i32>, <4 x i32>, <4 x i32>) {
2158 ; CHECK: entry:
2159 ; CHECK-NEXT: %3 = extractelement <4 x i32> %0, i32 1
2160 ; CHECK-NEXT: ret i32 %3
2161 ; CHECK-NEXT: }
2162
2163 define i32 @extract_12xi32_at_2(<12 x i32>) {
2164 entry:
2165 %1 = extractelement <12 x i32> %0, i32 2
2166 ret i32 %1
2167 }
2168 ; CHECK-LABEL: define i32 @extract_12xi32_at_2(<4 x i32>, <4 x i32>, <4 x i32>) {
2169 ; CHECK: entry:
2170 ; CHECK-NEXT: %3 = extractelement <4 x i32> %0, i32 2
2171 ; CHECK-NEXT: ret i32 %3
2172 ; CHECK-NEXT: }
2173
2174 define i32 @extract_12xi32_at_3(<12 x i32>) {
2175 entry:
2176 %1 = extractelement <12 x i32> %0, i32 3
2177 ret i32 %1
2178 }
2179 ; CHECK-LABEL: define i32 @extract_12xi32_at_3(<4 x i32>, <4 x i32>, <4 x i32>) {
2180 ; CHECK: entry:
2181 ; CHECK-NEXT: %3 = extractelement <4 x i32> %0, i32 3
2182 ; CHECK-NEXT: ret i32 %3
2183 ; CHECK-NEXT: }
2184
2185 define i32 @extract_12xi32_at_4(<12 x i32>) {
2186 entry:
2187 %1 = extractelement <12 x i32> %0, i32 4
2188 ret i32 %1
2189 }
2190 ; CHECK-LABEL: define i32 @extract_12xi32_at_4(<4 x i32>, <4 x i32>, <4 x i32>) {
2191 ; CHECK: entry:
2192 ; CHECK-NEXT: %3 = extractelement <4 x i32> %1, i32 0
2193 ; CHECK-NEXT: ret i32 %3
2194 ; CHECK-NEXT: }
2195
2196 define i32 @extract_12xi32_at_5(<12 x i32>) {
2197 entry:
2198 %1 = extractelement <12 x i32> %0, i32 5
2199 ret i32 %1
2200 }
2201 ; CHECK-LABEL: define i32 @extract_12xi32_at_5(<4 x i32>, <4 x i32>, <4 x i32>) {
2202 ; CHECK: entry:
2203 ; CHECK-NEXT: %3 = extractelement <4 x i32> %1, i32 1
2204 ; CHECK-NEXT: ret i32 %3
2205 ; CHECK-NEXT: }
2206
2207 define i32 @extract_12xi32_at_6(<12 x i32>) {
2208 entry:
2209 %1 = extractelement <12 x i32> %0, i32 6
2210 ret i32 %1
2211 }
2212 ; CHECK-LABEL: define i32 @extract_12xi32_at_6(<4 x i32>, <4 x i32>, <4 x i32>) {
2213 ; CHECK: entry:
2214 ; CHECK-NEXT: %3 = extractelement <4 x i32> %1, i32 2
2215 ; CHECK-NEXT: ret i32 %3
2216 ; CHECK-NEXT: }
2217
2218 define i32 @extract_12xi32_at_7(<12 x i32>) {
2219 entry:
2220 %1 = extractelement <12 x i32> %0, i32 7
2221 ret i32 %1
2222 }
2223 ; CHECK-LABEL: define i32 @extract_12xi32_at_7(<4 x i32>, <4 x i32>, <4 x i32>) {
2224 ; CHECK: entry:
2225 ; CHECK-NEXT: %3 = extractelement <4 x i32> %1, i32 3
2226 ; CHECK-NEXT: ret i32 %3
2227 ; CHECK-NEXT: }
2228
2229 define i32 @extract_12xi32_at_8(<12 x i32>) {
2230 entry:
2231 %1 = extractelement <12 x i32> %0, i32 8
2232 ret i32 %1
2233 }
2234 ; CHECK-LABEL: define i32 @extract_12xi32_at_8(<4 x i32>, <4 x i32>, <4 x i32>) {
2235 ; CHECK: entry:
2236 ; CHECK-NEXT: %3 = extractelement <4 x i32> %2, i32 0
2237 ; CHECK-NEXT: ret i32 %3
2238 ; CHECK-NEXT: }
2239
2240 define i32 @extract_12xi32_at_9(<12 x i32>) {
2241 entry:
2242 %1 = extractelement <12 x i32> %0, i32 9
2243 ret i32 %1
2244 }
2245 ; CHECK-LABEL: define i32 @extract_12xi32_at_9(<4 x i32>, <4 x i32>, <4 x i32>) {
2246 ; CHECK: entry:
2247 ; CHECK-NEXT: %3 = extractelement <4 x i32> %2, i32 1
2248 ; CHECK-NEXT: ret i32 %3
2249 ; CHECK-NEXT: }
2250
2251 define i32 @extract_12xi32_at_10(<12 x i32>) {
2252 entry:
2253 %1 = extractelement <12 x i32> %0, i32 10
2254 ret i32 %1
2255 }
2256 ; CHECK-LABEL: define i32 @extract_12xi32_at_10(<4 x i32>, <4 x i32>, <4 x i32>) {
2257 ; CHECK: entry:
2258 ; CHECK-NEXT: %3 = extractelement <4 x i32> %2, i32 2
2259 ; CHECK-NEXT: ret i32 %3
2260 ; CHECK-NEXT: }
2261
2262 define i32 @extract_12xi32_at_11(<12 x i32>) {
2263 entry:
2264 %1 = extractelement <12 x i32> %0, i32 11
2265 ret i32 %1
2266 }
2267 ; CHECK-LABEL: define i32 @extract_12xi32_at_11(<4 x i32>, <4 x i32>, <4 x i32>) {
2268 ; CHECK: entry:
2269 ; CHECK-NEXT: %3 = extractelement <4 x i32> %2, i32 3
2270 ; CHECK-NEXT: ret i32 %3
2271 ; CHECK-NEXT: }
2272
2273 define i32 @extract_12xi32_undef_idx(<12 x i32>) {
2274 entry:
2275 %1 = extractelement <12 x i32> %0, i32 12
2276 ret i32 %1
2277 }
2278 ; CHECK-LABEL: define i32 @extract_12xi32_undef_idx(<4 x i32>, <4 x i32>, <4 x i 32>) {
2279 ; CHECK: entry:
2280 ; CHECK-NEXT: %3 = extractelement <4 x i32> %2, i32 4
2281 ; CHECK-NEXT: ret i32 %3
2282 ; CHECK-NEXT: }
2283
2284 define i64 @extract_12xi64_at_0(<12 x i64>) {
2285 entry:
2286 %1 = extractelement <12 x i64> %0, i32 0
2287 ret i64 %1
2288 }
2289 ; CHECK-LABEL: define i64 @extract_12xi64_at_0(<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>) {
2290 ; CHECK: entry:
2291 ; CHECK-NEXT: %6 = extractelement <2 x i64> %0, i32 0
2292 ; CHECK-NEXT: ret i64 %6
2293 ; CHECK-NEXT: }
2294
2295 define i64 @extract_12xi64_at_1(<12 x i64>) {
2296 entry:
2297 %1 = extractelement <12 x i64> %0, i32 1
2298 ret i64 %1
2299 }
2300 ; CHECK-LABEL: define i64 @extract_12xi64_at_1(<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>) {
2301 ; CHECK: entry:
2302 ; CHECK-NEXT: %6 = extractelement <2 x i64> %0, i32 1
2303 ; CHECK-NEXT: ret i64 %6
2304 ; CHECK-NEXT: }
2305
2306 define i64 @extract_12xi64_at_2(<12 x i64>) {
2307 entry:
2308 %1 = extractelement <12 x i64> %0, i32 2
2309 ret i64 %1
2310 }
2311 ; CHECK-LABEL: define i64 @extract_12xi64_at_2(<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>) {
2312 ; CHECK: entry:
2313 ; CHECK-NEXT: %6 = extractelement <2 x i64> %1, i32 0
2314 ; CHECK-NEXT: ret i64 %6
2315 ; CHECK-NEXT: }
2316
2317 define i64 @extract_12xi64_at_3(<12 x i64>) {
2318 entry:
2319 %1 = extractelement <12 x i64> %0, i32 3
2320 ret i64 %1
2321 }
2322 ; CHECK-LABEL: define i64 @extract_12xi64_at_3(<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>) {
2323 ; CHECK: entry:
2324 ; CHECK-NEXT: %6 = extractelement <2 x i64> %1, i32 1
2325 ; CHECK-NEXT: ret i64 %6
2326 ; CHECK-NEXT: }
2327
2328 define i64 @extract_12xi64_at_4(<12 x i64>) {
2329 entry:
2330 %1 = extractelement <12 x i64> %0, i32 4
2331 ret i64 %1
2332 }
2333 ; CHECK-LABEL: define i64 @extract_12xi64_at_4(<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>) {
2334 ; CHECK: entry:
2335 ; CHECK-NEXT: %6 = extractelement <2 x i64> %2, i32 0
2336 ; CHECK-NEXT: ret i64 %6
2337 ; CHECK-NEXT: }
2338
2339 define i64 @extract_12xi64_at_5(<12 x i64>) {
2340 entry:
2341 %1 = extractelement <12 x i64> %0, i32 5
2342 ret i64 %1
2343 }
2344 ; CHECK-LABEL: define i64 @extract_12xi64_at_5(<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>) {
2345 ; CHECK: entry:
2346 ; CHECK-NEXT: %6 = extractelement <2 x i64> %2, i32 1
2347 ; CHECK-NEXT: ret i64 %6
2348 ; CHECK-NEXT: }
2349
2350 define i64 @extract_12xi64_at_6(<12 x i64>) {
2351 entry:
2352 %1 = extractelement <12 x i64> %0, i32 6
2353 ret i64 %1
2354 }
2355 ; CHECK-LABEL: define i64 @extract_12xi64_at_6(<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>) {
2356 ; CHECK: entry:
2357 ; CHECK-NEXT: %6 = extractelement <2 x i64> %3, i32 0
2358 ; CHECK-NEXT: ret i64 %6
2359 ; CHECK-NEXT: }
2360
2361 define i64 @extract_12xi64_at_7(<12 x i64>) {
2362 entry:
2363 %1 = extractelement <12 x i64> %0, i32 7
2364 ret i64 %1
2365 }
2366 ; CHECK-LABEL: define i64 @extract_12xi64_at_7(<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>) {
2367 ; CHECK: entry:
2368 ; CHECK-NEXT: %6 = extractelement <2 x i64> %3, i32 1
2369 ; CHECK-NEXT: ret i64 %6
2370 ; CHECK-NEXT: }
2371
2372 define i64 @extract_12xi64_at_8(<12 x i64>) {
2373 entry:
2374 %1 = extractelement <12 x i64> %0, i32 8
2375 ret i64 %1
2376 }
2377 ; CHECK-LABEL: define i64 @extract_12xi64_at_8(<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>) {
2378 ; CHECK: entry:
2379 ; CHECK-NEXT: %6 = extractelement <2 x i64> %4, i32 0
2380 ; CHECK-NEXT: ret i64 %6
2381 ; CHECK-NEXT: }
2382
2383 define i64 @extract_12xi64_at_9(<12 x i64>) {
2384 entry:
2385 %1 = extractelement <12 x i64> %0, i32 9
2386 ret i64 %1
2387 }
2388 ; CHECK-LABEL: define i64 @extract_12xi64_at_9(<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>) {
2389 ; CHECK: entry:
2390 ; CHECK-NEXT: %6 = extractelement <2 x i64> %4, i32 1
2391 ; CHECK-NEXT: ret i64 %6
2392 ; CHECK-NEXT: }
2393
2394 define i64 @extract_12xi64_at_10(<12 x i64>) {
2395 entry:
2396 %1 = extractelement <12 x i64> %0, i32 10
2397 ret i64 %1
2398 }
2399 ; CHECK-LABEL: define i64 @extract_12xi64_at_10(<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>) {
2400 ; CHECK: entry:
2401 ; CHECK-NEXT: %6 = extractelement <2 x i64> %5, i32 0
2402 ; CHECK-NEXT: ret i64 %6
2403 ; CHECK-NEXT: }
2404
2405 define i64 @extract_12xi64_at_11(<12 x i64>) {
2406 entry:
2407 %1 = extractelement <12 x i64> %0, i32 11
2408 ret i64 %1
2409 }
2410 ; CHECK-LABEL: define i64 @extract_12xi64_at_11(<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>) {
2411 ; CHECK: entry:
2412 ; CHECK-NEXT: %6 = extractelement <2 x i64> %5, i32 1
2413 ; CHECK-NEXT: ret i64 %6
2414 ; CHECK-NEXT: }
2415
2416 define i64 @extract_12xi64_undef_idx(<12 x i64>) {
2417 entry:
2418 %1 = extractelement <12 x i64> %0, i32 12
2419 ret i64 %1
2420 }
2421 ; CHECK-LABEL: define i64 @extract_12xi64_undef_idx(<2 x i64>, <2 x i64>, <2 x i 64>, <2 x i64>, <2 x i64>, <2 x i64>) {
2422 ; CHECK: entry:
2423 ; CHECK-NEXT: %6 = extractelement <2 x i64> %5, i32 2
2424 ; CHECK-NEXT: ret i64 %6
2425 ; CHECK-NEXT: }
2426
2427 define i8* @extract_12xi8ptr_at_0(<12 x i8*>) {
2428 entry:
2429 %1 = extractelement <12 x i8*> %0, i32 0
2430 ret i8* %1
2431 }
2432 ; CHECK-LABEL: define i8* @extract_12xi8ptr_at_0(<4 x i8*>, <4 x i8*>, <4 x i8*> ) {
2433 ; CHECK: entry:
2434 ; CHECK-NEXT: %3 = extractelement <4 x i8*> %0, i32 0
2435 ; CHECK-NEXT: ret i8* %3
2436 ; CHECK-NEXT: }
2437
2438 define i8* @extract_12xi8ptr_at_1(<12 x i8*>) {
2439 entry:
2440 %1 = extractelement <12 x i8*> %0, i32 1
2441 ret i8* %1
2442 }
2443 ; CHECK-LABEL: define i8* @extract_12xi8ptr_at_1(<4 x i8*>, <4 x i8*>, <4 x i8*> ) {
2444 ; CHECK: entry:
2445 ; CHECK-NEXT: %3 = extractelement <4 x i8*> %0, i32 1
2446 ; CHECK-NEXT: ret i8* %3
2447 ; CHECK-NEXT: }
2448
2449 define i8* @extract_12xi8ptr_at_2(<12 x i8*>) {
2450 entry:
2451 %1 = extractelement <12 x i8*> %0, i32 2
2452 ret i8* %1
2453 }
2454 ; CHECK-LABEL: define i8* @extract_12xi8ptr_at_2(<4 x i8*>, <4 x i8*>, <4 x i8*> ) {
2455 ; CHECK: entry:
2456 ; CHECK-NEXT: %3 = extractelement <4 x i8*> %0, i32 2
2457 ; CHECK-NEXT: ret i8* %3
2458 ; CHECK-NEXT: }
2459
2460 define i8* @extract_12xi8ptr_at_3(<12 x i8*>) {
2461 entry:
2462 %1 = extractelement <12 x i8*> %0, i32 3
2463 ret i8* %1
2464 }
2465 ; CHECK-LABEL: define i8* @extract_12xi8ptr_at_3(<4 x i8*>, <4 x i8*>, <4 x i8*> ) {
2466 ; CHECK: entry:
2467 ; CHECK-NEXT: %3 = extractelement <4 x i8*> %0, i32 3
2468 ; CHECK-NEXT: ret i8* %3
2469 ; CHECK-NEXT: }
2470
2471 define i8* @extract_12xi8ptr_at_4(<12 x i8*>) {
2472 entry:
2473 %1 = extractelement <12 x i8*> %0, i32 4
2474 ret i8* %1
2475 }
2476 ; CHECK-LABEL: define i8* @extract_12xi8ptr_at_4(<4 x i8*>, <4 x i8*>, <4 x i8*> ) {
2477 ; CHECK: entry:
2478 ; CHECK-NEXT: %3 = extractelement <4 x i8*> %1, i32 0
2479 ; CHECK-NEXT: ret i8* %3
2480 ; CHECK-NEXT: }
2481
2482 define i8* @extract_12xi8ptr_at_5(<12 x i8*>) {
2483 entry:
2484 %1 = extractelement <12 x i8*> %0, i32 5
2485 ret i8* %1
2486 }
2487 ; CHECK-LABEL: define i8* @extract_12xi8ptr_at_5(<4 x i8*>, <4 x i8*>, <4 x i8*> ) {
2488 ; CHECK: entry:
2489 ; CHECK-NEXT: %3 = extractelement <4 x i8*> %1, i32 1
2490 ; CHECK-NEXT: ret i8* %3
2491 ; CHECK-NEXT: }
2492
2493 define i8* @extract_12xi8ptr_at_6(<12 x i8*>) {
2494 entry:
2495 %1 = extractelement <12 x i8*> %0, i32 6
2496 ret i8* %1
2497 }
2498 ; CHECK-LABEL: define i8* @extract_12xi8ptr_at_6(<4 x i8*>, <4 x i8*>, <4 x i8*> ) {
2499 ; CHECK: entry:
2500 ; CHECK-NEXT: %3 = extractelement <4 x i8*> %1, i32 2
2501 ; CHECK-NEXT: ret i8* %3
2502 ; CHECK-NEXT: }
2503
2504 define i8* @extract_12xi8ptr_at_7(<12 x i8*>) {
2505 entry:
2506 %1 = extractelement <12 x i8*> %0, i32 7
2507 ret i8* %1
2508 }
2509 ; CHECK-LABEL: define i8* @extract_12xi8ptr_at_7(<4 x i8*>, <4 x i8*>, <4 x i8*> ) {
2510 ; CHECK: entry:
2511 ; CHECK-NEXT: %3 = extractelement <4 x i8*> %1, i32 3
2512 ; CHECK-NEXT: ret i8* %3
2513 ; CHECK-NEXT: }
2514
2515 define i8* @extract_12xi8ptr_at_8(<12 x i8*>) {
2516 entry:
2517 %1 = extractelement <12 x i8*> %0, i32 8
2518 ret i8* %1
2519 }
2520 ; CHECK-LABEL: define i8* @extract_12xi8ptr_at_8(<4 x i8*>, <4 x i8*>, <4 x i8*> ) {
2521 ; CHECK: entry:
2522 ; CHECK-NEXT: %3 = extractelement <4 x i8*> %2, i32 0
2523 ; CHECK-NEXT: ret i8* %3
2524 ; CHECK-NEXT: }
2525
2526 define i8* @extract_12xi8ptr_at_9(<12 x i8*>) {
2527 entry:
2528 %1 = extractelement <12 x i8*> %0, i32 9
2529 ret i8* %1
2530 }
2531 ; CHECK-LABEL: define i8* @extract_12xi8ptr_at_9(<4 x i8*>, <4 x i8*>, <4 x i8*> ) {
2532 ; CHECK: entry:
2533 ; CHECK-NEXT: %3 = extractelement <4 x i8*> %2, i32 1
2534 ; CHECK-NEXT: ret i8* %3
2535 ; CHECK-NEXT: }
2536
2537 define i8* @extract_12xi8ptr_at_10(<12 x i8*>) {
2538 entry:
2539 %1 = extractelement <12 x i8*> %0, i32 10
2540 ret i8* %1
2541 }
2542 ; CHECK-LABEL: define i8* @extract_12xi8ptr_at_10(<4 x i8*>, <4 x i8*>, <4 x i8* >) {
2543 ; CHECK: entry:
2544 ; CHECK-NEXT: %3 = extractelement <4 x i8*> %2, i32 2
2545 ; CHECK-NEXT: ret i8* %3
2546 ; CHECK-NEXT: }
2547
2548 define i8* @extract_12xi8ptr_at_11(<12 x i8*>) {
2549 entry:
2550 %1 = extractelement <12 x i8*> %0, i32 11
2551 ret i8* %1
2552 }
2553 ; CHECK-LABEL: define i8* @extract_12xi8ptr_at_11(<4 x i8*>, <4 x i8*>, <4 x i8* >) {
2554 ; CHECK: entry:
2555 ; CHECK-NEXT: %3 = extractelement <4 x i8*> %2, i32 3
2556 ; CHECK-NEXT: ret i8* %3
2557 ; CHECK-NEXT: }
2558
2559 define i8* @extract_12xi8ptr_undef_idx(<12 x i8*>) {
2560 entry:
2561 %1 = extractelement <12 x i8*> %0, i32 12
2562 ret i8* %1
2563 }
2564 ; CHECK-LABEL: define i8* @extract_12xi8ptr_undef_idx(<4 x i8*>, <4 x i8*>, <4 x i8*>) {
2565 ; CHECK: entry:
2566 ; CHECK-NEXT: %3 = extractelement <4 x i8*> %2, i32 4
2567 ; CHECK-NEXT: ret i8* %3
2568 ; CHECK-NEXT: }
2569
2570 define float @extract_12xfloat_at_0(<12 x float>) {
2571 entry:
2572 %1 = extractelement <12 x float> %0, i32 0
2573 ret float %1
2574 }
2575 ; CHECK-LABEL: define float @extract_12xfloat_at_0(<4 x float>, <4 x float>, <4 x float>) {
2576 ; CHECK: entry:
2577 ; CHECK-NEXT: %3 = extractelement <4 x float> %0, i32 0
2578 ; CHECK-NEXT: ret float %3
2579 ; CHECK-NEXT: }
2580
2581 define float @extract_12xfloat_at_1(<12 x float>) {
2582 entry:
2583 %1 = extractelement <12 x float> %0, i32 1
2584 ret float %1
2585 }
2586 ; CHECK-LABEL: define float @extract_12xfloat_at_1(<4 x float>, <4 x float>, <4 x float>) {
2587 ; CHECK: entry:
2588 ; CHECK-NEXT: %3 = extractelement <4 x float> %0, i32 1
2589 ; CHECK-NEXT: ret float %3
2590 ; CHECK-NEXT: }
2591
2592 define float @extract_12xfloat_at_2(<12 x float>) {
2593 entry:
2594 %1 = extractelement <12 x float> %0, i32 2
2595 ret float %1
2596 }
2597 ; CHECK-LABEL: define float @extract_12xfloat_at_2(<4 x float>, <4 x float>, <4 x float>) {
2598 ; CHECK: entry:
2599 ; CHECK-NEXT: %3 = extractelement <4 x float> %0, i32 2
2600 ; CHECK-NEXT: ret float %3
2601 ; CHECK-NEXT: }
2602
2603 define float @extract_12xfloat_at_3(<12 x float>) {
2604 entry:
2605 %1 = extractelement <12 x float> %0, i32 3
2606 ret float %1
2607 }
2608 ; CHECK-LABEL: define float @extract_12xfloat_at_3(<4 x float>, <4 x float>, <4 x float>) {
2609 ; CHECK: entry:
2610 ; CHECK-NEXT: %3 = extractelement <4 x float> %0, i32 3
2611 ; CHECK-NEXT: ret float %3
2612 ; CHECK-NEXT: }
2613
2614 define float @extract_12xfloat_at_4(<12 x float>) {
2615 entry:
2616 %1 = extractelement <12 x float> %0, i32 4
2617 ret float %1
2618 }
2619 ; CHECK-LABEL: define float @extract_12xfloat_at_4(<4 x float>, <4 x float>, <4 x float>) {
2620 ; CHECK: entry:
2621 ; CHECK-NEXT: %3 = extractelement <4 x float> %1, i32 0
2622 ; CHECK-NEXT: ret float %3
2623 ; CHECK-NEXT: }
2624
2625 define float @extract_12xfloat_at_5(<12 x float>) {
2626 entry:
2627 %1 = extractelement <12 x float> %0, i32 5
2628 ret float %1
2629 }
2630 ; CHECK-LABEL: define float @extract_12xfloat_at_5(<4 x float>, <4 x float>, <4 x float>) {
2631 ; CHECK: entry:
2632 ; CHECK-NEXT: %3 = extractelement <4 x float> %1, i32 1
2633 ; CHECK-NEXT: ret float %3
2634 ; CHECK-NEXT: }
2635
2636 define float @extract_12xfloat_at_6(<12 x float>) {
2637 entry:
2638 %1 = extractelement <12 x float> %0, i32 6
2639 ret float %1
2640 }
2641 ; CHECK-LABEL: define float @extract_12xfloat_at_6(<4 x float>, <4 x float>, <4 x float>) {
2642 ; CHECK: entry:
2643 ; CHECK-NEXT: %3 = extractelement <4 x float> %1, i32 2
2644 ; CHECK-NEXT: ret float %3
2645 ; CHECK-NEXT: }
2646
2647 define float @extract_12xfloat_at_7(<12 x float>) {
2648 entry:
2649 %1 = extractelement <12 x float> %0, i32 7
2650 ret float %1
2651 }
2652 ; CHECK-LABEL: define float @extract_12xfloat_at_7(<4 x float>, <4 x float>, <4 x float>) {
2653 ; CHECK: entry:
2654 ; CHECK-NEXT: %3 = extractelement <4 x float> %1, i32 3
2655 ; CHECK-NEXT: ret float %3
2656 ; CHECK-NEXT: }
2657
2658 define float @extract_12xfloat_at_8(<12 x float>) {
2659 entry:
2660 %1 = extractelement <12 x float> %0, i32 8
2661 ret float %1
2662 }
2663 ; CHECK-LABEL: define float @extract_12xfloat_at_8(<4 x float>, <4 x float>, <4 x float>) {
2664 ; CHECK: entry:
2665 ; CHECK-NEXT: %3 = extractelement <4 x float> %2, i32 0
2666 ; CHECK-NEXT: ret float %3
2667 ; CHECK-NEXT: }
2668
2669 define float @extract_12xfloat_at_9(<12 x float>) {
2670 entry:
2671 %1 = extractelement <12 x float> %0, i32 9
2672 ret float %1
2673 }
2674 ; CHECK-LABEL: define float @extract_12xfloat_at_9(<4 x float>, <4 x float>, <4 x float>) {
2675 ; CHECK: entry:
2676 ; CHECK-NEXT: %3 = extractelement <4 x float> %2, i32 1
2677 ; CHECK-NEXT: ret float %3
2678 ; CHECK-NEXT: }
2679
2680 define float @extract_12xfloat_at_10(<12 x float>) {
2681 entry:
2682 %1 = extractelement <12 x float> %0, i32 10
2683 ret float %1
2684 }
2685 ; CHECK-LABEL: define float @extract_12xfloat_at_10(<4 x float>, <4 x float>, <4 x float>) {
2686 ; CHECK: entry:
2687 ; CHECK-NEXT: %3 = extractelement <4 x float> %2, i32 2
2688 ; CHECK-NEXT: ret float %3
2689 ; CHECK-NEXT: }
2690
2691 define float @extract_12xfloat_at_11(<12 x float>) {
2692 entry:
2693 %1 = extractelement <12 x float> %0, i32 11
2694 ret float %1
2695 }
2696 ; CHECK-LABEL: define float @extract_12xfloat_at_11(<4 x float>, <4 x float>, <4 x float>) {
2697 ; CHECK: entry:
2698 ; CHECK-NEXT: %3 = extractelement <4 x float> %2, i32 3
2699 ; CHECK-NEXT: ret float %3
2700 ; CHECK-NEXT: }
2701
2702 define float @extract_12xfloat_undef_idx(<12 x float>) {
2703 entry:
2704 %1 = extractelement <12 x float> %0, i32 12
2705 ret float %1
2706 }
2707 ; CHECK-LABEL: define float @extract_12xfloat_undef_idx(<4 x float>, <4 x float> , <4 x float>) {
2708 ; CHECK: entry:
2709 ; CHECK-NEXT: %3 = extractelement <4 x float> %2, i32 4
2710 ; CHECK-NEXT: ret float %3
2711 ; CHECK-NEXT: }
2712
2713 define double @extract_12xdouble_at_0(<12 x double>) {
2714 entry:
2715 %1 = extractelement <12 x double> %0, i32 0
2716 ret double %1
2717 }
2718 ; CHECK-LABEL: define double @extract_12xdouble_at_0(<2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>) {
2719 ; CHECK: entry:
2720 ; CHECK-NEXT: %6 = extractelement <2 x double> %0, i32 0
2721 ; CHECK-NEXT: ret double %6
2722 ; CHECK-NEXT: }
2723
2724 define double @extract_12xdouble_at_1(<12 x double>) {
2725 entry:
2726 %1 = extractelement <12 x double> %0, i32 1
2727 ret double %1
2728 }
2729 ; CHECK-LABEL: define double @extract_12xdouble_at_1(<2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>) {
2730 ; CHECK: entry:
2731 ; CHECK-NEXT: %6 = extractelement <2 x double> %0, i32 1
2732 ; CHECK-NEXT: ret double %6
2733 ; CHECK-NEXT: }
2734
2735 define double @extract_12xdouble_at_2(<12 x double>) {
2736 entry:
2737 %1 = extractelement <12 x double> %0, i32 2
2738 ret double %1
2739 }
2740 ; CHECK-LABEL: define double @extract_12xdouble_at_2(<2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>) {
2741 ; CHECK: entry:
2742 ; CHECK-NEXT: %6 = extractelement <2 x double> %1, i32 0
2743 ; CHECK-NEXT: ret double %6
2744 ; CHECK-NEXT: }
2745
2746 define double @extract_12xdouble_at_3(<12 x double>) {
2747 entry:
2748 %1 = extractelement <12 x double> %0, i32 3
2749 ret double %1
2750 }
2751 ; CHECK-LABEL: define double @extract_12xdouble_at_3(<2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>) {
2752 ; CHECK: entry:
2753 ; CHECK-NEXT: %6 = extractelement <2 x double> %1, i32 1
2754 ; CHECK-NEXT: ret double %6
2755 ; CHECK-NEXT: }
2756
2757 define double @extract_12xdouble_at_4(<12 x double>) {
2758 entry:
2759 %1 = extractelement <12 x double> %0, i32 4
2760 ret double %1
2761 }
2762 ; CHECK-LABEL: define double @extract_12xdouble_at_4(<2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>) {
2763 ; CHECK: entry:
2764 ; CHECK-NEXT: %6 = extractelement <2 x double> %2, i32 0
2765 ; CHECK-NEXT: ret double %6
2766 ; CHECK-NEXT: }
2767
2768 define double @extract_12xdouble_at_5(<12 x double>) {
2769 entry:
2770 %1 = extractelement <12 x double> %0, i32 5
2771 ret double %1
2772 }
2773 ; CHECK-LABEL: define double @extract_12xdouble_at_5(<2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>) {
2774 ; CHECK: entry:
2775 ; CHECK-NEXT: %6 = extractelement <2 x double> %2, i32 1
2776 ; CHECK-NEXT: ret double %6
2777 ; CHECK-NEXT: }
2778
2779 define double @extract_12xdouble_at_6(<12 x double>) {
2780 entry:
2781 %1 = extractelement <12 x double> %0, i32 6
2782 ret double %1
2783 }
2784 ; CHECK-LABEL: define double @extract_12xdouble_at_6(<2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>) {
2785 ; CHECK: entry:
2786 ; CHECK-NEXT: %6 = extractelement <2 x double> %3, i32 0
2787 ; CHECK-NEXT: ret double %6
2788 ; CHECK-NEXT: }
2789
2790 define double @extract_12xdouble_at_7(<12 x double>) {
2791 entry:
2792 %1 = extractelement <12 x double> %0, i32 7
2793 ret double %1
2794 }
2795 ; CHECK-LABEL: define double @extract_12xdouble_at_7(<2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>) {
2796 ; CHECK: entry:
2797 ; CHECK-NEXT: %6 = extractelement <2 x double> %3, i32 1
2798 ; CHECK-NEXT: ret double %6
2799 ; CHECK-NEXT: }
2800
2801 define double @extract_12xdouble_at_8(<12 x double>) {
2802 entry:
2803 %1 = extractelement <12 x double> %0, i32 8
2804 ret double %1
2805 }
2806 ; CHECK-LABEL: define double @extract_12xdouble_at_8(<2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>) {
2807 ; CHECK: entry:
2808 ; CHECK-NEXT: %6 = extractelement <2 x double> %4, i32 0
2809 ; CHECK-NEXT: ret double %6
2810 ; CHECK-NEXT: }
2811
2812 define double @extract_12xdouble_at_9(<12 x double>) {
2813 entry:
2814 %1 = extractelement <12 x double> %0, i32 9
2815 ret double %1
2816 }
2817 ; CHECK-LABEL: define double @extract_12xdouble_at_9(<2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>) {
2818 ; CHECK: entry:
2819 ; CHECK-NEXT: %6 = extractelement <2 x double> %4, i32 1
2820 ; CHECK-NEXT: ret double %6
2821 ; CHECK-NEXT: }
2822
2823 define double @extract_12xdouble_at_10(<12 x double>) {
2824 entry:
2825 %1 = extractelement <12 x double> %0, i32 10
2826 ret double %1
2827 }
2828 ; CHECK-LABEL: define double @extract_12xdouble_at_10(<2 x double>, <2 x double> , <2 x double>, <2 x double>, <2 x double>, <2 x double>) {
2829 ; CHECK: entry:
2830 ; CHECK-NEXT: %6 = extractelement <2 x double> %5, i32 0
2831 ; CHECK-NEXT: ret double %6
2832 ; CHECK-NEXT: }
2833
2834 define double @extract_12xdouble_at_11(<12 x double>) {
2835 entry:
2836 %1 = extractelement <12 x double> %0, i32 11
2837 ret double %1
2838 }
2839 ; CHECK-LABEL: define double @extract_12xdouble_at_11(<2 x double>, <2 x double> , <2 x double>, <2 x double>, <2 x double>, <2 x double>) {
2840 ; CHECK: entry:
2841 ; CHECK-NEXT: %6 = extractelement <2 x double> %5, i32 1
2842 ; CHECK-NEXT: ret double %6
2843 ; CHECK-NEXT: }
2844
2845 define double @extract_12xdouble_undef_idx(<12 x double>) {
2846 entry:
2847 %1 = extractelement <12 x double> %0, i32 12
2848 ret double %1
2849 }
2850 ; CHECK-LABEL: define double @extract_12xdouble_undef_idx(<2 x double>, <2 x dou ble>, <2 x double>, <2 x double>, <2 x double>, <2 x double>) {
2851 ; CHECK: entry:
2852 ; CHECK-NEXT: %6 = extractelement <2 x double> %5, i32 2
2853 ; CHECK-NEXT: ret double %6
2854 ; CHECK-NEXT: }
2855
2856 define i8 @extract_16xi8_at_0(<16 x i8>) {
2857 entry:
2858 %1 = extractelement <16 x i8> %0, i32 0
2859 ret i8 %1
2860 }
2861 ; CHECK-LABEL: define i8 @extract_16xi8_at_0(<16 x i8>) {
2862 ; CHECK: entry:
2863 ; CHECK-NEXT: %1 = extractelement <16 x i8> %0, i32 0
2864 ; CHECK-NEXT: ret i8 %1
2865 ; CHECK-NEXT: }
2866
2867 define i8 @extract_16xi8_at_1(<16 x i8>) {
2868 entry:
2869 %1 = extractelement <16 x i8> %0, i32 1
2870 ret i8 %1
2871 }
2872 ; CHECK-LABEL: define i8 @extract_16xi8_at_1(<16 x i8>) {
2873 ; CHECK: entry:
2874 ; CHECK-NEXT: %1 = extractelement <16 x i8> %0, i32 1
2875 ; CHECK-NEXT: ret i8 %1
2876 ; CHECK-NEXT: }
2877
2878 define i8 @extract_16xi8_at_2(<16 x i8>) {
2879 entry:
2880 %1 = extractelement <16 x i8> %0, i32 2
2881 ret i8 %1
2882 }
2883 ; CHECK-LABEL: define i8 @extract_16xi8_at_2(<16 x i8>) {
2884 ; CHECK: entry:
2885 ; CHECK-NEXT: %1 = extractelement <16 x i8> %0, i32 2
2886 ; CHECK-NEXT: ret i8 %1
2887 ; CHECK-NEXT: }
2888
2889 define i8 @extract_16xi8_at_3(<16 x i8>) {
2890 entry:
2891 %1 = extractelement <16 x i8> %0, i32 3
2892 ret i8 %1
2893 }
2894 ; CHECK-LABEL: define i8 @extract_16xi8_at_3(<16 x i8>) {
2895 ; CHECK: entry:
2896 ; CHECK-NEXT: %1 = extractelement <16 x i8> %0, i32 3
2897 ; CHECK-NEXT: ret i8 %1
2898 ; CHECK-NEXT: }
2899
2900 define i8 @extract_16xi8_at_4(<16 x i8>) {
2901 entry:
2902 %1 = extractelement <16 x i8> %0, i32 4
2903 ret i8 %1
2904 }
2905 ; CHECK-LABEL: define i8 @extract_16xi8_at_4(<16 x i8>) {
2906 ; CHECK: entry:
2907 ; CHECK-NEXT: %1 = extractelement <16 x i8> %0, i32 4
2908 ; CHECK-NEXT: ret i8 %1
2909 ; CHECK-NEXT: }
2910
2911 define i8 @extract_16xi8_at_5(<16 x i8>) {
2912 entry:
2913 %1 = extractelement <16 x i8> %0, i32 5
2914 ret i8 %1
2915 }
2916 ; CHECK-LABEL: define i8 @extract_16xi8_at_5(<16 x i8>) {
2917 ; CHECK: entry:
2918 ; CHECK-NEXT: %1 = extractelement <16 x i8> %0, i32 5
2919 ; CHECK-NEXT: ret i8 %1
2920 ; CHECK-NEXT: }
2921
2922 define i8 @extract_16xi8_at_6(<16 x i8>) {
2923 entry:
2924 %1 = extractelement <16 x i8> %0, i32 6
2925 ret i8 %1
2926 }
2927 ; CHECK-LABEL: define i8 @extract_16xi8_at_6(<16 x i8>) {
2928 ; CHECK: entry:
2929 ; CHECK-NEXT: %1 = extractelement <16 x i8> %0, i32 6
2930 ; CHECK-NEXT: ret i8 %1
2931 ; CHECK-NEXT: }
2932
2933 define i8 @extract_16xi8_at_7(<16 x i8>) {
2934 entry:
2935 %1 = extractelement <16 x i8> %0, i32 7
2936 ret i8 %1
2937 }
2938 ; CHECK-LABEL: define i8 @extract_16xi8_at_7(<16 x i8>) {
2939 ; CHECK: entry:
2940 ; CHECK-NEXT: %1 = extractelement <16 x i8> %0, i32 7
2941 ; CHECK-NEXT: ret i8 %1
2942 ; CHECK-NEXT: }
2943
2944 define i8 @extract_16xi8_at_8(<16 x i8>) {
2945 entry:
2946 %1 = extractelement <16 x i8> %0, i32 8
2947 ret i8 %1
2948 }
2949 ; CHECK-LABEL: define i8 @extract_16xi8_at_8(<16 x i8>) {
2950 ; CHECK: entry:
2951 ; CHECK-NEXT: %1 = extractelement <16 x i8> %0, i32 8
2952 ; CHECK-NEXT: ret i8 %1
2953 ; CHECK-NEXT: }
2954
2955 define i8 @extract_16xi8_at_9(<16 x i8>) {
2956 entry:
2957 %1 = extractelement <16 x i8> %0, i32 9
2958 ret i8 %1
2959 }
2960 ; CHECK-LABEL: define i8 @extract_16xi8_at_9(<16 x i8>) {
2961 ; CHECK: entry:
2962 ; CHECK-NEXT: %1 = extractelement <16 x i8> %0, i32 9
2963 ; CHECK-NEXT: ret i8 %1
2964 ; CHECK-NEXT: }
2965
2966 define i8 @extract_16xi8_at_10(<16 x i8>) {
2967 entry:
2968 %1 = extractelement <16 x i8> %0, i32 10
2969 ret i8 %1
2970 }
2971 ; CHECK-LABEL: define i8 @extract_16xi8_at_10(<16 x i8>) {
2972 ; CHECK: entry:
2973 ; CHECK-NEXT: %1 = extractelement <16 x i8> %0, i32 10
2974 ; CHECK-NEXT: ret i8 %1
2975 ; CHECK-NEXT: }
2976
2977 define i8 @extract_16xi8_at_11(<16 x i8>) {
2978 entry:
2979 %1 = extractelement <16 x i8> %0, i32 11
2980 ret i8 %1
2981 }
2982 ; CHECK-LABEL: define i8 @extract_16xi8_at_11(<16 x i8>) {
2983 ; CHECK: entry:
2984 ; CHECK-NEXT: %1 = extractelement <16 x i8> %0, i32 11
2985 ; CHECK-NEXT: ret i8 %1
2986 ; CHECK-NEXT: }
2987
2988 define i8 @extract_16xi8_at_12(<16 x i8>) {
2989 entry:
2990 %1 = extractelement <16 x i8> %0, i32 12
2991 ret i8 %1
2992 }
2993 ; CHECK-LABEL: define i8 @extract_16xi8_at_12(<16 x i8>) {
2994 ; CHECK: entry:
2995 ; CHECK-NEXT: %1 = extractelement <16 x i8> %0, i32 12
2996 ; CHECK-NEXT: ret i8 %1
2997 ; CHECK-NEXT: }
2998
2999 define i8 @extract_16xi8_at_13(<16 x i8>) {
3000 entry:
3001 %1 = extractelement <16 x i8> %0, i32 13
3002 ret i8 %1
3003 }
3004 ; CHECK-LABEL: define i8 @extract_16xi8_at_13(<16 x i8>) {
3005 ; CHECK: entry:
3006 ; CHECK-NEXT: %1 = extractelement <16 x i8> %0, i32 13
3007 ; CHECK-NEXT: ret i8 %1
3008 ; CHECK-NEXT: }
3009
3010 define i8 @extract_16xi8_at_14(<16 x i8>) {
3011 entry:
3012 %1 = extractelement <16 x i8> %0, i32 14
3013 ret i8 %1
3014 }
3015 ; CHECK-LABEL: define i8 @extract_16xi8_at_14(<16 x i8>) {
3016 ; CHECK: entry:
3017 ; CHECK-NEXT: %1 = extractelement <16 x i8> %0, i32 14
3018 ; CHECK-NEXT: ret i8 %1
3019 ; CHECK-NEXT: }
3020
3021 define i8 @extract_16xi8_at_15(<16 x i8>) {
3022 entry:
3023 %1 = extractelement <16 x i8> %0, i32 15
3024 ret i8 %1
3025 }
3026 ; CHECK-LABEL: define i8 @extract_16xi8_at_15(<16 x i8>) {
3027 ; CHECK: entry:
3028 ; CHECK-NEXT: %1 = extractelement <16 x i8> %0, i32 15
3029 ; CHECK-NEXT: ret i8 %1
3030 ; CHECK-NEXT: }
3031
3032 define i8 @extract_16xi8_undef_idx(<16 x i8>) {
3033 entry:
3034 %1 = extractelement <16 x i8> %0, i32 16
3035 ret i8 %1
3036 }
3037 ; CHECK-LABEL: define i8 @extract_16xi8_undef_idx(<16 x i8>) {
3038 ; CHECK: entry:
3039 ; CHECK-NEXT: %1 = extractelement <16 x i8> %0, i32 16
3040 ; CHECK-NEXT: ret i8 %1
3041 ; CHECK-NEXT: }
3042
3043 define i16 @extract_16xi16_at_0(<16 x i16>) {
3044 entry:
3045 %1 = extractelement <16 x i16> %0, i32 0
3046 ret i16 %1
3047 }
3048 ; CHECK-LABEL: define i16 @extract_16xi16_at_0(<8 x i16>, <8 x i16>) {
3049 ; CHECK: entry:
3050 ; CHECK-NEXT: %2 = extractelement <8 x i16> %0, i32 0
3051 ; CHECK-NEXT: ret i16 %2
3052 ; CHECK-NEXT: }
3053
3054 define i16 @extract_16xi16_at_1(<16 x i16>) {
3055 entry:
3056 %1 = extractelement <16 x i16> %0, i32 1
3057 ret i16 %1
3058 }
3059 ; CHECK-LABEL: define i16 @extract_16xi16_at_1(<8 x i16>, <8 x i16>) {
3060 ; CHECK: entry:
3061 ; CHECK-NEXT: %2 = extractelement <8 x i16> %0, i32 1
3062 ; CHECK-NEXT: ret i16 %2
3063 ; CHECK-NEXT: }
3064
3065 define i16 @extract_16xi16_at_2(<16 x i16>) {
3066 entry:
3067 %1 = extractelement <16 x i16> %0, i32 2
3068 ret i16 %1
3069 }
3070 ; CHECK-LABEL: define i16 @extract_16xi16_at_2(<8 x i16>, <8 x i16>) {
3071 ; CHECK: entry:
3072 ; CHECK-NEXT: %2 = extractelement <8 x i16> %0, i32 2
3073 ; CHECK-NEXT: ret i16 %2
3074 ; CHECK-NEXT: }
3075
3076 define i16 @extract_16xi16_at_3(<16 x i16>) {
3077 entry:
3078 %1 = extractelement <16 x i16> %0, i32 3
3079 ret i16 %1
3080 }
3081 ; CHECK-LABEL: define i16 @extract_16xi16_at_3(<8 x i16>, <8 x i16>) {
3082 ; CHECK: entry:
3083 ; CHECK-NEXT: %2 = extractelement <8 x i16> %0, i32 3
3084 ; CHECK-NEXT: ret i16 %2
3085 ; CHECK-NEXT: }
3086
3087 define i16 @extract_16xi16_at_4(<16 x i16>) {
3088 entry:
3089 %1 = extractelement <16 x i16> %0, i32 4
3090 ret i16 %1
3091 }
3092 ; CHECK-LABEL: define i16 @extract_16xi16_at_4(<8 x i16>, <8 x i16>) {
3093 ; CHECK: entry:
3094 ; CHECK-NEXT: %2 = extractelement <8 x i16> %0, i32 4
3095 ; CHECK-NEXT: ret i16 %2
3096 ; CHECK-NEXT: }
3097
3098 define i16 @extract_16xi16_at_5(<16 x i16>) {
3099 entry:
3100 %1 = extractelement <16 x i16> %0, i32 5
3101 ret i16 %1
3102 }
3103 ; CHECK-LABEL: define i16 @extract_16xi16_at_5(<8 x i16>, <8 x i16>) {
3104 ; CHECK: entry:
3105 ; CHECK-NEXT: %2 = extractelement <8 x i16> %0, i32 5
3106 ; CHECK-NEXT: ret i16 %2
3107 ; CHECK-NEXT: }
3108
3109 define i16 @extract_16xi16_at_6(<16 x i16>) {
3110 entry:
3111 %1 = extractelement <16 x i16> %0, i32 6
3112 ret i16 %1
3113 }
3114 ; CHECK-LABEL: define i16 @extract_16xi16_at_6(<8 x i16>, <8 x i16>) {
3115 ; CHECK: entry:
3116 ; CHECK-NEXT: %2 = extractelement <8 x i16> %0, i32 6
3117 ; CHECK-NEXT: ret i16 %2
3118 ; CHECK-NEXT: }
3119
3120 define i16 @extract_16xi16_at_7(<16 x i16>) {
3121 entry:
3122 %1 = extractelement <16 x i16> %0, i32 7
3123 ret i16 %1
3124 }
3125 ; CHECK-LABEL: define i16 @extract_16xi16_at_7(<8 x i16>, <8 x i16>) {
3126 ; CHECK: entry:
3127 ; CHECK-NEXT: %2 = extractelement <8 x i16> %0, i32 7
3128 ; CHECK-NEXT: ret i16 %2
3129 ; CHECK-NEXT: }
3130
3131 define i16 @extract_16xi16_at_8(<16 x i16>) {
3132 entry:
3133 %1 = extractelement <16 x i16> %0, i32 8
3134 ret i16 %1
3135 }
3136 ; CHECK-LABEL: define i16 @extract_16xi16_at_8(<8 x i16>, <8 x i16>) {
3137 ; CHECK: entry:
3138 ; CHECK-NEXT: %2 = extractelement <8 x i16> %1, i32 0
3139 ; CHECK-NEXT: ret i16 %2
3140 ; CHECK-NEXT: }
3141
3142 define i16 @extract_16xi16_at_9(<16 x i16>) {
3143 entry:
3144 %1 = extractelement <16 x i16> %0, i32 9
3145 ret i16 %1
3146 }
3147 ; CHECK-LABEL: define i16 @extract_16xi16_at_9(<8 x i16>, <8 x i16>) {
3148 ; CHECK: entry:
3149 ; CHECK-NEXT: %2 = extractelement <8 x i16> %1, i32 1
3150 ; CHECK-NEXT: ret i16 %2
3151 ; CHECK-NEXT: }
3152
3153 define i16 @extract_16xi16_at_10(<16 x i16>) {
3154 entry:
3155 %1 = extractelement <16 x i16> %0, i32 10
3156 ret i16 %1
3157 }
3158 ; CHECK-LABEL: define i16 @extract_16xi16_at_10(<8 x i16>, <8 x i16>) {
3159 ; CHECK: entry:
3160 ; CHECK-NEXT: %2 = extractelement <8 x i16> %1, i32 2
3161 ; CHECK-NEXT: ret i16 %2
3162 ; CHECK-NEXT: }
3163
3164 define i16 @extract_16xi16_at_11(<16 x i16>) {
3165 entry:
3166 %1 = extractelement <16 x i16> %0, i32 11
3167 ret i16 %1
3168 }
3169 ; CHECK-LABEL: define i16 @extract_16xi16_at_11(<8 x i16>, <8 x i16>) {
3170 ; CHECK: entry:
3171 ; CHECK-NEXT: %2 = extractelement <8 x i16> %1, i32 3
3172 ; CHECK-NEXT: ret i16 %2
3173 ; CHECK-NEXT: }
3174
3175 define i16 @extract_16xi16_at_12(<16 x i16>) {
3176 entry:
3177 %1 = extractelement <16 x i16> %0, i32 12
3178 ret i16 %1
3179 }
3180 ; CHECK-LABEL: define i16 @extract_16xi16_at_12(<8 x i16>, <8 x i16>) {
3181 ; CHECK: entry:
3182 ; CHECK-NEXT: %2 = extractelement <8 x i16> %1, i32 4
3183 ; CHECK-NEXT: ret i16 %2
3184 ; CHECK-NEXT: }
3185
3186 define i16 @extract_16xi16_at_13(<16 x i16>) {
3187 entry:
3188 %1 = extractelement <16 x i16> %0, i32 13
3189 ret i16 %1
3190 }
3191 ; CHECK-LABEL: define i16 @extract_16xi16_at_13(<8 x i16>, <8 x i16>) {
3192 ; CHECK: entry:
3193 ; CHECK-NEXT: %2 = extractelement <8 x i16> %1, i32 5
3194 ; CHECK-NEXT: ret i16 %2
3195 ; CHECK-NEXT: }
3196
3197 define i16 @extract_16xi16_at_14(<16 x i16>) {
3198 entry:
3199 %1 = extractelement <16 x i16> %0, i32 14
3200 ret i16 %1
3201 }
3202 ; CHECK-LABEL: define i16 @extract_16xi16_at_14(<8 x i16>, <8 x i16>) {
3203 ; CHECK: entry:
3204 ; CHECK-NEXT: %2 = extractelement <8 x i16> %1, i32 6
3205 ; CHECK-NEXT: ret i16 %2
3206 ; CHECK-NEXT: }
3207
3208 define i16 @extract_16xi16_at_15(<16 x i16>) {
3209 entry:
3210 %1 = extractelement <16 x i16> %0, i32 15
3211 ret i16 %1
3212 }
3213 ; CHECK-LABEL: define i16 @extract_16xi16_at_15(<8 x i16>, <8 x i16>) {
3214 ; CHECK: entry:
3215 ; CHECK-NEXT: %2 = extractelement <8 x i16> %1, i32 7
3216 ; CHECK-NEXT: ret i16 %2
3217 ; CHECK-NEXT: }
3218
3219 define i16 @extract_16xi16_undef_idx(<16 x i16>) {
3220 entry:
3221 %1 = extractelement <16 x i16> %0, i32 16
3222 ret i16 %1
3223 }
3224 ; CHECK-LABEL: define i16 @extract_16xi16_undef_idx(<8 x i16>, <8 x i16>) {
3225 ; CHECK: entry:
3226 ; CHECK-NEXT: %2 = extractelement <8 x i16> %1, i32 8
3227 ; CHECK-NEXT: ret i16 %2
3228 ; CHECK-NEXT: }
3229
3230 define i32 @extract_16xi32_at_0(<16 x i32>) {
3231 entry:
3232 %1 = extractelement <16 x i32> %0, i32 0
3233 ret i32 %1
3234 }
3235 ; CHECK-LABEL: define i32 @extract_16xi32_at_0(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) {
3236 ; CHECK: entry:
3237 ; CHECK-NEXT: %4 = extractelement <4 x i32> %0, i32 0
3238 ; CHECK-NEXT: ret i32 %4
3239 ; CHECK-NEXT: }
3240
3241 define i32 @extract_16xi32_at_1(<16 x i32>) {
3242 entry:
3243 %1 = extractelement <16 x i32> %0, i32 1
3244 ret i32 %1
3245 }
3246 ; CHECK-LABEL: define i32 @extract_16xi32_at_1(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) {
3247 ; CHECK: entry:
3248 ; CHECK-NEXT: %4 = extractelement <4 x i32> %0, i32 1
3249 ; CHECK-NEXT: ret i32 %4
3250 ; CHECK-NEXT: }
3251
3252 define i32 @extract_16xi32_at_2(<16 x i32>) {
3253 entry:
3254 %1 = extractelement <16 x i32> %0, i32 2
3255 ret i32 %1
3256 }
3257 ; CHECK-LABEL: define i32 @extract_16xi32_at_2(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) {
3258 ; CHECK: entry:
3259 ; CHECK-NEXT: %4 = extractelement <4 x i32> %0, i32 2
3260 ; CHECK-NEXT: ret i32 %4
3261 ; CHECK-NEXT: }
3262
3263 define i32 @extract_16xi32_at_3(<16 x i32>) {
3264 entry:
3265 %1 = extractelement <16 x i32> %0, i32 3
3266 ret i32 %1
3267 }
3268 ; CHECK-LABEL: define i32 @extract_16xi32_at_3(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) {
3269 ; CHECK: entry:
3270 ; CHECK-NEXT: %4 = extractelement <4 x i32> %0, i32 3
3271 ; CHECK-NEXT: ret i32 %4
3272 ; CHECK-NEXT: }
3273
3274 define i32 @extract_16xi32_at_4(<16 x i32>) {
3275 entry:
3276 %1 = extractelement <16 x i32> %0, i32 4
3277 ret i32 %1
3278 }
3279 ; CHECK-LABEL: define i32 @extract_16xi32_at_4(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) {
3280 ; CHECK: entry:
3281 ; CHECK-NEXT: %4 = extractelement <4 x i32> %1, i32 0
3282 ; CHECK-NEXT: ret i32 %4
3283 ; CHECK-NEXT: }
3284
3285 define i32 @extract_16xi32_at_5(<16 x i32>) {
3286 entry:
3287 %1 = extractelement <16 x i32> %0, i32 5
3288 ret i32 %1
3289 }
3290 ; CHECK-LABEL: define i32 @extract_16xi32_at_5(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) {
3291 ; CHECK: entry:
3292 ; CHECK-NEXT: %4 = extractelement <4 x i32> %1, i32 1
3293 ; CHECK-NEXT: ret i32 %4
3294 ; CHECK-NEXT: }
3295
3296 define i32 @extract_16xi32_at_6(<16 x i32>) {
3297 entry:
3298 %1 = extractelement <16 x i32> %0, i32 6
3299 ret i32 %1
3300 }
3301 ; CHECK-LABEL: define i32 @extract_16xi32_at_6(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) {
3302 ; CHECK: entry:
3303 ; CHECK-NEXT: %4 = extractelement <4 x i32> %1, i32 2
3304 ; CHECK-NEXT: ret i32 %4
3305 ; CHECK-NEXT: }
3306
3307 define i32 @extract_16xi32_at_7(<16 x i32>) {
3308 entry:
3309 %1 = extractelement <16 x i32> %0, i32 7
3310 ret i32 %1
3311 }
3312 ; CHECK-LABEL: define i32 @extract_16xi32_at_7(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) {
3313 ; CHECK: entry:
3314 ; CHECK-NEXT: %4 = extractelement <4 x i32> %1, i32 3
3315 ; CHECK-NEXT: ret i32 %4
3316 ; CHECK-NEXT: }
3317
3318 define i32 @extract_16xi32_at_8(<16 x i32>) {
3319 entry:
3320 %1 = extractelement <16 x i32> %0, i32 8
3321 ret i32 %1
3322 }
3323 ; CHECK-LABEL: define i32 @extract_16xi32_at_8(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) {
3324 ; CHECK: entry:
3325 ; CHECK-NEXT: %4 = extractelement <4 x i32> %2, i32 0
3326 ; CHECK-NEXT: ret i32 %4
3327 ; CHECK-NEXT: }
3328
3329 define i32 @extract_16xi32_at_9(<16 x i32>) {
3330 entry:
3331 %1 = extractelement <16 x i32> %0, i32 9
3332 ret i32 %1
3333 }
3334 ; CHECK-LABEL: define i32 @extract_16xi32_at_9(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) {
3335 ; CHECK: entry:
3336 ; CHECK-NEXT: %4 = extractelement <4 x i32> %2, i32 1
3337 ; CHECK-NEXT: ret i32 %4
3338 ; CHECK-NEXT: }
3339
3340 define i32 @extract_16xi32_at_10(<16 x i32>) {
3341 entry:
3342 %1 = extractelement <16 x i32> %0, i32 10
3343 ret i32 %1
3344 }
3345 ; CHECK-LABEL: define i32 @extract_16xi32_at_10(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) {
3346 ; CHECK: entry:
3347 ; CHECK-NEXT: %4 = extractelement <4 x i32> %2, i32 2
3348 ; CHECK-NEXT: ret i32 %4
3349 ; CHECK-NEXT: }
3350
3351 define i32 @extract_16xi32_at_11(<16 x i32>) {
3352 entry:
3353 %1 = extractelement <16 x i32> %0, i32 11
3354 ret i32 %1
3355 }
3356 ; CHECK-LABEL: define i32 @extract_16xi32_at_11(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) {
3357 ; CHECK: entry:
3358 ; CHECK-NEXT: %4 = extractelement <4 x i32> %2, i32 3
3359 ; CHECK-NEXT: ret i32 %4
3360 ; CHECK-NEXT: }
3361
3362 define i32 @extract_16xi32_at_12(<16 x i32>) {
3363 entry:
3364 %1 = extractelement <16 x i32> %0, i32 12
3365 ret i32 %1
3366 }
3367 ; CHECK-LABEL: define i32 @extract_16xi32_at_12(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) {
3368 ; CHECK: entry:
3369 ; CHECK-NEXT: %4 = extractelement <4 x i32> %3, i32 0
3370 ; CHECK-NEXT: ret i32 %4
3371 ; CHECK-NEXT: }
3372
3373 define i32 @extract_16xi32_at_13(<16 x i32>) {
3374 entry:
3375 %1 = extractelement <16 x i32> %0, i32 13
3376 ret i32 %1
3377 }
3378 ; CHECK-LABEL: define i32 @extract_16xi32_at_13(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) {
3379 ; CHECK: entry:
3380 ; CHECK-NEXT: %4 = extractelement <4 x i32> %3, i32 1
3381 ; CHECK-NEXT: ret i32 %4
3382 ; CHECK-NEXT: }
3383
3384 define i32 @extract_16xi32_at_14(<16 x i32>) {
3385 entry:
3386 %1 = extractelement <16 x i32> %0, i32 14
3387 ret i32 %1
3388 }
3389 ; CHECK-LABEL: define i32 @extract_16xi32_at_14(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) {
3390 ; CHECK: entry:
3391 ; CHECK-NEXT: %4 = extractelement <4 x i32> %3, i32 2
3392 ; CHECK-NEXT: ret i32 %4
3393 ; CHECK-NEXT: }
3394
3395 define i32 @extract_16xi32_at_15(<16 x i32>) {
3396 entry:
3397 %1 = extractelement <16 x i32> %0, i32 15
3398 ret i32 %1
3399 }
3400 ; CHECK-LABEL: define i32 @extract_16xi32_at_15(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) {
3401 ; CHECK: entry:
3402 ; CHECK-NEXT: %4 = extractelement <4 x i32> %3, i32 3
3403 ; CHECK-NEXT: ret i32 %4
3404 ; CHECK-NEXT: }
3405
3406 define i32 @extract_16xi32_undef_idx(<16 x i32>) {
3407 entry:
3408 %1 = extractelement <16 x i32> %0, i32 16
3409 ret i32 %1
3410 }
3411 ; CHECK-LABEL: define i32 @extract_16xi32_undef_idx(<4 x i32>, <4 x i32>, <4 x i 32>, <4 x i32>) {
3412 ; CHECK: entry:
3413 ; CHECK-NEXT: %4 = extractelement <4 x i32> %3, i32 4
3414 ; CHECK-NEXT: ret i32 %4
3415 ; CHECK-NEXT: }
3416
3417 define i64 @extract_16xi64_at_0(<16 x i64>) {
3418 entry:
3419 %1 = extractelement <16 x i64> %0, i32 0
3420 ret i64 %1
3421 }
3422 ; CHECK-LABEL: define i64 @extract_16xi64_at_0(<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>) {
3423 ; CHECK: entry:
3424 ; CHECK-NEXT: %8 = extractelement <2 x i64> %0, i32 0
3425 ; CHECK-NEXT: ret i64 %8
3426 ; CHECK-NEXT: }
3427
3428 define i64 @extract_16xi64_at_1(<16 x i64>) {
3429 entry:
3430 %1 = extractelement <16 x i64> %0, i32 1
3431 ret i64 %1
3432 }
3433 ; CHECK-LABEL: define i64 @extract_16xi64_at_1(<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>) {
3434 ; CHECK: entry:
3435 ; CHECK-NEXT: %8 = extractelement <2 x i64> %0, i32 1
3436 ; CHECK-NEXT: ret i64 %8
3437 ; CHECK-NEXT: }
3438
3439 define i64 @extract_16xi64_at_2(<16 x i64>) {
3440 entry:
3441 %1 = extractelement <16 x i64> %0, i32 2
3442 ret i64 %1
3443 }
3444 ; CHECK-LABEL: define i64 @extract_16xi64_at_2(<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>) {
3445 ; CHECK: entry:
3446 ; CHECK-NEXT: %8 = extractelement <2 x i64> %1, i32 0
3447 ; CHECK-NEXT: ret i64 %8
3448 ; CHECK-NEXT: }
3449
3450 define i64 @extract_16xi64_at_3(<16 x i64>) {
3451 entry:
3452 %1 = extractelement <16 x i64> %0, i32 3
3453 ret i64 %1
3454 }
3455 ; CHECK-LABEL: define i64 @extract_16xi64_at_3(<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>) {
3456 ; CHECK: entry:
3457 ; CHECK-NEXT: %8 = extractelement <2 x i64> %1, i32 1
3458 ; CHECK-NEXT: ret i64 %8
3459 ; CHECK-NEXT: }
3460
3461 define i64 @extract_16xi64_at_4(<16 x i64>) {
3462 entry:
3463 %1 = extractelement <16 x i64> %0, i32 4
3464 ret i64 %1
3465 }
3466 ; CHECK-LABEL: define i64 @extract_16xi64_at_4(<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>) {
3467 ; CHECK: entry:
3468 ; CHECK-NEXT: %8 = extractelement <2 x i64> %2, i32 0
3469 ; CHECK-NEXT: ret i64 %8
3470 ; CHECK-NEXT: }
3471
3472 define i64 @extract_16xi64_at_5(<16 x i64>) {
3473 entry:
3474 %1 = extractelement <16 x i64> %0, i32 5
3475 ret i64 %1
3476 }
3477 ; CHECK-LABEL: define i64 @extract_16xi64_at_5(<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>) {
3478 ; CHECK: entry:
3479 ; CHECK-NEXT: %8 = extractelement <2 x i64> %2, i32 1
3480 ; CHECK-NEXT: ret i64 %8
3481 ; CHECK-NEXT: }
3482
3483 define i64 @extract_16xi64_at_6(<16 x i64>) {
3484 entry:
3485 %1 = extractelement <16 x i64> %0, i32 6
3486 ret i64 %1
3487 }
3488 ; CHECK-LABEL: define i64 @extract_16xi64_at_6(<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>) {
3489 ; CHECK: entry:
3490 ; CHECK-NEXT: %8 = extractelement <2 x i64> %3, i32 0
3491 ; CHECK-NEXT: ret i64 %8
3492 ; CHECK-NEXT: }
3493
3494 define i64 @extract_16xi64_at_7(<16 x i64>) {
3495 entry:
3496 %1 = extractelement <16 x i64> %0, i32 7
3497 ret i64 %1
3498 }
3499 ; CHECK-LABEL: define i64 @extract_16xi64_at_7(<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>) {
3500 ; CHECK: entry:
3501 ; CHECK-NEXT: %8 = extractelement <2 x i64> %3, i32 1
3502 ; CHECK-NEXT: ret i64 %8
3503 ; CHECK-NEXT: }
3504
3505 define i64 @extract_16xi64_at_8(<16 x i64>) {
3506 entry:
3507 %1 = extractelement <16 x i64> %0, i32 8
3508 ret i64 %1
3509 }
3510 ; CHECK-LABEL: define i64 @extract_16xi64_at_8(<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>) {
3511 ; CHECK: entry:
3512 ; CHECK-NEXT: %8 = extractelement <2 x i64> %4, i32 0
3513 ; CHECK-NEXT: ret i64 %8
3514 ; CHECK-NEXT: }
3515
3516 define i64 @extract_16xi64_at_9(<16 x i64>) {
3517 entry:
3518 %1 = extractelement <16 x i64> %0, i32 9
3519 ret i64 %1
3520 }
3521 ; CHECK-LABEL: define i64 @extract_16xi64_at_9(<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>) {
3522 ; CHECK: entry:
3523 ; CHECK-NEXT: %8 = extractelement <2 x i64> %4, i32 1
3524 ; CHECK-NEXT: ret i64 %8
3525 ; CHECK-NEXT: }
3526
3527 define i64 @extract_16xi64_at_10(<16 x i64>) {
3528 entry:
3529 %1 = extractelement <16 x i64> %0, i32 10
3530 ret i64 %1
3531 }
3532 ; CHECK-LABEL: define i64 @extract_16xi64_at_10(<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>) {
3533 ; CHECK: entry:
3534 ; CHECK-NEXT: %8 = extractelement <2 x i64> %5, i32 0
3535 ; CHECK-NEXT: ret i64 %8
3536 ; CHECK-NEXT: }
3537
3538 define i64 @extract_16xi64_at_11(<16 x i64>) {
3539 entry:
3540 %1 = extractelement <16 x i64> %0, i32 11
3541 ret i64 %1
3542 }
3543 ; CHECK-LABEL: define i64 @extract_16xi64_at_11(<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>) {
3544 ; CHECK: entry:
3545 ; CHECK-NEXT: %8 = extractelement <2 x i64> %5, i32 1
3546 ; CHECK-NEXT: ret i64 %8
3547 ; CHECK-NEXT: }
3548
3549 define i64 @extract_16xi64_at_12(<16 x i64>) {
3550 entry:
3551 %1 = extractelement <16 x i64> %0, i32 12
3552 ret i64 %1
3553 }
3554 ; CHECK-LABEL: define i64 @extract_16xi64_at_12(<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>) {
3555 ; CHECK: entry:
3556 ; CHECK-NEXT: %8 = extractelement <2 x i64> %6, i32 0
3557 ; CHECK-NEXT: ret i64 %8
3558 ; CHECK-NEXT: }
3559
3560 define i64 @extract_16xi64_at_13(<16 x i64>) {
3561 entry:
3562 %1 = extractelement <16 x i64> %0, i32 13
3563 ret i64 %1
3564 }
3565 ; CHECK-LABEL: define i64 @extract_16xi64_at_13(<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>) {
3566 ; CHECK: entry:
3567 ; CHECK-NEXT: %8 = extractelement <2 x i64> %6, i32 1
3568 ; CHECK-NEXT: ret i64 %8
3569 ; CHECK-NEXT: }
3570
3571 define i64 @extract_16xi64_at_14(<16 x i64>) {
3572 entry:
3573 %1 = extractelement <16 x i64> %0, i32 14
3574 ret i64 %1
3575 }
3576 ; CHECK-LABEL: define i64 @extract_16xi64_at_14(<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>) {
3577 ; CHECK: entry:
3578 ; CHECK-NEXT: %8 = extractelement <2 x i64> %7, i32 0
3579 ; CHECK-NEXT: ret i64 %8
3580 ; CHECK-NEXT: }
3581
3582 define i64 @extract_16xi64_at_15(<16 x i64>) {
3583 entry:
3584 %1 = extractelement <16 x i64> %0, i32 15
3585 ret i64 %1
3586 }
3587 ; CHECK-LABEL: define i64 @extract_16xi64_at_15(<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>) {
3588 ; CHECK: entry:
3589 ; CHECK-NEXT: %8 = extractelement <2 x i64> %7, i32 1
3590 ; CHECK-NEXT: ret i64 %8
3591 ; CHECK-NEXT: }
3592
3593 define i64 @extract_16xi64_undef_idx(<16 x i64>) {
3594 entry:
3595 %1 = extractelement <16 x i64> %0, i32 16
3596 ret i64 %1
3597 }
3598 ; CHECK-LABEL: define i64 @extract_16xi64_undef_idx(<2 x i64>, <2 x i64>, <2 x i 64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>) {
3599 ; CHECK: entry:
3600 ; CHECK-NEXT: %8 = extractelement <2 x i64> %7, i32 2
3601 ; CHECK-NEXT: ret i64 %8
3602 ; CHECK-NEXT: }
3603
3604 define i8* @extract_16xi8ptr_at_0(<16 x i8*>) {
3605 entry:
3606 %1 = extractelement <16 x i8*> %0, i32 0
3607 ret i8* %1
3608 }
3609 ; CHECK-LABEL: define i8* @extract_16xi8ptr_at_0(<4 x i8*>, <4 x i8*>, <4 x i8*> , <4 x i8*>) {
3610 ; CHECK: entry:
3611 ; CHECK-NEXT: %4 = extractelement <4 x i8*> %0, i32 0
3612 ; CHECK-NEXT: ret i8* %4
3613 ; CHECK-NEXT: }
3614
3615 define i8* @extract_16xi8ptr_at_1(<16 x i8*>) {
3616 entry:
3617 %1 = extractelement <16 x i8*> %0, i32 1
3618 ret i8* %1
3619 }
3620 ; CHECK-LABEL: define i8* @extract_16xi8ptr_at_1(<4 x i8*>, <4 x i8*>, <4 x i8*> , <4 x i8*>) {
3621 ; CHECK: entry:
3622 ; CHECK-NEXT: %4 = extractelement <4 x i8*> %0, i32 1
3623 ; CHECK-NEXT: ret i8* %4
3624 ; CHECK-NEXT: }
3625
3626 define i8* @extract_16xi8ptr_at_2(<16 x i8*>) {
3627 entry:
3628 %1 = extractelement <16 x i8*> %0, i32 2
3629 ret i8* %1
3630 }
3631 ; CHECK-LABEL: define i8* @extract_16xi8ptr_at_2(<4 x i8*>, <4 x i8*>, <4 x i8*> , <4 x i8*>) {
3632 ; CHECK: entry:
3633 ; CHECK-NEXT: %4 = extractelement <4 x i8*> %0, i32 2
3634 ; CHECK-NEXT: ret i8* %4
3635 ; CHECK-NEXT: }
3636
3637 define i8* @extract_16xi8ptr_at_3(<16 x i8*>) {
3638 entry:
3639 %1 = extractelement <16 x i8*> %0, i32 3
3640 ret i8* %1
3641 }
3642 ; CHECK-LABEL: define i8* @extract_16xi8ptr_at_3(<4 x i8*>, <4 x i8*>, <4 x i8*> , <4 x i8*>) {
3643 ; CHECK: entry:
3644 ; CHECK-NEXT: %4 = extractelement <4 x i8*> %0, i32 3
3645 ; CHECK-NEXT: ret i8* %4
3646 ; CHECK-NEXT: }
3647
3648 define i8* @extract_16xi8ptr_at_4(<16 x i8*>) {
3649 entry:
3650 %1 = extractelement <16 x i8*> %0, i32 4
3651 ret i8* %1
3652 }
3653 ; CHECK-LABEL: define i8* @extract_16xi8ptr_at_4(<4 x i8*>, <4 x i8*>, <4 x i8*> , <4 x i8*>) {
3654 ; CHECK: entry:
3655 ; CHECK-NEXT: %4 = extractelement <4 x i8*> %1, i32 0
3656 ; CHECK-NEXT: ret i8* %4
3657 ; CHECK-NEXT: }
3658
3659 define i8* @extract_16xi8ptr_at_5(<16 x i8*>) {
3660 entry:
3661 %1 = extractelement <16 x i8*> %0, i32 5
3662 ret i8* %1
3663 }
3664 ; CHECK-LABEL: define i8* @extract_16xi8ptr_at_5(<4 x i8*>, <4 x i8*>, <4 x i8*> , <4 x i8*>) {
3665 ; CHECK: entry:
3666 ; CHECK-NEXT: %4 = extractelement <4 x i8*> %1, i32 1
3667 ; CHECK-NEXT: ret i8* %4
3668 ; CHECK-NEXT: }
3669
3670 define i8* @extract_16xi8ptr_at_6(<16 x i8*>) {
3671 entry:
3672 %1 = extractelement <16 x i8*> %0, i32 6
3673 ret i8* %1
3674 }
3675 ; CHECK-LABEL: define i8* @extract_16xi8ptr_at_6(<4 x i8*>, <4 x i8*>, <4 x i8*> , <4 x i8*>) {
3676 ; CHECK: entry:
3677 ; CHECK-NEXT: %4 = extractelement <4 x i8*> %1, i32 2
3678 ; CHECK-NEXT: ret i8* %4
3679 ; CHECK-NEXT: }
3680
3681 define i8* @extract_16xi8ptr_at_7(<16 x i8*>) {
3682 entry:
3683 %1 = extractelement <16 x i8*> %0, i32 7
3684 ret i8* %1
3685 }
3686 ; CHECK-LABEL: define i8* @extract_16xi8ptr_at_7(<4 x i8*>, <4 x i8*>, <4 x i8*> , <4 x i8*>) {
3687 ; CHECK: entry:
3688 ; CHECK-NEXT: %4 = extractelement <4 x i8*> %1, i32 3
3689 ; CHECK-NEXT: ret i8* %4
3690 ; CHECK-NEXT: }
3691
3692 define i8* @extract_16xi8ptr_at_8(<16 x i8*>) {
3693 entry:
3694 %1 = extractelement <16 x i8*> %0, i32 8
3695 ret i8* %1
3696 }
3697 ; CHECK-LABEL: define i8* @extract_16xi8ptr_at_8(<4 x i8*>, <4 x i8*>, <4 x i8*> , <4 x i8*>) {
3698 ; CHECK: entry:
3699 ; CHECK-NEXT: %4 = extractelement <4 x i8*> %2, i32 0
3700 ; CHECK-NEXT: ret i8* %4
3701 ; CHECK-NEXT: }
3702
3703 define i8* @extract_16xi8ptr_at_9(<16 x i8*>) {
3704 entry:
3705 %1 = extractelement <16 x i8*> %0, i32 9
3706 ret i8* %1
3707 }
3708 ; CHECK-LABEL: define i8* @extract_16xi8ptr_at_9(<4 x i8*>, <4 x i8*>, <4 x i8*> , <4 x i8*>) {
3709 ; CHECK: entry:
3710 ; CHECK-NEXT: %4 = extractelement <4 x i8*> %2, i32 1
3711 ; CHECK-NEXT: ret i8* %4
3712 ; CHECK-NEXT: }
3713
3714 define i8* @extract_16xi8ptr_at_10(<16 x i8*>) {
3715 entry:
3716 %1 = extractelement <16 x i8*> %0, i32 10
3717 ret i8* %1
3718 }
3719 ; CHECK-LABEL: define i8* @extract_16xi8ptr_at_10(<4 x i8*>, <4 x i8*>, <4 x i8* >, <4 x i8*>) {
3720 ; CHECK: entry:
3721 ; CHECK-NEXT: %4 = extractelement <4 x i8*> %2, i32 2
3722 ; CHECK-NEXT: ret i8* %4
3723 ; CHECK-NEXT: }
3724
3725 define i8* @extract_16xi8ptr_at_11(<16 x i8*>) {
3726 entry:
3727 %1 = extractelement <16 x i8*> %0, i32 11
3728 ret i8* %1
3729 }
3730 ; CHECK-LABEL: define i8* @extract_16xi8ptr_at_11(<4 x i8*>, <4 x i8*>, <4 x i8* >, <4 x i8*>) {
3731 ; CHECK: entry:
3732 ; CHECK-NEXT: %4 = extractelement <4 x i8*> %2, i32 3
3733 ; CHECK-NEXT: ret i8* %4
3734 ; CHECK-NEXT: }
3735
3736 define i8* @extract_16xi8ptr_at_12(<16 x i8*>) {
3737 entry:
3738 %1 = extractelement <16 x i8*> %0, i32 12
3739 ret i8* %1
3740 }
3741 ; CHECK-LABEL: define i8* @extract_16xi8ptr_at_12(<4 x i8*>, <4 x i8*>, <4 x i8* >, <4 x i8*>) {
3742 ; CHECK: entry:
3743 ; CHECK-NEXT: %4 = extractelement <4 x i8*> %3, i32 0
3744 ; CHECK-NEXT: ret i8* %4
3745 ; CHECK-NEXT: }
3746
3747 define i8* @extract_16xi8ptr_at_13(<16 x i8*>) {
3748 entry:
3749 %1 = extractelement <16 x i8*> %0, i32 13
3750 ret i8* %1
3751 }
3752 ; CHECK-LABEL: define i8* @extract_16xi8ptr_at_13(<4 x i8*>, <4 x i8*>, <4 x i8* >, <4 x i8*>) {
3753 ; CHECK: entry:
3754 ; CHECK-NEXT: %4 = extractelement <4 x i8*> %3, i32 1
3755 ; CHECK-NEXT: ret i8* %4
3756 ; CHECK-NEXT: }
3757
3758 define i8* @extract_16xi8ptr_at_14(<16 x i8*>) {
3759 entry:
3760 %1 = extractelement <16 x i8*> %0, i32 14
3761 ret i8* %1
3762 }
3763 ; CHECK-LABEL: define i8* @extract_16xi8ptr_at_14(<4 x i8*>, <4 x i8*>, <4 x i8* >, <4 x i8*>) {
3764 ; CHECK: entry:
3765 ; CHECK-NEXT: %4 = extractelement <4 x i8*> %3, i32 2
3766 ; CHECK-NEXT: ret i8* %4
3767 ; CHECK-NEXT: }
3768
3769 define i8* @extract_16xi8ptr_at_15(<16 x i8*>) {
3770 entry:
3771 %1 = extractelement <16 x i8*> %0, i32 15
3772 ret i8* %1
3773 }
3774 ; CHECK-LABEL: define i8* @extract_16xi8ptr_at_15(<4 x i8*>, <4 x i8*>, <4 x i8* >, <4 x i8*>) {
3775 ; CHECK: entry:
3776 ; CHECK-NEXT: %4 = extractelement <4 x i8*> %3, i32 3
3777 ; CHECK-NEXT: ret i8* %4
3778 ; CHECK-NEXT: }
3779
3780 define i8* @extract_16xi8ptr_undef_idx(<16 x i8*>) {
3781 entry:
3782 %1 = extractelement <16 x i8*> %0, i32 16
3783 ret i8* %1
3784 }
3785 ; CHECK-LABEL: define i8* @extract_16xi8ptr_undef_idx(<4 x i8*>, <4 x i8*>, <4 x i8*>, <4 x i8*>) {
3786 ; CHECK: entry:
3787 ; CHECK-NEXT: %4 = extractelement <4 x i8*> %3, i32 4
3788 ; CHECK-NEXT: ret i8* %4
3789 ; CHECK-NEXT: }
3790
3791 define float @extract_16xfloat_at_0(<16 x float>) {
3792 entry:
3793 %1 = extractelement <16 x float> %0, i32 0
3794 ret float %1
3795 }
3796 ; CHECK-LABEL: define float @extract_16xfloat_at_0(<4 x float>, <4 x float>, <4 x float>, <4 x float>) {
3797 ; CHECK: entry:
3798 ; CHECK-NEXT: %4 = extractelement <4 x float> %0, i32 0
3799 ; CHECK-NEXT: ret float %4
3800 ; CHECK-NEXT: }
3801
3802 define float @extract_16xfloat_at_1(<16 x float>) {
3803 entry:
3804 %1 = extractelement <16 x float> %0, i32 1
3805 ret float %1
3806 }
3807 ; CHECK-LABEL: define float @extract_16xfloat_at_1(<4 x float>, <4 x float>, <4 x float>, <4 x float>) {
3808 ; CHECK: entry:
3809 ; CHECK-NEXT: %4 = extractelement <4 x float> %0, i32 1
3810 ; CHECK-NEXT: ret float %4
3811 ; CHECK-NEXT: }
3812
3813 define float @extract_16xfloat_at_2(<16 x float>) {
3814 entry:
3815 %1 = extractelement <16 x float> %0, i32 2
3816 ret float %1
3817 }
3818 ; CHECK-LABEL: define float @extract_16xfloat_at_2(<4 x float>, <4 x float>, <4 x float>, <4 x float>) {
3819 ; CHECK: entry:
3820 ; CHECK-NEXT: %4 = extractelement <4 x float> %0, i32 2
3821 ; CHECK-NEXT: ret float %4
3822 ; CHECK-NEXT: }
3823
3824 define float @extract_16xfloat_at_3(<16 x float>) {
3825 entry:
3826 %1 = extractelement <16 x float> %0, i32 3
3827 ret float %1
3828 }
3829 ; CHECK-LABEL: define float @extract_16xfloat_at_3(<4 x float>, <4 x float>, <4 x float>, <4 x float>) {
3830 ; CHECK: entry:
3831 ; CHECK-NEXT: %4 = extractelement <4 x float> %0, i32 3
3832 ; CHECK-NEXT: ret float %4
3833 ; CHECK-NEXT: }
3834
3835 define float @extract_16xfloat_at_4(<16 x float>) {
3836 entry:
3837 %1 = extractelement <16 x float> %0, i32 4
3838 ret float %1
3839 }
3840 ; CHECK-LABEL: define float @extract_16xfloat_at_4(<4 x float>, <4 x float>, <4 x float>, <4 x float>) {
3841 ; CHECK: entry:
3842 ; CHECK-NEXT: %4 = extractelement <4 x float> %1, i32 0
3843 ; CHECK-NEXT: ret float %4
3844 ; CHECK-NEXT: }
3845
3846 define float @extract_16xfloat_at_5(<16 x float>) {
3847 entry:
3848 %1 = extractelement <16 x float> %0, i32 5
3849 ret float %1
3850 }
3851 ; CHECK-LABEL: define float @extract_16xfloat_at_5(<4 x float>, <4 x float>, <4 x float>, <4 x float>) {
3852 ; CHECK: entry:
3853 ; CHECK-NEXT: %4 = extractelement <4 x float> %1, i32 1
3854 ; CHECK-NEXT: ret float %4
3855 ; CHECK-NEXT: }
3856
3857 define float @extract_16xfloat_at_6(<16 x float>) {
3858 entry:
3859 %1 = extractelement <16 x float> %0, i32 6
3860 ret float %1
3861 }
3862 ; CHECK-LABEL: define float @extract_16xfloat_at_6(<4 x float>, <4 x float>, <4 x float>, <4 x float>) {
3863 ; CHECK: entry:
3864 ; CHECK-NEXT: %4 = extractelement <4 x float> %1, i32 2
3865 ; CHECK-NEXT: ret float %4
3866 ; CHECK-NEXT: }
3867
3868 define float @extract_16xfloat_at_7(<16 x float>) {
3869 entry:
3870 %1 = extractelement <16 x float> %0, i32 7
3871 ret float %1
3872 }
3873 ; CHECK-LABEL: define float @extract_16xfloat_at_7(<4 x float>, <4 x float>, <4 x float>, <4 x float>) {
3874 ; CHECK: entry:
3875 ; CHECK-NEXT: %4 = extractelement <4 x float> %1, i32 3
3876 ; CHECK-NEXT: ret float %4
3877 ; CHECK-NEXT: }
3878
3879 define float @extract_16xfloat_at_8(<16 x float>) {
3880 entry:
3881 %1 = extractelement <16 x float> %0, i32 8
3882 ret float %1
3883 }
3884 ; CHECK-LABEL: define float @extract_16xfloat_at_8(<4 x float>, <4 x float>, <4 x float>, <4 x float>) {
3885 ; CHECK: entry:
3886 ; CHECK-NEXT: %4 = extractelement <4 x float> %2, i32 0
3887 ; CHECK-NEXT: ret float %4
3888 ; CHECK-NEXT: }
3889
3890 define float @extract_16xfloat_at_9(<16 x float>) {
3891 entry:
3892 %1 = extractelement <16 x float> %0, i32 9
3893 ret float %1
3894 }
3895 ; CHECK-LABEL: define float @extract_16xfloat_at_9(<4 x float>, <4 x float>, <4 x float>, <4 x float>) {
3896 ; CHECK: entry:
3897 ; CHECK-NEXT: %4 = extractelement <4 x float> %2, i32 1
3898 ; CHECK-NEXT: ret float %4
3899 ; CHECK-NEXT: }
3900
3901 define float @extract_16xfloat_at_10(<16 x float>) {
3902 entry:
3903 %1 = extractelement <16 x float> %0, i32 10
3904 ret float %1
3905 }
3906 ; CHECK-LABEL: define float @extract_16xfloat_at_10(<4 x float>, <4 x float>, <4 x float>, <4 x float>) {
3907 ; CHECK: entry:
3908 ; CHECK-NEXT: %4 = extractelement <4 x float> %2, i32 2
3909 ; CHECK-NEXT: ret float %4
3910 ; CHECK-NEXT: }
3911
3912 define float @extract_16xfloat_at_11(<16 x float>) {
3913 entry:
3914 %1 = extractelement <16 x float> %0, i32 11
3915 ret float %1
3916 }
3917 ; CHECK-LABEL: define float @extract_16xfloat_at_11(<4 x float>, <4 x float>, <4 x float>, <4 x float>) {
3918 ; CHECK: entry:
3919 ; CHECK-NEXT: %4 = extractelement <4 x float> %2, i32 3
3920 ; CHECK-NEXT: ret float %4
3921 ; CHECK-NEXT: }
3922
3923 define float @extract_16xfloat_at_12(<16 x float>) {
3924 entry:
3925 %1 = extractelement <16 x float> %0, i32 12
3926 ret float %1
3927 }
3928 ; CHECK-LABEL: define float @extract_16xfloat_at_12(<4 x float>, <4 x float>, <4 x float>, <4 x float>) {
3929 ; CHECK: entry:
3930 ; CHECK-NEXT: %4 = extractelement <4 x float> %3, i32 0
3931 ; CHECK-NEXT: ret float %4
3932 ; CHECK-NEXT: }
3933
3934 define float @extract_16xfloat_at_13(<16 x float>) {
3935 entry:
3936 %1 = extractelement <16 x float> %0, i32 13
3937 ret float %1
3938 }
3939 ; CHECK-LABEL: define float @extract_16xfloat_at_13(<4 x float>, <4 x float>, <4 x float>, <4 x float>) {
3940 ; CHECK: entry:
3941 ; CHECK-NEXT: %4 = extractelement <4 x float> %3, i32 1
3942 ; CHECK-NEXT: ret float %4
3943 ; CHECK-NEXT: }
3944
3945 define float @extract_16xfloat_at_14(<16 x float>) {
3946 entry:
3947 %1 = extractelement <16 x float> %0, i32 14
3948 ret float %1
3949 }
3950 ; CHECK-LABEL: define float @extract_16xfloat_at_14(<4 x float>, <4 x float>, <4 x float>, <4 x float>) {
3951 ; CHECK: entry:
3952 ; CHECK-NEXT: %4 = extractelement <4 x float> %3, i32 2
3953 ; CHECK-NEXT: ret float %4
3954 ; CHECK-NEXT: }
3955
3956 define float @extract_16xfloat_at_15(<16 x float>) {
3957 entry:
3958 %1 = extractelement <16 x float> %0, i32 15
3959 ret float %1
3960 }
3961 ; CHECK-LABEL: define float @extract_16xfloat_at_15(<4 x float>, <4 x float>, <4 x float>, <4 x float>) {
3962 ; CHECK: entry:
3963 ; CHECK-NEXT: %4 = extractelement <4 x float> %3, i32 3
3964 ; CHECK-NEXT: ret float %4
3965 ; CHECK-NEXT: }
3966
3967 define float @extract_16xfloat_undef_idx(<16 x float>) {
3968 entry:
3969 %1 = extractelement <16 x float> %0, i32 16
3970 ret float %1
3971 }
3972 ; CHECK-LABEL: define float @extract_16xfloat_undef_idx(<4 x float>, <4 x float> , <4 x float>, <4 x float>) {
3973 ; CHECK: entry:
3974 ; CHECK-NEXT: %4 = extractelement <4 x float> %3, i32 4
3975 ; CHECK-NEXT: ret float %4
3976 ; CHECK-NEXT: }
3977
3978 define double @extract_16xdouble_at_0(<16 x double>) {
3979 entry:
3980 %1 = extractelement <16 x double> %0, i32 0
3981 ret double %1
3982 }
3983 ; CHECK-LABEL: define double @extract_16xdouble_at_0(<2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x doub le>) {
3984 ; CHECK: entry:
3985 ; CHECK-NEXT: %8 = extractelement <2 x double> %0, i32 0
3986 ; CHECK-NEXT: ret double %8
3987 ; CHECK-NEXT: }
3988
3989 define double @extract_16xdouble_at_1(<16 x double>) {
3990 entry:
3991 %1 = extractelement <16 x double> %0, i32 1
3992 ret double %1
3993 }
3994 ; CHECK-LABEL: define double @extract_16xdouble_at_1(<2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x doub le>) {
3995 ; CHECK: entry:
3996 ; CHECK-NEXT: %8 = extractelement <2 x double> %0, i32 1
3997 ; CHECK-NEXT: ret double %8
3998 ; CHECK-NEXT: }
3999
4000 define double @extract_16xdouble_at_2(<16 x double>) {
4001 entry:
4002 %1 = extractelement <16 x double> %0, i32 2
4003 ret double %1
4004 }
4005 ; CHECK-LABEL: define double @extract_16xdouble_at_2(<2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x doub le>) {
4006 ; CHECK: entry:
4007 ; CHECK-NEXT: %8 = extractelement <2 x double> %1, i32 0
4008 ; CHECK-NEXT: ret double %8
4009 ; CHECK-NEXT: }
4010
4011 define double @extract_16xdouble_at_3(<16 x double>) {
4012 entry:
4013 %1 = extractelement <16 x double> %0, i32 3
4014 ret double %1
4015 }
4016 ; CHECK-LABEL: define double @extract_16xdouble_at_3(<2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x doub le>) {
4017 ; CHECK: entry:
4018 ; CHECK-NEXT: %8 = extractelement <2 x double> %1, i32 1
4019 ; CHECK-NEXT: ret double %8
4020 ; CHECK-NEXT: }
4021
4022 define double @extract_16xdouble_at_4(<16 x double>) {
4023 entry:
4024 %1 = extractelement <16 x double> %0, i32 4
4025 ret double %1
4026 }
4027 ; CHECK-LABEL: define double @extract_16xdouble_at_4(<2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x doub le>) {
4028 ; CHECK: entry:
4029 ; CHECK-NEXT: %8 = extractelement <2 x double> %2, i32 0
4030 ; CHECK-NEXT: ret double %8
4031 ; CHECK-NEXT: }
4032
4033 define double @extract_16xdouble_at_5(<16 x double>) {
4034 entry:
4035 %1 = extractelement <16 x double> %0, i32 5
4036 ret double %1
4037 }
4038 ; CHECK-LABEL: define double @extract_16xdouble_at_5(<2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x doub le>) {
4039 ; CHECK: entry:
4040 ; CHECK-NEXT: %8 = extractelement <2 x double> %2, i32 1
4041 ; CHECK-NEXT: ret double %8
4042 ; CHECK-NEXT: }
4043
4044 define double @extract_16xdouble_at_6(<16 x double>) {
4045 entry:
4046 %1 = extractelement <16 x double> %0, i32 6
4047 ret double %1
4048 }
4049 ; CHECK-LABEL: define double @extract_16xdouble_at_6(<2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x doub le>) {
4050 ; CHECK: entry:
4051 ; CHECK-NEXT: %8 = extractelement <2 x double> %3, i32 0
4052 ; CHECK-NEXT: ret double %8
4053 ; CHECK-NEXT: }
4054
4055 define double @extract_16xdouble_at_7(<16 x double>) {
4056 entry:
4057 %1 = extractelement <16 x double> %0, i32 7
4058 ret double %1
4059 }
4060 ; CHECK-LABEL: define double @extract_16xdouble_at_7(<2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x doub le>) {
4061 ; CHECK: entry:
4062 ; CHECK-NEXT: %8 = extractelement <2 x double> %3, i32 1
4063 ; CHECK-NEXT: ret double %8
4064 ; CHECK-NEXT: }
4065
4066 define double @extract_16xdouble_at_8(<16 x double>) {
4067 entry:
4068 %1 = extractelement <16 x double> %0, i32 8
4069 ret double %1
4070 }
4071 ; CHECK-LABEL: define double @extract_16xdouble_at_8(<2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x doub le>) {
4072 ; CHECK: entry:
4073 ; CHECK-NEXT: %8 = extractelement <2 x double> %4, i32 0
4074 ; CHECK-NEXT: ret double %8
4075 ; CHECK-NEXT: }
4076
4077 define double @extract_16xdouble_at_9(<16 x double>) {
4078 entry:
4079 %1 = extractelement <16 x double> %0, i32 9
4080 ret double %1
4081 }
4082 ; CHECK-LABEL: define double @extract_16xdouble_at_9(<2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x doub le>) {
4083 ; CHECK: entry:
4084 ; CHECK-NEXT: %8 = extractelement <2 x double> %4, i32 1
4085 ; CHECK-NEXT: ret double %8
4086 ; CHECK-NEXT: }
4087
4088 define double @extract_16xdouble_at_10(<16 x double>) {
4089 entry:
4090 %1 = extractelement <16 x double> %0, i32 10
4091 ret double %1
4092 }
4093 ; CHECK-LABEL: define double @extract_16xdouble_at_10(<2 x double>, <2 x double> , <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x dou ble>) {
4094 ; CHECK: entry:
4095 ; CHECK-NEXT: %8 = extractelement <2 x double> %5, i32 0
4096 ; CHECK-NEXT: ret double %8
4097 ; CHECK-NEXT: }
4098
4099 define double @extract_16xdouble_at_11(<16 x double>) {
4100 entry:
4101 %1 = extractelement <16 x double> %0, i32 11
4102 ret double %1
4103 }
4104 ; CHECK-LABEL: define double @extract_16xdouble_at_11(<2 x double>, <2 x double> , <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x dou ble>) {
4105 ; CHECK: entry:
4106 ; CHECK-NEXT: %8 = extractelement <2 x double> %5, i32 1
4107 ; CHECK-NEXT: ret double %8
4108 ; CHECK-NEXT: }
4109
4110 define double @extract_16xdouble_at_12(<16 x double>) {
4111 entry:
4112 %1 = extractelement <16 x double> %0, i32 12
4113 ret double %1
4114 }
4115 ; CHECK-LABEL: define double @extract_16xdouble_at_12(<2 x double>, <2 x double> , <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x dou ble>) {
4116 ; CHECK: entry:
4117 ; CHECK-NEXT: %8 = extractelement <2 x double> %6, i32 0
4118 ; CHECK-NEXT: ret double %8
4119 ; CHECK-NEXT: }
4120
4121 define double @extract_16xdouble_at_13(<16 x double>) {
4122 entry:
4123 %1 = extractelement <16 x double> %0, i32 13
4124 ret double %1
4125 }
4126 ; CHECK-LABEL: define double @extract_16xdouble_at_13(<2 x double>, <2 x double> , <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x dou ble>) {
4127 ; CHECK: entry:
4128 ; CHECK-NEXT: %8 = extractelement <2 x double> %6, i32 1
4129 ; CHECK-NEXT: ret double %8
4130 ; CHECK-NEXT: }
4131
4132 define double @extract_16xdouble_at_14(<16 x double>) {
4133 entry:
4134 %1 = extractelement <16 x double> %0, i32 14
4135 ret double %1
4136 }
4137 ; CHECK-LABEL: define double @extract_16xdouble_at_14(<2 x double>, <2 x double> , <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x dou ble>) {
4138 ; CHECK: entry:
4139 ; CHECK-NEXT: %8 = extractelement <2 x double> %7, i32 0
4140 ; CHECK-NEXT: ret double %8
4141 ; CHECK-NEXT: }
4142
4143 define double @extract_16xdouble_at_15(<16 x double>) {
4144 entry:
4145 %1 = extractelement <16 x double> %0, i32 15
4146 ret double %1
4147 }
4148 ; CHECK-LABEL: define double @extract_16xdouble_at_15(<2 x double>, <2 x double> , <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x dou ble>) {
4149 ; CHECK: entry:
4150 ; CHECK-NEXT: %8 = extractelement <2 x double> %7, i32 1
4151 ; CHECK-NEXT: ret double %8
4152 ; CHECK-NEXT: }
4153
4154 define double @extract_16xdouble_undef_idx(<16 x double>) {
4155 entry:
4156 %1 = extractelement <16 x double> %0, i32 16
4157 ret double %1
4158 }
4159 ; CHECK-LABEL: define double @extract_16xdouble_undef_idx(<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>) {
4160 ; CHECK: entry:
4161 ; CHECK-NEXT: %8 = extractelement <2 x double> %7, i32 2
4162 ; CHECK-NEXT: ret double %8
4163 ; CHECK-NEXT: }
4164
4165 define i8 @extract_20xi8_at_0(<20 x i8>) {
4166 entry:
4167 %1 = extractelement <20 x i8> %0, i32 0
4168 ret i8 %1
4169 }
4170 ; CHECK-LABEL: define i8 @extract_20xi8_at_0(<16 x i8>, <16 x i8>) {
4171 ; CHECK: entry:
4172 ; CHECK-NEXT: %2 = extractelement <16 x i8> %0, i32 0
4173 ; CHECK-NEXT: ret i8 %2
4174 ; CHECK-NEXT: }
4175
4176 define i8 @extract_20xi8_at_1(<20 x i8>) {
4177 entry:
4178 %1 = extractelement <20 x i8> %0, i32 1
4179 ret i8 %1
4180 }
4181 ; CHECK-LABEL: define i8 @extract_20xi8_at_1(<16 x i8>, <16 x i8>) {
4182 ; CHECK: entry:
4183 ; CHECK-NEXT: %2 = extractelement <16 x i8> %0, i32 1
4184 ; CHECK-NEXT: ret i8 %2
4185 ; CHECK-NEXT: }
4186
4187 define i8 @extract_20xi8_at_2(<20 x i8>) {
4188 entry:
4189 %1 = extractelement <20 x i8> %0, i32 2
4190 ret i8 %1
4191 }
4192 ; CHECK-LABEL: define i8 @extract_20xi8_at_2(<16 x i8>, <16 x i8>) {
4193 ; CHECK: entry:
4194 ; CHECK-NEXT: %2 = extractelement <16 x i8> %0, i32 2
4195 ; CHECK-NEXT: ret i8 %2
4196 ; CHECK-NEXT: }
4197
4198 define i8 @extract_20xi8_at_3(<20 x i8>) {
4199 entry:
4200 %1 = extractelement <20 x i8> %0, i32 3
4201 ret i8 %1
4202 }
4203 ; CHECK-LABEL: define i8 @extract_20xi8_at_3(<16 x i8>, <16 x i8>) {
4204 ; CHECK: entry:
4205 ; CHECK-NEXT: %2 = extractelement <16 x i8> %0, i32 3
4206 ; CHECK-NEXT: ret i8 %2
4207 ; CHECK-NEXT: }
4208
4209 define i8 @extract_20xi8_at_4(<20 x i8>) {
4210 entry:
4211 %1 = extractelement <20 x i8> %0, i32 4
4212 ret i8 %1
4213 }
4214 ; CHECK-LABEL: define i8 @extract_20xi8_at_4(<16 x i8>, <16 x i8>) {
4215 ; CHECK: entry:
4216 ; CHECK-NEXT: %2 = extractelement <16 x i8> %0, i32 4
4217 ; CHECK-NEXT: ret i8 %2
4218 ; CHECK-NEXT: }
4219
4220 define i8 @extract_20xi8_at_5(<20 x i8>) {
4221 entry:
4222 %1 = extractelement <20 x i8> %0, i32 5
4223 ret i8 %1
4224 }
4225 ; CHECK-LABEL: define i8 @extract_20xi8_at_5(<16 x i8>, <16 x i8>) {
4226 ; CHECK: entry:
4227 ; CHECK-NEXT: %2 = extractelement <16 x i8> %0, i32 5
4228 ; CHECK-NEXT: ret i8 %2
4229 ; CHECK-NEXT: }
4230
4231 define i8 @extract_20xi8_at_6(<20 x i8>) {
4232 entry:
4233 %1 = extractelement <20 x i8> %0, i32 6
4234 ret i8 %1
4235 }
4236 ; CHECK-LABEL: define i8 @extract_20xi8_at_6(<16 x i8>, <16 x i8>) {
4237 ; CHECK: entry:
4238 ; CHECK-NEXT: %2 = extractelement <16 x i8> %0, i32 6
4239 ; CHECK-NEXT: ret i8 %2
4240 ; CHECK-NEXT: }
4241
4242 define i8 @extract_20xi8_at_7(<20 x i8>) {
4243 entry:
4244 %1 = extractelement <20 x i8> %0, i32 7
4245 ret i8 %1
4246 }
4247 ; CHECK-LABEL: define i8 @extract_20xi8_at_7(<16 x i8>, <16 x i8>) {
4248 ; CHECK: entry:
4249 ; CHECK-NEXT: %2 = extractelement <16 x i8> %0, i32 7
4250 ; CHECK-NEXT: ret i8 %2
4251 ; CHECK-NEXT: }
4252
4253 define i8 @extract_20xi8_at_8(<20 x i8>) {
4254 entry:
4255 %1 = extractelement <20 x i8> %0, i32 8
4256 ret i8 %1
4257 }
4258 ; CHECK-LABEL: define i8 @extract_20xi8_at_8(<16 x i8>, <16 x i8>) {
4259 ; CHECK: entry:
4260 ; CHECK-NEXT: %2 = extractelement <16 x i8> %0, i32 8
4261 ; CHECK-NEXT: ret i8 %2
4262 ; CHECK-NEXT: }
4263
4264 define i8 @extract_20xi8_at_9(<20 x i8>) {
4265 entry:
4266 %1 = extractelement <20 x i8> %0, i32 9
4267 ret i8 %1
4268 }
4269 ; CHECK-LABEL: define i8 @extract_20xi8_at_9(<16 x i8>, <16 x i8>) {
4270 ; CHECK: entry:
4271 ; CHECK-NEXT: %2 = extractelement <16 x i8> %0, i32 9
4272 ; CHECK-NEXT: ret i8 %2
4273 ; CHECK-NEXT: }
4274
4275 define i8 @extract_20xi8_at_10(<20 x i8>) {
4276 entry:
4277 %1 = extractelement <20 x i8> %0, i32 10
4278 ret i8 %1
4279 }
4280 ; CHECK-LABEL: define i8 @extract_20xi8_at_10(<16 x i8>, <16 x i8>) {
4281 ; CHECK: entry:
4282 ; CHECK-NEXT: %2 = extractelement <16 x i8> %0, i32 10
4283 ; CHECK-NEXT: ret i8 %2
4284 ; CHECK-NEXT: }
4285
4286 define i8 @extract_20xi8_at_11(<20 x i8>) {
4287 entry:
4288 %1 = extractelement <20 x i8> %0, i32 11
4289 ret i8 %1
4290 }
4291 ; CHECK-LABEL: define i8 @extract_20xi8_at_11(<16 x i8>, <16 x i8>) {
4292 ; CHECK: entry:
4293 ; CHECK-NEXT: %2 = extractelement <16 x i8> %0, i32 11
4294 ; CHECK-NEXT: ret i8 %2
4295 ; CHECK-NEXT: }
4296
4297 define i8 @extract_20xi8_at_12(<20 x i8>) {
4298 entry:
4299 %1 = extractelement <20 x i8> %0, i32 12
4300 ret i8 %1
4301 }
4302 ; CHECK-LABEL: define i8 @extract_20xi8_at_12(<16 x i8>, <16 x i8>) {
4303 ; CHECK: entry:
4304 ; CHECK-NEXT: %2 = extractelement <16 x i8> %0, i32 12
4305 ; CHECK-NEXT: ret i8 %2
4306 ; CHECK-NEXT: }
4307
4308 define i8 @extract_20xi8_at_13(<20 x i8>) {
4309 entry:
4310 %1 = extractelement <20 x i8> %0, i32 13
4311 ret i8 %1
4312 }
4313 ; CHECK-LABEL: define i8 @extract_20xi8_at_13(<16 x i8>, <16 x i8>) {
4314 ; CHECK: entry:
4315 ; CHECK-NEXT: %2 = extractelement <16 x i8> %0, i32 13
4316 ; CHECK-NEXT: ret i8 %2
4317 ; CHECK-NEXT: }
4318
4319 define i8 @extract_20xi8_at_14(<20 x i8>) {
4320 entry:
4321 %1 = extractelement <20 x i8> %0, i32 14
4322 ret i8 %1
4323 }
4324 ; CHECK-LABEL: define i8 @extract_20xi8_at_14(<16 x i8>, <16 x i8>) {
4325 ; CHECK: entry:
4326 ; CHECK-NEXT: %2 = extractelement <16 x i8> %0, i32 14
4327 ; CHECK-NEXT: ret i8 %2
4328 ; CHECK-NEXT: }
4329
4330 define i8 @extract_20xi8_at_15(<20 x i8>) {
4331 entry:
4332 %1 = extractelement <20 x i8> %0, i32 15
4333 ret i8 %1
4334 }
4335 ; CHECK-LABEL: define i8 @extract_20xi8_at_15(<16 x i8>, <16 x i8>) {
4336 ; CHECK: entry:
4337 ; CHECK-NEXT: %2 = extractelement <16 x i8> %0, i32 15
4338 ; CHECK-NEXT: ret i8 %2
4339 ; CHECK-NEXT: }
4340
4341 define i8 @extract_20xi8_at_16(<20 x i8>) {
4342 entry:
4343 %1 = extractelement <20 x i8> %0, i32 16
4344 ret i8 %1
4345 }
4346 ; CHECK-LABEL: define i8 @extract_20xi8_at_16(<16 x i8>, <16 x i8>) {
4347 ; CHECK: entry:
4348 ; CHECK-NEXT: %2 = extractelement <16 x i8> %1, i32 0
4349 ; CHECK-NEXT: ret i8 %2
4350 ; CHECK-NEXT: }
4351
4352 define i8 @extract_20xi8_at_17(<20 x i8>) {
4353 entry:
4354 %1 = extractelement <20 x i8> %0, i32 17
4355 ret i8 %1
4356 }
4357 ; CHECK-LABEL: define i8 @extract_20xi8_at_17(<16 x i8>, <16 x i8>) {
4358 ; CHECK: entry:
4359 ; CHECK-NEXT: %2 = extractelement <16 x i8> %1, i32 1
4360 ; CHECK-NEXT: ret i8 %2
4361 ; CHECK-NEXT: }
4362
4363 define i8 @extract_20xi8_at_18(<20 x i8>) {
4364 entry:
4365 %1 = extractelement <20 x i8> %0, i32 18
4366 ret i8 %1
4367 }
4368 ; CHECK-LABEL: define i8 @extract_20xi8_at_18(<16 x i8>, <16 x i8>) {
4369 ; CHECK: entry:
4370 ; CHECK-NEXT: %2 = extractelement <16 x i8> %1, i32 2
4371 ; CHECK-NEXT: ret i8 %2
4372 ; CHECK-NEXT: }
4373
4374 define i8 @extract_20xi8_at_19(<20 x i8>) {
4375 entry:
4376 %1 = extractelement <20 x i8> %0, i32 19
4377 ret i8 %1
4378 }
4379 ; CHECK-LABEL: define i8 @extract_20xi8_at_19(<16 x i8>, <16 x i8>) {
4380 ; CHECK: entry:
4381 ; CHECK-NEXT: %2 = extractelement <16 x i8> %1, i32 3
4382 ; CHECK-NEXT: ret i8 %2
4383 ; CHECK-NEXT: }
4384
4385 define i8 @extract_20xi8_undef_idx(<20 x i8>) {
4386 entry:
4387 %1 = extractelement <20 x i8> %0, i32 20
4388 ret i8 %1
4389 }
4390 ; CHECK-LABEL: define i8 @extract_20xi8_undef_idx(<16 x i8>, <16 x i8>) {
4391 ; CHECK: entry:
4392 ; CHECK-NEXT: %2 = extractelement <16 x i8> %1, i32 4
4393 ; CHECK-NEXT: ret i8 %2
4394 ; CHECK-NEXT: }
4395
4396 define i16 @extract_20xi16_at_0(<20 x i16>) {
4397 entry:
4398 %1 = extractelement <20 x i16> %0, i32 0
4399 ret i16 %1
4400 }
4401 ; CHECK-LABEL: define i16 @extract_20xi16_at_0(<8 x i16>, <8 x i16>, <8 x i16>) {
4402 ; CHECK: entry:
4403 ; CHECK-NEXT: %3 = extractelement <8 x i16> %0, i32 0
4404 ; CHECK-NEXT: ret i16 %3
4405 ; CHECK-NEXT: }
4406
4407 define i16 @extract_20xi16_at_1(<20 x i16>) {
4408 entry:
4409 %1 = extractelement <20 x i16> %0, i32 1
4410 ret i16 %1
4411 }
4412 ; CHECK-LABEL: define i16 @extract_20xi16_at_1(<8 x i16>, <8 x i16>, <8 x i16>) {
4413 ; CHECK: entry:
4414 ; CHECK-NEXT: %3 = extractelement <8 x i16> %0, i32 1
4415 ; CHECK-NEXT: ret i16 %3
4416 ; CHECK-NEXT: }
4417
4418 define i16 @extract_20xi16_at_2(<20 x i16>) {
4419 entry:
4420 %1 = extractelement <20 x i16> %0, i32 2
4421 ret i16 %1
4422 }
4423 ; CHECK-LABEL: define i16 @extract_20xi16_at_2(<8 x i16>, <8 x i16>, <8 x i16>) {
4424 ; CHECK: entry:
4425 ; CHECK-NEXT: %3 = extractelement <8 x i16> %0, i32 2
4426 ; CHECK-NEXT: ret i16 %3
4427 ; CHECK-NEXT: }
4428
4429 define i16 @extract_20xi16_at_3(<20 x i16>) {
4430 entry:
4431 %1 = extractelement <20 x i16> %0, i32 3
4432 ret i16 %1
4433 }
4434 ; CHECK-LABEL: define i16 @extract_20xi16_at_3(<8 x i16>, <8 x i16>, <8 x i16>) {
4435 ; CHECK: entry:
4436 ; CHECK-NEXT: %3 = extractelement <8 x i16> %0, i32 3
4437 ; CHECK-NEXT: ret i16 %3
4438 ; CHECK-NEXT: }
4439
4440 define i16 @extract_20xi16_at_4(<20 x i16>) {
4441 entry:
4442 %1 = extractelement <20 x i16> %0, i32 4
4443 ret i16 %1
4444 }
4445 ; CHECK-LABEL: define i16 @extract_20xi16_at_4(<8 x i16>, <8 x i16>, <8 x i16>) {
4446 ; CHECK: entry:
4447 ; CHECK-NEXT: %3 = extractelement <8 x i16> %0, i32 4
4448 ; CHECK-NEXT: ret i16 %3
4449 ; CHECK-NEXT: }
4450
4451 define i16 @extract_20xi16_at_5(<20 x i16>) {
4452 entry:
4453 %1 = extractelement <20 x i16> %0, i32 5
4454 ret i16 %1
4455 }
4456 ; CHECK-LABEL: define i16 @extract_20xi16_at_5(<8 x i16>, <8 x i16>, <8 x i16>) {
4457 ; CHECK: entry:
4458 ; CHECK-NEXT: %3 = extractelement <8 x i16> %0, i32 5
4459 ; CHECK-NEXT: ret i16 %3
4460 ; CHECK-NEXT: }
4461
4462 define i16 @extract_20xi16_at_6(<20 x i16>) {
4463 entry:
4464 %1 = extractelement <20 x i16> %0, i32 6
4465 ret i16 %1
4466 }
4467 ; CHECK-LABEL: define i16 @extract_20xi16_at_6(<8 x i16>, <8 x i16>, <8 x i16>) {
4468 ; CHECK: entry:
4469 ; CHECK-NEXT: %3 = extractelement <8 x i16> %0, i32 6
4470 ; CHECK-NEXT: ret i16 %3
4471 ; CHECK-NEXT: }
4472
4473 define i16 @extract_20xi16_at_7(<20 x i16>) {
4474 entry:
4475 %1 = extractelement <20 x i16> %0, i32 7
4476 ret i16 %1
4477 }
4478 ; CHECK-LABEL: define i16 @extract_20xi16_at_7(<8 x i16>, <8 x i16>, <8 x i16>) {
4479 ; CHECK: entry:
4480 ; CHECK-NEXT: %3 = extractelement <8 x i16> %0, i32 7
4481 ; CHECK-NEXT: ret i16 %3
4482 ; CHECK-NEXT: }
4483
4484 define i16 @extract_20xi16_at_8(<20 x i16>) {
4485 entry:
4486 %1 = extractelement <20 x i16> %0, i32 8
4487 ret i16 %1
4488 }
4489 ; CHECK-LABEL: define i16 @extract_20xi16_at_8(<8 x i16>, <8 x i16>, <8 x i16>) {
4490 ; CHECK: entry:
4491 ; CHECK-NEXT: %3 = extractelement <8 x i16> %1, i32 0
4492 ; CHECK-NEXT: ret i16 %3
4493 ; CHECK-NEXT: }
4494
4495 define i16 @extract_20xi16_at_9(<20 x i16>) {
4496 entry:
4497 %1 = extractelement <20 x i16> %0, i32 9
4498 ret i16 %1
4499 }
4500 ; CHECK-LABEL: define i16 @extract_20xi16_at_9(<8 x i16>, <8 x i16>, <8 x i16>) {
4501 ; CHECK: entry:
4502 ; CHECK-NEXT: %3 = extractelement <8 x i16> %1, i32 1
4503 ; CHECK-NEXT: ret i16 %3
4504 ; CHECK-NEXT: }
4505
4506 define i16 @extract_20xi16_at_10(<20 x i16>) {
4507 entry:
4508 %1 = extractelement <20 x i16> %0, i32 10
4509 ret i16 %1
4510 }
4511 ; CHECK-LABEL: define i16 @extract_20xi16_at_10(<8 x i16>, <8 x i16>, <8 x i16>) {
4512 ; CHECK: entry:
4513 ; CHECK-NEXT: %3 = extractelement <8 x i16> %1, i32 2
4514 ; CHECK-NEXT: ret i16 %3
4515 ; CHECK-NEXT: }
4516
4517 define i16 @extract_20xi16_at_11(<20 x i16>) {
4518 entry:
4519 %1 = extractelement <20 x i16> %0, i32 11
4520 ret i16 %1
4521 }
4522 ; CHECK-LABEL: define i16 @extract_20xi16_at_11(<8 x i16>, <8 x i16>, <8 x i16>) {
4523 ; CHECK: entry:
4524 ; CHECK-NEXT: %3 = extractelement <8 x i16> %1, i32 3
4525 ; CHECK-NEXT: ret i16 %3
4526 ; CHECK-NEXT: }
4527
4528 define i16 @extract_20xi16_at_12(<20 x i16>) {
4529 entry:
4530 %1 = extractelement <20 x i16> %0, i32 12
4531 ret i16 %1
4532 }
4533 ; CHECK-LABEL: define i16 @extract_20xi16_at_12(<8 x i16>, <8 x i16>, <8 x i16>) {
4534 ; CHECK: entry:
4535 ; CHECK-NEXT: %3 = extractelement <8 x i16> %1, i32 4
4536 ; CHECK-NEXT: ret i16 %3
4537 ; CHECK-NEXT: }
4538
4539 define i16 @extract_20xi16_at_13(<20 x i16>) {
4540 entry:
4541 %1 = extractelement <20 x i16> %0, i32 13
4542 ret i16 %1
4543 }
4544 ; CHECK-LABEL: define i16 @extract_20xi16_at_13(<8 x i16>, <8 x i16>, <8 x i16>) {
4545 ; CHECK: entry:
4546 ; CHECK-NEXT: %3 = extractelement <8 x i16> %1, i32 5
4547 ; CHECK-NEXT: ret i16 %3
4548 ; CHECK-NEXT: }
4549
4550 define i16 @extract_20xi16_at_14(<20 x i16>) {
4551 entry:
4552 %1 = extractelement <20 x i16> %0, i32 14
4553 ret i16 %1
4554 }
4555 ; CHECK-LABEL: define i16 @extract_20xi16_at_14(<8 x i16>, <8 x i16>, <8 x i16>) {
4556 ; CHECK: entry:
4557 ; CHECK-NEXT: %3 = extractelement <8 x i16> %1, i32 6
4558 ; CHECK-NEXT: ret i16 %3
4559 ; CHECK-NEXT: }
4560
4561 define i16 @extract_20xi16_at_15(<20 x i16>) {
4562 entry:
4563 %1 = extractelement <20 x i16> %0, i32 15
4564 ret i16 %1
4565 }
4566 ; CHECK-LABEL: define i16 @extract_20xi16_at_15(<8 x i16>, <8 x i16>, <8 x i16>) {
4567 ; CHECK: entry:
4568 ; CHECK-NEXT: %3 = extractelement <8 x i16> %1, i32 7
4569 ; CHECK-NEXT: ret i16 %3
4570 ; CHECK-NEXT: }
4571
4572 define i16 @extract_20xi16_at_16(<20 x i16>) {
4573 entry:
4574 %1 = extractelement <20 x i16> %0, i32 16
4575 ret i16 %1
4576 }
4577 ; CHECK-LABEL: define i16 @extract_20xi16_at_16(<8 x i16>, <8 x i16>, <8 x i16>) {
4578 ; CHECK: entry:
4579 ; CHECK-NEXT: %3 = extractelement <8 x i16> %2, i32 0
4580 ; CHECK-NEXT: ret i16 %3
4581 ; CHECK-NEXT: }
4582
4583 define i16 @extract_20xi16_at_17(<20 x i16>) {
4584 entry:
4585 %1 = extractelement <20 x i16> %0, i32 17
4586 ret i16 %1
4587 }
4588 ; CHECK-LABEL: define i16 @extract_20xi16_at_17(<8 x i16>, <8 x i16>, <8 x i16>) {
4589 ; CHECK: entry:
4590 ; CHECK-NEXT: %3 = extractelement <8 x i16> %2, i32 1
4591 ; CHECK-NEXT: ret i16 %3
4592 ; CHECK-NEXT: }
4593
4594 define i16 @extract_20xi16_at_18(<20 x i16>) {
4595 entry:
4596 %1 = extractelement <20 x i16> %0, i32 18
4597 ret i16 %1
4598 }
4599 ; CHECK-LABEL: define i16 @extract_20xi16_at_18(<8 x i16>, <8 x i16>, <8 x i16>) {
4600 ; CHECK: entry:
4601 ; CHECK-NEXT: %3 = extractelement <8 x i16> %2, i32 2
4602 ; CHECK-NEXT: ret i16 %3
4603 ; CHECK-NEXT: }
4604
4605 define i16 @extract_20xi16_at_19(<20 x i16>) {
4606 entry:
4607 %1 = extractelement <20 x i16> %0, i32 19
4608 ret i16 %1
4609 }
4610 ; CHECK-LABEL: define i16 @extract_20xi16_at_19(<8 x i16>, <8 x i16>, <8 x i16>) {
4611 ; CHECK: entry:
4612 ; CHECK-NEXT: %3 = extractelement <8 x i16> %2, i32 3
4613 ; CHECK-NEXT: ret i16 %3
4614 ; CHECK-NEXT: }
4615
4616 define i16 @extract_20xi16_undef_idx(<20 x i16>) {
4617 entry:
4618 %1 = extractelement <20 x i16> %0, i32 20
4619 ret i16 %1
4620 }
4621 ; CHECK-LABEL: define i16 @extract_20xi16_undef_idx(<8 x i16>, <8 x i16>, <8 x i 16>) {
4622 ; CHECK: entry:
4623 ; CHECK-NEXT: %3 = extractelement <8 x i16> %2, i32 4
4624 ; CHECK-NEXT: ret i16 %3
4625 ; CHECK-NEXT: }
4626
4627 define i32 @extract_20xi32_at_0(<20 x i32>) {
4628 entry:
4629 %1 = extractelement <20 x i32> %0, i32 0
4630 ret i32 %1
4631 }
4632 ; CHECK-LABEL: define i32 @extract_20xi32_at_0(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) {
4633 ; CHECK: entry:
4634 ; CHECK-NEXT: %5 = extractelement <4 x i32> %0, i32 0
4635 ; CHECK-NEXT: ret i32 %5
4636 ; CHECK-NEXT: }
4637
4638 define i32 @extract_20xi32_at_1(<20 x i32>) {
4639 entry:
4640 %1 = extractelement <20 x i32> %0, i32 1
4641 ret i32 %1
4642 }
4643 ; CHECK-LABEL: define i32 @extract_20xi32_at_1(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) {
4644 ; CHECK: entry:
4645 ; CHECK-NEXT: %5 = extractelement <4 x i32> %0, i32 1
4646 ; CHECK-NEXT: ret i32 %5
4647 ; CHECK-NEXT: }
4648
4649 define i32 @extract_20xi32_at_2(<20 x i32>) {
4650 entry:
4651 %1 = extractelement <20 x i32> %0, i32 2
4652 ret i32 %1
4653 }
4654 ; CHECK-LABEL: define i32 @extract_20xi32_at_2(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) {
4655 ; CHECK: entry:
4656 ; CHECK-NEXT: %5 = extractelement <4 x i32> %0, i32 2
4657 ; CHECK-NEXT: ret i32 %5
4658 ; CHECK-NEXT: }
4659
4660 define i32 @extract_20xi32_at_3(<20 x i32>) {
4661 entry:
4662 %1 = extractelement <20 x i32> %0, i32 3
4663 ret i32 %1
4664 }
4665 ; CHECK-LABEL: define i32 @extract_20xi32_at_3(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) {
4666 ; CHECK: entry:
4667 ; CHECK-NEXT: %5 = extractelement <4 x i32> %0, i32 3
4668 ; CHECK-NEXT: ret i32 %5
4669 ; CHECK-NEXT: }
4670
4671 define i32 @extract_20xi32_at_4(<20 x i32>) {
4672 entry:
4673 %1 = extractelement <20 x i32> %0, i32 4
4674 ret i32 %1
4675 }
4676 ; CHECK-LABEL: define i32 @extract_20xi32_at_4(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) {
4677 ; CHECK: entry:
4678 ; CHECK-NEXT: %5 = extractelement <4 x i32> %1, i32 0
4679 ; CHECK-NEXT: ret i32 %5
4680 ; CHECK-NEXT: }
4681
4682 define i32 @extract_20xi32_at_5(<20 x i32>) {
4683 entry:
4684 %1 = extractelement <20 x i32> %0, i32 5
4685 ret i32 %1
4686 }
4687 ; CHECK-LABEL: define i32 @extract_20xi32_at_5(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) {
4688 ; CHECK: entry:
4689 ; CHECK-NEXT: %5 = extractelement <4 x i32> %1, i32 1
4690 ; CHECK-NEXT: ret i32 %5
4691 ; CHECK-NEXT: }
4692
4693 define i32 @extract_20xi32_at_6(<20 x i32>) {
4694 entry:
4695 %1 = extractelement <20 x i32> %0, i32 6
4696 ret i32 %1
4697 }
4698 ; CHECK-LABEL: define i32 @extract_20xi32_at_6(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) {
4699 ; CHECK: entry:
4700 ; CHECK-NEXT: %5 = extractelement <4 x i32> %1, i32 2
4701 ; CHECK-NEXT: ret i32 %5
4702 ; CHECK-NEXT: }
4703
4704 define i32 @extract_20xi32_at_7(<20 x i32>) {
4705 entry:
4706 %1 = extractelement <20 x i32> %0, i32 7
4707 ret i32 %1
4708 }
4709 ; CHECK-LABEL: define i32 @extract_20xi32_at_7(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) {
4710 ; CHECK: entry:
4711 ; CHECK-NEXT: %5 = extractelement <4 x i32> %1, i32 3
4712 ; CHECK-NEXT: ret i32 %5
4713 ; CHECK-NEXT: }
4714
4715 define i32 @extract_20xi32_at_8(<20 x i32>) {
4716 entry:
4717 %1 = extractelement <20 x i32> %0, i32 8
4718 ret i32 %1
4719 }
4720 ; CHECK-LABEL: define i32 @extract_20xi32_at_8(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) {
4721 ; CHECK: entry:
4722 ; CHECK-NEXT: %5 = extractelement <4 x i32> %2, i32 0
4723 ; CHECK-NEXT: ret i32 %5
4724 ; CHECK-NEXT: }
4725
4726 define i32 @extract_20xi32_at_9(<20 x i32>) {
4727 entry:
4728 %1 = extractelement <20 x i32> %0, i32 9
4729 ret i32 %1
4730 }
4731 ; CHECK-LABEL: define i32 @extract_20xi32_at_9(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) {
4732 ; CHECK: entry:
4733 ; CHECK-NEXT: %5 = extractelement <4 x i32> %2, i32 1
4734 ; CHECK-NEXT: ret i32 %5
4735 ; CHECK-NEXT: }
4736
4737 define i32 @extract_20xi32_at_10(<20 x i32>) {
4738 entry:
4739 %1 = extractelement <20 x i32> %0, i32 10
4740 ret i32 %1
4741 }
4742 ; CHECK-LABEL: define i32 @extract_20xi32_at_10(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) {
4743 ; CHECK: entry:
4744 ; CHECK-NEXT: %5 = extractelement <4 x i32> %2, i32 2
4745 ; CHECK-NEXT: ret i32 %5
4746 ; CHECK-NEXT: }
4747
4748 define i32 @extract_20xi32_at_11(<20 x i32>) {
4749 entry:
4750 %1 = extractelement <20 x i32> %0, i32 11
4751 ret i32 %1
4752 }
4753 ; CHECK-LABEL: define i32 @extract_20xi32_at_11(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) {
4754 ; CHECK: entry:
4755 ; CHECK-NEXT: %5 = extractelement <4 x i32> %2, i32 3
4756 ; CHECK-NEXT: ret i32 %5
4757 ; CHECK-NEXT: }
4758
4759 define i32 @extract_20xi32_at_12(<20 x i32>) {
4760 entry:
4761 %1 = extractelement <20 x i32> %0, i32 12
4762 ret i32 %1
4763 }
4764 ; CHECK-LABEL: define i32 @extract_20xi32_at_12(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) {
4765 ; CHECK: entry:
4766 ; CHECK-NEXT: %5 = extractelement <4 x i32> %3, i32 0
4767 ; CHECK-NEXT: ret i32 %5
4768 ; CHECK-NEXT: }
4769
4770 define i32 @extract_20xi32_at_13(<20 x i32>) {
4771 entry:
4772 %1 = extractelement <20 x i32> %0, i32 13
4773 ret i32 %1
4774 }
4775 ; CHECK-LABEL: define i32 @extract_20xi32_at_13(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) {
4776 ; CHECK: entry:
4777 ; CHECK-NEXT: %5 = extractelement <4 x i32> %3, i32 1
4778 ; CHECK-NEXT: ret i32 %5
4779 ; CHECK-NEXT: }
4780
4781 define i32 @extract_20xi32_at_14(<20 x i32>) {
4782 entry:
4783 %1 = extractelement <20 x i32> %0, i32 14
4784 ret i32 %1
4785 }
4786 ; CHECK-LABEL: define i32 @extract_20xi32_at_14(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) {
4787 ; CHECK: entry:
4788 ; CHECK-NEXT: %5 = extractelement <4 x i32> %3, i32 2
4789 ; CHECK-NEXT: ret i32 %5
4790 ; CHECK-NEXT: }
4791
4792 define i32 @extract_20xi32_at_15(<20 x i32>) {
4793 entry:
4794 %1 = extractelement <20 x i32> %0, i32 15
4795 ret i32 %1
4796 }
4797 ; CHECK-LABEL: define i32 @extract_20xi32_at_15(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) {
4798 ; CHECK: entry:
4799 ; CHECK-NEXT: %5 = extractelement <4 x i32> %3, i32 3
4800 ; CHECK-NEXT: ret i32 %5
4801 ; CHECK-NEXT: }
4802
4803 define i32 @extract_20xi32_at_16(<20 x i32>) {
4804 entry:
4805 %1 = extractelement <20 x i32> %0, i32 16
4806 ret i32 %1
4807 }
4808 ; CHECK-LABEL: define i32 @extract_20xi32_at_16(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) {
4809 ; CHECK: entry:
4810 ; CHECK-NEXT: %5 = extractelement <4 x i32> %4, i32 0
4811 ; CHECK-NEXT: ret i32 %5
4812 ; CHECK-NEXT: }
4813
4814 define i32 @extract_20xi32_at_17(<20 x i32>) {
4815 entry:
4816 %1 = extractelement <20 x i32> %0, i32 17
4817 ret i32 %1
4818 }
4819 ; CHECK-LABEL: define i32 @extract_20xi32_at_17(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) {
4820 ; CHECK: entry:
4821 ; CHECK-NEXT: %5 = extractelement <4 x i32> %4, i32 1
4822 ; CHECK-NEXT: ret i32 %5
4823 ; CHECK-NEXT: }
4824
4825 define i32 @extract_20xi32_at_18(<20 x i32>) {
4826 entry:
4827 %1 = extractelement <20 x i32> %0, i32 18
4828 ret i32 %1
4829 }
4830 ; CHECK-LABEL: define i32 @extract_20xi32_at_18(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) {
4831 ; CHECK: entry:
4832 ; CHECK-NEXT: %5 = extractelement <4 x i32> %4, i32 2
4833 ; CHECK-NEXT: ret i32 %5
4834 ; CHECK-NEXT: }
4835
4836 define i32 @extract_20xi32_at_19(<20 x i32>) {
4837 entry:
4838 %1 = extractelement <20 x i32> %0, i32 19
4839 ret i32 %1
4840 }
4841 ; CHECK-LABEL: define i32 @extract_20xi32_at_19(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>) {
4842 ; CHECK: entry:
4843 ; CHECK-NEXT: %5 = extractelement <4 x i32> %4, i32 3
4844 ; CHECK-NEXT: ret i32 %5
4845 ; CHECK-NEXT: }
4846
4847 define i32 @extract_20xi32_undef_idx(<20 x i32>) {
4848 entry:
4849 %1 = extractelement <20 x i32> %0, i32 20
4850 ret i32 %1
4851 }
4852 ; CHECK-LABEL: define i32 @extract_20xi32_undef_idx(<4 x i32>, <4 x i32>, <4 x i 32>, <4 x i32>, <4 x i32>) {
4853 ; CHECK: entry:
4854 ; CHECK-NEXT: %5 = extractelement <4 x i32> %4, i32 4
4855 ; CHECK-NEXT: ret i32 %5
4856 ; CHECK-NEXT: }
4857
4858 define i64 @extract_20xi64_at_0(<20 x i64>) {
4859 entry:
4860 %1 = extractelement <20 x i64> %0, i32 0
4861 ret i64 %1
4862 }
4863 ; CHECK-LABEL: define i64 @extract_20xi64_at_0(<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>) {
4864 ; CHECK: entry:
4865 ; CHECK-NEXT: %10 = extractelement <2 x i64> %0, i32 0
4866 ; CHECK-NEXT: ret i64 %10
4867 ; CHECK-NEXT: }
4868
4869 define i64 @extract_20xi64_at_1(<20 x i64>) {
4870 entry:
4871 %1 = extractelement <20 x i64> %0, i32 1
4872 ret i64 %1
4873 }
4874 ; CHECK-LABEL: define i64 @extract_20xi64_at_1(<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>) {
4875 ; CHECK: entry:
4876 ; CHECK-NEXT: %10 = extractelement <2 x i64> %0, i32 1
4877 ; CHECK-NEXT: ret i64 %10
4878 ; CHECK-NEXT: }
4879
4880 define i64 @extract_20xi64_at_2(<20 x i64>) {
4881 entry:
4882 %1 = extractelement <20 x i64> %0, i32 2
4883 ret i64 %1
4884 }
4885 ; CHECK-LABEL: define i64 @extract_20xi64_at_2(<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>) {
4886 ; CHECK: entry:
4887 ; CHECK-NEXT: %10 = extractelement <2 x i64> %1, i32 0
4888 ; CHECK-NEXT: ret i64 %10
4889 ; CHECK-NEXT: }
4890
4891 define i64 @extract_20xi64_at_3(<20 x i64>) {
4892 entry:
4893 %1 = extractelement <20 x i64> %0, i32 3
4894 ret i64 %1
4895 }
4896 ; CHECK-LABEL: define i64 @extract_20xi64_at_3(<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>) {
4897 ; CHECK: entry:
4898 ; CHECK-NEXT: %10 = extractelement <2 x i64> %1, i32 1
4899 ; CHECK-NEXT: ret i64 %10
4900 ; CHECK-NEXT: }
4901
4902 define i64 @extract_20xi64_at_4(<20 x i64>) {
4903 entry:
4904 %1 = extractelement <20 x i64> %0, i32 4
4905 ret i64 %1
4906 }
4907 ; CHECK-LABEL: define i64 @extract_20xi64_at_4(<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>) {
4908 ; CHECK: entry:
4909 ; CHECK-NEXT: %10 = extractelement <2 x i64> %2, i32 0
4910 ; CHECK-NEXT: ret i64 %10
4911 ; CHECK-NEXT: }
4912
4913 define i64 @extract_20xi64_at_5(<20 x i64>) {
4914 entry:
4915 %1 = extractelement <20 x i64> %0, i32 5
4916 ret i64 %1
4917 }
4918 ; CHECK-LABEL: define i64 @extract_20xi64_at_5(<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>) {
4919 ; CHECK: entry:
4920 ; CHECK-NEXT: %10 = extractelement <2 x i64> %2, i32 1
4921 ; CHECK-NEXT: ret i64 %10
4922 ; CHECK-NEXT: }
4923
4924 define i64 @extract_20xi64_at_6(<20 x i64>) {
4925 entry:
4926 %1 = extractelement <20 x i64> %0, i32 6
4927 ret i64 %1
4928 }
4929 ; CHECK-LABEL: define i64 @extract_20xi64_at_6(<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>) {
4930 ; CHECK: entry:
4931 ; CHECK-NEXT: %10 = extractelement <2 x i64> %3, i32 0
4932 ; CHECK-NEXT: ret i64 %10
4933 ; CHECK-NEXT: }
4934
4935 define i64 @extract_20xi64_at_7(<20 x i64>) {
4936 entry:
4937 %1 = extractelement <20 x i64> %0, i32 7
4938 ret i64 %1
4939 }
4940 ; CHECK-LABEL: define i64 @extract_20xi64_at_7(<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>) {
4941 ; CHECK: entry:
4942 ; CHECK-NEXT: %10 = extractelement <2 x i64> %3, i32 1
4943 ; CHECK-NEXT: ret i64 %10
4944 ; CHECK-NEXT: }
4945
4946 define i64 @extract_20xi64_at_8(<20 x i64>) {
4947 entry:
4948 %1 = extractelement <20 x i64> %0, i32 8
4949 ret i64 %1
4950 }
4951 ; CHECK-LABEL: define i64 @extract_20xi64_at_8(<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>) {
4952 ; CHECK: entry:
4953 ; CHECK-NEXT: %10 = extractelement <2 x i64> %4, i32 0
4954 ; CHECK-NEXT: ret i64 %10
4955 ; CHECK-NEXT: }
4956
4957 define i64 @extract_20xi64_at_9(<20 x i64>) {
4958 entry:
4959 %1 = extractelement <20 x i64> %0, i32 9
4960 ret i64 %1
4961 }
4962 ; CHECK-LABEL: define i64 @extract_20xi64_at_9(<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>) {
4963 ; CHECK: entry:
4964 ; CHECK-NEXT: %10 = extractelement <2 x i64> %4, i32 1
4965 ; CHECK-NEXT: ret i64 %10
4966 ; CHECK-NEXT: }
4967
4968 define i64 @extract_20xi64_at_10(<20 x i64>) {
4969 entry:
4970 %1 = extractelement <20 x i64> %0, i32 10
4971 ret i64 %1
4972 }
4973 ; CHECK-LABEL: define i64 @extract_20xi64_at_10(<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>) {
4974 ; CHECK: entry:
4975 ; CHECK-NEXT: %10 = extractelement <2 x i64> %5, i32 0
4976 ; CHECK-NEXT: ret i64 %10
4977 ; CHECK-NEXT: }
4978
4979 define i64 @extract_20xi64_at_11(<20 x i64>) {
4980 entry:
4981 %1 = extractelement <20 x i64> %0, i32 11
4982 ret i64 %1
4983 }
4984 ; CHECK-LABEL: define i64 @extract_20xi64_at_11(<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>) {
4985 ; CHECK: entry:
4986 ; CHECK-NEXT: %10 = extractelement <2 x i64> %5, i32 1
4987 ; CHECK-NEXT: ret i64 %10
4988 ; CHECK-NEXT: }
4989
4990 define i64 @extract_20xi64_at_12(<20 x i64>) {
4991 entry:
4992 %1 = extractelement <20 x i64> %0, i32 12
4993 ret i64 %1
4994 }
4995 ; CHECK-LABEL: define i64 @extract_20xi64_at_12(<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>) {
4996 ; CHECK: entry:
4997 ; CHECK-NEXT: %10 = extractelement <2 x i64> %6, i32 0
4998 ; CHECK-NEXT: ret i64 %10
4999 ; CHECK-NEXT: }
5000
5001 define i64 @extract_20xi64_at_13(<20 x i64>) {
5002 entry:
5003 %1 = extractelement <20 x i64> %0, i32 13
5004 ret i64 %1
5005 }
5006 ; CHECK-LABEL: define i64 @extract_20xi64_at_13(<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>) {
5007 ; CHECK: entry:
5008 ; CHECK-NEXT: %10 = extractelement <2 x i64> %6, i32 1
5009 ; CHECK-NEXT: ret i64 %10
5010 ; CHECK-NEXT: }
5011
5012 define i64 @extract_20xi64_at_14(<20 x i64>) {
5013 entry:
5014 %1 = extractelement <20 x i64> %0, i32 14
5015 ret i64 %1
5016 }
5017 ; CHECK-LABEL: define i64 @extract_20xi64_at_14(<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>) {
5018 ; CHECK: entry:
5019 ; CHECK-NEXT: %10 = extractelement <2 x i64> %7, i32 0
5020 ; CHECK-NEXT: ret i64 %10
5021 ; CHECK-NEXT: }
5022
5023 define i64 @extract_20xi64_at_15(<20 x i64>) {
5024 entry:
5025 %1 = extractelement <20 x i64> %0, i32 15
5026 ret i64 %1
5027 }
5028 ; CHECK-LABEL: define i64 @extract_20xi64_at_15(<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>) {
5029 ; CHECK: entry:
5030 ; CHECK-NEXT: %10 = extractelement <2 x i64> %7, i32 1
5031 ; CHECK-NEXT: ret i64 %10
5032 ; CHECK-NEXT: }
5033
5034 define i64 @extract_20xi64_at_16(<20 x i64>) {
5035 entry:
5036 %1 = extractelement <20 x i64> %0, i32 16
5037 ret i64 %1
5038 }
5039 ; CHECK-LABEL: define i64 @extract_20xi64_at_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>) {
5040 ; CHECK: entry:
5041 ; CHECK-NEXT: %10 = extractelement <2 x i64> %8, i32 0
5042 ; CHECK-NEXT: ret i64 %10
5043 ; CHECK-NEXT: }
5044
5045 define i64 @extract_20xi64_at_17(<20 x i64>) {
5046 entry:
5047 %1 = extractelement <20 x i64> %0, i32 17
5048 ret i64 %1
5049 }
5050 ; CHECK-LABEL: define i64 @extract_20xi64_at_17(<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>) {
5051 ; CHECK: entry:
5052 ; CHECK-NEXT: %10 = extractelement <2 x i64> %8, i32 1
5053 ; CHECK-NEXT: ret i64 %10
5054 ; CHECK-NEXT: }
5055
5056 define i64 @extract_20xi64_at_18(<20 x i64>) {
5057 entry:
5058 %1 = extractelement <20 x i64> %0, i32 18
5059 ret i64 %1
5060 }
5061 ; CHECK-LABEL: define i64 @extract_20xi64_at_18(<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>) {
5062 ; CHECK: entry:
5063 ; CHECK-NEXT: %10 = extractelement <2 x i64> %9, i32 0
5064 ; CHECK-NEXT: ret i64 %10
5065 ; CHECK-NEXT: }
5066
5067 define i64 @extract_20xi64_at_19(<20 x i64>) {
5068 entry:
5069 %1 = extractelement <20 x i64> %0, i32 19
5070 ret i64 %1
5071 }
5072 ; CHECK-LABEL: define i64 @extract_20xi64_at_19(<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>) {
5073 ; CHECK: entry:
5074 ; CHECK-NEXT: %10 = extractelement <2 x i64> %9, i32 1
5075 ; CHECK-NEXT: ret i64 %10
5076 ; CHECK-NEXT: }
5077
5078 define i64 @extract_20xi64_undef_idx(<20 x i64>) {
5079 entry:
5080 %1 = extractelement <20 x i64> %0, i32 20
5081 ret i64 %1
5082 }
5083 ; CHECK-LABEL: define i64 @extract_20xi64_undef_idx(<2 x i64>, <2 x i64>, <2 x i 64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> ) {
5084 ; CHECK: entry:
5085 ; CHECK-NEXT: %10 = extractelement <2 x i64> %9, i32 2
5086 ; CHECK-NEXT: ret i64 %10
5087 ; CHECK-NEXT: }
5088
5089 define i8* @extract_20xi8ptr_at_0(<20 x i8*>) {
5090 entry:
5091 %1 = extractelement <20 x i8*> %0, i32 0
5092 ret i8* %1
5093 }
5094 ; CHECK-LABEL: define i8* @extract_20xi8ptr_at_0(<4 x i8*>, <4 x i8*>, <4 x i8*> , <4 x i8*>, <4 x i8*>) {
5095 ; CHECK: entry:
5096 ; CHECK-NEXT: %5 = extractelement <4 x i8*> %0, i32 0
5097 ; CHECK-NEXT: ret i8* %5
5098 ; CHECK-NEXT: }
5099
5100 define i8* @extract_20xi8ptr_at_1(<20 x i8*>) {
5101 entry:
5102 %1 = extractelement <20 x i8*> %0, i32 1
5103 ret i8* %1
5104 }
5105 ; CHECK-LABEL: define i8* @extract_20xi8ptr_at_1(<4 x i8*>, <4 x i8*>, <4 x i8*> , <4 x i8*>, <4 x i8*>) {
5106 ; CHECK: entry:
5107 ; CHECK-NEXT: %5 = extractelement <4 x i8*> %0, i32 1
5108 ; CHECK-NEXT: ret i8* %5
5109 ; CHECK-NEXT: }
5110
5111 define i8* @extract_20xi8ptr_at_2(<20 x i8*>) {
5112 entry:
5113 %1 = extractelement <20 x i8*> %0, i32 2
5114 ret i8* %1
5115 }
5116 ; CHECK-LABEL: define i8* @extract_20xi8ptr_at_2(<4 x i8*>, <4 x i8*>, <4 x i8*> , <4 x i8*>, <4 x i8*>) {
5117 ; CHECK: entry:
5118 ; CHECK-NEXT: %5 = extractelement <4 x i8*> %0, i32 2
5119 ; CHECK-NEXT: ret i8* %5
5120 ; CHECK-NEXT: }
5121
5122 define i8* @extract_20xi8ptr_at_3(<20 x i8*>) {
5123 entry:
5124 %1 = extractelement <20 x i8*> %0, i32 3
5125 ret i8* %1
5126 }
5127 ; CHECK-LABEL: define i8* @extract_20xi8ptr_at_3(<4 x i8*>, <4 x i8*>, <4 x i8*> , <4 x i8*>, <4 x i8*>) {
5128 ; CHECK: entry:
5129 ; CHECK-NEXT: %5 = extractelement <4 x i8*> %0, i32 3
5130 ; CHECK-NEXT: ret i8* %5
5131 ; CHECK-NEXT: }
5132
5133 define i8* @extract_20xi8ptr_at_4(<20 x i8*>) {
5134 entry:
5135 %1 = extractelement <20 x i8*> %0, i32 4
5136 ret i8* %1
5137 }
5138 ; CHECK-LABEL: define i8* @extract_20xi8ptr_at_4(<4 x i8*>, <4 x i8*>, <4 x i8*> , <4 x i8*>, <4 x i8*>) {
5139 ; CHECK: entry:
5140 ; CHECK-NEXT: %5 = extractelement <4 x i8*> %1, i32 0
5141 ; CHECK-NEXT: ret i8* %5
5142 ; CHECK-NEXT: }
5143
5144 define i8* @extract_20xi8ptr_at_5(<20 x i8*>) {
5145 entry:
5146 %1 = extractelement <20 x i8*> %0, i32 5
5147 ret i8* %1
5148 }
5149 ; CHECK-LABEL: define i8* @extract_20xi8ptr_at_5(<4 x i8*>, <4 x i8*>, <4 x i8*> , <4 x i8*>, <4 x i8*>) {
5150 ; CHECK: entry:
5151 ; CHECK-NEXT: %5 = extractelement <4 x i8*> %1, i32 1
5152 ; CHECK-NEXT: ret i8* %5
5153 ; CHECK-NEXT: }
5154
5155 define i8* @extract_20xi8ptr_at_6(<20 x i8*>) {
5156 entry:
5157 %1 = extractelement <20 x i8*> %0, i32 6
5158 ret i8* %1
5159 }
5160 ; CHECK-LABEL: define i8* @extract_20xi8ptr_at_6(<4 x i8*>, <4 x i8*>, <4 x i8*> , <4 x i8*>, <4 x i8*>) {
5161 ; CHECK: entry:
5162 ; CHECK-NEXT: %5 = extractelement <4 x i8*> %1, i32 2
5163 ; CHECK-NEXT: ret i8* %5
5164 ; CHECK-NEXT: }
5165
5166 define i8* @extract_20xi8ptr_at_7(<20 x i8*>) {
5167 entry:
5168 %1 = extractelement <20 x i8*> %0, i32 7
5169 ret i8* %1
5170 }
5171 ; CHECK-LABEL: define i8* @extract_20xi8ptr_at_7(<4 x i8*>, <4 x i8*>, <4 x i8*> , <4 x i8*>, <4 x i8*>) {
5172 ; CHECK: entry:
5173 ; CHECK-NEXT: %5 = extractelement <4 x i8*> %1, i32 3
5174 ; CHECK-NEXT: ret i8* %5
5175 ; CHECK-NEXT: }
5176
5177 define i8* @extract_20xi8ptr_at_8(<20 x i8*>) {
5178 entry:
5179 %1 = extractelement <20 x i8*> %0, i32 8
5180 ret i8* %1
5181 }
5182 ; CHECK-LABEL: define i8* @extract_20xi8ptr_at_8(<4 x i8*>, <4 x i8*>, <4 x i8*> , <4 x i8*>, <4 x i8*>) {
5183 ; CHECK: entry:
5184 ; CHECK-NEXT: %5 = extractelement <4 x i8*> %2, i32 0
5185 ; CHECK-NEXT: ret i8* %5
5186 ; CHECK-NEXT: }
5187
5188 define i8* @extract_20xi8ptr_at_9(<20 x i8*>) {
5189 entry:
5190 %1 = extractelement <20 x i8*> %0, i32 9
5191 ret i8* %1
5192 }
5193 ; CHECK-LABEL: define i8* @extract_20xi8ptr_at_9(<4 x i8*>, <4 x i8*>, <4 x i8*> , <4 x i8*>, <4 x i8*>) {
5194 ; CHECK: entry:
5195 ; CHECK-NEXT: %5 = extractelement <4 x i8*> %2, i32 1
5196 ; CHECK-NEXT: ret i8* %5
5197 ; CHECK-NEXT: }
5198
5199 define i8* @extract_20xi8ptr_at_10(<20 x i8*>) {
5200 entry:
5201 %1 = extractelement <20 x i8*> %0, i32 10
5202 ret i8* %1
5203 }
5204 ; CHECK-LABEL: define i8* @extract_20xi8ptr_at_10(<4 x i8*>, <4 x i8*>, <4 x i8* >, <4 x i8*>, <4 x i8*>) {
5205 ; CHECK: entry:
5206 ; CHECK-NEXT: %5 = extractelement <4 x i8*> %2, i32 2
5207 ; CHECK-NEXT: ret i8* %5
5208 ; CHECK-NEXT: }
5209
5210 define i8* @extract_20xi8ptr_at_11(<20 x i8*>) {
5211 entry:
5212 %1 = extractelement <20 x i8*> %0, i32 11
5213 ret i8* %1
5214 }
5215 ; CHECK-LABEL: define i8* @extract_20xi8ptr_at_11(<4 x i8*>, <4 x i8*>, <4 x i8* >, <4 x i8*>, <4 x i8*>) {
5216 ; CHECK: entry:
5217 ; CHECK-NEXT: %5 = extractelement <4 x i8*> %2, i32 3
5218 ; CHECK-NEXT: ret i8* %5
5219 ; CHECK-NEXT: }
5220
5221 define i8* @extract_20xi8ptr_at_12(<20 x i8*>) {
5222 entry:
5223 %1 = extractelement <20 x i8*> %0, i32 12
5224 ret i8* %1
5225 }
5226 ; CHECK-LABEL: define i8* @extract_20xi8ptr_at_12(<4 x i8*>, <4 x i8*>, <4 x i8* >, <4 x i8*>, <4 x i8*>) {
5227 ; CHECK: entry:
5228 ; CHECK-NEXT: %5 = extractelement <4 x i8*> %3, i32 0
5229 ; CHECK-NEXT: ret i8* %5
5230 ; CHECK-NEXT: }
5231
5232 define i8* @extract_20xi8ptr_at_13(<20 x i8*>) {
5233 entry:
5234 %1 = extractelement <20 x i8*> %0, i32 13
5235 ret i8* %1
5236 }
5237 ; CHECK-LABEL: define i8* @extract_20xi8ptr_at_13(<4 x i8*>, <4 x i8*>, <4 x i8* >, <4 x i8*>, <4 x i8*>) {
5238 ; CHECK: entry:
5239 ; CHECK-NEXT: %5 = extractelement <4 x i8*> %3, i32 1
5240 ; CHECK-NEXT: ret i8* %5
5241 ; CHECK-NEXT: }
5242
5243 define i8* @extract_20xi8ptr_at_14(<20 x i8*>) {
5244 entry:
5245 %1 = extractelement <20 x i8*> %0, i32 14
5246 ret i8* %1
5247 }
5248 ; CHECK-LABEL: define i8* @extract_20xi8ptr_at_14(<4 x i8*>, <4 x i8*>, <4 x i8* >, <4 x i8*>, <4 x i8*>) {
5249 ; CHECK: entry:
5250 ; CHECK-NEXT: %5 = extractelement <4 x i8*> %3, i32 2
5251 ; CHECK-NEXT: ret i8* %5
5252 ; CHECK-NEXT: }
5253
5254 define i8* @extract_20xi8ptr_at_15(<20 x i8*>) {
5255 entry:
5256 %1 = extractelement <20 x i8*> %0, i32 15
5257 ret i8* %1
5258 }
5259 ; CHECK-LABEL: define i8* @extract_20xi8ptr_at_15(<4 x i8*>, <4 x i8*>, <4 x i8* >, <4 x i8*>, <4 x i8*>) {
5260 ; CHECK: entry:
5261 ; CHECK-NEXT: %5 = extractelement <4 x i8*> %3, i32 3
5262 ; CHECK-NEXT: ret i8* %5
5263 ; CHECK-NEXT: }
5264
5265 define i8* @extract_20xi8ptr_at_16(<20 x i8*>) {
5266 entry:
5267 %1 = extractelement <20 x i8*> %0, i32 16
5268 ret i8* %1
5269 }
5270 ; CHECK-LABEL: define i8* @extract_20xi8ptr_at_16(<4 x i8*>, <4 x i8*>, <4 x i8* >, <4 x i8*>, <4 x i8*>) {
5271 ; CHECK: entry:
5272 ; CHECK-NEXT: %5 = extractelement <4 x i8*> %4, i32 0
5273 ; CHECK-NEXT: ret i8* %5
5274 ; CHECK-NEXT: }
5275
5276 define i8* @extract_20xi8ptr_at_17(<20 x i8*>) {
5277 entry:
5278 %1 = extractelement <20 x i8*> %0, i32 17
5279 ret i8* %1
5280 }
5281 ; CHECK-LABEL: define i8* @extract_20xi8ptr_at_17(<4 x i8*>, <4 x i8*>, <4 x i8* >, <4 x i8*>, <4 x i8*>) {
5282 ; CHECK: entry:
5283 ; CHECK-NEXT: %5 = extractelement <4 x i8*> %4, i32 1
5284 ; CHECK-NEXT: ret i8* %5
5285 ; CHECK-NEXT: }
5286
5287 define i8* @extract_20xi8ptr_at_18(<20 x i8*>) {
5288 entry:
5289 %1 = extractelement <20 x i8*> %0, i32 18
5290 ret i8* %1
5291 }
5292 ; CHECK-LABEL: define i8* @extract_20xi8ptr_at_18(<4 x i8*>, <4 x i8*>, <4 x i8* >, <4 x i8*>, <4 x i8*>) {
5293 ; CHECK: entry:
5294 ; CHECK-NEXT: %5 = extractelement <4 x i8*> %4, i32 2
5295 ; CHECK-NEXT: ret i8* %5
5296 ; CHECK-NEXT: }
5297
5298 define i8* @extract_20xi8ptr_at_19(<20 x i8*>) {
5299 entry:
5300 %1 = extractelement <20 x i8*> %0, i32 19
5301 ret i8* %1
5302 }
5303 ; CHECK-LABEL: define i8* @extract_20xi8ptr_at_19(<4 x i8*>, <4 x i8*>, <4 x i8* >, <4 x i8*>, <4 x i8*>) {
5304 ; CHECK: entry:
5305 ; CHECK-NEXT: %5 = extractelement <4 x i8*> %4, i32 3
5306 ; CHECK-NEXT: ret i8* %5
5307 ; CHECK-NEXT: }
5308
5309 define i8* @extract_20xi8ptr_undef_idx(<20 x i8*>) {
5310 entry:
5311 %1 = extractelement <20 x i8*> %0, i32 20
5312 ret i8* %1
5313 }
5314 ; CHECK-LABEL: define i8* @extract_20xi8ptr_undef_idx(<4 x i8*>, <4 x i8*>, <4 x i8*>, <4 x i8*>, <4 x i8*>) {
5315 ; CHECK: entry:
5316 ; CHECK-NEXT: %5 = extractelement <4 x i8*> %4, i32 4
5317 ; CHECK-NEXT: ret i8* %5
5318 ; CHECK-NEXT: }
5319
5320 define float @extract_20xfloat_at_0(<20 x float>) {
5321 entry:
5322 %1 = extractelement <20 x float> %0, i32 0
5323 ret float %1
5324 }
5325 ; CHECK-LABEL: define float @extract_20xfloat_at_0(<4 x float>, <4 x float>, <4 x float>, <4 x float>, <4 x float>) {
5326 ; CHECK: entry:
5327 ; CHECK-NEXT: %5 = extractelement <4 x float> %0, i32 0
5328 ; CHECK-NEXT: ret float %5
5329 ; CHECK-NEXT: }
5330
5331 define float @extract_20xfloat_at_1(<20 x float>) {
5332 entry:
5333 %1 = extractelement <20 x float> %0, i32 1
5334 ret float %1
5335 }
5336 ; CHECK-LABEL: define float @extract_20xfloat_at_1(<4 x float>, <4 x float>, <4 x float>, <4 x float>, <4 x float>) {
5337 ; CHECK: entry:
5338 ; CHECK-NEXT: %5 = extractelement <4 x float> %0, i32 1
5339 ; CHECK-NEXT: ret float %5
5340 ; CHECK-NEXT: }
5341
5342 define float @extract_20xfloat_at_2(<20 x float>) {
5343 entry:
5344 %1 = extractelement <20 x float> %0, i32 2
5345 ret float %1
5346 }
5347 ; CHECK-LABEL: define float @extract_20xfloat_at_2(<4 x float>, <4 x float>, <4 x float>, <4 x float>, <4 x float>) {
5348 ; CHECK: entry:
5349 ; CHECK-NEXT: %5 = extractelement <4 x float> %0, i32 2
5350 ; CHECK-NEXT: ret float %5
5351 ; CHECK-NEXT: }
5352
5353 define float @extract_20xfloat_at_3(<20 x float>) {
5354 entry:
5355 %1 = extractelement <20 x float> %0, i32 3
5356 ret float %1
5357 }
5358 ; CHECK-LABEL: define float @extract_20xfloat_at_3(<4 x float>, <4 x float>, <4 x float>, <4 x float>, <4 x float>) {
5359 ; CHECK: entry:
5360 ; CHECK-NEXT: %5 = extractelement <4 x float> %0, i32 3
5361 ; CHECK-NEXT: ret float %5
5362 ; CHECK-NEXT: }
5363
5364 define float @extract_20xfloat_at_4(<20 x float>) {
5365 entry:
5366 %1 = extractelement <20 x float> %0, i32 4
5367 ret float %1
5368 }
5369 ; CHECK-LABEL: define float @extract_20xfloat_at_4(<4 x float>, <4 x float>, <4 x float>, <4 x float>, <4 x float>) {
5370 ; CHECK: entry:
5371 ; CHECK-NEXT: %5 = extractelement <4 x float> %1, i32 0
5372 ; CHECK-NEXT: ret float %5
5373 ; CHECK-NEXT: }
5374
5375 define float @extract_20xfloat_at_5(<20 x float>) {
5376 entry:
5377 %1 = extractelement <20 x float> %0, i32 5
5378 ret float %1
5379 }
5380 ; CHECK-LABEL: define float @extract_20xfloat_at_5(<4 x float>, <4 x float>, <4 x float>, <4 x float>, <4 x float>) {
5381 ; CHECK: entry:
5382 ; CHECK-NEXT: %5 = extractelement <4 x float> %1, i32 1
5383 ; CHECK-NEXT: ret float %5
5384 ; CHECK-NEXT: }
5385
5386 define float @extract_20xfloat_at_6(<20 x float>) {
5387 entry:
5388 %1 = extractelement <20 x float> %0, i32 6
5389 ret float %1
5390 }
5391 ; CHECK-LABEL: define float @extract_20xfloat_at_6(<4 x float>, <4 x float>, <4 x float>, <4 x float>, <4 x float>) {
5392 ; CHECK: entry:
5393 ; CHECK-NEXT: %5 = extractelement <4 x float> %1, i32 2
5394 ; CHECK-NEXT: ret float %5
5395 ; CHECK-NEXT: }
5396
5397 define float @extract_20xfloat_at_7(<20 x float>) {
5398 entry:
5399 %1 = extractelement <20 x float> %0, i32 7
5400 ret float %1
5401 }
5402 ; CHECK-LABEL: define float @extract_20xfloat_at_7(<4 x float>, <4 x float>, <4 x float>, <4 x float>, <4 x float>) {
5403 ; CHECK: entry:
5404 ; CHECK-NEXT: %5 = extractelement <4 x float> %1, i32 3
5405 ; CHECK-NEXT: ret float %5
5406 ; CHECK-NEXT: }
5407
5408 define float @extract_20xfloat_at_8(<20 x float>) {
5409 entry:
5410 %1 = extractelement <20 x float> %0, i32 8
5411 ret float %1
5412 }
5413 ; CHECK-LABEL: define float @extract_20xfloat_at_8(<4 x float>, <4 x float>, <4 x float>, <4 x float>, <4 x float>) {
5414 ; CHECK: entry:
5415 ; CHECK-NEXT: %5 = extractelement <4 x float> %2, i32 0
5416 ; CHECK-NEXT: ret float %5
5417 ; CHECK-NEXT: }
5418
5419 define float @extract_20xfloat_at_9(<20 x float>) {
5420 entry:
5421 %1 = extractelement <20 x float> %0, i32 9
5422 ret float %1
5423 }
5424 ; CHECK-LABEL: define float @extract_20xfloat_at_9(<4 x float>, <4 x float>, <4 x float>, <4 x float>, <4 x float>) {
5425 ; CHECK: entry:
5426 ; CHECK-NEXT: %5 = extractelement <4 x float> %2, i32 1
5427 ; CHECK-NEXT: ret float %5
5428 ; CHECK-NEXT: }
5429
5430 define float @extract_20xfloat_at_10(<20 x float>) {
5431 entry:
5432 %1 = extractelement <20 x float> %0, i32 10
5433 ret float %1
5434 }
5435 ; CHECK-LABEL: define float @extract_20xfloat_at_10(<4 x float>, <4 x float>, <4 x float>, <4 x float>, <4 x float>) {
5436 ; CHECK: entry:
5437 ; CHECK-NEXT: %5 = extractelement <4 x float> %2, i32 2
5438 ; CHECK-NEXT: ret float %5
5439 ; CHECK-NEXT: }
5440
5441 define float @extract_20xfloat_at_11(<20 x float>) {
5442 entry:
5443 %1 = extractelement <20 x float> %0, i32 11
5444 ret float %1
5445 }
5446 ; CHECK-LABEL: define float @extract_20xfloat_at_11(<4 x float>, <4 x float>, <4 x float>, <4 x float>, <4 x float>) {
5447 ; CHECK: entry:
5448 ; CHECK-NEXT: %5 = extractelement <4 x float> %2, i32 3
5449 ; CHECK-NEXT: ret float %5
5450 ; CHECK-NEXT: }
5451
5452 define float @extract_20xfloat_at_12(<20 x float>) {
5453 entry:
5454 %1 = extractelement <20 x float> %0, i32 12
5455 ret float %1
5456 }
5457 ; CHECK-LABEL: define float @extract_20xfloat_at_12(<4 x float>, <4 x float>, <4 x float>, <4 x float>, <4 x float>) {
5458 ; CHECK: entry:
5459 ; CHECK-NEXT: %5 = extractelement <4 x float> %3, i32 0
5460 ; CHECK-NEXT: ret float %5
5461 ; CHECK-NEXT: }
5462
5463 define float @extract_20xfloat_at_13(<20 x float>) {
5464 entry:
5465 %1 = extractelement <20 x float> %0, i32 13
5466 ret float %1
5467 }
5468 ; CHECK-LABEL: define float @extract_20xfloat_at_13(<4 x float>, <4 x float>, <4 x float>, <4 x float>, <4 x float>) {
5469 ; CHECK: entry:
5470 ; CHECK-NEXT: %5 = extractelement <4 x float> %3, i32 1
5471 ; CHECK-NEXT: ret float %5
5472 ; CHECK-NEXT: }
5473
5474 define float @extract_20xfloat_at_14(<20 x float>) {
5475 entry:
5476 %1 = extractelement <20 x float> %0, i32 14
5477 ret float %1
5478 }
5479 ; CHECK-LABEL: define float @extract_20xfloat_at_14(<4 x float>, <4 x float>, <4 x float>, <4 x float>, <4 x float>) {
5480 ; CHECK: entry:
5481 ; CHECK-NEXT: %5 = extractelement <4 x float> %3, i32 2
5482 ; CHECK-NEXT: ret float %5
5483 ; CHECK-NEXT: }
5484
5485 define float @extract_20xfloat_at_15(<20 x float>) {
5486 entry:
5487 %1 = extractelement <20 x float> %0, i32 15
5488 ret float %1
5489 }
5490 ; CHECK-LABEL: define float @extract_20xfloat_at_15(<4 x float>, <4 x float>, <4 x float>, <4 x float>, <4 x float>) {
5491 ; CHECK: entry:
5492 ; CHECK-NEXT: %5 = extractelement <4 x float> %3, i32 3
5493 ; CHECK-NEXT: ret float %5
5494 ; CHECK-NEXT: }
5495
5496 define float @extract_20xfloat_at_16(<20 x float>) {
5497 entry:
5498 %1 = extractelement <20 x float> %0, i32 16
5499 ret float %1
5500 }
5501 ; CHECK-LABEL: define float @extract_20xfloat_at_16(<4 x float>, <4 x float>, <4 x float>, <4 x float>, <4 x float>) {
5502 ; CHECK: entry:
5503 ; CHECK-NEXT: %5 = extractelement <4 x float> %4, i32 0
5504 ; CHECK-NEXT: ret float %5
5505 ; CHECK-NEXT: }
5506
5507 define float @extract_20xfloat_at_17(<20 x float>) {
5508 entry:
5509 %1 = extractelement <20 x float> %0, i32 17
5510 ret float %1
5511 }
5512 ; CHECK-LABEL: define float @extract_20xfloat_at_17(<4 x float>, <4 x float>, <4 x float>, <4 x float>, <4 x float>) {
5513 ; CHECK: entry:
5514 ; CHECK-NEXT: %5 = extractelement <4 x float> %4, i32 1
5515 ; CHECK-NEXT: ret float %5
5516 ; CHECK-NEXT: }
5517
5518 define float @extract_20xfloat_at_18(<20 x float>) {
5519 entry:
5520 %1 = extractelement <20 x float> %0, i32 18
5521 ret float %1
5522 }
5523 ; CHECK-LABEL: define float @extract_20xfloat_at_18(<4 x float>, <4 x float>, <4 x float>, <4 x float>, <4 x float>) {
5524 ; CHECK: entry:
5525 ; CHECK-NEXT: %5 = extractelement <4 x float> %4, i32 2
5526 ; CHECK-NEXT: ret float %5
5527 ; CHECK-NEXT: }
5528
5529 define float @extract_20xfloat_at_19(<20 x float>) {
5530 entry:
5531 %1 = extractelement <20 x float> %0, i32 19
5532 ret float %1
5533 }
5534 ; CHECK-LABEL: define float @extract_20xfloat_at_19(<4 x float>, <4 x float>, <4 x float>, <4 x float>, <4 x float>) {
5535 ; CHECK: entry:
5536 ; CHECK-NEXT: %5 = extractelement <4 x float> %4, i32 3
5537 ; CHECK-NEXT: ret float %5
5538 ; CHECK-NEXT: }
5539
5540 define float @extract_20xfloat_undef_idx(<20 x float>) {
5541 entry:
5542 %1 = extractelement <20 x float> %0, i32 20
5543 ret float %1
5544 }
5545 ; CHECK-LABEL: define float @extract_20xfloat_undef_idx(<4 x float>, <4 x float> , <4 x float>, <4 x float>, <4 x float>) {
5546 ; CHECK: entry:
5547 ; CHECK-NEXT: %5 = extractelement <4 x float> %4, i32 4
5548 ; CHECK-NEXT: ret float %5
5549 ; CHECK-NEXT: }
5550
5551 define double @extract_20xdouble_at_0(<20 x double>) {
5552 entry:
5553 %1 = extractelement <20 x double> %0, i32 0
5554 ret double %1
5555 }
5556 ; CHECK-LABEL: define double @extract_20xdouble_at_0(<2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x doub le>, <2 x double>, <2 x double>) {
5557 ; CHECK: entry:
5558 ; CHECK-NEXT: %10 = extractelement <2 x double> %0, i32 0
5559 ; CHECK-NEXT: ret double %10
5560 ; CHECK-NEXT: }
5561
5562 define double @extract_20xdouble_at_1(<20 x double>) {
5563 entry:
5564 %1 = extractelement <20 x double> %0, i32 1
5565 ret double %1
5566 }
5567 ; CHECK-LABEL: define double @extract_20xdouble_at_1(<2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x doub le>, <2 x double>, <2 x double>) {
5568 ; CHECK: entry:
5569 ; CHECK-NEXT: %10 = extractelement <2 x double> %0, i32 1
5570 ; CHECK-NEXT: ret double %10
5571 ; CHECK-NEXT: }
5572
5573 define double @extract_20xdouble_at_2(<20 x double>) {
5574 entry:
5575 %1 = extractelement <20 x double> %0, i32 2
5576 ret double %1
5577 }
5578 ; CHECK-LABEL: define double @extract_20xdouble_at_2(<2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x doub le>, <2 x double>, <2 x double>) {
5579 ; CHECK: entry:
5580 ; CHECK-NEXT: %10 = extractelement <2 x double> %1, i32 0
5581 ; CHECK-NEXT: ret double %10
5582 ; CHECK-NEXT: }
5583
5584 define double @extract_20xdouble_at_3(<20 x double>) {
5585 entry:
5586 %1 = extractelement <20 x double> %0, i32 3
5587 ret double %1
5588 }
5589 ; CHECK-LABEL: define double @extract_20xdouble_at_3(<2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x doub le>, <2 x double>, <2 x double>) {
5590 ; CHECK: entry:
5591 ; CHECK-NEXT: %10 = extractelement <2 x double> %1, i32 1
5592 ; CHECK-NEXT: ret double %10
5593 ; CHECK-NEXT: }
5594
5595 define double @extract_20xdouble_at_4(<20 x double>) {
5596 entry:
5597 %1 = extractelement <20 x double> %0, i32 4
5598 ret double %1
5599 }
5600 ; CHECK-LABEL: define double @extract_20xdouble_at_4(<2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x doub le>, <2 x double>, <2 x double>) {
5601 ; CHECK: entry:
5602 ; CHECK-NEXT: %10 = extractelement <2 x double> %2, i32 0
5603 ; CHECK-NEXT: ret double %10
5604 ; CHECK-NEXT: }
5605
5606 define double @extract_20xdouble_at_5(<20 x double>) {
5607 entry:
5608 %1 = extractelement <20 x double> %0, i32 5
5609 ret double %1
5610 }
5611 ; CHECK-LABEL: define double @extract_20xdouble_at_5(<2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x doub le>, <2 x double>, <2 x double>) {
5612 ; CHECK: entry:
5613 ; CHECK-NEXT: %10 = extractelement <2 x double> %2, i32 1
5614 ; CHECK-NEXT: ret double %10
5615 ; CHECK-NEXT: }
5616
5617 define double @extract_20xdouble_at_6(<20 x double>) {
5618 entry:
5619 %1 = extractelement <20 x double> %0, i32 6
5620 ret double %1
5621 }
5622 ; CHECK-LABEL: define double @extract_20xdouble_at_6(<2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x doub le>, <2 x double>, <2 x double>) {
5623 ; CHECK: entry:
5624 ; CHECK-NEXT: %10 = extractelement <2 x double> %3, i32 0
5625 ; CHECK-NEXT: ret double %10
5626 ; CHECK-NEXT: }
5627
5628 define double @extract_20xdouble_at_7(<20 x double>) {
5629 entry:
5630 %1 = extractelement <20 x double> %0, i32 7
5631 ret double %1
5632 }
5633 ; CHECK-LABEL: define double @extract_20xdouble_at_7(<2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x doub le>, <2 x double>, <2 x double>) {
5634 ; CHECK: entry:
5635 ; CHECK-NEXT: %10 = extractelement <2 x double> %3, i32 1
5636 ; CHECK-NEXT: ret double %10
5637 ; CHECK-NEXT: }
5638
5639 define double @extract_20xdouble_at_8(<20 x double>) {
5640 entry:
5641 %1 = extractelement <20 x double> %0, i32 8
5642 ret double %1
5643 }
5644 ; CHECK-LABEL: define double @extract_20xdouble_at_8(<2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x doub le>, <2 x double>, <2 x double>) {
5645 ; CHECK: entry:
5646 ; CHECK-NEXT: %10 = extractelement <2 x double> %4, i32 0
5647 ; CHECK-NEXT: ret double %10
5648 ; CHECK-NEXT: }
5649
5650 define double @extract_20xdouble_at_9(<20 x double>) {
5651 entry:
5652 %1 = extractelement <20 x double> %0, i32 9
5653 ret double %1
5654 }
5655 ; CHECK-LABEL: define double @extract_20xdouble_at_9(<2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x doub le>, <2 x double>, <2 x double>) {
5656 ; CHECK: entry:
5657 ; CHECK-NEXT: %10 = extractelement <2 x double> %4, i32 1
5658 ; CHECK-NEXT: ret double %10
5659 ; CHECK-NEXT: }
5660
5661 define double @extract_20xdouble_at_10(<20 x double>) {
5662 entry:
5663 %1 = extractelement <20 x double> %0, i32 10
5664 ret double %1
5665 }
5666 ; CHECK-LABEL: define double @extract_20xdouble_at_10(<2 x double>, <2 x double> , <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x dou ble>, <2 x double>, <2 x double>) {
5667 ; CHECK: entry:
5668 ; CHECK-NEXT: %10 = extractelement <2 x double> %5, i32 0
5669 ; CHECK-NEXT: ret double %10
5670 ; CHECK-NEXT: }
5671
5672 define double @extract_20xdouble_at_11(<20 x double>) {
5673 entry:
5674 %1 = extractelement <20 x double> %0, i32 11
5675 ret double %1
5676 }
5677 ; CHECK-LABEL: define double @extract_20xdouble_at_11(<2 x double>, <2 x double> , <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x dou ble>, <2 x double>, <2 x double>) {
5678 ; CHECK: entry:
5679 ; CHECK-NEXT: %10 = extractelement <2 x double> %5, i32 1
5680 ; CHECK-NEXT: ret double %10
5681 ; CHECK-NEXT: }
5682
5683 define double @extract_20xdouble_at_12(<20 x double>) {
5684 entry:
5685 %1 = extractelement <20 x double> %0, i32 12
5686 ret double %1
5687 }
5688 ; CHECK-LABEL: define double @extract_20xdouble_at_12(<2 x double>, <2 x double> , <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x dou ble>, <2 x double>, <2 x double>) {
5689 ; CHECK: entry:
5690 ; CHECK-NEXT: %10 = extractelement <2 x double> %6, i32 0
5691 ; CHECK-NEXT: ret double %10
5692 ; CHECK-NEXT: }
5693
5694 define double @extract_20xdouble_at_13(<20 x double>) {
5695 entry:
5696 %1 = extractelement <20 x double> %0, i32 13
5697 ret double %1
5698 }
5699 ; CHECK-LABEL: define double @extract_20xdouble_at_13(<2 x double>, <2 x double> , <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x dou ble>, <2 x double>, <2 x double>) {
5700 ; CHECK: entry:
5701 ; CHECK-NEXT: %10 = extractelement <2 x double> %6, i32 1
5702 ; CHECK-NEXT: ret double %10
5703 ; CHECK-NEXT: }
5704
5705 define double @extract_20xdouble_at_14(<20 x double>) {
5706 entry:
5707 %1 = extractelement <20 x double> %0, i32 14
5708 ret double %1
5709 }
5710 ; CHECK-LABEL: define double @extract_20xdouble_at_14(<2 x double>, <2 x double> , <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x dou ble>, <2 x double>, <2 x double>) {
5711 ; CHECK: entry:
5712 ; CHECK-NEXT: %10 = extractelement <2 x double> %7, i32 0
5713 ; CHECK-NEXT: ret double %10
5714 ; CHECK-NEXT: }
5715
5716 define double @extract_20xdouble_at_15(<20 x double>) {
5717 entry:
5718 %1 = extractelement <20 x double> %0, i32 15
5719 ret double %1
5720 }
5721 ; CHECK-LABEL: define double @extract_20xdouble_at_15(<2 x double>, <2 x double> , <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x dou ble>, <2 x double>, <2 x double>) {
5722 ; CHECK: entry:
5723 ; CHECK-NEXT: %10 = extractelement <2 x double> %7, i32 1
5724 ; CHECK-NEXT: ret double %10
5725 ; CHECK-NEXT: }
5726
5727 define double @extract_20xdouble_at_16(<20 x double>) {
5728 entry:
5729 %1 = extractelement <20 x double> %0, i32 16
5730 ret double %1
5731 }
5732 ; CHECK-LABEL: define double @extract_20xdouble_at_16(<2 x double>, <2 x double> , <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x dou ble>, <2 x double>, <2 x double>) {
5733 ; CHECK: entry:
5734 ; CHECK-NEXT: %10 = extractelement <2 x double> %8, i32 0
5735 ; CHECK-NEXT: ret double %10
5736 ; CHECK-NEXT: }
5737
5738 define double @extract_20xdouble_at_17(<20 x double>) {
5739 entry:
5740 %1 = extractelement <20 x double> %0, i32 17
5741 ret double %1
5742 }
5743 ; CHECK-LABEL: define double @extract_20xdouble_at_17(<2 x double>, <2 x double> , <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x dou ble>, <2 x double>, <2 x double>) {
5744 ; CHECK: entry:
5745 ; CHECK-NEXT: %10 = extractelement <2 x double> %8, i32 1
5746 ; CHECK-NEXT: ret double %10
5747 ; CHECK-NEXT: }
5748
5749 define double @extract_20xdouble_at_18(<20 x double>) {
5750 entry:
5751 %1 = extractelement <20 x double> %0, i32 18
5752 ret double %1
5753 }
5754 ; CHECK-LABEL: define double @extract_20xdouble_at_18(<2 x double>, <2 x double> , <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x dou ble>, <2 x double>, <2 x double>) {
5755 ; CHECK: entry:
5756 ; CHECK-NEXT: %10 = extractelement <2 x double> %9, i32 0
5757 ; CHECK-NEXT: ret double %10
5758 ; CHECK-NEXT: }
5759
5760 define double @extract_20xdouble_at_19(<20 x double>) {
5761 entry:
5762 %1 = extractelement <20 x double> %0, i32 19
5763 ret double %1
5764 }
5765 ; CHECK-LABEL: define double @extract_20xdouble_at_19(<2 x double>, <2 x double> , <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x dou ble>, <2 x double>, <2 x double>) {
5766 ; CHECK: entry:
5767 ; CHECK-NEXT: %10 = extractelement <2 x double> %9, i32 1
5768 ; CHECK-NEXT: ret double %10
5769 ; CHECK-NEXT: }
5770
5771 define double @extract_20xdouble_undef_idx(<20 x double>) {
5772 entry:
5773 %1 = extractelement <20 x double> %0, i32 20
5774 ret double %1
5775 }
5776 ; CHECK-LABEL: define double @extract_20xdouble_undef_idx(<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>) {
5777 ; CHECK: entry:
5778 ; CHECK-NEXT: %10 = extractelement <2 x double> %9, i32 2
5779 ; CHECK-NEXT: ret double %10
5780 ; CHECK-NEXT: }
5781
5782 define i8 @extract_2xi8_var_idx(<2 x i8>, i32) {
5783 entry:
5784 %2 = extractelement <2 x i8> %0, i32 %1
5785 ret i8 %2
5786 }
5787 ; CHECK-LABEL: define i8 @extract_2xi8_var_idx(<16 x i8>, i32) {
5788 ; CHECK: entry:
5789 ; CHECK-NEXT: %2 = extractelement <16 x i8> %0, i32 %1
5790 ; CHECK-NEXT: ret i8 %2
5791 ; CHECK-NEXT: }
5792
5793 define i16 @extract_2xi16_var_idx(<2 x i16>, i32) {
5794 entry:
5795 %2 = extractelement <2 x i16> %0, i32 %1
5796 ret i16 %2
5797 }
5798 ; CHECK-LABEL: define i16 @extract_2xi16_var_idx(<8 x i16>, i32) {
5799 ; CHECK: entry:
5800 ; CHECK-NEXT: %2 = extractelement <8 x i16> %0, i32 %1
5801 ; CHECK-NEXT: ret i16 %2
5802 ; CHECK-NEXT: }
5803
5804 define i32 @extract_2xi32_var_idx(<2 x i32>, i32) {
5805 entry:
5806 %2 = extractelement <2 x i32> %0, i32 %1
5807 ret i32 %2
5808 }
5809 ; CHECK-LABEL: define i32 @extract_2xi32_var_idx(<4 x i32>, i32) {
5810 ; CHECK: entry:
5811 ; CHECK-NEXT: %2 = extractelement <4 x i32> %0, i32 %1
5812 ; CHECK-NEXT: ret i32 %2
5813 ; CHECK-NEXT: }
5814
5815 define i64 @extract_2xi64_var_idx(<2 x i64>, i32) {
5816 entry:
5817 %2 = extractelement <2 x i64> %0, i32 %1
5818 ret i64 %2
5819 }
5820 ; CHECK-LABEL: define i64 @extract_2xi64_var_idx(<2 x i64>, i32) {
5821 ; CHECK: entry:
5822 ; CHECK-NEXT: %2 = extractelement <2 x i64> %0, i32 %1
5823 ; CHECK-NEXT: ret i64 %2
5824 ; CHECK-NEXT: }
5825
5826 define i8* @extract_2xi8ptr_var_idx(<2 x i8*>, i32) {
5827 entry:
5828 %2 = extractelement <2 x i8*> %0, i32 %1
5829 ret i8* %2
5830 }
5831 ; CHECK-LABEL: define i8* @extract_2xi8ptr_var_idx(<4 x i8*>, i32) {
5832 ; CHECK: entry:
5833 ; CHECK-NEXT: %2 = extractelement <4 x i8*> %0, i32 %1
5834 ; CHECK-NEXT: ret i8* %2
5835 ; CHECK-NEXT: }
5836
5837 define float @extract_2xfloat_var_idx(<2 x float>, i32) {
5838 entry:
5839 %2 = extractelement <2 x float> %0, i32 %1
5840 ret float %2
5841 }
5842 ; CHECK-LABEL: define float @extract_2xfloat_var_idx(<4 x float>, i32) {
5843 ; CHECK: entry:
5844 ; CHECK-NEXT: %2 = extractelement <4 x float> %0, i32 %1
5845 ; CHECK-NEXT: ret float %2
5846 ; CHECK-NEXT: }
5847
5848 define double @extract_2xdouble_var_idx(<2 x double>, i32) {
5849 entry:
5850 %2 = extractelement <2 x double> %0, i32 %1
5851 ret double %2
5852 }
5853 ; CHECK-LABEL: define double @extract_2xdouble_var_idx(<2 x double>, i32) {
5854 ; CHECK: entry:
5855 ; CHECK-NEXT: %2 = extractelement <2 x double> %0, i32 %1
5856 ; CHECK-NEXT: ret double %2
5857 ; CHECK-NEXT: }
5858
5859 define i8 @extract_4xi8_var_idx(<4 x i8>, i32) {
5860 entry:
5861 %2 = extractelement <4 x i8> %0, i32 %1
5862 ret i8 %2
5863 }
5864 ; CHECK-LABEL: define i8 @extract_4xi8_var_idx(<16 x i8>, i32) {
5865 ; CHECK: entry:
5866 ; CHECK-NEXT: %2 = extractelement <16 x i8> %0, i32 %1
5867 ; CHECK-NEXT: ret i8 %2
5868 ; CHECK-NEXT: }
5869
5870 define i16 @extract_4xi16_var_idx(<4 x i16>, i32) {
5871 entry:
5872 %2 = extractelement <4 x i16> %0, i32 %1
5873 ret i16 %2
5874 }
5875 ; CHECK-LABEL: define i16 @extract_4xi16_var_idx(<8 x i16>, i32) {
5876 ; CHECK: entry:
5877 ; CHECK-NEXT: %2 = extractelement <8 x i16> %0, i32 %1
5878 ; CHECK-NEXT: ret i16 %2
5879 ; CHECK-NEXT: }
5880
5881 define i32 @extract_4xi32_var_idx(<4 x i32>, i32) {
5882 entry:
5883 %2 = extractelement <4 x i32> %0, i32 %1
5884 ret i32 %2
5885 }
5886 ; CHECK-LABEL: define i32 @extract_4xi32_var_idx(<4 x i32>, i32) {
5887 ; CHECK: entry:
5888 ; CHECK-NEXT: %2 = extractelement <4 x i32> %0, i32 %1
5889 ; CHECK-NEXT: ret i32 %2
5890 ; CHECK-NEXT: }
5891
5892 define i64 @extract_4xi64_var_idx(<4 x i64>, i32) {
5893 entry:
5894 %2 = extractelement <4 x i64> %0, i32 %1
5895 ret i64 %2
5896 }
5897 ; CHECK-LABEL: define i64 @extract_4xi64_var_idx(<2 x i64>, <2 x i64>, i32) {
5898 ; CHECK: entry:
5899 ; CHECK-NEXT: %3 = extractelement <2 x i64> %0, i32 0
5900 ; CHECK-NEXT: %4 = icmp eq i32 0, %2
5901 ; CHECK-NEXT: %5 = select i1 %4, i64 %3, i64 undef
5902 ; CHECK-NEXT: %6 = extractelement <2 x i64> %0, i32 1
5903 ; CHECK-NEXT: %7 = icmp eq i32 1, %2
5904 ; CHECK-NEXT: %8 = select i1 %7, i64 %6, i64 %5
5905 ; CHECK-NEXT: %9 = extractelement <2 x i64> %1, i32 0
5906 ; CHECK-NEXT: %10 = icmp eq i32 2, %2
5907 ; CHECK-NEXT: %11 = select i1 %10, i64 %9, i64 %8
5908 ; CHECK-NEXT: %12 = extractelement <2 x i64> %1, i32 1
5909 ; CHECK-NEXT: %13 = icmp eq i32 3, %2
5910 ; CHECK-NEXT: %14 = select i1 %13, i64 %12, i64 %11
5911 ; CHECK-NEXT: ret i64 %14
5912 ; CHECK-NEXT: }
5913
5914 define i8* @extract_4xi8ptr_var_idx(<4 x i8*>, i32) {
5915 entry:
5916 %2 = extractelement <4 x i8*> %0, i32 %1
5917 ret i8* %2
5918 }
5919 ; CHECK-LABEL: define i8* @extract_4xi8ptr_var_idx(<4 x i8*>, i32) {
5920 ; CHECK: entry:
5921 ; CHECK-NEXT: %2 = extractelement <4 x i8*> %0, i32 %1
5922 ; CHECK-NEXT: ret i8* %2
5923 ; CHECK-NEXT: }
5924
5925 define float @extract_4xfloat_var_idx(<4 x float>, i32) {
5926 entry:
5927 %2 = extractelement <4 x float> %0, i32 %1
5928 ret float %2
5929 }
5930 ; CHECK-LABEL: define float @extract_4xfloat_var_idx(<4 x float>, i32) {
5931 ; CHECK: entry:
5932 ; CHECK-NEXT: %2 = extractelement <4 x float> %0, i32 %1
5933 ; CHECK-NEXT: ret float %2
5934 ; CHECK-NEXT: }
5935
5936 define double @extract_4xdouble_var_idx(<4 x double>, i32) {
5937 entry:
5938 %2 = extractelement <4 x double> %0, i32 %1
5939 ret double %2
5940 }
5941 ; CHECK-LABEL: define double @extract_4xdouble_var_idx(<2 x double>, <2 x double >, i32) {
5942 ; CHECK: entry:
5943 ; CHECK-NEXT: %3 = extractelement <2 x double> %0, i32 0
5944 ; CHECK-NEXT: %4 = icmp eq i32 0, %2
5945 ; CHECK-NEXT: %5 = select i1 %4, double %3, double undef
5946 ; CHECK-NEXT: %6 = extractelement <2 x double> %0, i32 1
5947 ; CHECK-NEXT: %7 = icmp eq i32 1, %2
5948 ; CHECK-NEXT: %8 = select i1 %7, double %6, double %5
5949 ; CHECK-NEXT: %9 = extractelement <2 x double> %1, i32 0
5950 ; CHECK-NEXT: %10 = icmp eq i32 2, %2
5951 ; CHECK-NEXT: %11 = select i1 %10, double %9, double %8
5952 ; CHECK-NEXT: %12 = extractelement <2 x double> %1, i32 1
5953 ; CHECK-NEXT: %13 = icmp eq i32 3, %2
5954 ; CHECK-NEXT: %14 = select i1 %13, double %12, double %11
5955 ; CHECK-NEXT: ret double %14
5956 ; CHECK-NEXT: }
5957
5958 define i8 @extract_6xi8_var_idx(<6 x i8>, i32) {
5959 entry:
5960 %2 = extractelement <6 x i8> %0, i32 %1
5961 ret i8 %2
5962 }
5963 ; CHECK-LABEL: define i8 @extract_6xi8_var_idx(<16 x i8>, i32) {
5964 ; CHECK: entry:
5965 ; CHECK-NEXT: %2 = extractelement <16 x i8> %0, i32 %1
5966 ; CHECK-NEXT: ret i8 %2
5967 ; CHECK-NEXT: }
5968
5969 define i16 @extract_6xi16_var_idx(<6 x i16>, i32) {
5970 entry:
5971 %2 = extractelement <6 x i16> %0, i32 %1
5972 ret i16 %2
5973 }
5974 ; CHECK-LABEL: define i16 @extract_6xi16_var_idx(<8 x i16>, i32) {
5975 ; CHECK: entry:
5976 ; CHECK-NEXT: %2 = extractelement <8 x i16> %0, i32 %1
5977 ; CHECK-NEXT: ret i16 %2
5978 ; CHECK-NEXT: }
5979
5980 define i32 @extract_6xi32_var_idx(<6 x i32>, i32) {
5981 entry:
5982 %2 = extractelement <6 x i32> %0, i32 %1
5983 ret i32 %2
5984 }
5985 ; CHECK-LABEL: define i32 @extract_6xi32_var_idx(<4 x i32>, <4 x i32>, i32) {
5986 ; CHECK: entry:
5987 ; CHECK-NEXT: %3 = extractelement <4 x i32> %0, i32 0
5988 ; CHECK-NEXT: %4 = icmp eq i32 0, %2
5989 ; CHECK-NEXT: %5 = select i1 %4, i32 %3, i32 undef
5990 ; CHECK-NEXT: %6 = extractelement <4 x i32> %0, i32 1
5991 ; CHECK-NEXT: %7 = icmp eq i32 1, %2
5992 ; CHECK-NEXT: %8 = select i1 %7, i32 %6, i32 %5
5993 ; CHECK-NEXT: %9 = extractelement <4 x i32> %0, i32 2
5994 ; CHECK-NEXT: %10 = icmp eq i32 2, %2
5995 ; CHECK-NEXT: %11 = select i1 %10, i32 %9, i32 %8
5996 ; CHECK-NEXT: %12 = extractelement <4 x i32> %0, i32 3
5997 ; CHECK-NEXT: %13 = icmp eq i32 3, %2
5998 ; CHECK-NEXT: %14 = select i1 %13, i32 %12, i32 %11
5999 ; CHECK-NEXT: %15 = extractelement <4 x i32> %1, i32 0
6000 ; CHECK-NEXT: %16 = icmp eq i32 4, %2
6001 ; CHECK-NEXT: %17 = select i1 %16, i32 %15, i32 %14
6002 ; CHECK-NEXT: %18 = extractelement <4 x i32> %1, i32 1
6003 ; CHECK-NEXT: %19 = icmp eq i32 5, %2
6004 ; CHECK-NEXT: %20 = select i1 %19, i32 %18, i32 %17
6005 ; CHECK-NEXT: ret i32 %20
6006 ; CHECK-NEXT: }
6007
6008 define i64 @extract_6xi64_var_idx(<6 x i64>, i32) {
6009 entry:
6010 %2 = extractelement <6 x i64> %0, i32 %1
6011 ret i64 %2
6012 }
6013 ; CHECK-LABEL: define i64 @extract_6xi64_var_idx(<2 x i64>, <2 x i64>, <2 x i64> , i32) {
6014 ; CHECK: entry:
6015 ; CHECK-NEXT: %4 = extractelement <2 x i64> %0, i32 0
6016 ; CHECK-NEXT: %5 = icmp eq i32 0, %3
6017 ; CHECK-NEXT: %6 = select i1 %5, i64 %4, i64 undef
6018 ; CHECK-NEXT: %7 = extractelement <2 x i64> %0, i32 1
6019 ; CHECK-NEXT: %8 = icmp eq i32 1, %3
6020 ; CHECK-NEXT: %9 = select i1 %8, i64 %7, i64 %6
6021 ; CHECK-NEXT: %10 = extractelement <2 x i64> %1, i32 0
6022 ; CHECK-NEXT: %11 = icmp eq i32 2, %3
6023 ; CHECK-NEXT: %12 = select i1 %11, i64 %10, i64 %9
6024 ; CHECK-NEXT: %13 = extractelement <2 x i64> %1, i32 1
6025 ; CHECK-NEXT: %14 = icmp eq i32 3, %3
6026 ; CHECK-NEXT: %15 = select i1 %14, i64 %13, i64 %12
6027 ; CHECK-NEXT: %16 = extractelement <2 x i64> %2, i32 0
6028 ; CHECK-NEXT: %17 = icmp eq i32 4, %3
6029 ; CHECK-NEXT: %18 = select i1 %17, i64 %16, i64 %15
6030 ; CHECK-NEXT: %19 = extractelement <2 x i64> %2, i32 1
6031 ; CHECK-NEXT: %20 = icmp eq i32 5, %3
6032 ; CHECK-NEXT: %21 = select i1 %20, i64 %19, i64 %18
6033 ; CHECK-NEXT: ret i64 %21
6034 ; CHECK-NEXT: }
6035
6036 define i8* @extract_6xi8ptr_var_idx(<6 x i8*>, i32) {
6037 entry:
6038 %2 = extractelement <6 x i8*> %0, i32 %1
6039 ret i8* %2
6040 }
6041 ; CHECK-LABEL: define i8* @extract_6xi8ptr_var_idx(<4 x i8*>, <4 x i8*>, i32) {
6042 ; CHECK: entry:
6043 ; CHECK-NEXT: %3 = extractelement <4 x i8*> %0, i32 0
6044 ; CHECK-NEXT: %4 = icmp eq i32 0, %2
6045 ; CHECK-NEXT: %5 = select i1 %4, i8* %3, i8* undef
6046 ; CHECK-NEXT: %6 = extractelement <4 x i8*> %0, i32 1
6047 ; CHECK-NEXT: %7 = icmp eq i32 1, %2
6048 ; CHECK-NEXT: %8 = select i1 %7, i8* %6, i8* %5
6049 ; CHECK-NEXT: %9 = extractelement <4 x i8*> %0, i32 2
6050 ; CHECK-NEXT: %10 = icmp eq i32 2, %2
6051 ; CHECK-NEXT: %11 = select i1 %10, i8* %9, i8* %8
6052 ; CHECK-NEXT: %12 = extractelement <4 x i8*> %0, i32 3
6053 ; CHECK-NEXT: %13 = icmp eq i32 3, %2
6054 ; CHECK-NEXT: %14 = select i1 %13, i8* %12, i8* %11
6055 ; CHECK-NEXT: %15 = extractelement <4 x i8*> %1, i32 0
6056 ; CHECK-NEXT: %16 = icmp eq i32 4, %2
6057 ; CHECK-NEXT: %17 = select i1 %16, i8* %15, i8* %14
6058 ; CHECK-NEXT: %18 = extractelement <4 x i8*> %1, i32 1
6059 ; CHECK-NEXT: %19 = icmp eq i32 5, %2
6060 ; CHECK-NEXT: %20 = select i1 %19, i8* %18, i8* %17
6061 ; CHECK-NEXT: ret i8* %20
6062 ; CHECK-NEXT: }
6063
6064 define float @extract_6xfloat_var_idx(<6 x float>, i32) {
6065 entry:
6066 %2 = extractelement <6 x float> %0, i32 %1
6067 ret float %2
6068 }
6069 ; CHECK-LABEL: define float @extract_6xfloat_var_idx(<4 x float>, <4 x float>, i 32) {
6070 ; CHECK: entry:
6071 ; CHECK-NEXT: %3 = extractelement <4 x float> %0, i32 0
6072 ; CHECK-NEXT: %4 = icmp eq i32 0, %2
6073 ; CHECK-NEXT: %5 = select i1 %4, float %3, float undef
6074 ; CHECK-NEXT: %6 = extractelement <4 x float> %0, i32 1
6075 ; CHECK-NEXT: %7 = icmp eq i32 1, %2
6076 ; CHECK-NEXT: %8 = select i1 %7, float %6, float %5
6077 ; CHECK-NEXT: %9 = extractelement <4 x float> %0, i32 2
6078 ; CHECK-NEXT: %10 = icmp eq i32 2, %2
6079 ; CHECK-NEXT: %11 = select i1 %10, float %9, float %8
6080 ; CHECK-NEXT: %12 = extractelement <4 x float> %0, i32 3
6081 ; CHECK-NEXT: %13 = icmp eq i32 3, %2
6082 ; CHECK-NEXT: %14 = select i1 %13, float %12, float %11
6083 ; CHECK-NEXT: %15 = extractelement <4 x float> %1, i32 0
6084 ; CHECK-NEXT: %16 = icmp eq i32 4, %2
6085 ; CHECK-NEXT: %17 = select i1 %16, float %15, float %14
6086 ; CHECK-NEXT: %18 = extractelement <4 x float> %1, i32 1
6087 ; CHECK-NEXT: %19 = icmp eq i32 5, %2
6088 ; CHECK-NEXT: %20 = select i1 %19, float %18, float %17
6089 ; CHECK-NEXT: ret float %20
6090 ; CHECK-NEXT: }
6091
6092 define double @extract_6xdouble_var_idx(<6 x double>, i32) {
6093 entry:
6094 %2 = extractelement <6 x double> %0, i32 %1
6095 ret double %2
6096 }
6097 ; CHECK-LABEL: define double @extract_6xdouble_var_idx(<2 x double>, <2 x double >, <2 x double>, i32) {
6098 ; CHECK: entry:
6099 ; CHECK-NEXT: %4 = extractelement <2 x double> %0, i32 0
6100 ; CHECK-NEXT: %5 = icmp eq i32 0, %3
6101 ; CHECK-NEXT: %6 = select i1 %5, double %4, double undef
6102 ; CHECK-NEXT: %7 = extractelement <2 x double> %0, i32 1
6103 ; CHECK-NEXT: %8 = icmp eq i32 1, %3
6104 ; CHECK-NEXT: %9 = select i1 %8, double %7, double %6
6105 ; CHECK-NEXT: %10 = extractelement <2 x double> %1, i32 0
6106 ; CHECK-NEXT: %11 = icmp eq i32 2, %3
6107 ; CHECK-NEXT: %12 = select i1 %11, double %10, double %9
6108 ; CHECK-NEXT: %13 = extractelement <2 x double> %1, i32 1
6109 ; CHECK-NEXT: %14 = icmp eq i32 3, %3
6110 ; CHECK-NEXT: %15 = select i1 %14, double %13, double %12
6111 ; CHECK-NEXT: %16 = extractelement <2 x double> %2, i32 0
6112 ; CHECK-NEXT: %17 = icmp eq i32 4, %3
6113 ; CHECK-NEXT: %18 = select i1 %17, double %16, double %15
6114 ; CHECK-NEXT: %19 = extractelement <2 x double> %2, i32 1
6115 ; CHECK-NEXT: %20 = icmp eq i32 5, %3
6116 ; CHECK-NEXT: %21 = select i1 %20, double %19, double %18
6117 ; CHECK-NEXT: ret double %21
6118 ; CHECK-NEXT: }
6119
6120 define i8 @extract_8xi8_var_idx(<8 x i8>, i32) {
6121 entry:
6122 %2 = extractelement <8 x i8> %0, i32 %1
6123 ret i8 %2
6124 }
6125 ; CHECK-LABEL: define i8 @extract_8xi8_var_idx(<16 x i8>, i32) {
6126 ; CHECK: entry:
6127 ; CHECK-NEXT: %2 = extractelement <16 x i8> %0, i32 %1
6128 ; CHECK-NEXT: ret i8 %2
6129 ; CHECK-NEXT: }
6130
6131 define i16 @extract_8xi16_var_idx(<8 x i16>, i32) {
6132 entry:
6133 %2 = extractelement <8 x i16> %0, i32 %1
6134 ret i16 %2
6135 }
6136 ; CHECK-LABEL: define i16 @extract_8xi16_var_idx(<8 x i16>, i32) {
6137 ; CHECK: entry:
6138 ; CHECK-NEXT: %2 = extractelement <8 x i16> %0, i32 %1
6139 ; CHECK-NEXT: ret i16 %2
6140 ; CHECK-NEXT: }
6141
6142 define i32 @extract_8xi32_var_idx(<8 x i32>, i32) {
6143 entry:
6144 %2 = extractelement <8 x i32> %0, i32 %1
6145 ret i32 %2
6146 }
6147 ; CHECK-LABEL: define i32 @extract_8xi32_var_idx(<4 x i32>, <4 x i32>, i32) {
6148 ; CHECK: entry:
6149 ; CHECK-NEXT: %3 = extractelement <4 x i32> %0, i32 0
6150 ; CHECK-NEXT: %4 = icmp eq i32 0, %2
6151 ; CHECK-NEXT: %5 = select i1 %4, i32 %3, i32 undef
6152 ; CHECK-NEXT: %6 = extractelement <4 x i32> %0, i32 1
6153 ; CHECK-NEXT: %7 = icmp eq i32 1, %2
6154 ; CHECK-NEXT: %8 = select i1 %7, i32 %6, i32 %5
6155 ; CHECK-NEXT: %9 = extractelement <4 x i32> %0, i32 2
6156 ; CHECK-NEXT: %10 = icmp eq i32 2, %2
6157 ; CHECK-NEXT: %11 = select i1 %10, i32 %9, i32 %8
6158 ; CHECK-NEXT: %12 = extractelement <4 x i32> %0, i32 3
6159 ; CHECK-NEXT: %13 = icmp eq i32 3, %2
6160 ; CHECK-NEXT: %14 = select i1 %13, i32 %12, i32 %11
6161 ; CHECK-NEXT: %15 = extractelement <4 x i32> %1, i32 0
6162 ; CHECK-NEXT: %16 = icmp eq i32 4, %2
6163 ; CHECK-NEXT: %17 = select i1 %16, i32 %15, i32 %14
6164 ; CHECK-NEXT: %18 = extractelement <4 x i32> %1, i32 1
6165 ; CHECK-NEXT: %19 = icmp eq i32 5, %2
6166 ; CHECK-NEXT: %20 = select i1 %19, i32 %18, i32 %17
6167 ; CHECK-NEXT: %21 = extractelement <4 x i32> %1, i32 2
6168 ; CHECK-NEXT: %22 = icmp eq i32 6, %2
6169 ; CHECK-NEXT: %23 = select i1 %22, i32 %21, i32 %20
6170 ; CHECK-NEXT: %24 = extractelement <4 x i32> %1, i32 3
6171 ; CHECK-NEXT: %25 = icmp eq i32 7, %2
6172 ; CHECK-NEXT: %26 = select i1 %25, i32 %24, i32 %23
6173 ; CHECK-NEXT: ret i32 %26
6174 ; CHECK-NEXT: }
6175
6176 define i64 @extract_8xi64_var_idx(<8 x i64>, i32) {
6177 entry:
6178 %2 = extractelement <8 x i64> %0, i32 %1
6179 ret i64 %2
6180 }
6181 ; CHECK-LABEL: define i64 @extract_8xi64_var_idx(<2 x i64>, <2 x i64>, <2 x i64> , <2 x i64>, i32) {
6182 ; CHECK: entry:
6183 ; CHECK-NEXT: %5 = extractelement <2 x i64> %0, i32 0
6184 ; CHECK-NEXT: %6 = icmp eq i32 0, %4
6185 ; CHECK-NEXT: %7 = select i1 %6, i64 %5, i64 undef
6186 ; CHECK-NEXT: %8 = extractelement <2 x i64> %0, i32 1
6187 ; CHECK-NEXT: %9 = icmp eq i32 1, %4
6188 ; CHECK-NEXT: %10 = select i1 %9, i64 %8, i64 %7
6189 ; CHECK-NEXT: %11 = extractelement <2 x i64> %1, i32 0
6190 ; CHECK-NEXT: %12 = icmp eq i32 2, %4
6191 ; CHECK-NEXT: %13 = select i1 %12, i64 %11, i64 %10
6192 ; CHECK-NEXT: %14 = extractelement <2 x i64> %1, i32 1
6193 ; CHECK-NEXT: %15 = icmp eq i32 3, %4
6194 ; CHECK-NEXT: %16 = select i1 %15, i64 %14, i64 %13
6195 ; CHECK-NEXT: %17 = extractelement <2 x i64> %2, i32 0
6196 ; CHECK-NEXT: %18 = icmp eq i32 4, %4
6197 ; CHECK-NEXT: %19 = select i1 %18, i64 %17, i64 %16
6198 ; CHECK-NEXT: %20 = extractelement <2 x i64> %2, i32 1
6199 ; CHECK-NEXT: %21 = icmp eq i32 5, %4
6200 ; CHECK-NEXT: %22 = select i1 %21, i64 %20, i64 %19
6201 ; CHECK-NEXT: %23 = extractelement <2 x i64> %3, i32 0
6202 ; CHECK-NEXT: %24 = icmp eq i32 6, %4
6203 ; CHECK-NEXT: %25 = select i1 %24, i64 %23, i64 %22
6204 ; CHECK-NEXT: %26 = extractelement <2 x i64> %3, i32 1
6205 ; CHECK-NEXT: %27 = icmp eq i32 7, %4
6206 ; CHECK-NEXT: %28 = select i1 %27, i64 %26, i64 %25
6207 ; CHECK-NEXT: ret i64 %28
6208 ; CHECK-NEXT: }
6209
6210 define i8* @extract_8xi8ptr_var_idx(<8 x i8*>, i32) {
6211 entry:
6212 %2 = extractelement <8 x i8*> %0, i32 %1
6213 ret i8* %2
6214 }
6215 ; CHECK-LABEL: define i8* @extract_8xi8ptr_var_idx(<4 x i8*>, <4 x i8*>, i32) {
6216 ; CHECK: entry:
6217 ; CHECK-NEXT: %3 = extractelement <4 x i8*> %0, i32 0
6218 ; CHECK-NEXT: %4 = icmp eq i32 0, %2
6219 ; CHECK-NEXT: %5 = select i1 %4, i8* %3, i8* undef
6220 ; CHECK-NEXT: %6 = extractelement <4 x i8*> %0, i32 1
6221 ; CHECK-NEXT: %7 = icmp eq i32 1, %2
6222 ; CHECK-NEXT: %8 = select i1 %7, i8* %6, i8* %5
6223 ; CHECK-NEXT: %9 = extractelement <4 x i8*> %0, i32 2
6224 ; CHECK-NEXT: %10 = icmp eq i32 2, %2
6225 ; CHECK-NEXT: %11 = select i1 %10, i8* %9, i8* %8
6226 ; CHECK-NEXT: %12 = extractelement <4 x i8*> %0, i32 3
6227 ; CHECK-NEXT: %13 = icmp eq i32 3, %2
6228 ; CHECK-NEXT: %14 = select i1 %13, i8* %12, i8* %11
6229 ; CHECK-NEXT: %15 = extractelement <4 x i8*> %1, i32 0
6230 ; CHECK-NEXT: %16 = icmp eq i32 4, %2
6231 ; CHECK-NEXT: %17 = select i1 %16, i8* %15, i8* %14
6232 ; CHECK-NEXT: %18 = extractelement <4 x i8*> %1, i32 1
6233 ; CHECK-NEXT: %19 = icmp eq i32 5, %2
6234 ; CHECK-NEXT: %20 = select i1 %19, i8* %18, i8* %17
6235 ; CHECK-NEXT: %21 = extractelement <4 x i8*> %1, i32 2
6236 ; CHECK-NEXT: %22 = icmp eq i32 6, %2
6237 ; CHECK-NEXT: %23 = select i1 %22, i8* %21, i8* %20
6238 ; CHECK-NEXT: %24 = extractelement <4 x i8*> %1, i32 3
6239 ; CHECK-NEXT: %25 = icmp eq i32 7, %2
6240 ; CHECK-NEXT: %26 = select i1 %25, i8* %24, i8* %23
6241 ; CHECK-NEXT: ret i8* %26
6242 ; CHECK-NEXT: }
6243
6244 define float @extract_8xfloat_var_idx(<8 x float>, i32) {
6245 entry:
6246 %2 = extractelement <8 x float> %0, i32 %1
6247 ret float %2
6248 }
6249 ; CHECK-LABEL: define float @extract_8xfloat_var_idx(<4 x float>, <4 x float>, i 32) {
6250 ; CHECK: entry:
6251 ; CHECK-NEXT: %3 = extractelement <4 x float> %0, i32 0
6252 ; CHECK-NEXT: %4 = icmp eq i32 0, %2
6253 ; CHECK-NEXT: %5 = select i1 %4, float %3, float undef
6254 ; CHECK-NEXT: %6 = extractelement <4 x float> %0, i32 1
6255 ; CHECK-NEXT: %7 = icmp eq i32 1, %2
6256 ; CHECK-NEXT: %8 = select i1 %7, float %6, float %5
6257 ; CHECK-NEXT: %9 = extractelement <4 x float> %0, i32 2
6258 ; CHECK-NEXT: %10 = icmp eq i32 2, %2
6259 ; CHECK-NEXT: %11 = select i1 %10, float %9, float %8
6260 ; CHECK-NEXT: %12 = extractelement <4 x float> %0, i32 3
6261 ; CHECK-NEXT: %13 = icmp eq i32 3, %2
6262 ; CHECK-NEXT: %14 = select i1 %13, float %12, float %11
6263 ; CHECK-NEXT: %15 = extractelement <4 x float> %1, i32 0
6264 ; CHECK-NEXT: %16 = icmp eq i32 4, %2
6265 ; CHECK-NEXT: %17 = select i1 %16, float %15, float %14
6266 ; CHECK-NEXT: %18 = extractelement <4 x float> %1, i32 1
6267 ; CHECK-NEXT: %19 = icmp eq i32 5, %2
6268 ; CHECK-NEXT: %20 = select i1 %19, float %18, float %17
6269 ; CHECK-NEXT: %21 = extractelement <4 x float> %1, i32 2
6270 ; CHECK-NEXT: %22 = icmp eq i32 6, %2
6271 ; CHECK-NEXT: %23 = select i1 %22, float %21, float %20
6272 ; CHECK-NEXT: %24 = extractelement <4 x float> %1, i32 3
6273 ; CHECK-NEXT: %25 = icmp eq i32 7, %2
6274 ; CHECK-NEXT: %26 = select i1 %25, float %24, float %23
6275 ; CHECK-NEXT: ret float %26
6276 ; CHECK-NEXT: }
6277
6278 define double @extract_8xdouble_var_idx(<8 x double>, i32) {
6279 entry:
6280 %2 = extractelement <8 x double> %0, i32 %1
6281 ret double %2
6282 }
6283 ; CHECK-LABEL: define double @extract_8xdouble_var_idx(<2 x double>, <2 x double >, <2 x double>, <2 x double>, i32) {
6284 ; CHECK: entry:
6285 ; CHECK-NEXT: %5 = extractelement <2 x double> %0, i32 0
6286 ; CHECK-NEXT: %6 = icmp eq i32 0, %4
6287 ; CHECK-NEXT: %7 = select i1 %6, double %5, double undef
6288 ; CHECK-NEXT: %8 = extractelement <2 x double> %0, i32 1
6289 ; CHECK-NEXT: %9 = icmp eq i32 1, %4
6290 ; CHECK-NEXT: %10 = select i1 %9, double %8, double %7
6291 ; CHECK-NEXT: %11 = extractelement <2 x double> %1, i32 0
6292 ; CHECK-NEXT: %12 = icmp eq i32 2, %4
6293 ; CHECK-NEXT: %13 = select i1 %12, double %11, double %10
6294 ; CHECK-NEXT: %14 = extractelement <2 x double> %1, i32 1
6295 ; CHECK-NEXT: %15 = icmp eq i32 3, %4
6296 ; CHECK-NEXT: %16 = select i1 %15, double %14, double %13
6297 ; CHECK-NEXT: %17 = extractelement <2 x double> %2, i32 0
6298 ; CHECK-NEXT: %18 = icmp eq i32 4, %4
6299 ; CHECK-NEXT: %19 = select i1 %18, double %17, double %16
6300 ; CHECK-NEXT: %20 = extractelement <2 x double> %2, i32 1
6301 ; CHECK-NEXT: %21 = icmp eq i32 5, %4
6302 ; CHECK-NEXT: %22 = select i1 %21, double %20, double %19
6303 ; CHECK-NEXT: %23 = extractelement <2 x double> %3, i32 0
6304 ; CHECK-NEXT: %24 = icmp eq i32 6, %4
6305 ; CHECK-NEXT: %25 = select i1 %24, double %23, double %22
6306 ; CHECK-NEXT: %26 = extractelement <2 x double> %3, i32 1
6307 ; CHECK-NEXT: %27 = icmp eq i32 7, %4
6308 ; CHECK-NEXT: %28 = select i1 %27, double %26, double %25
6309 ; CHECK-NEXT: ret double %28
6310 ; CHECK-NEXT: }
6311
6312 define i8 @extract_12xi8_var_idx(<12 x i8>, i32) {
6313 entry:
6314 %2 = extractelement <12 x i8> %0, i32 %1
6315 ret i8 %2
6316 }
6317 ; CHECK-LABEL: define i8 @extract_12xi8_var_idx(<16 x i8>, i32) {
6318 ; CHECK: entry:
6319 ; CHECK-NEXT: %2 = extractelement <16 x i8> %0, i32 %1
6320 ; CHECK-NEXT: ret i8 %2
6321 ; CHECK-NEXT: }
6322
6323 define i16 @extract_12xi16_var_idx(<12 x i16>, i32) {
6324 entry:
6325 %2 = extractelement <12 x i16> %0, i32 %1
6326 ret i16 %2
6327 }
6328 ; CHECK-LABEL: define i16 @extract_12xi16_var_idx(<8 x i16>, <8 x i16>, i32) {
6329 ; CHECK: entry:
6330 ; CHECK-NEXT: %3 = extractelement <8 x i16> %0, i32 0
6331 ; CHECK-NEXT: %4 = icmp eq i32 0, %2
6332 ; CHECK-NEXT: %5 = select i1 %4, i16 %3, i16 undef
6333 ; CHECK-NEXT: %6 = extractelement <8 x i16> %0, i32 1
6334 ; CHECK-NEXT: %7 = icmp eq i32 1, %2
6335 ; CHECK-NEXT: %8 = select i1 %7, i16 %6, i16 %5
6336 ; CHECK-NEXT: %9 = extractelement <8 x i16> %0, i32 2
6337 ; CHECK-NEXT: %10 = icmp eq i32 2, %2
6338 ; CHECK-NEXT: %11 = select i1 %10, i16 %9, i16 %8
6339 ; CHECK-NEXT: %12 = extractelement <8 x i16> %0, i32 3
6340 ; CHECK-NEXT: %13 = icmp eq i32 3, %2
6341 ; CHECK-NEXT: %14 = select i1 %13, i16 %12, i16 %11
6342 ; CHECK-NEXT: %15 = extractelement <8 x i16> %0, i32 4
6343 ; CHECK-NEXT: %16 = icmp eq i32 4, %2
6344 ; CHECK-NEXT: %17 = select i1 %16, i16 %15, i16 %14
6345 ; CHECK-NEXT: %18 = extractelement <8 x i16> %0, i32 5
6346 ; CHECK-NEXT: %19 = icmp eq i32 5, %2
6347 ; CHECK-NEXT: %20 = select i1 %19, i16 %18, i16 %17
6348 ; CHECK-NEXT: %21 = extractelement <8 x i16> %0, i32 6
6349 ; CHECK-NEXT: %22 = icmp eq i32 6, %2
6350 ; CHECK-NEXT: %23 = select i1 %22, i16 %21, i16 %20
6351 ; CHECK-NEXT: %24 = extractelement <8 x i16> %0, i32 7
6352 ; CHECK-NEXT: %25 = icmp eq i32 7, %2
6353 ; CHECK-NEXT: %26 = select i1 %25, i16 %24, i16 %23
6354 ; CHECK-NEXT: %27 = extractelement <8 x i16> %1, i32 0
6355 ; CHECK-NEXT: %28 = icmp eq i32 8, %2
6356 ; CHECK-NEXT: %29 = select i1 %28, i16 %27, i16 %26
6357 ; CHECK-NEXT: %30 = extractelement <8 x i16> %1, i32 1
6358 ; CHECK-NEXT: %31 = icmp eq i32 9, %2
6359 ; CHECK-NEXT: %32 = select i1 %31, i16 %30, i16 %29
6360 ; CHECK-NEXT: %33 = extractelement <8 x i16> %1, i32 2
6361 ; CHECK-NEXT: %34 = icmp eq i32 10, %2
6362 ; CHECK-NEXT: %35 = select i1 %34, i16 %33, i16 %32
6363 ; CHECK-NEXT: %36 = extractelement <8 x i16> %1, i32 3
6364 ; CHECK-NEXT: %37 = icmp eq i32 11, %2
6365 ; CHECK-NEXT: %38 = select i1 %37, i16 %36, i16 %35
6366 ; CHECK-NEXT: ret i16 %38
6367 ; CHECK-NEXT: }
6368
6369 define i32 @extract_12xi32_var_idx(<12 x i32>, i32) {
6370 entry:
6371 %2 = extractelement <12 x i32> %0, i32 %1
6372 ret i32 %2
6373 }
6374 ; CHECK-LABEL: define i32 @extract_12xi32_var_idx(<4 x i32>, <4 x i32>, <4 x i32 >, i32) {
6375 ; CHECK: entry:
6376 ; CHECK-NEXT: %4 = extractelement <4 x i32> %0, i32 0
6377 ; CHECK-NEXT: %5 = icmp eq i32 0, %3
6378 ; CHECK-NEXT: %6 = select i1 %5, i32 %4, i32 undef
6379 ; CHECK-NEXT: %7 = extractelement <4 x i32> %0, i32 1
6380 ; CHECK-NEXT: %8 = icmp eq i32 1, %3
6381 ; CHECK-NEXT: %9 = select i1 %8, i32 %7, i32 %6
6382 ; CHECK-NEXT: %10 = extractelement <4 x i32> %0, i32 2
6383 ; CHECK-NEXT: %11 = icmp eq i32 2, %3
6384 ; CHECK-NEXT: %12 = select i1 %11, i32 %10, i32 %9
6385 ; CHECK-NEXT: %13 = extractelement <4 x i32> %0, i32 3
6386 ; CHECK-NEXT: %14 = icmp eq i32 3, %3
6387 ; CHECK-NEXT: %15 = select i1 %14, i32 %13, i32 %12
6388 ; CHECK-NEXT: %16 = extractelement <4 x i32> %1, i32 0
6389 ; CHECK-NEXT: %17 = icmp eq i32 4, %3
6390 ; CHECK-NEXT: %18 = select i1 %17, i32 %16, i32 %15
6391 ; CHECK-NEXT: %19 = extractelement <4 x i32> %1, i32 1
6392 ; CHECK-NEXT: %20 = icmp eq i32 5, %3
6393 ; CHECK-NEXT: %21 = select i1 %20, i32 %19, i32 %18
6394 ; CHECK-NEXT: %22 = extractelement <4 x i32> %1, i32 2
6395 ; CHECK-NEXT: %23 = icmp eq i32 6, %3
6396 ; CHECK-NEXT: %24 = select i1 %23, i32 %22, i32 %21
6397 ; CHECK-NEXT: %25 = extractelement <4 x i32> %1, i32 3
6398 ; CHECK-NEXT: %26 = icmp eq i32 7, %3
6399 ; CHECK-NEXT: %27 = select i1 %26, i32 %25, i32 %24
6400 ; CHECK-NEXT: %28 = extractelement <4 x i32> %2, i32 0
6401 ; CHECK-NEXT: %29 = icmp eq i32 8, %3
6402 ; CHECK-NEXT: %30 = select i1 %29, i32 %28, i32 %27
6403 ; CHECK-NEXT: %31 = extractelement <4 x i32> %2, i32 1
6404 ; CHECK-NEXT: %32 = icmp eq i32 9, %3
6405 ; CHECK-NEXT: %33 = select i1 %32, i32 %31, i32 %30
6406 ; CHECK-NEXT: %34 = extractelement <4 x i32> %2, i32 2
6407 ; CHECK-NEXT: %35 = icmp eq i32 10, %3
6408 ; CHECK-NEXT: %36 = select i1 %35, i32 %34, i32 %33
6409 ; CHECK-NEXT: %37 = extractelement <4 x i32> %2, i32 3
6410 ; CHECK-NEXT: %38 = icmp eq i32 11, %3
6411 ; CHECK-NEXT: %39 = select i1 %38, i32 %37, i32 %36
6412 ; CHECK-NEXT: ret i32 %39
6413 ; CHECK-NEXT: }
6414
6415 define i64 @extract_12xi64_var_idx(<12 x i64>, i32) {
6416 entry:
6417 %2 = extractelement <12 x i64> %0, i32 %1
6418 ret i64 %2
6419 }
6420 ; CHECK-LABEL: define i64 @extract_12xi64_var_idx(<2 x i64>, <2 x i64>, <2 x i64 >, <2 x i64>, <2 x i64>, <2 x i64>, i32) {
6421 ; CHECK: entry:
6422 ; CHECK-NEXT: %7 = extractelement <2 x i64> %0, i32 0
6423 ; CHECK-NEXT: %8 = icmp eq i32 0, %6
6424 ; CHECK-NEXT: %9 = select i1 %8, i64 %7, i64 undef
6425 ; CHECK-NEXT: %10 = extractelement <2 x i64> %0, i32 1
6426 ; CHECK-NEXT: %11 = icmp eq i32 1, %6
6427 ; CHECK-NEXT: %12 = select i1 %11, i64 %10, i64 %9
6428 ; CHECK-NEXT: %13 = extractelement <2 x i64> %1, i32 0
6429 ; CHECK-NEXT: %14 = icmp eq i32 2, %6
6430 ; CHECK-NEXT: %15 = select i1 %14, i64 %13, i64 %12
6431 ; CHECK-NEXT: %16 = extractelement <2 x i64> %1, i32 1
6432 ; CHECK-NEXT: %17 = icmp eq i32 3, %6
6433 ; CHECK-NEXT: %18 = select i1 %17, i64 %16, i64 %15
6434 ; CHECK-NEXT: %19 = extractelement <2 x i64> %2, i32 0
6435 ; CHECK-NEXT: %20 = icmp eq i32 4, %6
6436 ; CHECK-NEXT: %21 = select i1 %20, i64 %19, i64 %18
6437 ; CHECK-NEXT: %22 = extractelement <2 x i64> %2, i32 1
6438 ; CHECK-NEXT: %23 = icmp eq i32 5, %6
6439 ; CHECK-NEXT: %24 = select i1 %23, i64 %22, i64 %21
6440 ; CHECK-NEXT: %25 = extractelement <2 x i64> %3, i32 0
6441 ; CHECK-NEXT: %26 = icmp eq i32 6, %6
6442 ; CHECK-NEXT: %27 = select i1 %26, i64 %25, i64 %24
6443 ; CHECK-NEXT: %28 = extractelement <2 x i64> %3, i32 1
6444 ; CHECK-NEXT: %29 = icmp eq i32 7, %6
6445 ; CHECK-NEXT: %30 = select i1 %29, i64 %28, i64 %27
6446 ; CHECK-NEXT: %31 = extractelement <2 x i64> %4, i32 0
6447 ; CHECK-NEXT: %32 = icmp eq i32 8, %6
6448 ; CHECK-NEXT: %33 = select i1 %32, i64 %31, i64 %30
6449 ; CHECK-NEXT: %34 = extractelement <2 x i64> %4, i32 1
6450 ; CHECK-NEXT: %35 = icmp eq i32 9, %6
6451 ; CHECK-NEXT: %36 = select i1 %35, i64 %34, i64 %33
6452 ; CHECK-NEXT: %37 = extractelement <2 x i64> %5, i32 0
6453 ; CHECK-NEXT: %38 = icmp eq i32 10, %6
6454 ; CHECK-NEXT: %39 = select i1 %38, i64 %37, i64 %36
6455 ; CHECK-NEXT: %40 = extractelement <2 x i64> %5, i32 1
6456 ; CHECK-NEXT: %41 = icmp eq i32 11, %6
6457 ; CHECK-NEXT: %42 = select i1 %41, i64 %40, i64 %39
6458 ; CHECK-NEXT: ret i64 %42
6459 ; CHECK-NEXT: }
6460
6461 define i8* @extract_12xi8ptr_var_idx(<12 x i8*>, i32) {
6462 entry:
6463 %2 = extractelement <12 x i8*> %0, i32 %1
6464 ret i8* %2
6465 }
6466 ; CHECK-LABEL: define i8* @extract_12xi8ptr_var_idx(<4 x i8*>, <4 x i8*>, <4 x i 8*>, i32) {
6467 ; CHECK: entry:
6468 ; CHECK-NEXT: %4 = extractelement <4 x i8*> %0, i32 0
6469 ; CHECK-NEXT: %5 = icmp eq i32 0, %3
6470 ; CHECK-NEXT: %6 = select i1 %5, i8* %4, i8* undef
6471 ; CHECK-NEXT: %7 = extractelement <4 x i8*> %0, i32 1
6472 ; CHECK-NEXT: %8 = icmp eq i32 1, %3
6473 ; CHECK-NEXT: %9 = select i1 %8, i8* %7, i8* %6
6474 ; CHECK-NEXT: %10 = extractelement <4 x i8*> %0, i32 2
6475 ; CHECK-NEXT: %11 = icmp eq i32 2, %3
6476 ; CHECK-NEXT: %12 = select i1 %11, i8* %10, i8* %9
6477 ; CHECK-NEXT: %13 = extractelement <4 x i8*> %0, i32 3
6478 ; CHECK-NEXT: %14 = icmp eq i32 3, %3
6479 ; CHECK-NEXT: %15 = select i1 %14, i8* %13, i8* %12
6480 ; CHECK-NEXT: %16 = extractelement <4 x i8*> %1, i32 0
6481 ; CHECK-NEXT: %17 = icmp eq i32 4, %3
6482 ; CHECK-NEXT: %18 = select i1 %17, i8* %16, i8* %15
6483 ; CHECK-NEXT: %19 = extractelement <4 x i8*> %1, i32 1
6484 ; CHECK-NEXT: %20 = icmp eq i32 5, %3
6485 ; CHECK-NEXT: %21 = select i1 %20, i8* %19, i8* %18
6486 ; CHECK-NEXT: %22 = extractelement <4 x i8*> %1, i32 2
6487 ; CHECK-NEXT: %23 = icmp eq i32 6, %3
6488 ; CHECK-NEXT: %24 = select i1 %23, i8* %22, i8* %21
6489 ; CHECK-NEXT: %25 = extractelement <4 x i8*> %1, i32 3
6490 ; CHECK-NEXT: %26 = icmp eq i32 7, %3
6491 ; CHECK-NEXT: %27 = select i1 %26, i8* %25, i8* %24
6492 ; CHECK-NEXT: %28 = extractelement <4 x i8*> %2, i32 0
6493 ; CHECK-NEXT: %29 = icmp eq i32 8, %3
6494 ; CHECK-NEXT: %30 = select i1 %29, i8* %28, i8* %27
6495 ; CHECK-NEXT: %31 = extractelement <4 x i8*> %2, i32 1
6496 ; CHECK-NEXT: %32 = icmp eq i32 9, %3
6497 ; CHECK-NEXT: %33 = select i1 %32, i8* %31, i8* %30
6498 ; CHECK-NEXT: %34 = extractelement <4 x i8*> %2, i32 2
6499 ; CHECK-NEXT: %35 = icmp eq i32 10, %3
6500 ; CHECK-NEXT: %36 = select i1 %35, i8* %34, i8* %33
6501 ; CHECK-NEXT: %37 = extractelement <4 x i8*> %2, i32 3
6502 ; CHECK-NEXT: %38 = icmp eq i32 11, %3
6503 ; CHECK-NEXT: %39 = select i1 %38, i8* %37, i8* %36
6504 ; CHECK-NEXT: ret i8* %39
6505 ; CHECK-NEXT: }
6506
6507 define float @extract_12xfloat_var_idx(<12 x float>, i32) {
6508 entry:
6509 %2 = extractelement <12 x float> %0, i32 %1
6510 ret float %2
6511 }
6512 ; CHECK-LABEL: define float @extract_12xfloat_var_idx(<4 x float>, <4 x float>, <4 x float>, i32) {
6513 ; CHECK: entry:
6514 ; CHECK-NEXT: %4 = extractelement <4 x float> %0, i32 0
6515 ; CHECK-NEXT: %5 = icmp eq i32 0, %3
6516 ; CHECK-NEXT: %6 = select i1 %5, float %4, float undef
6517 ; CHECK-NEXT: %7 = extractelement <4 x float> %0, i32 1
6518 ; CHECK-NEXT: %8 = icmp eq i32 1, %3
6519 ; CHECK-NEXT: %9 = select i1 %8, float %7, float %6
6520 ; CHECK-NEXT: %10 = extractelement <4 x float> %0, i32 2
6521 ; CHECK-NEXT: %11 = icmp eq i32 2, %3
6522 ; CHECK-NEXT: %12 = select i1 %11, float %10, float %9
6523 ; CHECK-NEXT: %13 = extractelement <4 x float> %0, i32 3
6524 ; CHECK-NEXT: %14 = icmp eq i32 3, %3
6525 ; CHECK-NEXT: %15 = select i1 %14, float %13, float %12
6526 ; CHECK-NEXT: %16 = extractelement <4 x float> %1, i32 0
6527 ; CHECK-NEXT: %17 = icmp eq i32 4, %3
6528 ; CHECK-NEXT: %18 = select i1 %17, float %16, float %15
6529 ; CHECK-NEXT: %19 = extractelement <4 x float> %1, i32 1
6530 ; CHECK-NEXT: %20 = icmp eq i32 5, %3
6531 ; CHECK-NEXT: %21 = select i1 %20, float %19, float %18
6532 ; CHECK-NEXT: %22 = extractelement <4 x float> %1, i32 2
6533 ; CHECK-NEXT: %23 = icmp eq i32 6, %3
6534 ; CHECK-NEXT: %24 = select i1 %23, float %22, float %21
6535 ; CHECK-NEXT: %25 = extractelement <4 x float> %1, i32 3
6536 ; CHECK-NEXT: %26 = icmp eq i32 7, %3
6537 ; CHECK-NEXT: %27 = select i1 %26, float %25, float %24
6538 ; CHECK-NEXT: %28 = extractelement <4 x float> %2, i32 0
6539 ; CHECK-NEXT: %29 = icmp eq i32 8, %3
6540 ; CHECK-NEXT: %30 = select i1 %29, float %28, float %27
6541 ; CHECK-NEXT: %31 = extractelement <4 x float> %2, i32 1
6542 ; CHECK-NEXT: %32 = icmp eq i32 9, %3
6543 ; CHECK-NEXT: %33 = select i1 %32, float %31, float %30
6544 ; CHECK-NEXT: %34 = extractelement <4 x float> %2, i32 2
6545 ; CHECK-NEXT: %35 = icmp eq i32 10, %3
6546 ; CHECK-NEXT: %36 = select i1 %35, float %34, float %33
6547 ; CHECK-NEXT: %37 = extractelement <4 x float> %2, i32 3
6548 ; CHECK-NEXT: %38 = icmp eq i32 11, %3
6549 ; CHECK-NEXT: %39 = select i1 %38, float %37, float %36
6550 ; CHECK-NEXT: ret float %39
6551 ; CHECK-NEXT: }
6552
6553 define double @extract_12xdouble_var_idx(<12 x double>, i32) {
6554 entry:
6555 %2 = extractelement <12 x double> %0, i32 %1
6556 ret double %2
6557 }
6558 ; CHECK-LABEL: define double @extract_12xdouble_var_idx(<2 x double>, <2 x doubl e>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, i32) {
6559 ; CHECK: entry:
6560 ; CHECK-NEXT: %7 = extractelement <2 x double> %0, i32 0
6561 ; CHECK-NEXT: %8 = icmp eq i32 0, %6
6562 ; CHECK-NEXT: %9 = select i1 %8, double %7, double undef
6563 ; CHECK-NEXT: %10 = extractelement <2 x double> %0, i32 1
6564 ; CHECK-NEXT: %11 = icmp eq i32 1, %6
6565 ; CHECK-NEXT: %12 = select i1 %11, double %10, double %9
6566 ; CHECK-NEXT: %13 = extractelement <2 x double> %1, i32 0
6567 ; CHECK-NEXT: %14 = icmp eq i32 2, %6
6568 ; CHECK-NEXT: %15 = select i1 %14, double %13, double %12
6569 ; CHECK-NEXT: %16 = extractelement <2 x double> %1, i32 1
6570 ; CHECK-NEXT: %17 = icmp eq i32 3, %6
6571 ; CHECK-NEXT: %18 = select i1 %17, double %16, double %15
6572 ; CHECK-NEXT: %19 = extractelement <2 x double> %2, i32 0
6573 ; CHECK-NEXT: %20 = icmp eq i32 4, %6
6574 ; CHECK-NEXT: %21 = select i1 %20, double %19, double %18
6575 ; CHECK-NEXT: %22 = extractelement <2 x double> %2, i32 1
6576 ; CHECK-NEXT: %23 = icmp eq i32 5, %6
6577 ; CHECK-NEXT: %24 = select i1 %23, double %22, double %21
6578 ; CHECK-NEXT: %25 = extractelement <2 x double> %3, i32 0
6579 ; CHECK-NEXT: %26 = icmp eq i32 6, %6
6580 ; CHECK-NEXT: %27 = select i1 %26, double %25, double %24
6581 ; CHECK-NEXT: %28 = extractelement <2 x double> %3, i32 1
6582 ; CHECK-NEXT: %29 = icmp eq i32 7, %6
6583 ; CHECK-NEXT: %30 = select i1 %29, double %28, double %27
6584 ; CHECK-NEXT: %31 = extractelement <2 x double> %4, i32 0
6585 ; CHECK-NEXT: %32 = icmp eq i32 8, %6
6586 ; CHECK-NEXT: %33 = select i1 %32, double %31, double %30
6587 ; CHECK-NEXT: %34 = extractelement <2 x double> %4, i32 1
6588 ; CHECK-NEXT: %35 = icmp eq i32 9, %6
6589 ; CHECK-NEXT: %36 = select i1 %35, double %34, double %33
6590 ; CHECK-NEXT: %37 = extractelement <2 x double> %5, i32 0
6591 ; CHECK-NEXT: %38 = icmp eq i32 10, %6
6592 ; CHECK-NEXT: %39 = select i1 %38, double %37, double %36
6593 ; CHECK-NEXT: %40 = extractelement <2 x double> %5, i32 1
6594 ; CHECK-NEXT: %41 = icmp eq i32 11, %6
6595 ; CHECK-NEXT: %42 = select i1 %41, double %40, double %39
6596 ; CHECK-NEXT: ret double %42
6597 ; CHECK-NEXT: }
6598
6599 define i8 @extract_16xi8_var_idx(<16 x i8>, i32) {
6600 entry:
6601 %2 = extractelement <16 x i8> %0, i32 %1
6602 ret i8 %2
6603 }
6604 ; CHECK-LABEL: define i8 @extract_16xi8_var_idx(<16 x i8>, i32) {
6605 ; CHECK: entry:
6606 ; CHECK-NEXT: %2 = extractelement <16 x i8> %0, i32 %1
6607 ; CHECK-NEXT: ret i8 %2
6608 ; CHECK-NEXT: }
6609
6610 define i16 @extract_16xi16_var_idx(<16 x i16>, i32) {
6611 entry:
6612 %2 = extractelement <16 x i16> %0, i32 %1
6613 ret i16 %2
6614 }
6615 ; CHECK-LABEL: define i16 @extract_16xi16_var_idx(<8 x i16>, <8 x i16>, i32) {
6616 ; CHECK: entry:
6617 ; CHECK-NEXT: %3 = extractelement <8 x i16> %0, i32 0
6618 ; CHECK-NEXT: %4 = icmp eq i32 0, %2
6619 ; CHECK-NEXT: %5 = select i1 %4, i16 %3, i16 undef
6620 ; CHECK-NEXT: %6 = extractelement <8 x i16> %0, i32 1
6621 ; CHECK-NEXT: %7 = icmp eq i32 1, %2
6622 ; CHECK-NEXT: %8 = select i1 %7, i16 %6, i16 %5
6623 ; CHECK-NEXT: %9 = extractelement <8 x i16> %0, i32 2
6624 ; CHECK-NEXT: %10 = icmp eq i32 2, %2
6625 ; CHECK-NEXT: %11 = select i1 %10, i16 %9, i16 %8
6626 ; CHECK-NEXT: %12 = extractelement <8 x i16> %0, i32 3
6627 ; CHECK-NEXT: %13 = icmp eq i32 3, %2
6628 ; CHECK-NEXT: %14 = select i1 %13, i16 %12, i16 %11
6629 ; CHECK-NEXT: %15 = extractelement <8 x i16> %0, i32 4
6630 ; CHECK-NEXT: %16 = icmp eq i32 4, %2
6631 ; CHECK-NEXT: %17 = select i1 %16, i16 %15, i16 %14
6632 ; CHECK-NEXT: %18 = extractelement <8 x i16> %0, i32 5
6633 ; CHECK-NEXT: %19 = icmp eq i32 5, %2
6634 ; CHECK-NEXT: %20 = select i1 %19, i16 %18, i16 %17
6635 ; CHECK-NEXT: %21 = extractelement <8 x i16> %0, i32 6
6636 ; CHECK-NEXT: %22 = icmp eq i32 6, %2
6637 ; CHECK-NEXT: %23 = select i1 %22, i16 %21, i16 %20
6638 ; CHECK-NEXT: %24 = extractelement <8 x i16> %0, i32 7
6639 ; CHECK-NEXT: %25 = icmp eq i32 7, %2
6640 ; CHECK-NEXT: %26 = select i1 %25, i16 %24, i16 %23
6641 ; CHECK-NEXT: %27 = extractelement <8 x i16> %1, i32 0
6642 ; CHECK-NEXT: %28 = icmp eq i32 8, %2
6643 ; CHECK-NEXT: %29 = select i1 %28, i16 %27, i16 %26
6644 ; CHECK-NEXT: %30 = extractelement <8 x i16> %1, i32 1
6645 ; CHECK-NEXT: %31 = icmp eq i32 9, %2
6646 ; CHECK-NEXT: %32 = select i1 %31, i16 %30, i16 %29
6647 ; CHECK-NEXT: %33 = extractelement <8 x i16> %1, i32 2
6648 ; CHECK-NEXT: %34 = icmp eq i32 10, %2
6649 ; CHECK-NEXT: %35 = select i1 %34, i16 %33, i16 %32
6650 ; CHECK-NEXT: %36 = extractelement <8 x i16> %1, i32 3
6651 ; CHECK-NEXT: %37 = icmp eq i32 11, %2
6652 ; CHECK-NEXT: %38 = select i1 %37, i16 %36, i16 %35
6653 ; CHECK-NEXT: %39 = extractelement <8 x i16> %1, i32 4
6654 ; CHECK-NEXT: %40 = icmp eq i32 12, %2
6655 ; CHECK-NEXT: %41 = select i1 %40, i16 %39, i16 %38
6656 ; CHECK-NEXT: %42 = extractelement <8 x i16> %1, i32 5
6657 ; CHECK-NEXT: %43 = icmp eq i32 13, %2
6658 ; CHECK-NEXT: %44 = select i1 %43, i16 %42, i16 %41
6659 ; CHECK-NEXT: %45 = extractelement <8 x i16> %1, i32 6
6660 ; CHECK-NEXT: %46 = icmp eq i32 14, %2
6661 ; CHECK-NEXT: %47 = select i1 %46, i16 %45, i16 %44
6662 ; CHECK-NEXT: %48 = extractelement <8 x i16> %1, i32 7
6663 ; CHECK-NEXT: %49 = icmp eq i32 15, %2
6664 ; CHECK-NEXT: %50 = select i1 %49, i16 %48, i16 %47
6665 ; CHECK-NEXT: ret i16 %50
6666 ; CHECK-NEXT: }
6667
6668 define i32 @extract_16xi32_var_idx(<16 x i32>, i32) {
6669 entry:
6670 %2 = extractelement <16 x i32> %0, i32 %1
6671 ret i32 %2
6672 }
6673 ; CHECK-LABEL: define i32 @extract_16xi32_var_idx(<4 x i32>, <4 x i32>, <4 x i32 >, <4 x i32>, i32) {
6674 ; CHECK: entry:
6675 ; CHECK-NEXT: %5 = extractelement <4 x i32> %0, i32 0
6676 ; CHECK-NEXT: %6 = icmp eq i32 0, %4
6677 ; CHECK-NEXT: %7 = select i1 %6, i32 %5, i32 undef
6678 ; CHECK-NEXT: %8 = extractelement <4 x i32> %0, i32 1
6679 ; CHECK-NEXT: %9 = icmp eq i32 1, %4
6680 ; CHECK-NEXT: %10 = select i1 %9, i32 %8, i32 %7
6681 ; CHECK-NEXT: %11 = extractelement <4 x i32> %0, i32 2
6682 ; CHECK-NEXT: %12 = icmp eq i32 2, %4
6683 ; CHECK-NEXT: %13 = select i1 %12, i32 %11, i32 %10
6684 ; CHECK-NEXT: %14 = extractelement <4 x i32> %0, i32 3
6685 ; CHECK-NEXT: %15 = icmp eq i32 3, %4
6686 ; CHECK-NEXT: %16 = select i1 %15, i32 %14, i32 %13
6687 ; CHECK-NEXT: %17 = extractelement <4 x i32> %1, i32 0
6688 ; CHECK-NEXT: %18 = icmp eq i32 4, %4
6689 ; CHECK-NEXT: %19 = select i1 %18, i32 %17, i32 %16
6690 ; CHECK-NEXT: %20 = extractelement <4 x i32> %1, i32 1
6691 ; CHECK-NEXT: %21 = icmp eq i32 5, %4
6692 ; CHECK-NEXT: %22 = select i1 %21, i32 %20, i32 %19
6693 ; CHECK-NEXT: %23 = extractelement <4 x i32> %1, i32 2
6694 ; CHECK-NEXT: %24 = icmp eq i32 6, %4
6695 ; CHECK-NEXT: %25 = select i1 %24, i32 %23, i32 %22
6696 ; CHECK-NEXT: %26 = extractelement <4 x i32> %1, i32 3
6697 ; CHECK-NEXT: %27 = icmp eq i32 7, %4
6698 ; CHECK-NEXT: %28 = select i1 %27, i32 %26, i32 %25
6699 ; CHECK-NEXT: %29 = extractelement <4 x i32> %2, i32 0
6700 ; CHECK-NEXT: %30 = icmp eq i32 8, %4
6701 ; CHECK-NEXT: %31 = select i1 %30, i32 %29, i32 %28
6702 ; CHECK-NEXT: %32 = extractelement <4 x i32> %2, i32 1
6703 ; CHECK-NEXT: %33 = icmp eq i32 9, %4
6704 ; CHECK-NEXT: %34 = select i1 %33, i32 %32, i32 %31
6705 ; CHECK-NEXT: %35 = extractelement <4 x i32> %2, i32 2
6706 ; CHECK-NEXT: %36 = icmp eq i32 10, %4
6707 ; CHECK-NEXT: %37 = select i1 %36, i32 %35, i32 %34
6708 ; CHECK-NEXT: %38 = extractelement <4 x i32> %2, i32 3
6709 ; CHECK-NEXT: %39 = icmp eq i32 11, %4
6710 ; CHECK-NEXT: %40 = select i1 %39, i32 %38, i32 %37
6711 ; CHECK-NEXT: %41 = extractelement <4 x i32> %3, i32 0
6712 ; CHECK-NEXT: %42 = icmp eq i32 12, %4
6713 ; CHECK-NEXT: %43 = select i1 %42, i32 %41, i32 %40
6714 ; CHECK-NEXT: %44 = extractelement <4 x i32> %3, i32 1
6715 ; CHECK-NEXT: %45 = icmp eq i32 13, %4
6716 ; CHECK-NEXT: %46 = select i1 %45, i32 %44, i32 %43
6717 ; CHECK-NEXT: %47 = extractelement <4 x i32> %3, i32 2
6718 ; CHECK-NEXT: %48 = icmp eq i32 14, %4
6719 ; CHECK-NEXT: %49 = select i1 %48, i32 %47, i32 %46
6720 ; CHECK-NEXT: %50 = extractelement <4 x i32> %3, i32 3
6721 ; CHECK-NEXT: %51 = icmp eq i32 15, %4
6722 ; CHECK-NEXT: %52 = select i1 %51, i32 %50, i32 %49
6723 ; CHECK-NEXT: ret i32 %52
6724 ; CHECK-NEXT: }
6725
6726 define i64 @extract_16xi64_var_idx(<16 x i64>, i32) {
6727 entry:
6728 %2 = extractelement <16 x i64> %0, i32 %1
6729 ret i64 %2
6730 }
6731 ; CHECK-LABEL: define i64 @extract_16xi64_var_idx(<2 x i64>, <2 x i64>, <2 x i64 >, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, i32) {
6732 ; CHECK: entry:
6733 ; CHECK-NEXT: %9 = extractelement <2 x i64> %0, i32 0
6734 ; CHECK-NEXT: %10 = icmp eq i32 0, %8
6735 ; CHECK-NEXT: %11 = select i1 %10, i64 %9, i64 undef
6736 ; CHECK-NEXT: %12 = extractelement <2 x i64> %0, i32 1
6737 ; CHECK-NEXT: %13 = icmp eq i32 1, %8
6738 ; CHECK-NEXT: %14 = select i1 %13, i64 %12, i64 %11
6739 ; CHECK-NEXT: %15 = extractelement <2 x i64> %1, i32 0
6740 ; CHECK-NEXT: %16 = icmp eq i32 2, %8
6741 ; CHECK-NEXT: %17 = select i1 %16, i64 %15, i64 %14
6742 ; CHECK-NEXT: %18 = extractelement <2 x i64> %1, i32 1
6743 ; CHECK-NEXT: %19 = icmp eq i32 3, %8
6744 ; CHECK-NEXT: %20 = select i1 %19, i64 %18, i64 %17
6745 ; CHECK-NEXT: %21 = extractelement <2 x i64> %2, i32 0
6746 ; CHECK-NEXT: %22 = icmp eq i32 4, %8
6747 ; CHECK-NEXT: %23 = select i1 %22, i64 %21, i64 %20
6748 ; CHECK-NEXT: %24 = extractelement <2 x i64> %2, i32 1
6749 ; CHECK-NEXT: %25 = icmp eq i32 5, %8
6750 ; CHECK-NEXT: %26 = select i1 %25, i64 %24, i64 %23
6751 ; CHECK-NEXT: %27 = extractelement <2 x i64> %3, i32 0
6752 ; CHECK-NEXT: %28 = icmp eq i32 6, %8
6753 ; CHECK-NEXT: %29 = select i1 %28, i64 %27, i64 %26
6754 ; CHECK-NEXT: %30 = extractelement <2 x i64> %3, i32 1
6755 ; CHECK-NEXT: %31 = icmp eq i32 7, %8
6756 ; CHECK-NEXT: %32 = select i1 %31, i64 %30, i64 %29
6757 ; CHECK-NEXT: %33 = extractelement <2 x i64> %4, i32 0
6758 ; CHECK-NEXT: %34 = icmp eq i32 8, %8
6759 ; CHECK-NEXT: %35 = select i1 %34, i64 %33, i64 %32
6760 ; CHECK-NEXT: %36 = extractelement <2 x i64> %4, i32 1
6761 ; CHECK-NEXT: %37 = icmp eq i32 9, %8
6762 ; CHECK-NEXT: %38 = select i1 %37, i64 %36, i64 %35
6763 ; CHECK-NEXT: %39 = extractelement <2 x i64> %5, i32 0
6764 ; CHECK-NEXT: %40 = icmp eq i32 10, %8
6765 ; CHECK-NEXT: %41 = select i1 %40, i64 %39, i64 %38
6766 ; CHECK-NEXT: %42 = extractelement <2 x i64> %5, i32 1
6767 ; CHECK-NEXT: %43 = icmp eq i32 11, %8
6768 ; CHECK-NEXT: %44 = select i1 %43, i64 %42, i64 %41
6769 ; CHECK-NEXT: %45 = extractelement <2 x i64> %6, i32 0
6770 ; CHECK-NEXT: %46 = icmp eq i32 12, %8
6771 ; CHECK-NEXT: %47 = select i1 %46, i64 %45, i64 %44
6772 ; CHECK-NEXT: %48 = extractelement <2 x i64> %6, i32 1
6773 ; CHECK-NEXT: %49 = icmp eq i32 13, %8
6774 ; CHECK-NEXT: %50 = select i1 %49, i64 %48, i64 %47
6775 ; CHECK-NEXT: %51 = extractelement <2 x i64> %7, i32 0
6776 ; CHECK-NEXT: %52 = icmp eq i32 14, %8
6777 ; CHECK-NEXT: %53 = select i1 %52, i64 %51, i64 %50
6778 ; CHECK-NEXT: %54 = extractelement <2 x i64> %7, i32 1
6779 ; CHECK-NEXT: %55 = icmp eq i32 15, %8
6780 ; CHECK-NEXT: %56 = select i1 %55, i64 %54, i64 %53
6781 ; CHECK-NEXT: ret i64 %56
6782 ; CHECK-NEXT: }
6783
6784 define i8* @extract_16xi8ptr_var_idx(<16 x i8*>, i32) {
6785 entry:
6786 %2 = extractelement <16 x i8*> %0, i32 %1
6787 ret i8* %2
6788 }
6789 ; CHECK-LABEL: define i8* @extract_16xi8ptr_var_idx(<4 x i8*>, <4 x i8*>, <4 x i 8*>, <4 x i8*>, i32) {
6790 ; CHECK: entry:
6791 ; CHECK-NEXT: %5 = extractelement <4 x i8*> %0, i32 0
6792 ; CHECK-NEXT: %6 = icmp eq i32 0, %4
6793 ; CHECK-NEXT: %7 = select i1 %6, i8* %5, i8* undef
6794 ; CHECK-NEXT: %8 = extractelement <4 x i8*> %0, i32 1
6795 ; CHECK-NEXT: %9 = icmp eq i32 1, %4
6796 ; CHECK-NEXT: %10 = select i1 %9, i8* %8, i8* %7
6797 ; CHECK-NEXT: %11 = extractelement <4 x i8*> %0, i32 2
6798 ; CHECK-NEXT: %12 = icmp eq i32 2, %4
6799 ; CHECK-NEXT: %13 = select i1 %12, i8* %11, i8* %10
6800 ; CHECK-NEXT: %14 = extractelement <4 x i8*> %0, i32 3
6801 ; CHECK-NEXT: %15 = icmp eq i32 3, %4
6802 ; CHECK-NEXT: %16 = select i1 %15, i8* %14, i8* %13
6803 ; CHECK-NEXT: %17 = extractelement <4 x i8*> %1, i32 0
6804 ; CHECK-NEXT: %18 = icmp eq i32 4, %4
6805 ; CHECK-NEXT: %19 = select i1 %18, i8* %17, i8* %16
6806 ; CHECK-NEXT: %20 = extractelement <4 x i8*> %1, i32 1
6807 ; CHECK-NEXT: %21 = icmp eq i32 5, %4
6808 ; CHECK-NEXT: %22 = select i1 %21, i8* %20, i8* %19
6809 ; CHECK-NEXT: %23 = extractelement <4 x i8*> %1, i32 2
6810 ; CHECK-NEXT: %24 = icmp eq i32 6, %4
6811 ; CHECK-NEXT: %25 = select i1 %24, i8* %23, i8* %22
6812 ; CHECK-NEXT: %26 = extractelement <4 x i8*> %1, i32 3
6813 ; CHECK-NEXT: %27 = icmp eq i32 7, %4
6814 ; CHECK-NEXT: %28 = select i1 %27, i8* %26, i8* %25
6815 ; CHECK-NEXT: %29 = extractelement <4 x i8*> %2, i32 0
6816 ; CHECK-NEXT: %30 = icmp eq i32 8, %4
6817 ; CHECK-NEXT: %31 = select i1 %30, i8* %29, i8* %28
6818 ; CHECK-NEXT: %32 = extractelement <4 x i8*> %2, i32 1
6819 ; CHECK-NEXT: %33 = icmp eq i32 9, %4
6820 ; CHECK-NEXT: %34 = select i1 %33, i8* %32, i8* %31
6821 ; CHECK-NEXT: %35 = extractelement <4 x i8*> %2, i32 2
6822 ; CHECK-NEXT: %36 = icmp eq i32 10, %4
6823 ; CHECK-NEXT: %37 = select i1 %36, i8* %35, i8* %34
6824 ; CHECK-NEXT: %38 = extractelement <4 x i8*> %2, i32 3
6825 ; CHECK-NEXT: %39 = icmp eq i32 11, %4
6826 ; CHECK-NEXT: %40 = select i1 %39, i8* %38, i8* %37
6827 ; CHECK-NEXT: %41 = extractelement <4 x i8*> %3, i32 0
6828 ; CHECK-NEXT: %42 = icmp eq i32 12, %4
6829 ; CHECK-NEXT: %43 = select i1 %42, i8* %41, i8* %40
6830 ; CHECK-NEXT: %44 = extractelement <4 x i8*> %3, i32 1
6831 ; CHECK-NEXT: %45 = icmp eq i32 13, %4
6832 ; CHECK-NEXT: %46 = select i1 %45, i8* %44, i8* %43
6833 ; CHECK-NEXT: %47 = extractelement <4 x i8*> %3, i32 2
6834 ; CHECK-NEXT: %48 = icmp eq i32 14, %4
6835 ; CHECK-NEXT: %49 = select i1 %48, i8* %47, i8* %46
6836 ; CHECK-NEXT: %50 = extractelement <4 x i8*> %3, i32 3
6837 ; CHECK-NEXT: %51 = icmp eq i32 15, %4
6838 ; CHECK-NEXT: %52 = select i1 %51, i8* %50, i8* %49
6839 ; CHECK-NEXT: ret i8* %52
6840 ; CHECK-NEXT: }
6841
6842 define float @extract_16xfloat_var_idx(<16 x float>, i32) {
6843 entry:
6844 %2 = extractelement <16 x float> %0, i32 %1
6845 ret float %2
6846 }
6847 ; CHECK-LABEL: define float @extract_16xfloat_var_idx(<4 x float>, <4 x float>, <4 x float>, <4 x float>, i32) {
6848 ; CHECK: entry:
6849 ; CHECK-NEXT: %5 = extractelement <4 x float> %0, i32 0
6850 ; CHECK-NEXT: %6 = icmp eq i32 0, %4
6851 ; CHECK-NEXT: %7 = select i1 %6, float %5, float undef
6852 ; CHECK-NEXT: %8 = extractelement <4 x float> %0, i32 1
6853 ; CHECK-NEXT: %9 = icmp eq i32 1, %4
6854 ; CHECK-NEXT: %10 = select i1 %9, float %8, float %7
6855 ; CHECK-NEXT: %11 = extractelement <4 x float> %0, i32 2
6856 ; CHECK-NEXT: %12 = icmp eq i32 2, %4
6857 ; CHECK-NEXT: %13 = select i1 %12, float %11, float %10
6858 ; CHECK-NEXT: %14 = extractelement <4 x float> %0, i32 3
6859 ; CHECK-NEXT: %15 = icmp eq i32 3, %4
6860 ; CHECK-NEXT: %16 = select i1 %15, float %14, float %13
6861 ; CHECK-NEXT: %17 = extractelement <4 x float> %1, i32 0
6862 ; CHECK-NEXT: %18 = icmp eq i32 4, %4
6863 ; CHECK-NEXT: %19 = select i1 %18, float %17, float %16
6864 ; CHECK-NEXT: %20 = extractelement <4 x float> %1, i32 1
6865 ; CHECK-NEXT: %21 = icmp eq i32 5, %4
6866 ; CHECK-NEXT: %22 = select i1 %21, float %20, float %19
6867 ; CHECK-NEXT: %23 = extractelement <4 x float> %1, i32 2
6868 ; CHECK-NEXT: %24 = icmp eq i32 6, %4
6869 ; CHECK-NEXT: %25 = select i1 %24, float %23, float %22
6870 ; CHECK-NEXT: %26 = extractelement <4 x float> %1, i32 3
6871 ; CHECK-NEXT: %27 = icmp eq i32 7, %4
6872 ; CHECK-NEXT: %28 = select i1 %27, float %26, float %25
6873 ; CHECK-NEXT: %29 = extractelement <4 x float> %2, i32 0
6874 ; CHECK-NEXT: %30 = icmp eq i32 8, %4
6875 ; CHECK-NEXT: %31 = select i1 %30, float %29, float %28
6876 ; CHECK-NEXT: %32 = extractelement <4 x float> %2, i32 1
6877 ; CHECK-NEXT: %33 = icmp eq i32 9, %4
6878 ; CHECK-NEXT: %34 = select i1 %33, float %32, float %31
6879 ; CHECK-NEXT: %35 = extractelement <4 x float> %2, i32 2
6880 ; CHECK-NEXT: %36 = icmp eq i32 10, %4
6881 ; CHECK-NEXT: %37 = select i1 %36, float %35, float %34
6882 ; CHECK-NEXT: %38 = extractelement <4 x float> %2, i32 3
6883 ; CHECK-NEXT: %39 = icmp eq i32 11, %4
6884 ; CHECK-NEXT: %40 = select i1 %39, float %38, float %37
6885 ; CHECK-NEXT: %41 = extractelement <4 x float> %3, i32 0
6886 ; CHECK-NEXT: %42 = icmp eq i32 12, %4
6887 ; CHECK-NEXT: %43 = select i1 %42, float %41, float %40
6888 ; CHECK-NEXT: %44 = extractelement <4 x float> %3, i32 1
6889 ; CHECK-NEXT: %45 = icmp eq i32 13, %4
6890 ; CHECK-NEXT: %46 = select i1 %45, float %44, float %43
6891 ; CHECK-NEXT: %47 = extractelement <4 x float> %3, i32 2
6892 ; CHECK-NEXT: %48 = icmp eq i32 14, %4
6893 ; CHECK-NEXT: %49 = select i1 %48, float %47, float %46
6894 ; CHECK-NEXT: %50 = extractelement <4 x float> %3, i32 3
6895 ; CHECK-NEXT: %51 = icmp eq i32 15, %4
6896 ; CHECK-NEXT: %52 = select i1 %51, float %50, float %49
6897 ; CHECK-NEXT: ret float %52
6898 ; CHECK-NEXT: }
6899
6900 define double @extract_16xdouble_var_idx(<16 x double>, i32) {
6901 entry:
6902 %2 = extractelement <16 x double> %0, i32 %1
6903 ret double %2
6904 }
6905 ; CHECK-LABEL: define double @extract_16xdouble_var_idx(<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>, i32) {
6906 ; CHECK: entry:
6907 ; CHECK-NEXT: %9 = extractelement <2 x double> %0, i32 0
6908 ; CHECK-NEXT: %10 = icmp eq i32 0, %8
6909 ; CHECK-NEXT: %11 = select i1 %10, double %9, double undef
6910 ; CHECK-NEXT: %12 = extractelement <2 x double> %0, i32 1
6911 ; CHECK-NEXT: %13 = icmp eq i32 1, %8
6912 ; CHECK-NEXT: %14 = select i1 %13, double %12, double %11
6913 ; CHECK-NEXT: %15 = extractelement <2 x double> %1, i32 0
6914 ; CHECK-NEXT: %16 = icmp eq i32 2, %8
6915 ; CHECK-NEXT: %17 = select i1 %16, double %15, double %14
6916 ; CHECK-NEXT: %18 = extractelement <2 x double> %1, i32 1
6917 ; CHECK-NEXT: %19 = icmp eq i32 3, %8
6918 ; CHECK-NEXT: %20 = select i1 %19, double %18, double %17
6919 ; CHECK-NEXT: %21 = extractelement <2 x double> %2, i32 0
6920 ; CHECK-NEXT: %22 = icmp eq i32 4, %8
6921 ; CHECK-NEXT: %23 = select i1 %22, double %21, double %20
6922 ; CHECK-NEXT: %24 = extractelement <2 x double> %2, i32 1
6923 ; CHECK-NEXT: %25 = icmp eq i32 5, %8
6924 ; CHECK-NEXT: %26 = select i1 %25, double %24, double %23
6925 ; CHECK-NEXT: %27 = extractelement <2 x double> %3, i32 0
6926 ; CHECK-NEXT: %28 = icmp eq i32 6, %8
6927 ; CHECK-NEXT: %29 = select i1 %28, double %27, double %26
6928 ; CHECK-NEXT: %30 = extractelement <2 x double> %3, i32 1
6929 ; CHECK-NEXT: %31 = icmp eq i32 7, %8
6930 ; CHECK-NEXT: %32 = select i1 %31, double %30, double %29
6931 ; CHECK-NEXT: %33 = extractelement <2 x double> %4, i32 0
6932 ; CHECK-NEXT: %34 = icmp eq i32 8, %8
6933 ; CHECK-NEXT: %35 = select i1 %34, double %33, double %32
6934 ; CHECK-NEXT: %36 = extractelement <2 x double> %4, i32 1
6935 ; CHECK-NEXT: %37 = icmp eq i32 9, %8
6936 ; CHECK-NEXT: %38 = select i1 %37, double %36, double %35
6937 ; CHECK-NEXT: %39 = extractelement <2 x double> %5, i32 0
6938 ; CHECK-NEXT: %40 = icmp eq i32 10, %8
6939 ; CHECK-NEXT: %41 = select i1 %40, double %39, double %38
6940 ; CHECK-NEXT: %42 = extractelement <2 x double> %5, i32 1
6941 ; CHECK-NEXT: %43 = icmp eq i32 11, %8
6942 ; CHECK-NEXT: %44 = select i1 %43, double %42, double %41
6943 ; CHECK-NEXT: %45 = extractelement <2 x double> %6, i32 0
6944 ; CHECK-NEXT: %46 = icmp eq i32 12, %8
6945 ; CHECK-NEXT: %47 = select i1 %46, double %45, double %44
6946 ; CHECK-NEXT: %48 = extractelement <2 x double> %6, i32 1
6947 ; CHECK-NEXT: %49 = icmp eq i32 13, %8
6948 ; CHECK-NEXT: %50 = select i1 %49, double %48, double %47
6949 ; CHECK-NEXT: %51 = extractelement <2 x double> %7, i32 0
6950 ; CHECK-NEXT: %52 = icmp eq i32 14, %8
6951 ; CHECK-NEXT: %53 = select i1 %52, double %51, double %50
6952 ; CHECK-NEXT: %54 = extractelement <2 x double> %7, i32 1
6953 ; CHECK-NEXT: %55 = icmp eq i32 15, %8
6954 ; CHECK-NEXT: %56 = select i1 %55, double %54, double %53
6955 ; CHECK-NEXT: ret double %56
6956 ; CHECK-NEXT: }
6957
6958 define i8 @extract_20xi8_var_idx(<20 x i8>, i32) {
6959 entry:
6960 %2 = extractelement <20 x i8> %0, i32 %1
6961 ret i8 %2
6962 }
6963 ; CHECK-LABEL: define i8 @extract_20xi8_var_idx(<16 x i8>, <16 x i8>, i32) {
6964 ; CHECK: entry:
6965 ; CHECK-NEXT: %3 = extractelement <16 x i8> %0, i32 0
6966 ; CHECK-NEXT: %4 = icmp eq i32 0, %2
6967 ; CHECK-NEXT: %5 = select i1 %4, i8 %3, i8 undef
6968 ; CHECK-NEXT: %6 = extractelement <16 x i8> %0, i32 1
6969 ; CHECK-NEXT: %7 = icmp eq i32 1, %2
6970 ; CHECK-NEXT: %8 = select i1 %7, i8 %6, i8 %5
6971 ; CHECK-NEXT: %9 = extractelement <16 x i8> %0, i32 2
6972 ; CHECK-NEXT: %10 = icmp eq i32 2, %2
6973 ; CHECK-NEXT: %11 = select i1 %10, i8 %9, i8 %8
6974 ; CHECK-NEXT: %12 = extractelement <16 x i8> %0, i32 3
6975 ; CHECK-NEXT: %13 = icmp eq i32 3, %2
6976 ; CHECK-NEXT: %14 = select i1 %13, i8 %12, i8 %11
6977 ; CHECK-NEXT: %15 = extractelement <16 x i8> %0, i32 4
6978 ; CHECK-NEXT: %16 = icmp eq i32 4, %2
6979 ; CHECK-NEXT: %17 = select i1 %16, i8 %15, i8 %14
6980 ; CHECK-NEXT: %18 = extractelement <16 x i8> %0, i32 5
6981 ; CHECK-NEXT: %19 = icmp eq i32 5, %2
6982 ; CHECK-NEXT: %20 = select i1 %19, i8 %18, i8 %17
6983 ; CHECK-NEXT: %21 = extractelement <16 x i8> %0, i32 6
6984 ; CHECK-NEXT: %22 = icmp eq i32 6, %2
6985 ; CHECK-NEXT: %23 = select i1 %22, i8 %21, i8 %20
6986 ; CHECK-NEXT: %24 = extractelement <16 x i8> %0, i32 7
6987 ; CHECK-NEXT: %25 = icmp eq i32 7, %2
6988 ; CHECK-NEXT: %26 = select i1 %25, i8 %24, i8 %23
6989 ; CHECK-NEXT: %27 = extractelement <16 x i8> %0, i32 8
6990 ; CHECK-NEXT: %28 = icmp eq i32 8, %2
6991 ; CHECK-NEXT: %29 = select i1 %28, i8 %27, i8 %26
6992 ; CHECK-NEXT: %30 = extractelement <16 x i8> %0, i32 9
6993 ; CHECK-NEXT: %31 = icmp eq i32 9, %2
6994 ; CHECK-NEXT: %32 = select i1 %31, i8 %30, i8 %29
6995 ; CHECK-NEXT: %33 = extractelement <16 x i8> %0, i32 10
6996 ; CHECK-NEXT: %34 = icmp eq i32 10, %2
6997 ; CHECK-NEXT: %35 = select i1 %34, i8 %33, i8 %32
6998 ; CHECK-NEXT: %36 = extractelement <16 x i8> %0, i32 11
6999 ; CHECK-NEXT: %37 = icmp eq i32 11, %2
7000 ; CHECK-NEXT: %38 = select i1 %37, i8 %36, i8 %35
7001 ; CHECK-NEXT: %39 = extractelement <16 x i8> %0, i32 12
7002 ; CHECK-NEXT: %40 = icmp eq i32 12, %2
7003 ; CHECK-NEXT: %41 = select i1 %40, i8 %39, i8 %38
7004 ; CHECK-NEXT: %42 = extractelement <16 x i8> %0, i32 13
7005 ; CHECK-NEXT: %43 = icmp eq i32 13, %2
7006 ; CHECK-NEXT: %44 = select i1 %43, i8 %42, i8 %41
7007 ; CHECK-NEXT: %45 = extractelement <16 x i8> %0, i32 14
7008 ; CHECK-NEXT: %46 = icmp eq i32 14, %2
7009 ; CHECK-NEXT: %47 = select i1 %46, i8 %45, i8 %44
7010 ; CHECK-NEXT: %48 = extractelement <16 x i8> %0, i32 15
7011 ; CHECK-NEXT: %49 = icmp eq i32 15, %2
7012 ; CHECK-NEXT: %50 = select i1 %49, i8 %48, i8 %47
7013 ; CHECK-NEXT: %51 = extractelement <16 x i8> %1, i32 0
7014 ; CHECK-NEXT: %52 = icmp eq i32 16, %2
7015 ; CHECK-NEXT: %53 = select i1 %52, i8 %51, i8 %50
7016 ; CHECK-NEXT: %54 = extractelement <16 x i8> %1, i32 1
7017 ; CHECK-NEXT: %55 = icmp eq i32 17, %2
7018 ; CHECK-NEXT: %56 = select i1 %55, i8 %54, i8 %53
7019 ; CHECK-NEXT: %57 = extractelement <16 x i8> %1, i32 2
7020 ; CHECK-NEXT: %58 = icmp eq i32 18, %2
7021 ; CHECK-NEXT: %59 = select i1 %58, i8 %57, i8 %56
7022 ; CHECK-NEXT: %60 = extractelement <16 x i8> %1, i32 3
7023 ; CHECK-NEXT: %61 = icmp eq i32 19, %2
7024 ; CHECK-NEXT: %62 = select i1 %61, i8 %60, i8 %59
7025 ; CHECK-NEXT: ret i8 %62
7026 ; CHECK-NEXT: }
7027
7028 define i16 @extract_20xi16_var_idx(<20 x i16>, i32) {
7029 entry:
7030 %2 = extractelement <20 x i16> %0, i32 %1
7031 ret i16 %2
7032 }
7033 ; CHECK-LABEL: define i16 @extract_20xi16_var_idx(<8 x i16>, <8 x i16>, <8 x i16 >, i32) {
7034 ; CHECK: entry:
7035 ; CHECK-NEXT: %4 = extractelement <8 x i16> %0, i32 0
7036 ; CHECK-NEXT: %5 = icmp eq i32 0, %3
7037 ; CHECK-NEXT: %6 = select i1 %5, i16 %4, i16 undef
7038 ; CHECK-NEXT: %7 = extractelement <8 x i16> %0, i32 1
7039 ; CHECK-NEXT: %8 = icmp eq i32 1, %3
7040 ; CHECK-NEXT: %9 = select i1 %8, i16 %7, i16 %6
7041 ; CHECK-NEXT: %10 = extractelement <8 x i16> %0, i32 2
7042 ; CHECK-NEXT: %11 = icmp eq i32 2, %3
7043 ; CHECK-NEXT: %12 = select i1 %11, i16 %10, i16 %9
7044 ; CHECK-NEXT: %13 = extractelement <8 x i16> %0, i32 3
7045 ; CHECK-NEXT: %14 = icmp eq i32 3, %3
7046 ; CHECK-NEXT: %15 = select i1 %14, i16 %13, i16 %12
7047 ; CHECK-NEXT: %16 = extractelement <8 x i16> %0, i32 4
7048 ; CHECK-NEXT: %17 = icmp eq i32 4, %3
7049 ; CHECK-NEXT: %18 = select i1 %17, i16 %16, i16 %15
7050 ; CHECK-NEXT: %19 = extractelement <8 x i16> %0, i32 5
7051 ; CHECK-NEXT: %20 = icmp eq i32 5, %3
7052 ; CHECK-NEXT: %21 = select i1 %20, i16 %19, i16 %18
7053 ; CHECK-NEXT: %22 = extractelement <8 x i16> %0, i32 6
7054 ; CHECK-NEXT: %23 = icmp eq i32 6, %3
7055 ; CHECK-NEXT: %24 = select i1 %23, i16 %22, i16 %21
7056 ; CHECK-NEXT: %25 = extractelement <8 x i16> %0, i32 7
7057 ; CHECK-NEXT: %26 = icmp eq i32 7, %3
7058 ; CHECK-NEXT: %27 = select i1 %26, i16 %25, i16 %24
7059 ; CHECK-NEXT: %28 = extractelement <8 x i16> %1, i32 0
7060 ; CHECK-NEXT: %29 = icmp eq i32 8, %3
7061 ; CHECK-NEXT: %30 = select i1 %29, i16 %28, i16 %27
7062 ; CHECK-NEXT: %31 = extractelement <8 x i16> %1, i32 1
7063 ; CHECK-NEXT: %32 = icmp eq i32 9, %3
7064 ; CHECK-NEXT: %33 = select i1 %32, i16 %31, i16 %30
7065 ; CHECK-NEXT: %34 = extractelement <8 x i16> %1, i32 2
7066 ; CHECK-NEXT: %35 = icmp eq i32 10, %3
7067 ; CHECK-NEXT: %36 = select i1 %35, i16 %34, i16 %33
7068 ; CHECK-NEXT: %37 = extractelement <8 x i16> %1, i32 3
7069 ; CHECK-NEXT: %38 = icmp eq i32 11, %3
7070 ; CHECK-NEXT: %39 = select i1 %38, i16 %37, i16 %36
7071 ; CHECK-NEXT: %40 = extractelement <8 x i16> %1, i32 4
7072 ; CHECK-NEXT: %41 = icmp eq i32 12, %3
7073 ; CHECK-NEXT: %42 = select i1 %41, i16 %40, i16 %39
7074 ; CHECK-NEXT: %43 = extractelement <8 x i16> %1, i32 5
7075 ; CHECK-NEXT: %44 = icmp eq i32 13, %3
7076 ; CHECK-NEXT: %45 = select i1 %44, i16 %43, i16 %42
7077 ; CHECK-NEXT: %46 = extractelement <8 x i16> %1, i32 6
7078 ; CHECK-NEXT: %47 = icmp eq i32 14, %3
7079 ; CHECK-NEXT: %48 = select i1 %47, i16 %46, i16 %45
7080 ; CHECK-NEXT: %49 = extractelement <8 x i16> %1, i32 7
7081 ; CHECK-NEXT: %50 = icmp eq i32 15, %3
7082 ; CHECK-NEXT: %51 = select i1 %50, i16 %49, i16 %48
7083 ; CHECK-NEXT: %52 = extractelement <8 x i16> %2, i32 0
7084 ; CHECK-NEXT: %53 = icmp eq i32 16, %3
7085 ; CHECK-NEXT: %54 = select i1 %53, i16 %52, i16 %51
7086 ; CHECK-NEXT: %55 = extractelement <8 x i16> %2, i32 1
7087 ; CHECK-NEXT: %56 = icmp eq i32 17, %3
7088 ; CHECK-NEXT: %57 = select i1 %56, i16 %55, i16 %54
7089 ; CHECK-NEXT: %58 = extractelement <8 x i16> %2, i32 2
7090 ; CHECK-NEXT: %59 = icmp eq i32 18, %3
7091 ; CHECK-NEXT: %60 = select i1 %59, i16 %58, i16 %57
7092 ; CHECK-NEXT: %61 = extractelement <8 x i16> %2, i32 3
7093 ; CHECK-NEXT: %62 = icmp eq i32 19, %3
7094 ; CHECK-NEXT: %63 = select i1 %62, i16 %61, i16 %60
7095 ; CHECK-NEXT: ret i16 %63
7096 ; CHECK-NEXT: }
7097
7098 define i32 @extract_20xi32_var_idx(<20 x i32>, i32) {
7099 entry:
7100 %2 = extractelement <20 x i32> %0, i32 %1
7101 ret i32 %2
7102 }
7103 ; CHECK-LABEL: define i32 @extract_20xi32_var_idx(<4 x i32>, <4 x i32>, <4 x i32 >, <4 x i32>, <4 x i32>, i32) {
7104 ; CHECK: entry:
7105 ; CHECK-NEXT: %6 = extractelement <4 x i32> %0, i32 0
7106 ; CHECK-NEXT: %7 = icmp eq i32 0, %5
7107 ; CHECK-NEXT: %8 = select i1 %7, i32 %6, i32 undef
7108 ; CHECK-NEXT: %9 = extractelement <4 x i32> %0, i32 1
7109 ; CHECK-NEXT: %10 = icmp eq i32 1, %5
7110 ; CHECK-NEXT: %11 = select i1 %10, i32 %9, i32 %8
7111 ; CHECK-NEXT: %12 = extractelement <4 x i32> %0, i32 2
7112 ; CHECK-NEXT: %13 = icmp eq i32 2, %5
7113 ; CHECK-NEXT: %14 = select i1 %13, i32 %12, i32 %11
7114 ; CHECK-NEXT: %15 = extractelement <4 x i32> %0, i32 3
7115 ; CHECK-NEXT: %16 = icmp eq i32 3, %5
7116 ; CHECK-NEXT: %17 = select i1 %16, i32 %15, i32 %14
7117 ; CHECK-NEXT: %18 = extractelement <4 x i32> %1, i32 0
7118 ; CHECK-NEXT: %19 = icmp eq i32 4, %5
7119 ; CHECK-NEXT: %20 = select i1 %19, i32 %18, i32 %17
7120 ; CHECK-NEXT: %21 = extractelement <4 x i32> %1, i32 1
7121 ; CHECK-NEXT: %22 = icmp eq i32 5, %5
7122 ; CHECK-NEXT: %23 = select i1 %22, i32 %21, i32 %20
7123 ; CHECK-NEXT: %24 = extractelement <4 x i32> %1, i32 2
7124 ; CHECK-NEXT: %25 = icmp eq i32 6, %5
7125 ; CHECK-NEXT: %26 = select i1 %25, i32 %24, i32 %23
7126 ; CHECK-NEXT: %27 = extractelement <4 x i32> %1, i32 3
7127 ; CHECK-NEXT: %28 = icmp eq i32 7, %5
7128 ; CHECK-NEXT: %29 = select i1 %28, i32 %27, i32 %26
7129 ; CHECK-NEXT: %30 = extractelement <4 x i32> %2, i32 0
7130 ; CHECK-NEXT: %31 = icmp eq i32 8, %5
7131 ; CHECK-NEXT: %32 = select i1 %31, i32 %30, i32 %29
7132 ; CHECK-NEXT: %33 = extractelement <4 x i32> %2, i32 1
7133 ; CHECK-NEXT: %34 = icmp eq i32 9, %5
7134 ; CHECK-NEXT: %35 = select i1 %34, i32 %33, i32 %32
7135 ; CHECK-NEXT: %36 = extractelement <4 x i32> %2, i32 2
7136 ; CHECK-NEXT: %37 = icmp eq i32 10, %5
7137 ; CHECK-NEXT: %38 = select i1 %37, i32 %36, i32 %35
7138 ; CHECK-NEXT: %39 = extractelement <4 x i32> %2, i32 3
7139 ; CHECK-NEXT: %40 = icmp eq i32 11, %5
7140 ; CHECK-NEXT: %41 = select i1 %40, i32 %39, i32 %38
7141 ; CHECK-NEXT: %42 = extractelement <4 x i32> %3, i32 0
7142 ; CHECK-NEXT: %43 = icmp eq i32 12, %5
7143 ; CHECK-NEXT: %44 = select i1 %43, i32 %42, i32 %41
7144 ; CHECK-NEXT: %45 = extractelement <4 x i32> %3, i32 1
7145 ; CHECK-NEXT: %46 = icmp eq i32 13, %5
7146 ; CHECK-NEXT: %47 = select i1 %46, i32 %45, i32 %44
7147 ; CHECK-NEXT: %48 = extractelement <4 x i32> %3, i32 2
7148 ; CHECK-NEXT: %49 = icmp eq i32 14, %5
7149 ; CHECK-NEXT: %50 = select i1 %49, i32 %48, i32 %47
7150 ; CHECK-NEXT: %51 = extractelement <4 x i32> %3, i32 3
7151 ; CHECK-NEXT: %52 = icmp eq i32 15, %5
7152 ; CHECK-NEXT: %53 = select i1 %52, i32 %51, i32 %50
7153 ; CHECK-NEXT: %54 = extractelement <4 x i32> %4, i32 0
7154 ; CHECK-NEXT: %55 = icmp eq i32 16, %5
7155 ; CHECK-NEXT: %56 = select i1 %55, i32 %54, i32 %53
7156 ; CHECK-NEXT: %57 = extractelement <4 x i32> %4, i32 1
7157 ; CHECK-NEXT: %58 = icmp eq i32 17, %5
7158 ; CHECK-NEXT: %59 = select i1 %58, i32 %57, i32 %56
7159 ; CHECK-NEXT: %60 = extractelement <4 x i32> %4, i32 2
7160 ; CHECK-NEXT: %61 = icmp eq i32 18, %5
7161 ; CHECK-NEXT: %62 = select i1 %61, i32 %60, i32 %59
7162 ; CHECK-NEXT: %63 = extractelement <4 x i32> %4, i32 3
7163 ; CHECK-NEXT: %64 = icmp eq i32 19, %5
7164 ; CHECK-NEXT: %65 = select i1 %64, i32 %63, i32 %62
7165 ; CHECK-NEXT: ret i32 %65
7166 ; CHECK-NEXT: }
7167
7168 define i64 @extract_20xi64_var_idx(<20 x i64>, i32) {
7169 entry:
7170 %2 = extractelement <20 x i64> %0, i32 %1
7171 ret i64 %2
7172 }
7173 ; CHECK-LABEL: define i64 @extract_20xi64_var_idx(<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>, i32) {
7174 ; CHECK: entry:
7175 ; CHECK-NEXT: %11 = extractelement <2 x i64> %0, i32 0
7176 ; CHECK-NEXT: %12 = icmp eq i32 0, %10
7177 ; CHECK-NEXT: %13 = select i1 %12, i64 %11, i64 undef
7178 ; CHECK-NEXT: %14 = extractelement <2 x i64> %0, i32 1
7179 ; CHECK-NEXT: %15 = icmp eq i32 1, %10
7180 ; CHECK-NEXT: %16 = select i1 %15, i64 %14, i64 %13
7181 ; CHECK-NEXT: %17 = extractelement <2 x i64> %1, i32 0
7182 ; CHECK-NEXT: %18 = icmp eq i32 2, %10
7183 ; CHECK-NEXT: %19 = select i1 %18, i64 %17, i64 %16
7184 ; CHECK-NEXT: %20 = extractelement <2 x i64> %1, i32 1
7185 ; CHECK-NEXT: %21 = icmp eq i32 3, %10
7186 ; CHECK-NEXT: %22 = select i1 %21, i64 %20, i64 %19
7187 ; CHECK-NEXT: %23 = extractelement <2 x i64> %2, i32 0
7188 ; CHECK-NEXT: %24 = icmp eq i32 4, %10
7189 ; CHECK-NEXT: %25 = select i1 %24, i64 %23, i64 %22
7190 ; CHECK-NEXT: %26 = extractelement <2 x i64> %2, i32 1
7191 ; CHECK-NEXT: %27 = icmp eq i32 5, %10
7192 ; CHECK-NEXT: %28 = select i1 %27, i64 %26, i64 %25
7193 ; CHECK-NEXT: %29 = extractelement <2 x i64> %3, i32 0
7194 ; CHECK-NEXT: %30 = icmp eq i32 6, %10
7195 ; CHECK-NEXT: %31 = select i1 %30, i64 %29, i64 %28
7196 ; CHECK-NEXT: %32 = extractelement <2 x i64> %3, i32 1
7197 ; CHECK-NEXT: %33 = icmp eq i32 7, %10
7198 ; CHECK-NEXT: %34 = select i1 %33, i64 %32, i64 %31
7199 ; CHECK-NEXT: %35 = extractelement <2 x i64> %4, i32 0
7200 ; CHECK-NEXT: %36 = icmp eq i32 8, %10
7201 ; CHECK-NEXT: %37 = select i1 %36, i64 %35, i64 %34
7202 ; CHECK-NEXT: %38 = extractelement <2 x i64> %4, i32 1
7203 ; CHECK-NEXT: %39 = icmp eq i32 9, %10
7204 ; CHECK-NEXT: %40 = select i1 %39, i64 %38, i64 %37
7205 ; CHECK-NEXT: %41 = extractelement <2 x i64> %5, i32 0
7206 ; CHECK-NEXT: %42 = icmp eq i32 10, %10
7207 ; CHECK-NEXT: %43 = select i1 %42, i64 %41, i64 %40
7208 ; CHECK-NEXT: %44 = extractelement <2 x i64> %5, i32 1
7209 ; CHECK-NEXT: %45 = icmp eq i32 11, %10
7210 ; CHECK-NEXT: %46 = select i1 %45, i64 %44, i64 %43
7211 ; CHECK-NEXT: %47 = extractelement <2 x i64> %6, i32 0
7212 ; CHECK-NEXT: %48 = icmp eq i32 12, %10
7213 ; CHECK-NEXT: %49 = select i1 %48, i64 %47, i64 %46
7214 ; CHECK-NEXT: %50 = extractelement <2 x i64> %6, i32 1
7215 ; CHECK-NEXT: %51 = icmp eq i32 13, %10
7216 ; CHECK-NEXT: %52 = select i1 %51, i64 %50, i64 %49
7217 ; CHECK-NEXT: %53 = extractelement <2 x i64> %7, i32 0
7218 ; CHECK-NEXT: %54 = icmp eq i32 14, %10
7219 ; CHECK-NEXT: %55 = select i1 %54, i64 %53, i64 %52
7220 ; CHECK-NEXT: %56 = extractelement <2 x i64> %7, i32 1
7221 ; CHECK-NEXT: %57 = icmp eq i32 15, %10
7222 ; CHECK-NEXT: %58 = select i1 %57, i64 %56, i64 %55
7223 ; CHECK-NEXT: %59 = extractelement <2 x i64> %8, i32 0
7224 ; CHECK-NEXT: %60 = icmp eq i32 16, %10
7225 ; CHECK-NEXT: %61 = select i1 %60, i64 %59, i64 %58
7226 ; CHECK-NEXT: %62 = extractelement <2 x i64> %8, i32 1
7227 ; CHECK-NEXT: %63 = icmp eq i32 17, %10
7228 ; CHECK-NEXT: %64 = select i1 %63, i64 %62, i64 %61
7229 ; CHECK-NEXT: %65 = extractelement <2 x i64> %9, i32 0
7230 ; CHECK-NEXT: %66 = icmp eq i32 18, %10
7231 ; CHECK-NEXT: %67 = select i1 %66, i64 %65, i64 %64
7232 ; CHECK-NEXT: %68 = extractelement <2 x i64> %9, i32 1
7233 ; CHECK-NEXT: %69 = icmp eq i32 19, %10
7234 ; CHECK-NEXT: %70 = select i1 %69, i64 %68, i64 %67
7235 ; CHECK-NEXT: ret i64 %70
7236 ; CHECK-NEXT: }
7237
7238 define i8* @extract_20xi8ptr_var_idx(<20 x i8*>, i32) {
7239 entry:
7240 %2 = extractelement <20 x i8*> %0, i32 %1
7241 ret i8* %2
7242 }
7243 ; CHECK-LABEL: define i8* @extract_20xi8ptr_var_idx(<4 x i8*>, <4 x i8*>, <4 x i 8*>, <4 x i8*>, <4 x i8*>, i32) {
7244 ; CHECK: entry:
7245 ; CHECK-NEXT: %6 = extractelement <4 x i8*> %0, i32 0
7246 ; CHECK-NEXT: %7 = icmp eq i32 0, %5
7247 ; CHECK-NEXT: %8 = select i1 %7, i8* %6, i8* undef
7248 ; CHECK-NEXT: %9 = extractelement <4 x i8*> %0, i32 1
7249 ; CHECK-NEXT: %10 = icmp eq i32 1, %5
7250 ; CHECK-NEXT: %11 = select i1 %10, i8* %9, i8* %8
7251 ; CHECK-NEXT: %12 = extractelement <4 x i8*> %0, i32 2
7252 ; CHECK-NEXT: %13 = icmp eq i32 2, %5
7253 ; CHECK-NEXT: %14 = select i1 %13, i8* %12, i8* %11
7254 ; CHECK-NEXT: %15 = extractelement <4 x i8*> %0, i32 3
7255 ; CHECK-NEXT: %16 = icmp eq i32 3, %5
7256 ; CHECK-NEXT: %17 = select i1 %16, i8* %15, i8* %14
7257 ; CHECK-NEXT: %18 = extractelement <4 x i8*> %1, i32 0
7258 ; CHECK-NEXT: %19 = icmp eq i32 4, %5
7259 ; CHECK-NEXT: %20 = select i1 %19, i8* %18, i8* %17
7260 ; CHECK-NEXT: %21 = extractelement <4 x i8*> %1, i32 1
7261 ; CHECK-NEXT: %22 = icmp eq i32 5, %5
7262 ; CHECK-NEXT: %23 = select i1 %22, i8* %21, i8* %20
7263 ; CHECK-NEXT: %24 = extractelement <4 x i8*> %1, i32 2
7264 ; CHECK-NEXT: %25 = icmp eq i32 6, %5
7265 ; CHECK-NEXT: %26 = select i1 %25, i8* %24, i8* %23
7266 ; CHECK-NEXT: %27 = extractelement <4 x i8*> %1, i32 3
7267 ; CHECK-NEXT: %28 = icmp eq i32 7, %5
7268 ; CHECK-NEXT: %29 = select i1 %28, i8* %27, i8* %26
7269 ; CHECK-NEXT: %30 = extractelement <4 x i8*> %2, i32 0
7270 ; CHECK-NEXT: %31 = icmp eq i32 8, %5
7271 ; CHECK-NEXT: %32 = select i1 %31, i8* %30, i8* %29
7272 ; CHECK-NEXT: %33 = extractelement <4 x i8*> %2, i32 1
7273 ; CHECK-NEXT: %34 = icmp eq i32 9, %5
7274 ; CHECK-NEXT: %35 = select i1 %34, i8* %33, i8* %32
7275 ; CHECK-NEXT: %36 = extractelement <4 x i8*> %2, i32 2
7276 ; CHECK-NEXT: %37 = icmp eq i32 10, %5
7277 ; CHECK-NEXT: %38 = select i1 %37, i8* %36, i8* %35
7278 ; CHECK-NEXT: %39 = extractelement <4 x i8*> %2, i32 3
7279 ; CHECK-NEXT: %40 = icmp eq i32 11, %5
7280 ; CHECK-NEXT: %41 = select i1 %40, i8* %39, i8* %38
7281 ; CHECK-NEXT: %42 = extractelement <4 x i8*> %3, i32 0
7282 ; CHECK-NEXT: %43 = icmp eq i32 12, %5
7283 ; CHECK-NEXT: %44 = select i1 %43, i8* %42, i8* %41
7284 ; CHECK-NEXT: %45 = extractelement <4 x i8*> %3, i32 1
7285 ; CHECK-NEXT: %46 = icmp eq i32 13, %5
7286 ; CHECK-NEXT: %47 = select i1 %46, i8* %45, i8* %44
7287 ; CHECK-NEXT: %48 = extractelement <4 x i8*> %3, i32 2
7288 ; CHECK-NEXT: %49 = icmp eq i32 14, %5
7289 ; CHECK-NEXT: %50 = select i1 %49, i8* %48, i8* %47
7290 ; CHECK-NEXT: %51 = extractelement <4 x i8*> %3, i32 3
7291 ; CHECK-NEXT: %52 = icmp eq i32 15, %5
7292 ; CHECK-NEXT: %53 = select i1 %52, i8* %51, i8* %50
7293 ; CHECK-NEXT: %54 = extractelement <4 x i8*> %4, i32 0
7294 ; CHECK-NEXT: %55 = icmp eq i32 16, %5
7295 ; CHECK-NEXT: %56 = select i1 %55, i8* %54, i8* %53
7296 ; CHECK-NEXT: %57 = extractelement <4 x i8*> %4, i32 1
7297 ; CHECK-NEXT: %58 = icmp eq i32 17, %5
7298 ; CHECK-NEXT: %59 = select i1 %58, i8* %57, i8* %56
7299 ; CHECK-NEXT: %60 = extractelement <4 x i8*> %4, i32 2
7300 ; CHECK-NEXT: %61 = icmp eq i32 18, %5
7301 ; CHECK-NEXT: %62 = select i1 %61, i8* %60, i8* %59
7302 ; CHECK-NEXT: %63 = extractelement <4 x i8*> %4, i32 3
7303 ; CHECK-NEXT: %64 = icmp eq i32 19, %5
7304 ; CHECK-NEXT: %65 = select i1 %64, i8* %63, i8* %62
7305 ; CHECK-NEXT: ret i8* %65
7306 ; CHECK-NEXT: }
7307
7308 define float @extract_20xfloat_var_idx(<20 x float>, i32) {
7309 entry:
7310 %2 = extractelement <20 x float> %0, i32 %1
7311 ret float %2
7312 }
7313 ; CHECK-LABEL: define float @extract_20xfloat_var_idx(<4 x float>, <4 x float>, <4 x float>, <4 x float>, <4 x float>, i32) {
7314 ; CHECK: entry:
7315 ; CHECK-NEXT: %6 = extractelement <4 x float> %0, i32 0
7316 ; CHECK-NEXT: %7 = icmp eq i32 0, %5
7317 ; CHECK-NEXT: %8 = select i1 %7, float %6, float undef
7318 ; CHECK-NEXT: %9 = extractelement <4 x float> %0, i32 1
7319 ; CHECK-NEXT: %10 = icmp eq i32 1, %5
7320 ; CHECK-NEXT: %11 = select i1 %10, float %9, float %8
7321 ; CHECK-NEXT: %12 = extractelement <4 x float> %0, i32 2
7322 ; CHECK-NEXT: %13 = icmp eq i32 2, %5
7323 ; CHECK-NEXT: %14 = select i1 %13, float %12, float %11
7324 ; CHECK-NEXT: %15 = extractelement <4 x float> %0, i32 3
7325 ; CHECK-NEXT: %16 = icmp eq i32 3, %5
7326 ; CHECK-NEXT: %17 = select i1 %16, float %15, float %14
7327 ; CHECK-NEXT: %18 = extractelement <4 x float> %1, i32 0
7328 ; CHECK-NEXT: %19 = icmp eq i32 4, %5
7329 ; CHECK-NEXT: %20 = select i1 %19, float %18, float %17
7330 ; CHECK-NEXT: %21 = extractelement <4 x float> %1, i32 1
7331 ; CHECK-NEXT: %22 = icmp eq i32 5, %5
7332 ; CHECK-NEXT: %23 = select i1 %22, float %21, float %20
7333 ; CHECK-NEXT: %24 = extractelement <4 x float> %1, i32 2
7334 ; CHECK-NEXT: %25 = icmp eq i32 6, %5
7335 ; CHECK-NEXT: %26 = select i1 %25, float %24, float %23
7336 ; CHECK-NEXT: %27 = extractelement <4 x float> %1, i32 3
7337 ; CHECK-NEXT: %28 = icmp eq i32 7, %5
7338 ; CHECK-NEXT: %29 = select i1 %28, float %27, float %26
7339 ; CHECK-NEXT: %30 = extractelement <4 x float> %2, i32 0
7340 ; CHECK-NEXT: %31 = icmp eq i32 8, %5
7341 ; CHECK-NEXT: %32 = select i1 %31, float %30, float %29
7342 ; CHECK-NEXT: %33 = extractelement <4 x float> %2, i32 1
7343 ; CHECK-NEXT: %34 = icmp eq i32 9, %5
7344 ; CHECK-NEXT: %35 = select i1 %34, float %33, float %32
7345 ; CHECK-NEXT: %36 = extractelement <4 x float> %2, i32 2
7346 ; CHECK-NEXT: %37 = icmp eq i32 10, %5
7347 ; CHECK-NEXT: %38 = select i1 %37, float %36, float %35
7348 ; CHECK-NEXT: %39 = extractelement <4 x float> %2, i32 3
7349 ; CHECK-NEXT: %40 = icmp eq i32 11, %5
7350 ; CHECK-NEXT: %41 = select i1 %40, float %39, float %38
7351 ; CHECK-NEXT: %42 = extractelement <4 x float> %3, i32 0
7352 ; CHECK-NEXT: %43 = icmp eq i32 12, %5
7353 ; CHECK-NEXT: %44 = select i1 %43, float %42, float %41
7354 ; CHECK-NEXT: %45 = extractelement <4 x float> %3, i32 1
7355 ; CHECK-NEXT: %46 = icmp eq i32 13, %5
7356 ; CHECK-NEXT: %47 = select i1 %46, float %45, float %44
7357 ; CHECK-NEXT: %48 = extractelement <4 x float> %3, i32 2
7358 ; CHECK-NEXT: %49 = icmp eq i32 14, %5
7359 ; CHECK-NEXT: %50 = select i1 %49, float %48, float %47
7360 ; CHECK-NEXT: %51 = extractelement <4 x float> %3, i32 3
7361 ; CHECK-NEXT: %52 = icmp eq i32 15, %5
7362 ; CHECK-NEXT: %53 = select i1 %52, float %51, float %50
7363 ; CHECK-NEXT: %54 = extractelement <4 x float> %4, i32 0
7364 ; CHECK-NEXT: %55 = icmp eq i32 16, %5
7365 ; CHECK-NEXT: %56 = select i1 %55, float %54, float %53
7366 ; CHECK-NEXT: %57 = extractelement <4 x float> %4, i32 1
7367 ; CHECK-NEXT: %58 = icmp eq i32 17, %5
7368 ; CHECK-NEXT: %59 = select i1 %58, float %57, float %56
7369 ; CHECK-NEXT: %60 = extractelement <4 x float> %4, i32 2
7370 ; CHECK-NEXT: %61 = icmp eq i32 18, %5
7371 ; CHECK-NEXT: %62 = select i1 %61, float %60, float %59
7372 ; CHECK-NEXT: %63 = extractelement <4 x float> %4, i32 3
7373 ; CHECK-NEXT: %64 = icmp eq i32 19, %5
7374 ; CHECK-NEXT: %65 = select i1 %64, float %63, float %62
7375 ; CHECK-NEXT: ret float %65
7376 ; CHECK-NEXT: }
7377
7378 define double @extract_20xdouble_var_idx(<20 x double>, i32) {
7379 entry:
7380 %2 = extractelement <20 x double> %0, i32 %1
7381 ret double %2
7382 }
7383 ; CHECK-LABEL: define double @extract_20xdouble_var_idx(<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>, i32) {
7384 ; CHECK: entry:
7385 ; CHECK-NEXT: %11 = extractelement <2 x double> %0, i32 0
7386 ; CHECK-NEXT: %12 = icmp eq i32 0, %10
7387 ; CHECK-NEXT: %13 = select i1 %12, double %11, double undef
7388 ; CHECK-NEXT: %14 = extractelement <2 x double> %0, i32 1
7389 ; CHECK-NEXT: %15 = icmp eq i32 1, %10
7390 ; CHECK-NEXT: %16 = select i1 %15, double %14, double %13
7391 ; CHECK-NEXT: %17 = extractelement <2 x double> %1, i32 0
7392 ; CHECK-NEXT: %18 = icmp eq i32 2, %10
7393 ; CHECK-NEXT: %19 = select i1 %18, double %17, double %16
7394 ; CHECK-NEXT: %20 = extractelement <2 x double> %1, i32 1
7395 ; CHECK-NEXT: %21 = icmp eq i32 3, %10
7396 ; CHECK-NEXT: %22 = select i1 %21, double %20, double %19
7397 ; CHECK-NEXT: %23 = extractelement <2 x double> %2, i32 0
7398 ; CHECK-NEXT: %24 = icmp eq i32 4, %10
7399 ; CHECK-NEXT: %25 = select i1 %24, double %23, double %22
7400 ; CHECK-NEXT: %26 = extractelement <2 x double> %2, i32 1
7401 ; CHECK-NEXT: %27 = icmp eq i32 5, %10
7402 ; CHECK-NEXT: %28 = select i1 %27, double %26, double %25
7403 ; CHECK-NEXT: %29 = extractelement <2 x double> %3, i32 0
7404 ; CHECK-NEXT: %30 = icmp eq i32 6, %10
7405 ; CHECK-NEXT: %31 = select i1 %30, double %29, double %28
7406 ; CHECK-NEXT: %32 = extractelement <2 x double> %3, i32 1
7407 ; CHECK-NEXT: %33 = icmp eq i32 7, %10
7408 ; CHECK-NEXT: %34 = select i1 %33, double %32, double %31
7409 ; CHECK-NEXT: %35 = extractelement <2 x double> %4, i32 0
7410 ; CHECK-NEXT: %36 = icmp eq i32 8, %10
7411 ; CHECK-NEXT: %37 = select i1 %36, double %35, double %34
7412 ; CHECK-NEXT: %38 = extractelement <2 x double> %4, i32 1
7413 ; CHECK-NEXT: %39 = icmp eq i32 9, %10
7414 ; CHECK-NEXT: %40 = select i1 %39, double %38, double %37
7415 ; CHECK-NEXT: %41 = extractelement <2 x double> %5, i32 0
7416 ; CHECK-NEXT: %42 = icmp eq i32 10, %10
7417 ; CHECK-NEXT: %43 = select i1 %42, double %41, double %40
7418 ; CHECK-NEXT: %44 = extractelement <2 x double> %5, i32 1
7419 ; CHECK-NEXT: %45 = icmp eq i32 11, %10
7420 ; CHECK-NEXT: %46 = select i1 %45, double %44, double %43
7421 ; CHECK-NEXT: %47 = extractelement <2 x double> %6, i32 0
7422 ; CHECK-NEXT: %48 = icmp eq i32 12, %10
7423 ; CHECK-NEXT: %49 = select i1 %48, double %47, double %46
7424 ; CHECK-NEXT: %50 = extractelement <2 x double> %6, i32 1
7425 ; CHECK-NEXT: %51 = icmp eq i32 13, %10
7426 ; CHECK-NEXT: %52 = select i1 %51, double %50, double %49
7427 ; CHECK-NEXT: %53 = extractelement <2 x double> %7, i32 0
7428 ; CHECK-NEXT: %54 = icmp eq i32 14, %10
7429 ; CHECK-NEXT: %55 = select i1 %54, double %53, double %52
7430 ; CHECK-NEXT: %56 = extractelement <2 x double> %7, i32 1
7431 ; CHECK-NEXT: %57 = icmp eq i32 15, %10
7432 ; CHECK-NEXT: %58 = select i1 %57, double %56, double %55
7433 ; CHECK-NEXT: %59 = extractelement <2 x double> %8, i32 0
7434 ; CHECK-NEXT: %60 = icmp eq i32 16, %10
7435 ; CHECK-NEXT: %61 = select i1 %60, double %59, double %58
7436 ; CHECK-NEXT: %62 = extractelement <2 x double> %8, i32 1
7437 ; CHECK-NEXT: %63 = icmp eq i32 17, %10
7438 ; CHECK-NEXT: %64 = select i1 %63, double %62, double %61
7439 ; CHECK-NEXT: %65 = extractelement <2 x double> %9, i32 0
7440 ; CHECK-NEXT: %66 = icmp eq i32 18, %10
7441 ; CHECK-NEXT: %67 = select i1 %66, double %65, double %64
7442 ; CHECK-NEXT: %68 = extractelement <2 x double> %9, i32 1
7443 ; CHECK-NEXT: %69 = icmp eq i32 19, %10
7444 ; CHECK-NEXT: %70 = select i1 %69, double %68, double %67
7445 ; CHECK-NEXT: ret double %70
7446 ; CHECK-NEXT: }
7447
OLDNEW
« no previous file with comments | « test/Transforms/NaCl/vector-canonicalization-cmps.ll ('k') | test/Transforms/NaCl/vector-canonicalization-inserts.ll » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698