Revision: 7021
Author: [email protected]
Date: Wed Mar  2 04:26:20 2011
Log: Add MarkAsCall to the LArithmeticD::MOD instruction, that calls a C function, on ia32 platform
Review URL: http://codereview.chromium.org/6596105
http://code.google.com/p/v8/source/detail?r=7021

Modified:
 /branches/bleeding_edge/src/ia32/lithium-ia32.cc

=======================================
--- /branches/bleeding_edge/src/ia32/lithium-ia32.cc Tue Mar 1 07:37:24 2011 +++ /branches/bleeding_edge/src/ia32/lithium-ia32.cc Wed Mar 2 04:26:20 2011
@@ -870,10 +870,18 @@
   ASSERT(instr->representation().IsDouble());
   ASSERT(instr->left()->representation().IsDouble());
   ASSERT(instr->right()->representation().IsDouble());
-  LOperand* left = UseRegisterAtStart(instr->left());
-  LOperand* right = UseRegisterAtStart(instr->right());
-  LArithmeticD* result = new LArithmeticD(op, left, right);
-  return DefineSameAsFirst(result);
+  if (op == Token::MOD) {
+    LOperand* left = UseFixedDouble(instr->left(), xmm2);
+    LOperand* right = UseFixedDouble(instr->right(), xmm1);
+    LArithmeticD* result = new LArithmeticD(op, left, right);
+    return MarkAsCall(DefineFixedDouble(result, xmm1), instr);
+
+  } else {
+    LOperand* left = UseRegisterAtStart(instr->left());
+    LOperand* right = UseRegisterAtStart(instr->right());
+    LArithmeticD* result = new LArithmeticD(op, left, right);
+    return DefineSameAsFirst(result);
+  }
 }


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

Reply via email to