@@ -13,18 +13,16 @@ define i64 @test0() {
1313; CHECK: .functype test0 () -> (i64)
1414; CHECK-NEXT: # %bb.0:
1515; CHECK-NEXT: global.get $push0=, __stack_pointer
16- ; CHECK-NEXT: i32.const $push1=, 80
17- ; CHECK-NEXT: i32.sub $push7=, $pop0, $pop1
18- ; CHECK-NEXT: local.tee $push6=, $1=, $pop7
19- ; CHECK-NEXT: global.set __stack_pointer, $pop6
20- ; CHECK-NEXT: i32.const $push4=, 8
21- ; CHECK-NEXT: i32.add $push5=, $1, $pop4
22- ; CHECK-NEXT: call return_multi_multi, $pop5
23- ; CHECK-NEXT: i64.load $0=, 8($1)
24- ; CHECK-NEXT: i32.const $push2=, 80
16+ ; CHECK-NEXT: i32.const $push1=, 96
17+ ; CHECK-NEXT: i32.sub $push5=, $pop0, $pop1
18+ ; CHECK-NEXT: local.tee $push4=, $1=, $pop5
19+ ; CHECK-NEXT: global.set __stack_pointer, $pop4
20+ ; CHECK-NEXT: call return_multi_multi, $1
21+ ; CHECK-NEXT: i64.load $0=, 0($1)
22+ ; CHECK-NEXT: i32.const $push2=, 96
2523; CHECK-NEXT: i32.add $push3=, $1, $pop2
2624; CHECK-NEXT: global.set __stack_pointer, $pop3
27- ; CHECK-NEXT: local.copy $push8 =, $0
25+ ; CHECK-NEXT: local.copy $push6 =, $0
2826; CHECK-NEXT: # fallthrough-return
2927 %t0 = call { i64 , i128 , i192 , i128 , i64 } @return_multi_multi ()
3028 %t1 = extractvalue { i64 , i128 , i192 , i128 , i64 } %t0 , 0
@@ -36,18 +34,16 @@ define i128 @test1() {
3634; CHECK: .functype test1 (i32) -> ()
3735; CHECK-NEXT: # %bb.0:
3836; CHECK-NEXT: global.get $push1=, __stack_pointer
39- ; CHECK-NEXT: i32.const $push2=, 80
40- ; CHECK-NEXT: i32.sub $push8=, $pop1, $pop2
41- ; CHECK-NEXT: local.tee $push7=, $2=, $pop8
42- ; CHECK-NEXT: global.set __stack_pointer, $pop7
43- ; CHECK-NEXT: i32.const $push5=, 8
44- ; CHECK-NEXT: i32.add $push6=, $2, $pop5
45- ; CHECK-NEXT: call return_multi_multi, $pop6
46- ; CHECK-NEXT: i64.load $1=, 16($2)
47- ; CHECK-NEXT: i64.load $push0=, 24($2)
48- ; CHECK-NEXT: i64.store 8($0), $pop0
49- ; CHECK-NEXT: i64.store 0($0), $1
50- ; CHECK-NEXT: i32.const $push3=, 80
37+ ; CHECK-NEXT: i32.const $push2=, 96
38+ ; CHECK-NEXT: i32.sub $push6=, $pop1, $pop2
39+ ; CHECK-NEXT: local.tee $push5=, $2=, $pop6
40+ ; CHECK-NEXT: global.set __stack_pointer, $pop5
41+ ; CHECK-NEXT: call return_multi_multi, $2
42+ ; CHECK-NEXT: i64.load $1=, 24($2)
43+ ; CHECK-NEXT: i64.load $push0=, 16($2)
44+ ; CHECK-NEXT: i64.store 0($0), $pop0
45+ ; CHECK-NEXT: i64.store 8($0), $1
46+ ; CHECK-NEXT: i32.const $push3=, 96
5147; CHECK-NEXT: i32.add $push4=, $2, $pop3
5248; CHECK-NEXT: global.set __stack_pointer, $pop4
5349; CHECK-NEXT: # fallthrough-return
@@ -61,13 +57,11 @@ define i192 @test2() {
6157; CHECK: .functype test2 (i32) -> ()
6258; CHECK-NEXT: # %bb.0:
6359; CHECK-NEXT: global.get $push3=, __stack_pointer
64- ; CHECK-NEXT: i32.const $push4=, 80
65- ; CHECK-NEXT: i32.sub $push10=, $pop3, $pop4
66- ; CHECK-NEXT: local.tee $push9=, $3=, $pop10
67- ; CHECK-NEXT: global.set __stack_pointer, $pop9
68- ; CHECK-NEXT: i32.const $push7=, 8
69- ; CHECK-NEXT: i32.add $push8=, $3, $pop7
70- ; CHECK-NEXT: call return_multi_multi, $pop8
60+ ; CHECK-NEXT: i32.const $push4=, 96
61+ ; CHECK-NEXT: i32.sub $push8=, $pop3, $pop4
62+ ; CHECK-NEXT: local.tee $push7=, $3=, $pop8
63+ ; CHECK-NEXT: global.set __stack_pointer, $pop7
64+ ; CHECK-NEXT: call return_multi_multi, $3
7165; CHECK-NEXT: i64.load $1=, 40($3)
7266; CHECK-NEXT: i64.load $2=, 32($3)
7367; CHECK-NEXT: i32.const $push0=, 48
@@ -76,7 +70,7 @@ define i192 @test2() {
7670; CHECK-NEXT: i64.store 16($0), $pop2
7771; CHECK-NEXT: i64.store 0($0), $2
7872; CHECK-NEXT: i64.store 8($0), $1
79- ; CHECK-NEXT: i32.const $push5=, 80
73+ ; CHECK-NEXT: i32.const $push5=, 96
8074; CHECK-NEXT: i32.add $push6=, $3, $pop5
8175; CHECK-NEXT: global.set __stack_pointer, $pop6
8276; CHECK-NEXT: # fallthrough-return
@@ -90,18 +84,16 @@ define i128 @test3() {
9084; CHECK: .functype test3 (i32) -> ()
9185; CHECK-NEXT: # %bb.0:
9286; CHECK-NEXT: global.get $push1=, __stack_pointer
93- ; CHECK-NEXT: i32.const $push2=, 80
94- ; CHECK-NEXT: i32.sub $push8=, $pop1, $pop2
95- ; CHECK-NEXT: local.tee $push7=, $2=, $pop8
96- ; CHECK-NEXT: global.set __stack_pointer, $pop7
97- ; CHECK-NEXT: i32.const $push5=, 8
98- ; CHECK-NEXT: i32.add $push6=, $2, $pop5
99- ; CHECK-NEXT: call return_multi_multi, $pop6
100- ; CHECK-NEXT: i64.load $1=, 56($2)
87+ ; CHECK-NEXT: i32.const $push2=, 96
88+ ; CHECK-NEXT: i32.sub $push6=, $pop1, $pop2
89+ ; CHECK-NEXT: local.tee $push5=, $2=, $pop6
90+ ; CHECK-NEXT: global.set __stack_pointer, $pop5
91+ ; CHECK-NEXT: call return_multi_multi, $2
92+ ; CHECK-NEXT: i64.load $1=, 72($2)
10193; CHECK-NEXT: i64.load $push0=, 64($2)
102- ; CHECK-NEXT: i64.store 8 ($0), $pop0
103- ; CHECK-NEXT: i64.store 0 ($0), $1
104- ; CHECK-NEXT: i32.const $push3=, 80
94+ ; CHECK-NEXT: i64.store 0 ($0), $pop0
95+ ; CHECK-NEXT: i64.store 8 ($0), $1
96+ ; CHECK-NEXT: i32.const $push3=, 96
10597; CHECK-NEXT: i32.add $push4=, $2, $pop3
10698; CHECK-NEXT: global.set __stack_pointer, $pop4
10799; CHECK-NEXT: # fallthrough-return
@@ -115,18 +107,16 @@ define i64 @test4() {
115107; CHECK: .functype test4 () -> (i64)
116108; CHECK-NEXT: # %bb.0:
117109; CHECK-NEXT: global.get $push0=, __stack_pointer
118- ; CHECK-NEXT: i32.const $push1=, 80
119- ; CHECK-NEXT: i32.sub $push7=, $pop0, $pop1
120- ; CHECK-NEXT: local.tee $push6=, $1=, $pop7
121- ; CHECK-NEXT: global.set __stack_pointer, $pop6
122- ; CHECK-NEXT: i32.const $push4=, 8
123- ; CHECK-NEXT: i32.add $push5=, $1, $pop4
124- ; CHECK-NEXT: call return_multi_multi, $pop5
125- ; CHECK-NEXT: i64.load $0=, 72($1)
126- ; CHECK-NEXT: i32.const $push2=, 80
110+ ; CHECK-NEXT: i32.const $push1=, 96
111+ ; CHECK-NEXT: i32.sub $push5=, $pop0, $pop1
112+ ; CHECK-NEXT: local.tee $push4=, $1=, $pop5
113+ ; CHECK-NEXT: global.set __stack_pointer, $pop4
114+ ; CHECK-NEXT: call return_multi_multi, $1
115+ ; CHECK-NEXT: i64.load $0=, 80($1)
116+ ; CHECK-NEXT: i32.const $push2=, 96
127117; CHECK-NEXT: i32.add $push3=, $1, $pop2
128118; CHECK-NEXT: global.set __stack_pointer, $pop3
129- ; CHECK-NEXT: local.copy $push8 =, $0
119+ ; CHECK-NEXT: local.copy $push6 =, $0
130120; CHECK-NEXT: # fallthrough-return
131121 %t0 = call { i64 , i128 , i192 , i128 , i64 } @return_multi_multi ()
132122 %t1 = extractvalue { i64 , i128 , i192 , i128 , i64 } %t0 , 4
@@ -140,20 +130,18 @@ define { i64, i128 } @test5() {
140130; CHECK: .functype test5 (i32) -> ()
141131; CHECK-NEXT: # %bb.0:
142132; CHECK-NEXT: global.get $push1=, __stack_pointer
143- ; CHECK-NEXT: i32.const $push2=, 80
144- ; CHECK-NEXT: i32.sub $push8=, $pop1, $pop2
145- ; CHECK-NEXT: local.tee $push7=, $3=, $pop8
146- ; CHECK-NEXT: global.set __stack_pointer, $pop7
147- ; CHECK-NEXT: i32.const $push5=, 8
148- ; CHECK-NEXT: i32.add $push6=, $3, $pop5
149- ; CHECK-NEXT: call return_multi_multi, $pop6
150- ; CHECK-NEXT: i64.load $1=, 8($3)
151- ; CHECK-NEXT: i64.load $2=, 24($3)
152- ; CHECK-NEXT: i64.load $push0=, 16($3)
153- ; CHECK-NEXT: i64.store 8($0), $pop0
133+ ; CHECK-NEXT: i32.const $push2=, 96
134+ ; CHECK-NEXT: i32.sub $push6=, $pop1, $pop2
135+ ; CHECK-NEXT: local.tee $push5=, $3=, $pop6
136+ ; CHECK-NEXT: global.set __stack_pointer, $pop5
137+ ; CHECK-NEXT: call return_multi_multi, $3
138+ ; CHECK-NEXT: i64.load $1=, 24($3)
139+ ; CHECK-NEXT: i64.load $2=, 16($3)
140+ ; CHECK-NEXT: i64.load $push0=, 0($3)
141+ ; CHECK-NEXT: i64.store 0($0), $pop0
154142; CHECK-NEXT: i64.store 16($0), $2
155- ; CHECK-NEXT: i64.store 0 ($0), $1
156- ; CHECK-NEXT: i32.const $push3=, 80
143+ ; CHECK-NEXT: i64.store 24 ($0), $1
144+ ; CHECK-NEXT: i32.const $push3=, 96
157145; CHECK-NEXT: i32.add $push4=, $3, $pop3
158146; CHECK-NEXT: global.set __stack_pointer, $pop4
159147; CHECK-NEXT: # fallthrough-return
@@ -170,22 +158,20 @@ define { i128, i128 } @test6() {
170158; CHECK: .functype test6 (i32) -> ()
171159; CHECK-NEXT: # %bb.0:
172160; CHECK-NEXT: global.get $push1=, __stack_pointer
173- ; CHECK-NEXT: i32.const $push2=, 80
174- ; CHECK-NEXT: i32.sub $push8=, $pop1, $pop2
175- ; CHECK-NEXT: local.tee $push7=, $4=, $pop8
176- ; CHECK-NEXT: global.set __stack_pointer, $pop7
177- ; CHECK-NEXT: i32.const $push5=, 8
178- ; CHECK-NEXT: i32.add $push6=, $4, $pop5
179- ; CHECK-NEXT: call return_multi_multi, $pop6
161+ ; CHECK-NEXT: i32.const $push2=, 96
162+ ; CHECK-NEXT: i32.sub $push6=, $pop1, $pop2
163+ ; CHECK-NEXT: local.tee $push5=, $4=, $pop6
164+ ; CHECK-NEXT: global.set __stack_pointer, $pop5
165+ ; CHECK-NEXT: call return_multi_multi, $4
180166; CHECK-NEXT: i64.load $1=, 24($4)
181167; CHECK-NEXT: i64.load $2=, 16($4)
182- ; CHECK-NEXT: i64.load $3=, 64 ($4)
183- ; CHECK-NEXT: i64.load $push0=, 56 ($4)
168+ ; CHECK-NEXT: i64.load $3=, 72 ($4)
169+ ; CHECK-NEXT: i64.load $push0=, 64 ($4)
184170; CHECK-NEXT: i64.store 16($0), $pop0
185171; CHECK-NEXT: i64.store 24($0), $3
186172; CHECK-NEXT: i64.store 0($0), $2
187173; CHECK-NEXT: i64.store 8($0), $1
188- ; CHECK-NEXT: i32.const $push3=, 80
174+ ; CHECK-NEXT: i32.const $push3=, 96
189175; CHECK-NEXT: i32.add $push4=, $4, $pop3
190176; CHECK-NEXT: global.set __stack_pointer, $pop4
191177; CHECK-NEXT: # fallthrough-return
@@ -202,24 +188,22 @@ define { i64, i192 } @test7() {
202188; CHECK: .functype test7 (i32) -> ()
203189; CHECK-NEXT: # %bb.0:
204190; CHECK-NEXT: global.get $push3=, __stack_pointer
205- ; CHECK-NEXT: i32.const $push4=, 80
206- ; CHECK-NEXT: i32.sub $push10=, $pop3, $pop4
207- ; CHECK-NEXT: local.tee $push9=, $4=, $pop10
208- ; CHECK-NEXT: global.set __stack_pointer, $pop9
209- ; CHECK-NEXT: i32.const $push7=, 8
210- ; CHECK-NEXT: i32.add $push8=, $4, $pop7
211- ; CHECK-NEXT: call return_multi_multi, $pop8
212- ; CHECK-NEXT: i64.load $1=, 8($4)
213- ; CHECK-NEXT: i64.load $2=, 40($4)
214- ; CHECK-NEXT: i64.load $3=, 32($4)
191+ ; CHECK-NEXT: i32.const $push4=, 96
192+ ; CHECK-NEXT: i32.sub $push8=, $pop3, $pop4
193+ ; CHECK-NEXT: local.tee $push7=, $4=, $pop8
194+ ; CHECK-NEXT: global.set __stack_pointer, $pop7
195+ ; CHECK-NEXT: call return_multi_multi, $4
215196; CHECK-NEXT: i32.const $push0=, 48
216197; CHECK-NEXT: i32.add $push1=, $4, $pop0
217- ; CHECK-NEXT: i64.load $push2=, 0($pop1)
218- ; CHECK-NEXT: i64.store 24($0), $pop2
219- ; CHECK-NEXT: i64.store 8($0), $3
220- ; CHECK-NEXT: i64.store 16($0), $2
221- ; CHECK-NEXT: i64.store 0($0), $1
222- ; CHECK-NEXT: i32.const $push5=, 80
198+ ; CHECK-NEXT: i64.load $1=, 0($pop1)
199+ ; CHECK-NEXT: i64.load $2=, 40($4)
200+ ; CHECK-NEXT: i64.load $3=, 32($4)
201+ ; CHECK-NEXT: i64.load $push2=, 0($4)
202+ ; CHECK-NEXT: i64.store 0($0), $pop2
203+ ; CHECK-NEXT: i64.store 32($0), $1
204+ ; CHECK-NEXT: i64.store 16($0), $3
205+ ; CHECK-NEXT: i64.store 24($0), $2
206+ ; CHECK-NEXT: i32.const $push5=, 96
223207; CHECK-NEXT: i32.add $push6=, $4, $pop5
224208; CHECK-NEXT: global.set __stack_pointer, $pop6
225209; CHECK-NEXT: # fallthrough-return
@@ -236,32 +220,30 @@ define { i128, i192, i128, i64 } @test8() {
236220; CHECK: .functype test8 (i32) -> ()
237221; CHECK-NEXT: # %bb.0:
238222; CHECK-NEXT: global.get $push3=, __stack_pointer
239- ; CHECK-NEXT: i32.const $push4=, 80
240- ; CHECK-NEXT: i32.sub $push10=, $pop3, $pop4
241- ; CHECK-NEXT: local.tee $push9=, $8=, $pop10
242- ; CHECK-NEXT: global.set __stack_pointer, $pop9
243- ; CHECK-NEXT: i32.const $push7=, 8
244- ; CHECK-NEXT: i32.add $push8=, $8, $pop7
245- ; CHECK-NEXT: call return_multi_multi, $pop8
223+ ; CHECK-NEXT: i32.const $push4=, 96
224+ ; CHECK-NEXT: i32.sub $push8=, $pop3, $pop4
225+ ; CHECK-NEXT: local.tee $push7=, $8=, $pop8
226+ ; CHECK-NEXT: global.set __stack_pointer, $pop7
227+ ; CHECK-NEXT: call return_multi_multi, $8
246228; CHECK-NEXT: i32.const $push0=, 48
247229; CHECK-NEXT: i32.add $push1=, $8, $pop0
248230; CHECK-NEXT: i64.load $1=, 0($pop1)
249- ; CHECK-NEXT: i64.load $2=, 8 ($8)
231+ ; CHECK-NEXT: i64.load $2=, 72 ($8)
250232; CHECK-NEXT: i64.load $3=, 64($8)
251- ; CHECK-NEXT: i64.load $4=, 56 ($8)
252- ; CHECK-NEXT: i64.load $5=, 40 ($8)
253- ; CHECK-NEXT: i64.load $6=, 32 ($8)
254- ; CHECK-NEXT: i64.load $7=, 24 ($8)
255- ; CHECK-NEXT: i64.load $push2=, 16 ($8)
256- ; CHECK-NEXT: i64.store 40 ($0), $pop2
233+ ; CHECK-NEXT: i64.load $4=, 40 ($8)
234+ ; CHECK-NEXT: i64.load $5=, 32 ($8)
235+ ; CHECK-NEXT: i64.load $6=, 24 ($8)
236+ ; CHECK-NEXT: i64.load $7=, 16 ($8)
237+ ; CHECK-NEXT: i64.load $push2=, 0 ($8)
238+ ; CHECK-NEXT: i64.store 64 ($0), $pop2
257239; CHECK-NEXT: i64.store 48($0), $7
240+ ; CHECK-NEXT: i64.store 56($0), $6
258241; CHECK-NEXT: i64.store 32($0), $1
259- ; CHECK-NEXT: i64.store 16($0), $6
260- ; CHECK-NEXT: i64.store 24($0), $5
261- ; CHECK-NEXT: i64.store 0($0), $4
262- ; CHECK-NEXT: i64.store 8($0), $3
263- ; CHECK-NEXT: i64.store 56($0), $2
264- ; CHECK-NEXT: i32.const $push5=, 80
242+ ; CHECK-NEXT: i64.store 16($0), $5
243+ ; CHECK-NEXT: i64.store 24($0), $4
244+ ; CHECK-NEXT: i64.store 0($0), $3
245+ ; CHECK-NEXT: i64.store 8($0), $2
246+ ; CHECK-NEXT: i32.const $push5=, 96
265247; CHECK-NEXT: i32.add $push6=, $8, $pop5
266248; CHECK-NEXT: global.set __stack_pointer, $pop6
267249; CHECK-NEXT: # fallthrough-return
0 commit comments