diff options
author | Djordje Todorovic <djordje.todorovic@rt-rk.com> | 2019-11-08 11:19:58 +0100 |
---|---|---|
committer | Djordje Todorovic <djordje.todorovic@rt-rk.com> | 2019-11-08 13:00:39 +0100 |
commit | 8d2ccd1ac32ca5c96fc17e265fec5e1fc94a0520 (patch) | |
tree | 47d5d4208f93b04b62dbcb6113764d68b1a033ac /llvm/lib/Target/Mips/MipsSEInstrInfo.cpp | |
parent | 5a1bac4d1daee2bcbf13365a8254a26d242d8c46 (diff) | |
download | bcm5719-llvm-8d2ccd1ac32ca5c96fc17e265fec5e1fc94a0520.tar.gz bcm5719-llvm-8d2ccd1ac32ca5c96fc17e265fec5e1fc94a0520.zip |
Reland: [TII] Use optional destination and source pair as a return value; NFC
Refactor usage of isCopyInstrImpl, isCopyInstr and isAddImmediate methods
to return optional machine operand pair of destination and source
registers.
Patch by Nikola Prica
Differential Revision: https://reviews.llvm.org/D69622
Diffstat (limited to 'llvm/lib/Target/Mips/MipsSEInstrInfo.cpp')
-rw-r--r-- | llvm/lib/Target/Mips/MipsSEInstrInfo.cpp | 23 |
1 files changed, 9 insertions, 14 deletions
diff --git a/llvm/lib/Target/Mips/MipsSEInstrInfo.cpp b/llvm/lib/Target/Mips/MipsSEInstrInfo.cpp index 2126a1bda49..30b8e22dd5f 100644 --- a/llvm/lib/Target/Mips/MipsSEInstrInfo.cpp +++ b/llvm/lib/Target/Mips/MipsSEInstrInfo.cpp @@ -221,29 +221,24 @@ static bool isReadOrWriteToDSPReg(const MachineInstr &MI, bool &isWrite) { /// We check for the common case of 'or', as it's MIPS' preferred instruction /// for GPRs but we have to check the operands to ensure that is the case. /// Other move instructions for MIPS are directly identifiable. -bool MipsSEInstrInfo::isCopyInstrImpl(const MachineInstr &MI, - const MachineOperand *&Src, - const MachineOperand *&Dest) const { +Optional<DestSourcePair> +MipsSEInstrInfo::isCopyInstrImpl(const MachineInstr &MI) const { bool isDSPControlWrite = false; // Condition is made to match the creation of WRDSP/RDDSP copy instruction // from copyPhysReg function. if (isReadOrWriteToDSPReg(MI, isDSPControlWrite)) { - if (!MI.getOperand(1).isImm() || MI.getOperand(1).getImm() != (1<<4)) - return false; + if (!MI.getOperand(1).isImm() || MI.getOperand(1).getImm() != (1 << 4)) + return None; else if (isDSPControlWrite) { - Src = &MI.getOperand(0); - Dest = &MI.getOperand(2); + return DestSourcePair{MI.getOperand(2), MI.getOperand(0)}; + } else { - Dest = &MI.getOperand(0); - Src = &MI.getOperand(2); + return DestSourcePair{MI.getOperand(0), MI.getOperand(2)}; } - return true; } else if (MI.isMoveReg() || isORCopyInst(MI)) { - Dest = &MI.getOperand(0); - Src = &MI.getOperand(1); - return true; + return DestSourcePair{MI.getOperand(0), MI.getOperand(1)}; } - return false; + return None; } void MipsSEInstrInfo:: |