| OLD | NEW |
| 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 #if V8_TARGET_ARCH_X64 | 5 #if V8_TARGET_ARCH_X64 |
| 6 | 6 |
| 7 #include "src/base/bits.h" | 7 #include "src/base/bits.h" |
| 8 #include "src/base/division-by-constant.h" | 8 #include "src/base/division-by-constant.h" |
| 9 #include "src/bootstrapper.h" | 9 #include "src/bootstrapper.h" |
| 10 #include "src/codegen.h" | 10 #include "src/codegen.h" |
| (...skipping 845 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 856 CpuFeatureScope scope(this, AVX); | 856 CpuFeatureScope scope(this, AVX); |
| 857 vxorpd(dst, dst, dst); | 857 vxorpd(dst, dst, dst); |
| 858 vcvtqsi2sd(dst, dst, src); | 858 vcvtqsi2sd(dst, dst, src); |
| 859 } else { | 859 } else { |
| 860 xorpd(dst, dst); | 860 xorpd(dst, dst); |
| 861 cvtqsi2sd(dst, src); | 861 cvtqsi2sd(dst, src); |
| 862 } | 862 } |
| 863 } | 863 } |
| 864 | 864 |
| 865 | 865 |
| 866 void MacroAssembler::Cvtsd2si(Register dst, XMMRegister src) { |
| 867 if (CpuFeatures::IsSupported(AVX)) { |
| 868 CpuFeatureScope scope(this, AVX); |
| 869 vcvtsd2si(dst, src); |
| 870 } else { |
| 871 cvtsd2si(dst, src); |
| 872 } |
| 873 } |
| 874 |
| 875 |
| 866 void MacroAssembler::Cvttsd2si(Register dst, XMMRegister src) { | 876 void MacroAssembler::Cvttsd2si(Register dst, XMMRegister src) { |
| 867 if (CpuFeatures::IsSupported(AVX)) { | 877 if (CpuFeatures::IsSupported(AVX)) { |
| 868 CpuFeatureScope scope(this, AVX); | 878 CpuFeatureScope scope(this, AVX); |
| 869 vcvttsd2si(dst, src); | 879 vcvttsd2si(dst, src); |
| 870 } else { | 880 } else { |
| 871 cvttsd2si(dst, src); | 881 cvttsd2si(dst, src); |
| 872 } | 882 } |
| 873 } | 883 } |
| 874 | 884 |
| 875 | 885 |
| (...skipping 2561 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3437 bind(&done); | 3447 bind(&done); |
| 3438 } | 3448 } |
| 3439 | 3449 |
| 3440 | 3450 |
| 3441 void MacroAssembler::ClampDoubleToUint8(XMMRegister input_reg, | 3451 void MacroAssembler::ClampDoubleToUint8(XMMRegister input_reg, |
| 3442 XMMRegister temp_xmm_reg, | 3452 XMMRegister temp_xmm_reg, |
| 3443 Register result_reg) { | 3453 Register result_reg) { |
| 3444 Label done; | 3454 Label done; |
| 3445 Label conv_failure; | 3455 Label conv_failure; |
| 3446 Xorpd(temp_xmm_reg, temp_xmm_reg); | 3456 Xorpd(temp_xmm_reg, temp_xmm_reg); |
| 3447 cvtsd2si(result_reg, input_reg); | 3457 Cvtsd2si(result_reg, input_reg); |
| 3448 testl(result_reg, Immediate(0xFFFFFF00)); | 3458 testl(result_reg, Immediate(0xFFFFFF00)); |
| 3449 j(zero, &done, Label::kNear); | 3459 j(zero, &done, Label::kNear); |
| 3450 cmpl(result_reg, Immediate(1)); | 3460 cmpl(result_reg, Immediate(1)); |
| 3451 j(overflow, &conv_failure, Label::kNear); | 3461 j(overflow, &conv_failure, Label::kNear); |
| 3452 movl(result_reg, Immediate(0)); | 3462 movl(result_reg, Immediate(0)); |
| 3453 setcc(sign, result_reg); | 3463 setcc(sign, result_reg); |
| 3454 subl(result_reg, Immediate(1)); | 3464 subl(result_reg, Immediate(1)); |
| 3455 andl(result_reg, Immediate(255)); | 3465 andl(result_reg, Immediate(255)); |
| 3456 jmp(&done, Label::kNear); | 3466 jmp(&done, Label::kNear); |
| 3457 bind(&conv_failure); | 3467 bind(&conv_failure); |
| (...skipping 1904 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5362 movl(rax, dividend); | 5372 movl(rax, dividend); |
| 5363 shrl(rax, Immediate(31)); | 5373 shrl(rax, Immediate(31)); |
| 5364 addl(rdx, rax); | 5374 addl(rdx, rax); |
| 5365 } | 5375 } |
| 5366 | 5376 |
| 5367 | 5377 |
| 5368 } // namespace internal | 5378 } // namespace internal |
| 5369 } // namespace v8 | 5379 } // namespace v8 |
| 5370 | 5380 |
| 5371 #endif // V8_TARGET_ARCH_X64 | 5381 #endif // V8_TARGET_ARCH_X64 |
| OLD | NEW |