| 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_CONSTANTS_ARM64_H_ | 5 #ifndef VM_CONSTANTS_ARM64_H_ |
| 6 #define VM_CONSTANTS_ARM64_H_ | 6 #define VM_CONSTANTS_ARM64_H_ |
| 7 | 7 |
| 8 #include "platform/assert.h" | 8 #include "platform/assert.h" |
| 9 | 9 |
| 10 namespace dart { | 10 namespace dart { |
| (...skipping 304 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 315 | 315 |
| 316 // C3.2.7 | 316 // C3.2.7 |
| 317 enum UnconditionalBranchRegOp { | 317 enum UnconditionalBranchRegOp { |
| 318 UnconditionalBranchRegMask = 0xfe000000, | 318 UnconditionalBranchRegMask = 0xfe000000, |
| 319 UnconditionalBranchRegFixed = CompareBranchFixed | B31 | B30 | B25, | 319 UnconditionalBranchRegFixed = CompareBranchFixed | B31 | B30 | B25, |
| 320 BR = UnconditionalBranchRegFixed | B20 | B19 | B18 | B17 | B16, | 320 BR = UnconditionalBranchRegFixed | B20 | B19 | B18 | B17 | B16, |
| 321 BLR = BR | B21, | 321 BLR = BR | B21, |
| 322 RET = BR | B22, | 322 RET = BR | B22, |
| 323 }; | 323 }; |
| 324 | 324 |
| 325 enum LoadStoreRegOp { | |
| 326 LoadStoreRegMask = 0x3a000000, | |
| 327 LoadStoreRegFixed = LoadStoreFixed | B29 | B28, | |
| 328 STR = LoadStoreRegFixed, | |
| 329 LDR = LoadStoreRegFixed | B22, | |
| 330 }; | |
| 331 | |
| 332 // C3.3.5 | 325 // C3.3.5 |
| 333 enum LoadRegLiteralOp { | 326 enum LoadRegLiteralOp { |
| 334 LoadRegLiteralMask = 0x3b000000, | 327 LoadRegLiteralMask = 0x3b000000, |
| 335 LoadRegLiteralFixed = LoadStoreFixed | B28, | 328 LoadRegLiteralFixed = LoadStoreFixed | B28, |
| 336 LDRpc = LoadRegLiteralFixed, | 329 LDRpc = LoadRegLiteralFixed, |
| 337 }; | 330 }; |
| 338 | 331 |
| 332 // C3.3.7-10 |
| 333 enum LoadStoreRegOp { |
| 334 LoadStoreRegMask = 0x3a000000, |
| 335 LoadStoreRegFixed = LoadStoreFixed | B29 | B28, |
| 336 STR = LoadStoreRegFixed, |
| 337 LDR = LoadStoreRegFixed | B22, |
| 338 FSTR = STR | B26, |
| 339 FLDR = LDR | B26, |
| 340 }; |
| 341 |
| 339 // C3.4.1 | 342 // C3.4.1 |
| 340 enum AddSubImmOp { | 343 enum AddSubImmOp { |
| 341 AddSubImmMask = 0x1f000000, | 344 AddSubImmMask = 0x1f000000, |
| 342 AddSubImmFixed = DPImmediateFixed | B24, | 345 AddSubImmFixed = DPImmediateFixed | B24, |
| 343 ADDI = AddSubImmFixed, | 346 ADDI = AddSubImmFixed, |
| 344 SUBI = AddSubImmFixed | B30, | 347 SUBI = AddSubImmFixed | B30, |
| 345 }; | 348 }; |
| 346 | 349 |
| 347 // C3.4.4 | 350 // C3.4.4 |
| 348 enum LogicalImmOp { | 351 enum LogicalImmOp { |
| (...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 517 kRmShift = 16, | 520 kRmShift = 16, |
| 518 kRmBits = 5, | 521 kRmBits = 5, |
| 519 kRtShift = 0, | 522 kRtShift = 0, |
| 520 kRtBits = 5, | 523 kRtBits = 5, |
| 521 | 524 |
| 522 // V Registers. | 525 // V Registers. |
| 523 kVdShift = 0, | 526 kVdShift = 0, |
| 524 kVdBits = 5, | 527 kVdBits = 5, |
| 525 kVnShift = 5, | 528 kVnShift = 5, |
| 526 kVnBits = 5, | 529 kVnBits = 5, |
| 530 kVtShift = 0, |
| 531 kVtBits = 5, |
| 527 | 532 |
| 528 // Immediates. | 533 // Immediates. |
| 529 kImm3Shift = 10, | 534 kImm3Shift = 10, |
| 530 kImm3Bits = 3, | 535 kImm3Bits = 3, |
| 531 kImm6Shift = 10, | 536 kImm6Shift = 10, |
| 532 kImm6Bits = 6, | 537 kImm6Bits = 6, |
| 533 kImm8Shift = 13, | 538 kImm8Shift = 13, |
| 534 kImm8Bits = 8, | 539 kImm8Bits = 8, |
| 535 kImm9Shift = 12, | 540 kImm9Shift = 12, |
| 536 kImm9Bits = 9, | 541 kImm9Bits = 9, |
| (...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 685 Bits(kRaShift, kRaBits)); } | 690 Bits(kRaShift, kRaBits)); } |
| 686 inline Register RmField() const { return static_cast<Register>( | 691 inline Register RmField() const { return static_cast<Register>( |
| 687 Bits(kRmShift, kRmBits)); } | 692 Bits(kRmShift, kRmBits)); } |
| 688 inline Register RtField() const { return static_cast<Register>( | 693 inline Register RtField() const { return static_cast<Register>( |
| 689 Bits(kRtShift, kRtBits)); } | 694 Bits(kRtShift, kRtBits)); } |
| 690 | 695 |
| 691 inline VRegister VdField() const { return static_cast<VRegister>( | 696 inline VRegister VdField() const { return static_cast<VRegister>( |
| 692 Bits(kVdShift, kVdBits)); } | 697 Bits(kVdShift, kVdBits)); } |
| 693 inline VRegister VnField() const { return static_cast<VRegister>( | 698 inline VRegister VnField() const { return static_cast<VRegister>( |
| 694 Bits(kVnShift, kVnBits)); } | 699 Bits(kVnShift, kVnBits)); } |
| 700 inline VRegister VtField() const { return static_cast<VRegister>( |
| 701 Bits(kVtShift, kVtBits)); } |
| 695 | 702 |
| 696 // Immediates | 703 // Immediates |
| 697 inline int Imm3Field() const { return Bits(kImm3Shift, kImm3Bits); } | 704 inline int Imm3Field() const { return Bits(kImm3Shift, kImm3Bits); } |
| 698 inline int Imm6Field() const { return Bits(kImm6Shift, kImm6Bits); } | 705 inline int Imm6Field() const { return Bits(kImm6Shift, kImm6Bits); } |
| 699 inline int Imm8Field() const { return Bits(kImm8Shift, kImm8Bits); } | 706 inline int Imm8Field() const { return Bits(kImm8Shift, kImm8Bits); } |
| 700 inline int Imm9Field() const { return Bits(kImm9Shift, kImm9Bits); } | 707 inline int Imm9Field() const { return Bits(kImm9Shift, kImm9Bits); } |
| 701 // Sign-extended Imm9Field() | 708 // Sign-extended Imm9Field() |
| 702 inline int64_t SImm9Field() const { | 709 inline int64_t SImm9Field() const { |
| 703 return (static_cast<int32_t>(Imm9Field()) << 23) >> 23; } | 710 return (static_cast<int32_t>(Imm9Field()) << 23) >> 23; } |
| 704 | 711 |
| (...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 861 static Instr* At(uword pc) { return reinterpret_cast<Instr*>(pc); } | 868 static Instr* At(uword pc) { return reinterpret_cast<Instr*>(pc); } |
| 862 | 869 |
| 863 private: | 870 private: |
| 864 DISALLOW_ALLOCATION(); | 871 DISALLOW_ALLOCATION(); |
| 865 DISALLOW_IMPLICIT_CONSTRUCTORS(Instr); | 872 DISALLOW_IMPLICIT_CONSTRUCTORS(Instr); |
| 866 }; | 873 }; |
| 867 | 874 |
| 868 } // namespace dart | 875 } // namespace dart |
| 869 | 876 |
| 870 #endif // VM_CONSTANTS_ARM64_H_ | 877 #endif // VM_CONSTANTS_ARM64_H_ |
| OLD | NEW |