diff options
Diffstat (limited to 'llvm/lib/Target/SystemZ/SystemZShortenInst.cpp')
-rw-r--r-- | llvm/lib/Target/SystemZ/SystemZShortenInst.cpp | 38 |
1 files changed, 8 insertions, 30 deletions
diff --git a/llvm/lib/Target/SystemZ/SystemZShortenInst.cpp b/llvm/lib/Target/SystemZ/SystemZShortenInst.cpp index 2aca22c9082a..f6184cec795a 100644 --- a/llvm/lib/Target/SystemZ/SystemZShortenInst.cpp +++ b/llvm/lib/Target/SystemZ/SystemZShortenInst.cpp @@ -46,7 +46,6 @@ private: bool shortenOn001(MachineInstr &MI, unsigned Opcode); bool shortenOn001AddCC(MachineInstr &MI, unsigned Opcode); bool shortenFPConv(MachineInstr &MI, unsigned Opcode); - bool shortenSelect(MachineInstr &MI, unsigned Opcode); const SystemZInstrInfo *TII; const TargetRegisterInfo *TRI; @@ -176,23 +175,6 @@ bool SystemZShortenInst::shortenFPConv(MachineInstr &MI, unsigned Opcode) { return false; } -// MI is a three-operand select instruction. If one of the sources match -// the destination, convert to the equivalent load-on-condition. -bool SystemZShortenInst::shortenSelect(MachineInstr &MI, unsigned Opcode) { - if (MI.getOperand(0).getReg() == MI.getOperand(1).getReg()) { - MI.setDesc(TII->get(Opcode)); - MI.tieOperands(0, 1); - return true; - } - if (MI.getOperand(0).getReg() == MI.getOperand(2).getReg()) { - TII->commuteInstruction(MI, false, 1, 2); - MI.setDesc(TII->get(Opcode)); - MI.tieOperands(0, 1); - return true; - } - return false; -} - // Process all instructions in MBB. Return true if something changed. bool SystemZShortenInst::processBlock(MachineBasicBlock &MBB) { bool Changed = false; @@ -213,18 +195,6 @@ bool SystemZShortenInst::processBlock(MachineBasicBlock &MBB) { Changed |= shortenIIF(MI, SystemZ::LLIHL, SystemZ::LLIHH); break; - case SystemZ::SELR: - Changed |= shortenSelect(MI, SystemZ::LOCR); - break; - - case SystemZ::SELFHR: - Changed |= shortenSelect(MI, SystemZ::LOCFHR); - break; - - case SystemZ::SELGR: - Changed |= shortenSelect(MI, SystemZ::LOCGR); - break; - case SystemZ::WFADB: Changed |= shortenOn001AddCC(MI, SystemZ::ADBR); break; @@ -313,6 +283,14 @@ bool SystemZShortenInst::processBlock(MachineBasicBlock &MBB) { Changed |= shortenOn01(MI, SystemZ::CEBR); break; + case SystemZ::WFKDB: + Changed |= shortenOn01(MI, SystemZ::KDBR); + break; + + case SystemZ::WFKSB: + Changed |= shortenOn01(MI, SystemZ::KEBR); + break; + case SystemZ::VL32: // For z13 we prefer LDE over LE to avoid partial register dependencies. Changed |= shortenOn0(MI, SystemZ::LDE32); |