| Index: src/arm64/decoder-arm64.h
|
| diff --git a/src/arm64/decoder-arm64.h b/src/arm64/decoder-arm64.h
|
| index a17b3244128c75c79734dec1bef1c8c6b8456db3..a89bf38980e711c16caaf7a0158e36480b8ba978 100644
|
| --- a/src/arm64/decoder-arm64.h
|
| +++ b/src/arm64/decoder-arm64.h
|
| @@ -16,50 +16,72 @@ namespace internal {
|
|
|
| // List macro containing all visitors needed by the decoder class.
|
|
|
| -#define VISITOR_LIST(V) \
|
| - V(PCRelAddressing) \
|
| - V(AddSubImmediate) \
|
| - V(LogicalImmediate) \
|
| - V(MoveWideImmediate) \
|
| - V(Bitfield) \
|
| - V(Extract) \
|
| - V(UnconditionalBranch) \
|
| - V(UnconditionalBranchToRegister) \
|
| - V(CompareBranch) \
|
| - V(TestBranch) \
|
| - V(ConditionalBranch) \
|
| - V(System) \
|
| - V(Exception) \
|
| - V(LoadStorePairPostIndex) \
|
| - V(LoadStorePairOffset) \
|
| - V(LoadStorePairPreIndex) \
|
| - V(LoadLiteral) \
|
| - V(LoadStoreUnscaledOffset) \
|
| - V(LoadStorePostIndex) \
|
| - V(LoadStorePreIndex) \
|
| - V(LoadStoreRegisterOffset) \
|
| - V(LoadStoreUnsignedOffset) \
|
| - V(LoadStoreAcquireRelease) \
|
| - V(LogicalShifted) \
|
| - V(AddSubShifted) \
|
| - V(AddSubExtended) \
|
| - V(AddSubWithCarry) \
|
| - V(ConditionalCompareRegister) \
|
| - V(ConditionalCompareImmediate) \
|
| - V(ConditionalSelect) \
|
| - V(DataProcessing1Source) \
|
| - V(DataProcessing2Source) \
|
| - V(DataProcessing3Source) \
|
| - V(FPCompare) \
|
| - V(FPConditionalCompare) \
|
| - V(FPConditionalSelect) \
|
| - V(FPImmediate) \
|
| - V(FPDataProcessing1Source) \
|
| - V(FPDataProcessing2Source) \
|
| - V(FPDataProcessing3Source) \
|
| - V(FPIntegerConvert) \
|
| - V(FPFixedPointConvert) \
|
| - V(Unallocated) \
|
| +#define VISITOR_LIST(V) \
|
| + V(PCRelAddressing) \
|
| + V(AddSubImmediate) \
|
| + V(LogicalImmediate) \
|
| + V(MoveWideImmediate) \
|
| + V(Bitfield) \
|
| + V(Extract) \
|
| + V(UnconditionalBranch) \
|
| + V(UnconditionalBranchToRegister) \
|
| + V(CompareBranch) \
|
| + V(TestBranch) \
|
| + V(ConditionalBranch) \
|
| + V(System) \
|
| + V(Exception) \
|
| + V(LoadStorePairPostIndex) \
|
| + V(LoadStorePairOffset) \
|
| + V(LoadStorePairPreIndex) \
|
| + V(LoadLiteral) \
|
| + V(LoadStoreUnscaledOffset) \
|
| + V(LoadStorePostIndex) \
|
| + V(LoadStorePreIndex) \
|
| + V(LoadStoreRegisterOffset) \
|
| + V(LoadStoreUnsignedOffset) \
|
| + V(LoadStoreAcquireRelease) \
|
| + V(LogicalShifted) \
|
| + V(AddSubShifted) \
|
| + V(AddSubExtended) \
|
| + V(AddSubWithCarry) \
|
| + V(ConditionalCompareRegister) \
|
| + V(ConditionalCompareImmediate) \
|
| + V(ConditionalSelect) \
|
| + V(DataProcessing1Source) \
|
| + V(DataProcessing2Source) \
|
| + V(DataProcessing3Source) \
|
| + V(FPCompare) \
|
| + V(FPConditionalCompare) \
|
| + V(FPConditionalSelect) \
|
| + V(FPImmediate) \
|
| + V(FPDataProcessing1Source) \
|
| + V(FPDataProcessing2Source) \
|
| + V(FPDataProcessing3Source) \
|
| + V(FPIntegerConvert) \
|
| + V(FPFixedPointConvert) \
|
| + V(NEON2RegMisc) \
|
| + V(NEON3Different) \
|
| + V(NEON3Same) \
|
| + V(NEONAcrossLanes) \
|
| + V(NEONByIndexedElement) \
|
| + V(NEONCopy) \
|
| + V(NEONExtract) \
|
| + V(NEONLoadStoreMultiStruct) \
|
| + V(NEONLoadStoreMultiStructPostIndex) \
|
| + V(NEONLoadStoreSingleStruct) \
|
| + V(NEONLoadStoreSingleStructPostIndex) \
|
| + V(NEONModifiedImmediate) \
|
| + V(NEONScalar2RegMisc) \
|
| + V(NEONScalar3Diff) \
|
| + V(NEONScalar3Same) \
|
| + V(NEONScalarByIndexedElement) \
|
| + V(NEONScalarCopy) \
|
| + V(NEONScalarPairwise) \
|
| + V(NEONScalarShiftImmediate) \
|
| + V(NEONShiftImmediate) \
|
| + V(NEONTable) \
|
| + V(NEONPerm) \
|
| + V(Unallocated) \
|
| V(Unimplemented)
|
|
|
| // The Visitor interface. Disassembler and simulator (and other tools)
|
| @@ -109,6 +131,8 @@ class DispatchingDecoderVisitor : public DecoderVisitor {
|
| // stored by the decoder.
|
| void RemoveVisitor(DecoderVisitor* visitor);
|
|
|
| + void VisitNEONShiftImmediate(const Instruction* instr);
|
| +
|
| #define DECLARE(A) void Visit##A(Instruction* instr);
|
| VISITOR_LIST(DECLARE)
|
| #undef DECLARE
|
| @@ -173,12 +197,17 @@ class Decoder : public V {
|
| // Decode the Advanced SIMD (NEON) load/store part of the instruction tree,
|
| // and call the corresponding visitors.
|
| // On entry, instruction bits 29:25 = 0x6.
|
| - void DecodeAdvSIMDLoadStore(Instruction* instr);
|
| + void DecodeNEONLoadStore(Instruction* instr);
|
|
|
| // Decode the Advanced SIMD (NEON) data processing part of the instruction
|
| // tree, and call the corresponding visitors.
|
| // On entry, instruction bits 27:25 = 0x7.
|
| - void DecodeAdvSIMDDataProcessing(Instruction* instr);
|
| + void DecodeNEONVectorDataProcessing(Instruction* instr);
|
| +
|
| + // Decode the Advanced SIMD (NEON) scalar data processing part of the
|
| + // instruction tree, and call the corresponding visitors.
|
| + // On entry, instruction bits 28:25 = 0xF.
|
| + void DecodeNEONScalarDataProcessing(Instruction* instr);
|
| };
|
|
|
|
|
|
|