Move copyRegToReg from MRegisterInfo to TargetInstrInfo.  This is part of the
Machine-level API cleanup instigated by Chris.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45470 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Target/X86/X86InstrInfo.cpp b/lib/Target/X86/X86InstrInfo.cpp
index 3470baa..76979d8 100644
--- a/lib/Target/X86/X86InstrInfo.cpp
+++ b/lib/Target/X86/X86InstrInfo.cpp
@@ -784,6 +784,74 @@
   return 2;
 }
 
+void X86InstrInfo::copyRegToReg(MachineBasicBlock &MBB,
+                                   MachineBasicBlock::iterator MI,
+                                   unsigned DestReg, unsigned SrcReg,
+                                   const TargetRegisterClass *DestRC,
+                                   const TargetRegisterClass *SrcRC) const {
+  if (DestRC != SrcRC) {
+    // Moving EFLAGS to / from another register requires a push and a pop.
+    if (SrcRC == &X86::CCRRegClass) {
+      assert(SrcReg == X86::EFLAGS);
+      if (DestRC == &X86::GR64RegClass) {
+        BuildMI(MBB, MI, get(X86::PUSHFQ));
+        BuildMI(MBB, MI, get(X86::POP64r), DestReg);
+        return;
+      } else if (DestRC == &X86::GR32RegClass) {
+        BuildMI(MBB, MI, get(X86::PUSHFD));
+        BuildMI(MBB, MI, get(X86::POP32r), DestReg);
+        return;
+      }
+    } else if (DestRC == &X86::CCRRegClass) {
+      assert(DestReg == X86::EFLAGS);
+      if (SrcRC == &X86::GR64RegClass) {
+        BuildMI(MBB, MI, get(X86::PUSH64r)).addReg(SrcReg);
+        BuildMI(MBB, MI, get(X86::POPFQ));
+        return;
+      } else if (SrcRC == &X86::GR32RegClass) {
+        BuildMI(MBB, MI, get(X86::PUSH32r)).addReg(SrcReg);
+        BuildMI(MBB, MI, get(X86::POPFD));
+        return;
+      }
+    }
+    cerr << "Not yet supported!";
+    abort();
+  }
+
+  unsigned Opc;
+  if (DestRC == &X86::GR64RegClass) {
+    Opc = X86::MOV64rr;
+  } else if (DestRC == &X86::GR32RegClass) {
+    Opc = X86::MOV32rr;
+  } else if (DestRC == &X86::GR16RegClass) {
+    Opc = X86::MOV16rr;
+  } else if (DestRC == &X86::GR8RegClass) {
+    Opc = X86::MOV8rr;
+  } else if (DestRC == &X86::GR32_RegClass) {
+    Opc = X86::MOV32_rr;
+  } else if (DestRC == &X86::GR16_RegClass) {
+    Opc = X86::MOV16_rr;
+  } else if (DestRC == &X86::RFP32RegClass) {
+    Opc = X86::MOV_Fp3232;
+  } else if (DestRC == &X86::RFP64RegClass || DestRC == &X86::RSTRegClass) {
+    Opc = X86::MOV_Fp6464;
+  } else if (DestRC == &X86::RFP80RegClass) {
+    Opc = X86::MOV_Fp8080;
+  } else if (DestRC == &X86::FR32RegClass) {
+    Opc = X86::FsMOVAPSrr;
+  } else if (DestRC == &X86::FR64RegClass) {
+    Opc = X86::FsMOVAPDrr;
+  } else if (DestRC == &X86::VR128RegClass) {
+    Opc = X86::MOVAPSrr;
+  } else if (DestRC == &X86::VR64RegClass) {
+    Opc = X86::MMX_MOVQ64rr;
+  } else {
+    assert(0 && "Unknown regclass");
+    abort();
+  }
+  BuildMI(MBB, MI, get(Opc), DestReg).addReg(SrcReg);
+}
+
 bool X86InstrInfo::BlockHasNoFallThrough(MachineBasicBlock &MBB) const {
   if (MBB.empty()) return false;
   
diff --git a/lib/Target/X86/X86InstrInfo.h b/lib/Target/X86/X86InstrInfo.h
index 589edac..88df882 100644
--- a/lib/Target/X86/X86InstrInfo.h
+++ b/lib/Target/X86/X86InstrInfo.h
@@ -279,6 +279,11 @@
   virtual unsigned InsertBranch(MachineBasicBlock &MBB, MachineBasicBlock *TBB,
                                 MachineBasicBlock *FBB,
                                 const std::vector<MachineOperand> &Cond) const;
+  virtual void copyRegToReg(MachineBasicBlock &MBB,
+                            MachineBasicBlock::iterator MI,
+                            unsigned DestReg, unsigned SrcReg,
+                            const TargetRegisterClass *DestRC,
+                            const TargetRegisterClass *SrcRC) const;
   virtual bool BlockHasNoFallThrough(MachineBasicBlock &MBB) const;
   virtual bool ReverseBranchCondition(std::vector<MachineOperand> &Cond) const;
 
diff --git a/lib/Target/X86/X86RegisterInfo.cpp b/lib/Target/X86/X86RegisterInfo.cpp
index 788bcc6..b320366 100644
--- a/lib/Target/X86/X86RegisterInfo.cpp
+++ b/lib/Target/X86/X86RegisterInfo.cpp
@@ -916,74 +916,6 @@
   NewMIs.push_back(MIB);
 }
 
-void X86RegisterInfo::copyRegToReg(MachineBasicBlock &MBB,
-                                   MachineBasicBlock::iterator MI,
-                                   unsigned DestReg, unsigned SrcReg,
-                                   const TargetRegisterClass *DestRC,
-                                   const TargetRegisterClass *SrcRC) const {
-  if (DestRC != SrcRC) {
-    // Moving EFLAGS to / from another register requires a push and a pop.
-    if (SrcRC == &X86::CCRRegClass) {
-      assert(SrcReg == X86::EFLAGS);
-      if (DestRC == &X86::GR64RegClass) {
-        BuildMI(MBB, MI, TII.get(X86::PUSHFQ));
-        BuildMI(MBB, MI, TII.get(X86::POP64r), DestReg);
-        return;
-      } else if (DestRC == &X86::GR32RegClass) {
-        BuildMI(MBB, MI, TII.get(X86::PUSHFD));
-        BuildMI(MBB, MI, TII.get(X86::POP32r), DestReg);
-        return;
-      }
-    } else if (DestRC == &X86::CCRRegClass) {
-      assert(DestReg == X86::EFLAGS);
-      if (SrcRC == &X86::GR64RegClass) {
-        BuildMI(MBB, MI, TII.get(X86::PUSH64r)).addReg(SrcReg);
-        BuildMI(MBB, MI, TII.get(X86::POPFQ));
-        return;
-      } else if (SrcRC == &X86::GR32RegClass) {
-        BuildMI(MBB, MI, TII.get(X86::PUSH32r)).addReg(SrcReg);
-        BuildMI(MBB, MI, TII.get(X86::POPFD));
-        return;
-      }
-    }
-    cerr << "Not yet supported!";
-    abort();
-  }
-
-  unsigned Opc;
-  if (DestRC == &X86::GR64RegClass) {
-    Opc = X86::MOV64rr;
-  } else if (DestRC == &X86::GR32RegClass) {
-    Opc = X86::MOV32rr;
-  } else if (DestRC == &X86::GR16RegClass) {
-    Opc = X86::MOV16rr;
-  } else if (DestRC == &X86::GR8RegClass) {
-    Opc = X86::MOV8rr;
-  } else if (DestRC == &X86::GR32_RegClass) {
-    Opc = X86::MOV32_rr;
-  } else if (DestRC == &X86::GR16_RegClass) {
-    Opc = X86::MOV16_rr;
-  } else if (DestRC == &X86::RFP32RegClass) {
-    Opc = X86::MOV_Fp3232;
-  } else if (DestRC == &X86::RFP64RegClass || DestRC == &X86::RSTRegClass) {
-    Opc = X86::MOV_Fp6464;
-  } else if (DestRC == &X86::RFP80RegClass) {
-    Opc = X86::MOV_Fp8080;
-  } else if (DestRC == &X86::FR32RegClass) {
-    Opc = X86::FsMOVAPSrr;
-  } else if (DestRC == &X86::FR64RegClass) {
-    Opc = X86::FsMOVAPDrr;
-  } else if (DestRC == &X86::VR128RegClass) {
-    Opc = X86::MOVAPSrr;
-  } else if (DestRC == &X86::VR64RegClass) {
-    Opc = X86::MMX_MOVQ64rr;
-  } else {
-    assert(0 && "Unknown regclass");
-    abort();
-  }
-  BuildMI(MBB, MI, TII.get(Opc), DestReg).addReg(SrcReg);
-}
-
 const TargetRegisterClass *
 X86RegisterInfo::getCrossCopyRegClass(const TargetRegisterClass *RC) const {
   if (RC == &X86::CCRRegClass)