diff options
| author | Dimitry Andric <dim@FreeBSD.org> | 2017-06-26 20:32:52 +0000 | 
|---|---|---|
| committer | Dimitry Andric <dim@FreeBSD.org> | 2017-06-26 20:32:52 +0000 | 
| commit | 08bbd35a80bf7765fe0d3043f9eb5a2f2786b649 (patch) | |
| tree | 80108f0f128657f8623f8f66ad9735b4d88e7b47 /lib/CodeGen/GlobalISel/Utils.cpp | |
| parent | 7c7aba6e5fef47a01a136be655b0a92cfd7090f6 (diff) | |
Notes
Diffstat (limited to 'lib/CodeGen/GlobalISel/Utils.cpp')
| -rw-r--r-- | lib/CodeGen/GlobalISel/Utils.cpp | 28 | 
1 files changed, 18 insertions, 10 deletions
| diff --git a/lib/CodeGen/GlobalISel/Utils.cpp b/lib/CodeGen/GlobalISel/Utils.cpp index 254bdf10d804..5ecaf5c563f8 100644 --- a/lib/CodeGen/GlobalISel/Utils.cpp +++ b/lib/CodeGen/GlobalISel/Utils.cpp @@ -26,6 +26,23 @@  using namespace llvm; +unsigned llvm::constrainRegToClass(MachineRegisterInfo &MRI, +                                   const TargetInstrInfo &TII, +                                   const RegisterBankInfo &RBI, +                                   MachineInstr &InsertPt, unsigned Reg, +                                   const TargetRegisterClass &RegClass) { +  if (!RBI.constrainGenericRegister(Reg, RegClass, MRI)) { +    unsigned NewReg = MRI.createVirtualRegister(&RegClass); +    BuildMI(*InsertPt.getParent(), InsertPt, InsertPt.getDebugLoc(), +            TII.get(TargetOpcode::COPY), NewReg) +        .addReg(Reg); +    return NewReg; +  } + +  return Reg; +} + +  unsigned llvm::constrainOperandRegClass(      const MachineFunction &MF, const TargetRegisterInfo &TRI,      MachineRegisterInfo &MRI, const TargetInstrInfo &TII, @@ -36,16 +53,7 @@ unsigned llvm::constrainOperandRegClass(           "PhysReg not implemented");    const TargetRegisterClass *RegClass = TII.getRegClass(II, OpIdx, &TRI, MF); - -  if (!RBI.constrainGenericRegister(Reg, *RegClass, MRI)) { -    unsigned NewReg = MRI.createVirtualRegister(RegClass); -    BuildMI(*InsertPt.getParent(), InsertPt, InsertPt.getDebugLoc(), -            TII.get(TargetOpcode::COPY), NewReg) -        .addReg(Reg); -    return NewReg; -  } - -  return Reg; +  return constrainRegToClass(MRI, TII, RBI, InsertPt, Reg, *RegClass);  }  bool llvm::isTriviallyDead(const MachineInstr &MI, | 
