Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 #ifndef VM_ASSEMBLER_ARM64_H_ | 5 #ifndef VM_ASSEMBLER_ARM64_H_ |
| 6 #define VM_ASSEMBLER_ARM64_H_ | 6 #define VM_ASSEMBLER_ARM64_H_ |
| 7 | 7 |
| 8 #ifndef VM_ASSEMBLER_H_ | 8 #ifndef VM_ASSEMBLER_H_ |
| 9 #error Do not include assembler_arm64.h directly; use assembler.h instead. | 9 #error Do not include assembler_arm64.h directly; use assembler.h instead. |
| 10 #endif | 10 #endif |
| (...skipping 822 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 833 ASSERT(rn != CSP); | 833 ASSERT(rn != CSP); |
| 834 const Register crn = ConcreteRegister(rn); | 834 const Register crn = ConcreteRegister(rn); |
| 835 EmitFPIntCvtOp(FMOVDR, static_cast<Register>(vd), crn); | 835 EmitFPIntCvtOp(FMOVDR, static_cast<Register>(vd), crn); |
| 836 } | 836 } |
| 837 void fmovrd(Register rd, VRegister vn) { | 837 void fmovrd(Register rd, VRegister vn) { |
| 838 ASSERT(rd != R31); | 838 ASSERT(rd != R31); |
| 839 ASSERT(rd != CSP); | 839 ASSERT(rd != CSP); |
| 840 const Register crd = ConcreteRegister(rd); | 840 const Register crd = ConcreteRegister(rd); |
| 841 EmitFPIntCvtOp(FMOVRD, crd, static_cast<Register>(vn)); | 841 EmitFPIntCvtOp(FMOVRD, crd, static_cast<Register>(vn)); |
| 842 } | 842 } |
| 843 void scvtfd(VRegister vd, Register rn) { | 843 void scvtfdx(VRegister vd, Register rn) { |
| 844 ASSERT(rn != R31); | 844 ASSERT(rn != R31); |
| 845 ASSERT(rn != CSP); | 845 ASSERT(rn != CSP); |
| 846 const Register crn = ConcreteRegister(rn); | 846 const Register crn = ConcreteRegister(rn); |
| 847 EmitFPIntCvtOp(SCVTFD, static_cast<Register>(vd), crn); | 847 EmitFPIntCvtOp(SCVTFD, static_cast<Register>(vd), crn); |
| 848 } | 848 } |
| 849 void scvtfdw(VRegister vd, Register rn) { | |
| 850 ASSERT(rn != R31); | |
| 851 ASSERT(rn != CSP); | |
| 852 const Register crn = ConcreteRegister(rn); | |
| 853 EmitFPIntCvtOp(SCVTFD, static_cast<Register>(vd), crn, kWord); | |
| 854 } | |
| 849 void fcvtzds(Register rd, VRegister vn) { | 855 void fcvtzds(Register rd, VRegister vn) { |
| 850 ASSERT(rd != R31); | 856 ASSERT(rd != R31); |
| 851 ASSERT(rd != CSP); | 857 ASSERT(rd != CSP); |
| 852 const Register crd = ConcreteRegister(rd); | 858 const Register crd = ConcreteRegister(rd); |
| 853 EmitFPIntCvtOp(FCVTZDS, crd, static_cast<Register>(vn)); | 859 EmitFPIntCvtOp(FCVTZDS, crd, static_cast<Register>(vn)); |
| 854 } | 860 } |
| 855 void fmovdd(VRegister vd, VRegister vn) { | 861 void fmovdd(VRegister vd, VRegister vn) { |
| 856 EmitFPOneSourceOp(FMOVDD, vd, vn); | 862 EmitFPOneSourceOp(FMOVDD, vd, vn); |
| 857 } | 863 } |
| 858 void fabsd(VRegister vd, VRegister vn) { | 864 void fabsd(VRegister vd, VRegister vn) { |
| (...skipping 934 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1793 } | 1799 } |
| 1794 | 1800 |
| 1795 void EmitFPImm(FPImmOp op, VRegister vd, uint8_t imm8) { | 1801 void EmitFPImm(FPImmOp op, VRegister vd, uint8_t imm8) { |
| 1796 const int32_t encoding = | 1802 const int32_t encoding = |
| 1797 op | | 1803 op | |
| 1798 (static_cast<int32_t>(vd) << kVdShift) | | 1804 (static_cast<int32_t>(vd) << kVdShift) | |
| 1799 (imm8 << kImm8Shift); | 1805 (imm8 << kImm8Shift); |
| 1800 Emit(encoding); | 1806 Emit(encoding); |
| 1801 } | 1807 } |
| 1802 | 1808 |
| 1803 void EmitFPIntCvtOp(FPIntCvtOp op, Register rd, Register rn) { | 1809 void EmitFPIntCvtOp(FPIntCvtOp op, Register rd, Register rn, |
| 1810 OperandSize sz = kDoubleWord) { | |
| 1811 const int32_t sfield = (sz == kDoubleWord) ? B31 : 0; | |
|
zra
2014/10/09 19:21:51
Assert that sz is either kDoubleWord or kWord sinc
Cutch
2014/10/09 20:48:22
Done.
| |
| 1804 const int32_t encoding = | 1812 const int32_t encoding = |
| 1805 op | | 1813 op | |
| 1806 (static_cast<int32_t>(rd) << kRdShift) | | 1814 (static_cast<int32_t>(rd) << kRdShift) | |
| 1807 (static_cast<int32_t>(rn) << kRnShift); | 1815 (static_cast<int32_t>(rn) << kRnShift) | |
| 1816 sfield; | |
| 1808 Emit(encoding); | 1817 Emit(encoding); |
| 1809 } | 1818 } |
| 1810 | 1819 |
| 1811 void EmitFPOneSourceOp(FPOneSourceOp op, VRegister vd, VRegister vn) { | 1820 void EmitFPOneSourceOp(FPOneSourceOp op, VRegister vd, VRegister vn) { |
| 1812 const int32_t encoding = | 1821 const int32_t encoding = |
| 1813 op | | 1822 op | |
| 1814 (static_cast<int32_t>(vd) << kVdShift) | | 1823 (static_cast<int32_t>(vd) << kVdShift) | |
| 1815 (static_cast<int32_t>(vn) << kVnShift); | 1824 (static_cast<int32_t>(vn) << kVnShift); |
| 1816 Emit(encoding); | 1825 Emit(encoding); |
| 1817 } | 1826 } |
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1873 Register value, | 1882 Register value, |
| 1874 Label* no_update); | 1883 Label* no_update); |
| 1875 | 1884 |
| 1876 DISALLOW_ALLOCATION(); | 1885 DISALLOW_ALLOCATION(); |
| 1877 DISALLOW_COPY_AND_ASSIGN(Assembler); | 1886 DISALLOW_COPY_AND_ASSIGN(Assembler); |
| 1878 }; | 1887 }; |
| 1879 | 1888 |
| 1880 } // namespace dart | 1889 } // namespace dart |
| 1881 | 1890 |
| 1882 #endif // VM_ASSEMBLER_ARM64_H_ | 1891 #endif // VM_ASSEMBLER_ARM64_H_ |
| OLD | NEW |