Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(226)

Side by Side Diff: src/ia32/lithium-codegen-ia32.cc

Issue 299423005: Relax register constraints for LMathSqrt. (Closed) Base URL: git@github.com:v8/v8.git@master
Patch Set: x64 fix Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/ia32/assembler-ia32.cc ('k') | src/ia32/lithium-ia32.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "v8.h" 5 #include "v8.h"
6 6
7 #if V8_TARGET_ARCH_IA32 7 #if V8_TARGET_ARCH_IA32
8 8
9 #include "ia32/lithium-codegen-ia32.h" 9 #include "ia32/lithium-codegen-ia32.h"
10 #include "ic.h" 10 #include "ic.h"
(...skipping 3690 matching lines...) Expand 10 before | Expand all | Expand 10 after
3701 __ test(output_reg, Immediate(1)); 3701 __ test(output_reg, Immediate(1));
3702 __ RecordComment("Minus zero"); 3702 __ RecordComment("Minus zero");
3703 DeoptimizeIf(not_zero, instr->environment()); 3703 DeoptimizeIf(not_zero, instr->environment());
3704 } 3704 }
3705 __ Move(output_reg, Immediate(0)); 3705 __ Move(output_reg, Immediate(0));
3706 __ bind(&done); 3706 __ bind(&done);
3707 } 3707 }
3708 3708
3709 3709
3710 void LCodeGen::DoMathSqrt(LMathSqrt* instr) { 3710 void LCodeGen::DoMathSqrt(LMathSqrt* instr) {
3711 XMMRegister input_reg = ToDoubleRegister(instr->value()); 3711 Operand input = ToOperand(instr->value());
3712 ASSERT(ToDoubleRegister(instr->result()).is(input_reg)); 3712 XMMRegister output = ToDoubleRegister(instr->result());
3713 __ sqrtsd(input_reg, input_reg); 3713 __ sqrtsd(output, input);
3714 } 3714 }
3715 3715
3716 3716
3717 void LCodeGen::DoMathPowHalf(LMathPowHalf* instr) { 3717 void LCodeGen::DoMathPowHalf(LMathPowHalf* instr) {
3718 XMMRegister xmm_scratch = double_scratch0(); 3718 XMMRegister xmm_scratch = double_scratch0();
3719 XMMRegister input_reg = ToDoubleRegister(instr->value()); 3719 XMMRegister input_reg = ToDoubleRegister(instr->value());
3720 Register scratch = ToRegister(instr->temp()); 3720 Register scratch = ToRegister(instr->temp());
3721 ASSERT(ToDoubleRegister(instr->result()).is(input_reg)); 3721 ASSERT(ToDoubleRegister(instr->result()).is(input_reg));
3722 3722
3723 // Note that according to ECMA-262 15.8.2.13: 3723 // Note that according to ECMA-262 15.8.2.13:
(...skipping 1952 matching lines...) Expand 10 before | Expand all | Expand 10 after
5676 __ bind(deferred->exit()); 5676 __ bind(deferred->exit());
5677 __ bind(&done); 5677 __ bind(&done);
5678 } 5678 }
5679 5679
5680 5680
5681 #undef __ 5681 #undef __
5682 5682
5683 } } // namespace v8::internal 5683 } } // namespace v8::internal
5684 5684
5685 #endif // V8_TARGET_ARCH_IA32 5685 #endif // V8_TARGET_ARCH_IA32
OLDNEW
« no previous file with comments | « src/ia32/assembler-ia32.cc ('k') | src/ia32/lithium-ia32.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698