5 #ifndef V8_ARM64_DECODER_ARM64_H_ 6 #define V8_ARM64_DECODER_ARM64_H_ 10 #include "src/arm64/instructions-arm64.h" 11 #include "src/globals.h" 19 #define VISITOR_LIST(V) \ 23 V(MoveWideImmediate) \ 26 V(UnconditionalBranch) \ 27 V(UnconditionalBranchToRegister) \ 30 V(ConditionalBranch) \ 33 V(LoadStorePairPostIndex) \ 34 V(LoadStorePairOffset) \ 35 V(LoadStorePairPreIndex) \ 37 V(LoadStoreUnscaledOffset) \ 38 V(LoadStorePostIndex) \ 39 V(LoadStorePreIndex) \ 40 V(LoadStoreRegisterOffset) \ 41 V(LoadStoreUnsignedOffset) \ 42 V(LoadStoreAcquireRelease) \ 47 V(ConditionalCompareRegister) \ 48 V(ConditionalCompareImmediate) \ 49 V(ConditionalSelect) \ 50 V(DataProcessing1Source) \ 51 V(DataProcessing2Source) \ 52 V(DataProcessing3Source) \ 54 V(FPConditionalCompare) \ 55 V(FPConditionalSelect) \ 57 V(FPDataProcessing1Source) \ 58 V(FPDataProcessing2Source) \ 59 V(FPDataProcessing3Source) \ 61 V(FPFixedPointConvert) \ 66 V(NEONByIndexedElement) \ 69 V(NEONLoadStoreMultiStruct) \ 70 V(NEONLoadStoreMultiStructPostIndex) \ 71 V(NEONLoadStoreSingleStruct) \ 72 V(NEONLoadStoreSingleStructPostIndex) \ 73 V(NEONModifiedImmediate) \ 74 V(NEONScalar2RegMisc) \ 77 V(NEONScalarByIndexedElement) \ 79 V(NEONScalarPairwise) \ 80 V(NEONScalarShiftImmediate) \ 81 V(NEONShiftImmediate) \ 93 #define DECLARE(A) virtual void Visit##A(Instruction* instr) = 0; 134 void VisitNEONShiftImmediate(
const Instruction* instr);
136 #define DECLARE(A) void Visit##A(Instruction* instr); 137 VISITOR_LIST(DECLARE)
142 std::list<DecoderVisitor*> visitors_;
170 void DecodeBranchSystemException(
Instruction* instr);
205 void DecodeNEONVectorDataProcessing(
Instruction* instr);
210 void DecodeNEONScalarDataProcessing(
Instruction* instr);
217 #endif // V8_ARM64_DECODER_ARM64_H_