OLD | NEW |
1 // Copyright 2013 the V8 project authors. All rights reserved. | 1 // Copyright 2013 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_ARM64_ASSEMBLER_ARM64_H_ | 5 #ifndef V8_ARM64_ASSEMBLER_ARM64_H_ |
6 #define V8_ARM64_ASSEMBLER_ARM64_H_ | 6 #define V8_ARM64_ASSEMBLER_ARM64_H_ |
7 | 7 |
8 #include <list> | 8 #include <list> |
9 #include <map> | 9 #include <map> |
10 | 10 |
(...skipping 711 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
722 unsigned shift_amount() const { return shift_amount_; } | 722 unsigned shift_amount() const { return shift_amount_; } |
723 inline bool IsImmediateOffset() const; | 723 inline bool IsImmediateOffset() const; |
724 inline bool IsRegisterOffset() const; | 724 inline bool IsRegisterOffset() const; |
725 inline bool IsPreIndex() const; | 725 inline bool IsPreIndex() const; |
726 inline bool IsPostIndex() const; | 726 inline bool IsPostIndex() const; |
727 | 727 |
728 // For offset modes, return the offset as an Operand. This helper cannot | 728 // For offset modes, return the offset as an Operand. This helper cannot |
729 // handle indexed modes. | 729 // handle indexed modes. |
730 inline Operand OffsetAsOperand() const; | 730 inline Operand OffsetAsOperand() const; |
731 | 731 |
| 732 enum PairResult { |
| 733 kNotPair, // Can't use a pair instruction. |
| 734 kPairAB, // Can use a pair instruction (operandA has lower address). |
| 735 kPairBA // Can use a pair instruction (operandB has lower address). |
| 736 }; |
| 737 // Check if two MemOperand are consistent for stp/ldp use. |
| 738 static PairResult AreConsistentForPair(const MemOperand& operandA, |
| 739 const MemOperand& operandB, |
| 740 int access_size_log2 = kXRegSizeLog2); |
| 741 |
732 private: | 742 private: |
733 Register base_; | 743 Register base_; |
734 Register regoffset_; | 744 Register regoffset_; |
735 ptrdiff_t offset_; | 745 ptrdiff_t offset_; |
736 AddrMode addrmode_; | 746 AddrMode addrmode_; |
737 Shift shift_; | 747 Shift shift_; |
738 Extend extend_; | 748 Extend extend_; |
739 unsigned shift_amount_; | 749 unsigned shift_amount_; |
740 }; | 750 }; |
741 | 751 |
(...skipping 1505 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2247 class EnsureSpace BASE_EMBEDDED { | 2257 class EnsureSpace BASE_EMBEDDED { |
2248 public: | 2258 public: |
2249 explicit EnsureSpace(Assembler* assembler) { | 2259 explicit EnsureSpace(Assembler* assembler) { |
2250 assembler->CheckBufferSpace(); | 2260 assembler->CheckBufferSpace(); |
2251 } | 2261 } |
2252 }; | 2262 }; |
2253 | 2263 |
2254 } } // namespace v8::internal | 2264 } } // namespace v8::internal |
2255 | 2265 |
2256 #endif // V8_ARM64_ASSEMBLER_ARM64_H_ | 2266 #endif // V8_ARM64_ASSEMBLER_ARM64_H_ |
OLD | NEW |