1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; NOTE: Test functions have been generated by multivalue-stackify.py.
4 ; RUN: llc < %s -verify-machineinstrs -mattr=+multivalue | FileCheck %s
6 ; Test that the multivalue stackification works
8 target triple = "wasm32-unknown-unknown"
10 declare {i32} @op_0_to_1()
11 declare {i32, i32} @op_0_to_2()
12 declare {i32, i32, i32} @op_0_to_3()
13 declare void @op_1_to_0(i32 %t0)
14 declare {i32} @op_1_to_1(i32 %t0)
15 declare {i32, i32} @op_1_to_2(i32 %t0)
16 declare {i32, i32, i32} @op_1_to_3(i32 %t0)
17 declare void @op_2_to_0(i32 %t0, i32 %t1)
18 declare {i32} @op_2_to_1(i32 %t0, i32 %t1)
19 declare {i32, i32} @op_2_to_2(i32 %t0, i32 %t1)
20 declare {i32, i32, i32} @op_2_to_3(i32 %t0, i32 %t1)
24 ; CHECK: .functype f2 () -> ()
25 ; CHECK-NEXT: # %bb.0:
26 ; CHECK-NEXT: call op_0_to_2
29 ; CHECK-NEXT: # fallthrough-return
30 %t0 = call {i32, i32} @op_0_to_2()
36 ; CHECK: .functype f3 () -> ()
37 ; CHECK-NEXT: # %bb.0:
38 ; CHECK-NEXT: call op_0_to_3
42 ; CHECK-NEXT: # fallthrough-return
43 %t0 = call {i32, i32, i32} @op_0_to_3()
49 ; CHECK: .functype f12 () -> ()
50 ; CHECK-NEXT: # %bb.0:
51 ; CHECK-NEXT: call op_0_to_2
53 ; CHECK-NEXT: call op_1_to_0
54 ; CHECK-NEXT: # fallthrough-return
55 %t0 = call {i32, i32} @op_0_to_2()
56 %t1 = extractvalue {i32, i32} %t0, 0
57 call void @op_1_to_0(i32 %t1)
63 ; CHECK: .functype f13 () -> ()
64 ; CHECK-NEXT: .local i32
65 ; CHECK-NEXT: # %bb.0:
66 ; CHECK-NEXT: call op_0_to_2
67 ; CHECK-NEXT: local.set 0
69 ; CHECK-NEXT: local.get 0
70 ; CHECK-NEXT: call op_1_to_0
71 ; CHECK-NEXT: # fallthrough-return
72 %t0 = call {i32, i32} @op_0_to_2()
73 %t1 = extractvalue {i32, i32} %t0, 1
74 call void @op_1_to_0(i32 %t1)
80 ; CHECK: .functype f14 () -> ()
81 ; CHECK-NEXT: .local i32
82 ; CHECK-NEXT: # %bb.0:
83 ; CHECK-NEXT: call op_0_to_2
85 ; CHECK-NEXT: local.tee 0
86 ; CHECK-NEXT: local.get 0
87 ; CHECK-NEXT: call op_2_to_0
88 ; CHECK-NEXT: # fallthrough-return
89 %t0 = call {i32, i32} @op_0_to_2()
90 %t1 = extractvalue {i32, i32} %t0, 0
91 %t2 = extractvalue {i32, i32} %t0, 0
92 call void @op_2_to_0(i32 %t1, i32 %t2)
98 ; CHECK: .functype f15 () -> ()
99 ; CHECK-NEXT: # %bb.0:
100 ; CHECK-NEXT: call op_0_to_2
101 ; CHECK-NEXT: call op_2_to_0
102 ; CHECK-NEXT: # fallthrough-return
103 %t0 = call {i32, i32} @op_0_to_2()
104 %t1 = extractvalue {i32, i32} %t0, 0
105 %t2 = extractvalue {i32, i32} %t0, 1
106 call void @op_2_to_0(i32 %t1, i32 %t2)
112 ; CHECK: .functype f16 () -> ()
113 ; CHECK-NEXT: .local i32, i32
114 ; CHECK-NEXT: # %bb.0:
115 ; CHECK-NEXT: call op_0_to_2
116 ; CHECK-NEXT: local.set 1
117 ; CHECK-NEXT: local.set 0
118 ; CHECK-NEXT: local.get 1
119 ; CHECK-NEXT: local.get 0
120 ; CHECK-NEXT: call op_2_to_0
121 ; CHECK-NEXT: # fallthrough-return
122 %t0 = call {i32, i32} @op_0_to_2()
123 %t1 = extractvalue {i32, i32} %t0, 1
124 %t2 = extractvalue {i32, i32} %t0, 0
125 call void @op_2_to_0(i32 %t1, i32 %t2)
131 ; CHECK: .functype f17 () -> ()
132 ; CHECK-NEXT: .local i32
133 ; CHECK-NEXT: # %bb.0:
134 ; CHECK-NEXT: call op_0_to_2
135 ; CHECK-NEXT: local.set 0
137 ; CHECK-NEXT: local.get 0
138 ; CHECK-NEXT: local.get 0
139 ; CHECK-NEXT: call op_2_to_0
140 ; CHECK-NEXT: # fallthrough-return
141 %t0 = call {i32, i32} @op_0_to_2()
142 %t1 = extractvalue {i32, i32} %t0, 1
143 %t2 = extractvalue {i32, i32} %t0, 1
144 call void @op_2_to_0(i32 %t1, i32 %t2)
150 ; CHECK: .functype f25 () -> ()
151 ; CHECK-NEXT: # %bb.0:
152 ; CHECK-NEXT: call op_0_to_3
155 ; CHECK-NEXT: call op_1_to_0
156 ; CHECK-NEXT: # fallthrough-return
157 %t0 = call {i32, i32, i32} @op_0_to_3()
158 %t1 = extractvalue {i32, i32, i32} %t0, 0
159 call void @op_1_to_0(i32 %t1)
165 ; CHECK: .functype f26 () -> ()
166 ; CHECK-NEXT: .local i32
167 ; CHECK-NEXT: # %bb.0:
168 ; CHECK-NEXT: call op_0_to_3
170 ; CHECK-NEXT: local.set 0
172 ; CHECK-NEXT: local.get 0
173 ; CHECK-NEXT: call op_1_to_0
174 ; CHECK-NEXT: # fallthrough-return
175 %t0 = call {i32, i32, i32} @op_0_to_3()
176 %t1 = extractvalue {i32, i32, i32} %t0, 1
177 call void @op_1_to_0(i32 %t1)
183 ; CHECK: .functype f27 () -> ()
184 ; CHECK-NEXT: .local i32
185 ; CHECK-NEXT: # %bb.0:
186 ; CHECK-NEXT: call op_0_to_3
187 ; CHECK-NEXT: local.set 0
190 ; CHECK-NEXT: local.get 0
191 ; CHECK-NEXT: call op_1_to_0
192 ; CHECK-NEXT: # fallthrough-return
193 %t0 = call {i32, i32, i32} @op_0_to_3()
194 %t1 = extractvalue {i32, i32, i32} %t0, 2
195 call void @op_1_to_0(i32 %t1)
201 ; CHECK: .functype f28 () -> ()
202 ; CHECK-NEXT: .local i32
203 ; CHECK-NEXT: # %bb.0:
204 ; CHECK-NEXT: call op_0_to_3
207 ; CHECK-NEXT: local.tee 0
208 ; CHECK-NEXT: local.get 0
209 ; CHECK-NEXT: call op_2_to_0
210 ; CHECK-NEXT: # fallthrough-return
211 %t0 = call {i32, i32, i32} @op_0_to_3()
212 %t1 = extractvalue {i32, i32, i32} %t0, 0
213 %t2 = extractvalue {i32, i32, i32} %t0, 0
214 call void @op_2_to_0(i32 %t1, i32 %t2)
220 ; CHECK: .functype f29 () -> ()
221 ; CHECK-NEXT: # %bb.0:
222 ; CHECK-NEXT: call op_0_to_3
224 ; CHECK-NEXT: call op_2_to_0
225 ; CHECK-NEXT: # fallthrough-return
226 %t0 = call {i32, i32, i32} @op_0_to_3()
227 %t1 = extractvalue {i32, i32, i32} %t0, 0
228 %t2 = extractvalue {i32, i32, i32} %t0, 1
229 call void @op_2_to_0(i32 %t1, i32 %t2)
235 ; CHECK: .functype f30 () -> ()
236 ; CHECK-NEXT: .local i32
237 ; CHECK-NEXT: # %bb.0:
238 ; CHECK-NEXT: call op_0_to_3
239 ; CHECK-NEXT: local.set 0
241 ; CHECK-NEXT: local.get 0
242 ; CHECK-NEXT: call op_2_to_0
243 ; CHECK-NEXT: # fallthrough-return
244 %t0 = call {i32, i32, i32} @op_0_to_3()
245 %t1 = extractvalue {i32, i32, i32} %t0, 0
246 %t2 = extractvalue {i32, i32, i32} %t0, 2
247 call void @op_2_to_0(i32 %t1, i32 %t2)
253 ; CHECK: .functype f31 () -> ()
254 ; CHECK-NEXT: .local i32, i32
255 ; CHECK-NEXT: # %bb.0:
256 ; CHECK-NEXT: call op_0_to_3
258 ; CHECK-NEXT: local.set 1
259 ; CHECK-NEXT: local.set 0
260 ; CHECK-NEXT: local.get 1
261 ; CHECK-NEXT: local.get 0
262 ; CHECK-NEXT: call op_2_to_0
263 ; CHECK-NEXT: # fallthrough-return
264 %t0 = call {i32, i32, i32} @op_0_to_3()
265 %t1 = extractvalue {i32, i32, i32} %t0, 1
266 %t2 = extractvalue {i32, i32, i32} %t0, 0
267 call void @op_2_to_0(i32 %t1, i32 %t2)
273 ; CHECK: .functype f32 () -> ()
274 ; CHECK-NEXT: .local i32
275 ; CHECK-NEXT: # %bb.0:
276 ; CHECK-NEXT: call op_0_to_3
278 ; CHECK-NEXT: local.set 0
280 ; CHECK-NEXT: local.get 0
281 ; CHECK-NEXT: local.get 0
282 ; CHECK-NEXT: call op_2_to_0
283 ; CHECK-NEXT: # fallthrough-return
284 %t0 = call {i32, i32, i32} @op_0_to_3()
285 %t1 = extractvalue {i32, i32, i32} %t0, 1
286 %t2 = extractvalue {i32, i32, i32} %t0, 1
287 call void @op_2_to_0(i32 %t1, i32 %t2)
293 ; CHECK: .functype f33 () -> ()
294 ; CHECK-NEXT: .local i32, i32
295 ; CHECK-NEXT: # %bb.0:
296 ; CHECK-NEXT: call op_0_to_3
297 ; CHECK-NEXT: local.set 1
298 ; CHECK-NEXT: local.set 0
300 ; CHECK-NEXT: local.get 0
301 ; CHECK-NEXT: local.get 1
302 ; CHECK-NEXT: call op_2_to_0
303 ; CHECK-NEXT: # fallthrough-return
304 %t0 = call {i32, i32, i32} @op_0_to_3()
305 %t1 = extractvalue {i32, i32, i32} %t0, 1
306 %t2 = extractvalue {i32, i32, i32} %t0, 2
307 call void @op_2_to_0(i32 %t1, i32 %t2)
313 ; CHECK: .functype f34 () -> ()
314 ; CHECK-NEXT: .local i32, i32
315 ; CHECK-NEXT: # %bb.0:
316 ; CHECK-NEXT: call op_0_to_3
317 ; CHECK-NEXT: local.set 1
319 ; CHECK-NEXT: local.set 0
320 ; CHECK-NEXT: local.get 1
321 ; CHECK-NEXT: local.get 0
322 ; CHECK-NEXT: call op_2_to_0
323 ; CHECK-NEXT: # fallthrough-return
324 %t0 = call {i32, i32, i32} @op_0_to_3()
325 %t1 = extractvalue {i32, i32, i32} %t0, 2
326 %t2 = extractvalue {i32, i32, i32} %t0, 0
327 call void @op_2_to_0(i32 %t1, i32 %t2)
333 ; CHECK: .functype f35 () -> ()
334 ; CHECK-NEXT: .local i32, i32
335 ; CHECK-NEXT: # %bb.0:
336 ; CHECK-NEXT: call op_0_to_3
337 ; CHECK-NEXT: local.set 1
338 ; CHECK-NEXT: local.set 0
340 ; CHECK-NEXT: local.get 1
341 ; CHECK-NEXT: local.get 0
342 ; CHECK-NEXT: call op_2_to_0
343 ; CHECK-NEXT: # fallthrough-return
344 %t0 = call {i32, i32, i32} @op_0_to_3()
345 %t1 = extractvalue {i32, i32, i32} %t0, 2
346 %t2 = extractvalue {i32, i32, i32} %t0, 1
347 call void @op_2_to_0(i32 %t1, i32 %t2)
353 ; CHECK: .functype f36 () -> ()
354 ; CHECK-NEXT: .local i32
355 ; CHECK-NEXT: # %bb.0:
356 ; CHECK-NEXT: call op_0_to_3
357 ; CHECK-NEXT: local.set 0
360 ; CHECK-NEXT: local.get 0
361 ; CHECK-NEXT: local.get 0
362 ; CHECK-NEXT: call op_2_to_0
363 ; CHECK-NEXT: # fallthrough-return
364 %t0 = call {i32, i32, i32} @op_0_to_3()
365 %t1 = extractvalue {i32, i32, i32} %t0, 2
366 %t2 = extractvalue {i32, i32, i32} %t0, 2
367 call void @op_2_to_0(i32 %t1, i32 %t2)
371 define void @f129() {
373 ; CHECK: .functype f129 () -> ()
374 ; CHECK-NEXT: .local i32
375 ; CHECK-NEXT: # %bb.0:
376 ; CHECK-NEXT: call op_0_to_2
377 ; CHECK-NEXT: local.set 0
378 ; CHECK-NEXT: call op_1_to_0
379 ; CHECK-NEXT: local.get 0
380 ; CHECK-NEXT: call op_1_to_0
381 ; CHECK-NEXT: # fallthrough-return
382 %t0 = call {i32, i32} @op_0_to_2()
383 %t1 = extractvalue {i32, i32} %t0, 0
384 call void @op_1_to_0(i32 %t1)
385 %t2 = extractvalue {i32, i32} %t0, 1
386 call void @op_1_to_0(i32 %t2)
390 define void @f131() {
392 ; CHECK: .functype f131 () -> ()
393 ; CHECK-NEXT: .local i32, i32
394 ; CHECK-NEXT: # %bb.0:
395 ; CHECK-NEXT: call op_0_to_2
396 ; CHECK-NEXT: local.set 0
397 ; CHECK-NEXT: local.tee 1
398 ; CHECK-NEXT: call op_1_to_0
399 ; CHECK-NEXT: local.get 1
400 ; CHECK-NEXT: local.get 0
401 ; CHECK-NEXT: call op_2_to_0
402 ; CHECK-NEXT: # fallthrough-return
403 %t0 = call {i32, i32} @op_0_to_2()
404 %t1 = extractvalue {i32, i32} %t0, 0
405 call void @op_1_to_0(i32 %t1)
406 %t2 = extractvalue {i32, i32} %t0, 0
407 %t3 = extractvalue {i32, i32} %t0, 1
408 call void @op_2_to_0(i32 %t2, i32 %t3)
412 define void @f132() {
414 ; CHECK: .functype f132 () -> ()
415 ; CHECK-NEXT: .local i32, i32
416 ; CHECK-NEXT: # %bb.0:
417 ; CHECK-NEXT: call op_0_to_2
418 ; CHECK-NEXT: local.set 0
419 ; CHECK-NEXT: local.tee 1
420 ; CHECK-NEXT: call op_1_to_0
421 ; CHECK-NEXT: local.get 0
422 ; CHECK-NEXT: local.get 1
423 ; CHECK-NEXT: call op_2_to_0
424 ; CHECK-NEXT: # fallthrough-return
425 %t0 = call {i32, i32} @op_0_to_2()
426 %t1 = extractvalue {i32, i32} %t0, 0
427 call void @op_1_to_0(i32 %t1)
428 %t2 = extractvalue {i32, i32} %t0, 1
429 %t3 = extractvalue {i32, i32} %t0, 0
430 call void @op_2_to_0(i32 %t2, i32 %t3)
434 define void @f133() {
436 ; CHECK: .functype f133 () -> ()
437 ; CHECK-NEXT: .local i32
438 ; CHECK-NEXT: # %bb.0:
439 ; CHECK-NEXT: call op_0_to_2
440 ; CHECK-NEXT: local.set 0
441 ; CHECK-NEXT: call op_1_to_0
442 ; CHECK-NEXT: local.get 0
443 ; CHECK-NEXT: local.get 0
444 ; CHECK-NEXT: call op_2_to_0
445 ; CHECK-NEXT: # fallthrough-return
446 %t0 = call {i32, i32} @op_0_to_2()
447 %t1 = extractvalue {i32, i32} %t0, 0
448 call void @op_1_to_0(i32 %t1)
449 %t2 = extractvalue {i32, i32} %t0, 1
450 %t3 = extractvalue {i32, i32} %t0, 1
451 call void @op_2_to_0(i32 %t2, i32 %t3)
455 define void @f141() {
457 ; CHECK: .functype f141 () -> ()
458 ; CHECK-NEXT: .local i32, i32
459 ; CHECK-NEXT: # %bb.0:
460 ; CHECK-NEXT: call op_0_to_2
461 ; CHECK-NEXT: local.set 1
462 ; CHECK-NEXT: local.set 0
463 ; CHECK-NEXT: local.get 1
464 ; CHECK-NEXT: call op_1_to_0
465 ; CHECK-NEXT: local.get 0
466 ; CHECK-NEXT: call op_1_to_0
467 ; CHECK-NEXT: # fallthrough-return
468 %t0 = call {i32, i32} @op_0_to_2()
469 %t1 = extractvalue {i32, i32} %t0, 1
470 call void @op_1_to_0(i32 %t1)
471 %t2 = extractvalue {i32, i32} %t0, 0
472 call void @op_1_to_0(i32 %t2)
476 define void @f143() {
478 ; CHECK: .functype f143 () -> ()
479 ; CHECK-NEXT: .local i32, i32
480 ; CHECK-NEXT: # %bb.0:
481 ; CHECK-NEXT: call op_0_to_2
482 ; CHECK-NEXT: local.set 1
483 ; CHECK-NEXT: local.set 0
484 ; CHECK-NEXT: local.get 1
485 ; CHECK-NEXT: call op_1_to_0
486 ; CHECK-NEXT: local.get 0
487 ; CHECK-NEXT: local.get 0
488 ; CHECK-NEXT: call op_2_to_0
489 ; CHECK-NEXT: # fallthrough-return
490 %t0 = call {i32, i32} @op_0_to_2()
491 %t1 = extractvalue {i32, i32} %t0, 1
492 call void @op_1_to_0(i32 %t1)
493 %t2 = extractvalue {i32, i32} %t0, 0
494 %t3 = extractvalue {i32, i32} %t0, 0
495 call void @op_2_to_0(i32 %t2, i32 %t3)
499 define void @f144() {
501 ; CHECK: .functype f144 () -> ()
502 ; CHECK-NEXT: .local i32, i32
503 ; CHECK-NEXT: # %bb.0:
504 ; CHECK-NEXT: call op_0_to_2
505 ; CHECK-NEXT: local.set 1
506 ; CHECK-NEXT: local.set 0
507 ; CHECK-NEXT: local.get 1
508 ; CHECK-NEXT: call op_1_to_0
509 ; CHECK-NEXT: local.get 0
510 ; CHECK-NEXT: local.get 1
511 ; CHECK-NEXT: call op_2_to_0
512 ; CHECK-NEXT: # fallthrough-return
513 %t0 = call {i32, i32} @op_0_to_2()
514 %t1 = extractvalue {i32, i32} %t0, 1
515 call void @op_1_to_0(i32 %t1)
516 %t2 = extractvalue {i32, i32} %t0, 0
517 %t3 = extractvalue {i32, i32} %t0, 1
518 call void @op_2_to_0(i32 %t2, i32 %t3)
522 define void @f145() {
524 ; CHECK: .functype f145 () -> ()
525 ; CHECK-NEXT: .local i32, i32
526 ; CHECK-NEXT: # %bb.0:
527 ; CHECK-NEXT: call op_0_to_2
528 ; CHECK-NEXT: local.set 1
529 ; CHECK-NEXT: local.set 0
530 ; CHECK-NEXT: local.get 1
531 ; CHECK-NEXT: call op_1_to_0
532 ; CHECK-NEXT: local.get 1
533 ; CHECK-NEXT: local.get 0
534 ; CHECK-NEXT: call op_2_to_0
535 ; CHECK-NEXT: # fallthrough-return
536 %t0 = call {i32, i32} @op_0_to_2()
537 %t1 = extractvalue {i32, i32} %t0, 1
538 call void @op_1_to_0(i32 %t1)
539 %t2 = extractvalue {i32, i32} %t0, 1
540 %t3 = extractvalue {i32, i32} %t0, 0
541 call void @op_2_to_0(i32 %t2, i32 %t3)
545 define void @f155() {
547 ; CHECK: .functype f155 () -> ()
548 ; CHECK-NEXT: .local i32, i32
549 ; CHECK-NEXT: # %bb.0:
550 ; CHECK-NEXT: call op_0_to_2
551 ; CHECK-NEXT: local.set 0
552 ; CHECK-NEXT: local.tee 1
553 ; CHECK-NEXT: local.get 1
554 ; CHECK-NEXT: call op_2_to_0
555 ; CHECK-NEXT: local.get 0
556 ; CHECK-NEXT: call op_1_to_0
557 ; CHECK-NEXT: # fallthrough-return
558 %t0 = call {i32, i32} @op_0_to_2()
559 %t1 = extractvalue {i32, i32} %t0, 0
560 %t2 = extractvalue {i32, i32} %t0, 0
561 call void @op_2_to_0(i32 %t1, i32 %t2)
562 %t3 = extractvalue {i32, i32} %t0, 1
563 call void @op_1_to_0(i32 %t3)
567 define void @f159() {
569 ; CHECK: .functype f159 () -> ()
570 ; CHECK-NEXT: .local i32, i32
571 ; CHECK-NEXT: # %bb.0:
572 ; CHECK-NEXT: call op_0_to_2
573 ; CHECK-NEXT: local.set 0
574 ; CHECK-NEXT: local.tee 1
575 ; CHECK-NEXT: local.get 1
576 ; CHECK-NEXT: call op_2_to_0
577 ; CHECK-NEXT: local.get 0
578 ; CHECK-NEXT: local.get 0
579 ; CHECK-NEXT: call op_2_to_0
580 ; CHECK-NEXT: # fallthrough-return
581 %t0 = call {i32, i32} @op_0_to_2()
582 %t1 = extractvalue {i32, i32} %t0, 0
583 %t2 = extractvalue {i32, i32} %t0, 0
584 call void @op_2_to_0(i32 %t1, i32 %t2)
585 %t3 = extractvalue {i32, i32} %t0, 1
586 %t4 = extractvalue {i32, i32} %t0, 1
587 call void @op_2_to_0(i32 %t3, i32 %t4)
591 define void @f167() {
593 ; CHECK: .functype f167 () -> ()
594 ; CHECK-NEXT: .local i32, i32
595 ; CHECK-NEXT: # %bb.0:
596 ; CHECK-NEXT: call op_0_to_2
597 ; CHECK-NEXT: local.set 0
598 ; CHECK-NEXT: local.tee 1
599 ; CHECK-NEXT: local.get 0
600 ; CHECK-NEXT: call op_2_to_0
601 ; CHECK-NEXT: local.get 1
602 ; CHECK-NEXT: call op_1_to_0
603 ; CHECK-NEXT: # fallthrough-return
604 %t0 = call {i32, i32} @op_0_to_2()
605 %t1 = extractvalue {i32, i32} %t0, 0
606 %t2 = extractvalue {i32, i32} %t0, 1
607 call void @op_2_to_0(i32 %t1, i32 %t2)
608 %t3 = extractvalue {i32, i32} %t0, 0
609 call void @op_1_to_0(i32 %t3)
613 define void @f168() {
615 ; CHECK: .functype f168 () -> ()
616 ; CHECK-NEXT: .local i32
617 ; CHECK-NEXT: # %bb.0:
618 ; CHECK-NEXT: call op_0_to_2
619 ; CHECK-NEXT: local.set 0
620 ; CHECK-NEXT: local.get 0
621 ; CHECK-NEXT: call op_2_to_0
622 ; CHECK-NEXT: local.get 0
623 ; CHECK-NEXT: call op_1_to_0
624 ; CHECK-NEXT: # fallthrough-return
625 %t0 = call {i32, i32} @op_0_to_2()
626 %t1 = extractvalue {i32, i32} %t0, 0
627 %t2 = extractvalue {i32, i32} %t0, 1
628 call void @op_2_to_0(i32 %t1, i32 %t2)
629 %t3 = extractvalue {i32, i32} %t0, 1
630 call void @op_1_to_0(i32 %t3)
634 define void @f171() {
636 ; CHECK: .functype f171 () -> ()
637 ; CHECK-NEXT: .local i32, i32
638 ; CHECK-NEXT: # %bb.0:
639 ; CHECK-NEXT: call op_0_to_2
640 ; CHECK-NEXT: local.set 0
641 ; CHECK-NEXT: local.tee 1
642 ; CHECK-NEXT: local.get 0
643 ; CHECK-NEXT: call op_2_to_0
644 ; CHECK-NEXT: local.get 0
645 ; CHECK-NEXT: local.get 1
646 ; CHECK-NEXT: call op_2_to_0
647 ; CHECK-NEXT: # fallthrough-return
648 %t0 = call {i32, i32} @op_0_to_2()
649 %t1 = extractvalue {i32, i32} %t0, 0
650 %t2 = extractvalue {i32, i32} %t0, 1
651 call void @op_2_to_0(i32 %t1, i32 %t2)
652 %t3 = extractvalue {i32, i32} %t0, 1
653 %t4 = extractvalue {i32, i32} %t0, 0
654 call void @op_2_to_0(i32 %t3, i32 %t4)
658 define void @f180() {
660 ; CHECK: .functype f180 () -> ()
661 ; CHECK-NEXT: .local i32, i32
662 ; CHECK-NEXT: # %bb.0:
663 ; CHECK-NEXT: call op_0_to_2
664 ; CHECK-NEXT: local.set 1
665 ; CHECK-NEXT: local.set 0
666 ; CHECK-NEXT: local.get 1
667 ; CHECK-NEXT: local.get 0
668 ; CHECK-NEXT: call op_2_to_0
669 ; CHECK-NEXT: local.get 0
670 ; CHECK-NEXT: call op_1_to_0
671 ; CHECK-NEXT: # fallthrough-return
672 %t0 = call {i32, i32} @op_0_to_2()
673 %t1 = extractvalue {i32, i32} %t0, 1
674 %t2 = extractvalue {i32, i32} %t0, 0
675 call void @op_2_to_0(i32 %t1, i32 %t2)
676 %t3 = extractvalue {i32, i32} %t0, 0
677 call void @op_1_to_0(i32 %t3)
681 define void @f181() {
683 ; CHECK: .functype f181 () -> ()
684 ; CHECK-NEXT: .local i32, i32
685 ; CHECK-NEXT: # %bb.0:
686 ; CHECK-NEXT: call op_0_to_2
687 ; CHECK-NEXT: local.set 1
688 ; CHECK-NEXT: local.set 0
689 ; CHECK-NEXT: local.get 1
690 ; CHECK-NEXT: local.get 0
691 ; CHECK-NEXT: call op_2_to_0
692 ; CHECK-NEXT: local.get 1
693 ; CHECK-NEXT: call op_1_to_0
694 ; CHECK-NEXT: # fallthrough-return
695 %t0 = call {i32, i32} @op_0_to_2()
696 %t1 = extractvalue {i32, i32} %t0, 1
697 %t2 = extractvalue {i32, i32} %t0, 0
698 call void @op_2_to_0(i32 %t1, i32 %t2)
699 %t3 = extractvalue {i32, i32} %t0, 1
700 call void @op_1_to_0(i32 %t3)
704 define void @f183() {
706 ; CHECK: .functype f183 () -> ()
707 ; CHECK-NEXT: .local i32, i32
708 ; CHECK-NEXT: # %bb.0:
709 ; CHECK-NEXT: call op_0_to_2
710 ; CHECK-NEXT: local.set 1
711 ; CHECK-NEXT: local.set 0
712 ; CHECK-NEXT: local.get 1
713 ; CHECK-NEXT: local.get 0
714 ; CHECK-NEXT: call op_2_to_0
715 ; CHECK-NEXT: local.get 0
716 ; CHECK-NEXT: local.get 1
717 ; CHECK-NEXT: call op_2_to_0
718 ; CHECK-NEXT: # fallthrough-return
719 %t0 = call {i32, i32} @op_0_to_2()
720 %t1 = extractvalue {i32, i32} %t0, 1
721 %t2 = extractvalue {i32, i32} %t0, 0
722 call void @op_2_to_0(i32 %t1, i32 %t2)
723 %t3 = extractvalue {i32, i32} %t0, 0
724 %t4 = extractvalue {i32, i32} %t0, 1
725 call void @op_2_to_0(i32 %t3, i32 %t4)
729 define void @f193() {
731 ; CHECK: .functype f193 () -> ()
732 ; CHECK-NEXT: .local i32, i32
733 ; CHECK-NEXT: # %bb.0:
734 ; CHECK-NEXT: call op_0_to_2
735 ; CHECK-NEXT: local.set 1
736 ; CHECK-NEXT: local.set 0
737 ; CHECK-NEXT: local.get 1
738 ; CHECK-NEXT: local.get 1
739 ; CHECK-NEXT: call op_2_to_0
740 ; CHECK-NEXT: local.get 0
741 ; CHECK-NEXT: call op_1_to_0
742 ; CHECK-NEXT: # fallthrough-return
743 %t0 = call {i32, i32} @op_0_to_2()
744 %t1 = extractvalue {i32, i32} %t0, 1
745 %t2 = extractvalue {i32, i32} %t0, 1
746 call void @op_2_to_0(i32 %t1, i32 %t2)
747 %t3 = extractvalue {i32, i32} %t0, 0
748 call void @op_1_to_0(i32 %t3)
752 define void @f195() {
754 ; CHECK: .functype f195 () -> ()
755 ; CHECK-NEXT: .local i32, i32
756 ; CHECK-NEXT: # %bb.0:
757 ; CHECK-NEXT: call op_0_to_2
758 ; CHECK-NEXT: local.set 1
759 ; CHECK-NEXT: local.set 0
760 ; CHECK-NEXT: local.get 1
761 ; CHECK-NEXT: local.get 1
762 ; CHECK-NEXT: call op_2_to_0
763 ; CHECK-NEXT: local.get 0
764 ; CHECK-NEXT: local.get 0
765 ; CHECK-NEXT: call op_2_to_0
766 ; CHECK-NEXT: # fallthrough-return
767 %t0 = call {i32, i32} @op_0_to_2()
768 %t1 = extractvalue {i32, i32} %t0, 1
769 %t2 = extractvalue {i32, i32} %t0, 1
770 call void @op_2_to_0(i32 %t1, i32 %t2)
771 %t3 = extractvalue {i32, i32} %t0, 0
772 %t4 = extractvalue {i32, i32} %t0, 0
773 call void @op_2_to_0(i32 %t3, i32 %t4)
777 define void @f291() {
779 ; CHECK: .functype f291 () -> ()
780 ; CHECK-NEXT: .local i32
781 ; CHECK-NEXT: # %bb.0:
782 ; CHECK-NEXT: call op_0_to_3
784 ; CHECK-NEXT: local.set 0
785 ; CHECK-NEXT: call op_1_to_0
786 ; CHECK-NEXT: local.get 0
787 ; CHECK-NEXT: call op_1_to_0
788 ; CHECK-NEXT: # fallthrough-return
789 %t0 = call {i32, i32, i32} @op_0_to_3()
790 %t1 = extractvalue {i32, i32, i32} %t0, 0
791 call void @op_1_to_0(i32 %t1)
792 %t2 = extractvalue {i32, i32, i32} %t0, 1
793 call void @op_1_to_0(i32 %t2)
797 define void @f292() {
799 ; CHECK: .functype f292 () -> ()
800 ; CHECK-NEXT: .local i32
801 ; CHECK-NEXT: # %bb.0:
802 ; CHECK-NEXT: call op_0_to_3
803 ; CHECK-NEXT: local.set 0
805 ; CHECK-NEXT: call op_1_to_0
806 ; CHECK-NEXT: local.get 0
807 ; CHECK-NEXT: call op_1_to_0
808 ; CHECK-NEXT: # fallthrough-return
809 %t0 = call {i32, i32, i32} @op_0_to_3()
810 %t1 = extractvalue {i32, i32, i32} %t0, 0
811 call void @op_1_to_0(i32 %t1)
812 %t2 = extractvalue {i32, i32, i32} %t0, 2
813 call void @op_1_to_0(i32 %t2)
817 define void @f294() {
819 ; CHECK: .functype f294 () -> ()
820 ; CHECK-NEXT: .local i32, i32
821 ; CHECK-NEXT: # %bb.0:
822 ; CHECK-NEXT: call op_0_to_3
824 ; CHECK-NEXT: local.set 0
825 ; CHECK-NEXT: local.tee 1
826 ; CHECK-NEXT: call op_1_to_0
827 ; CHECK-NEXT: local.get 1
828 ; CHECK-NEXT: local.get 0
829 ; CHECK-NEXT: call op_2_to_0
830 ; CHECK-NEXT: # fallthrough-return
831 %t0 = call {i32, i32, i32} @op_0_to_3()
832 %t1 = extractvalue {i32, i32, i32} %t0, 0
833 call void @op_1_to_0(i32 %t1)
834 %t2 = extractvalue {i32, i32, i32} %t0, 0
835 %t3 = extractvalue {i32, i32, i32} %t0, 1
836 call void @op_2_to_0(i32 %t2, i32 %t3)
840 define void @f295() {
842 ; CHECK: .functype f295 () -> ()
843 ; CHECK-NEXT: .local i32, i32
844 ; CHECK-NEXT: # %bb.0:
845 ; CHECK-NEXT: call op_0_to_3
846 ; CHECK-NEXT: local.set 0
848 ; CHECK-NEXT: local.tee 1
849 ; CHECK-NEXT: call op_1_to_0
850 ; CHECK-NEXT: local.get 1
851 ; CHECK-NEXT: local.get 0
852 ; CHECK-NEXT: call op_2_to_0
853 ; CHECK-NEXT: # fallthrough-return
854 %t0 = call {i32, i32, i32} @op_0_to_3()
855 %t1 = extractvalue {i32, i32, i32} %t0, 0
856 call void @op_1_to_0(i32 %t1)
857 %t2 = extractvalue {i32, i32, i32} %t0, 0
858 %t3 = extractvalue {i32, i32, i32} %t0, 2
859 call void @op_2_to_0(i32 %t2, i32 %t3)
863 define void @f296() {
865 ; CHECK: .functype f296 () -> ()
866 ; CHECK-NEXT: .local i32, i32
867 ; CHECK-NEXT: # %bb.0:
868 ; CHECK-NEXT: call op_0_to_3
870 ; CHECK-NEXT: local.set 0
871 ; CHECK-NEXT: local.tee 1
872 ; CHECK-NEXT: call op_1_to_0
873 ; CHECK-NEXT: local.get 0
874 ; CHECK-NEXT: local.get 1
875 ; CHECK-NEXT: call op_2_to_0
876 ; CHECK-NEXT: # fallthrough-return
877 %t0 = call {i32, i32, i32} @op_0_to_3()
878 %t1 = extractvalue {i32, i32, i32} %t0, 0
879 call void @op_1_to_0(i32 %t1)
880 %t2 = extractvalue {i32, i32, i32} %t0, 1
881 %t3 = extractvalue {i32, i32, i32} %t0, 0
882 call void @op_2_to_0(i32 %t2, i32 %t3)
886 define void @f297() {
888 ; CHECK: .functype f297 () -> ()
889 ; CHECK-NEXT: .local i32
890 ; CHECK-NEXT: # %bb.0:
891 ; CHECK-NEXT: call op_0_to_3
893 ; CHECK-NEXT: local.set 0
894 ; CHECK-NEXT: call op_1_to_0
895 ; CHECK-NEXT: local.get 0
896 ; CHECK-NEXT: local.get 0
897 ; CHECK-NEXT: call op_2_to_0
898 ; CHECK-NEXT: # fallthrough-return
899 %t0 = call {i32, i32, i32} @op_0_to_3()
900 %t1 = extractvalue {i32, i32, i32} %t0, 0
901 call void @op_1_to_0(i32 %t1)
902 %t2 = extractvalue {i32, i32, i32} %t0, 1
903 %t3 = extractvalue {i32, i32, i32} %t0, 1
904 call void @op_2_to_0(i32 %t2, i32 %t3)
908 define void @f298() {
910 ; CHECK: .functype f298 () -> ()
911 ; CHECK-NEXT: .local i32, i32
912 ; CHECK-NEXT: # %bb.0:
913 ; CHECK-NEXT: call op_0_to_3
914 ; CHECK-NEXT: local.set 1
915 ; CHECK-NEXT: local.set 0
916 ; CHECK-NEXT: call op_1_to_0
917 ; CHECK-NEXT: local.get 0
918 ; CHECK-NEXT: local.get 1
919 ; CHECK-NEXT: call op_2_to_0
920 ; CHECK-NEXT: # fallthrough-return
921 %t0 = call {i32, i32, i32} @op_0_to_3()
922 %t1 = extractvalue {i32, i32, i32} %t0, 0
923 call void @op_1_to_0(i32 %t1)
924 %t2 = extractvalue {i32, i32, i32} %t0, 1
925 %t3 = extractvalue {i32, i32, i32} %t0, 2
926 call void @op_2_to_0(i32 %t2, i32 %t3)
930 define void @f299() {
932 ; CHECK: .functype f299 () -> ()
933 ; CHECK-NEXT: .local i32, i32
934 ; CHECK-NEXT: # %bb.0:
935 ; CHECK-NEXT: call op_0_to_3
936 ; CHECK-NEXT: local.set 0
938 ; CHECK-NEXT: local.tee 1
939 ; CHECK-NEXT: call op_1_to_0
940 ; CHECK-NEXT: local.get 0
941 ; CHECK-NEXT: local.get 1
942 ; CHECK-NEXT: call op_2_to_0
943 ; CHECK-NEXT: # fallthrough-return
944 %t0 = call {i32, i32, i32} @op_0_to_3()
945 %t1 = extractvalue {i32, i32, i32} %t0, 0
946 call void @op_1_to_0(i32 %t1)
947 %t2 = extractvalue {i32, i32, i32} %t0, 2
948 %t3 = extractvalue {i32, i32, i32} %t0, 0
949 call void @op_2_to_0(i32 %t2, i32 %t3)
953 define void @f300() {
955 ; CHECK: .functype f300 () -> ()
956 ; CHECK-NEXT: .local i32, i32
957 ; CHECK-NEXT: # %bb.0:
958 ; CHECK-NEXT: call op_0_to_3
959 ; CHECK-NEXT: local.set 1
960 ; CHECK-NEXT: local.set 0
961 ; CHECK-NEXT: call op_1_to_0
962 ; CHECK-NEXT: local.get 1
963 ; CHECK-NEXT: local.get 0
964 ; CHECK-NEXT: call op_2_to_0
965 ; CHECK-NEXT: # fallthrough-return
966 %t0 = call {i32, i32, i32} @op_0_to_3()
967 %t1 = extractvalue {i32, i32, i32} %t0, 0
968 call void @op_1_to_0(i32 %t1)
969 %t2 = extractvalue {i32, i32, i32} %t0, 2
970 %t3 = extractvalue {i32, i32, i32} %t0, 1
971 call void @op_2_to_0(i32 %t2, i32 %t3)
975 define void @f301() {
977 ; CHECK: .functype f301 () -> ()
978 ; CHECK-NEXT: .local i32
979 ; CHECK-NEXT: # %bb.0:
980 ; CHECK-NEXT: call op_0_to_3
981 ; CHECK-NEXT: local.set 0
983 ; CHECK-NEXT: call op_1_to_0
984 ; CHECK-NEXT: local.get 0
985 ; CHECK-NEXT: local.get 0
986 ; CHECK-NEXT: call op_2_to_0
987 ; CHECK-NEXT: # fallthrough-return
988 %t0 = call {i32, i32, i32} @op_0_to_3()
989 %t1 = extractvalue {i32, i32, i32} %t0, 0
990 call void @op_1_to_0(i32 %t1)
991 %t2 = extractvalue {i32, i32, i32} %t0, 2
992 %t3 = extractvalue {i32, i32, i32} %t0, 2
993 call void @op_2_to_0(i32 %t2, i32 %t3)
997 define void @f302() {
999 ; CHECK: .functype f302 () -> ()
1000 ; CHECK-NEXT: .local i32, i32
1001 ; CHECK-NEXT: # %bb.0:
1002 ; CHECK-NEXT: call op_0_to_3
1004 ; CHECK-NEXT: local.set 1
1005 ; CHECK-NEXT: local.set 0
1006 ; CHECK-NEXT: local.get 1
1007 ; CHECK-NEXT: call op_1_to_0
1008 ; CHECK-NEXT: local.get 0
1009 ; CHECK-NEXT: call op_1_to_0
1010 ; CHECK-NEXT: # fallthrough-return
1011 %t0 = call {i32, i32, i32} @op_0_to_3()
1012 %t1 = extractvalue {i32, i32, i32} %t0, 1
1013 call void @op_1_to_0(i32 %t1)
1014 %t2 = extractvalue {i32, i32, i32} %t0, 0
1015 call void @op_1_to_0(i32 %t2)
1019 define void @f304() {
1020 ; CHECK-LABEL: f304:
1021 ; CHECK: .functype f304 () -> ()
1022 ; CHECK-NEXT: .local i32, i32
1023 ; CHECK-NEXT: # %bb.0:
1024 ; CHECK-NEXT: call op_0_to_3
1025 ; CHECK-NEXT: local.set 1
1026 ; CHECK-NEXT: local.set 0
1028 ; CHECK-NEXT: local.get 0
1029 ; CHECK-NEXT: call op_1_to_0
1030 ; CHECK-NEXT: local.get 1
1031 ; CHECK-NEXT: call op_1_to_0
1032 ; CHECK-NEXT: # fallthrough-return
1033 %t0 = call {i32, i32, i32} @op_0_to_3()
1034 %t1 = extractvalue {i32, i32, i32} %t0, 1
1035 call void @op_1_to_0(i32 %t1)
1036 %t2 = extractvalue {i32, i32, i32} %t0, 2
1037 call void @op_1_to_0(i32 %t2)
1041 define void @f305() {
1042 ; CHECK-LABEL: f305:
1043 ; CHECK: .functype f305 () -> ()
1044 ; CHECK-NEXT: .local i32, i32
1045 ; CHECK-NEXT: # %bb.0:
1046 ; CHECK-NEXT: call op_0_to_3
1048 ; CHECK-NEXT: local.set 1
1049 ; CHECK-NEXT: local.set 0
1050 ; CHECK-NEXT: local.get 1
1051 ; CHECK-NEXT: call op_1_to_0
1052 ; CHECK-NEXT: local.get 0
1053 ; CHECK-NEXT: local.get 0
1054 ; CHECK-NEXT: call op_2_to_0
1055 ; CHECK-NEXT: # fallthrough-return
1056 %t0 = call {i32, i32, i32} @op_0_to_3()
1057 %t1 = extractvalue {i32, i32, i32} %t0, 1
1058 call void @op_1_to_0(i32 %t1)
1059 %t2 = extractvalue {i32, i32, i32} %t0, 0
1060 %t3 = extractvalue {i32, i32, i32} %t0, 0
1061 call void @op_2_to_0(i32 %t2, i32 %t3)
1065 define void @f306() {
1066 ; CHECK-LABEL: f306:
1067 ; CHECK: .functype f306 () -> ()
1068 ; CHECK-NEXT: .local i32, i32
1069 ; CHECK-NEXT: # %bb.0:
1070 ; CHECK-NEXT: call op_0_to_3
1072 ; CHECK-NEXT: local.set 1
1073 ; CHECK-NEXT: local.set 0
1074 ; CHECK-NEXT: local.get 1
1075 ; CHECK-NEXT: call op_1_to_0
1076 ; CHECK-NEXT: local.get 0
1077 ; CHECK-NEXT: local.get 1
1078 ; CHECK-NEXT: call op_2_to_0
1079 ; CHECK-NEXT: # fallthrough-return
1080 %t0 = call {i32, i32, i32} @op_0_to_3()
1081 %t1 = extractvalue {i32, i32, i32} %t0, 1
1082 call void @op_1_to_0(i32 %t1)
1083 %t2 = extractvalue {i32, i32, i32} %t0, 0
1084 %t3 = extractvalue {i32, i32, i32} %t0, 1
1085 call void @op_2_to_0(i32 %t2, i32 %t3)
1089 define void @f307() {
1090 ; CHECK-LABEL: f307:
1091 ; CHECK: .functype f307 () -> ()
1092 ; CHECK-NEXT: .local i32, i32, i32
1093 ; CHECK-NEXT: # %bb.0:
1094 ; CHECK-NEXT: call op_0_to_3
1095 ; CHECK-NEXT: local.set 2
1096 ; CHECK-NEXT: local.set 1
1097 ; CHECK-NEXT: local.set 0
1098 ; CHECK-NEXT: local.get 1
1099 ; CHECK-NEXT: call op_1_to_0
1100 ; CHECK-NEXT: local.get 0
1101 ; CHECK-NEXT: local.get 2
1102 ; CHECK-NEXT: call op_2_to_0
1103 ; CHECK-NEXT: # fallthrough-return
1104 %t0 = call {i32, i32, i32} @op_0_to_3()
1105 %t1 = extractvalue {i32, i32, i32} %t0, 1
1106 call void @op_1_to_0(i32 %t1)
1107 %t2 = extractvalue {i32, i32, i32} %t0, 0
1108 %t3 = extractvalue {i32, i32, i32} %t0, 2
1109 call void @op_2_to_0(i32 %t2, i32 %t3)
1113 define void @f308() {
1114 ; CHECK-LABEL: f308:
1115 ; CHECK: .functype f308 () -> ()
1116 ; CHECK-NEXT: .local i32, i32
1117 ; CHECK-NEXT: # %bb.0:
1118 ; CHECK-NEXT: call op_0_to_3
1120 ; CHECK-NEXT: local.set 1
1121 ; CHECK-NEXT: local.set 0
1122 ; CHECK-NEXT: local.get 1
1123 ; CHECK-NEXT: call op_1_to_0
1124 ; CHECK-NEXT: local.get 1
1125 ; CHECK-NEXT: local.get 0
1126 ; CHECK-NEXT: call op_2_to_0
1127 ; CHECK-NEXT: # fallthrough-return
1128 %t0 = call {i32, i32, i32} @op_0_to_3()
1129 %t1 = extractvalue {i32, i32, i32} %t0, 1
1130 call void @op_1_to_0(i32 %t1)
1131 %t2 = extractvalue {i32, i32, i32} %t0, 1
1132 %t3 = extractvalue {i32, i32, i32} %t0, 0
1133 call void @op_2_to_0(i32 %t2, i32 %t3)
1137 define void @f310() {
1138 ; CHECK-LABEL: f310:
1139 ; CHECK: .functype f310 () -> ()
1140 ; CHECK-NEXT: .local i32, i32
1141 ; CHECK-NEXT: # %bb.0:
1142 ; CHECK-NEXT: call op_0_to_3
1143 ; CHECK-NEXT: local.set 1
1144 ; CHECK-NEXT: local.set 0
1146 ; CHECK-NEXT: local.get 0
1147 ; CHECK-NEXT: call op_1_to_0
1148 ; CHECK-NEXT: local.get 0
1149 ; CHECK-NEXT: local.get 1
1150 ; CHECK-NEXT: call op_2_to_0
1151 ; CHECK-NEXT: # fallthrough-return
1152 %t0 = call {i32, i32, i32} @op_0_to_3()
1153 %t1 = extractvalue {i32, i32, i32} %t0, 1
1154 call void @op_1_to_0(i32 %t1)
1155 %t2 = extractvalue {i32, i32, i32} %t0, 1
1156 %t3 = extractvalue {i32, i32, i32} %t0, 2
1157 call void @op_2_to_0(i32 %t2, i32 %t3)
1161 define void @f311() {
1162 ; CHECK-LABEL: f311:
1163 ; CHECK: .functype f311 () -> ()
1164 ; CHECK-NEXT: .local i32, i32, i32
1165 ; CHECK-NEXT: # %bb.0:
1166 ; CHECK-NEXT: call op_0_to_3
1167 ; CHECK-NEXT: local.set 2
1168 ; CHECK-NEXT: local.set 1
1169 ; CHECK-NEXT: local.set 0
1170 ; CHECK-NEXT: local.get 1
1171 ; CHECK-NEXT: call op_1_to_0
1172 ; CHECK-NEXT: local.get 2
1173 ; CHECK-NEXT: local.get 0
1174 ; CHECK-NEXT: call op_2_to_0
1175 ; CHECK-NEXT: # fallthrough-return
1176 %t0 = call {i32, i32, i32} @op_0_to_3()
1177 %t1 = extractvalue {i32, i32, i32} %t0, 1
1178 call void @op_1_to_0(i32 %t1)
1179 %t2 = extractvalue {i32, i32, i32} %t0, 2
1180 %t3 = extractvalue {i32, i32, i32} %t0, 0
1181 call void @op_2_to_0(i32 %t2, i32 %t3)
1185 define void @f312() {
1186 ; CHECK-LABEL: f312:
1187 ; CHECK: .functype f312 () -> ()
1188 ; CHECK-NEXT: .local i32, i32
1189 ; CHECK-NEXT: # %bb.0:
1190 ; CHECK-NEXT: call op_0_to_3
1191 ; CHECK-NEXT: local.set 1
1192 ; CHECK-NEXT: local.set 0
1194 ; CHECK-NEXT: local.get 0
1195 ; CHECK-NEXT: call op_1_to_0
1196 ; CHECK-NEXT: local.get 1
1197 ; CHECK-NEXT: local.get 0
1198 ; CHECK-NEXT: call op_2_to_0
1199 ; CHECK-NEXT: # fallthrough-return
1200 %t0 = call {i32, i32, i32} @op_0_to_3()
1201 %t1 = extractvalue {i32, i32, i32} %t0, 1
1202 call void @op_1_to_0(i32 %t1)
1203 %t2 = extractvalue {i32, i32, i32} %t0, 2
1204 %t3 = extractvalue {i32, i32, i32} %t0, 1
1205 call void @op_2_to_0(i32 %t2, i32 %t3)
1209 define void @f313() {
1210 ; CHECK-LABEL: f313:
1211 ; CHECK: .functype f313 () -> ()
1212 ; CHECK-NEXT: .local i32, i32
1213 ; CHECK-NEXT: # %bb.0:
1214 ; CHECK-NEXT: call op_0_to_3
1215 ; CHECK-NEXT: local.set 1
1216 ; CHECK-NEXT: local.set 0
1218 ; CHECK-NEXT: local.get 0
1219 ; CHECK-NEXT: call op_1_to_0
1220 ; CHECK-NEXT: local.get 1
1221 ; CHECK-NEXT: local.get 1
1222 ; CHECK-NEXT: call op_2_to_0
1223 ; CHECK-NEXT: # fallthrough-return
1224 %t0 = call {i32, i32, i32} @op_0_to_3()
1225 %t1 = extractvalue {i32, i32, i32} %t0, 1
1226 call void @op_1_to_0(i32 %t1)
1227 %t2 = extractvalue {i32, i32, i32} %t0, 2
1228 %t3 = extractvalue {i32, i32, i32} %t0, 2
1229 call void @op_2_to_0(i32 %t2, i32 %t3)
1233 define void @f314() {
1234 ; CHECK-LABEL: f314:
1235 ; CHECK: .functype f314 () -> ()
1236 ; CHECK-NEXT: .local i32, i32
1237 ; CHECK-NEXT: # %bb.0:
1238 ; CHECK-NEXT: call op_0_to_3
1239 ; CHECK-NEXT: local.set 1
1241 ; CHECK-NEXT: local.set 0
1242 ; CHECK-NEXT: local.get 1
1243 ; CHECK-NEXT: call op_1_to_0
1244 ; CHECK-NEXT: local.get 0
1245 ; CHECK-NEXT: call op_1_to_0
1246 ; CHECK-NEXT: # fallthrough-return
1247 %t0 = call {i32, i32, i32} @op_0_to_3()
1248 %t1 = extractvalue {i32, i32, i32} %t0, 2
1249 call void @op_1_to_0(i32 %t1)
1250 %t2 = extractvalue {i32, i32, i32} %t0, 0
1251 call void @op_1_to_0(i32 %t2)
1255 define void @f315() {
1256 ; CHECK-LABEL: f315:
1257 ; CHECK: .functype f315 () -> ()
1258 ; CHECK-NEXT: .local i32, i32
1259 ; CHECK-NEXT: # %bb.0:
1260 ; CHECK-NEXT: call op_0_to_3
1261 ; CHECK-NEXT: local.set 1
1262 ; CHECK-NEXT: local.set 0
1264 ; CHECK-NEXT: local.get 1
1265 ; CHECK-NEXT: call op_1_to_0
1266 ; CHECK-NEXT: local.get 0
1267 ; CHECK-NEXT: call op_1_to_0
1268 ; CHECK-NEXT: # fallthrough-return
1269 %t0 = call {i32, i32, i32} @op_0_to_3()
1270 %t1 = extractvalue {i32, i32, i32} %t0, 2
1271 call void @op_1_to_0(i32 %t1)
1272 %t2 = extractvalue {i32, i32, i32} %t0, 1
1273 call void @op_1_to_0(i32 %t2)
1277 define void @f317() {
1278 ; CHECK-LABEL: f317:
1279 ; CHECK: .functype f317 () -> ()
1280 ; CHECK-NEXT: .local i32, i32
1281 ; CHECK-NEXT: # %bb.0:
1282 ; CHECK-NEXT: call op_0_to_3
1283 ; CHECK-NEXT: local.set 1
1285 ; CHECK-NEXT: local.set 0
1286 ; CHECK-NEXT: local.get 1
1287 ; CHECK-NEXT: call op_1_to_0
1288 ; CHECK-NEXT: local.get 0
1289 ; CHECK-NEXT: local.get 0
1290 ; CHECK-NEXT: call op_2_to_0
1291 ; CHECK-NEXT: # fallthrough-return
1292 %t0 = call {i32, i32, i32} @op_0_to_3()
1293 %t1 = extractvalue {i32, i32, i32} %t0, 2
1294 call void @op_1_to_0(i32 %t1)
1295 %t2 = extractvalue {i32, i32, i32} %t0, 0
1296 %t3 = extractvalue {i32, i32, i32} %t0, 0
1297 call void @op_2_to_0(i32 %t2, i32 %t3)
1301 define void @f318() {
1302 ; CHECK-LABEL: f318:
1303 ; CHECK: .functype f318 () -> ()
1304 ; CHECK-NEXT: .local i32, i32, i32
1305 ; CHECK-NEXT: # %bb.0:
1306 ; CHECK-NEXT: call op_0_to_3
1307 ; CHECK-NEXT: local.set 2
1308 ; CHECK-NEXT: local.set 1
1309 ; CHECK-NEXT: local.set 0
1310 ; CHECK-NEXT: local.get 2
1311 ; CHECK-NEXT: call op_1_to_0
1312 ; CHECK-NEXT: local.get 0
1313 ; CHECK-NEXT: local.get 1
1314 ; CHECK-NEXT: call op_2_to_0
1315 ; CHECK-NEXT: # fallthrough-return
1316 %t0 = call {i32, i32, i32} @op_0_to_3()
1317 %t1 = extractvalue {i32, i32, i32} %t0, 2
1318 call void @op_1_to_0(i32 %t1)
1319 %t2 = extractvalue {i32, i32, i32} %t0, 0
1320 %t3 = extractvalue {i32, i32, i32} %t0, 1
1321 call void @op_2_to_0(i32 %t2, i32 %t3)
1325 define void @f319() {
1326 ; CHECK-LABEL: f319:
1327 ; CHECK: .functype f319 () -> ()
1328 ; CHECK-NEXT: .local i32, i32
1329 ; CHECK-NEXT: # %bb.0:
1330 ; CHECK-NEXT: call op_0_to_3
1331 ; CHECK-NEXT: local.set 1
1333 ; CHECK-NEXT: local.set 0
1334 ; CHECK-NEXT: local.get 1
1335 ; CHECK-NEXT: call op_1_to_0
1336 ; CHECK-NEXT: local.get 0
1337 ; CHECK-NEXT: local.get 1
1338 ; CHECK-NEXT: call op_2_to_0
1339 ; CHECK-NEXT: # fallthrough-return
1340 %t0 = call {i32, i32, i32} @op_0_to_3()
1341 %t1 = extractvalue {i32, i32, i32} %t0, 2
1342 call void @op_1_to_0(i32 %t1)
1343 %t2 = extractvalue {i32, i32, i32} %t0, 0
1344 %t3 = extractvalue {i32, i32, i32} %t0, 2
1345 call void @op_2_to_0(i32 %t2, i32 %t3)
1349 define void @f320() {
1350 ; CHECK-LABEL: f320:
1351 ; CHECK: .functype f320 () -> ()
1352 ; CHECK-NEXT: .local i32, i32, i32
1353 ; CHECK-NEXT: # %bb.0:
1354 ; CHECK-NEXT: call op_0_to_3
1355 ; CHECK-NEXT: local.set 2
1356 ; CHECK-NEXT: local.set 1
1357 ; CHECK-NEXT: local.set 0
1358 ; CHECK-NEXT: local.get 2
1359 ; CHECK-NEXT: call op_1_to_0
1360 ; CHECK-NEXT: local.get 1
1361 ; CHECK-NEXT: local.get 0
1362 ; CHECK-NEXT: call op_2_to_0
1363 ; CHECK-NEXT: # fallthrough-return
1364 %t0 = call {i32, i32, i32} @op_0_to_3()
1365 %t1 = extractvalue {i32, i32, i32} %t0, 2
1366 call void @op_1_to_0(i32 %t1)
1367 %t2 = extractvalue {i32, i32, i32} %t0, 1
1368 %t3 = extractvalue {i32, i32, i32} %t0, 0
1369 call void @op_2_to_0(i32 %t2, i32 %t3)
1373 define void @f321() {
1374 ; CHECK-LABEL: f321:
1375 ; CHECK: .functype f321 () -> ()
1376 ; CHECK-NEXT: .local i32, i32
1377 ; CHECK-NEXT: # %bb.0:
1378 ; CHECK-NEXT: call op_0_to_3
1379 ; CHECK-NEXT: local.set 1
1380 ; CHECK-NEXT: local.set 0
1382 ; CHECK-NEXT: local.get 1
1383 ; CHECK-NEXT: call op_1_to_0
1384 ; CHECK-NEXT: local.get 0
1385 ; CHECK-NEXT: local.get 0
1386 ; CHECK-NEXT: call op_2_to_0
1387 ; CHECK-NEXT: # fallthrough-return
1388 %t0 = call {i32, i32, i32} @op_0_to_3()
1389 %t1 = extractvalue {i32, i32, i32} %t0, 2
1390 call void @op_1_to_0(i32 %t1)
1391 %t2 = extractvalue {i32, i32, i32} %t0, 1
1392 %t3 = extractvalue {i32, i32, i32} %t0, 1
1393 call void @op_2_to_0(i32 %t2, i32 %t3)
1397 define void @f322() {
1398 ; CHECK-LABEL: f322:
1399 ; CHECK: .functype f322 () -> ()
1400 ; CHECK-NEXT: .local i32, i32
1401 ; CHECK-NEXT: # %bb.0:
1402 ; CHECK-NEXT: call op_0_to_3
1403 ; CHECK-NEXT: local.set 1
1404 ; CHECK-NEXT: local.set 0
1406 ; CHECK-NEXT: local.get 1
1407 ; CHECK-NEXT: call op_1_to_0
1408 ; CHECK-NEXT: local.get 0
1409 ; CHECK-NEXT: local.get 1
1410 ; CHECK-NEXT: call op_2_to_0
1411 ; CHECK-NEXT: # fallthrough-return
1412 %t0 = call {i32, i32, i32} @op_0_to_3()
1413 %t1 = extractvalue {i32, i32, i32} %t0, 2
1414 call void @op_1_to_0(i32 %t1)
1415 %t2 = extractvalue {i32, i32, i32} %t0, 1
1416 %t3 = extractvalue {i32, i32, i32} %t0, 2
1417 call void @op_2_to_0(i32 %t2, i32 %t3)
1421 define void @f323() {
1422 ; CHECK-LABEL: f323:
1423 ; CHECK: .functype f323 () -> ()
1424 ; CHECK-NEXT: .local i32, i32
1425 ; CHECK-NEXT: # %bb.0:
1426 ; CHECK-NEXT: call op_0_to_3
1427 ; CHECK-NEXT: local.set 1
1429 ; CHECK-NEXT: local.set 0
1430 ; CHECK-NEXT: local.get 1
1431 ; CHECK-NEXT: call op_1_to_0
1432 ; CHECK-NEXT: local.get 1
1433 ; CHECK-NEXT: local.get 0
1434 ; CHECK-NEXT: call op_2_to_0
1435 ; CHECK-NEXT: # fallthrough-return
1436 %t0 = call {i32, i32, i32} @op_0_to_3()
1437 %t1 = extractvalue {i32, i32, i32} %t0, 2
1438 call void @op_1_to_0(i32 %t1)
1439 %t2 = extractvalue {i32, i32, i32} %t0, 2
1440 %t3 = extractvalue {i32, i32, i32} %t0, 0
1441 call void @op_2_to_0(i32 %t2, i32 %t3)
1445 define void @f324() {
1446 ; CHECK-LABEL: f324:
1447 ; CHECK: .functype f324 () -> ()
1448 ; CHECK-NEXT: .local i32, i32
1449 ; CHECK-NEXT: # %bb.0:
1450 ; CHECK-NEXT: call op_0_to_3
1451 ; CHECK-NEXT: local.set 1
1452 ; CHECK-NEXT: local.set 0
1454 ; CHECK-NEXT: local.get 1
1455 ; CHECK-NEXT: call op_1_to_0
1456 ; CHECK-NEXT: local.get 1
1457 ; CHECK-NEXT: local.get 0
1458 ; CHECK-NEXT: call op_2_to_0
1459 ; CHECK-NEXT: # fallthrough-return
1460 %t0 = call {i32, i32, i32} @op_0_to_3()
1461 %t1 = extractvalue {i32, i32, i32} %t0, 2
1462 call void @op_1_to_0(i32 %t1)
1463 %t2 = extractvalue {i32, i32, i32} %t0, 2
1464 %t3 = extractvalue {i32, i32, i32} %t0, 1
1465 call void @op_2_to_0(i32 %t2, i32 %t3)
1469 define void @f327() {
1470 ; CHECK-LABEL: f327:
1471 ; CHECK: .functype f327 () -> ()
1472 ; CHECK-NEXT: .local i32, i32
1473 ; CHECK-NEXT: # %bb.0:
1474 ; CHECK-NEXT: call op_0_to_3
1476 ; CHECK-NEXT: local.set 0
1477 ; CHECK-NEXT: local.tee 1
1478 ; CHECK-NEXT: local.get 1
1479 ; CHECK-NEXT: call op_2_to_0
1480 ; CHECK-NEXT: local.get 0
1481 ; CHECK-NEXT: call op_1_to_0
1482 ; CHECK-NEXT: # fallthrough-return
1483 %t0 = call {i32, i32, i32} @op_0_to_3()
1484 %t1 = extractvalue {i32, i32, i32} %t0, 0
1485 %t2 = extractvalue {i32, i32, i32} %t0, 0
1486 call void @op_2_to_0(i32 %t1, i32 %t2)
1487 %t3 = extractvalue {i32, i32, i32} %t0, 1
1488 call void @op_1_to_0(i32 %t3)
1492 define void @f328() {
1493 ; CHECK-LABEL: f328:
1494 ; CHECK: .functype f328 () -> ()
1495 ; CHECK-NEXT: .local i32, i32
1496 ; CHECK-NEXT: # %bb.0:
1497 ; CHECK-NEXT: call op_0_to_3
1498 ; CHECK-NEXT: local.set 0
1500 ; CHECK-NEXT: local.tee 1
1501 ; CHECK-NEXT: local.get 1
1502 ; CHECK-NEXT: call op_2_to_0
1503 ; CHECK-NEXT: local.get 0
1504 ; CHECK-NEXT: call op_1_to_0
1505 ; CHECK-NEXT: # fallthrough-return
1506 %t0 = call {i32, i32, i32} @op_0_to_3()
1507 %t1 = extractvalue {i32, i32, i32} %t0, 0
1508 %t2 = extractvalue {i32, i32, i32} %t0, 0
1509 call void @op_2_to_0(i32 %t1, i32 %t2)
1510 %t3 = extractvalue {i32, i32, i32} %t0, 2
1511 call void @op_1_to_0(i32 %t3)
1515 define void @f333() {
1516 ; CHECK-LABEL: f333:
1517 ; CHECK: .functype f333 () -> ()
1518 ; CHECK-NEXT: .local i32, i32
1519 ; CHECK-NEXT: # %bb.0:
1520 ; CHECK-NEXT: call op_0_to_3
1522 ; CHECK-NEXT: local.set 0
1523 ; CHECK-NEXT: local.tee 1
1524 ; CHECK-NEXT: local.get 1
1525 ; CHECK-NEXT: call op_2_to_0
1526 ; CHECK-NEXT: local.get 0
1527 ; CHECK-NEXT: local.get 0
1528 ; CHECK-NEXT: call op_2_to_0
1529 ; CHECK-NEXT: # fallthrough-return
1530 %t0 = call {i32, i32, i32} @op_0_to_3()
1531 %t1 = extractvalue {i32, i32, i32} %t0, 0
1532 %t2 = extractvalue {i32, i32, i32} %t0, 0
1533 call void @op_2_to_0(i32 %t1, i32 %t2)
1534 %t3 = extractvalue {i32, i32, i32} %t0, 1
1535 %t4 = extractvalue {i32, i32, i32} %t0, 1
1536 call void @op_2_to_0(i32 %t3, i32 %t4)
1540 define void @f334() {
1541 ; CHECK-LABEL: f334:
1542 ; CHECK: .functype f334 () -> ()
1543 ; CHECK-NEXT: .local i32, i32, i32
1544 ; CHECK-NEXT: # %bb.0:
1545 ; CHECK-NEXT: call op_0_to_3
1546 ; CHECK-NEXT: local.set 1
1547 ; CHECK-NEXT: local.set 0
1548 ; CHECK-NEXT: local.tee 2
1549 ; CHECK-NEXT: local.get 2
1550 ; CHECK-NEXT: call op_2_to_0
1551 ; CHECK-NEXT: local.get 0
1552 ; CHECK-NEXT: local.get 1
1553 ; CHECK-NEXT: call op_2_to_0
1554 ; CHECK-NEXT: # fallthrough-return
1555 %t0 = call {i32, i32, i32} @op_0_to_3()
1556 %t1 = extractvalue {i32, i32, i32} %t0, 0
1557 %t2 = extractvalue {i32, i32, i32} %t0, 0
1558 call void @op_2_to_0(i32 %t1, i32 %t2)
1559 %t3 = extractvalue {i32, i32, i32} %t0, 1
1560 %t4 = extractvalue {i32, i32, i32} %t0, 2
1561 call void @op_2_to_0(i32 %t3, i32 %t4)
1565 define void @f336() {
1566 ; CHECK-LABEL: f336:
1567 ; CHECK: .functype f336 () -> ()
1568 ; CHECK-NEXT: .local i32, i32, i32
1569 ; CHECK-NEXT: # %bb.0:
1570 ; CHECK-NEXT: call op_0_to_3
1571 ; CHECK-NEXT: local.set 1
1572 ; CHECK-NEXT: local.set 0
1573 ; CHECK-NEXT: local.tee 2
1574 ; CHECK-NEXT: local.get 2
1575 ; CHECK-NEXT: call op_2_to_0
1576 ; CHECK-NEXT: local.get 1
1577 ; CHECK-NEXT: local.get 0
1578 ; CHECK-NEXT: call op_2_to_0
1579 ; CHECK-NEXT: # fallthrough-return
1580 %t0 = call {i32, i32, i32} @op_0_to_3()
1581 %t1 = extractvalue {i32, i32, i32} %t0, 0
1582 %t2 = extractvalue {i32, i32, i32} %t0, 0
1583 call void @op_2_to_0(i32 %t1, i32 %t2)
1584 %t3 = extractvalue {i32, i32, i32} %t0, 2
1585 %t4 = extractvalue {i32, i32, i32} %t0, 1
1586 call void @op_2_to_0(i32 %t3, i32 %t4)
1590 define void @f337() {
1591 ; CHECK-LABEL: f337:
1592 ; CHECK: .functype f337 () -> ()
1593 ; CHECK-NEXT: .local i32, i32
1594 ; CHECK-NEXT: # %bb.0:
1595 ; CHECK-NEXT: call op_0_to_3
1596 ; CHECK-NEXT: local.set 0
1598 ; CHECK-NEXT: local.tee 1
1599 ; CHECK-NEXT: local.get 1
1600 ; CHECK-NEXT: call op_2_to_0
1601 ; CHECK-NEXT: local.get 0
1602 ; CHECK-NEXT: local.get 0
1603 ; CHECK-NEXT: call op_2_to_0
1604 ; CHECK-NEXT: # fallthrough-return
1605 %t0 = call {i32, i32, i32} @op_0_to_3()
1606 %t1 = extractvalue {i32, i32, i32} %t0, 0
1607 %t2 = extractvalue {i32, i32, i32} %t0, 0
1608 call void @op_2_to_0(i32 %t1, i32 %t2)
1609 %t3 = extractvalue {i32, i32, i32} %t0, 2
1610 %t4 = extractvalue {i32, i32, i32} %t0, 2
1611 call void @op_2_to_0(i32 %t3, i32 %t4)
1615 define void @f338() {
1616 ; CHECK-LABEL: f338:
1617 ; CHECK: .functype f338 () -> ()
1618 ; CHECK-NEXT: .local i32, i32
1619 ; CHECK-NEXT: # %bb.0:
1620 ; CHECK-NEXT: call op_0_to_3
1622 ; CHECK-NEXT: local.set 0
1623 ; CHECK-NEXT: local.tee 1
1624 ; CHECK-NEXT: local.get 0
1625 ; CHECK-NEXT: call op_2_to_0
1626 ; CHECK-NEXT: local.get 1
1627 ; CHECK-NEXT: call op_1_to_0
1628 ; CHECK-NEXT: # fallthrough-return
1629 %t0 = call {i32, i32, i32} @op_0_to_3()
1630 %t1 = extractvalue {i32, i32, i32} %t0, 0
1631 %t2 = extractvalue {i32, i32, i32} %t0, 1
1632 call void @op_2_to_0(i32 %t1, i32 %t2)
1633 %t3 = extractvalue {i32, i32, i32} %t0, 0
1634 call void @op_1_to_0(i32 %t3)
1638 define void @f339() {
1639 ; CHECK-LABEL: f339:
1640 ; CHECK: .functype f339 () -> ()
1641 ; CHECK-NEXT: .local i32
1642 ; CHECK-NEXT: # %bb.0:
1643 ; CHECK-NEXT: call op_0_to_3
1645 ; CHECK-NEXT: local.set 0
1646 ; CHECK-NEXT: local.get 0
1647 ; CHECK-NEXT: call op_2_to_0
1648 ; CHECK-NEXT: local.get 0
1649 ; CHECK-NEXT: call op_1_to_0
1650 ; CHECK-NEXT: # fallthrough-return
1651 %t0 = call {i32, i32, i32} @op_0_to_3()
1652 %t1 = extractvalue {i32, i32, i32} %t0, 0
1653 %t2 = extractvalue {i32, i32, i32} %t0, 1
1654 call void @op_2_to_0(i32 %t1, i32 %t2)
1655 %t3 = extractvalue {i32, i32, i32} %t0, 1
1656 call void @op_1_to_0(i32 %t3)
1660 define void @f340() {
1661 ; CHECK-LABEL: f340:
1662 ; CHECK: .functype f340 () -> ()
1663 ; CHECK-NEXT: .local i32
1664 ; CHECK-NEXT: # %bb.0:
1665 ; CHECK-NEXT: call op_0_to_3
1666 ; CHECK-NEXT: local.set 0
1667 ; CHECK-NEXT: call op_2_to_0
1668 ; CHECK-NEXT: local.get 0
1669 ; CHECK-NEXT: call op_1_to_0
1670 ; CHECK-NEXT: # fallthrough-return
1671 %t0 = call {i32, i32, i32} @op_0_to_3()
1672 %t1 = extractvalue {i32, i32, i32} %t0, 0
1673 %t2 = extractvalue {i32, i32, i32} %t0, 1
1674 call void @op_2_to_0(i32 %t1, i32 %t2)
1675 %t3 = extractvalue {i32, i32, i32} %t0, 2
1676 call void @op_1_to_0(i32 %t3)
1680 define void @f343() {
1681 ; CHECK-LABEL: f343:
1682 ; CHECK: .functype f343 () -> ()
1683 ; CHECK-NEXT: .local i32, i32, i32
1684 ; CHECK-NEXT: # %bb.0:
1685 ; CHECK-NEXT: call op_0_to_3
1686 ; CHECK-NEXT: local.set 1
1687 ; CHECK-NEXT: local.set 0
1688 ; CHECK-NEXT: local.tee 2
1689 ; CHECK-NEXT: local.get 0
1690 ; CHECK-NEXT: call op_2_to_0
1691 ; CHECK-NEXT: local.get 2
1692 ; CHECK-NEXT: local.get 1
1693 ; CHECK-NEXT: call op_2_to_0
1694 ; CHECK-NEXT: # fallthrough-return
1695 %t0 = call {i32, i32, i32} @op_0_to_3()
1696 %t1 = extractvalue {i32, i32, i32} %t0, 0
1697 %t2 = extractvalue {i32, i32, i32} %t0, 1
1698 call void @op_2_to_0(i32 %t1, i32 %t2)
1699 %t3 = extractvalue {i32, i32, i32} %t0, 0
1700 %t4 = extractvalue {i32, i32, i32} %t0, 2
1701 call void @op_2_to_0(i32 %t3, i32 %t4)
1705 define void @f344() {
1706 ; CHECK-LABEL: f344:
1707 ; CHECK: .functype f344 () -> ()
1708 ; CHECK-NEXT: .local i32, i32
1709 ; CHECK-NEXT: # %bb.0:
1710 ; CHECK-NEXT: call op_0_to_3
1712 ; CHECK-NEXT: local.set 0
1713 ; CHECK-NEXT: local.tee 1
1714 ; CHECK-NEXT: local.get 0
1715 ; CHECK-NEXT: call op_2_to_0
1716 ; CHECK-NEXT: local.get 0
1717 ; CHECK-NEXT: local.get 1
1718 ; CHECK-NEXT: call op_2_to_0
1719 ; CHECK-NEXT: # fallthrough-return
1720 %t0 = call {i32, i32, i32} @op_0_to_3()
1721 %t1 = extractvalue {i32, i32, i32} %t0, 0
1722 %t2 = extractvalue {i32, i32, i32} %t0, 1
1723 call void @op_2_to_0(i32 %t1, i32 %t2)
1724 %t3 = extractvalue {i32, i32, i32} %t0, 1
1725 %t4 = extractvalue {i32, i32, i32} %t0, 0
1726 call void @op_2_to_0(i32 %t3, i32 %t4)
1730 define void @f346() {
1731 ; CHECK-LABEL: f346:
1732 ; CHECK: .functype f346 () -> ()
1733 ; CHECK-NEXT: .local i32, i32
1734 ; CHECK-NEXT: # %bb.0:
1735 ; CHECK-NEXT: call op_0_to_3
1736 ; CHECK-NEXT: local.set 1
1737 ; CHECK-NEXT: local.set 0
1738 ; CHECK-NEXT: local.get 0
1739 ; CHECK-NEXT: call op_2_to_0
1740 ; CHECK-NEXT: local.get 0
1741 ; CHECK-NEXT: local.get 1
1742 ; CHECK-NEXT: call op_2_to_0
1743 ; CHECK-NEXT: # fallthrough-return
1744 %t0 = call {i32, i32, i32} @op_0_to_3()
1745 %t1 = extractvalue {i32, i32, i32} %t0, 0
1746 %t2 = extractvalue {i32, i32, i32} %t0, 1
1747 call void @op_2_to_0(i32 %t1, i32 %t2)
1748 %t3 = extractvalue {i32, i32, i32} %t0, 1
1749 %t4 = extractvalue {i32, i32, i32} %t0, 2
1750 call void @op_2_to_0(i32 %t3, i32 %t4)
1754 define void @f347() {
1755 ; CHECK-LABEL: f347:
1756 ; CHECK: .functype f347 () -> ()
1757 ; CHECK-NEXT: .local i32, i32, i32
1758 ; CHECK-NEXT: # %bb.0:
1759 ; CHECK-NEXT: call op_0_to_3
1760 ; CHECK-NEXT: local.set 1
1761 ; CHECK-NEXT: local.set 0
1762 ; CHECK-NEXT: local.tee 2
1763 ; CHECK-NEXT: local.get 0
1764 ; CHECK-NEXT: call op_2_to_0
1765 ; CHECK-NEXT: local.get 1
1766 ; CHECK-NEXT: local.get 2
1767 ; CHECK-NEXT: call op_2_to_0
1768 ; CHECK-NEXT: # fallthrough-return
1769 %t0 = call {i32, i32, i32} @op_0_to_3()
1770 %t1 = extractvalue {i32, i32, i32} %t0, 0
1771 %t2 = extractvalue {i32, i32, i32} %t0, 1
1772 call void @op_2_to_0(i32 %t1, i32 %t2)
1773 %t3 = extractvalue {i32, i32, i32} %t0, 2
1774 %t4 = extractvalue {i32, i32, i32} %t0, 0
1775 call void @op_2_to_0(i32 %t3, i32 %t4)
1779 define void @f348() {
1780 ; CHECK-LABEL: f348:
1781 ; CHECK: .functype f348 () -> ()
1782 ; CHECK-NEXT: .local i32, i32
1783 ; CHECK-NEXT: # %bb.0:
1784 ; CHECK-NEXT: call op_0_to_3
1785 ; CHECK-NEXT: local.set 1
1786 ; CHECK-NEXT: local.set 0
1787 ; CHECK-NEXT: local.get 0
1788 ; CHECK-NEXT: call op_2_to_0
1789 ; CHECK-NEXT: local.get 1
1790 ; CHECK-NEXT: local.get 0
1791 ; CHECK-NEXT: call op_2_to_0
1792 ; CHECK-NEXT: # fallthrough-return
1793 %t0 = call {i32, i32, i32} @op_0_to_3()
1794 %t1 = extractvalue {i32, i32, i32} %t0, 0
1795 %t2 = extractvalue {i32, i32, i32} %t0, 1
1796 call void @op_2_to_0(i32 %t1, i32 %t2)
1797 %t3 = extractvalue {i32, i32, i32} %t0, 2
1798 %t4 = extractvalue {i32, i32, i32} %t0, 1
1799 call void @op_2_to_0(i32 %t3, i32 %t4)
1803 define void @f349() {
1804 ; CHECK-LABEL: f349:
1805 ; CHECK: .functype f349 () -> ()
1806 ; CHECK-NEXT: .local i32
1807 ; CHECK-NEXT: # %bb.0:
1808 ; CHECK-NEXT: call op_0_to_3
1809 ; CHECK-NEXT: local.set 0
1810 ; CHECK-NEXT: call op_2_to_0
1811 ; CHECK-NEXT: local.get 0
1812 ; CHECK-NEXT: local.get 0
1813 ; CHECK-NEXT: call op_2_to_0
1814 ; CHECK-NEXT: # fallthrough-return
1815 %t0 = call {i32, i32, i32} @op_0_to_3()
1816 %t1 = extractvalue {i32, i32, i32} %t0, 0
1817 %t2 = extractvalue {i32, i32, i32} %t0, 1
1818 call void @op_2_to_0(i32 %t1, i32 %t2)
1819 %t3 = extractvalue {i32, i32, i32} %t0, 2
1820 %t4 = extractvalue {i32, i32, i32} %t0, 2
1821 call void @op_2_to_0(i32 %t3, i32 %t4)
1825 define void @f350() {
1826 ; CHECK-LABEL: f350:
1827 ; CHECK: .functype f350 () -> ()
1828 ; CHECK-NEXT: .local i32, i32
1829 ; CHECK-NEXT: # %bb.0:
1830 ; CHECK-NEXT: call op_0_to_3
1831 ; CHECK-NEXT: local.set 0
1833 ; CHECK-NEXT: local.tee 1
1834 ; CHECK-NEXT: local.get 0
1835 ; CHECK-NEXT: call op_2_to_0
1836 ; CHECK-NEXT: local.get 1
1837 ; CHECK-NEXT: call op_1_to_0
1838 ; CHECK-NEXT: # fallthrough-return
1839 %t0 = call {i32, i32, i32} @op_0_to_3()
1840 %t1 = extractvalue {i32, i32, i32} %t0, 0
1841 %t2 = extractvalue {i32, i32, i32} %t0, 2
1842 call void @op_2_to_0(i32 %t1, i32 %t2)
1843 %t3 = extractvalue {i32, i32, i32} %t0, 0
1844 call void @op_1_to_0(i32 %t3)
1848 define void @f351() {
1849 ; CHECK-LABEL: f351:
1850 ; CHECK: .functype f351 () -> ()
1851 ; CHECK-NEXT: .local i32, i32
1852 ; CHECK-NEXT: # %bb.0:
1853 ; CHECK-NEXT: call op_0_to_3
1854 ; CHECK-NEXT: local.set 1
1855 ; CHECK-NEXT: local.set 0
1856 ; CHECK-NEXT: local.get 1
1857 ; CHECK-NEXT: call op_2_to_0
1858 ; CHECK-NEXT: local.get 0
1859 ; CHECK-NEXT: call op_1_to_0
1860 ; CHECK-NEXT: # fallthrough-return
1861 %t0 = call {i32, i32, i32} @op_0_to_3()
1862 %t1 = extractvalue {i32, i32, i32} %t0, 0
1863 %t2 = extractvalue {i32, i32, i32} %t0, 2
1864 call void @op_2_to_0(i32 %t1, i32 %t2)
1865 %t3 = extractvalue {i32, i32, i32} %t0, 1
1866 call void @op_1_to_0(i32 %t3)
1870 define void @f352() {
1871 ; CHECK-LABEL: f352:
1872 ; CHECK: .functype f352 () -> ()
1873 ; CHECK-NEXT: .local i32
1874 ; CHECK-NEXT: # %bb.0:
1875 ; CHECK-NEXT: call op_0_to_3
1876 ; CHECK-NEXT: local.set 0
1878 ; CHECK-NEXT: local.get 0
1879 ; CHECK-NEXT: call op_2_to_0
1880 ; CHECK-NEXT: local.get 0
1881 ; CHECK-NEXT: call op_1_to_0
1882 ; CHECK-NEXT: # fallthrough-return
1883 %t0 = call {i32, i32, i32} @op_0_to_3()
1884 %t1 = extractvalue {i32, i32, i32} %t0, 0
1885 %t2 = extractvalue {i32, i32, i32} %t0, 2
1886 call void @op_2_to_0(i32 %t1, i32 %t2)
1887 %t3 = extractvalue {i32, i32, i32} %t0, 2
1888 call void @op_1_to_0(i32 %t3)
1892 define void @f354() {
1893 ; CHECK-LABEL: f354:
1894 ; CHECK: .functype f354 () -> ()
1895 ; CHECK-NEXT: .local i32, i32, i32
1896 ; CHECK-NEXT: # %bb.0:
1897 ; CHECK-NEXT: call op_0_to_3
1898 ; CHECK-NEXT: local.set 1
1899 ; CHECK-NEXT: local.set 0
1900 ; CHECK-NEXT: local.tee 2
1901 ; CHECK-NEXT: local.get 1
1902 ; CHECK-NEXT: call op_2_to_0
1903 ; CHECK-NEXT: local.get 2
1904 ; CHECK-NEXT: local.get 0
1905 ; CHECK-NEXT: call op_2_to_0
1906 ; CHECK-NEXT: # fallthrough-return
1907 %t0 = call {i32, i32, i32} @op_0_to_3()
1908 %t1 = extractvalue {i32, i32, i32} %t0, 0
1909 %t2 = extractvalue {i32, i32, i32} %t0, 2
1910 call void @op_2_to_0(i32 %t1, i32 %t2)
1911 %t3 = extractvalue {i32, i32, i32} %t0, 0
1912 %t4 = extractvalue {i32, i32, i32} %t0, 1
1913 call void @op_2_to_0(i32 %t3, i32 %t4)
1917 define void @f356() {
1918 ; CHECK-LABEL: f356:
1919 ; CHECK: .functype f356 () -> ()
1920 ; CHECK-NEXT: .local i32, i32, i32
1921 ; CHECK-NEXT: # %bb.0:
1922 ; CHECK-NEXT: call op_0_to_3
1923 ; CHECK-NEXT: local.set 1
1924 ; CHECK-NEXT: local.set 0
1925 ; CHECK-NEXT: local.tee 2
1926 ; CHECK-NEXT: local.get 1
1927 ; CHECK-NEXT: call op_2_to_0
1928 ; CHECK-NEXT: local.get 0
1929 ; CHECK-NEXT: local.get 2
1930 ; CHECK-NEXT: call op_2_to_0
1931 ; CHECK-NEXT: # fallthrough-return
1932 %t0 = call {i32, i32, i32} @op_0_to_3()
1933 %t1 = extractvalue {i32, i32, i32} %t0, 0
1934 %t2 = extractvalue {i32, i32, i32} %t0, 2
1935 call void @op_2_to_0(i32 %t1, i32 %t2)
1936 %t3 = extractvalue {i32, i32, i32} %t0, 1
1937 %t4 = extractvalue {i32, i32, i32} %t0, 0
1938 call void @op_2_to_0(i32 %t3, i32 %t4)
1942 define void @f357() {
1943 ; CHECK-LABEL: f357:
1944 ; CHECK: .functype f357 () -> ()
1945 ; CHECK-NEXT: .local i32, i32
1946 ; CHECK-NEXT: # %bb.0:
1947 ; CHECK-NEXT: call op_0_to_3
1948 ; CHECK-NEXT: local.set 1
1949 ; CHECK-NEXT: local.set 0
1950 ; CHECK-NEXT: local.get 1
1951 ; CHECK-NEXT: call op_2_to_0
1952 ; CHECK-NEXT: local.get 0
1953 ; CHECK-NEXT: local.get 0
1954 ; CHECK-NEXT: call op_2_to_0
1955 ; CHECK-NEXT: # fallthrough-return
1956 %t0 = call {i32, i32, i32} @op_0_to_3()
1957 %t1 = extractvalue {i32, i32, i32} %t0, 0
1958 %t2 = extractvalue {i32, i32, i32} %t0, 2
1959 call void @op_2_to_0(i32 %t1, i32 %t2)
1960 %t3 = extractvalue {i32, i32, i32} %t0, 1
1961 %t4 = extractvalue {i32, i32, i32} %t0, 1
1962 call void @op_2_to_0(i32 %t3, i32 %t4)
1966 define void @f358() {
1967 ; CHECK-LABEL: f358:
1968 ; CHECK: .functype f358 () -> ()
1969 ; CHECK-NEXT: .local i32, i32
1970 ; CHECK-NEXT: # %bb.0:
1971 ; CHECK-NEXT: call op_0_to_3
1972 ; CHECK-NEXT: local.set 1
1973 ; CHECK-NEXT: local.set 0
1974 ; CHECK-NEXT: local.get 1
1975 ; CHECK-NEXT: call op_2_to_0
1976 ; CHECK-NEXT: local.get 0
1977 ; CHECK-NEXT: local.get 1
1978 ; CHECK-NEXT: call op_2_to_0
1979 ; CHECK-NEXT: # fallthrough-return
1980 %t0 = call {i32, i32, i32} @op_0_to_3()
1981 %t1 = extractvalue {i32, i32, i32} %t0, 0
1982 %t2 = extractvalue {i32, i32, i32} %t0, 2
1983 call void @op_2_to_0(i32 %t1, i32 %t2)
1984 %t3 = extractvalue {i32, i32, i32} %t0, 1
1985 %t4 = extractvalue {i32, i32, i32} %t0, 2
1986 call void @op_2_to_0(i32 %t3, i32 %t4)
1990 define void @f359() {
1991 ; CHECK-LABEL: f359:
1992 ; CHECK: .functype f359 () -> ()
1993 ; CHECK-NEXT: .local i32, i32
1994 ; CHECK-NEXT: # %bb.0:
1995 ; CHECK-NEXT: call op_0_to_3
1996 ; CHECK-NEXT: local.set 0
1998 ; CHECK-NEXT: local.tee 1
1999 ; CHECK-NEXT: local.get 0
2000 ; CHECK-NEXT: call op_2_to_0
2001 ; CHECK-NEXT: local.get 0
2002 ; CHECK-NEXT: local.get 1
2003 ; CHECK-NEXT: call op_2_to_0
2004 ; CHECK-NEXT: # fallthrough-return
2005 %t0 = call {i32, i32, i32} @op_0_to_3()
2006 %t1 = extractvalue {i32, i32, i32} %t0, 0
2007 %t2 = extractvalue {i32, i32, i32} %t0, 2
2008 call void @op_2_to_0(i32 %t1, i32 %t2)
2009 %t3 = extractvalue {i32, i32, i32} %t0, 2
2010 %t4 = extractvalue {i32, i32, i32} %t0, 0
2011 call void @op_2_to_0(i32 %t3, i32 %t4)
2015 define void @f360() {
2016 ; CHECK-LABEL: f360:
2017 ; CHECK: .functype f360 () -> ()
2018 ; CHECK-NEXT: .local i32, i32
2019 ; CHECK-NEXT: # %bb.0:
2020 ; CHECK-NEXT: call op_0_to_3
2021 ; CHECK-NEXT: local.set 1
2022 ; CHECK-NEXT: local.set 0
2023 ; CHECK-NEXT: local.get 1
2024 ; CHECK-NEXT: call op_2_to_0
2025 ; CHECK-NEXT: local.get 1
2026 ; CHECK-NEXT: local.get 0
2027 ; CHECK-NEXT: call op_2_to_0
2028 ; CHECK-NEXT: # fallthrough-return
2029 %t0 = call {i32, i32, i32} @op_0_to_3()
2030 %t1 = extractvalue {i32, i32, i32} %t0, 0
2031 %t2 = extractvalue {i32, i32, i32} %t0, 2
2032 call void @op_2_to_0(i32 %t1, i32 %t2)
2033 %t3 = extractvalue {i32, i32, i32} %t0, 2
2034 %t4 = extractvalue {i32, i32, i32} %t0, 1
2035 call void @op_2_to_0(i32 %t3, i32 %t4)
2039 define void @f362() {
2040 ; CHECK-LABEL: f362:
2041 ; CHECK: .functype f362 () -> ()
2042 ; CHECK-NEXT: .local i32, i32
2043 ; CHECK-NEXT: # %bb.0:
2044 ; CHECK-NEXT: call op_0_to_3
2046 ; CHECK-NEXT: local.set 1
2047 ; CHECK-NEXT: local.set 0
2048 ; CHECK-NEXT: local.get 1
2049 ; CHECK-NEXT: local.get 0
2050 ; CHECK-NEXT: call op_2_to_0
2051 ; CHECK-NEXT: local.get 0
2052 ; CHECK-NEXT: call op_1_to_0
2053 ; CHECK-NEXT: # fallthrough-return
2054 %t0 = call {i32, i32, i32} @op_0_to_3()
2055 %t1 = extractvalue {i32, i32, i32} %t0, 1
2056 %t2 = extractvalue {i32, i32, i32} %t0, 0
2057 call void @op_2_to_0(i32 %t1, i32 %t2)
2058 %t3 = extractvalue {i32, i32, i32} %t0, 0
2059 call void @op_1_to_0(i32 %t3)
2063 define void @f363() {
2064 ; CHECK-LABEL: f363:
2065 ; CHECK: .functype f363 () -> ()
2066 ; CHECK-NEXT: .local i32, i32
2067 ; CHECK-NEXT: # %bb.0:
2068 ; CHECK-NEXT: call op_0_to_3
2070 ; CHECK-NEXT: local.set 1
2071 ; CHECK-NEXT: local.set 0
2072 ; CHECK-NEXT: local.get 1
2073 ; CHECK-NEXT: local.get 0
2074 ; CHECK-NEXT: call op_2_to_0
2075 ; CHECK-NEXT: local.get 1
2076 ; CHECK-NEXT: call op_1_to_0
2077 ; CHECK-NEXT: # fallthrough-return
2078 %t0 = call {i32, i32, i32} @op_0_to_3()
2079 %t1 = extractvalue {i32, i32, i32} %t0, 1
2080 %t2 = extractvalue {i32, i32, i32} %t0, 0
2081 call void @op_2_to_0(i32 %t1, i32 %t2)
2082 %t3 = extractvalue {i32, i32, i32} %t0, 1
2083 call void @op_1_to_0(i32 %t3)
2087 define void @f364() {
2088 ; CHECK-LABEL: f364:
2089 ; CHECK: .functype f364 () -> ()
2090 ; CHECK-NEXT: .local i32, i32, i32
2091 ; CHECK-NEXT: # %bb.0:
2092 ; CHECK-NEXT: call op_0_to_3
2093 ; CHECK-NEXT: local.set 2
2094 ; CHECK-NEXT: local.set 1
2095 ; CHECK-NEXT: local.set 0
2096 ; CHECK-NEXT: local.get 1
2097 ; CHECK-NEXT: local.get 0
2098 ; CHECK-NEXT: call op_2_to_0
2099 ; CHECK-NEXT: local.get 2
2100 ; CHECK-NEXT: call op_1_to_0
2101 ; CHECK-NEXT: # fallthrough-return
2102 %t0 = call {i32, i32, i32} @op_0_to_3()
2103 %t1 = extractvalue {i32, i32, i32} %t0, 1
2104 %t2 = extractvalue {i32, i32, i32} %t0, 0
2105 call void @op_2_to_0(i32 %t1, i32 %t2)
2106 %t3 = extractvalue {i32, i32, i32} %t0, 2
2107 call void @op_1_to_0(i32 %t3)
2111 define void @f366() {
2112 ; CHECK-LABEL: f366:
2113 ; CHECK: .functype f366 () -> ()
2114 ; CHECK-NEXT: .local i32, i32
2115 ; CHECK-NEXT: # %bb.0:
2116 ; CHECK-NEXT: call op_0_to_3
2118 ; CHECK-NEXT: local.set 1
2119 ; CHECK-NEXT: local.set 0
2120 ; CHECK-NEXT: local.get 1
2121 ; CHECK-NEXT: local.get 0
2122 ; CHECK-NEXT: call op_2_to_0
2123 ; CHECK-NEXT: local.get 0
2124 ; CHECK-NEXT: local.get 1
2125 ; CHECK-NEXT: call op_2_to_0
2126 ; CHECK-NEXT: # fallthrough-return
2127 %t0 = call {i32, i32, i32} @op_0_to_3()
2128 %t1 = extractvalue {i32, i32, i32} %t0, 1
2129 %t2 = extractvalue {i32, i32, i32} %t0, 0
2130 call void @op_2_to_0(i32 %t1, i32 %t2)
2131 %t3 = extractvalue {i32, i32, i32} %t0, 0
2132 %t4 = extractvalue {i32, i32, i32} %t0, 1
2133 call void @op_2_to_0(i32 %t3, i32 %t4)
2137 define void @f367() {
2138 ; CHECK-LABEL: f367:
2139 ; CHECK: .functype f367 () -> ()
2140 ; CHECK-NEXT: .local i32, i32, i32
2141 ; CHECK-NEXT: # %bb.0:
2142 ; CHECK-NEXT: call op_0_to_3
2143 ; CHECK-NEXT: local.set 2
2144 ; CHECK-NEXT: local.set 1
2145 ; CHECK-NEXT: local.set 0
2146 ; CHECK-NEXT: local.get 1
2147 ; CHECK-NEXT: local.get 0
2148 ; CHECK-NEXT: call op_2_to_0
2149 ; CHECK-NEXT: local.get 0
2150 ; CHECK-NEXT: local.get 2
2151 ; CHECK-NEXT: call op_2_to_0
2152 ; CHECK-NEXT: # fallthrough-return
2153 %t0 = call {i32, i32, i32} @op_0_to_3()
2154 %t1 = extractvalue {i32, i32, i32} %t0, 1
2155 %t2 = extractvalue {i32, i32, i32} %t0, 0
2156 call void @op_2_to_0(i32 %t1, i32 %t2)
2157 %t3 = extractvalue {i32, i32, i32} %t0, 0
2158 %t4 = extractvalue {i32, i32, i32} %t0, 2
2159 call void @op_2_to_0(i32 %t3, i32 %t4)
2163 define void @f370() {
2164 ; CHECK-LABEL: f370:
2165 ; CHECK: .functype f370 () -> ()
2166 ; CHECK-NEXT: .local i32, i32, i32
2167 ; CHECK-NEXT: # %bb.0:
2168 ; CHECK-NEXT: call op_0_to_3
2169 ; CHECK-NEXT: local.set 2
2170 ; CHECK-NEXT: local.set 1
2171 ; CHECK-NEXT: local.set 0
2172 ; CHECK-NEXT: local.get 1
2173 ; CHECK-NEXT: local.get 0
2174 ; CHECK-NEXT: call op_2_to_0
2175 ; CHECK-NEXT: local.get 1
2176 ; CHECK-NEXT: local.get 2
2177 ; CHECK-NEXT: call op_2_to_0
2178 ; CHECK-NEXT: # fallthrough-return
2179 %t0 = call {i32, i32, i32} @op_0_to_3()
2180 %t1 = extractvalue {i32, i32, i32} %t0, 1
2181 %t2 = extractvalue {i32, i32, i32} %t0, 0
2182 call void @op_2_to_0(i32 %t1, i32 %t2)
2183 %t3 = extractvalue {i32, i32, i32} %t0, 1
2184 %t4 = extractvalue {i32, i32, i32} %t0, 2
2185 call void @op_2_to_0(i32 %t3, i32 %t4)
2189 define void @f371() {
2190 ; CHECK-LABEL: f371:
2191 ; CHECK: .functype f371 () -> ()
2192 ; CHECK-NEXT: .local i32, i32, i32
2193 ; CHECK-NEXT: # %bb.0:
2194 ; CHECK-NEXT: call op_0_to_3
2195 ; CHECK-NEXT: local.set 2
2196 ; CHECK-NEXT: local.set 1
2197 ; CHECK-NEXT: local.set 0
2198 ; CHECK-NEXT: local.get 1
2199 ; CHECK-NEXT: local.get 0
2200 ; CHECK-NEXT: call op_2_to_0
2201 ; CHECK-NEXT: local.get 2
2202 ; CHECK-NEXT: local.get 0
2203 ; CHECK-NEXT: call op_2_to_0
2204 ; CHECK-NEXT: # fallthrough-return
2205 %t0 = call {i32, i32, i32} @op_0_to_3()
2206 %t1 = extractvalue {i32, i32, i32} %t0, 1
2207 %t2 = extractvalue {i32, i32, i32} %t0, 0
2208 call void @op_2_to_0(i32 %t1, i32 %t2)
2209 %t3 = extractvalue {i32, i32, i32} %t0, 2
2210 %t4 = extractvalue {i32, i32, i32} %t0, 0
2211 call void @op_2_to_0(i32 %t3, i32 %t4)
2215 define void @f372() {
2216 ; CHECK-LABEL: f372:
2217 ; CHECK: .functype f372 () -> ()
2218 ; CHECK-NEXT: .local i32, i32, i32
2219 ; CHECK-NEXT: # %bb.0:
2220 ; CHECK-NEXT: call op_0_to_3
2221 ; CHECK-NEXT: local.set 2
2222 ; CHECK-NEXT: local.set 1
2223 ; CHECK-NEXT: local.set 0
2224 ; CHECK-NEXT: local.get 1
2225 ; CHECK-NEXT: local.get 0
2226 ; CHECK-NEXT: call op_2_to_0
2227 ; CHECK-NEXT: local.get 2
2228 ; CHECK-NEXT: local.get 1
2229 ; CHECK-NEXT: call op_2_to_0
2230 ; CHECK-NEXT: # fallthrough-return
2231 %t0 = call {i32, i32, i32} @op_0_to_3()
2232 %t1 = extractvalue {i32, i32, i32} %t0, 1
2233 %t2 = extractvalue {i32, i32, i32} %t0, 0
2234 call void @op_2_to_0(i32 %t1, i32 %t2)
2235 %t3 = extractvalue {i32, i32, i32} %t0, 2
2236 %t4 = extractvalue {i32, i32, i32} %t0, 1
2237 call void @op_2_to_0(i32 %t3, i32 %t4)
2241 define void @f373() {
2242 ; CHECK-LABEL: f373:
2243 ; CHECK: .functype f373 () -> ()
2244 ; CHECK-NEXT: .local i32, i32, i32
2245 ; CHECK-NEXT: # %bb.0:
2246 ; CHECK-NEXT: call op_0_to_3
2247 ; CHECK-NEXT: local.set 2
2248 ; CHECK-NEXT: local.set 1
2249 ; CHECK-NEXT: local.set 0
2250 ; CHECK-NEXT: local.get 1
2251 ; CHECK-NEXT: local.get 0
2252 ; CHECK-NEXT: call op_2_to_0
2253 ; CHECK-NEXT: local.get 2
2254 ; CHECK-NEXT: local.get 2
2255 ; CHECK-NEXT: call op_2_to_0
2256 ; CHECK-NEXT: # fallthrough-return
2257 %t0 = call {i32, i32, i32} @op_0_to_3()
2258 %t1 = extractvalue {i32, i32, i32} %t0, 1
2259 %t2 = extractvalue {i32, i32, i32} %t0, 0
2260 call void @op_2_to_0(i32 %t1, i32 %t2)
2261 %t3 = extractvalue {i32, i32, i32} %t0, 2
2262 %t4 = extractvalue {i32, i32, i32} %t0, 2
2263 call void @op_2_to_0(i32 %t3, i32 %t4)
2267 define void @f374() {
2268 ; CHECK-LABEL: f374:
2269 ; CHECK: .functype f374 () -> ()
2270 ; CHECK-NEXT: .local i32, i32
2271 ; CHECK-NEXT: # %bb.0:
2272 ; CHECK-NEXT: call op_0_to_3
2274 ; CHECK-NEXT: local.set 1
2275 ; CHECK-NEXT: local.set 0
2276 ; CHECK-NEXT: local.get 1
2277 ; CHECK-NEXT: local.get 1
2278 ; CHECK-NEXT: call op_2_to_0
2279 ; CHECK-NEXT: local.get 0
2280 ; CHECK-NEXT: call op_1_to_0
2281 ; CHECK-NEXT: # fallthrough-return
2282 %t0 = call {i32, i32, i32} @op_0_to_3()
2283 %t1 = extractvalue {i32, i32, i32} %t0, 1
2284 %t2 = extractvalue {i32, i32, i32} %t0, 1
2285 call void @op_2_to_0(i32 %t1, i32 %t2)
2286 %t3 = extractvalue {i32, i32, i32} %t0, 0
2287 call void @op_1_to_0(i32 %t3)
2291 define void @f376() {
2292 ; CHECK-LABEL: f376:
2293 ; CHECK: .functype f376 () -> ()
2294 ; CHECK-NEXT: .local i32, i32
2295 ; CHECK-NEXT: # %bb.0:
2296 ; CHECK-NEXT: call op_0_to_3
2297 ; CHECK-NEXT: local.set 1
2298 ; CHECK-NEXT: local.set 0
2300 ; CHECK-NEXT: local.get 0
2301 ; CHECK-NEXT: local.get 0
2302 ; CHECK-NEXT: call op_2_to_0
2303 ; CHECK-NEXT: local.get 1
2304 ; CHECK-NEXT: call op_1_to_0
2305 ; CHECK-NEXT: # fallthrough-return
2306 %t0 = call {i32, i32, i32} @op_0_to_3()
2307 %t1 = extractvalue {i32, i32, i32} %t0, 1
2308 %t2 = extractvalue {i32, i32, i32} %t0, 1
2309 call void @op_2_to_0(i32 %t1, i32 %t2)
2310 %t3 = extractvalue {i32, i32, i32} %t0, 2
2311 call void @op_1_to_0(i32 %t3)
2315 define void @f377() {
2316 ; CHECK-LABEL: f377:
2317 ; CHECK: .functype f377 () -> ()
2318 ; CHECK-NEXT: .local i32, i32
2319 ; CHECK-NEXT: # %bb.0:
2320 ; CHECK-NEXT: call op_0_to_3
2322 ; CHECK-NEXT: local.set 1
2323 ; CHECK-NEXT: local.set 0
2324 ; CHECK-NEXT: local.get 1
2325 ; CHECK-NEXT: local.get 1
2326 ; CHECK-NEXT: call op_2_to_0
2327 ; CHECK-NEXT: local.get 0
2328 ; CHECK-NEXT: local.get 0
2329 ; CHECK-NEXT: call op_2_to_0
2330 ; CHECK-NEXT: # fallthrough-return
2331 %t0 = call {i32, i32, i32} @op_0_to_3()
2332 %t1 = extractvalue {i32, i32, i32} %t0, 1
2333 %t2 = extractvalue {i32, i32, i32} %t0, 1
2334 call void @op_2_to_0(i32 %t1, i32 %t2)
2335 %t3 = extractvalue {i32, i32, i32} %t0, 0
2336 %t4 = extractvalue {i32, i32, i32} %t0, 0
2337 call void @op_2_to_0(i32 %t3, i32 %t4)
2341 define void @f379() {
2342 ; CHECK-LABEL: f379:
2343 ; CHECK: .functype f379 () -> ()
2344 ; CHECK-NEXT: .local i32, i32, i32
2345 ; CHECK-NEXT: # %bb.0:
2346 ; CHECK-NEXT: call op_0_to_3
2347 ; CHECK-NEXT: local.set 2
2348 ; CHECK-NEXT: local.set 1
2349 ; CHECK-NEXT: local.set 0
2350 ; CHECK-NEXT: local.get 1
2351 ; CHECK-NEXT: local.get 1
2352 ; CHECK-NEXT: call op_2_to_0
2353 ; CHECK-NEXT: local.get 0
2354 ; CHECK-NEXT: local.get 2
2355 ; CHECK-NEXT: call op_2_to_0
2356 ; CHECK-NEXT: # fallthrough-return
2357 %t0 = call {i32, i32, i32} @op_0_to_3()
2358 %t1 = extractvalue {i32, i32, i32} %t0, 1
2359 %t2 = extractvalue {i32, i32, i32} %t0, 1
2360 call void @op_2_to_0(i32 %t1, i32 %t2)
2361 %t3 = extractvalue {i32, i32, i32} %t0, 0
2362 %t4 = extractvalue {i32, i32, i32} %t0, 2
2363 call void @op_2_to_0(i32 %t3, i32 %t4)
2367 define void @f383() {
2368 ; CHECK-LABEL: f383:
2369 ; CHECK: .functype f383 () -> ()
2370 ; CHECK-NEXT: .local i32, i32, i32
2371 ; CHECK-NEXT: # %bb.0:
2372 ; CHECK-NEXT: call op_0_to_3
2373 ; CHECK-NEXT: local.set 2
2374 ; CHECK-NEXT: local.set 1
2375 ; CHECK-NEXT: local.set 0
2376 ; CHECK-NEXT: local.get 1
2377 ; CHECK-NEXT: local.get 1
2378 ; CHECK-NEXT: call op_2_to_0
2379 ; CHECK-NEXT: local.get 2
2380 ; CHECK-NEXT: local.get 0
2381 ; CHECK-NEXT: call op_2_to_0
2382 ; CHECK-NEXT: # fallthrough-return
2383 %t0 = call {i32, i32, i32} @op_0_to_3()
2384 %t1 = extractvalue {i32, i32, i32} %t0, 1
2385 %t2 = extractvalue {i32, i32, i32} %t0, 1
2386 call void @op_2_to_0(i32 %t1, i32 %t2)
2387 %t3 = extractvalue {i32, i32, i32} %t0, 2
2388 %t4 = extractvalue {i32, i32, i32} %t0, 0
2389 call void @op_2_to_0(i32 %t3, i32 %t4)
2393 define void @f385() {
2394 ; CHECK-LABEL: f385:
2395 ; CHECK: .functype f385 () -> ()
2396 ; CHECK-NEXT: .local i32, i32
2397 ; CHECK-NEXT: # %bb.0:
2398 ; CHECK-NEXT: call op_0_to_3
2399 ; CHECK-NEXT: local.set 1
2400 ; CHECK-NEXT: local.set 0
2402 ; CHECK-NEXT: local.get 0
2403 ; CHECK-NEXT: local.get 0
2404 ; CHECK-NEXT: call op_2_to_0
2405 ; CHECK-NEXT: local.get 1
2406 ; CHECK-NEXT: local.get 1
2407 ; CHECK-NEXT: call op_2_to_0
2408 ; CHECK-NEXT: # fallthrough-return
2409 %t0 = call {i32, i32, i32} @op_0_to_3()
2410 %t1 = extractvalue {i32, i32, i32} %t0, 1
2411 %t2 = extractvalue {i32, i32, i32} %t0, 1
2412 call void @op_2_to_0(i32 %t1, i32 %t2)
2413 %t3 = extractvalue {i32, i32, i32} %t0, 2
2414 %t4 = extractvalue {i32, i32, i32} %t0, 2
2415 call void @op_2_to_0(i32 %t3, i32 %t4)
2419 define void @f386() {
2420 ; CHECK-LABEL: f386:
2421 ; CHECK: .functype f386 () -> ()
2422 ; CHECK-NEXT: .local i32, i32, i32
2423 ; CHECK-NEXT: # %bb.0:
2424 ; CHECK-NEXT: call op_0_to_3
2425 ; CHECK-NEXT: local.set 2
2426 ; CHECK-NEXT: local.set 1
2427 ; CHECK-NEXT: local.set 0
2428 ; CHECK-NEXT: local.get 1
2429 ; CHECK-NEXT: local.get 2
2430 ; CHECK-NEXT: call op_2_to_0
2431 ; CHECK-NEXT: local.get 0
2432 ; CHECK-NEXT: call op_1_to_0
2433 ; CHECK-NEXT: # fallthrough-return
2434 %t0 = call {i32, i32, i32} @op_0_to_3()
2435 %t1 = extractvalue {i32, i32, i32} %t0, 1
2436 %t2 = extractvalue {i32, i32, i32} %t0, 2
2437 call void @op_2_to_0(i32 %t1, i32 %t2)
2438 %t3 = extractvalue {i32, i32, i32} %t0, 0
2439 call void @op_1_to_0(i32 %t3)
2443 define void @f387() {
2444 ; CHECK-LABEL: f387:
2445 ; CHECK: .functype f387 () -> ()
2446 ; CHECK-NEXT: .local i32, i32
2447 ; CHECK-NEXT: # %bb.0:
2448 ; CHECK-NEXT: call op_0_to_3
2449 ; CHECK-NEXT: local.set 1
2450 ; CHECK-NEXT: local.set 0
2452 ; CHECK-NEXT: local.get 0
2453 ; CHECK-NEXT: local.get 1
2454 ; CHECK-NEXT: call op_2_to_0
2455 ; CHECK-NEXT: local.get 0
2456 ; CHECK-NEXT: call op_1_to_0
2457 ; CHECK-NEXT: # fallthrough-return
2458 %t0 = call {i32, i32, i32} @op_0_to_3()
2459 %t1 = extractvalue {i32, i32, i32} %t0, 1
2460 %t2 = extractvalue {i32, i32, i32} %t0, 2
2461 call void @op_2_to_0(i32 %t1, i32 %t2)
2462 %t3 = extractvalue {i32, i32, i32} %t0, 1
2463 call void @op_1_to_0(i32 %t3)
2467 define void @f388() {
2468 ; CHECK-LABEL: f388:
2469 ; CHECK: .functype f388 () -> ()
2470 ; CHECK-NEXT: .local i32, i32
2471 ; CHECK-NEXT: # %bb.0:
2472 ; CHECK-NEXT: call op_0_to_3
2473 ; CHECK-NEXT: local.set 1
2474 ; CHECK-NEXT: local.set 0
2476 ; CHECK-NEXT: local.get 0
2477 ; CHECK-NEXT: local.get 1
2478 ; CHECK-NEXT: call op_2_to_0
2479 ; CHECK-NEXT: local.get 1
2480 ; CHECK-NEXT: call op_1_to_0
2481 ; CHECK-NEXT: # fallthrough-return
2482 %t0 = call {i32, i32, i32} @op_0_to_3()
2483 %t1 = extractvalue {i32, i32, i32} %t0, 1
2484 %t2 = extractvalue {i32, i32, i32} %t0, 2
2485 call void @op_2_to_0(i32 %t1, i32 %t2)
2486 %t3 = extractvalue {i32, i32, i32} %t0, 2
2487 call void @op_1_to_0(i32 %t3)
2491 define void @f389() {
2492 ; CHECK-LABEL: f389:
2493 ; CHECK: .functype f389 () -> ()
2494 ; CHECK-NEXT: .local i32, i32, i32
2495 ; CHECK-NEXT: # %bb.0:
2496 ; CHECK-NEXT: call op_0_to_3
2497 ; CHECK-NEXT: local.set 2
2498 ; CHECK-NEXT: local.set 1
2499 ; CHECK-NEXT: local.set 0
2500 ; CHECK-NEXT: local.get 1
2501 ; CHECK-NEXT: local.get 2
2502 ; CHECK-NEXT: call op_2_to_0
2503 ; CHECK-NEXT: local.get 0
2504 ; CHECK-NEXT: local.get 0
2505 ; CHECK-NEXT: call op_2_to_0
2506 ; CHECK-NEXT: # fallthrough-return
2507 %t0 = call {i32, i32, i32} @op_0_to_3()
2508 %t1 = extractvalue {i32, i32, i32} %t0, 1
2509 %t2 = extractvalue {i32, i32, i32} %t0, 2
2510 call void @op_2_to_0(i32 %t1, i32 %t2)
2511 %t3 = extractvalue {i32, i32, i32} %t0, 0
2512 %t4 = extractvalue {i32, i32, i32} %t0, 0
2513 call void @op_2_to_0(i32 %t3, i32 %t4)
2517 define void @f390() {
2518 ; CHECK-LABEL: f390:
2519 ; CHECK: .functype f390 () -> ()
2520 ; CHECK-NEXT: .local i32, i32, i32
2521 ; CHECK-NEXT: # %bb.0:
2522 ; CHECK-NEXT: call op_0_to_3
2523 ; CHECK-NEXT: local.set 2
2524 ; CHECK-NEXT: local.set 1
2525 ; CHECK-NEXT: local.set 0
2526 ; CHECK-NEXT: local.get 1
2527 ; CHECK-NEXT: local.get 2
2528 ; CHECK-NEXT: call op_2_to_0
2529 ; CHECK-NEXT: local.get 0
2530 ; CHECK-NEXT: local.get 1
2531 ; CHECK-NEXT: call op_2_to_0
2532 ; CHECK-NEXT: # fallthrough-return
2533 %t0 = call {i32, i32, i32} @op_0_to_3()
2534 %t1 = extractvalue {i32, i32, i32} %t0, 1
2535 %t2 = extractvalue {i32, i32, i32} %t0, 2
2536 call void @op_2_to_0(i32 %t1, i32 %t2)
2537 %t3 = extractvalue {i32, i32, i32} %t0, 0
2538 %t4 = extractvalue {i32, i32, i32} %t0, 1
2539 call void @op_2_to_0(i32 %t3, i32 %t4)
2543 define void @f391() {
2544 ; CHECK-LABEL: f391:
2545 ; CHECK: .functype f391 () -> ()
2546 ; CHECK-NEXT: .local i32, i32, i32
2547 ; CHECK-NEXT: # %bb.0:
2548 ; CHECK-NEXT: call op_0_to_3
2549 ; CHECK-NEXT: local.set 2
2550 ; CHECK-NEXT: local.set 1
2551 ; CHECK-NEXT: local.set 0
2552 ; CHECK-NEXT: local.get 1
2553 ; CHECK-NEXT: local.get 2
2554 ; CHECK-NEXT: call op_2_to_0
2555 ; CHECK-NEXT: local.get 0
2556 ; CHECK-NEXT: local.get 2
2557 ; CHECK-NEXT: call op_2_to_0
2558 ; CHECK-NEXT: # fallthrough-return
2559 %t0 = call {i32, i32, i32} @op_0_to_3()
2560 %t1 = extractvalue {i32, i32, i32} %t0, 1
2561 %t2 = extractvalue {i32, i32, i32} %t0, 2
2562 call void @op_2_to_0(i32 %t1, i32 %t2)
2563 %t3 = extractvalue {i32, i32, i32} %t0, 0
2564 %t4 = extractvalue {i32, i32, i32} %t0, 2
2565 call void @op_2_to_0(i32 %t3, i32 %t4)
2569 define void @f392() {
2570 ; CHECK-LABEL: f392:
2571 ; CHECK: .functype f392 () -> ()
2572 ; CHECK-NEXT: .local i32, i32, i32
2573 ; CHECK-NEXT: # %bb.0:
2574 ; CHECK-NEXT: call op_0_to_3
2575 ; CHECK-NEXT: local.set 2
2576 ; CHECK-NEXT: local.set 1
2577 ; CHECK-NEXT: local.set 0
2578 ; CHECK-NEXT: local.get 1
2579 ; CHECK-NEXT: local.get 2
2580 ; CHECK-NEXT: call op_2_to_0
2581 ; CHECK-NEXT: local.get 1
2582 ; CHECK-NEXT: local.get 0
2583 ; CHECK-NEXT: call op_2_to_0
2584 ; CHECK-NEXT: # fallthrough-return
2585 %t0 = call {i32, i32, i32} @op_0_to_3()
2586 %t1 = extractvalue {i32, i32, i32} %t0, 1
2587 %t2 = extractvalue {i32, i32, i32} %t0, 2
2588 call void @op_2_to_0(i32 %t1, i32 %t2)
2589 %t3 = extractvalue {i32, i32, i32} %t0, 1
2590 %t4 = extractvalue {i32, i32, i32} %t0, 0
2591 call void @op_2_to_0(i32 %t3, i32 %t4)
2595 define void @f395() {
2596 ; CHECK-LABEL: f395:
2597 ; CHECK: .functype f395 () -> ()
2598 ; CHECK-NEXT: .local i32, i32, i32
2599 ; CHECK-NEXT: # %bb.0:
2600 ; CHECK-NEXT: call op_0_to_3
2601 ; CHECK-NEXT: local.set 2
2602 ; CHECK-NEXT: local.set 1
2603 ; CHECK-NEXT: local.set 0
2604 ; CHECK-NEXT: local.get 1
2605 ; CHECK-NEXT: local.get 2
2606 ; CHECK-NEXT: call op_2_to_0
2607 ; CHECK-NEXT: local.get 2
2608 ; CHECK-NEXT: local.get 0
2609 ; CHECK-NEXT: call op_2_to_0
2610 ; CHECK-NEXT: # fallthrough-return
2611 %t0 = call {i32, i32, i32} @op_0_to_3()
2612 %t1 = extractvalue {i32, i32, i32} %t0, 1
2613 %t2 = extractvalue {i32, i32, i32} %t0, 2
2614 call void @op_2_to_0(i32 %t1, i32 %t2)
2615 %t3 = extractvalue {i32, i32, i32} %t0, 2
2616 %t4 = extractvalue {i32, i32, i32} %t0, 0
2617 call void @op_2_to_0(i32 %t3, i32 %t4)
2621 define void @f396() {
2622 ; CHECK-LABEL: f396:
2623 ; CHECK: .functype f396 () -> ()
2624 ; CHECK-NEXT: .local i32, i32
2625 ; CHECK-NEXT: # %bb.0:
2626 ; CHECK-NEXT: call op_0_to_3
2627 ; CHECK-NEXT: local.set 1
2628 ; CHECK-NEXT: local.set 0
2630 ; CHECK-NEXT: local.get 0
2631 ; CHECK-NEXT: local.get 1
2632 ; CHECK-NEXT: call op_2_to_0
2633 ; CHECK-NEXT: local.get 1
2634 ; CHECK-NEXT: local.get 0
2635 ; CHECK-NEXT: call op_2_to_0
2636 ; CHECK-NEXT: # fallthrough-return
2637 %t0 = call {i32, i32, i32} @op_0_to_3()
2638 %t1 = extractvalue {i32, i32, i32} %t0, 1
2639 %t2 = extractvalue {i32, i32, i32} %t0, 2
2640 call void @op_2_to_0(i32 %t1, i32 %t2)
2641 %t3 = extractvalue {i32, i32, i32} %t0, 2
2642 %t4 = extractvalue {i32, i32, i32} %t0, 1
2643 call void @op_2_to_0(i32 %t3, i32 %t4)
2647 define void @f398() {
2648 ; CHECK-LABEL: f398:
2649 ; CHECK: .functype f398 () -> ()
2650 ; CHECK-NEXT: .local i32, i32
2651 ; CHECK-NEXT: # %bb.0:
2652 ; CHECK-NEXT: call op_0_to_3
2653 ; CHECK-NEXT: local.set 1
2655 ; CHECK-NEXT: local.set 0
2656 ; CHECK-NEXT: local.get 1
2657 ; CHECK-NEXT: local.get 0
2658 ; CHECK-NEXT: call op_2_to_0
2659 ; CHECK-NEXT: local.get 0
2660 ; CHECK-NEXT: call op_1_to_0
2661 ; CHECK-NEXT: # fallthrough-return
2662 %t0 = call {i32, i32, i32} @op_0_to_3()
2663 %t1 = extractvalue {i32, i32, i32} %t0, 2
2664 %t2 = extractvalue {i32, i32, i32} %t0, 0
2665 call void @op_2_to_0(i32 %t1, i32 %t2)
2666 %t3 = extractvalue {i32, i32, i32} %t0, 0
2667 call void @op_1_to_0(i32 %t3)
2671 define void @f399() {
2672 ; CHECK-LABEL: f399:
2673 ; CHECK: .functype f399 () -> ()
2674 ; CHECK-NEXT: .local i32, i32, i32
2675 ; CHECK-NEXT: # %bb.0:
2676 ; CHECK-NEXT: call op_0_to_3
2677 ; CHECK-NEXT: local.set 2
2678 ; CHECK-NEXT: local.set 1
2679 ; CHECK-NEXT: local.set 0
2680 ; CHECK-NEXT: local.get 2
2681 ; CHECK-NEXT: local.get 0
2682 ; CHECK-NEXT: call op_2_to_0
2683 ; CHECK-NEXT: local.get 1
2684 ; CHECK-NEXT: call op_1_to_0
2685 ; CHECK-NEXT: # fallthrough-return
2686 %t0 = call {i32, i32, i32} @op_0_to_3()
2687 %t1 = extractvalue {i32, i32, i32} %t0, 2
2688 %t2 = extractvalue {i32, i32, i32} %t0, 0
2689 call void @op_2_to_0(i32 %t1, i32 %t2)
2690 %t3 = extractvalue {i32, i32, i32} %t0, 1
2691 call void @op_1_to_0(i32 %t3)
2695 define void @f400() {
2696 ; CHECK-LABEL: f400:
2697 ; CHECK: .functype f400 () -> ()
2698 ; CHECK-NEXT: .local i32, i32
2699 ; CHECK-NEXT: # %bb.0:
2700 ; CHECK-NEXT: call op_0_to_3
2701 ; CHECK-NEXT: local.set 1
2703 ; CHECK-NEXT: local.set 0
2704 ; CHECK-NEXT: local.get 1
2705 ; CHECK-NEXT: local.get 0
2706 ; CHECK-NEXT: call op_2_to_0
2707 ; CHECK-NEXT: local.get 1
2708 ; CHECK-NEXT: call op_1_to_0
2709 ; CHECK-NEXT: # fallthrough-return
2710 %t0 = call {i32, i32, i32} @op_0_to_3()
2711 %t1 = extractvalue {i32, i32, i32} %t0, 2
2712 %t2 = extractvalue {i32, i32, i32} %t0, 0
2713 call void @op_2_to_0(i32 %t1, i32 %t2)
2714 %t3 = extractvalue {i32, i32, i32} %t0, 2
2715 call void @op_1_to_0(i32 %t3)
2719 define void @f402() {
2720 ; CHECK-LABEL: f402:
2721 ; CHECK: .functype f402 () -> ()
2722 ; CHECK-NEXT: .local i32, i32, i32
2723 ; CHECK-NEXT: # %bb.0:
2724 ; CHECK-NEXT: call op_0_to_3
2725 ; CHECK-NEXT: local.set 2
2726 ; CHECK-NEXT: local.set 1
2727 ; CHECK-NEXT: local.set 0
2728 ; CHECK-NEXT: local.get 2
2729 ; CHECK-NEXT: local.get 0
2730 ; CHECK-NEXT: call op_2_to_0
2731 ; CHECK-NEXT: local.get 0
2732 ; CHECK-NEXT: local.get 1
2733 ; CHECK-NEXT: call op_2_to_0
2734 ; CHECK-NEXT: # fallthrough-return
2735 %t0 = call {i32, i32, i32} @op_0_to_3()
2736 %t1 = extractvalue {i32, i32, i32} %t0, 2
2737 %t2 = extractvalue {i32, i32, i32} %t0, 0
2738 call void @op_2_to_0(i32 %t1, i32 %t2)
2739 %t3 = extractvalue {i32, i32, i32} %t0, 0
2740 %t4 = extractvalue {i32, i32, i32} %t0, 1
2741 call void @op_2_to_0(i32 %t3, i32 %t4)
2745 define void @f403() {
2746 ; CHECK-LABEL: f403:
2747 ; CHECK: .functype f403 () -> ()
2748 ; CHECK-NEXT: .local i32, i32
2749 ; CHECK-NEXT: # %bb.0:
2750 ; CHECK-NEXT: call op_0_to_3
2751 ; CHECK-NEXT: local.set 1
2753 ; CHECK-NEXT: local.set 0
2754 ; CHECK-NEXT: local.get 1
2755 ; CHECK-NEXT: local.get 0
2756 ; CHECK-NEXT: call op_2_to_0
2757 ; CHECK-NEXT: local.get 0
2758 ; CHECK-NEXT: local.get 1
2759 ; CHECK-NEXT: call op_2_to_0
2760 ; CHECK-NEXT: # fallthrough-return
2761 %t0 = call {i32, i32, i32} @op_0_to_3()
2762 %t1 = extractvalue {i32, i32, i32} %t0, 2
2763 %t2 = extractvalue {i32, i32, i32} %t0, 0
2764 call void @op_2_to_0(i32 %t1, i32 %t2)
2765 %t3 = extractvalue {i32, i32, i32} %t0, 0
2766 %t4 = extractvalue {i32, i32, i32} %t0, 2
2767 call void @op_2_to_0(i32 %t3, i32 %t4)
2771 define void @f404() {
2772 ; CHECK-LABEL: f404:
2773 ; CHECK: .functype f404 () -> ()
2774 ; CHECK-NEXT: .local i32, i32, i32
2775 ; CHECK-NEXT: # %bb.0:
2776 ; CHECK-NEXT: call op_0_to_3
2777 ; CHECK-NEXT: local.set 2
2778 ; CHECK-NEXT: local.set 1
2779 ; CHECK-NEXT: local.set 0
2780 ; CHECK-NEXT: local.get 2
2781 ; CHECK-NEXT: local.get 0
2782 ; CHECK-NEXT: call op_2_to_0
2783 ; CHECK-NEXT: local.get 1
2784 ; CHECK-NEXT: local.get 0
2785 ; CHECK-NEXT: call op_2_to_0
2786 ; CHECK-NEXT: # fallthrough-return
2787 %t0 = call {i32, i32, i32} @op_0_to_3()
2788 %t1 = extractvalue {i32, i32, i32} %t0, 2
2789 %t2 = extractvalue {i32, i32, i32} %t0, 0
2790 call void @op_2_to_0(i32 %t1, i32 %t2)
2791 %t3 = extractvalue {i32, i32, i32} %t0, 1
2792 %t4 = extractvalue {i32, i32, i32} %t0, 0
2793 call void @op_2_to_0(i32 %t3, i32 %t4)
2797 define void @f405() {
2798 ; CHECK-LABEL: f405:
2799 ; CHECK: .functype f405 () -> ()
2800 ; CHECK-NEXT: .local i32, i32, i32
2801 ; CHECK-NEXT: # %bb.0:
2802 ; CHECK-NEXT: call op_0_to_3
2803 ; CHECK-NEXT: local.set 2
2804 ; CHECK-NEXT: local.set 1
2805 ; CHECK-NEXT: local.set 0
2806 ; CHECK-NEXT: local.get 2
2807 ; CHECK-NEXT: local.get 0
2808 ; CHECK-NEXT: call op_2_to_0
2809 ; CHECK-NEXT: local.get 1
2810 ; CHECK-NEXT: local.get 1
2811 ; CHECK-NEXT: call op_2_to_0
2812 ; CHECK-NEXT: # fallthrough-return
2813 %t0 = call {i32, i32, i32} @op_0_to_3()
2814 %t1 = extractvalue {i32, i32, i32} %t0, 2
2815 %t2 = extractvalue {i32, i32, i32} %t0, 0
2816 call void @op_2_to_0(i32 %t1, i32 %t2)
2817 %t3 = extractvalue {i32, i32, i32} %t0, 1
2818 %t4 = extractvalue {i32, i32, i32} %t0, 1
2819 call void @op_2_to_0(i32 %t3, i32 %t4)
2823 define void @f406() {
2824 ; CHECK-LABEL: f406:
2825 ; CHECK: .functype f406 () -> ()
2826 ; CHECK-NEXT: .local i32, i32, i32
2827 ; CHECK-NEXT: # %bb.0:
2828 ; CHECK-NEXT: call op_0_to_3
2829 ; CHECK-NEXT: local.set 2
2830 ; CHECK-NEXT: local.set 1
2831 ; CHECK-NEXT: local.set 0
2832 ; CHECK-NEXT: local.get 2
2833 ; CHECK-NEXT: local.get 0
2834 ; CHECK-NEXT: call op_2_to_0
2835 ; CHECK-NEXT: local.get 1
2836 ; CHECK-NEXT: local.get 2
2837 ; CHECK-NEXT: call op_2_to_0
2838 ; CHECK-NEXT: # fallthrough-return
2839 %t0 = call {i32, i32, i32} @op_0_to_3()
2840 %t1 = extractvalue {i32, i32, i32} %t0, 2
2841 %t2 = extractvalue {i32, i32, i32} %t0, 0
2842 call void @op_2_to_0(i32 %t1, i32 %t2)
2843 %t3 = extractvalue {i32, i32, i32} %t0, 1
2844 %t4 = extractvalue {i32, i32, i32} %t0, 2
2845 call void @op_2_to_0(i32 %t3, i32 %t4)
2849 define void @f408() {
2850 ; CHECK-LABEL: f408:
2851 ; CHECK: .functype f408 () -> ()
2852 ; CHECK-NEXT: .local i32, i32, i32
2853 ; CHECK-NEXT: # %bb.0:
2854 ; CHECK-NEXT: call op_0_to_3
2855 ; CHECK-NEXT: local.set 2
2856 ; CHECK-NEXT: local.set 1
2857 ; CHECK-NEXT: local.set 0
2858 ; CHECK-NEXT: local.get 2
2859 ; CHECK-NEXT: local.get 0
2860 ; CHECK-NEXT: call op_2_to_0
2861 ; CHECK-NEXT: local.get 2
2862 ; CHECK-NEXT: local.get 1
2863 ; CHECK-NEXT: call op_2_to_0
2864 ; CHECK-NEXT: # fallthrough-return
2865 %t0 = call {i32, i32, i32} @op_0_to_3()
2866 %t1 = extractvalue {i32, i32, i32} %t0, 2
2867 %t2 = extractvalue {i32, i32, i32} %t0, 0
2868 call void @op_2_to_0(i32 %t1, i32 %t2)
2869 %t3 = extractvalue {i32, i32, i32} %t0, 2
2870 %t4 = extractvalue {i32, i32, i32} %t0, 1
2871 call void @op_2_to_0(i32 %t3, i32 %t4)
2875 define void @f410() {
2876 ; CHECK-LABEL: f410:
2877 ; CHECK: .functype f410 () -> ()
2878 ; CHECK-NEXT: .local i32, i32, i32
2879 ; CHECK-NEXT: # %bb.0:
2880 ; CHECK-NEXT: call op_0_to_3
2881 ; CHECK-NEXT: local.set 2
2882 ; CHECK-NEXT: local.set 1
2883 ; CHECK-NEXT: local.set 0
2884 ; CHECK-NEXT: local.get 2
2885 ; CHECK-NEXT: local.get 1
2886 ; CHECK-NEXT: call op_2_to_0
2887 ; CHECK-NEXT: local.get 0
2888 ; CHECK-NEXT: call op_1_to_0
2889 ; CHECK-NEXT: # fallthrough-return
2890 %t0 = call {i32, i32, i32} @op_0_to_3()
2891 %t1 = extractvalue {i32, i32, i32} %t0, 2
2892 %t2 = extractvalue {i32, i32, i32} %t0, 1
2893 call void @op_2_to_0(i32 %t1, i32 %t2)
2894 %t3 = extractvalue {i32, i32, i32} %t0, 0
2895 call void @op_1_to_0(i32 %t3)
2899 define void @f411() {
2900 ; CHECK-LABEL: f411:
2901 ; CHECK: .functype f411 () -> ()
2902 ; CHECK-NEXT: .local i32, i32
2903 ; CHECK-NEXT: # %bb.0:
2904 ; CHECK-NEXT: call op_0_to_3
2905 ; CHECK-NEXT: local.set 1
2906 ; CHECK-NEXT: local.set 0
2908 ; CHECK-NEXT: local.get 1
2909 ; CHECK-NEXT: local.get 0
2910 ; CHECK-NEXT: call op_2_to_0
2911 ; CHECK-NEXT: local.get 0
2912 ; CHECK-NEXT: call op_1_to_0
2913 ; CHECK-NEXT: # fallthrough-return
2914 %t0 = call {i32, i32, i32} @op_0_to_3()
2915 %t1 = extractvalue {i32, i32, i32} %t0, 2
2916 %t2 = extractvalue {i32, i32, i32} %t0, 1
2917 call void @op_2_to_0(i32 %t1, i32 %t2)
2918 %t3 = extractvalue {i32, i32, i32} %t0, 1
2919 call void @op_1_to_0(i32 %t3)
2923 define void @f412() {
2924 ; CHECK-LABEL: f412:
2925 ; CHECK: .functype f412 () -> ()
2926 ; CHECK-NEXT: .local i32, i32
2927 ; CHECK-NEXT: # %bb.0:
2928 ; CHECK-NEXT: call op_0_to_3
2929 ; CHECK-NEXT: local.set 1
2930 ; CHECK-NEXT: local.set 0
2932 ; CHECK-NEXT: local.get 1
2933 ; CHECK-NEXT: local.get 0
2934 ; CHECK-NEXT: call op_2_to_0
2935 ; CHECK-NEXT: local.get 1
2936 ; CHECK-NEXT: call op_1_to_0
2937 ; CHECK-NEXT: # fallthrough-return
2938 %t0 = call {i32, i32, i32} @op_0_to_3()
2939 %t1 = extractvalue {i32, i32, i32} %t0, 2
2940 %t2 = extractvalue {i32, i32, i32} %t0, 1
2941 call void @op_2_to_0(i32 %t1, i32 %t2)
2942 %t3 = extractvalue {i32, i32, i32} %t0, 2
2943 call void @op_1_to_0(i32 %t3)
2947 define void @f413() {
2948 ; CHECK-LABEL: f413:
2949 ; CHECK: .functype f413 () -> ()
2950 ; CHECK-NEXT: .local i32, i32, i32
2951 ; CHECK-NEXT: # %bb.0:
2952 ; CHECK-NEXT: call op_0_to_3
2953 ; CHECK-NEXT: local.set 2
2954 ; CHECK-NEXT: local.set 1
2955 ; CHECK-NEXT: local.set 0
2956 ; CHECK-NEXT: local.get 2
2957 ; CHECK-NEXT: local.get 1
2958 ; CHECK-NEXT: call op_2_to_0
2959 ; CHECK-NEXT: local.get 0
2960 ; CHECK-NEXT: local.get 0
2961 ; CHECK-NEXT: call op_2_to_0
2962 ; CHECK-NEXT: # fallthrough-return
2963 %t0 = call {i32, i32, i32} @op_0_to_3()
2964 %t1 = extractvalue {i32, i32, i32} %t0, 2
2965 %t2 = extractvalue {i32, i32, i32} %t0, 1
2966 call void @op_2_to_0(i32 %t1, i32 %t2)
2967 %t3 = extractvalue {i32, i32, i32} %t0, 0
2968 %t4 = extractvalue {i32, i32, i32} %t0, 0
2969 call void @op_2_to_0(i32 %t3, i32 %t4)
2973 define void @f414() {
2974 ; CHECK-LABEL: f414:
2975 ; CHECK: .functype f414 () -> ()
2976 ; CHECK-NEXT: .local i32, i32, i32
2977 ; CHECK-NEXT: # %bb.0:
2978 ; CHECK-NEXT: call op_0_to_3
2979 ; CHECK-NEXT: local.set 2
2980 ; CHECK-NEXT: local.set 1
2981 ; CHECK-NEXT: local.set 0
2982 ; CHECK-NEXT: local.get 2
2983 ; CHECK-NEXT: local.get 1
2984 ; CHECK-NEXT: call op_2_to_0
2985 ; CHECK-NEXT: local.get 0
2986 ; CHECK-NEXT: local.get 1
2987 ; CHECK-NEXT: call op_2_to_0
2988 ; CHECK-NEXT: # fallthrough-return
2989 %t0 = call {i32, i32, i32} @op_0_to_3()
2990 %t1 = extractvalue {i32, i32, i32} %t0, 2
2991 %t2 = extractvalue {i32, i32, i32} %t0, 1
2992 call void @op_2_to_0(i32 %t1, i32 %t2)
2993 %t3 = extractvalue {i32, i32, i32} %t0, 0
2994 %t4 = extractvalue {i32, i32, i32} %t0, 1
2995 call void @op_2_to_0(i32 %t3, i32 %t4)
2999 define void @f415() {
3000 ; CHECK-LABEL: f415:
3001 ; CHECK: .functype f415 () -> ()
3002 ; CHECK-NEXT: .local i32, i32, i32
3003 ; CHECK-NEXT: # %bb.0:
3004 ; CHECK-NEXT: call op_0_to_3
3005 ; CHECK-NEXT: local.set 2
3006 ; CHECK-NEXT: local.set 1
3007 ; CHECK-NEXT: local.set 0
3008 ; CHECK-NEXT: local.get 2
3009 ; CHECK-NEXT: local.get 1
3010 ; CHECK-NEXT: call op_2_to_0
3011 ; CHECK-NEXT: local.get 0
3012 ; CHECK-NEXT: local.get 2
3013 ; CHECK-NEXT: call op_2_to_0
3014 ; CHECK-NEXT: # fallthrough-return
3015 %t0 = call {i32, i32, i32} @op_0_to_3()
3016 %t1 = extractvalue {i32, i32, i32} %t0, 2
3017 %t2 = extractvalue {i32, i32, i32} %t0, 1
3018 call void @op_2_to_0(i32 %t1, i32 %t2)
3019 %t3 = extractvalue {i32, i32, i32} %t0, 0
3020 %t4 = extractvalue {i32, i32, i32} %t0, 2
3021 call void @op_2_to_0(i32 %t3, i32 %t4)
3025 define void @f416() {
3026 ; CHECK-LABEL: f416:
3027 ; CHECK: .functype f416 () -> ()
3028 ; CHECK-NEXT: .local i32, i32, i32
3029 ; CHECK-NEXT: # %bb.0:
3030 ; CHECK-NEXT: call op_0_to_3
3031 ; CHECK-NEXT: local.set 2
3032 ; CHECK-NEXT: local.set 1
3033 ; CHECK-NEXT: local.set 0
3034 ; CHECK-NEXT: local.get 2
3035 ; CHECK-NEXT: local.get 1
3036 ; CHECK-NEXT: call op_2_to_0
3037 ; CHECK-NEXT: local.get 1
3038 ; CHECK-NEXT: local.get 0
3039 ; CHECK-NEXT: call op_2_to_0
3040 ; CHECK-NEXT: # fallthrough-return
3041 %t0 = call {i32, i32, i32} @op_0_to_3()
3042 %t1 = extractvalue {i32, i32, i32} %t0, 2
3043 %t2 = extractvalue {i32, i32, i32} %t0, 1
3044 call void @op_2_to_0(i32 %t1, i32 %t2)
3045 %t3 = extractvalue {i32, i32, i32} %t0, 1
3046 %t4 = extractvalue {i32, i32, i32} %t0, 0
3047 call void @op_2_to_0(i32 %t3, i32 %t4)
3051 define void @f418() {
3052 ; CHECK-LABEL: f418:
3053 ; CHECK: .functype f418 () -> ()
3054 ; CHECK-NEXT: .local i32, i32
3055 ; CHECK-NEXT: # %bb.0:
3056 ; CHECK-NEXT: call op_0_to_3
3057 ; CHECK-NEXT: local.set 1
3058 ; CHECK-NEXT: local.set 0
3060 ; CHECK-NEXT: local.get 1
3061 ; CHECK-NEXT: local.get 0
3062 ; CHECK-NEXT: call op_2_to_0
3063 ; CHECK-NEXT: local.get 0
3064 ; CHECK-NEXT: local.get 1
3065 ; CHECK-NEXT: call op_2_to_0
3066 ; CHECK-NEXT: # fallthrough-return
3067 %t0 = call {i32, i32, i32} @op_0_to_3()
3068 %t1 = extractvalue {i32, i32, i32} %t0, 2
3069 %t2 = extractvalue {i32, i32, i32} %t0, 1
3070 call void @op_2_to_0(i32 %t1, i32 %t2)
3071 %t3 = extractvalue {i32, i32, i32} %t0, 1
3072 %t4 = extractvalue {i32, i32, i32} %t0, 2
3073 call void @op_2_to_0(i32 %t3, i32 %t4)
3077 define void @f419() {
3078 ; CHECK-LABEL: f419:
3079 ; CHECK: .functype f419 () -> ()
3080 ; CHECK-NEXT: .local i32, i32, i32
3081 ; CHECK-NEXT: # %bb.0:
3082 ; CHECK-NEXT: call op_0_to_3
3083 ; CHECK-NEXT: local.set 2
3084 ; CHECK-NEXT: local.set 1
3085 ; CHECK-NEXT: local.set 0
3086 ; CHECK-NEXT: local.get 2
3087 ; CHECK-NEXT: local.get 1
3088 ; CHECK-NEXT: call op_2_to_0
3089 ; CHECK-NEXT: local.get 2
3090 ; CHECK-NEXT: local.get 0
3091 ; CHECK-NEXT: call op_2_to_0
3092 ; CHECK-NEXT: # fallthrough-return
3093 %t0 = call {i32, i32, i32} @op_0_to_3()
3094 %t1 = extractvalue {i32, i32, i32} %t0, 2
3095 %t2 = extractvalue {i32, i32, i32} %t0, 1
3096 call void @op_2_to_0(i32 %t1, i32 %t2)
3097 %t3 = extractvalue {i32, i32, i32} %t0, 2
3098 %t4 = extractvalue {i32, i32, i32} %t0, 0
3099 call void @op_2_to_0(i32 %t3, i32 %t4)
3103 define void @f422() {
3104 ; CHECK-LABEL: f422:
3105 ; CHECK: .functype f422 () -> ()
3106 ; CHECK-NEXT: .local i32, i32
3107 ; CHECK-NEXT: # %bb.0:
3108 ; CHECK-NEXT: call op_0_to_3
3109 ; CHECK-NEXT: local.set 1
3111 ; CHECK-NEXT: local.set 0
3112 ; CHECK-NEXT: local.get 1
3113 ; CHECK-NEXT: local.get 1
3114 ; CHECK-NEXT: call op_2_to_0
3115 ; CHECK-NEXT: local.get 0
3116 ; CHECK-NEXT: call op_1_to_0
3117 ; CHECK-NEXT: # fallthrough-return
3118 %t0 = call {i32, i32, i32} @op_0_to_3()
3119 %t1 = extractvalue {i32, i32, i32} %t0, 2
3120 %t2 = extractvalue {i32, i32, i32} %t0, 2
3121 call void @op_2_to_0(i32 %t1, i32 %t2)
3122 %t3 = extractvalue {i32, i32, i32} %t0, 0
3123 call void @op_1_to_0(i32 %t3)
3127 define void @f423() {
3128 ; CHECK-LABEL: f423:
3129 ; CHECK: .functype f423 () -> ()
3130 ; CHECK-NEXT: .local i32, i32
3131 ; CHECK-NEXT: # %bb.0:
3132 ; CHECK-NEXT: call op_0_to_3
3133 ; CHECK-NEXT: local.set 1
3134 ; CHECK-NEXT: local.set 0
3136 ; CHECK-NEXT: local.get 1
3137 ; CHECK-NEXT: local.get 1
3138 ; CHECK-NEXT: call op_2_to_0
3139 ; CHECK-NEXT: local.get 0
3140 ; CHECK-NEXT: call op_1_to_0
3141 ; CHECK-NEXT: # fallthrough-return
3142 %t0 = call {i32, i32, i32} @op_0_to_3()
3143 %t1 = extractvalue {i32, i32, i32} %t0, 2
3144 %t2 = extractvalue {i32, i32, i32} %t0, 2
3145 call void @op_2_to_0(i32 %t1, i32 %t2)
3146 %t3 = extractvalue {i32, i32, i32} %t0, 1
3147 call void @op_1_to_0(i32 %t3)
3151 define void @f425() {
3152 ; CHECK-LABEL: f425:
3153 ; CHECK: .functype f425 () -> ()
3154 ; CHECK-NEXT: .local i32, i32
3155 ; CHECK-NEXT: # %bb.0:
3156 ; CHECK-NEXT: call op_0_to_3
3157 ; CHECK-NEXT: local.set 1
3159 ; CHECK-NEXT: local.set 0
3160 ; CHECK-NEXT: local.get 1
3161 ; CHECK-NEXT: local.get 1
3162 ; CHECK-NEXT: call op_2_to_0
3163 ; CHECK-NEXT: local.get 0
3164 ; CHECK-NEXT: local.get 0
3165 ; CHECK-NEXT: call op_2_to_0
3166 ; CHECK-NEXT: # fallthrough-return
3167 %t0 = call {i32, i32, i32} @op_0_to_3()
3168 %t1 = extractvalue {i32, i32, i32} %t0, 2
3169 %t2 = extractvalue {i32, i32, i32} %t0, 2
3170 call void @op_2_to_0(i32 %t1, i32 %t2)
3171 %t3 = extractvalue {i32, i32, i32} %t0, 0
3172 %t4 = extractvalue {i32, i32, i32} %t0, 0
3173 call void @op_2_to_0(i32 %t3, i32 %t4)
3177 define void @f426() {
3178 ; CHECK-LABEL: f426:
3179 ; CHECK: .functype f426 () -> ()
3180 ; CHECK-NEXT: .local i32, i32, i32
3181 ; CHECK-NEXT: # %bb.0:
3182 ; CHECK-NEXT: call op_0_to_3
3183 ; CHECK-NEXT: local.set 2
3184 ; CHECK-NEXT: local.set 1
3185 ; CHECK-NEXT: local.set 0
3186 ; CHECK-NEXT: local.get 2
3187 ; CHECK-NEXT: local.get 2
3188 ; CHECK-NEXT: call op_2_to_0
3189 ; CHECK-NEXT: local.get 0
3190 ; CHECK-NEXT: local.get 1
3191 ; CHECK-NEXT: call op_2_to_0
3192 ; CHECK-NEXT: # fallthrough-return
3193 %t0 = call {i32, i32, i32} @op_0_to_3()
3194 %t1 = extractvalue {i32, i32, i32} %t0, 2
3195 %t2 = extractvalue {i32, i32, i32} %t0, 2
3196 call void @op_2_to_0(i32 %t1, i32 %t2)
3197 %t3 = extractvalue {i32, i32, i32} %t0, 0
3198 %t4 = extractvalue {i32, i32, i32} %t0, 1
3199 call void @op_2_to_0(i32 %t3, i32 %t4)
3203 define void @f428() {
3204 ; CHECK-LABEL: f428:
3205 ; CHECK: .functype f428 () -> ()
3206 ; CHECK-NEXT: .local i32, i32, i32
3207 ; CHECK-NEXT: # %bb.0:
3208 ; CHECK-NEXT: call op_0_to_3
3209 ; CHECK-NEXT: local.set 2
3210 ; CHECK-NEXT: local.set 1
3211 ; CHECK-NEXT: local.set 0
3212 ; CHECK-NEXT: local.get 2
3213 ; CHECK-NEXT: local.get 2
3214 ; CHECK-NEXT: call op_2_to_0
3215 ; CHECK-NEXT: local.get 1
3216 ; CHECK-NEXT: local.get 0
3217 ; CHECK-NEXT: call op_2_to_0
3218 ; CHECK-NEXT: # fallthrough-return
3219 %t0 = call {i32, i32, i32} @op_0_to_3()
3220 %t1 = extractvalue {i32, i32, i32} %t0, 2
3221 %t2 = extractvalue {i32, i32, i32} %t0, 2
3222 call void @op_2_to_0(i32 %t1, i32 %t2)
3223 %t3 = extractvalue {i32, i32, i32} %t0, 1
3224 %t4 = extractvalue {i32, i32, i32} %t0, 0
3225 call void @op_2_to_0(i32 %t3, i32 %t4)
3229 define void @f429() {
3230 ; CHECK-LABEL: f429:
3231 ; CHECK: .functype f429 () -> ()
3232 ; CHECK-NEXT: .local i32, i32
3233 ; CHECK-NEXT: # %bb.0:
3234 ; CHECK-NEXT: call op_0_to_3
3235 ; CHECK-NEXT: local.set 1
3236 ; CHECK-NEXT: local.set 0
3238 ; CHECK-NEXT: local.get 1
3239 ; CHECK-NEXT: local.get 1
3240 ; CHECK-NEXT: call op_2_to_0
3241 ; CHECK-NEXT: local.get 0
3242 ; CHECK-NEXT: local.get 0
3243 ; CHECK-NEXT: call op_2_to_0
3244 ; CHECK-NEXT: # fallthrough-return
3245 %t0 = call {i32, i32, i32} @op_0_to_3()
3246 %t1 = extractvalue {i32, i32, i32} %t0, 2
3247 %t2 = extractvalue {i32, i32, i32} %t0, 2
3248 call void @op_2_to_0(i32 %t1, i32 %t2)
3249 %t3 = extractvalue {i32, i32, i32} %t0, 1
3250 %t4 = extractvalue {i32, i32, i32} %t0, 1
3251 call void @op_2_to_0(i32 %t3, i32 %t4)