[llvm-commits] CVS: llvm/lib/Target/X86/X86RegisterClasses.cpp

Chris Lattner lattner at cs.uiuc.edu
Sun Dec 15 13:30:07 PST 2002


Changes in directory llvm/lib/Target/X86:

X86RegisterClasses.cpp updated: 1.4 -> 1.5

---
Log message:

Changes to make new TargetRegisterClass interface.


---
Diffs of the changes:

Index: llvm/lib/Target/X86/X86RegisterClasses.cpp
diff -u llvm/lib/Target/X86/X86RegisterClasses.cpp:1.4 llvm/lib/Target/X86/X86RegisterClasses.cpp:1.5
--- llvm/lib/Target/X86/X86RegisterClasses.cpp:1.4	Sun Dec 15 12:40:36 2002
+++ llvm/lib/Target/X86/X86RegisterClasses.cpp	Sun Dec 15 13:29:34 2002
@@ -14,97 +14,68 @@
 };
 
 namespace {
-  static const unsigned X86ByteRegisterClassRegs[] = {
+  const unsigned ByteRegClassRegs[] = {
 #define R(ENUM, NAME, FLAGS, TSFLAGS)
 #define R8(ENUM, NAME, FLAGS, TSFLAGS) ENUM,
 #include "X86RegisterInfo.def"
   };
 
-  struct X86ByteRegisterClass : public TargetRegisterClass {
-    unsigned getNumRegs() const { 
-      return sizeof(X86ByteRegisterClassRegs)/
-        sizeof(X86ByteRegisterClassRegs[0]);
-    }
-    unsigned getRegister(unsigned idx) const { 
-      assert(idx < getNumRegs() && "Index out of bounds!");
-      return X86ByteRegisterClassRegs[idx];
-    }
-
-    unsigned getDataSize() const { return 1; }
-  } X86ByteRegisterClassInstance;
-
+  TargetRegisterClass X86ByteRegisterClassInstance(1, ByteRegClassRegs,
+ ByteRegClassRegs+sizeof(ByteRegClassRegs)/sizeof(ByteRegClassRegs[0]));
 
 //
 //
 //
-  static const unsigned X86ShortRegisterClassRegs[] = {
+  const unsigned ShortRegClassRegs[] = {
 #define R(ENUM, NAME, FLAGS, TSFLAGS)
 #define R16(ENUM, NAME, FLAGS, TSFLAGS) ENUM,
 #include "X86RegisterInfo.def"
   };
 
-  struct X86ShortRegisterClass : public TargetRegisterClass {
-    unsigned getNumRegs() const { 
-      return sizeof(X86ShortRegisterClassRegs)/
-        sizeof(X86ShortRegisterClassRegs[0]); }
-    unsigned getRegister(unsigned idx) const { 
-      assert(idx < getNumRegs() && "Index out of bounds!");
-      return X86ShortRegisterClassRegs[idx];
-    }
-    unsigned getDataSize() const { return 2; }
-  } X86ShortRegisterClassInstance;
+  TargetRegisterClass X86ShortRegisterClassInstance(2, ShortRegClassRegs,
+      ShortRegClassRegs+sizeof(ShortRegClassRegs)/sizeof(ShortRegClassRegs[0]));
 
 //
 //
 //
 
-  static const unsigned X86IntRegisterClassRegs[] = {
+  const unsigned IntRegClassRegs[] = {
 #define R(ENUM, NAME, FLAGS, TSFLAGS)
 #define R32(ENUM, NAME, FLAGS, TSFLAGS) ENUM,
 #include "X86RegisterInfo.def"
   };
 
-  struct X86IntRegisterClass : public TargetRegisterClass {
-    unsigned getNumRegs() const {
-      return sizeof(X86IntRegisterClassRegs)/
-        sizeof(X86IntRegisterClassRegs[0]); }
-    unsigned getRegister(unsigned idx) const { 
-      assert(idx < getNumRegs() && "Index out of bounds!");
-      return X86IntRegisterClassRegs[idx];
-    }
-    unsigned getDataSize() const { return 4; }
-  } X86IntRegisterClassInstance;
-
+  TargetRegisterClass X86IntRegisterClassInstance(4, IntRegClassRegs,
+      IntRegClassRegs+sizeof(IntRegClassRegs)/sizeof(IntRegClassRegs[0]));
 
-  static const TargetRegisterClass *X86RegClasses[] = {
+  const TargetRegisterClass * const X86RegClasses[] = {
     &X86ByteRegisterClassInstance,
     &X86ShortRegisterClassInstance,
     &X86IntRegisterClassInstance
   };
+}
 
-  const TargetRegisterClass* X86RegisterInfo::getRegClassForType(const Type* Ty)
-    const
-  {
-    switch (Ty->getPrimitiveID()) {
-    case Type::BoolTyID:
-    case Type::SByteTyID:
-    case Type::UByteTyID:   return &X86ByteRegisterClassInstance;
-    case Type::ShortTyID:
-    case Type::UShortTyID:  return &X86ShortRegisterClassInstance;
-    case Type::LongTyID:    // None of these are handled yet!
-    case Type::ULongTyID:  // FIXME: Treat these like ints, this is bogus!
-
-    case Type::IntTyID:
-    case Type::UIntTyID:
-    case Type::PointerTyID: return &X86IntRegisterClassInstance;
-
-    case Type::FloatTyID:
-    case Type::DoubleTyID:
-
-    default:
-      assert(0 && "Invalid type to getClass!");
-      return 0;  // not reached
-    }
+const TargetRegisterClass* X86RegisterInfo::getRegClassForType(const Type* Ty)
+  const {
+  switch (Ty->getPrimitiveID()) {
+  case Type::BoolTyID:
+  case Type::SByteTyID:
+  case Type::UByteTyID:   return &X86ByteRegisterClassInstance;
+  case Type::ShortTyID:
+  case Type::UShortTyID:  return &X86ShortRegisterClassInstance;
+  case Type::LongTyID:    // None of these are handled yet!
+  case Type::ULongTyID:  // FIXME: Treat these like ints, this is bogus!
+    
+  case Type::IntTyID:
+  case Type::UIntTyID:
+  case Type::PointerTyID: return &X86IntRegisterClassInstance;
+    
+  case Type::FloatTyID:
+  case Type::DoubleTyID:
+    
+  default:
+    assert(0 && "Invalid type to getClass!");
+    return 0;  // not reached
   }
 }
 





More information about the llvm-commits mailing list