Revision: 4158
Author: [email protected]
Date: Wed Mar 17 03:28:44 2010
Log: Make the C++ tests run without SSE2 support.
Review URL: http://codereview.chromium.org/982007
http://code.google.com/p/v8/source/detail?r=4158

Modified:
 /branches/bleeding_edge/test/cctest/test-assembler-ia32.cc
 /branches/bleeding_edge/test/cctest/test-disasm-ia32.cc

=======================================
--- /branches/bleeding_edge/test/cctest/test-assembler-ia32.cc Fri Nov 13 04:32:57 2009 +++ /branches/bleeding_edge/test/cctest/test-assembler-ia32.cc Wed Mar 17 03:28:44 2010
@@ -167,6 +167,8 @@
 typedef int (*F3)(float x);

 TEST(AssemblerIa323) {
+  if (!CpuFeatures::IsSupported(SSE2)) return;
+
   InitializeVM();
   v8::HandleScope scope;

@@ -201,6 +203,8 @@
 typedef int (*F4)(double x);

 TEST(AssemblerIa324) {
+  if (!CpuFeatures::IsSupported(SSE2)) return;
+
   InitializeVM();
   v8::HandleScope scope;

@@ -258,6 +262,8 @@
 typedef double (*F5)(double x, double y);

 TEST(AssemblerIa326) {
+  if (!CpuFeatures::IsSupported(SSE2)) return;
+
   InitializeVM();
   v8::HandleScope scope;
   CHECK(CpuFeatures::IsSupported(SSE2));
@@ -303,6 +309,8 @@
 typedef double (*F6)(int x);

 TEST(AssemblerIa328) {
+  if (!CpuFeatures::IsSupported(SSE2)) return;
+
   InitializeVM();
   v8::HandleScope scope;
   CHECK(CpuFeatures::IsSupported(SSE2));
=======================================
--- /branches/bleeding_edge/test/cctest/test-disasm-ia32.cc Tue Mar 2 04:42:15 2010 +++ /branches/bleeding_edge/test/cctest/test-disasm-ia32.cc Wed Mar 17 03:28:44 2010
@@ -361,45 +361,47 @@
   __ fwait();
   __ nop();
   {
-    CHECK(CpuFeatures::IsSupported(SSE2));
-    CpuFeatures::Scope fscope(SSE2);
-    __ cvttss2si(edx, Operand(ebx, ecx, times_4, 10000));
-    __ cvtsi2sd(xmm1, Operand(ebx, ecx, times_4, 10000));
-    __ addsd(xmm1, xmm0);
-    __ mulsd(xmm1, xmm0);
-    __ subsd(xmm1, xmm0);
-    __ divsd(xmm1, xmm0);
-    __ movdbl(xmm1, Operand(ebx, ecx, times_4, 10000));
-    __ movdbl(Operand(ebx, ecx, times_4, 10000), xmm1);
-    __ comisd(xmm0, xmm1);
-
-    // 128 bit move instructions.
-    __ movdqa(xmm0, Operand(ebx, ecx, times_4, 10000));
-    __ movdqa(Operand(ebx, ecx, times_4, 10000), xmm0);
-    __ movdqu(xmm0, Operand(ebx, ecx, times_4, 10000));
-    __ movdqu(Operand(ebx, ecx, times_4, 10000), xmm0);
+    if (CpuFeatures::IsSupported(SSE2)) {
+      CpuFeatures::Scope fscope(SSE2);
+      __ cvttss2si(edx, Operand(ebx, ecx, times_4, 10000));
+      __ cvtsi2sd(xmm1, Operand(ebx, ecx, times_4, 10000));
+      __ addsd(xmm1, xmm0);
+      __ mulsd(xmm1, xmm0);
+      __ subsd(xmm1, xmm0);
+      __ divsd(xmm1, xmm0);
+      __ movdbl(xmm1, Operand(ebx, ecx, times_4, 10000));
+      __ movdbl(Operand(ebx, ecx, times_4, 10000), xmm1);
+      __ comisd(xmm0, xmm1);
+
+      // 128 bit move instructions.
+      __ movdqa(xmm0, Operand(ebx, ecx, times_4, 10000));
+      __ movdqa(Operand(ebx, ecx, times_4, 10000), xmm0);
+      __ movdqu(xmm0, Operand(ebx, ecx, times_4, 10000));
+      __ movdqu(Operand(ebx, ecx, times_4, 10000), xmm0);
+    }
   }

   // cmov.
   {
-    CHECK(CpuFeatures::IsSupported(CMOV));
-    CpuFeatures::Scope use_cmov(CMOV);
-    __ cmov(overflow, eax, Operand(eax, 0));
-    __ cmov(no_overflow, eax, Operand(eax, 1));
-    __ cmov(below, eax, Operand(eax, 2));
-    __ cmov(above_equal, eax, Operand(eax, 3));
-    __ cmov(equal, eax, Operand(ebx, 0));
-    __ cmov(not_equal, eax, Operand(ebx, 1));
-    __ cmov(below_equal, eax, Operand(ebx, 2));
-    __ cmov(above, eax, Operand(ebx, 3));
-    __ cmov(sign, eax, Operand(ecx, 0));
-    __ cmov(not_sign, eax, Operand(ecx, 1));
-    __ cmov(parity_even, eax, Operand(ecx, 2));
-    __ cmov(parity_odd, eax, Operand(ecx, 3));
-    __ cmov(less, eax, Operand(edx, 0));
-    __ cmov(greater_equal, eax, Operand(edx, 1));
-    __ cmov(less_equal, eax, Operand(edx, 2));
-    __ cmov(greater, eax, Operand(edx, 3));
+    if (CpuFeatures::IsSupported(CMOV)) {
+      CpuFeatures::Scope use_cmov(CMOV);
+      __ cmov(overflow, eax, Operand(eax, 0));
+      __ cmov(no_overflow, eax, Operand(eax, 1));
+      __ cmov(below, eax, Operand(eax, 2));
+      __ cmov(above_equal, eax, Operand(eax, 3));
+      __ cmov(equal, eax, Operand(ebx, 0));
+      __ cmov(not_equal, eax, Operand(ebx, 1));
+      __ cmov(below_equal, eax, Operand(ebx, 2));
+      __ cmov(above, eax, Operand(ebx, 3));
+      __ cmov(sign, eax, Operand(ecx, 0));
+      __ cmov(not_sign, eax, Operand(ecx, 1));
+      __ cmov(parity_even, eax, Operand(ecx, 2));
+      __ cmov(parity_odd, eax, Operand(ecx, 3));
+      __ cmov(less, eax, Operand(edx, 0));
+      __ cmov(greater_equal, eax, Operand(edx, 1));
+      __ cmov(less_equal, eax, Operand(edx, 2));
+      __ cmov(greater, eax, Operand(edx, 3));
+    }
   }

   __ ret(0);

--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev

Reply via email to