diff options
author | Chris Lattner <sabre@nondot.org> | 2008-10-15 04:02:26 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2008-10-15 04:02:26 +0000 |
commit | 709d829d3cb451599f1834b8cd9af0d9083107e0 (patch) | |
tree | e945c3a3d7f843d073553a720e1e670f1562b81d | |
parent | 871d246fd4d14d590297123b2a6cb0a601b3d81a (diff) |
more minor refactoring of X86SelectBranch, no functionality change.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57547 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/Target/X86/X86FastISel.cpp | 24 |
1 files changed, 11 insertions, 13 deletions
diff --git a/lib/Target/X86/X86FastISel.cpp b/lib/Target/X86/X86FastISel.cpp index c785dbc274..ff3a30b239 100644 --- a/lib/Target/X86/X86FastISel.cpp +++ b/lib/Target/X86/X86FastISel.cpp @@ -630,8 +630,6 @@ bool X86FastISel::X86SelectBranch(Instruction *I) { if (CmpInst *CI = dyn_cast<CmpInst>(BI->getCondition())) { if (CI->hasOneUse()) { MVT VT = TLI.getValueType(CI->getOperand(0)->getType()); - unsigned Opc = X86ChooseCmpOpcode(VT); - if (Opc == 0) return false; // Try to take advantage of fallthrough opportunities. CmpInst::Predicate Predicate = CI->getPredicate(); @@ -640,11 +638,6 @@ bool X86FastISel::X86SelectBranch(Instruction *I) { Predicate = CmpInst::getInversePredicate(Predicate); } - unsigned Op0Reg = getRegForValue(CI->getOperand(0)); - if (Op0Reg == 0) return false; - unsigned Op1Reg = getRegForValue(CI->getOperand(1)); - if (Op1Reg == 0) return false; - bool SwapArgs; // false -> compare Op0, Op1. true -> compare Op1, Op0. unsigned BranchOpc; // Opcode to jump on, e.g. "X86::JA" @@ -674,12 +667,19 @@ bool X86FastISel::X86SelectBranch(Instruction *I) { default: return false; } - + + Value *Op0 = CI->getOperand(0), *Op1 = CI->getOperand(1); if (SwapArgs) - BuildMI(MBB, TII.get(Opc)).addReg(Op1Reg).addReg(Op0Reg); - else - BuildMI(MBB, TII.get(Opc)).addReg(Op0Reg).addReg(Op1Reg); + std::swap(Op0, Op1); + + unsigned CompareOpc = X86ChooseCmpOpcode(VT); + if (CompareOpc == 0) return false; + unsigned Op0Reg = getRegForValue(Op0); + if (Op0Reg == 0) return false; + unsigned Op1Reg = getRegForValue(Op1); + if (Op1Reg == 0) return false; + BuildMI(MBB, TII.get(CompareOpc)).addReg(Op0Reg).addReg(Op1Reg); BuildMI(MBB, TII.get(BranchOpc)).addMBB(TrueMBB); FastEmitBranch(FalseMBB); MBB->addSuccessor(TrueMBB); @@ -692,11 +692,9 @@ bool X86FastISel::X86SelectBranch(Instruction *I) { if (OpReg == 0) return false; BuildMI(MBB, TII.get(X86::TEST8rr)).addReg(OpReg).addReg(OpReg); - BuildMI(MBB, TII.get(X86::JNE)).addMBB(TrueMBB); FastEmitBranch(FalseMBB); MBB->addSuccessor(TrueMBB); - return true; } |