|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#ifndef ASMJIT_ARM_A64INSTDB_H_INCLUDED
|
|
|
#define ASMJIT_ARM_A64INSTDB_H_INCLUDED
|
|
|
|
|
|
#include "../arm/a64globals.h"
|
|
|
|
|
|
ASMJIT_BEGIN_SUB_NAMESPACE(a64)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
namespace InstDB {
|
|
|
|
|
|
|
|
|
enum InstFlags : uint32_t {
|
|
|
|
|
|
kInstFlagCond = 0x00000001u,
|
|
|
|
|
|
kInstFlagPair = 0x00000002u,
|
|
|
|
|
|
kInstFlagLong = 0x00000004u,
|
|
|
|
|
|
kInstFlagNarrow = 0x00000008u,
|
|
|
|
|
|
kInstFlagVH0_15 = 0x00000010u,
|
|
|
|
|
|
|
|
|
kInstFlagConsecutive = 0x00000080u
|
|
|
};
|
|
|
|
|
|
|
|
|
struct InstInfo {
|
|
|
|
|
|
uint32_t _encoding : 8;
|
|
|
|
|
|
uint32_t _encodingDataIndex : 8;
|
|
|
uint32_t _reserved : 16;
|
|
|
|
|
|
uint16_t _rwInfoIndex;
|
|
|
uint16_t _flags;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ASMJIT_INLINE_NODEBUG uint32_t rwInfoIndex() const noexcept { return _rwInfoIndex; }
|
|
|
ASMJIT_INLINE_NODEBUG uint32_t flags() const noexcept { return _flags; }
|
|
|
|
|
|
ASMJIT_INLINE_NODEBUG bool hasFlag(uint32_t flag) const { return (_flags & flag) != 0; }
|
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
ASMJIT_VARAPI const InstInfo _instInfoTable[];
|
|
|
|
|
|
static inline const InstInfo& infoById(InstId instId) noexcept {
|
|
|
instId &= uint32_t(InstIdParts::kRealId);
|
|
|
ASMJIT_ASSERT(Inst::isDefinedId(instId));
|
|
|
return _instInfoTable[instId];
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
ASMJIT_END_SUB_NAMESPACE
|
|
|
|
|
|
#endif
|
|
|
|