Mark ptest instruction as requiring SSE4.1.
authorvitalyr@chromium.org <vitalyr@chromium.org@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Tue, 28 Sep 2010 14:56:36 +0000 (14:56 +0000)
committervitalyr@chromium.org <vitalyr@chromium.org@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Tue, 28 Sep 2010 14:56:36 +0000 (14:56 +0000)
I also added a flag like the ones we have for other SSE versions.

Review URL: http://codereview.chromium.org/3505003

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5548 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

src/flag-definitions.h
src/ia32/assembler-ia32.cc
src/ia32/assembler-ia32.h

index 263a2a4..b075087 100644 (file)
@@ -108,6 +108,8 @@ DEFINE_bool(enable_sse2, true,
             "enable use of SSE2 instructions if available")
 DEFINE_bool(enable_sse3, true,
             "enable use of SSE3 instructions if available")
+DEFINE_bool(enable_sse4_1, true,
+            "enable use of SSE4.1 instructions if available")
 DEFINE_bool(enable_cmov, true,
             "enable use of CMOV instruction if available")
 DEFINE_bool(enable_rdtsc, true,
index e2f4547..e201179 100644 (file)
@@ -2414,7 +2414,7 @@ void Assembler::pxor(XMMRegister dst, XMMRegister src) {
 
 
 void Assembler::ptest(XMMRegister dst, XMMRegister src) {
-  ASSERT(CpuFeatures::IsEnabled(SSE2));
+  ASSERT(CpuFeatures::IsEnabled(SSE4_1));
   EnsureSpace ensure_space(this);
   last_pc_ = pc_;
   EMIT(0x66);
index 1dab0a6..d8051c8 100644 (file)
@@ -376,6 +376,7 @@ class CpuFeatures : public AllStatic {
   static bool IsSupported(CpuFeature f) {
     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;
     if (f == RDTSC && !FLAG_enable_rdtsc) return false;
     return (supported_ & (static_cast<uint64_t>(1) << f)) != 0;