[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