diff options
Diffstat (limited to 'llvm/lib/Target/Sparc')
| -rw-r--r-- | llvm/lib/Target/Sparc/SparcInternals.h | 3 | ||||
| -rw-r--r-- | llvm/lib/Target/Sparc/SparcRegInfo.cpp | 12 |
2 files changed, 15 insertions, 0 deletions
diff --git a/llvm/lib/Target/Sparc/SparcInternals.h b/llvm/lib/Target/Sparc/SparcInternals.h index 653a2018a77..72b234f72cb 100644 --- a/llvm/lib/Target/Sparc/SparcInternals.h +++ b/llvm/lib/Target/Sparc/SparcInternals.h @@ -401,6 +401,9 @@ class UltraSparcRegInfo : public MachineRegInfo MachineInstr * cpMem2RegMI(const unsigned SrcPtrReg, const int Offset, const unsigned DestReg, const int RegType) const; + MachineInstr* cpValue2Value(Value *Src, Value *Dest) const; + + inline bool isRegVolatile(const int RegClassID, const int Reg) const { return (MachineRegClassArr[RegClassID])->isRegVolatile(Reg); } diff --git a/llvm/lib/Target/Sparc/SparcRegInfo.cpp b/llvm/lib/Target/Sparc/SparcRegInfo.cpp index 11180f5995b..a34a5305ae7 100644 --- a/llvm/lib/Target/Sparc/SparcRegInfo.cpp +++ b/llvm/lib/Target/Sparc/SparcRegInfo.cpp @@ -979,7 +979,19 @@ MachineInstr * UltraSparcRegInfo::cpMem2RegMI(const unsigned SrcPtrReg, } +MachineInstr* UltraSparcRegInfo::cpValue2Value(Value *Src, Value *Dest) const { + MachineInstr * MI = NULL; + + MI = new MachineInstr(ADD, 3); + MI->SetMachineOperand(0, MachineOperand:: MO_VirtualRegister, Src, false); + MI->SetMachineOperand(1, SparcIntRegOrder::g0, false); + MI->SetMachineOperand(2, MachineOperand:: MO_VirtualRegister, Dest, true); + + + return MI; + +} |

