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