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 #ifndef V8_MIPS_CONSTANTS_H_ | 5 #ifndef V8_MIPS_CONSTANTS_H_ |
6 #define V8_MIPS_CONSTANTS_H_ | 6 #define V8_MIPS_CONSTANTS_H_ |
7 | 7 |
8 #include "src/base/logging.h" | 8 #include "src/base/logging.h" |
9 #include "src/base/macros.h" | 9 #include "src/base/macros.h" |
10 #include "src/globals.h" | 10 #include "src/globals.h" |
(...skipping 219 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
230 const int kOpcodeShift = 26; | 230 const int kOpcodeShift = 26; |
231 const int kOpcodeBits = 6; | 231 const int kOpcodeBits = 6; |
232 const int kRsShift = 21; | 232 const int kRsShift = 21; |
233 const int kRsBits = 5; | 233 const int kRsBits = 5; |
234 const int kRtShift = 16; | 234 const int kRtShift = 16; |
235 const int kRtBits = 5; | 235 const int kRtBits = 5; |
236 const int kRdShift = 11; | 236 const int kRdShift = 11; |
237 const int kRdBits = 5; | 237 const int kRdBits = 5; |
238 const int kSaShift = 6; | 238 const int kSaShift = 6; |
239 const int kSaBits = 5; | 239 const int kSaBits = 5; |
| 240 const int kLsaSaBits = 2; |
240 const int kFunctionShift = 0; | 241 const int kFunctionShift = 0; |
241 const int kFunctionBits = 6; | 242 const int kFunctionBits = 6; |
242 const int kLuiShift = 16; | 243 const int kLuiShift = 16; |
243 const int kBp2Shift = 6; | 244 const int kBp2Shift = 6; |
244 const int kBp2Bits = 2; | 245 const int kBp2Bits = 2; |
245 const int kBp3Shift = 6; | 246 const int kBp3Shift = 6; |
246 const int kBp3Bits = 3; | 247 const int kBp3Bits = 3; |
247 | 248 |
248 const int kImm16Shift = 0; | 249 const int kImm16Shift = 0; |
249 const int kImm16Bits = 16; | 250 const int kImm16Bits = 16; |
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
379 COP1X = ((1 << 4) + 3) << kOpcodeShift | 380 COP1X = ((1 << 4) + 3) << kOpcodeShift |
380 }; | 381 }; |
381 | 382 |
382 enum SecondaryField { | 383 enum SecondaryField { |
383 // SPECIAL Encoding of Function Field. | 384 // SPECIAL Encoding of Function Field. |
384 SLL = ((0 << 3) + 0), | 385 SLL = ((0 << 3) + 0), |
385 MOVCI = ((0 << 3) + 1), | 386 MOVCI = ((0 << 3) + 1), |
386 SRL = ((0 << 3) + 2), | 387 SRL = ((0 << 3) + 2), |
387 SRA = ((0 << 3) + 3), | 388 SRA = ((0 << 3) + 3), |
388 SLLV = ((0 << 3) + 4), | 389 SLLV = ((0 << 3) + 4), |
| 390 LSA = ((0 << 3) + 5), |
389 SRLV = ((0 << 3) + 6), | 391 SRLV = ((0 << 3) + 6), |
390 SRAV = ((0 << 3) + 7), | 392 SRAV = ((0 << 3) + 7), |
391 | 393 |
392 JR = ((1 << 3) + 0), | 394 JR = ((1 << 3) + 0), |
393 JALR = ((1 << 3) + 1), | 395 JALR = ((1 << 3) + 1), |
394 MOVZ = ((1 << 3) + 2), | 396 MOVZ = ((1 << 3) + 2), |
395 MOVN = ((1 << 3) + 3), | 397 MOVN = ((1 << 3) + 3), |
396 BREAK = ((1 << 3) + 5), | 398 BREAK = ((1 << 3) + 5), |
397 | 399 |
398 MFHI = ((2 << 3) + 0), | 400 MFHI = ((2 << 3) + 0), |
399 CLZ_R6 = ((2 << 3) + 0), | 401 CLZ_R6 = ((2 << 3) + 0), |
400 CLO_R6 = ((2 << 3) + 1), | 402 CLO_R6 = ((2 << 3) + 1), |
401 MFLO = ((2 << 3) + 2), | 403 MFLO = ((2 << 3) + 2), |
402 DCLZ_R6 = ((2 << 3) + 2), | 404 DCLZ_R6 = ((2 << 3) + 2), |
403 DCLO_R6 = ((2 << 3) + 3), | 405 DCLO_R6 = ((2 << 3) + 3), |
404 DSLLV = ((2 << 3) + 4), | 406 DSLLV = ((2 << 3) + 4), |
| 407 DLSA = ((2 << 3) + 5), |
405 DSRLV = ((2 << 3) + 6), | 408 DSRLV = ((2 << 3) + 6), |
406 DSRAV = ((2 << 3) + 7), | 409 DSRAV = ((2 << 3) + 7), |
407 | 410 |
408 MULT = ((3 << 3) + 0), | 411 MULT = ((3 << 3) + 0), |
409 MULTU = ((3 << 3) + 1), | 412 MULTU = ((3 << 3) + 1), |
410 DIV = ((3 << 3) + 2), | 413 DIV = ((3 << 3) + 2), |
411 DIVU = ((3 << 3) + 3), | 414 DIVU = ((3 << 3) + 3), |
412 DMULT = ((3 << 3) + 4), | 415 DMULT = ((3 << 3) + 4), |
413 DMULTU = ((3 << 3) + 5), | 416 DMULTU = ((3 << 3) + 5), |
414 DDIV = ((3 << 3) + 6), | 417 DDIV = ((3 << 3) + 6), |
(...skipping 530 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
945 static const uint64_t kFunctionFieldRegisterTypeMask = | 948 static const uint64_t kFunctionFieldRegisterTypeMask = |
946 FunctionFieldToBitNumber(JR) | FunctionFieldToBitNumber(JALR) | | 949 FunctionFieldToBitNumber(JR) | FunctionFieldToBitNumber(JALR) | |
947 FunctionFieldToBitNumber(BREAK) | FunctionFieldToBitNumber(SLL) | | 950 FunctionFieldToBitNumber(BREAK) | FunctionFieldToBitNumber(SLL) | |
948 FunctionFieldToBitNumber(DSLL) | FunctionFieldToBitNumber(DSLL32) | | 951 FunctionFieldToBitNumber(DSLL) | FunctionFieldToBitNumber(DSLL32) | |
949 FunctionFieldToBitNumber(SRL) | FunctionFieldToBitNumber(DSRL) | | 952 FunctionFieldToBitNumber(SRL) | FunctionFieldToBitNumber(DSRL) | |
950 FunctionFieldToBitNumber(DSRL32) | FunctionFieldToBitNumber(SRA) | | 953 FunctionFieldToBitNumber(DSRL32) | FunctionFieldToBitNumber(SRA) | |
951 FunctionFieldToBitNumber(DSRA) | FunctionFieldToBitNumber(DSRA32) | | 954 FunctionFieldToBitNumber(DSRA) | FunctionFieldToBitNumber(DSRA32) | |
952 FunctionFieldToBitNumber(SLLV) | FunctionFieldToBitNumber(DSLLV) | | 955 FunctionFieldToBitNumber(SLLV) | FunctionFieldToBitNumber(DSLLV) | |
953 FunctionFieldToBitNumber(SRLV) | FunctionFieldToBitNumber(DSRLV) | | 956 FunctionFieldToBitNumber(SRLV) | FunctionFieldToBitNumber(DSRLV) | |
954 FunctionFieldToBitNumber(SRAV) | FunctionFieldToBitNumber(DSRAV) | | 957 FunctionFieldToBitNumber(SRAV) | FunctionFieldToBitNumber(DSRAV) | |
| 958 FunctionFieldToBitNumber(LSA) | FunctionFieldToBitNumber(DLSA) | |
955 FunctionFieldToBitNumber(MFHI) | FunctionFieldToBitNumber(MFLO) | | 959 FunctionFieldToBitNumber(MFHI) | FunctionFieldToBitNumber(MFLO) | |
956 FunctionFieldToBitNumber(MULT) | FunctionFieldToBitNumber(DMULT) | | 960 FunctionFieldToBitNumber(MULT) | FunctionFieldToBitNumber(DMULT) | |
957 FunctionFieldToBitNumber(MULTU) | FunctionFieldToBitNumber(DMULTU) | | 961 FunctionFieldToBitNumber(MULTU) | FunctionFieldToBitNumber(DMULTU) | |
958 FunctionFieldToBitNumber(DIV) | FunctionFieldToBitNumber(DDIV) | | 962 FunctionFieldToBitNumber(DIV) | FunctionFieldToBitNumber(DDIV) | |
959 FunctionFieldToBitNumber(DIVU) | FunctionFieldToBitNumber(DDIVU) | | 963 FunctionFieldToBitNumber(DIVU) | FunctionFieldToBitNumber(DDIVU) | |
960 FunctionFieldToBitNumber(ADD) | FunctionFieldToBitNumber(DADD) | | 964 FunctionFieldToBitNumber(ADD) | FunctionFieldToBitNumber(DADD) | |
961 FunctionFieldToBitNumber(ADDU) | FunctionFieldToBitNumber(DADDU) | | 965 FunctionFieldToBitNumber(ADDU) | FunctionFieldToBitNumber(DADDU) | |
962 FunctionFieldToBitNumber(SUB) | FunctionFieldToBitNumber(DSUB) | | 966 FunctionFieldToBitNumber(SUB) | FunctionFieldToBitNumber(DSUB) | |
963 FunctionFieldToBitNumber(SUBU) | FunctionFieldToBitNumber(DSUBU) | | 967 FunctionFieldToBitNumber(SUBU) | FunctionFieldToBitNumber(DSUBU) | |
964 FunctionFieldToBitNumber(AND) | FunctionFieldToBitNumber(OR) | | 968 FunctionFieldToBitNumber(AND) | FunctionFieldToBitNumber(OR) | |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
997 inline int RdValue() const { | 1001 inline int RdValue() const { |
998 DCHECK(InstructionType() == kRegisterType); | 1002 DCHECK(InstructionType() == kRegisterType); |
999 return Bits(kRdShift + kRdBits - 1, kRdShift); | 1003 return Bits(kRdShift + kRdBits - 1, kRdShift); |
1000 } | 1004 } |
1001 | 1005 |
1002 inline int SaValue() const { | 1006 inline int SaValue() const { |
1003 DCHECK(InstructionType() == kRegisterType); | 1007 DCHECK(InstructionType() == kRegisterType); |
1004 return Bits(kSaShift + kSaBits - 1, kSaShift); | 1008 return Bits(kSaShift + kSaBits - 1, kSaShift); |
1005 } | 1009 } |
1006 | 1010 |
| 1011 inline int LsaSaValue() const { |
| 1012 DCHECK(InstructionType() == kRegisterType); |
| 1013 return Bits(kSaShift + kLsaSaBits - 1, kSaShift); |
| 1014 } |
| 1015 |
1007 inline int FunctionValue() const { | 1016 inline int FunctionValue() const { |
1008 DCHECK(InstructionType() == kRegisterType || | 1017 DCHECK(InstructionType() == kRegisterType || |
1009 InstructionType() == kImmediateType); | 1018 InstructionType() == kImmediateType); |
1010 return Bits(kFunctionShift + kFunctionBits - 1, kFunctionShift); | 1019 return Bits(kFunctionShift + kFunctionBits - 1, kFunctionShift); |
1011 } | 1020 } |
1012 | 1021 |
1013 inline int FdValue() const { | 1022 inline int FdValue() const { |
1014 return Bits(kFdShift + kFdBits - 1, kFdShift); | 1023 return Bits(kFdShift + kFdBits - 1, kFdShift); |
1015 } | 1024 } |
1016 | 1025 |
(...skipping 248 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1265 } | 1274 } |
1266 return kUnsupported; | 1275 return kUnsupported; |
1267 } | 1276 } |
1268 | 1277 |
1269 #undef OpcodeToBitNumber | 1278 #undef OpcodeToBitNumber |
1270 #undef FunctionFieldToBitNumber | 1279 #undef FunctionFieldToBitNumber |
1271 } // namespace internal | 1280 } // namespace internal |
1272 } // namespace v8 | 1281 } // namespace v8 |
1273 | 1282 |
1274 #endif // #ifndef V8_MIPS_CONSTANTS_H_ | 1283 #endif // #ifndef V8_MIPS_CONSTANTS_H_ |
OLD | NEW |