diff options
| author | Hal Finkel <hfinkel@anl.gov> | 2013-04-20 05:16:26 +0000 |
|---|---|---|
| committer | Hal Finkel <hfinkel@anl.gov> | 2013-04-20 05:16:26 +0000 |
| commit | 0f64e21bb92a586b16680a8749d3c2c5a2f1e09b (patch) | |
| tree | 0c3ae9a6ce9589fe8ba043119db96006183501dd /llvm/lib/Target/PowerPC | |
| parent | b8bd232a3da38b11bb0b848ad2bd18d57319b9dc (diff) | |
| download | bcm5719-llvm-0f64e21bb92a586b16680a8749d3c2c5a2f1e09b.tar.gz bcm5719-llvm-0f64e21bb92a586b16680a8749d3c2c5a2f1e09b.zip | |
Move PPC getSwappedPredicate for reuse
The getSwappedPredicate function can be used in other places (such as in
improvements to the PPCCTRLoops pass). Instead of trapping it as a static
function in PPCInstrInfo, move it into PPCPredicates with other
predicate-related things.
No functionality change intended.
llvm-svn: 179926
Diffstat (limited to 'llvm/lib/Target/PowerPC')
| -rw-r--r-- | llvm/lib/Target/PowerPC/MCTargetDesc/PPCPredicates.cpp | 15 | ||||
| -rw-r--r-- | llvm/lib/Target/PowerPC/MCTargetDesc/PPCPredicates.h | 4 | ||||
| -rw-r--r-- | llvm/lib/Target/PowerPC/PPCInstrInfo.cpp | 18 |
3 files changed, 20 insertions, 17 deletions
diff --git a/llvm/lib/Target/PowerPC/MCTargetDesc/PPCPredicates.cpp b/llvm/lib/Target/PowerPC/MCTargetDesc/PPCPredicates.cpp index d84eb9c6aa0..853e5053956 100644 --- a/llvm/lib/Target/PowerPC/MCTargetDesc/PPCPredicates.cpp +++ b/llvm/lib/Target/PowerPC/MCTargetDesc/PPCPredicates.cpp @@ -29,3 +29,18 @@ PPC::Predicate PPC::InvertPredicate(PPC::Predicate Opcode) { } llvm_unreachable("Unknown PPC branch opcode!"); } + +PPC::Predicate PPC::getSwappedPredicate(PPC::Predicate Opcode) { + switch (Opcode) { + case PPC::PRED_EQ: return PPC::PRED_EQ; + case PPC::PRED_NE: return PPC::PRED_NE; + case PPC::PRED_LT: return PPC::PRED_GT; + case PPC::PRED_GE: return PPC::PRED_LE; + case PPC::PRED_GT: return PPC::PRED_LT; + case PPC::PRED_LE: return PPC::PRED_GE; + case PPC::PRED_NU: return PPC::PRED_NU; + case PPC::PRED_UN: return PPC::PRED_UN; + } + llvm_unreachable("Unknown PPC branch opcode!"); +} + diff --git a/llvm/lib/Target/PowerPC/MCTargetDesc/PPCPredicates.h b/llvm/lib/Target/PowerPC/MCTargetDesc/PPCPredicates.h index ad2b0181281..444758cc8b6 100644 --- a/llvm/lib/Target/PowerPC/MCTargetDesc/PPCPredicates.h +++ b/llvm/lib/Target/PowerPC/MCTargetDesc/PPCPredicates.h @@ -37,6 +37,10 @@ namespace PPC { /// Invert the specified predicate. != -> ==, < -> >=. Predicate InvertPredicate(Predicate Opcode); + + /// Assume the condition register is set by MI(a,b), return the predicate if + /// we modify the instructions such that condition register is set by MI(b,a). + Predicate getSwappedPredicate(Predicate Opcode); } } diff --git a/llvm/lib/Target/PowerPC/PPCInstrInfo.cpp b/llvm/lib/Target/PowerPC/PPCInstrInfo.cpp index f38e42d2e4b..847bd224b6f 100644 --- a/llvm/lib/Target/PowerPC/PPCInstrInfo.cpp +++ b/llvm/lib/Target/PowerPC/PPCInstrInfo.cpp @@ -1087,22 +1087,6 @@ bool PPCInstrInfo::analyzeCompare(const MachineInstr *MI, } } -/// Assume the flags are set by MI(a,b), return the condition code if we modify -/// the instructions such that flags are set by MI(b,a). -PPC::Predicate static getSwappedPredicate(PPC::Predicate Opcode) { - switch (Opcode) { - case PPC::PRED_EQ: return PPC::PRED_EQ; - case PPC::PRED_NE: return PPC::PRED_NE; - case PPC::PRED_LT: return PPC::PRED_GT; - case PPC::PRED_GE: return PPC::PRED_LE; - case PPC::PRED_GT: return PPC::PRED_LT; - case PPC::PRED_LE: return PPC::PRED_GE; - case PPC::PRED_NU: return PPC::PRED_NU; - case PPC::PRED_UN: return PPC::PRED_UN; - } - llvm_unreachable("Unknown PPC branch opcode!"); -} - bool PPCInstrInfo::optimizeCompareInstr(MachineInstr *CmpInstr, unsigned SrcReg, unsigned SrcReg2, int Mask, int Value, @@ -1320,7 +1304,7 @@ bool PPCInstrInfo::optimizeCompareInstr(MachineInstr *CmpInstr, Pred == PPC::PRED_EQ || Pred == PPC::PRED_NE) && "Invalid predicate for equality-only optimization"); PredsToUpdate.push_back(std::make_pair(&((*I).getOperand(0)), - getSwappedPredicate(Pred))); + PPC::getSwappedPredicate(Pred))); } else if (UseMI->getOpcode() == PPC::ISEL || UseMI->getOpcode() == PPC::ISEL8) { unsigned NewSubReg = UseMI->getOperand(3).getSubReg(); |

