[llvm] 0da19a2 - [PEI][WebAssembly] Switch to backwards frame index elimination

Jay Foad via llvm-commits llvm-commits at lists.llvm.org
Thu Aug 3 02:21:49 PDT 2023


Author: Jay Foad
Date: 2023-08-03T10:21:43+01:00
New Revision: 0da19a2be5648140d6cfab4340866dc2bd58c4a9

URL: https://github.com/llvm/llvm-project/commit/0da19a2be5648140d6cfab4340866dc2bd58c4a9
DIFF: https://github.com/llvm/llvm-project/commit/0da19a2be5648140d6cfab4340866dc2bd58c4a9.diff

LOG: [PEI][WebAssembly] Switch to backwards frame index elimination

Backwards frame index elimination uses backwards register scavenging,
which is preferred because it does not rely on accurate kill flags.

Differential Revision: https://reviews.llvm.org/D156691

Added: 
    

Modified: 
    llvm/lib/Target/WebAssembly/WebAssemblyRegisterInfo.h
    llvm/test/CodeGen/WebAssembly/i128.ll
    llvm/test/CodeGen/WebAssembly/libcalls.ll
    llvm/test/CodeGen/WebAssembly/multi-return.ll
    llvm/test/CodeGen/WebAssembly/umulo-128-legalisation-lowering.ll
    llvm/test/CodeGen/WebAssembly/userstack.ll

Removed: 
    


################################################################################
diff  --git a/llvm/lib/Target/WebAssembly/WebAssemblyRegisterInfo.h b/llvm/lib/Target/WebAssembly/WebAssemblyRegisterInfo.h
index d875e4b93603b1..f2dae5389d53bd 100644
--- a/llvm/lib/Target/WebAssembly/WebAssemblyRegisterInfo.h
+++ b/llvm/lib/Target/WebAssembly/WebAssemblyRegisterInfo.h
@@ -38,6 +38,8 @@ class WebAssemblyRegisterInfo final : public WebAssemblyGenRegisterInfo {
                            unsigned FIOperandNum,
                            RegScavenger *RS = nullptr) const override;
 
+  bool supportsBackwardScavenger() const override { return true; }
+
   // Debug information queries.
   Register getFrameRegister(const MachineFunction &MF) const override;
 

diff  --git a/llvm/test/CodeGen/WebAssembly/i128.ll b/llvm/test/CodeGen/WebAssembly/i128.ll
index 50d4680fd613dd..eae7f5f834dc0f 100644
--- a/llvm/test/CodeGen/WebAssembly/i128.ll
+++ b/llvm/test/CodeGen/WebAssembly/i128.ll
@@ -535,14 +535,14 @@ define i128 @rotl(i128 %x, i128 %y) {
 ; CHECK-NEXT:    local.tee $push22=, 5, $pop23
 ; CHECK-NEXT:    global.set __stack_pointer, $pop22
 ; CHECK-NEXT:    local.get $push24=, 5
-; CHECK-NEXT:    i32.const $push15=, 16
-; CHECK-NEXT:    i32.add $push16=, $pop24, $pop15
+; CHECK-NEXT:    i32.const $push17=, 16
+; CHECK-NEXT:    i32.add $push18=, $pop24, $pop17
 ; CHECK-NEXT:    local.get $push27=, 1
 ; CHECK-NEXT:    local.get $push26=, 2
 ; CHECK-NEXT:    local.get $push25=, 3
 ; CHECK-NEXT:    i32.wrap_i64 $push21=, $pop25
 ; CHECK-NEXT:    local.tee $push20=, 6, $pop21
-; CHECK-NEXT:    call __ashlti3, $pop16, $pop27, $pop26, $pop20
+; CHECK-NEXT:    call __ashlti3, $pop18, $pop27, $pop26, $pop20
 ; CHECK-NEXT:    local.get $push31=, 5
 ; CHECK-NEXT:    local.get $push30=, 1
 ; CHECK-NEXT:    local.get $push29=, 2
@@ -552,10 +552,10 @@ define i128 @rotl(i128 %x, i128 %y) {
 ; CHECK-NEXT:    call __lshrti3, $pop31, $pop30, $pop29, $pop1
 ; CHECK-NEXT:    local.get $push34=, 0
 ; CHECK-NEXT:    local.get $push32=, 5
-; CHECK-NEXT:    i32.const $push17=, 16
-; CHECK-NEXT:    i32.add $push18=, $pop32, $pop17
+; CHECK-NEXT:    i32.const $push15=, 16
+; CHECK-NEXT:    i32.add $push16=, $pop32, $pop15
 ; CHECK-NEXT:    i32.const $push2=, 8
-; CHECK-NEXT:    i32.add $push3=, $pop18, $pop2
+; CHECK-NEXT:    i32.add $push3=, $pop16, $pop2
 ; CHECK-NEXT:    i64.load $push4=, 0($pop3)
 ; CHECK-NEXT:    local.get $push33=, 5
 ; CHECK-NEXT:    i32.const $push19=, 8
@@ -593,8 +593,8 @@ define i128 @masked_rotl(i128 %x, i128 %y) {
 ; CHECK-NEXT:    local.tee $push24=, 5, $pop25
 ; CHECK-NEXT:    global.set __stack_pointer, $pop24
 ; CHECK-NEXT:    local.get $push26=, 5
-; CHECK-NEXT:    i32.const $push17=, 16
-; CHECK-NEXT:    i32.add $push18=, $pop26, $pop17
+; CHECK-NEXT:    i32.const $push19=, 16
+; CHECK-NEXT:    i32.add $push20=, $pop26, $pop19
 ; CHECK-NEXT:    local.get $push29=, 1
 ; CHECK-NEXT:    local.get $push28=, 2
 ; CHECK-NEXT:    local.get $push27=, 3
@@ -602,7 +602,7 @@ define i128 @masked_rotl(i128 %x, i128 %y) {
 ; CHECK-NEXT:    i32.const $push1=, 127
 ; CHECK-NEXT:    i32.and $push23=, $pop0, $pop1
 ; CHECK-NEXT:    local.tee $push22=, 6, $pop23
-; CHECK-NEXT:    call __ashlti3, $pop18, $pop29, $pop28, $pop22
+; CHECK-NEXT:    call __ashlti3, $pop20, $pop29, $pop28, $pop22
 ; CHECK-NEXT:    local.get $push33=, 5
 ; CHECK-NEXT:    local.get $push32=, 1
 ; CHECK-NEXT:    local.get $push31=, 2
@@ -612,10 +612,10 @@ define i128 @masked_rotl(i128 %x, i128 %y) {
 ; CHECK-NEXT:    call __lshrti3, $pop33, $pop32, $pop31, $pop3
 ; CHECK-NEXT:    local.get $push36=, 0
 ; CHECK-NEXT:    local.get $push34=, 5
-; CHECK-NEXT:    i32.const $push19=, 16
-; CHECK-NEXT:    i32.add $push20=, $pop34, $pop19
+; CHECK-NEXT:    i32.const $push17=, 16
+; CHECK-NEXT:    i32.add $push18=, $pop34, $pop17
 ; CHECK-NEXT:    i32.const $push4=, 8
-; CHECK-NEXT:    i32.add $push5=, $pop20, $pop4
+; CHECK-NEXT:    i32.add $push5=, $pop18, $pop4
 ; CHECK-NEXT:    i64.load $push6=, 0($pop5)
 ; CHECK-NEXT:    local.get $push35=, 5
 ; CHECK-NEXT:    i32.const $push21=, 8
@@ -654,14 +654,14 @@ define i128 @rotr(i128 %x, i128 %y) {
 ; CHECK-NEXT:    local.tee $push22=, 5, $pop23
 ; CHECK-NEXT:    global.set __stack_pointer, $pop22
 ; CHECK-NEXT:    local.get $push24=, 5
-; CHECK-NEXT:    i32.const $push15=, 16
-; CHECK-NEXT:    i32.add $push16=, $pop24, $pop15
+; CHECK-NEXT:    i32.const $push17=, 16
+; CHECK-NEXT:    i32.add $push18=, $pop24, $pop17
 ; CHECK-NEXT:    local.get $push27=, 1
 ; CHECK-NEXT:    local.get $push26=, 2
 ; CHECK-NEXT:    local.get $push25=, 3
 ; CHECK-NEXT:    i32.wrap_i64 $push21=, $pop25
 ; CHECK-NEXT:    local.tee $push20=, 6, $pop21
-; CHECK-NEXT:    call __lshrti3, $pop16, $pop27, $pop26, $pop20
+; CHECK-NEXT:    call __lshrti3, $pop18, $pop27, $pop26, $pop20
 ; CHECK-NEXT:    local.get $push31=, 5
 ; CHECK-NEXT:    local.get $push30=, 1
 ; CHECK-NEXT:    local.get $push29=, 2
@@ -671,10 +671,10 @@ define i128 @rotr(i128 %x, i128 %y) {
 ; CHECK-NEXT:    call __ashlti3, $pop31, $pop30, $pop29, $pop1
 ; CHECK-NEXT:    local.get $push34=, 0
 ; CHECK-NEXT:    local.get $push32=, 5
-; CHECK-NEXT:    i32.const $push17=, 16
-; CHECK-NEXT:    i32.add $push18=, $pop32, $pop17
+; CHECK-NEXT:    i32.const $push15=, 16
+; CHECK-NEXT:    i32.add $push16=, $pop32, $pop15
 ; CHECK-NEXT:    i32.const $push2=, 8
-; CHECK-NEXT:    i32.add $push3=, $pop18, $pop2
+; CHECK-NEXT:    i32.add $push3=, $pop16, $pop2
 ; CHECK-NEXT:    i64.load $push4=, 0($pop3)
 ; CHECK-NEXT:    local.get $push33=, 5
 ; CHECK-NEXT:    i32.const $push19=, 8
@@ -712,8 +712,8 @@ define i128 @masked_rotr(i128 %x, i128 %y) {
 ; CHECK-NEXT:    local.tee $push24=, 5, $pop25
 ; CHECK-NEXT:    global.set __stack_pointer, $pop24
 ; CHECK-NEXT:    local.get $push26=, 5
-; CHECK-NEXT:    i32.const $push17=, 16
-; CHECK-NEXT:    i32.add $push18=, $pop26, $pop17
+; CHECK-NEXT:    i32.const $push19=, 16
+; CHECK-NEXT:    i32.add $push20=, $pop26, $pop19
 ; CHECK-NEXT:    local.get $push29=, 1
 ; CHECK-NEXT:    local.get $push28=, 2
 ; CHECK-NEXT:    local.get $push27=, 3
@@ -721,7 +721,7 @@ define i128 @masked_rotr(i128 %x, i128 %y) {
 ; CHECK-NEXT:    i32.const $push1=, 127
 ; CHECK-NEXT:    i32.and $push23=, $pop0, $pop1
 ; CHECK-NEXT:    local.tee $push22=, 6, $pop23
-; CHECK-NEXT:    call __lshrti3, $pop18, $pop29, $pop28, $pop22
+; CHECK-NEXT:    call __lshrti3, $pop20, $pop29, $pop28, $pop22
 ; CHECK-NEXT:    local.get $push33=, 5
 ; CHECK-NEXT:    local.get $push32=, 1
 ; CHECK-NEXT:    local.get $push31=, 2
@@ -731,10 +731,10 @@ define i128 @masked_rotr(i128 %x, i128 %y) {
 ; CHECK-NEXT:    call __ashlti3, $pop33, $pop32, $pop31, $pop3
 ; CHECK-NEXT:    local.get $push36=, 0
 ; CHECK-NEXT:    local.get $push34=, 5
-; CHECK-NEXT:    i32.const $push19=, 16
-; CHECK-NEXT:    i32.add $push20=, $pop34, $pop19
+; CHECK-NEXT:    i32.const $push17=, 16
+; CHECK-NEXT:    i32.add $push18=, $pop34, $pop17
 ; CHECK-NEXT:    i32.const $push4=, 8
-; CHECK-NEXT:    i32.add $push5=, $pop20, $pop4
+; CHECK-NEXT:    i32.add $push5=, $pop18, $pop4
 ; CHECK-NEXT:    i64.load $push6=, 0($pop5)
 ; CHECK-NEXT:    local.get $push35=, 5
 ; CHECK-NEXT:    i32.const $push21=, 8

diff  --git a/llvm/test/CodeGen/WebAssembly/libcalls.ll b/llvm/test/CodeGen/WebAssembly/libcalls.ll
index 4d92ad28247e42..19102ecd182fcb 100644
--- a/llvm/test/CodeGen/WebAssembly/libcalls.ll
+++ b/llvm/test/CodeGen/WebAssembly/libcalls.ll
@@ -36,112 +36,112 @@ define fp128 @fp128libcalls(fp128 %x, fp128 %y, i32 %z) {
 ; CHECK-NEXT:    local.tee $push72=, 6, $pop73
 ; CHECK-NEXT:    global.set __stack_pointer, $pop72
 ; CHECK-NEXT:    local.get $push74=, 6
-; CHECK-NEXT:    i32.const $push32=, 128
-; CHECK-NEXT:    i32.add $push33=, $pop74, $pop32
+; CHECK-NEXT:    i32.const $push62=, 128
+; CHECK-NEXT:    i32.add $push63=, $pop74, $pop62
 ; CHECK-NEXT:    local.get $push78=, 1
 ; CHECK-NEXT:    local.get $push77=, 2
 ; CHECK-NEXT:    local.get $push76=, 3
 ; CHECK-NEXT:    local.get $push75=, 4
-; CHECK-NEXT:    call __addtf3, $pop33, $pop78, $pop77, $pop76, $pop75
+; CHECK-NEXT:    call __addtf3, $pop63, $pop78, $pop77, $pop76, $pop75
 ; CHECK-NEXT:    local.get $push79=, 6
-; CHECK-NEXT:    i32.const $push36=, 112
-; CHECK-NEXT:    i32.add $push37=, $pop79, $pop36
+; CHECK-NEXT:    i32.const $push58=, 112
+; CHECK-NEXT:    i32.add $push59=, $pop79, $pop58
 ; CHECK-NEXT:    local.get $push80=, 6
 ; CHECK-NEXT:    i64.load $push3=, 128($pop80)
 ; CHECK-NEXT:    local.get $push81=, 6
-; CHECK-NEXT:    i32.const $push34=, 128
-; CHECK-NEXT:    i32.add $push35=, $pop81, $pop34
+; CHECK-NEXT:    i32.const $push60=, 128
+; CHECK-NEXT:    i32.add $push61=, $pop81, $pop60
 ; CHECK-NEXT:    i32.const $push0=, 8
-; CHECK-NEXT:    i32.add $push1=, $pop35, $pop0
+; CHECK-NEXT:    i32.add $push1=, $pop61, $pop0
 ; CHECK-NEXT:    i64.load $push2=, 0($pop1)
 ; CHECK-NEXT:    local.get $push83=, 3
 ; CHECK-NEXT:    local.get $push82=, 4
-; CHECK-NEXT:    call __multf3, $pop37, $pop3, $pop2, $pop83, $pop82
+; CHECK-NEXT:    call __multf3, $pop59, $pop3, $pop2, $pop83, $pop82
 ; CHECK-NEXT:    local.get $push84=, 6
-; CHECK-NEXT:    i32.const $push40=, 96
-; CHECK-NEXT:    i32.add $push41=, $pop84, $pop40
+; CHECK-NEXT:    i32.const $push54=, 96
+; CHECK-NEXT:    i32.add $push55=, $pop84, $pop54
 ; CHECK-NEXT:    local.get $push85=, 6
 ; CHECK-NEXT:    i64.load $push6=, 112($pop85)
 ; CHECK-NEXT:    local.get $push86=, 6
-; CHECK-NEXT:    i32.const $push38=, 112
-; CHECK-NEXT:    i32.add $push39=, $pop86, $pop38
+; CHECK-NEXT:    i32.const $push56=, 112
+; CHECK-NEXT:    i32.add $push57=, $pop86, $pop56
 ; CHECK-NEXT:    i32.const $push71=, 8
-; CHECK-NEXT:    i32.add $push4=, $pop39, $pop71
+; CHECK-NEXT:    i32.add $push4=, $pop57, $pop71
 ; CHECK-NEXT:    i64.load $push5=, 0($pop4)
 ; CHECK-NEXT:    local.get $push88=, 3
 ; CHECK-NEXT:    local.get $push87=, 4
-; CHECK-NEXT:    call __divtf3, $pop41, $pop6, $pop5, $pop88, $pop87
+; CHECK-NEXT:    call __divtf3, $pop55, $pop6, $pop5, $pop88, $pop87
 ; CHECK-NEXT:    local.get $push89=, 6
-; CHECK-NEXT:    i32.const $push44=, 80
-; CHECK-NEXT:    i32.add $push45=, $pop89, $pop44
+; CHECK-NEXT:    i32.const $push50=, 80
+; CHECK-NEXT:    i32.add $push51=, $pop89, $pop50
 ; CHECK-NEXT:    local.get $push90=, 6
 ; CHECK-NEXT:    i64.load $push9=, 96($pop90)
 ; CHECK-NEXT:    local.get $push91=, 6
-; CHECK-NEXT:    i32.const $push42=, 96
-; CHECK-NEXT:    i32.add $push43=, $pop91, $pop42
+; CHECK-NEXT:    i32.const $push52=, 96
+; CHECK-NEXT:    i32.add $push53=, $pop91, $pop52
 ; CHECK-NEXT:    i32.const $push70=, 8
-; CHECK-NEXT:    i32.add $push7=, $pop43, $pop70
+; CHECK-NEXT:    i32.add $push7=, $pop53, $pop70
 ; CHECK-NEXT:    i64.load $push8=, 0($pop7)
-; CHECK-NEXT:    call sqrtl, $pop45, $pop9, $pop8
+; CHECK-NEXT:    call sqrtl, $pop51, $pop9, $pop8
 ; CHECK-NEXT:    local.get $push92=, 6
-; CHECK-NEXT:    i32.const $push48=, 64
-; CHECK-NEXT:    i32.add $push49=, $pop92, $pop48
+; CHECK-NEXT:    i32.const $push46=, 64
+; CHECK-NEXT:    i32.add $push47=, $pop92, $pop46
 ; CHECK-NEXT:    local.get $push93=, 6
 ; CHECK-NEXT:    i64.load $push12=, 80($pop93)
 ; CHECK-NEXT:    local.get $push94=, 6
-; CHECK-NEXT:    i32.const $push46=, 80
-; CHECK-NEXT:    i32.add $push47=, $pop94, $pop46
+; CHECK-NEXT:    i32.const $push48=, 80
+; CHECK-NEXT:    i32.add $push49=, $pop94, $pop48
 ; CHECK-NEXT:    i32.const $push69=, 8
-; CHECK-NEXT:    i32.add $push10=, $pop47, $pop69
+; CHECK-NEXT:    i32.add $push10=, $pop49, $pop69
 ; CHECK-NEXT:    i64.load $push11=, 0($pop10)
-; CHECK-NEXT:    call floorl, $pop49, $pop12, $pop11
+; CHECK-NEXT:    call floorl, $pop47, $pop12, $pop11
 ; CHECK-NEXT:    local.get $push95=, 6
-; CHECK-NEXT:    i32.const $push52=, 48
-; CHECK-NEXT:    i32.add $push53=, $pop95, $pop52
+; CHECK-NEXT:    i32.const $push42=, 48
+; CHECK-NEXT:    i32.add $push43=, $pop95, $pop42
 ; CHECK-NEXT:    local.get $push96=, 6
 ; CHECK-NEXT:    i64.load $push15=, 64($pop96)
 ; CHECK-NEXT:    local.get $push97=, 6
-; CHECK-NEXT:    i32.const $push50=, 64
-; CHECK-NEXT:    i32.add $push51=, $pop97, $pop50
+; CHECK-NEXT:    i32.const $push44=, 64
+; CHECK-NEXT:    i32.add $push45=, $pop97, $pop44
 ; CHECK-NEXT:    i32.const $push68=, 8
-; CHECK-NEXT:    i32.add $push13=, $pop51, $pop68
+; CHECK-NEXT:    i32.add $push13=, $pop45, $pop68
 ; CHECK-NEXT:    i64.load $push14=, 0($pop13)
 ; CHECK-NEXT:    local.get $push99=, 3
 ; CHECK-NEXT:    local.get $push98=, 4
-; CHECK-NEXT:    call powl, $pop53, $pop15, $pop14, $pop99, $pop98
+; CHECK-NEXT:    call powl, $pop43, $pop15, $pop14, $pop99, $pop98
 ; CHECK-NEXT:    local.get $push100=, 6
-; CHECK-NEXT:    i32.const $push56=, 32
-; CHECK-NEXT:    i32.add $push57=, $pop100, $pop56
+; CHECK-NEXT:    i32.const $push38=, 32
+; CHECK-NEXT:    i32.add $push39=, $pop100, $pop38
 ; CHECK-NEXT:    local.get $push101=, 6
 ; CHECK-NEXT:    i64.load $push18=, 48($pop101)
 ; CHECK-NEXT:    local.get $push102=, 6
-; CHECK-NEXT:    i32.const $push54=, 48
-; CHECK-NEXT:    i32.add $push55=, $pop102, $pop54
+; CHECK-NEXT:    i32.const $push40=, 48
+; CHECK-NEXT:    i32.add $push41=, $pop102, $pop40
 ; CHECK-NEXT:    i32.const $push67=, 8
-; CHECK-NEXT:    i32.add $push16=, $pop55, $pop67
+; CHECK-NEXT:    i32.add $push16=, $pop41, $pop67
 ; CHECK-NEXT:    i64.load $push17=, 0($pop16)
 ; CHECK-NEXT:    local.get $push103=, 5
-; CHECK-NEXT:    call __powitf2, $pop57, $pop18, $pop17, $pop103
+; CHECK-NEXT:    call __powitf2, $pop39, $pop18, $pop17, $pop103
 ; CHECK-NEXT:    local.get $push104=, 6
-; CHECK-NEXT:    i32.const $push60=, 16
-; CHECK-NEXT:    i32.add $push61=, $pop104, $pop60
+; CHECK-NEXT:    i32.const $push34=, 16
+; CHECK-NEXT:    i32.add $push35=, $pop104, $pop34
 ; CHECK-NEXT:    local.get $push105=, 6
 ; CHECK-NEXT:    i64.load $push21=, 32($pop105)
 ; CHECK-NEXT:    local.get $push106=, 6
-; CHECK-NEXT:    i32.const $push58=, 32
-; CHECK-NEXT:    i32.add $push59=, $pop106, $pop58
+; CHECK-NEXT:    i32.const $push36=, 32
+; CHECK-NEXT:    i32.add $push37=, $pop106, $pop36
 ; CHECK-NEXT:    i32.const $push66=, 8
-; CHECK-NEXT:    i32.add $push19=, $pop59, $pop66
+; CHECK-NEXT:    i32.add $push19=, $pop37, $pop66
 ; CHECK-NEXT:    i64.load $push20=, 0($pop19)
-; CHECK-NEXT:    call truncl, $pop61, $pop21, $pop20
+; CHECK-NEXT:    call truncl, $pop35, $pop21, $pop20
 ; CHECK-NEXT:    local.get $push109=, 6
 ; CHECK-NEXT:    local.get $push107=, 6
 ; CHECK-NEXT:    i64.load $push24=, 16($pop107)
 ; CHECK-NEXT:    local.get $push108=, 6
-; CHECK-NEXT:    i32.const $push62=, 16
-; CHECK-NEXT:    i32.add $push63=, $pop108, $pop62
+; CHECK-NEXT:    i32.const $push32=, 16
+; CHECK-NEXT:    i32.add $push33=, $pop108, $pop32
 ; CHECK-NEXT:    i32.const $push65=, 8
-; CHECK-NEXT:    i32.add $push22=, $pop63, $pop65
+; CHECK-NEXT:    i32.add $push22=, $pop33, $pop65
 ; CHECK-NEXT:    i64.load $push23=, 0($pop22)
 ; CHECK-NEXT:    call nearbyintl, $pop109, $pop24, $pop23
 ; CHECK-NEXT:    local.get $push111=, 0
@@ -184,8 +184,8 @@ define i128 @i128libcalls(i128 %x, i128 %y) {
 ; CHECK-NEXT:    local.tee $push22=, 5, $pop23
 ; CHECK-NEXT:    global.set __stack_pointer, $pop22
 ; CHECK-NEXT:    local.get $push24=, 5
-; CHECK-NEXT:    i32.const $push15=, 16
-; CHECK-NEXT:    i32.add $push16=, $pop24, $pop15
+; CHECK-NEXT:    i32.const $push17=, 16
+; CHECK-NEXT:    i32.add $push18=, $pop24, $pop17
 ; CHECK-NEXT:    local.get $push26=, 1
 ; CHECK-NEXT:    local.get $push25=, 3
 ; CHECK-NEXT:    i64.add $push21=, $pop26, $pop25
@@ -200,15 +200,15 @@ define i128 @i128libcalls(i128 %x, i128 %y) {
 ; CHECK-NEXT:    i64.add $push3=, $pop0, $pop2
 ; CHECK-NEXT:    local.get $push32=, 3
 ; CHECK-NEXT:    local.get $push31=, 4
-; CHECK-NEXT:    call __multi3, $pop16, $pop20, $pop3, $pop32, $pop31
+; CHECK-NEXT:    call __multi3, $pop18, $pop20, $pop3, $pop32, $pop31
 ; CHECK-NEXT:    local.get $push37=, 5
 ; CHECK-NEXT:    local.get $push33=, 5
 ; CHECK-NEXT:    i64.load $push7=, 16($pop33)
 ; CHECK-NEXT:    local.get $push34=, 5
-; CHECK-NEXT:    i32.const $push17=, 16
-; CHECK-NEXT:    i32.add $push18=, $pop34, $pop17
+; CHECK-NEXT:    i32.const $push15=, 16
+; CHECK-NEXT:    i32.add $push16=, $pop34, $pop15
 ; CHECK-NEXT:    i32.const $push4=, 8
-; CHECK-NEXT:    i32.add $push5=, $pop18, $pop4
+; CHECK-NEXT:    i32.add $push5=, $pop16, $pop4
 ; CHECK-NEXT:    i64.load $push6=, 0($pop5)
 ; CHECK-NEXT:    local.get $push36=, 3
 ; CHECK-NEXT:    local.get $push35=, 4

diff  --git a/llvm/test/CodeGen/WebAssembly/multi-return.ll b/llvm/test/CodeGen/WebAssembly/multi-return.ll
index fa07465c5ff403..3429cd512a46e7 100644
--- a/llvm/test/CodeGen/WebAssembly/multi-return.ll
+++ b/llvm/test/CodeGen/WebAssembly/multi-return.ll
@@ -78,10 +78,10 @@ define i64 @test4() {
 define { i64, i128 } @test5() {
 ; CHECK-LABEL: test5:
 ; CHECK: call    	return_multi_multi
-; CHECK: i32.const	$push10=, 8
-; CHECK: i32.add 	$push11=, $[[SP:[0-9]+]], $pop10
+; CHECK: i32.const	$push8=, 8
+; CHECK: i32.add 	$push9=, $[[SP:[0-9]+]], $pop8
 ; CHECK: i32.const	$push0=, 16
-; CHECK: i32.add 	$push1=, $pop11, $pop0
+; CHECK: i32.add 	$push1=, $pop9, $pop0
 ; CHECK: i64.load	$[[L1:[0-9]+]]=, 0($pop1)
 ; CHECK: i64.load	$[[L2:[0-9]+]]=, 8($[[SP]])
 ; CHECK: i64.load	$push2=, 16($[[SP]])
@@ -153,10 +153,10 @@ define { i64, i192 } @test7() {
 define { i128, i192, i128, i64 } @test8() {
 ; CHECK-LABEL: test8:
 ; CHECK: call    	return_multi_multi
-; CHECK: i32.const	$push20=, 8
-; CHECK: i32.add 	$push21=, $[[SP:[0-9]+]], $pop20
+; CHECK: i32.const	$push18=, 8
+; CHECK: i32.add 	$push19=, $[[SP:[0-9]+]], $pop18
 ; CHECK: i32.const	$push0=, 32
-; CHECK: i32.add 	$push1=, $pop21, $pop0
+; CHECK: i32.add 	$push1=, $pop19, $pop0
 ; CHECK: i64.load	$[[L1:[0-9]+]]=, 0($pop1)
 ; CHECK: i32.const	$push2=, 48
 ; CHECK: i32.add 	$push3=, $[[SP]], $pop2

diff  --git a/llvm/test/CodeGen/WebAssembly/umulo-128-legalisation-lowering.ll b/llvm/test/CodeGen/WebAssembly/umulo-128-legalisation-lowering.ll
index 093912abe75502..90e1a176e38f9c 100644
--- a/llvm/test/CodeGen/WebAssembly/umulo-128-legalisation-lowering.ll
+++ b/llvm/test/CodeGen/WebAssembly/umulo-128-legalisation-lowering.ll
@@ -9,21 +9,21 @@ define { i128, i8 } @muloti_test(i128 %l, i128 %r) unnamed_addr #0 {
 ; WASM32: local.tee       $push39=, 5, $pop40
 ; WASM32: global.set      __stack_pointer, $pop39
 ; WASM32: local.get       $push41=, 5
-; WASM32: i32.const       $push22=, 32
-; WASM32: i32.add         $push23=, $pop41, $pop22
+; WASM32: i32.const       $push24=, 32
+; WASM32: i32.add         $push25=, $pop41, $pop24
 ; WASM32: local.get       $push43=, 1
 ; WASM32: i64.const       $push0=, 0
 ; WASM32: local.get       $push42=, 3
 ; WASM32: i64.const       $push38=, 0
-; WASM32: call            __multi3, $pop23, $pop43, $pop0, $pop42, $pop38
+; WASM32: call            __multi3, $pop25, $pop43, $pop0, $pop42, $pop38
 ; WASM32: local.get       $push44=, 5
-; WASM32: i32.const       $push24=, 16
-; WASM32: i32.add         $push25=, $pop44, $pop24
+; WASM32: i32.const       $push22=, 16
+; WASM32: i32.add         $push23=, $pop44, $pop22
 ; WASM32: local.get       $push46=, 4
 ; WASM32: i64.const       $push37=, 0
 ; WASM32: local.get       $push45=, 1
 ; WASM32: i64.const       $push36=, 0
-; WASM32: call            __multi3, $pop25, $pop46, $pop37, $pop45, $pop36
+; WASM32: call            __multi3, $pop23, $pop46, $pop37, $pop45, $pop36
 ; WASM32: local.get       $push49=, 5
 ; WASM32: local.get       $push48=, 2
 ; WASM32: i64.const       $push35=, 0

diff  --git a/llvm/test/CodeGen/WebAssembly/userstack.ll b/llvm/test/CodeGen/WebAssembly/userstack.ll
index 98218db866e380..b92946d1a6af7f 100644
--- a/llvm/test/CodeGen/WebAssembly/userstack.ll
+++ b/llvm/test/CodeGen/WebAssembly/userstack.ll
@@ -148,16 +148,16 @@ define void @non_mem_use(ptr %addr) {
 ; CHECK-32-NEXT:    local.tee $push8=, 1, $pop9
 ; CHECK-32-NEXT:    global.set __stack_pointer, $pop8
 ; CHECK-32-NEXT:    local.get $push10=, 1
-; CHECK-32-NEXT:    i32.const $push4=, 8
-; CHECK-32-NEXT:    i32.add $push5=, $pop10, $pop4
-; CHECK-32-NEXT:    call ext_func, $pop5
+; CHECK-32-NEXT:    i32.const $push6=, 8
+; CHECK-32-NEXT:    i32.add $push7=, $pop10, $pop6
+; CHECK-32-NEXT:    call ext_func, $pop7
 ; CHECK-32-NEXT:    local.get $push11=, 1
 ; CHECK-32-NEXT:    call ext_func, $pop11
 ; CHECK-32-NEXT:    local.get $push13=, 0
 ; CHECK-32-NEXT:    local.get $push12=, 1
-; CHECK-32-NEXT:    i32.const $push6=, 16
-; CHECK-32-NEXT:    i32.add $push7=, $pop12, $pop6
-; CHECK-32-NEXT:    i32.store 0($pop13), $pop7
+; CHECK-32-NEXT:    i32.const $push4=, 16
+; CHECK-32-NEXT:    i32.add $push5=, $pop12, $pop4
+; CHECK-32-NEXT:    i32.store 0($pop13), $pop5
 ; CHECK-32-NEXT:    local.get $push14=, 1
 ; CHECK-32-NEXT:    i32.const $push2=, 48
 ; CHECK-32-NEXT:    i32.add $push3=, $pop14, $pop2
@@ -174,16 +174,16 @@ define void @non_mem_use(ptr %addr) {
 ; CHECK-64-NEXT:    local.tee $push8=, 1, $pop9
 ; CHECK-64-NEXT:    global.set __stack_pointer, $pop8
 ; CHECK-64-NEXT:    local.get $push10=, 1
-; CHECK-64-NEXT:    i64.const $push4=, 8
-; CHECK-64-NEXT:    i64.add $push5=, $pop10, $pop4
-; CHECK-64-NEXT:    call ext_func, $pop5
+; CHECK-64-NEXT:    i64.const $push6=, 8
+; CHECK-64-NEXT:    i64.add $push7=, $pop10, $pop6
+; CHECK-64-NEXT:    call ext_func, $pop7
 ; CHECK-64-NEXT:    local.get $push11=, 1
 ; CHECK-64-NEXT:    call ext_func, $pop11
 ; CHECK-64-NEXT:    local.get $push13=, 0
 ; CHECK-64-NEXT:    local.get $push12=, 1
-; CHECK-64-NEXT:    i64.const $push6=, 16
-; CHECK-64-NEXT:    i64.add $push7=, $pop12, $pop6
-; CHECK-64-NEXT:    i64.store 0($pop13), $pop7
+; CHECK-64-NEXT:    i64.const $push4=, 16
+; CHECK-64-NEXT:    i64.add $push5=, $pop12, $pop4
+; CHECK-64-NEXT:    i64.store 0($pop13), $pop5
 ; CHECK-64-NEXT:    local.get $push14=, 1
 ; CHECK-64-NEXT:    i64.const $push2=, 48
 ; CHECK-64-NEXT:    i64.add $push3=, $pop14, $pop2


        


More information about the llvm-commits mailing list