Chromium Code Reviews| Index: src/ia32/assembler-ia32.h |
| diff --git a/src/ia32/assembler-ia32.h b/src/ia32/assembler-ia32.h |
| index 3033db936b32ed7540ad35cca7c40185c6ffa1c3..f4968968caa1569814b61f95c570fc6b3d7fb185 100644 |
| --- a/src/ia32/assembler-ia32.h |
| +++ b/src/ia32/assembler-ia32.h |
| @@ -141,25 +141,25 @@ inline Register Register::FromAllocationIndex(int index) { |
| } |
| -struct IntelDoubleRegister { |
| +struct DoubleRegister { |
| static const int kMaxNumRegisters = 8; |
| static const int kMaxNumAllocatableRegisters = 7; |
| static int NumAllocatableRegisters(); |
| static int NumRegisters(); |
| static const char* AllocationIndexToString(int index); |
| - static int ToAllocationIndex(IntelDoubleRegister reg) { |
| + static int ToAllocationIndex(DoubleRegister reg) { |
| ASSERT(reg.code() != 0); |
| return reg.code() - 1; |
| } |
| - static IntelDoubleRegister FromAllocationIndex(int index) { |
| + static DoubleRegister FromAllocationIndex(int index) { |
| ASSERT(index >= 0 && index < NumAllocatableRegisters()); |
| return from_code(index + 1); |
| } |
| - static IntelDoubleRegister from_code(int code) { |
| - IntelDoubleRegister result = { code }; |
| + static DoubleRegister from_code(int code) { |
| + DoubleRegister result = { code }; |
| return result; |
| } |
| @@ -175,23 +175,23 @@ struct IntelDoubleRegister { |
| }; |
| -const IntelDoubleRegister double_register_0 = { 0 }; |
| -const IntelDoubleRegister double_register_1 = { 1 }; |
| -const IntelDoubleRegister double_register_2 = { 2 }; |
| -const IntelDoubleRegister double_register_3 = { 3 }; |
| -const IntelDoubleRegister double_register_4 = { 4 }; |
| -const IntelDoubleRegister double_register_5 = { 5 }; |
| -const IntelDoubleRegister double_register_6 = { 6 }; |
| -const IntelDoubleRegister double_register_7 = { 7 }; |
| -const IntelDoubleRegister no_double_reg = { -1 }; |
| +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 : IntelDoubleRegister { |
| +struct XMMRegister : DoubleRegister { |
|
Jakob Kummerow
2014/05/08 10:55:03
I think you can combine these two classes as well.
Sven Panne
2014/05/08 12:13:07
This is what I actually meant with my initial comm
|
| static const int kNumAllocatableRegisters = 7; |
| static const int kNumRegisters = 8; |
| static XMMRegister from_code(int code) { |
| - STATIC_ASSERT(sizeof(XMMRegister) == sizeof(IntelDoubleRegister)); |
| + STATIC_ASSERT(sizeof(XMMRegister) == sizeof(DoubleRegister)); |
| XMMRegister result; |
| result.code_ = code; |
| return result; |
| @@ -231,45 +231,6 @@ struct XMMRegister : IntelDoubleRegister { |
| #define no_xmm_reg (static_cast<const XMMRegister&>(no_double_reg)) |
| -struct X87Register : IntelDoubleRegister { |
| - static const int kNumAllocatableRegisters = 5; |
| - static const int kNumRegisters = 5; |
| - |
| - bool is(X87Register reg) const { |
| - return code_ == reg.code_; |
| - } |
| - |
| - static const char* AllocationIndexToString(int index) { |
| - ASSERT(index >= 0 && index < kNumAllocatableRegisters); |
| - const char* const names[] = { |
| - "stX_0", "stX_1", "stX_2", "stX_3", "stX_4" |
| - }; |
| - return names[index]; |
| - } |
| - |
| - static X87Register FromAllocationIndex(int index) { |
| - STATIC_ASSERT(sizeof(X87Register) == sizeof(IntelDoubleRegister)); |
| - ASSERT(index >= 0 && index < NumAllocatableRegisters()); |
| - X87Register result; |
| - result.code_ = index; |
| - return result; |
| - } |
| - |
| - static int ToAllocationIndex(X87Register reg) { |
| - return reg.code_; |
| - } |
| -}; |
| - |
| -#define stX_0 static_cast<const X87Register&>(double_register_0) |
| -#define stX_1 static_cast<const X87Register&>(double_register_1) |
| -#define stX_2 static_cast<const X87Register&>(double_register_2) |
| -#define stX_3 static_cast<const X87Register&>(double_register_3) |
| -#define stX_4 static_cast<const X87Register&>(double_register_4) |
| - |
| - |
| -typedef IntelDoubleRegister DoubleRegister; |
| - |
| - |
| enum Condition { |
| // any value < 0 is considered no_condition |
| no_condition = -1, |
| @@ -520,11 +481,11 @@ class Displacement BASE_EMBEDDED { |
| // CpuFeatures keeps track of which features are supported by the target CPU. |
| // Supported features must be enabled by a CpuFeatureScope before use. |
| // Example: |
| -// if (assembler->IsSupported(SSE2)) { |
| -// CpuFeatureScope fscope(assembler, SSE2); |
| -// // Generate SSE2 floating point code. |
| +// if (assembler->IsSupported(CMOV)) { |
| +// CpuFeatureScope fscope(assembler, CMOV); |
| +// // Generate code containing cmov. |
| // } else { |
| -// // Generate standard x87 floating point code. |
| +// // Generate alternative code. |
| // } |
| class CpuFeatures : public AllStatic { |
| public: |
| @@ -536,7 +497,6 @@ class CpuFeatures : public AllStatic { |
| static bool IsSupported(CpuFeature f) { |
| ASSERT(initialized_); |
| if (Check(f, cross_compile_)) return true; |
| - if (f == SSE2 && !FLAG_enable_sse2) return false; |
| if (f == SSE3 && !FLAG_enable_sse3) return false; |
| if (f == SSE4_1 && !FLAG_enable_sse4_1) return false; |
| if (f == CMOV && !FLAG_enable_cmov) return false; |
| @@ -560,7 +520,7 @@ class CpuFeatures : public AllStatic { |
| (cross_compile_ & mask) == mask; |
| } |
| - static bool SupportsCrankshaft() { return IsSupported(SSE2); } |
| + static bool SupportsCrankshaft() { return true; } |
| private: |
| static bool Check(CpuFeature f, uint64_t set) { |