Index: src/ia32/assembler-ia32.h |
diff --git a/src/ia32/assembler-ia32.h b/src/ia32/assembler-ia32.h |
index a46050888a783a11706807ea9969d8b537c3c44a..6b60c12bec842eb9ca0390f9b03d183d0becee30 100644 |
--- a/src/ia32/assembler-ia32.h |
+++ b/src/ia32/assembler-ia32.h |
@@ -141,71 +141,41 @@ inline Register Register::FromAllocationIndex(int index) { |
} |
-struct DoubleRegister { |
- static const int kMaxNumRegisters = 8; |
+struct XMMRegister { |
static const int kMaxNumAllocatableRegisters = 7; |
- static int NumAllocatableRegisters(); |
- static int NumRegisters(); |
- static const char* AllocationIndexToString(int index); |
+ static const int kMaxNumRegisters = 8; |
+ static int NumAllocatableRegisters() { |
+ return kMaxNumAllocatableRegisters; |
+ } |
- static int ToAllocationIndex(DoubleRegister reg) { |
+ static int ToAllocationIndex(XMMRegister reg) { |
ASSERT(reg.code() != 0); |
return reg.code() - 1; |
} |
- static DoubleRegister FromAllocationIndex(int index) { |
- ASSERT(index >= 0 && index < NumAllocatableRegisters()); |
+ static XMMRegister FromAllocationIndex(int index) { |
+ ASSERT(index >= 0 && index < kMaxNumAllocatableRegisters); |
return from_code(index + 1); |
} |
- static DoubleRegister from_code(int code) { |
- DoubleRegister result = { code }; |
+ static XMMRegister from_code(int code) { |
+ XMMRegister result = { code }; |
return result; |
} |
bool is_valid() const { |
- return 0 <= code_ && code_ < NumRegisters(); |
+ return 0 <= code_ && code_ < kMaxNumRegisters; |
} |
+ |
int code() const { |
ASSERT(is_valid()); |
return code_; |
} |
- int code_; |
-}; |
- |
- |
-const DoubleRegister double_register_0 = { 0 }; |
-const DoubleRegister double_register_1 = { 1 }; |
-const DoubleRegister double_register_2 = { 2 }; |
-const DoubleRegister double_register_3 = { 3 }; |
-const DoubleRegister double_register_4 = { 4 }; |
-const DoubleRegister double_register_5 = { 5 }; |
-const DoubleRegister double_register_6 = { 6 }; |
-const DoubleRegister double_register_7 = { 7 }; |
-const DoubleRegister no_double_reg = { -1 }; |
- |
- |
-struct XMMRegister : DoubleRegister { |
- static const int kNumAllocatableRegisters = 7; |
- static const int kNumRegisters = 8; |
- |
- static XMMRegister from_code(int code) { |
- STATIC_ASSERT(sizeof(XMMRegister) == sizeof(DoubleRegister)); |
- XMMRegister result; |
- result.code_ = code; |
- return result; |
- } |
- |
bool is(XMMRegister reg) const { return code_ == reg.code_; } |
- static XMMRegister FromAllocationIndex(int index) { |
- ASSERT(index >= 0 && index < NumAllocatableRegisters()); |
- return from_code(index + 1); |
- } |
- |
static const char* AllocationIndexToString(int index) { |
- ASSERT(index >= 0 && index < kNumAllocatableRegisters); |
+ ASSERT(index >= 0 && index < kMaxNumAllocatableRegisters); |
const char* const names[] = { |
"xmm1", |
"xmm2", |
@@ -217,18 +187,23 @@ struct XMMRegister : DoubleRegister { |
}; |
return names[index]; |
} |
+ |
+ int code_; |
}; |
-#define xmm0 (static_cast<const XMMRegister&>(double_register_0)) |
-#define xmm1 (static_cast<const XMMRegister&>(double_register_1)) |
-#define xmm2 (static_cast<const XMMRegister&>(double_register_2)) |
-#define xmm3 (static_cast<const XMMRegister&>(double_register_3)) |
-#define xmm4 (static_cast<const XMMRegister&>(double_register_4)) |
-#define xmm5 (static_cast<const XMMRegister&>(double_register_5)) |
-#define xmm6 (static_cast<const XMMRegister&>(double_register_6)) |
-#define xmm7 (static_cast<const XMMRegister&>(double_register_7)) |
-#define no_xmm_reg (static_cast<const XMMRegister&>(no_double_reg)) |
+typedef XMMRegister DoubleRegister; |
+ |
+ |
+const XMMRegister xmm0 = { 0 }; |
+const XMMRegister xmm1 = { 1 }; |
+const XMMRegister xmm2 = { 2 }; |
+const XMMRegister xmm3 = { 3 }; |
+const XMMRegister xmm4 = { 4 }; |
+const XMMRegister xmm5 = { 5 }; |
+const XMMRegister xmm6 = { 6 }; |
+const XMMRegister xmm7 = { 7 }; |
+const XMMRegister no_xmm_reg = { -1 }; |
enum Condition { |