summaryrefslogtreecommitdiffstats
path: root/llvm/test/CodeGen/WebAssembly/multi-return.ll
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/test/CodeGen/WebAssembly/multi-return.ll')
-rw-r--r--llvm/test/CodeGen/WebAssembly/multi-return.ll72
1 files changed, 31 insertions, 41 deletions
diff --git a/llvm/test/CodeGen/WebAssembly/multi-return.ll b/llvm/test/CodeGen/WebAssembly/multi-return.ll
index 3429cd512a46..293a1b35c39c 100644
--- a/llvm/test/CodeGen/WebAssembly/multi-return.ll
+++ b/llvm/test/CodeGen/WebAssembly/multi-return.ll
@@ -78,18 +78,16 @@ define i64 @test4() {
define { i64, i128 } @test5() {
; CHECK-LABEL: test5:
; CHECK: call return_multi_multi
-; CHECK: i32.const $push8=, 8
-; CHECK: i32.add $push9=, $[[SP:[0-9]+]], $pop8
-; CHECK: i32.const $push0=, 16
-; CHECK: i32.add $push1=, $pop9, $pop0
+; CHECK: i32.const $push0=, 24
+; CHECK: i32.add $push1=, $[[SP:[0-9]+]], $pop0
; CHECK: i64.load $[[L1:[0-9]+]]=, 0($pop1)
; CHECK: i64.load $[[L2:[0-9]+]]=, 8($[[SP]])
; CHECK: i64.load $push2=, 16($[[SP]])
; CHECK: i64.store 8($0), $pop2
+; CHECK: i64.store 16($0), $[[L1]]
; CHECK: i64.store 0($0), $[[L2]]
-; CHECK: i32.const $push12=, 16
-; CHECK: i32.add $push3=, $0, $pop12
-; CHECK: i64.store 0($pop3), $[[L1]]
+; CHECK: i32.const $push5=, 80
+; CHECK: i32.add $push6=, $3, $pop5
%t0 = call { i64, i128, i192, i128, i64 } @return_multi_multi()
%r0 = extractvalue { i64, i128, i192, i128, i64 } %t0, 0
%r1 = extractvalue { i64, i128, i192, i128, i64 } %t0, 1
@@ -101,20 +99,20 @@ define { i64, i128 } @test5() {
define { i128, i128 } @test6() {
; CHECK-LABEL: test6:
; CHECK: call return_multi_multi
-; CHECK: i32.const $push0=, 64
+; CHECK: i32.const $push0=, 24
; CHECK: i32.add $push1=, $[[SP:[0-9]+]], $pop0
; CHECK: i64.load $[[L1:[0-9]+]]=, 0($pop1)
-; CHECK: i32.const $push2=, 24
+; CHECK: i32.const $push2=, 64
; CHECK: i32.add $push3=, $[[SP]], $pop2
; CHECK: i64.load $[[L2:[0-9]+]]=, 0($pop3)
; CHECK: i64.load $[[L3:[0-9]+]]=, 16($[[SP]])
; CHECK: i64.load $push4=, 56($[[SP]])
; CHECK: i64.store 16($0), $pop4
+; CHECK: i64.store 24($0), $[[L2]]
; CHECK: i64.store 0($0), $[[L3]]
-; CHECK: i64.store 8($0), $[[L2]]
-; CHECK: i32.const $push5=, 24
-; CHECK: i32.add $push6=, $0, $pop5
-; CHECK: i64.store 0($pop6), $[[L1]]
+; CHECK: i64.store 8($0), $[[L1]]
+; CHECK: i32.const $push7=, 80
+; CHECK: i32.add $push8=, $4, $pop7
%t0 = call { i64, i128, i192, i128, i64 } @return_multi_multi()
%r1 = extractvalue { i64, i128, i192, i128, i64 } %t0, 1
%r3 = extractvalue { i64, i128, i192, i128, i64 } %t0, 3
@@ -129,19 +127,17 @@ define { i64, i192 } @test7() {
; CHECK: i32.const $push0=, 40
; CHECK: i32.add $push1=, $[[SP:[0-9]+]], $pop0
; CHECK: i64.load $[[L1:[0-9]+]]=, 0($pop1)
+; CHECK: i64.load $[[L2:[0-9]+]]=, 8($[[SP]])
+; CHECK: i64.load $[[L3:[0-9]+]]=, 32($[[SP]])
; CHECK: i32.const $push2=, 48
; CHECK: i32.add $push3=, $[[SP]], $pop2
-; CHECK: i64.load $[[L2:[0-9]+]]=, 0($pop3)
-; CHECK: i64.load $[[L3:[0-9]+]]=, 8($[[SP]])
-; CHECK: i64.load $push4=, 32($[[SP]])
-; CHECK: i64.store 8($0), $pop4
-; CHECK: i64.store 0($0), $[[L3]]
-; CHECK: i32.const $push5=, 24
-; CHECK: i32.add $push6=, $0, $pop5
-; CHECK: i64.store 0($pop6), $[[L2]]
-; CHECK: i32.const $push7=, 16
-; CHECK: i32.add $push8=, $0, $pop7
-; CHECK: i64.store 0($pop8), $[[L1]]
+; CHECK: i64.load $push4=, 0($pop3)
+; CHECK: i64.store 24($0), $pop4
+; CHECK: i64.store 8($0), $[[L3]]
+; CHECK: i64.store 16($0), $[[L1]]
+; CHECK: i64.store 0($0), $[[L2]]
+; CHECK: i32.const $push7=, 80
+; CHECK: i32.add $push8=, $4, $pop7
%t0 = call { i64, i128, i192, i128, i64 } @return_multi_multi()
%r0 = extractvalue { i64, i128, i192, i128, i64 } %t0, 0
%r2 = extractvalue { i64, i128, i192, i128, i64 } %t0, 2
@@ -153,18 +149,16 @@ define { i64, i192 } @test7() {
define { i128, i192, i128, i64 } @test8() {
; CHECK-LABEL: test8:
; CHECK: call return_multi_multi
-; CHECK: i32.const $push18=, 8
-; CHECK: i32.add $push19=, $[[SP:[0-9]+]], $pop18
-; CHECK: i32.const $push0=, 32
-; CHECK: i32.add $push1=, $pop19, $pop0
+; CHECK: i32.const $push0=, 64
+; CHECK: i32.add $push1=, $[[SP:[0-9]+]], $pop0
; CHECK: i64.load $[[L1:[0-9]+]]=, 0($pop1)
-; CHECK: i32.const $push2=, 48
+; CHECK: i32.const $push2=, 40
; CHECK: i32.add $push3=, $[[SP]], $pop2
; CHECK: i64.load $[[L2:[0-9]+]]=, 0($pop3)
-; CHECK: i32.const $push4=, 24
+; CHECK: i32.const $push4=, 48
; CHECK: i32.add $push5=, $[[SP]], $pop4
; CHECK: i64.load $[[L3:[0-9]+]]=, 0($pop5)
-; CHECK: i32.const $push6=, 64
+; CHECK: i32.const $push6=, 24
; CHECK: i32.add $push7=, $[[SP]], $pop6
; CHECK: i64.load $[[L4:[0-9]+]]=, 0($pop7)
; CHECK: i64.load $[[L5:[0-9]+]]=, 8($[[SP]])
@@ -172,19 +166,15 @@ define { i128, i192, i128, i64 } @test8() {
; CHECK: i64.load $[[L7:[0-9]+]]=, 32($[[SP]])
; CHECK: i64.load $push8=, 16($[[SP]])
; CHECK: i64.store 40($0), $pop8
+; CHECK: i64.store 48($0), $[[L4]]
+; CHECK: i64.store 32($0), $[[L3]]
; CHECK: i64.store 16($0), $[[L7]]
+; CHECK: i64.store 24($0), $[[L2]]
; CHECK: i64.store 0($0), $[[L6]]
-; CHECK: i64.store 8($0), $[[L4]]
+; CHECK: i64.store 8($0), $[[L1]]
; CHECK: i64.store 56($0), $[[L5]]
-; CHECK: i32.const $push9=, 48
-; CHECK: i32.add $push10=, $0, $pop9
-; CHECK: i64.store 0($pop10), $[[L3]]
-; CHECK: i32.const $push22=, 32
-; CHECK: i32.add $push11=, $0, $pop22
-; CHECK: i64.store 0($pop11), $[[L2]]
-; CHECK: i32.const $push12=, 24
-; CHECK: i32.add $push13=, $0, $pop12
-; CHECK: i64.store 0($pop13), $[[L1]]
+; CHECK: i32.const $push11=, 80
+; CHECK: i32.add $push12=, $8, $pop11
%t0 = call { i64, i128, i192, i128, i64 } @return_multi_multi()
%r0 = extractvalue { i64, i128, i192, i128, i64 } %t0, 0
%r1 = extractvalue { i64, i128, i192, i128, i64 } %t0, 1