| 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 2722 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2733 void MacroAssembler::Ucomisd(XMMRegister src1, const Operand& src2) { | 2733 void MacroAssembler::Ucomisd(XMMRegister src1, const Operand& src2) { |
| 2734 if (CpuFeatures::IsSupported(AVX)) { | 2734 if (CpuFeatures::IsSupported(AVX)) { |
| 2735 CpuFeatureScope scope(this, AVX); | 2735 CpuFeatureScope scope(this, AVX); |
| 2736 vucomisd(src1, src2); | 2736 vucomisd(src1, src2); |
| 2737 } else { | 2737 } else { |
| 2738 ucomisd(src1, src2); | 2738 ucomisd(src1, src2); |
| 2739 } | 2739 } |
| 2740 } | 2740 } |
| 2741 | 2741 |
| 2742 | 2742 |
| 2743 void MacroAssembler::Andpd(XMMRegister dst, XMMRegister src) { | |
| 2744 if (CpuFeatures::IsSupported(AVX)) { | |
| 2745 CpuFeatureScope scope(this, AVX); | |
| 2746 vandpd(dst, dst, src); | |
| 2747 } else { | |
| 2748 andpd(dst, src); | |
| 2749 } | |
| 2750 } | |
| 2751 | |
| 2752 | |
| 2753 void MacroAssembler::Orpd(XMMRegister dst, XMMRegister src) { | |
| 2754 if (CpuFeatures::IsSupported(AVX)) { | |
| 2755 CpuFeatureScope scope(this, AVX); | |
| 2756 vorpd(dst, dst, src); | |
| 2757 } else { | |
| 2758 orpd(dst, src); | |
| 2759 } | |
| 2760 } | |
| 2761 | |
| 2762 | |
| 2763 void MacroAssembler::Xorpd(XMMRegister dst, XMMRegister src) { | |
| 2764 if (CpuFeatures::IsSupported(AVX)) { | |
| 2765 CpuFeatureScope scope(this, AVX); | |
| 2766 vxorpd(dst, dst, src); | |
| 2767 } else { | |
| 2768 xorpd(dst, src); | |
| 2769 } | |
| 2770 } | |
| 2771 | |
| 2772 | |
| 2773 void MacroAssembler::Pcmpeqd(XMMRegister dst, XMMRegister src) { | |
| 2774 if (CpuFeatures::IsSupported(AVX)) { | |
| 2775 CpuFeatureScope scope(this, AVX); | |
| 2776 vpcmpeqd(dst, dst, src); | |
| 2777 } else { | |
| 2778 pcmpeqd(dst, src); | |
| 2779 } | |
| 2780 } | |
| 2781 | |
| 2782 | |
| 2783 void MacroAssembler::Psllq(XMMRegister dst, byte imm8) { | |
| 2784 if (CpuFeatures::IsSupported(AVX)) { | |
| 2785 CpuFeatureScope scope(this, AVX); | |
| 2786 vpsllq(dst, dst, imm8); | |
| 2787 } else { | |
| 2788 psllq(dst, imm8); | |
| 2789 } | |
| 2790 } | |
| 2791 | |
| 2792 | |
| 2793 void MacroAssembler::Psrlq(XMMRegister dst, byte imm8) { | |
| 2794 if (CpuFeatures::IsSupported(AVX)) { | |
| 2795 CpuFeatureScope scope(this, AVX); | |
| 2796 vpsrlq(dst, dst, imm8); | |
| 2797 } else { | |
| 2798 psrlq(dst, imm8); | |
| 2799 } | |
| 2800 } | |
| 2801 | |
| 2802 | |
| 2803 void MacroAssembler::Cmp(Register dst, Handle<Object> source) { | 2743 void MacroAssembler::Cmp(Register dst, Handle<Object> source) { |
| 2804 AllowDeferredHandleDereference smi_check; | 2744 AllowDeferredHandleDereference smi_check; |
| 2805 if (source->IsSmi()) { | 2745 if (source->IsSmi()) { |
| 2806 Cmp(dst, Smi::cast(*source)); | 2746 Cmp(dst, Smi::cast(*source)); |
| 2807 } else { | 2747 } else { |
| 2808 MoveHeapObject(kScratchRegister, source); | 2748 MoveHeapObject(kScratchRegister, source); |
| 2809 cmpp(dst, kScratchRegister); | 2749 cmpp(dst, kScratchRegister); |
| 2810 } | 2750 } |
| 2811 } | 2751 } |
| 2812 | 2752 |
| (...skipping 2597 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5410 movl(rax, dividend); | 5350 movl(rax, dividend); |
| 5411 shrl(rax, Immediate(31)); | 5351 shrl(rax, Immediate(31)); |
| 5412 addl(rdx, rax); | 5352 addl(rdx, rax); |
| 5413 } | 5353 } |
| 5414 | 5354 |
| 5415 | 5355 |
| 5416 } // namespace internal | 5356 } // namespace internal |
| 5417 } // namespace v8 | 5357 } // namespace v8 |
| 5418 | 5358 |
| 5419 #endif // V8_TARGET_ARCH_X64 | 5359 #endif // V8_TARGET_ARCH_X64 |
| OLD | NEW |