| 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 984 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 995 ldr(PP, Address(SP, 1 * kWordSize, Address::PostIndex)); | 995 ldr(PP, Address(SP, 1 * kWordSize, Address::PostIndex)); |
| 996 sub(PP, PP, Operand(kHeapObjectTag)); | 996 sub(PP, PP, Operand(kHeapObjectTag)); |
| 997 } | 997 } |
| 998 void tst(Register rn, Operand o) { | 998 void tst(Register rn, Operand o) { |
| 999 ands(ZR, rn, o); | 999 ands(ZR, rn, o); |
| 1000 } | 1000 } |
| 1001 void tsti(Register rn, uint64_t imm) { | 1001 void tsti(Register rn, uint64_t imm) { |
| 1002 andis(ZR, rn, imm); | 1002 andis(ZR, rn, imm); |
| 1003 } | 1003 } |
| 1004 | 1004 |
| 1005 void Lsl(Register rd, Register rn, int shift) { | 1005 void LslImmediate(Register rd, Register rn, int shift) { |
| 1006 add(rd, ZR, Operand(rn, LSL, shift)); | 1006 add(rd, ZR, Operand(rn, LSL, shift)); |
| 1007 } | 1007 } |
| 1008 void Lslw(Register rd, Register rn, int shift) { | 1008 void LsrImmediate(Register rd, Register rn, int shift) { |
| 1009 addw(rd, ZR, Operand(rn, LSL, shift)); | |
| 1010 } | |
| 1011 void Lsr(Register rd, Register rn, int shift) { | |
| 1012 add(rd, ZR, Operand(rn, LSR, shift)); | 1009 add(rd, ZR, Operand(rn, LSR, shift)); |
| 1013 } | 1010 } |
| 1014 void Lsrw(Register rd, Register rn, int shift) { | 1011 void AsrImmediate(Register rd, Register rn, int shift) { |
| 1015 ASSERT((shift >= 0) && (shift < 32)); | |
| 1016 addw(rd, ZR, Operand(rn, LSR, shift)); | |
| 1017 } | |
| 1018 void Asr(Register rd, Register rn, int shift) { | |
| 1019 add(rd, ZR, Operand(rn, ASR, shift)); | 1012 add(rd, ZR, Operand(rn, ASR, shift)); |
| 1020 } | 1013 } |
| 1021 | 1014 |
| 1022 void VRecps(VRegister vd, VRegister vn); | 1015 void VRecps(VRegister vd, VRegister vn); |
| 1023 void VRSqrts(VRegister vd, VRegister vn); | 1016 void VRSqrts(VRegister vd, VRegister vn); |
| 1024 | 1017 |
| 1025 void SmiUntag(Register reg) { | 1018 void SmiUntag(Register reg) { |
| 1026 Asr(reg, reg, kSmiTagSize); | 1019 AsrImmediate(reg, reg, kSmiTagSize); |
| 1027 } | 1020 } |
| 1028 void SmiUntag(Register dst, Register src) { | 1021 void SmiUntag(Register dst, Register src) { |
| 1029 Asr(dst, src, kSmiTagSize); | 1022 AsrImmediate(dst, src, kSmiTagSize); |
| 1030 } | 1023 } |
| 1031 void SmiTag(Register reg) { | 1024 void SmiTag(Register reg) { |
| 1032 Lsl(reg, reg, kSmiTagSize); | 1025 LslImmediate(reg, reg, kSmiTagSize); |
| 1033 } | 1026 } |
| 1034 | 1027 |
| 1035 // Branching to ExternalLabels. | 1028 // Branching to ExternalLabels. |
| 1036 void Branch(const ExternalLabel* label, Register pp) { | 1029 void Branch(const ExternalLabel* label, Register pp) { |
| 1037 LoadExternalLabel(TMP, label, kNotPatchable, pp); | 1030 LoadExternalLabel(TMP, label, kNotPatchable, pp); |
| 1038 br(TMP); | 1031 br(TMP); |
| 1039 } | 1032 } |
| 1040 | 1033 |
| 1041 // Fixed length branch to label. | 1034 // Fixed length branch to label. |
| 1042 void BranchPatchable(const ExternalLabel* label) { | 1035 void BranchPatchable(const ExternalLabel* label) { |
| (...skipping 665 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1708 Register value, | 1701 Register value, |
| 1709 Label* no_update); | 1702 Label* no_update); |
| 1710 | 1703 |
| 1711 DISALLOW_ALLOCATION(); | 1704 DISALLOW_ALLOCATION(); |
| 1712 DISALLOW_COPY_AND_ASSIGN(Assembler); | 1705 DISALLOW_COPY_AND_ASSIGN(Assembler); |
| 1713 }; | 1706 }; |
| 1714 | 1707 |
| 1715 } // namespace dart | 1708 } // namespace dart |
| 1716 | 1709 |
| 1717 #endif // VM_ASSEMBLER_ARM64_H_ | 1710 #endif // VM_ASSEMBLER_ARM64_H_ |
| OLD | NEW |