Index: src/ia32/assembler-ia32.cc |
diff --git a/src/ia32/assembler-ia32.cc b/src/ia32/assembler-ia32.cc |
index 7a88e70827271bf97de9c88c90ea3e09f560b892..58ccb1ce9545044df92c94e6de279127b2ed05f1 100644 |
--- a/src/ia32/assembler-ia32.cc |
+++ b/src/ia32/assembler-ia32.cc |
@@ -62,30 +62,18 @@ ExternalReference ExternalReference::cpu_features() { |
} |
-int IntelDoubleRegister::NumAllocatableRegisters() { |
- if (CpuFeatures::IsSupported(SSE2)) { |
- return XMMRegister::kNumAllocatableRegisters; |
- } else { |
- return X87Register::kNumAllocatableRegisters; |
- } |
+int DoubleRegister::NumAllocatableRegisters() { |
+ return XMMRegister::kNumAllocatableRegisters; |
} |
-int IntelDoubleRegister::NumRegisters() { |
- if (CpuFeatures::IsSupported(SSE2)) { |
- return XMMRegister::kNumRegisters; |
- } else { |
- return X87Register::kNumRegisters; |
- } |
+int DoubleRegister::NumRegisters() { |
+ return XMMRegister::kNumRegisters; |
} |
-const char* IntelDoubleRegister::AllocationIndexToString(int index) { |
- if (CpuFeatures::IsSupported(SSE2)) { |
- return XMMRegister::AllocationIndexToString(index); |
- } else { |
- return X87Register::AllocationIndexToString(index); |
- } |
+const char* DoubleRegister::AllocationIndexToString(int index) { |
+ return XMMRegister::AllocationIndexToString(index); |
} |
@@ -108,9 +96,9 @@ void CpuFeatures::Probe(bool serializer_enabled) { |
if (cpu.has_sse3()) { |
probed_features |= static_cast<uint64_t>(1) << SSE3; |
} |
- if (cpu.has_sse2()) { |
- probed_features |= static_cast<uint64_t>(1) << SSE2; |
- } |
+ |
+ CHECK(cpu.has_sse2()); // SSE2 support is mandatory. |
+ |
if (cpu.has_cmov()) { |
probed_features |= static_cast<uint64_t>(1) << CMOV; |
} |
@@ -349,15 +337,6 @@ bool Assembler::IsNop(Address addr) { |
void Assembler::Nop(int bytes) { |
EnsureSpace ensure_space(this); |
- if (!CpuFeatures::IsSupported(SSE2)) { |
- // Older CPUs that do not support SSE2 may not support multibyte NOP |
- // instructions. |
- for (; bytes > 0; bytes--) { |
- EMIT(0x90); |
- } |
- return; |
- } |
- |
// Multi byte nops from http://support.amd.com/us/Processor_TechDocs/40546.pdf |
while (bytes > 0) { |
switch (bytes) { |
@@ -1951,7 +1930,6 @@ void Assembler::setcc(Condition cc, Register reg) { |
void Assembler::cvttss2si(Register dst, const Operand& src) { |
- ASSERT(IsEnabled(SSE2)); |
EnsureSpace ensure_space(this); |
EMIT(0xF3); |
EMIT(0x0F); |
@@ -1961,7 +1939,6 @@ void Assembler::cvttss2si(Register dst, const Operand& src) { |
void Assembler::cvttsd2si(Register dst, const Operand& src) { |
- ASSERT(IsEnabled(SSE2)); |
EnsureSpace ensure_space(this); |
EMIT(0xF2); |
EMIT(0x0F); |
@@ -1971,7 +1948,6 @@ void Assembler::cvttsd2si(Register dst, const Operand& src) { |
void Assembler::cvtsd2si(Register dst, XMMRegister src) { |
- ASSERT(IsEnabled(SSE2)); |
EnsureSpace ensure_space(this); |
EMIT(0xF2); |
EMIT(0x0F); |
@@ -1981,7 +1957,6 @@ void Assembler::cvtsd2si(Register dst, XMMRegister src) { |
void Assembler::cvtsi2sd(XMMRegister dst, const Operand& src) { |
- ASSERT(IsEnabled(SSE2)); |
EnsureSpace ensure_space(this); |
EMIT(0xF2); |
EMIT(0x0F); |
@@ -1991,7 +1966,6 @@ void Assembler::cvtsi2sd(XMMRegister dst, const Operand& src) { |
void Assembler::cvtss2sd(XMMRegister dst, XMMRegister src) { |
- ASSERT(IsEnabled(SSE2)); |
EnsureSpace ensure_space(this); |
EMIT(0xF3); |
EMIT(0x0F); |
@@ -2001,7 +1975,6 @@ void Assembler::cvtss2sd(XMMRegister dst, XMMRegister src) { |
void Assembler::cvtsd2ss(XMMRegister dst, XMMRegister src) { |
- ASSERT(IsEnabled(SSE2)); |
EnsureSpace ensure_space(this); |
EMIT(0xF2); |
EMIT(0x0F); |
@@ -2011,7 +1984,6 @@ void Assembler::cvtsd2ss(XMMRegister dst, XMMRegister src) { |
void Assembler::addsd(XMMRegister dst, XMMRegister src) { |
- ASSERT(IsEnabled(SSE2)); |
EnsureSpace ensure_space(this); |
EMIT(0xF2); |
EMIT(0x0F); |
@@ -2021,7 +1993,6 @@ void Assembler::addsd(XMMRegister dst, XMMRegister src) { |
void Assembler::addsd(XMMRegister dst, const Operand& src) { |
- ASSERT(IsEnabled(SSE2)); |
EnsureSpace ensure_space(this); |
EMIT(0xF2); |
EMIT(0x0F); |
@@ -2031,7 +2002,6 @@ void Assembler::addsd(XMMRegister dst, const Operand& src) { |
void Assembler::mulsd(XMMRegister dst, XMMRegister src) { |
- ASSERT(IsEnabled(SSE2)); |
EnsureSpace ensure_space(this); |
EMIT(0xF2); |
EMIT(0x0F); |
@@ -2041,7 +2011,6 @@ void Assembler::mulsd(XMMRegister dst, XMMRegister src) { |
void Assembler::mulsd(XMMRegister dst, const Operand& src) { |
- ASSERT(IsEnabled(SSE2)); |
EnsureSpace ensure_space(this); |
EMIT(0xF2); |
EMIT(0x0F); |
@@ -2051,7 +2020,6 @@ void Assembler::mulsd(XMMRegister dst, const Operand& src) { |
void Assembler::subsd(XMMRegister dst, XMMRegister src) { |
- ASSERT(IsEnabled(SSE2)); |
EnsureSpace ensure_space(this); |
EMIT(0xF2); |
EMIT(0x0F); |
@@ -2061,7 +2029,6 @@ void Assembler::subsd(XMMRegister dst, XMMRegister src) { |
void Assembler::divsd(XMMRegister dst, XMMRegister src) { |
- ASSERT(IsEnabled(SSE2)); |
EnsureSpace ensure_space(this); |
EMIT(0xF2); |
EMIT(0x0F); |
@@ -2071,7 +2038,6 @@ void Assembler::divsd(XMMRegister dst, XMMRegister src) { |
void Assembler::xorpd(XMMRegister dst, XMMRegister src) { |
- ASSERT(IsEnabled(SSE2)); |
EnsureSpace ensure_space(this); |
EMIT(0x66); |
EMIT(0x0F); |
@@ -2081,7 +2047,6 @@ void Assembler::xorpd(XMMRegister dst, XMMRegister src) { |
void Assembler::andps(XMMRegister dst, const Operand& src) { |
- ASSERT(IsEnabled(SSE2)); |
EnsureSpace ensure_space(this); |
EMIT(0x0F); |
EMIT(0x54); |
@@ -2090,7 +2055,6 @@ void Assembler::andps(XMMRegister dst, const Operand& src) { |
void Assembler::orps(XMMRegister dst, const Operand& src) { |
- ASSERT(IsEnabled(SSE2)); |
EnsureSpace ensure_space(this); |
EMIT(0x0F); |
EMIT(0x56); |
@@ -2099,7 +2063,6 @@ void Assembler::orps(XMMRegister dst, const Operand& src) { |
void Assembler::xorps(XMMRegister dst, const Operand& src) { |
- ASSERT(IsEnabled(SSE2)); |
EnsureSpace ensure_space(this); |
EMIT(0x0F); |
EMIT(0x57); |
@@ -2108,7 +2071,6 @@ void Assembler::xorps(XMMRegister dst, const Operand& src) { |
void Assembler::addps(XMMRegister dst, const Operand& src) { |
- ASSERT(IsEnabled(SSE2)); |
EnsureSpace ensure_space(this); |
EMIT(0x0F); |
EMIT(0x58); |
@@ -2117,7 +2079,6 @@ void Assembler::addps(XMMRegister dst, const Operand& src) { |
void Assembler::subps(XMMRegister dst, const Operand& src) { |
- ASSERT(IsEnabled(SSE2)); |
EnsureSpace ensure_space(this); |
EMIT(0x0F); |
EMIT(0x5C); |
@@ -2126,7 +2087,6 @@ void Assembler::subps(XMMRegister dst, const Operand& src) { |
void Assembler::mulps(XMMRegister dst, const Operand& src) { |
- ASSERT(IsEnabled(SSE2)); |
EnsureSpace ensure_space(this); |
EMIT(0x0F); |
EMIT(0x59); |
@@ -2135,7 +2095,6 @@ void Assembler::mulps(XMMRegister dst, const Operand& src) { |
void Assembler::divps(XMMRegister dst, const Operand& src) { |
- ASSERT(IsEnabled(SSE2)); |
EnsureSpace ensure_space(this); |
EMIT(0x0F); |
EMIT(0x5E); |
@@ -2144,7 +2103,6 @@ void Assembler::divps(XMMRegister dst, const Operand& src) { |
void Assembler::sqrtsd(XMMRegister dst, XMMRegister src) { |
- ASSERT(IsEnabled(SSE2)); |
EnsureSpace ensure_space(this); |
EMIT(0xF2); |
EMIT(0x0F); |
@@ -2154,7 +2112,6 @@ void Assembler::sqrtsd(XMMRegister dst, XMMRegister src) { |
void Assembler::andpd(XMMRegister dst, XMMRegister src) { |
- ASSERT(IsEnabled(SSE2)); |
EnsureSpace ensure_space(this); |
EMIT(0x66); |
EMIT(0x0F); |
@@ -2164,7 +2121,6 @@ void Assembler::andpd(XMMRegister dst, XMMRegister src) { |
void Assembler::orpd(XMMRegister dst, XMMRegister src) { |
- ASSERT(IsEnabled(SSE2)); |
EnsureSpace ensure_space(this); |
EMIT(0x66); |
EMIT(0x0F); |
@@ -2174,7 +2130,6 @@ void Assembler::orpd(XMMRegister dst, XMMRegister src) { |
void Assembler::ucomisd(XMMRegister dst, const Operand& src) { |
- ASSERT(IsEnabled(SSE2)); |
EnsureSpace ensure_space(this); |
EMIT(0x66); |
EMIT(0x0F); |
@@ -2197,7 +2152,6 @@ void Assembler::roundsd(XMMRegister dst, XMMRegister src, RoundingMode mode) { |
void Assembler::movmskpd(Register dst, XMMRegister src) { |
- ASSERT(IsEnabled(SSE2)); |
EnsureSpace ensure_space(this); |
EMIT(0x66); |
EMIT(0x0F); |
@@ -2207,7 +2161,6 @@ void Assembler::movmskpd(Register dst, XMMRegister src) { |
void Assembler::movmskps(Register dst, XMMRegister src) { |
- ASSERT(IsEnabled(SSE2)); |
EnsureSpace ensure_space(this); |
EMIT(0x0F); |
EMIT(0x50); |
@@ -2216,7 +2169,6 @@ void Assembler::movmskps(Register dst, XMMRegister src) { |
void Assembler::pcmpeqd(XMMRegister dst, XMMRegister src) { |
- ASSERT(IsEnabled(SSE2)); |
EnsureSpace ensure_space(this); |
EMIT(0x66); |
EMIT(0x0F); |
@@ -2226,7 +2178,6 @@ void Assembler::pcmpeqd(XMMRegister dst, XMMRegister src) { |
void Assembler::cmpltsd(XMMRegister dst, XMMRegister src) { |
- ASSERT(IsEnabled(SSE2)); |
EnsureSpace ensure_space(this); |
EMIT(0xF2); |
EMIT(0x0F); |
@@ -2237,7 +2188,6 @@ void Assembler::cmpltsd(XMMRegister dst, XMMRegister src) { |
void Assembler::movaps(XMMRegister dst, XMMRegister src) { |
- ASSERT(IsEnabled(SSE2)); |
EnsureSpace ensure_space(this); |
EMIT(0x0F); |
EMIT(0x28); |
@@ -2246,7 +2196,6 @@ void Assembler::movaps(XMMRegister dst, XMMRegister src) { |
void Assembler::shufps(XMMRegister dst, XMMRegister src, byte imm8) { |
- ASSERT(IsEnabled(SSE2)); |
ASSERT(is_uint8(imm8)); |
EnsureSpace ensure_space(this); |
EMIT(0x0F); |
@@ -2257,7 +2206,6 @@ void Assembler::shufps(XMMRegister dst, XMMRegister src, byte imm8) { |
void Assembler::movdqa(const Operand& dst, XMMRegister src) { |
- ASSERT(IsEnabled(SSE2)); |
EnsureSpace ensure_space(this); |
EMIT(0x66); |
EMIT(0x0F); |
@@ -2267,7 +2215,6 @@ void Assembler::movdqa(const Operand& dst, XMMRegister src) { |
void Assembler::movdqa(XMMRegister dst, const Operand& src) { |
- ASSERT(IsEnabled(SSE2)); |
EnsureSpace ensure_space(this); |
EMIT(0x66); |
EMIT(0x0F); |
@@ -2277,7 +2224,6 @@ void Assembler::movdqa(XMMRegister dst, const Operand& src) { |
void Assembler::movdqu(const Operand& dst, XMMRegister src ) { |
- ASSERT(IsEnabled(SSE2)); |
EnsureSpace ensure_space(this); |
EMIT(0xF3); |
EMIT(0x0F); |
@@ -2287,7 +2233,6 @@ void Assembler::movdqu(const Operand& dst, XMMRegister src ) { |
void Assembler::movdqu(XMMRegister dst, const Operand& src) { |
- ASSERT(IsEnabled(SSE2)); |
EnsureSpace ensure_space(this); |
EMIT(0xF3); |
EMIT(0x0F); |
@@ -2308,7 +2253,6 @@ void Assembler::movntdqa(XMMRegister dst, const Operand& src) { |
void Assembler::movntdq(const Operand& dst, XMMRegister src) { |
- ASSERT(IsEnabled(SSE2)); |
EnsureSpace ensure_space(this); |
EMIT(0x66); |
EMIT(0x0F); |
@@ -2329,7 +2273,6 @@ void Assembler::prefetch(const Operand& src, int level) { |
void Assembler::movsd(const Operand& dst, XMMRegister src ) { |
- ASSERT(IsEnabled(SSE2)); |
EnsureSpace ensure_space(this); |
EMIT(0xF2); // double |
EMIT(0x0F); |
@@ -2339,7 +2282,6 @@ void Assembler::movsd(const Operand& dst, XMMRegister src ) { |
void Assembler::movsd(XMMRegister dst, const Operand& src) { |
- ASSERT(IsEnabled(SSE2)); |
EnsureSpace ensure_space(this); |
EMIT(0xF2); // double |
EMIT(0x0F); |
@@ -2349,7 +2291,6 @@ void Assembler::movsd(XMMRegister dst, const Operand& src) { |
void Assembler::movss(const Operand& dst, XMMRegister src ) { |
- ASSERT(IsEnabled(SSE2)); |
EnsureSpace ensure_space(this); |
EMIT(0xF3); // float |
EMIT(0x0F); |
@@ -2359,7 +2300,6 @@ void Assembler::movss(const Operand& dst, XMMRegister src ) { |
void Assembler::movss(XMMRegister dst, const Operand& src) { |
- ASSERT(IsEnabled(SSE2)); |
EnsureSpace ensure_space(this); |
EMIT(0xF3); // float |
EMIT(0x0F); |
@@ -2369,7 +2309,6 @@ void Assembler::movss(XMMRegister dst, const Operand& src) { |
void Assembler::movd(XMMRegister dst, const Operand& src) { |
- ASSERT(IsEnabled(SSE2)); |
EnsureSpace ensure_space(this); |
EMIT(0x66); |
EMIT(0x0F); |
@@ -2379,7 +2318,6 @@ void Assembler::movd(XMMRegister dst, const Operand& src) { |
void Assembler::movd(const Operand& dst, XMMRegister src) { |
- ASSERT(IsEnabled(SSE2)); |
EnsureSpace ensure_space(this); |
EMIT(0x66); |
EMIT(0x0F); |
@@ -2402,7 +2340,6 @@ void Assembler::extractps(Register dst, XMMRegister src, byte imm8) { |
void Assembler::pand(XMMRegister dst, XMMRegister src) { |
- ASSERT(IsEnabled(SSE2)); |
EnsureSpace ensure_space(this); |
EMIT(0x66); |
EMIT(0x0F); |
@@ -2412,7 +2349,6 @@ void Assembler::pand(XMMRegister dst, XMMRegister src) { |
void Assembler::pxor(XMMRegister dst, XMMRegister src) { |
- ASSERT(IsEnabled(SSE2)); |
EnsureSpace ensure_space(this); |
EMIT(0x66); |
EMIT(0x0F); |
@@ -2422,7 +2358,6 @@ void Assembler::pxor(XMMRegister dst, XMMRegister src) { |
void Assembler::por(XMMRegister dst, XMMRegister src) { |
- ASSERT(IsEnabled(SSE2)); |
EnsureSpace ensure_space(this); |
EMIT(0x66); |
EMIT(0x0F); |
@@ -2443,7 +2378,6 @@ void Assembler::ptest(XMMRegister dst, XMMRegister src) { |
void Assembler::psllq(XMMRegister reg, int8_t shift) { |
- ASSERT(IsEnabled(SSE2)); |
EnsureSpace ensure_space(this); |
EMIT(0x66); |
EMIT(0x0F); |
@@ -2454,7 +2388,6 @@ void Assembler::psllq(XMMRegister reg, int8_t shift) { |
void Assembler::psllq(XMMRegister dst, XMMRegister src) { |
- ASSERT(IsEnabled(SSE2)); |
EnsureSpace ensure_space(this); |
EMIT(0x66); |
EMIT(0x0F); |
@@ -2464,7 +2397,6 @@ void Assembler::psllq(XMMRegister dst, XMMRegister src) { |
void Assembler::psrlq(XMMRegister reg, int8_t shift) { |
- ASSERT(IsEnabled(SSE2)); |
EnsureSpace ensure_space(this); |
EMIT(0x66); |
EMIT(0x0F); |
@@ -2475,7 +2407,6 @@ void Assembler::psrlq(XMMRegister reg, int8_t shift) { |
void Assembler::psrlq(XMMRegister dst, XMMRegister src) { |
- ASSERT(IsEnabled(SSE2)); |
EnsureSpace ensure_space(this); |
EMIT(0x66); |
EMIT(0x0F); |
@@ -2485,7 +2416,6 @@ void Assembler::psrlq(XMMRegister dst, XMMRegister src) { |
void Assembler::pshufd(XMMRegister dst, XMMRegister src, uint8_t shuffle) { |
- ASSERT(IsEnabled(SSE2)); |
EnsureSpace ensure_space(this); |
EMIT(0x66); |
EMIT(0x0F); |