#include "llvm/MC/MCInst.h"
#include "llvm/MC/MCSubtargetInfo.h"
#include "llvm/Support/DataTypes.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/LEB128.h"
#include "llvm/Support/raw_ostream.h"
#include "llvm/TargetParser/SubtargetFeature.h"
#include <assert.h>
namespace llvm {
template <typename InsnType>
#if defined(_MSC_VER) && !defined(__clang__)
__declspec(noinline)
#endif
static std::enable_if_t<std::is_integral<InsnType>::value, InsnType>
fieldFromInstruction(const InsnType &insn, unsigned startBit,
unsigned numBits) { … }
template <typename InsnType>
static std::enable_if_t<!std::is_integral<InsnType>::value, uint64_t>
fieldFromInstruction(const InsnType &insn, unsigned startBit,
unsigned numBits) { … }
template <typename InsnType>
static std::enable_if_t<std::is_integral<InsnType>::value>
insertBits(InsnType &field, InsnType bits, unsigned startBit, unsigned numBits) { … }
template <typename InsnType>
static std::enable_if_t<!std::is_integral<InsnType>::value>
insertBits(InsnType &field, uint64_t bits, unsigned startBit, unsigned numBits) { … }
static bool Check(DecodeStatus &Out, DecodeStatus In) { … }
static const uint8_t DecoderTableARM32[] = …;
static const uint8_t DecoderTableCoProc32[] = …;
static const uint8_t DecoderTableMVE32[] = …;
static const uint8_t DecoderTableNEONData32[] = …static const uint8_t DecoderTableNEONDup32[] = …static const uint8_t DecoderTableNEONLoadStore32[] = …static const uint8_t DecoderTableThumb16[] = …static const uint8_t DecoderTableThumb32[] = …static const uint8_t DecoderTableThumb216[] = …static const uint8_t DecoderTableThumb232[] = …static const uint8_t DecoderTableThumb2CDE32[] = …static const uint8_t DecoderTableThumb2CoProc32[] = …static const uint8_t DecoderTableThumbSBit16[] = …static const uint8_t DecoderTableVFP32[] = …static const uint8_t DecoderTableVFPV832[] = …static const uint8_t DecoderTablev8Crypto32[] = …static const uint8_t DecoderTablev8NEON32[] = …static bool checkDecoderPredicate(unsigned Idx, const FeatureBitset &Bits) { … }template <typename InsnType>
static DecodeStatus decodeToMCInst(DecodeStatus S, unsigned Idx, InsnType insn, MCInst &MI,
uint64_t Address, const MCDisassembler *Decoder, bool &DecodeComplete) { … }template <typename InsnType>
static DecodeStatus decodeInstruction(const uint8_t DecodeTable[], MCInst &MI,
InsnType insn, uint64_t Address,
const MCDisassembler *DisAsm,
const MCSubtargetInfo &STI) { … }