From 06b495826044483ca9cf98dcb2fccd5e41b17eb4 Mon Sep 17 00:00:00 2001 From: Dan Gohman Date: Mon, 8 Feb 2016 21:50:13 +0000 Subject: [PATCH] [WebAssembly] Update the br_if instructions' operand orders to match the spec. llvm-svn: 260152 --- .../Target/WebAssembly/WebAssemblyInstrControl.td | 12 +- .../Target/WebAssembly/WebAssemblyInstrInfo.cpp | 18 +- .../WebAssembly/WebAssemblyLowerBrUnless.cpp | 6 +- llvm/test/CodeGen/WebAssembly/cfg-stackify.ll | 196 ++++++++++----------- llvm/test/CodeGen/WebAssembly/reg-stackify.ll | 6 +- 5 files changed, 119 insertions(+), 119 deletions(-) diff --git a/llvm/lib/Target/WebAssembly/WebAssemblyInstrControl.td b/llvm/lib/Target/WebAssembly/WebAssemblyInstrControl.td index fda9595..604e48c 100644 --- a/llvm/lib/Target/WebAssembly/WebAssemblyInstrControl.td +++ b/llvm/lib/Target/WebAssembly/WebAssemblyInstrControl.td @@ -16,12 +16,12 @@ let Defs = [ARGUMENTS] in { let isBranch = 1, isTerminator = 1, hasCtrlDep = 1 in { // The condition operand is a boolean value which WebAssembly represents as i32. -def BR_IF : I<(outs), (ins I32:$cond, bb_op:$dst), +def BR_IF : I<(outs), (ins bb_op:$dst, I32:$cond), [(brcond I32:$cond, bb:$dst)], - "br_if \t$cond, $dst">; + "br_if \t$dst, $cond">; let isCodeGenOnly = 1 in -def BR_UNLESS : I<(outs), (ins I32:$cond, bb_op:$dst), [], - "br_unless\t$cond, $dst">; +def BR_UNLESS : I<(outs), (ins bb_op:$dst, I32:$cond), [], + "br_unless\t$dst, $cond">; let isBarrier = 1 in { def BR : I<(outs), (ins bb_op:$dst), [(br bb:$dst)], @@ -32,9 +32,9 @@ def BR : I<(outs), (ins bb_op:$dst), } // Defs = [ARGUMENTS] def : Pat<(brcond (i32 (setne I32:$cond, 0)), bb:$dst), - (BR_IF I32:$cond, bb_op:$dst)>; + (BR_IF bb_op:$dst, I32:$cond)>; def : Pat<(brcond (i32 (seteq I32:$cond, 0)), bb:$dst), - (BR_UNLESS I32:$cond, bb_op:$dst)>; + (BR_UNLESS bb_op:$dst, I32:$cond)>; let Defs = [ARGUMENTS] in { diff --git a/llvm/lib/Target/WebAssembly/WebAssemblyInstrInfo.cpp b/llvm/lib/Target/WebAssembly/WebAssemblyInstrInfo.cpp index a1181c8..ea8ffc9 100644 --- a/llvm/lib/Target/WebAssembly/WebAssemblyInstrInfo.cpp +++ b/llvm/lib/Target/WebAssembly/WebAssemblyInstrInfo.cpp @@ -107,22 +107,22 @@ bool WebAssemblyInstrInfo::AnalyzeBranch(MachineBasicBlock &MBB, if (HaveCond) return true; // If we're running after CFGStackify, we can't optimize further. - if (!MI.getOperand(1).isMBB()) + if (!MI.getOperand(0).isMBB()) return true; Cond.push_back(MachineOperand::CreateImm(true)); - Cond.push_back(MI.getOperand(0)); - TBB = MI.getOperand(1).getMBB(); + Cond.push_back(MI.getOperand(1)); + TBB = MI.getOperand(0).getMBB(); HaveCond = true; break; case WebAssembly::BR_UNLESS: if (HaveCond) return true; // If we're running after CFGStackify, we can't optimize further. - if (!MI.getOperand(1).isMBB()) + if (!MI.getOperand(0).isMBB()) return true; Cond.push_back(MachineOperand::CreateImm(false)); - Cond.push_back(MI.getOperand(0)); - TBB = MI.getOperand(1).getMBB(); + Cond.push_back(MI.getOperand(1)); + TBB = MI.getOperand(0).getMBB(); HaveCond = true; break; case WebAssembly::BR: @@ -177,11 +177,11 @@ unsigned WebAssemblyInstrInfo::InsertBranch(MachineBasicBlock &MBB, assert(Cond.size() == 2 && "Expected a flag and a successor block"); if (Cond[0].getImm()) { - BuildMI(&MBB, DL, get(WebAssembly::BR_IF)).addOperand(Cond[1]).addMBB(TBB); + BuildMI(&MBB, DL, get(WebAssembly::BR_IF)).addMBB(TBB).addOperand(Cond[1]); } else { BuildMI(&MBB, DL, get(WebAssembly::BR_UNLESS)) - .addOperand(Cond[1]) - .addMBB(TBB); + .addMBB(TBB) + .addOperand(Cond[1]); } if (!FBB) return 1; diff --git a/llvm/lib/Target/WebAssembly/WebAssemblyLowerBrUnless.cpp b/llvm/lib/Target/WebAssembly/WebAssemblyLowerBrUnless.cpp index 23a3b4d..201c5ab 100644 --- a/llvm/lib/Target/WebAssembly/WebAssemblyLowerBrUnless.cpp +++ b/llvm/lib/Target/WebAssembly/WebAssemblyLowerBrUnless.cpp @@ -66,7 +66,7 @@ bool WebAssemblyLowerBrUnless::runOnMachineFunction(MachineFunction &MF) { if (MI->getOpcode() != WebAssembly::BR_UNLESS) continue; - unsigned Cond = MI->getOperand(0).getReg(); + unsigned Cond = MI->getOperand(1).getReg(); bool Inverted = false; // Attempt to invert the condition in place. @@ -124,8 +124,8 @@ bool WebAssemblyLowerBrUnless::runOnMachineFunction(MachineFunction &MF) { // delete the br_unless. assert(Inverted); BuildMI(MBB, MI, MI->getDebugLoc(), TII.get(WebAssembly::BR_IF)) - .addReg(Cond) - .addOperand(MI->getOperand(1)); + .addOperand(MI->getOperand(0)) + .addReg(Cond); MBB.erase(MI); } } diff --git a/llvm/test/CodeGen/WebAssembly/cfg-stackify.ll b/llvm/test/CodeGen/WebAssembly/cfg-stackify.ll index b6fccbf..31f5ba0 100644 --- a/llvm/test/CodeGen/WebAssembly/cfg-stackify.ll +++ b/llvm/test/CodeGen/WebAssembly/cfg-stackify.ll @@ -95,17 +95,17 @@ back: ; CHECK-LABEL: test2: ; CHECK-NOT: local ; CHECK: block{{$}} -; CHECK: br_if {{[^,]+}}, 0{{$}} +; CHECK: br_if 0, {{[^,]+}}{{$}} ; CHECK: .LBB2_1: -; CHECK: br_if ${{[0-9]+}}, 0{{$}} +; CHECK: br_if 0, ${{[0-9]+}}{{$}} ; CHECK: .LBB2_2: ; CHECK: return{{$}} ; OPT-LABEL: test2: ; OPT-NOT: local ; OPT: block{{$}} -; OPT: br_if {{[^,]+}}, 0{{$}} +; OPT: br_if 0, {{[^,]+}}{{$}} ; OPT: .LBB2_1: -; OPT: br_if ${{[0-9]+}}, 0{{$}} +; OPT: br_if 0, ${{[0-9]+}}{{$}} ; OPT: .LBB2_2: ; OPT: return{{$}} define void @test2(double* nocapture %p, i32 %n) { @@ -136,12 +136,12 @@ for.end: ; CHECK-LABEL: doublediamond: ; CHECK: block{{$}} ; CHECK-NEXT: block{{$}} -; CHECK: br_if ${{[^,]+}}, 0{{$}} +; CHECK: br_if 0, ${{[^,]+}}{{$}} ; CHECK: br 1{{$}} ; CHECK: .LBB3_2: ; CHECK-NEXT: end_block{{$}} ; CHECK: block{{$}} -; CHECK: br_if ${{[^,]+}}, 0{{$}} +; CHECK: br_if 0, ${{[^,]+}}{{$}} ; CHECK: br 1{{$}} ; CHECK: .LBB3_4: ; CHECK-NEXT: end_block{{$}} @@ -152,9 +152,9 @@ for.end: ; OPT-LABEL: doublediamond: ; OPT: block{{$}} ; OPT-NEXT: block{{$}} -; OPT: br_if ${{[^,]+}}, 0{{$}} +; OPT: br_if 0, ${{[^,]+}}{{$}} ; OPT: block{{$}} -; OPT: br_if ${{[^,]+}}, 0{{$}} +; OPT: br_if 0, ${{[^,]+}}{{$}} ; OPT: br 1{{$}} ; OPT: .LBB3_4: ; OPT: .LBB3_5: @@ -185,12 +185,12 @@ exit: ; CHECK-LABEL: triangle: ; CHECK: block{{$}} -; CHECK: br_if $1, 0{{$}} +; CHECK: br_if 0, $1{{$}} ; CHECK: .LBB4_2: ; CHECK: return ${{[0-9]+}}{{$}} ; OPT-LABEL: triangle: ; OPT: block{{$}} -; OPT: br_if $1, 0{{$}} +; OPT: br_if 0, $1{{$}} ; OPT: .LBB4_2: ; OPT: return ${{[0-9]+}}{{$}} define i32 @triangle(i32* %p, i32 %a) { @@ -209,7 +209,7 @@ exit: ; CHECK-LABEL: diamond: ; CHECK: block{{$}} ; CHECK: block{{$}} -; CHECK: br_if $1, 0{{$}} +; CHECK: br_if 0, $1{{$}} ; CHECK: br 1{{$}} ; CHECK: .LBB5_2: ; CHECK: .LBB5_3: @@ -218,7 +218,7 @@ exit: ; OPT-LABEL: diamond: ; OPT: block{{$}} ; OPT: block{{$}} -; OPT: br_if {{[^,]+}}, 0{{$}} +; OPT: br_if 0, {{[^,]+}}{{$}} ; OPT: br 1{{$}} ; OPT: .LBB5_2: ; OPT: .LBB5_3: @@ -277,7 +277,7 @@ loop: ; CHECK-NOT: br ; CHECK: .LBB8_1: ; CHECK: loop{{$}} -; CHECK: br_if $pop{{[0-9]+}}, 0{{$}} +; CHECK: br_if 0, $pop{{[0-9]+}}{{$}} ; CHECK-NEXT: end_loop{{$}} ; CHECK: i32.const $push{{[0-9]+}}=, 0{{$}} ; CHECK-NEXT: return $pop{{[0-9]+}}{{$}} @@ -285,7 +285,7 @@ loop: ; OPT-NOT: br ; OPT: .LBB8_1: ; OPT: loop{{$}} -; OPT: br_if {{[^,]+}}, 0{{$}} +; OPT: br_if 0, {{[^,]+}}{{$}} ; OPT-NEXT: end_loop{{$}} ; OPT: i32.const $push{{[0-9]+}}=, 0{{$}} ; OPT-NEXT: return $pop{{[0-9]+}}{{$}} @@ -304,17 +304,17 @@ exit: ; CHECK-LABEL: doubletriangle: ; CHECK: block{{$}} -; CHECK: br_if $0, 0{{$}} +; CHECK: br_if 0, $0{{$}} ; CHECK: block{{$}} -; CHECK: br_if $1, 0{{$}} +; CHECK: br_if 0, $1{{$}} ; CHECK: .LBB9_3: ; CHECK: .LBB9_4: ; CHECK: return ${{[0-9]+}}{{$}} ; OPT-LABEL: doubletriangle: ; OPT: block{{$}} -; OPT: br_if $0, 0{{$}} +; OPT: br_if 0, $0{{$}} ; OPT: block{{$}} -; OPT: br_if $1, 0{{$}} +; OPT: br_if 0, $1{{$}} ; OPT: .LBB9_3: ; OPT: .LBB9_4: ; OPT: return ${{[0-9]+}}{{$}} @@ -341,18 +341,18 @@ exit: ; CHECK-LABEL: ifelse_earlyexits: ; CHECK: block{{$}} ; CHECK: block{{$}} -; CHECK: br_if $0, 0{{$}} +; CHECK: br_if 0, $0{{$}} ; CHECK: br 1{{$}} ; CHECK: .LBB10_2: -; CHECK: br_if $1, 0{{$}} +; CHECK: br_if 0, $1{{$}} ; CHECK: .LBB10_4: ; CHECK: i32.const $push{{[0-9]+}}=, 0{{$}} ; CHECK-NEXT: return $pop{{[0-9]+}}{{$}} ; OPT-LABEL: ifelse_earlyexits: ; OPT: block{{$}} ; OPT: block{{$}} -; OPT: br_if {{[^,]+}}, 0{{$}} -; OPT: br_if $1, 1{{$}} +; OPT: br_if 0, {{[^,]+}}{{$}} +; OPT: br_if 1, $1{{$}} ; OPT: br 1{{$}} ; OPT: .LBB10_3: ; OPT: .LBB10_4: @@ -383,11 +383,11 @@ exit: ; CHECK: loop{{$}} ; CHECK: block{{$}} ; CHECK: block{{$}} -; CHECK: br_if $0, 0{{$}} +; CHECK: br_if 0, $0{{$}} ; CHECK: br 1{{$}} ; CHECK: .LBB11_3: ; CHECK: block{{$}} -; CHECK: br_if $1, 0{{$}} +; CHECK: br_if 0, $1{{$}} ; CHECK: br 1{{$}} ; CHECK: .LBB11_5: ; CHECK: .LBB11_6: @@ -399,9 +399,9 @@ exit: ; OPT: loop{{$}} ; OPT: block{{$}} ; OPT: block{{$}} -; OPT: br_if {{[^,]+}}, 0{{$}} +; OPT: br_if 0, {{[^,]+}}{{$}} ; OPT: block{{$}} -; OPT: br_if {{[^,]+}}, 0{{$}} +; OPT: br_if 0, {{[^,]+}}{{$}} ; OPT: br 2{{$}} ; OPT: .LBB11_4: ; OPT-NEXT: end_block{{$}} @@ -484,16 +484,16 @@ if.end: ; CHECK: block{{$}} ; CHECK-NEXT: block{{$}} ; CHECK-NEXT: block{{$}} -; CHECK: br_if $pop{{[0-9]+}}, 0{{$}} +; CHECK: br_if 0, $pop{{[0-9]+}}{{$}} ; CHECK-NEXT: block{{$}} -; CHECK: br_if $pop{{[0-9]+}}, 0{{$}} -; CHECK: br_if $pop{{[0-9]+}}, 2{{$}} +; CHECK: br_if 0, $pop{{[0-9]+}}{{$}} +; CHECK: br_if 2, $pop{{[0-9]+}}{{$}} ; CHECK-NEXT: .LBB13_3: ; CHECK-NEXT: end_block{{$}} ; CHECK-NEXT: return{{$}} ; CHECK-NEXT: .LBB13_4: -; CHECK: br_if $pop{{[0-9]+}}, 1{{$}} -; CHECK: br_if $pop{{[0-9]+}}, 0{{$}} +; CHECK: br_if 1, $pop{{[0-9]+}}{{$}} +; CHECK: br_if 0, $pop{{[0-9]+}}{{$}} ; CHECK-NEXT: return{{$}} ; CHECK-NEXT: .LBB13_7: ; CHECK-NEXT: end_block{{$}} @@ -506,16 +506,16 @@ if.end: ; OPT: block{{$}} ; OPT-NEXT: block{{$}} ; OPT-NEXT: block{{$}} -; OPT: br_if $pop{{[0-9]+}}, 0{{$}} +; OPT: br_if 0, $pop{{[0-9]+}}{{$}} ; OPT-NEXT: block{{$}} -; OPT: br_if $pop{{[0-9]+}}, 0{{$}} -; OPT: br_if $pop{{[0-9]+}}, 2{{$}} +; OPT: br_if 0, $pop{{[0-9]+}}{{$}} +; OPT: br_if 2, $pop{{[0-9]+}}{{$}} ; OPT-NEXT: .LBB13_3: ; OPT-NEXT: end_block{{$}} ; OPT-NEXT: return{{$}} ; OPT-NEXT: .LBB13_4: -; OPT: br_if $pop{{[0-9]+}}, 1{{$}} -; OPT: br_if $pop{{[0-9]+}}, 0{{$}} +; OPT: br_if 1, $pop{{[0-9]+}}{{$}} +; OPT: br_if 0, $pop{{[0-9]+}}{{$}} ; OPT-NEXT: return{{$}} ; OPT-NEXT: .LBB13_7: ; OPT-NEXT: end_block{{$}} @@ -552,8 +552,8 @@ default: ; CHECK: .LBB14_1: ; CHECK-NEXT: block{{$}} ; CHECK-NEXT: loop{{$}} -; CHECK: br_if {{[^,]+}}, 2{{$}} -; CHECK: br_if {{[^,]+}}, 0{{$}} +; CHECK: br_if 2, {{[^,]+}}{{$}} +; CHECK: br_if 0, {{[^,]+}}{{$}} ; CHECK-NEXT: end_loop{{$}} ; CHECK: return{{$}} ; CHECK-NEXT: .LBB14_4: @@ -562,8 +562,8 @@ default: ; OPT: .LBB14_1: ; OPT-NEXT: block{{$}} ; OPT-NEXT: loop{{$}} -; OPT: br_if {{[^,]+}}, 2{{$}} -; OPT: br_if {{[^,]+}}, 0{{$}} +; OPT: br_if 2, {{[^,]+}}{{$}} +; OPT: br_if 0, {{[^,]+}}{{$}} ; OPT-NEXT: end_loop{{$}} ; OPT: return{{$}} ; OPT-NEXT: .LBB14_4: @@ -599,11 +599,11 @@ return: ; CHECK-NEXT: block{{$}} ; CHECK-NEXT: loop{{$}} ; CHECK-NOT: block -; CHECK: br_if {{[^,]+}}, 3{{$}} +; CHECK: br_if 3, {{[^,]+}}{{$}} ; CHECK-NOT: block -; CHECK: br_if {{[^,]+}}, 2{{$}} +; CHECK: br_if 2, {{[^,]+}}{{$}} ; CHECK-NOT: block -; CHECK: br_if {{[^,]+}}, 0{{$}} +; CHECK: br_if 0, {{[^,]+}}{{$}} ; CHECK-NEXT: end_loop{{$}} ; CHECK-NOT: block ; CHECK: return{{$}} @@ -620,11 +620,11 @@ return: ; OPT-NEXT: block{{$}} ; OPT-NEXT: loop{{$}} ; OPT-NOT: block -; OPT: br_if {{[^,]+}}, 3{{$}} +; OPT: br_if 3, {{[^,]+}}{{$}} ; OPT-NOT: block -; OPT: br_if {{[^,]+}}, 2{{$}} +; OPT: br_if 2, {{[^,]+}}{{$}} ; OPT-NOT: block -; OPT: br_if {{[^,]+}}, 0{{$}} +; OPT: br_if 0, {{[^,]+}}{{$}} ; OPT-NEXT: end_loop{{$}} ; OPT-NOT: block ; OPT: return{{$}} @@ -672,15 +672,15 @@ second: ; CHECK-NEXT: loop{{$}} ; CHECK-NOT: block ; CHECK: block{{$}} -; CHECK: br_if {{[^,]+}}, 0{{$}} +; CHECK: br_if 0, {{[^,]+}}{{$}} ; CHECK-NOT: block -; CHECK: br_if {{[^,]+}}, 1{{$}} +; CHECK: br_if 1, {{[^,]+}}{{$}} ; CHECK-NOT: block ; CHECK: unreachable ; CHECK-NEXT: .LBB16_4: ; CHECK-NEXT: end_block{{$}} ; CHECK-NOT: block -; CHECK: br_if {{[^,]+}}, 0{{$}} +; CHECK: br_if 0, {{[^,]+}}{{$}} ; CHECK-NEXT: end_loop{{$}} ; CHECK-NOT: block ; CHECK: unreachable @@ -690,15 +690,15 @@ second: ; OPT-NOT: block ; OPT: block{{$}} ; OPT-NOT: block -; OPT: br_if {{[^,]+}}, 0{{$}} +; OPT: br_if 0, {{[^,]+}}{{$}} ; OPT-NOT: block -; OPT: br_if {{[^,]+}}, 1{{$}} +; OPT: br_if 1, {{[^,]+}}{{$}} ; OPT-NOT: block ; OPT: unreachable ; OPT-NEXT: .LBB16_4: ; OPT-NEXT: end_block{{$}} ; OPT-NOT: block -; OPT: br_if {{[^,]+}}, 0{{$}} +; OPT: br_if 0, {{[^,]+}}{{$}} ; OPT-NEXT: end_loop{{$}} ; OPT-NOT: block ; OPT: unreachable @@ -735,14 +735,14 @@ u1: ; CHECK-NEXT: loop{{$}} ; CHECK-NEXT: block{{$}} ; CHECK-NOT: block -; CHECK: br_if {{[^,]+}}, 0{{$}} +; CHECK: br_if 0, {{[^,]+}}{{$}} ; CHECK-NOT: block -; CHECK: br_if {{[^,]+}}, 1{{$}} +; CHECK: br_if 1, {{[^,]+}}{{$}} ; CHECK-NEXT: .LBB17_3: ; CHECK-NEXT: end_block{{$}} ; CHECK-NEXT: loop{{$}} ; CHECK-NEXT: i32.const $push{{[^,]+}}, 0{{$}} -; CHECK-NEXT: br_if {{[^,]+}}, 0{{$}} +; CHECK-NEXT: br_if 0, {{[^,]+}}{{$}} ; CHECK-NEXT: br 2{{$}} ; CHECK-NEXT: .LBB17_4: ; OPT-LABEL: test8: @@ -750,14 +750,14 @@ u1: ; OPT-NEXT: loop{{$}} ; OPT-NEXT: block{{$}} ; OPT-NOT: block -; OPT: br_if {{[^,]+}}, 0{{$}} +; OPT: br_if 0, {{[^,]+}}{{$}} ; OPT-NOT: block -; OPT: br_if {{[^,]+}}, 1{{$}} +; OPT: br_if 1, {{[^,]+}}{{$}} ; OPT-NEXT: .LBB17_3: ; OPT-NEXT: end_block{{$}} ; OPT-NEXT: loop{{$}} ; OPT-NEXT: i32.const $push{{[^,]+}}, 0{{$}} -; OPT-NEXT: br_if {{[^,]+}}, 0{{$}} +; OPT-NEXT: br_if 0, {{[^,]+}}{{$}} ; OPT-NEXT: br 2{{$}} ; OPT-NEXT: .LBB17_4: define i32 @test8() { @@ -784,20 +784,20 @@ bb3: ; CHECK: .LBB18_1: ; CHECK-NEXT: loop{{$}} ; CHECK-NOT: block -; CHECK: br_if {{[^,]+}}, 1{{$}} +; CHECK: br_if 1, {{[^,]+}}{{$}} ; CHECK-NEXT: .LBB18_2: ; CHECK-NEXT: loop{{$}} ; CHECK-NOT: block ; CHECK: block{{$}} ; CHECK-NOT: block -; CHECK: br_if {{[^,]+}}, 0{{$}} +; CHECK: br_if 0, {{[^,]+}}{{$}} ; CHECK-NOT: block -; CHECK: br_if {{[^,]+}}, 1{{$}} +; CHECK: br_if 1, {{[^,]+}}{{$}} ; CHECK-NEXT: br 3{{$}} ; CHECK-NEXT: .LBB18_4: ; CHECK-NEXT: end_block{{$}} ; CHECK-NOT: block -; CHECK: br_if {{[^,]+}}, 0{{$}} +; CHECK: br_if 0, {{[^,]+}}{{$}} ; CHECK-NEXT: br 2{{$}} ; CHECK-NEXT: .LBB18_5: ; CHECK-NOT: block @@ -806,20 +806,20 @@ bb3: ; OPT: .LBB18_1: ; OPT-NEXT: loop{{$}} ; OPT-NOT: block -; OPT: br_if {{[^,]+}}, 1{{$}} +; OPT: br_if 1, {{[^,]+}}{{$}} ; OPT-NEXT: .LBB18_2: ; OPT-NEXT: loop{{$}} ; OPT-NOT: block ; OPT: block{{$}} ; OPT-NOT: block -; OPT: br_if {{[^,]+}}, 0{{$}} +; OPT: br_if 0, {{[^,]+}}{{$}} ; OPT-NOT: block -; OPT: br_if {{[^,]+}}, 1{{$}} +; OPT: br_if 1, {{[^,]+}}{{$}} ; OPT-NEXT: br 3{{$}} ; OPT-NEXT: .LBB18_4: ; OPT-NEXT: end_block{{$}} ; OPT-NOT: block -; OPT: br_if {{[^,]+}}, 0{{$}} +; OPT: br_if 0, {{[^,]+}}{{$}} ; OPT-NEXT: br 2{{$}} ; OPT-NEXT: .LBB18_5: ; OPT-NOT: block @@ -862,7 +862,7 @@ end: ; CHECK: .LBB19_1: ; CHECK-NEXT: loop{{$}} ; CHECK-NOT: block -; CHECK: br_if {{[^,]+}}, 0{{$}} +; CHECK: br_if 0, {{[^,]+}}{{$}} ; CHECK-NEXT: .LBB19_2: ; CHECK-NEXT: block{{$}} ; CHECK-NEXT: loop{{$}} @@ -870,7 +870,7 @@ end: ; CHECK: .LBB19_3: ; CHECK-NEXT: loop{{$}} ; CHECK-NOT: block -; CHECK: br_if {{[^,]+}}, 5{{$}} +; CHECK: br_if 5, {{[^,]+}}{{$}} ; CHECK-NOT: block ; CHECK: tableswitch {{[^,]+}}, 0, 0, 1, 5, 2, 4{{$}} ; CHECK-NEXT: .LBB19_5: @@ -886,7 +886,7 @@ end: ; OPT: .LBB19_1: ; OPT-NEXT: loop{{$}} ; OPT-NOT: block -; OPT: br_if {{[^,]+}}, 0{{$}} +; OPT: br_if 0, {{[^,]+}}{{$}} ; OPT-NEXT: .LBB19_2: ; OPT-NEXT: block{{$}} ; OPT-NEXT: loop{{$}} @@ -894,7 +894,7 @@ end: ; OPT: .LBB19_3: ; OPT-NEXT: loop{{$}} ; OPT-NOT: block -; OPT: br_if {{[^,]+}}, 5{{$}} +; OPT: br_if 5, {{[^,]+}}{{$}} ; OPT-NOT: block ; OPT: tableswitch {{[^,]+}}, 0, 0, 1, 5, 2, 4{{$}} ; OPT-NEXT: .LBB19_5: @@ -948,12 +948,12 @@ bb6: ; CHECK-NEXT: block{{$}} ; CHECK-NEXT: block{{$}} ; CHECK-NEXT: block{{$}} -; CHECK: br_if {{[^,]+}}, 0{{$}} +; CHECK: br_if 0, {{[^,]+}}{{$}} ; CHECK-NOT: block ; CHECK: block{{$}} -; CHECK-NEXT: br_if {{[^,]+}}, 0{{$}} +; CHECK-NEXT: br_if 0, {{[^,]+}}{{$}} ; CHECK-NOT: block -; CHECK: br_if {{[^,]+}}, 2{{$}} +; CHECK: br_if 2, {{[^,]+}}{{$}} ; CHECK-NEXT: .LBB20_3: ; CHECK-NEXT: end_block{{$}} ; CHECK-NOT: block @@ -961,9 +961,9 @@ bb6: ; CHECK-NEXT: .LBB20_4: ; CHECK-NEXT: end_block{{$}} ; CHECK-NOT: block -; CHECK: br_if {{[^,]+}}, 2{{$}} +; CHECK: br_if 2, {{[^,]+}}{{$}} ; CHECK-NOT: block -; CHECK: br_if {{[^,]+}}, 1{{$}} +; CHECK: br_if 1, {{[^,]+}}{{$}} ; CHECK-NEXT: .LBB20_6: ; CHECK-NEXT: end_block{{$}} ; CHECK-NOT: block @@ -979,12 +979,12 @@ bb6: ; OPT-LABEL: test11: ; OPT: block{{$}} ; OPT-NEXT: block{{$}} -; OPT: br_if $pop{{[0-9]+}}, 0{{$}} +; OPT: br_if 0, $pop{{[0-9]+}}{{$}} ; OPT-NOT: block ; OPT: block{{$}} -; OPT-NEXT: br_if $0, 0{{$}} +; OPT-NEXT: br_if 0, $0{{$}} ; OPT-NOT: block -; OPT: br_if {{[^,]+}}, 2{{$}} +; OPT: br_if 2, {{[^,]+}}{{$}} ; OPT-NEXT: .LBB20_3: ; OPT-NEXT: end_block{{$}} ; OPT-NOT: block @@ -994,13 +994,13 @@ bb6: ; OPT-NOT: block ; OPT: block{{$}} ; OPT-NOT: block -; OPT: br_if $pop{{[0-9]+}}, 0{{$}} +; OPT: br_if 0, $pop{{[0-9]+}}{{$}} ; OPT-NOT: block ; OPT: return{{$}} ; OPT-NEXT: .LBB20_6: ; OPT-NEXT: end_block{{$}} ; OPT-NOT: block -; OPT: br_if $pop{{[0-9]+}}, 0{{$}} +; OPT: br_if 0, $pop{{[0-9]+}}{{$}} ; OPT-NOT: block ; OPT: return{{$}} ; OPT-NEXT: .LBB20_8: @@ -1044,18 +1044,18 @@ bb8: ; CHECK: block{{$}} ; CHECK-NEXT: block{{$}} ; CHECK-NEXT: block{{$}} -; CHECK: br_if {{[^,]+}}, 0{{$}} +; CHECK: br_if 0, {{[^,]+}}{{$}} ; CHECK-NOT: block -; CHECK: br_if {{[^,]+}}, 2{{$}} +; CHECK: br_if 2, {{[^,]+}}{{$}} ; CHECK-NOT: block -; CHECK: br_if {{[^,]+}}, 2{{$}} +; CHECK: br_if 2, {{[^,]+}}{{$}} ; CHECK-NEXT: br 1{{$}} ; CHECK-NEXT: .LBB21_4: ; CHECK-NEXT: end_block{{$}} ; CHECK-NOT: block -; CHECK: br_if {{[^,]+}}, 1{{$}} +; CHECK: br_if 1, {{[^,]+}}{{$}} ; CHECK-NOT: block -; CHECK: br_if {{[^,]+}}, 1{{$}} +; CHECK: br_if 1, {{[^,]+}}{{$}} ; CHECK-NEXT: .LBB21_6: ; CHECK-NEXT: end_block{{$}} ; CHECK-NEXT: return{{$}} @@ -1071,18 +1071,18 @@ bb8: ; OPT: block{{$}} ; OPT-NEXT: block{{$}} ; OPT-NEXT: block{{$}} -; OPT: br_if {{[^,]+}}, 0{{$}} +; OPT: br_if 0, {{[^,]+}}{{$}} ; OPT-NOT: block -; OPT: br_if {{[^,]+}}, 2{{$}} +; OPT: br_if 2, {{[^,]+}}{{$}} ; OPT-NOT: block -; OPT: br_if {{[^,]+}}, 2{{$}} +; OPT: br_if 2, {{[^,]+}}{{$}} ; OPT-NEXT: br 1{{$}} ; OPT-NEXT: .LBB21_4: ; OPT-NEXT: end_block{{$}} ; OPT-NOT: block -; OPT: br_if {{[^,]+}}, 1{{$}} +; OPT: br_if 1, {{[^,]+}}{{$}} ; OPT-NOT: block -; OPT: br_if {{[^,]+}}, 1{{$}} +; OPT: br_if 1, {{[^,]+}}{{$}} ; OPT-NEXT: .LBB21_6: ; OPT-NEXT: end_block{{$}} ; OPT-NEXT: return{{$}} @@ -1121,33 +1121,33 @@ bb7: ; CHECK-LABEL: test13: ; CHECK-NEXT: .local i32{{$}} ; CHECK: block{{$}} -; CHECK: br_if $pop5, 0{{$}} +; CHECK: br_if 0, $pop5{{$}} ; CHECK-NEXT: return{{$}} ; CHECK-NEXT: .LBB22_2: ; CHECK-NEXT: end_block{{$}} ; CHECK: block{{$}} ; CHECK-NEXT: i32.const $push3=, 0{{$}} -; CHECK-NEXT: br_if $pop3, 0{{$}} +; CHECK-NEXT: br_if 0, $pop3{{$}} ; CHECK: .LBB22_4: ; CHECK-NEXT: end_block{{$}} ; CHECK: block{{$}} -; CHECK: br_if $pop7, 0{{$}} +; CHECK: br_if 0, $pop7{{$}} ; CHECK-NEXT: end_block{{$}} ; CHECK-NEXT: unreachable{{$}} ; OPT-LABEL: test13: ; OPT-NEXT: .local i32{{$}} ; OPT: block{{$}} -; OPT: br_if $pop5, 0{{$}} +; OPT: br_if 0, $pop5{{$}} ; OPT-NEXT: return{{$}} ; OPT-NEXT: .LBB22_2: ; OPT-NEXT: end_block{{$}} ; OPT: block{{$}} ; OPT-NEXT: i32.const $push3=, 0{{$}} -; OPT-NEXT: br_if $pop3, 0{{$}} +; OPT-NEXT: br_if 0, $pop3{{$}} ; OPT: .LBB22_4: ; OPT-NEXT: end_block{{$}} ; OPT: block{{$}} -; OPT: br_if $pop7, 0{{$}} +; OPT: br_if 0, $pop7{{$}} ; OPT-NEXT: end_block{{$}} ; OPT-NEXT: unreachable{{$}} define void @test13() noinline optnone { @@ -1174,13 +1174,13 @@ bb5: ; CHECK-NEXT: .LBB23_1:{{$}} ; CHECK-NEXT: loop{{$}} ; CHECK-NEXT: i32.const $push0=, 0{{$}} -; CHECK-NEXT: br_if $pop0, 0{{$}} +; CHECK-NEXT: br_if 0, $pop0{{$}} ; CHECK-NEXT: .LBB23_2:{{$}} ; CHECK-NEXT: end_loop{{$}} ; CHECK-NEXT: loop{{$}} ; CHECK-NEXT: i32.const $discard=, 0{{$}} ; CHECK-NEXT: i32.const $push1=, 0{{$}} -; CHECK-NEXT: br_if $pop1, 0{{$}} +; CHECK-NEXT: br_if 0, $pop1{{$}} ; CHECK-NEXT: end_loop{{$}} ; CHECK-NEXT: return{{$}} define void @test14() { diff --git a/llvm/test/CodeGen/WebAssembly/reg-stackify.ll b/llvm/test/CodeGen/WebAssembly/reg-stackify.ll index d745e67..c18a74e 100644 --- a/llvm/test/CodeGen/WebAssembly/reg-stackify.ll +++ b/llvm/test/CodeGen/WebAssembly/reg-stackify.ll @@ -66,7 +66,7 @@ define i32 @yes1(i32* %q) { ; CHECK-NEXT: i32.xor $push7=, $pop5, $pop6{{$}} ; CHECK-NEXT: i32.const $push10=, 1{{$}} ; CHECK-NEXT: i32.ne $push8=, $pop7, $pop10{{$}} -; CHECK-NEXT: br_if $pop8, 0{{$}} +; CHECK-NEXT: br_if 0, $pop8{{$}} ; CHECK-NEXT: i32.const $push9=, 0{{$}} ; CHECK-NEXT: return $pop9{{$}} ; CHECK-NEXT: .LBB4_2: @@ -99,9 +99,9 @@ false: ; CHECK-NEXT: i32.load $push0=, 0($2){{$}} ; CHECK-NEXT: tee_local $push3=, $3=, $pop0{{$}} ; CHECK-NEXT: i32.ge_u $push1=, $pop3, $1{{$}} -; CHECK-NEXT: br_if $pop1, 0{{$}} +; CHECK-NEXT: br_if 0, $pop1{{$}} ; CHECK-NEXT: i32.lt_u $push2=, $3, $0{{$}} -; CHECK-NEXT: br_if $pop2, 0{{$}} +; CHECK-NEXT: br_if 0, $pop2{{$}} ; CHECK-NEXT: i32.store $discard=, 0($2), $3{{$}} ; CHECK-NEXT: .LBB5_3: ; CHECK-NEXT: end_block{{$}} -- 2.7.4