summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/IA64/IA64InstrInfo.cpp
diff options
context:
space:
mode:
authorOwen Anderson <resistor@mac.com>2007-12-31 06:32:00 +0000
committerOwen Anderson <resistor@mac.com>2007-12-31 06:32:00 +0000
commit7a73ae9a864b94a03e8200540c541db8c5e59dd7 (patch)
treed367bb9b537b2b378456fd33d351f37b6abf684d /llvm/lib/Target/IA64/IA64InstrInfo.cpp
parent574e7166e07ee64888faf8a60ded7855c56cf0a7 (diff)
downloadbcm5719-llvm-7a73ae9a864b94a03e8200540c541db8c5e59dd7.tar.gz
bcm5719-llvm-7a73ae9a864b94a03e8200540c541db8c5e59dd7.zip
Move copyRegToReg from MRegisterInfo to TargetInstrInfo. This is part of the
Machine-level API cleanup instigated by Chris. llvm-svn: 45470
Diffstat (limited to 'llvm/lib/Target/IA64/IA64InstrInfo.cpp')
-rw-r--r--llvm/lib/Target/IA64/IA64InstrInfo.cpp18
1 files changed, 18 insertions, 0 deletions
diff --git a/llvm/lib/Target/IA64/IA64InstrInfo.cpp b/llvm/lib/Target/IA64/IA64InstrInfo.cpp
index 7f7d895aa0a..ea3336cf16e 100644
--- a/llvm/lib/Target/IA64/IA64InstrInfo.cpp
+++ b/llvm/lib/Target/IA64/IA64InstrInfo.cpp
@@ -56,3 +56,21 @@ IA64InstrInfo::InsertBranch(MachineBasicBlock &MBB,MachineBasicBlock *TBB,
BuildMI(&MBB, get(IA64::BRL_NOTCALL)).addMBB(TBB);
return 1;
}
+
+void IA64InstrInfo::copyRegToReg(MachineBasicBlock &MBB,
+ MachineBasicBlock::iterator MI,
+ unsigned DestReg, unsigned SrcReg,
+ const TargetRegisterClass *DestRC,
+ const TargetRegisterClass *SrcRC) const {
+ if (DestRC != SrcRC) {
+ cerr << "Not yet supported!";
+ abort();
+ }
+
+ if(DestRC == IA64::PRRegisterClass ) // if a bool, we use pseudocode
+ // (SrcReg) DestReg = cmp.eq.unc(r0, r0)
+ BuildMI(MBB, MI, get(IA64::PCMPEQUNC), DestReg)
+ .addReg(IA64::r0).addReg(IA64::r0).addReg(SrcReg);
+ else // otherwise, MOV works (for both gen. regs and FP regs)
+ BuildMI(MBB, MI, get(IA64::MOV), DestReg).addReg(SrcReg);
+}
OpenPOWER on IntegriCloud