diff options
| author | Krzysztof Parzyszek <kparzysz@codeaurora.org> | 2016-08-19 14:14:09 +0000 |
|---|---|---|
| committer | Krzysztof Parzyszek <kparzysz@codeaurora.org> | 2016-08-19 14:14:09 +0000 |
| commit | a243adfd270c1f55410f059bf2a703f08825b3ca (patch) | |
| tree | b12107c3b26a413945912f7e180b74307bf0ea07 /llvm/lib | |
| parent | 067debe0a082552d72165147d594b3eabe2de14d (diff) | |
| download | bcm5719-llvm-a243adfd270c1f55410f059bf2a703f08825b3ca.tar.gz bcm5719-llvm-a243adfd270c1f55410f059bf2a703f08825b3ca.zip | |
[Hexagon] Handle J2_jumptpt and J2_jumpfpt instructions
llvm-svn: 279246
Diffstat (limited to 'llvm/lib')
| -rw-r--r-- | llvm/lib/Target/Hexagon/HexagonBitTracker.cpp | 2 | ||||
| -rw-r--r-- | llvm/lib/Target/Hexagon/HexagonCFGOptimizer.cpp | 14 | ||||
| -rw-r--r-- | llvm/lib/Target/Hexagon/HexagonNewValueJump.cpp | 2 |
3 files changed, 16 insertions, 2 deletions
diff --git a/llvm/lib/Target/Hexagon/HexagonBitTracker.cpp b/llvm/lib/Target/Hexagon/HexagonBitTracker.cpp index 6833d7d79ba..4ac24385d1e 100644 --- a/llvm/lib/Target/Hexagon/HexagonBitTracker.cpp +++ b/llvm/lib/Target/Hexagon/HexagonBitTracker.cpp @@ -902,10 +902,12 @@ bool HexagonEvaluator::evaluate(const MachineInstr &BI, bool Negated = false; switch (Opc) { case Hexagon::J2_jumpf: + case Hexagon::J2_jumpfpt: case Hexagon::J2_jumpfnew: case Hexagon::J2_jumpfnewpt: Negated = true; case Hexagon::J2_jumpt: + case Hexagon::J2_jumptpt: case Hexagon::J2_jumptnew: case Hexagon::J2_jumptnewpt: // Simple branch: if([!]Pn) jump ... diff --git a/llvm/lib/Target/Hexagon/HexagonCFGOptimizer.cpp b/llvm/lib/Target/Hexagon/HexagonCFGOptimizer.cpp index 559bdfb16a6..63af9cbfbcd 100644 --- a/llvm/lib/Target/Hexagon/HexagonCFGOptimizer.cpp +++ b/llvm/lib/Target/Hexagon/HexagonCFGOptimizer.cpp @@ -59,8 +59,18 @@ public: char HexagonCFGOptimizer::ID = 0; static bool IsConditionalBranch(int Opc) { - return (Opc == Hexagon::J2_jumpt) || (Opc == Hexagon::J2_jumpf) - || (Opc == Hexagon::J2_jumptnewpt) || (Opc == Hexagon::J2_jumpfnewpt); + switch (Opc) { + case Hexagon::J2_jumpt: + case Hexagon::J2_jumptpt: + case Hexagon::J2_jumpf: + case Hexagon::J2_jumpfpt: + case Hexagon::J2_jumptnew: + case Hexagon::J2_jumpfnew: + case Hexagon::J2_jumptnewpt: + case Hexagon::J2_jumpfnewpt: + return true; + } + return false; } diff --git a/llvm/lib/Target/Hexagon/HexagonNewValueJump.cpp b/llvm/lib/Target/Hexagon/HexagonNewValueJump.cpp index 3ffb9cffc6a..6b3f692e0d8 100644 --- a/llvm/lib/Target/Hexagon/HexagonNewValueJump.cpp +++ b/llvm/lib/Target/Hexagon/HexagonNewValueJump.cpp @@ -449,7 +449,9 @@ bool HexagonNewValueJump::runOnMachineFunction(MachineFunction &MF) { DEBUG(dbgs() << "Instr: "; MI.dump(); dbgs() << "\n"); if (!foundJump && (MI.getOpcode() == Hexagon::J2_jumpt || + MI.getOpcode() == Hexagon::J2_jumptpt || MI.getOpcode() == Hexagon::J2_jumpf || + MI.getOpcode() == Hexagon::J2_jumpfpt || MI.getOpcode() == Hexagon::J2_jumptnewpt || MI.getOpcode() == Hexagon::J2_jumptnew || MI.getOpcode() == Hexagon::J2_jumpfnewpt || |

