Revision: 15334
Author: [email protected]
Date: Wed Jun 26 05:03:22 2013
Log: ia32: Restore missing temp register for LNumberTagU
BUG=v8:2692
[email protected]
Review URL: https://codereview.chromium.org/17865002
http://code.google.com/p/v8/source/detail?r=15334
Modified:
/branches/bleeding_edge/src/ia32/lithium-codegen-ia32.cc
/branches/bleeding_edge/src/ia32/lithium-ia32.cc
/branches/bleeding_edge/src/ia32/lithium-ia32.h
=======================================
--- /branches/bleeding_edge/src/ia32/lithium-codegen-ia32.cc Wed Jun 26
01:43:27 2013
+++ /branches/bleeding_edge/src/ia32/lithium-codegen-ia32.cc Wed Jun 26
05:03:22 2013
@@ -4853,7 +4853,8 @@
} else {
if (CpuFeatures::IsSupported(SSE2)) {
CpuFeatureScope feature_scope(masm(), SSE2);
- __ LoadUint32(xmm0, reg, xmm1);
+ __ LoadUint32(xmm0, reg,
+ ToDoubleRegister(LNumberTagU::cast(instr)->temp()));
} else {
// There's no fild variant for unsigned values, so zero-extend to a
64-bit
// int manually.
=======================================
--- /branches/bleeding_edge/src/ia32/lithium-ia32.cc Wed Jun 26 01:43:27
2013
+++ /branches/bleeding_edge/src/ia32/lithium-ia32.cc Wed Jun 26 05:03:22
2013
@@ -2006,7 +2006,9 @@
if (val->HasRange() && val->range()->IsInSmiRange()) {
return DefineSameAsFirst(new(zone()) LSmiTag(value));
} else if (val->CheckFlag(HInstruction::kUint32)) {
- LNumberTagU* result = new(zone()) LNumberTagU(value);
+ LOperand* temp = CpuFeatures::IsSupported(SSE2) ? FixedTemp(xmm1)
+ : NULL;
+ LNumberTagU* result = new(zone()) LNumberTagU(value, temp);
return
AssignEnvironment(AssignPointerMap(DefineSameAsFirst(result)));
} else {
LNumberTagI* result = new(zone()) LNumberTagI(value);
=======================================
--- /branches/bleeding_edge/src/ia32/lithium-ia32.h Wed Jun 26 01:43:27 2013
+++ /branches/bleeding_edge/src/ia32/lithium-ia32.h Wed Jun 26 05:03:22 2013
@@ -2068,13 +2068,15 @@
};
-class LNumberTagU: public LTemplateInstruction<1, 1, 0> {
+class LNumberTagU: public LTemplateInstruction<1, 1, 1> {
public:
- explicit LNumberTagU(LOperand* value) {
+ LNumberTagU(LOperand* value, LOperand* temp) {
inputs_[0] = value;
+ temps_[0] = temp;
}
LOperand* value() { return inputs_[0]; }
+ LOperand* temp() { return temps_[0]; }
DECLARE_CONCRETE_INSTRUCTION(NumberTagU, "number-tag-u")
};
--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
---
You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.