[PATCH] D48642: [Mips][FastISel] Do not duplicate condition while lowering branches
Petar Jovanovic via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Mon Jul 2 02:01:57 PDT 2018
This revision was automatically updated to reflect the committed changes.
Closed by commit rL336084: [Mips][FastISel] Do not duplicate condition while lowering branches (authored by petarj, committed by ).
Changed prior to commit:
https://reviews.llvm.org/D48642?vs=153063&id=153680#toc
Repository:
rL LLVM
https://reviews.llvm.org/D48642
Files:
llvm/trunk/lib/Target/Mips/MipsFastISel.cpp
llvm/trunk/test/CodeGen/Mips/Fast-ISel/icmpbr1.ll
Index: llvm/trunk/test/CodeGen/Mips/Fast-ISel/icmpbr1.ll
===================================================================
--- llvm/trunk/test/CodeGen/Mips/Fast-ISel/icmpbr1.ll
+++ llvm/trunk/test/CodeGen/Mips/Fast-ISel/icmpbr1.ll
@@ -0,0 +1,28 @@
+; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
+; RUN: llc -march=mipsel -relocation-model=pic -O0 -fast-isel=true -mcpu=mips32r2 \
+; RUN: < %s -verify-machineinstrs | FileCheck %s
+
+
+define i32 @foobar(i32*) {
+bb0:
+; CHECK-LABEL: foobar:
+; CHECK: # %bb.0: # %bb0
+; CHECK: lw $[[REG0:[0-9]+]], 0($4)
+; CHECK-NEXT: sltiu $[[REG1:[0-9]+]], $[[REG0]], 1
+; CHECK: sw $[[REG1]], [[SPILL:[0-9]+]]($sp) # 4-byte Folded Spill
+ %1 = load i32, i32* %0 , align 4
+ %2 = icmp eq i32 %1, 0
+ store atomic i32 0, i32* %0 monotonic, align 4
+ br label %bb1
+bb1:
+; CHECK: # %bb.1: # %bb1
+; CHECK-NEXT: lw $[[REG2:[0-9]+]], [[SPILL]]($sp) # 4-byte Folded Reload
+; CHECK-NEXT: bgtz $[[REG2]], $BB0_3
+ br i1 %2, label %bb2, label %bb3
+bb2:
+; CHECK: $BB0_3: # %bb2
+; CHECK-NEXT: addiu $2, $zero, 1
+ ret i32 1
+bb3:
+ ret i32 0
+}
Index: llvm/trunk/lib/Target/Mips/MipsFastISel.cpp
===================================================================
--- llvm/trunk/lib/Target/Mips/MipsFastISel.cpp
+++ llvm/trunk/lib/Target/Mips/MipsFastISel.cpp
@@ -951,12 +951,9 @@
//
MachineBasicBlock *TBB = FuncInfo.MBBMap[BI->getSuccessor(0)];
MachineBasicBlock *FBB = FuncInfo.MBBMap[BI->getSuccessor(1)];
- BI->getCondition();
// For now, just try the simplest case where it's fed by a compare.
if (const CmpInst *CI = dyn_cast<CmpInst>(BI->getCondition())) {
- unsigned CondReg = createResultReg(&Mips::GPR32RegClass);
- if (!emitCmp(CondReg, CI))
- return false;
+ unsigned CondReg = getRegForValue(CI);
BuildMI(*BrBB, FuncInfo.InsertPt, DbgLoc, TII.get(Mips::BGTZ))
.addReg(CondReg)
.addMBB(TBB);
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D48642.153680.patch
Type: text/x-patch
Size: 1981 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20180702/aa858cd3/attachment.bin>
More information about the llvm-commits
mailing list