LLVM 22.0.0git
XtensaDisassembler.cpp File Reference

Go to the source code of this file.

Classes

struct  DecodeRegister

Macros

#define DEBUG_TYPE   "Xtensa-disassembler"

Functions

static MCDisassemblercreateXtensaDisassembler (const Target &T, const MCSubtargetInfo &STI, MCContext &Ctx)
LLVM_EXTERNAL_VISIBILITY void LLVMInitializeXtensaDisassembler ()
static DecodeStatus DecodeARRegisterClass (MCInst &Inst, uint64_t RegNo, uint64_t Address, const void *Decoder)
static DecodeStatus DecodeMRRegisterClass (MCInst &Inst, uint64_t RegNo, uint64_t Address, const void *Decoder)
static DecodeStatus DecodeMR01RegisterClass (MCInst &Inst, uint64_t RegNo, uint64_t Address, const void *Decoder)
static DecodeStatus DecodeMR23RegisterClass (MCInst &Inst, uint64_t RegNo, uint64_t Address, const void *Decoder)
static DecodeStatus DecodeFPRRegisterClass (MCInst &Inst, uint64_t RegNo, uint64_t Address, const void *Decoder)
static DecodeStatus DecodeURRegisterClass (MCInst &Inst, uint64_t RegNo, uint64_t Address, const MCDisassembler *Decoder)
static DecodeStatus DecodeSRRegisterClass (MCInst &Inst, uint64_t RegNo, uint64_t Address, const MCDisassembler *Decoder)
static DecodeStatus DecodeBRRegisterClass (MCInst &Inst, uint64_t RegNo, uint64_t Address, const void *Decoder)
static bool tryAddingSymbolicOperand (int64_t Value, bool isBranch, uint64_t Address, uint64_t Offset, uint64_t InstSize, MCInst &MI, const void *Decoder)
static DecodeStatus decodeCallOperand (MCInst &Inst, uint64_t Imm, int64_t Address, const void *Decoder)
static DecodeStatus decodeJumpOperand (MCInst &Inst, uint64_t Imm, int64_t Address, const void *Decoder)
static DecodeStatus decodeBranchOperand (MCInst &Inst, uint64_t Imm, int64_t Address, const void *Decoder)
static DecodeStatus decodeLoopOperand (MCInst &Inst, uint64_t Imm, int64_t Address, const void *Decoder)
static DecodeStatus decodeL32ROperand (MCInst &Inst, uint64_t Imm, int64_t Address, const void *Decoder)
static DecodeStatus decodeImm8Operand (MCInst &Inst, uint64_t Imm, int64_t Address, const void *Decoder)
static DecodeStatus decodeImm8_sh8Operand (MCInst &Inst, uint64_t Imm, int64_t Address, const void *Decoder)
static DecodeStatus decodeImm12Operand (MCInst &Inst, uint64_t Imm, int64_t Address, const void *Decoder)
static DecodeStatus decodeUimm4Operand (MCInst &Inst, uint64_t Imm, int64_t Address, const void *Decoder)
static DecodeStatus decodeUimm5Operand (MCInst &Inst, uint64_t Imm, int64_t Address, const void *Decoder)
static DecodeStatus decodeImm1_16Operand (MCInst &Inst, uint64_t Imm, int64_t Address, const void *Decoder)
static DecodeStatus decodeImm1n_15Operand (MCInst &Inst, uint64_t Imm, int64_t Address, const void *Decoder)
static DecodeStatus decodeImm32n_95Operand (MCInst &Inst, uint64_t Imm, int64_t Address, const void *Decoder)
static DecodeStatus decodeImm8n_7Operand (MCInst &Inst, uint64_t Imm, int64_t Address, const void *Decoder)
static DecodeStatus decodeImm64n_4nOperand (MCInst &Inst, uint64_t Imm, int64_t Address, const void *Decoder)
static DecodeStatus decodeEntry_Imm12OpValue (MCInst &Inst, uint64_t Imm, int64_t Address, const void *Decoder)
static DecodeStatus decodeShimm1_31Operand (MCInst &Inst, uint64_t Imm, int64_t Address, const void *Decoder)
static DecodeStatus decodeB4constOperand (MCInst &Inst, uint64_t Imm, int64_t Address, const void *Decoder)
static DecodeStatus decodeB4constuOperand (MCInst &Inst, uint64_t Imm, int64_t Address, const void *Decoder)
static DecodeStatus decodeImm7_22Operand (MCInst &Inst, uint64_t Imm, int64_t Address, const void *Decoder)
static DecodeStatus decodeMem8Operand (MCInst &Inst, uint64_t Imm, int64_t Address, const void *Decoder)
static DecodeStatus decodeMem16Operand (MCInst &Inst, uint64_t Imm, int64_t Address, const void *Decoder)
static DecodeStatus decodeMem32Operand (MCInst &Inst, uint64_t Imm, int64_t Address, const void *Decoder)
static DecodeStatus decodeMem32nOperand (MCInst &Inst, uint64_t Imm, int64_t Address, const void *Decoder)
static DecodeStatus readInstruction16 (ArrayRef< uint8_t > Bytes, uint64_t Address, uint64_t &Size, uint64_t &Insn, bool IsLittleEndian)
 Read two bytes from the ArrayRef and return 16 bit data sorted according to the given endianness.
static DecodeStatus readInstruction24 (ArrayRef< uint8_t > Bytes, uint64_t Address, uint64_t &Size, uint64_t &Insn, bool IsLittleEndian)
 Read three bytes from the ArrayRef and return 24 bit data.

Variables

const MCPhysReg ARDecoderTable []
const DecodeRegister SRDecoderTable []
static int64_t TableB4const [16]
static int64_t TableB4constu [16]

Macro Definition Documentation

◆ DEBUG_TYPE

#define DEBUG_TYPE   "Xtensa-disassembler"

Definition at line 30 of file XtensaDisassembler.cpp.

Function Documentation

◆ createXtensaDisassembler()

MCDisassembler * createXtensaDisassembler ( const Target & T,
const MCSubtargetInfo & STI,
MCContext & Ctx )
static

Definition at line 51 of file XtensaDisassembler.cpp.

References T.

Referenced by LLVMInitializeXtensaDisassembler().

◆ DecodeARRegisterClass()

◆ decodeB4constOperand()

DecodeStatus decodeB4constOperand ( MCInst & Inst,
uint64_t Imm,
int64_t Address,
const void * Decoder )
static

◆ decodeB4constuOperand()

DecodeStatus decodeB4constuOperand ( MCInst & Inst,
uint64_t Imm,
int64_t Address,
const void * Decoder )
static

◆ decodeBranchOperand()

◆ DecodeBRRegisterClass()

DecodeStatus DecodeBRRegisterClass ( MCInst & Inst,
uint64_t RegNo,
uint64_t Address,
const void * Decoder )
static

◆ decodeCallOperand()

DecodeStatus decodeCallOperand ( MCInst & Inst,
uint64_t Imm,
int64_t Address,
const void * Decoder )
static

◆ decodeEntry_Imm12OpValue()

DecodeStatus decodeEntry_Imm12OpValue ( MCInst & Inst,
uint64_t Imm,
int64_t Address,
const void * Decoder )
static

◆ DecodeFPRRegisterClass()

DecodeStatus DecodeFPRRegisterClass ( MCInst & Inst,
uint64_t RegNo,
uint64_t Address,
const void * Decoder )
static

◆ decodeImm12Operand()

DecodeStatus decodeImm12Operand ( MCInst & Inst,
uint64_t Imm,
int64_t Address,
const void * Decoder )
static

◆ decodeImm1_16Operand()

DecodeStatus decodeImm1_16Operand ( MCInst & Inst,
uint64_t Imm,
int64_t Address,
const void * Decoder )
static

◆ decodeImm1n_15Operand()

DecodeStatus decodeImm1n_15Operand ( MCInst & Inst,
uint64_t Imm,
int64_t Address,
const void * Decoder )
static

◆ decodeImm32n_95Operand()

DecodeStatus decodeImm32n_95Operand ( MCInst & Inst,
uint64_t Imm,
int64_t Address,
const void * Decoder )
static

◆ decodeImm64n_4nOperand()

DecodeStatus decodeImm64n_4nOperand ( MCInst & Inst,
uint64_t Imm,
int64_t Address,
const void * Decoder )
static

◆ decodeImm7_22Operand()

DecodeStatus decodeImm7_22Operand ( MCInst & Inst,
uint64_t Imm,
int64_t Address,
const void * Decoder )
static

◆ decodeImm8_sh8Operand()

DecodeStatus decodeImm8_sh8Operand ( MCInst & Inst,
uint64_t Imm,
int64_t Address,
const void * Decoder )
static

◆ decodeImm8n_7Operand()

DecodeStatus decodeImm8n_7Operand ( MCInst & Inst,
uint64_t Imm,
int64_t Address,
const void * Decoder )
static

◆ decodeImm8Operand()

DecodeStatus decodeImm8Operand ( MCInst & Inst,
uint64_t Imm,
int64_t Address,
const void * Decoder )
static

◆ decodeJumpOperand()

DecodeStatus decodeJumpOperand ( MCInst & Inst,
uint64_t Imm,
int64_t Address,
const void * Decoder )
static

◆ decodeL32ROperand()

DecodeStatus decodeL32ROperand ( MCInst & Inst,
uint64_t Imm,
int64_t Address,
const void * Decoder )
static

◆ decodeLoopOperand()

DecodeStatus decodeLoopOperand ( MCInst & Inst,
uint64_t Imm,
int64_t Address,
const void * Decoder )
static

◆ decodeMem16Operand()

DecodeStatus decodeMem16Operand ( MCInst & Inst,
uint64_t Imm,
int64_t Address,
const void * Decoder )
static

◆ decodeMem32nOperand()

DecodeStatus decodeMem32nOperand ( MCInst & Inst,
uint64_t Imm,
int64_t Address,
const void * Decoder )
static

◆ decodeMem32Operand()

DecodeStatus decodeMem32Operand ( MCInst & Inst,
uint64_t Imm,
int64_t Address,
const void * Decoder )
static

◆ decodeMem8Operand()

DecodeStatus decodeMem8Operand ( MCInst & Inst,
uint64_t Imm,
int64_t Address,
const void * Decoder )
static

◆ DecodeMR01RegisterClass()

DecodeStatus DecodeMR01RegisterClass ( MCInst & Inst,
uint64_t RegNo,
uint64_t Address,
const void * Decoder )
static

◆ DecodeMR23RegisterClass()

DecodeStatus DecodeMR23RegisterClass ( MCInst & Inst,
uint64_t RegNo,
uint64_t Address,
const void * Decoder )
static

◆ DecodeMRRegisterClass()

DecodeStatus DecodeMRRegisterClass ( MCInst & Inst,
uint64_t RegNo,
uint64_t Address,
const void * Decoder )
static

◆ decodeShimm1_31Operand()

DecodeStatus decodeShimm1_31Operand ( MCInst & Inst,
uint64_t Imm,
int64_t Address,
const void * Decoder )
static

◆ DecodeSRRegisterClass()

◆ decodeUimm4Operand()

DecodeStatus decodeUimm4Operand ( MCInst & Inst,
uint64_t Imm,
int64_t Address,
const void * Decoder )
static

◆ decodeUimm5Operand()

DecodeStatus decodeUimm5Operand ( MCInst & Inst,
uint64_t Imm,
int64_t Address,
const void * Decoder )
static

◆ DecodeURRegisterClass()

◆ LLVMInitializeXtensaDisassembler()

◆ readInstruction16()

DecodeStatus readInstruction16 ( ArrayRef< uint8_t > Bytes,
uint64_t Address,
uint64_t & Size,
uint64_t & Insn,
bool IsLittleEndian )
static

Read two bytes from the ArrayRef and return 16 bit data sorted according to the given endianness.

Definition at line 452 of file XtensaDisassembler.cpp.

References llvm::MCDisassembler::Fail, llvm::report_fatal_error(), Size, llvm::ArrayRef< T >::size(), and llvm::MCDisassembler::Success.

◆ readInstruction24()

DecodeStatus readInstruction24 ( ArrayRef< uint8_t > Bytes,
uint64_t Address,
uint64_t & Size,
uint64_t & Insn,
bool IsLittleEndian )
static

Read three bytes from the ArrayRef and return 24 bit data.

Definition at line 471 of file XtensaDisassembler.cpp.

References llvm::MCDisassembler::Fail, llvm::report_fatal_error(), Size, llvm::ArrayRef< T >::size(), and llvm::MCDisassembler::Success.

◆ tryAddingSymbolicOperand()

bool tryAddingSymbolicOperand ( int64_t Value,
bool isBranch,
uint64_t Address,
uint64_t Offset,
uint64_t InstSize,
MCInst & MI,
const void * Decoder )
static

Variable Documentation

◆ ARDecoderTable

const MCPhysReg ARDecoderTable[]
Initial value:
= {
Xtensa::A0, Xtensa::SP, Xtensa::A2, Xtensa::A3, Xtensa::A4, Xtensa::A5,
Xtensa::A6, Xtensa::A7, Xtensa::A8, Xtensa::A9, Xtensa::A10, Xtensa::A11,
Xtensa::A12, Xtensa::A13, Xtensa::A14, Xtensa::A15}

Definition at line 62 of file XtensaDisassembler.cpp.

Referenced by DecodeARRegisterClass().

◆ SRDecoderTable

const DecodeRegister SRDecoderTable[]

Definition at line 149 of file XtensaDisassembler.cpp.

Referenced by DecodeSRRegisterClass().

◆ TableB4const

int64_t TableB4const[16]
static
Initial value:
= {-1, 1, 2, 3, 4, 5, 6, 7,
8, 10, 12, 16, 32, 64, 128, 256}

Definition at line 390 of file XtensaDisassembler.cpp.

Referenced by decodeB4constOperand().

◆ TableB4constu

int64_t TableB4constu[16]
static
Initial value:
= {32768, 65536, 2, 3, 4, 5, 6, 7,
8, 10, 12, 16, 32, 64, 128, 256}

Definition at line 400 of file XtensaDisassembler.cpp.

Referenced by decodeB4constuOperand().