Add CopyCost to TargetRegisterClass. This specifies the cost of copying a value
between two registers in the specific class.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42123 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/utils/TableGen/CodeGenRegisters.h b/utils/TableGen/CodeGenRegisters.h
index cee81e9..a5636e3 100644
--- a/utils/TableGen/CodeGenRegisters.h
+++ b/utils/TableGen/CodeGenRegisters.h
@@ -38,6 +38,7 @@
     std::vector<MVT::ValueType> VTs;
     unsigned SpillSize;
     unsigned SpillAlignment;
+    int CopyCost;
     std::vector<Record*> SubRegClasses;
     std::string MethodProtos, MethodBodies;
 
diff --git a/utils/TableGen/CodeGenTarget.cpp b/utils/TableGen/CodeGenTarget.cpp
index 1fee306..c73ffb9 100644
--- a/utils/TableGen/CodeGenTarget.cpp
+++ b/utils/TableGen/CodeGenTarget.cpp
@@ -221,6 +221,7 @@
   Namespace = R->getValueAsString("Namespace");
   SpillSize = Size ? Size : MVT::getSizeInBits(VTs[0]);
   SpillAlignment = R->getValueAsInt("Alignment");
+  CopyCost = R->getValueAsInt("CopyCost");
   MethodBodies = R->getValueAsCode("MethodBodies");
   MethodProtos = R->getValueAsCode("MethodProtos");
 }
diff --git a/utils/TableGen/RegisterInfoEmitter.cpp b/utils/TableGen/RegisterInfoEmitter.cpp
index 06c575d..2f948af 100644
--- a/utils/TableGen/RegisterInfoEmitter.cpp
+++ b/utils/TableGen/RegisterInfoEmitter.cpp
@@ -384,8 +384,10 @@
          << RC.getName() + "SubRegClasses" << ", "
          << RC.getName() + "SuperRegClasses" << ", "
          << RC.SpillSize/8 << ", "
-         << RC.SpillAlignment/8 << ", " << RC.getName() << ", "
-         << RC.getName() << " + " << RC.Elements.size() << ") {}\n";
+         << RC.SpillAlignment/8 << ", "
+         << RC.CopyCost << ", "
+         << RC.getName() << ", " << RC.getName() << " + " << RC.Elements.size()
+         << ") {}\n";
     }
   
     OS << "}\n";