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 RUNTIME_VM_ASSEMBLER_ARM64_H_ | 5 #ifndef RUNTIME_VM_ASSEMBLER_ARM64_H_ |
6 #define RUNTIME_VM_ASSEMBLER_ARM64_H_ | 6 #define RUNTIME_VM_ASSEMBLER_ARM64_H_ |
7 | 7 |
8 #ifndef RUNTIME_VM_ASSEMBLER_H_ | 8 #ifndef RUNTIME_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 825 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
836 const uint8_t bit54 = (imm64 >> 52) & 0x3; | 836 const uint8_t bit54 = (imm64 >> 52) & 0x3; |
837 const uint8_t bit30 = (imm64 >> 48) & 0xf; | 837 const uint8_t bit30 = (imm64 >> 48) & 0xf; |
838 const uint8_t imm8 = (bit7 << 7) | (bit6 << 6) | (bit54 << 4) | bit30; | 838 const uint8_t imm8 = (bit7 << 7) | (bit6 << 6) | (bit54 << 4) | bit30; |
839 const int64_t expimm8 = Instr::VFPExpandImm(imm8); | 839 const int64_t expimm8 = Instr::VFPExpandImm(imm8); |
840 if (imm64 != expimm8) { | 840 if (imm64 != expimm8) { |
841 return false; | 841 return false; |
842 } | 842 } |
843 EmitFPImm(FMOVDI, vd, imm8); | 843 EmitFPImm(FMOVDI, vd, imm8); |
844 return true; | 844 return true; |
845 } | 845 } |
| 846 void fmovsr(VRegister vd, Register rn) { |
| 847 ASSERT(rn != R31); |
| 848 ASSERT(rn != CSP); |
| 849 const Register crn = ConcreteRegister(rn); |
| 850 EmitFPIntCvtOp(FMOVSR, static_cast<Register>(vd), crn, kWord); |
| 851 } |
| 852 void fmovrs(Register rd, VRegister vn) { |
| 853 ASSERT(rd != R31); |
| 854 ASSERT(rd != CSP); |
| 855 const Register crd = ConcreteRegister(rd); |
| 856 EmitFPIntCvtOp(FMOVRS, crd, static_cast<Register>(vn), kWord); |
| 857 } |
846 void fmovdr(VRegister vd, Register rn) { | 858 void fmovdr(VRegister vd, Register rn) { |
847 ASSERT(rn != R31); | 859 ASSERT(rn != R31); |
848 ASSERT(rn != CSP); | 860 ASSERT(rn != CSP); |
849 const Register crn = ConcreteRegister(rn); | 861 const Register crn = ConcreteRegister(rn); |
850 EmitFPIntCvtOp(FMOVDR, static_cast<Register>(vd), crn); | 862 EmitFPIntCvtOp(FMOVDR, static_cast<Register>(vd), crn); |
851 } | 863 } |
852 void fmovrd(Register rd, VRegister vn) { | 864 void fmovrd(Register rd, VRegister vn) { |
853 ASSERT(rd != R31); | 865 ASSERT(rd != R31); |
854 ASSERT(rd != CSP); | 866 ASSERT(rd != CSP); |
855 const Register crd = ConcreteRegister(rd); | 867 const Register crd = ConcreteRegister(rd); |
(...skipping 1066 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1922 Register value, | 1934 Register value, |
1923 Label* no_update); | 1935 Label* no_update); |
1924 | 1936 |
1925 DISALLOW_ALLOCATION(); | 1937 DISALLOW_ALLOCATION(); |
1926 DISALLOW_COPY_AND_ASSIGN(Assembler); | 1938 DISALLOW_COPY_AND_ASSIGN(Assembler); |
1927 }; | 1939 }; |
1928 | 1940 |
1929 } // namespace dart | 1941 } // namespace dart |
1930 | 1942 |
1931 #endif // RUNTIME_VM_ASSEMBLER_ARM64_H_ | 1943 #endif // RUNTIME_VM_ASSEMBLER_ARM64_H_ |
OLD | NEW |