OLD | NEW |
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, 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_MIPS_H_ | 5 #ifndef VM_ASSEMBLER_MIPS_H_ |
6 #define VM_ASSEMBLER_MIPS_H_ | 6 #define VM_ASSEMBLER_MIPS_H_ |
7 | 7 |
8 #ifndef VM_ASSEMBLER_H_ | 8 #ifndef VM_ASSEMBLER_H_ |
9 #error Do not include assembler_mips.h directly; use assembler.h instead. | 9 #error Do not include assembler_mips.h directly; use assembler.h instead. |
10 #endif | 10 #endif |
(...skipping 841 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
852 } else { | 852 } else { |
853 LoadImmediate(TMP1, value); | 853 LoadImmediate(TMP1, value); |
854 addu(rd, rs, TMP1); | 854 addu(rd, rs, TMP1); |
855 } | 855 } |
856 } | 856 } |
857 | 857 |
858 void AddImmediate(Register rd, int32_t value) { | 858 void AddImmediate(Register rd, int32_t value) { |
859 AddImmediate(rd, rd, value); | 859 AddImmediate(rd, rd, value); |
860 } | 860 } |
861 | 861 |
| 862 void AndImmediate(Register rd, Register rs, int32_t imm) { |
| 863 if (imm == 0) { |
| 864 mov(rd, ZR); |
| 865 return; |
| 866 } |
| 867 |
| 868 if (Utils::IsUint(kImmBits, imm)) { |
| 869 andi(rd, rs, Immediate(imm)); |
| 870 } else { |
| 871 LoadImmediate(TMP, imm); |
| 872 and_(rd, rs, TMP); |
| 873 } |
| 874 } |
| 875 |
862 void BranchEqual(Register rd, int32_t value, Label* l) { | 876 void BranchEqual(Register rd, int32_t value, Label* l) { |
863 if (value == 0) { | 877 if (value == 0) { |
864 beq(rd, ZR, l); | 878 beq(rd, ZR, l); |
865 } else { | 879 } else { |
866 ASSERT(rd != CMPRES2); | 880 ASSERT(rd != CMPRES2); |
867 LoadImmediate(CMPRES2, value); | 881 LoadImmediate(CMPRES2, value); |
868 beq(rd, CMPRES2, l); | 882 beq(rd, CMPRES2, l); |
869 } | 883 } |
870 } | 884 } |
871 | 885 |
(...skipping 389 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1261 Register value, | 1275 Register value, |
1262 Label* no_update); | 1276 Label* no_update); |
1263 | 1277 |
1264 DISALLOW_ALLOCATION(); | 1278 DISALLOW_ALLOCATION(); |
1265 DISALLOW_COPY_AND_ASSIGN(Assembler); | 1279 DISALLOW_COPY_AND_ASSIGN(Assembler); |
1266 }; | 1280 }; |
1267 | 1281 |
1268 } // namespace dart | 1282 } // namespace dart |
1269 | 1283 |
1270 #endif // VM_ASSEMBLER_MIPS_H_ | 1284 #endif // VM_ASSEMBLER_MIPS_H_ |
OLD | NEW |