LLVM API Documentation
#include "PPC.h"
#include "llvm/MC/MCDisassembler.h"
#include "llvm/MC/MCFixedLenDisassembler.h"
#include "llvm/MC/MCInst.h"
#include "llvm/MC/MCSubtargetInfo.h"
#include "llvm/Support/MemoryObject.h"
#include "llvm/Support/TargetRegistry.h"
#include "PPCGenDisassemblerTables.inc"
Go to the source code of this file.
Defines | |
#define | DEBUG_TYPE "ppc-disassembler" |
#define | DecodePointerLikeRegClass0 DecodeGPRCRegisterClass |
#define | DecodePointerLikeRegClass1 DecodeGPRC_NOR0RegisterClass |
Typedefs | |
typedef MCDisassembler::DecodeStatus | DecodeStatus |
Functions | |
static MCDisassembler * | createPPCDisassembler (const Target &T, const MCSubtargetInfo &STI, MCContext &Ctx) |
void | LLVMInitializePowerPCDisassembler () |
template<std::size_t N> | |
static DecodeStatus | decodeRegisterClass (MCInst &Inst, uint64_t RegNo, const unsigned(&Regs)[N]) |
static DecodeStatus | DecodeCRRCRegisterClass (MCInst &Inst, uint64_t RegNo, uint64_t Address, const void *Decoder) |
static DecodeStatus | DecodeCRBITRCRegisterClass (MCInst &Inst, uint64_t RegNo, uint64_t Address, const void *Decoder) |
static DecodeStatus | DecodeF4RCRegisterClass (MCInst &Inst, uint64_t RegNo, uint64_t Address, const void *Decoder) |
static DecodeStatus | DecodeF8RCRegisterClass (MCInst &Inst, uint64_t RegNo, uint64_t Address, const void *Decoder) |
static DecodeStatus | DecodeVRRCRegisterClass (MCInst &Inst, uint64_t RegNo, uint64_t Address, const void *Decoder) |
static DecodeStatus | DecodeVSRCRegisterClass (MCInst &Inst, uint64_t RegNo, uint64_t Address, const void *Decoder) |
static DecodeStatus | DecodeVSFRCRegisterClass (MCInst &Inst, uint64_t RegNo, uint64_t Address, const void *Decoder) |
static DecodeStatus | DecodeGPRCRegisterClass (MCInst &Inst, uint64_t RegNo, uint64_t Address, const void *Decoder) |
static DecodeStatus | DecodeGPRC_NOR0RegisterClass (MCInst &Inst, uint64_t RegNo, uint64_t Address, const void *Decoder) |
static DecodeStatus | DecodeG8RCRegisterClass (MCInst &Inst, uint64_t RegNo, uint64_t Address, const void *Decoder) |
template<unsigned N> | |
static DecodeStatus | decodeUImmOperand (MCInst &Inst, uint64_t Imm, int64_t Address, const void *Decoder) |
template<unsigned N> | |
static DecodeStatus | decodeSImmOperand (MCInst &Inst, uint64_t Imm, int64_t Address, const void *Decoder) |
static DecodeStatus | decodeMemRIOperands (MCInst &Inst, uint64_t Imm, int64_t Address, const void *Decoder) |
static DecodeStatus | decodeMemRIXOperands (MCInst &Inst, uint64_t Imm, int64_t Address, const void *Decoder) |
static DecodeStatus | decodeCRBitMOperand (MCInst &Inst, uint64_t Imm, int64_t Address, const void *Decoder) |
Variables | |
static const unsigned | CRRegs [] |
static const unsigned | CRBITRegs [] |
static const unsigned | FRegs [] |
static const unsigned | VRegs [] |
static const unsigned | VSRegs [] |
static const unsigned | VSFRegs [] |
static const unsigned | GPRegs [] |
static const unsigned | GP0Regs [] |
static const unsigned | G8Regs [] |
#define DEBUG_TYPE "ppc-disassembler" |
Definition at line 20 of file PPCDisassembler.cpp.
Definition at line 237 of file PPCDisassembler.cpp.
Definition at line 238 of file PPCDisassembler.cpp.
Definition at line 22 of file PPCDisassembler.cpp.
static MCDisassembler* createPPCDisassembler | ( | const Target & | T, |
const MCSubtargetInfo & | STI, | ||
MCContext & | Ctx | ||
) | [static] |
Definition at line 39 of file PPCDisassembler.cpp.
Referenced by LLVMInitializePowerPCDisassembler().
static DecodeStatus decodeCRBitMOperand | ( | MCInst & | Inst, |
uint64_t | Imm, | ||
int64_t | Address, | ||
const void * | Decoder | ||
) | [static] |
Definition at line 312 of file PPCDisassembler.cpp.
References llvm::MCInst::addOperand(), llvm::countTrailingZeros(), llvm::MCOperand::CreateReg(), CRRegs, and llvm::MCDisassembler::Success.
static DecodeStatus DecodeCRBITRCRegisterClass | ( | MCInst & | Inst, |
uint64_t | RegNo, | ||
uint64_t | Address, | ||
const void * | Decoder | ||
) | [static] |
Definition at line 183 of file PPCDisassembler.cpp.
References CRBITRegs, and decodeRegisterClass().
static DecodeStatus DecodeCRRCRegisterClass | ( | MCInst & | Inst, |
uint64_t | RegNo, | ||
uint64_t | Address, | ||
const void * | Decoder | ||
) | [static] |
Definition at line 177 of file PPCDisassembler.cpp.
References CRRegs, and decodeRegisterClass().
static DecodeStatus DecodeF4RCRegisterClass | ( | MCInst & | Inst, |
uint64_t | RegNo, | ||
uint64_t | Address, | ||
const void * | Decoder | ||
) | [static] |
Definition at line 189 of file PPCDisassembler.cpp.
References decodeRegisterClass(), and FRegs.
static DecodeStatus DecodeF8RCRegisterClass | ( | MCInst & | Inst, |
uint64_t | RegNo, | ||
uint64_t | Address, | ||
const void * | Decoder | ||
) | [static] |
Definition at line 195 of file PPCDisassembler.cpp.
References decodeRegisterClass(), and FRegs.
static DecodeStatus DecodeG8RCRegisterClass | ( | MCInst & | Inst, |
uint64_t | RegNo, | ||
uint64_t | Address, | ||
const void * | Decoder | ||
) | [static] |
Definition at line 231 of file PPCDisassembler.cpp.
References decodeRegisterClass(), and G8Regs.
static DecodeStatus DecodeGPRC_NOR0RegisterClass | ( | MCInst & | Inst, |
uint64_t | RegNo, | ||
uint64_t | Address, | ||
const void * | Decoder | ||
) | [static] |
Definition at line 225 of file PPCDisassembler.cpp.
References decodeRegisterClass(), and GP0Regs.
static DecodeStatus DecodeGPRCRegisterClass | ( | MCInst & | Inst, |
uint64_t | RegNo, | ||
uint64_t | Address, | ||
const void * | Decoder | ||
) | [static] |
Definition at line 219 of file PPCDisassembler.cpp.
References decodeRegisterClass(), and GPRegs.
static DecodeStatus decodeMemRIOperands | ( | MCInst & | Inst, |
uint64_t | Imm, | ||
int64_t | Address, | ||
const void * | Decoder | ||
) | [static] |
Definition at line 256 of file PPCDisassembler.cpp.
References llvm::MCInst::addOperand(), llvm::MCInst::begin(), llvm::MCOperand::CreateImm(), llvm::MCOperand::CreateReg(), llvm::MCInst::getOpcode(), GP0Regs, llvm::MCInst::insert(), and llvm::MCDisassembler::Success.
static DecodeStatus decodeMemRIXOperands | ( | MCInst & | Inst, |
uint64_t | Imm, | ||
int64_t | Address, | ||
const void * | Decoder | ||
) | [static] |
Definition at line 291 of file PPCDisassembler.cpp.
References llvm::MCInst::addOperand(), llvm::MCInst::begin(), llvm::MCOperand::CreateImm(), llvm::MCOperand::CreateReg(), llvm::MCInst::getOpcode(), GP0Regs, llvm::MCInst::insert(), and llvm::MCDisassembler::Success.
static DecodeStatus decodeRegisterClass | ( | MCInst & | Inst, |
uint64_t | RegNo, | ||
const unsigned(&) | Regs[N] | ||
) | [static] |
Definition at line 170 of file PPCDisassembler.cpp.
References llvm::MCInst::addOperand(), llvm::MCOperand::CreateReg(), and llvm::MCDisassembler::Success.
Referenced by DecodeCRBITRCRegisterClass(), DecodeCRRCRegisterClass(), DecodeF4RCRegisterClass(), DecodeF8RCRegisterClass(), DecodeG8RCRegisterClass(), DecodeGPRC_NOR0RegisterClass(), DecodeGPRCRegisterClass(), DecodeVRRCRegisterClass(), DecodeVSFRCRegisterClass(), and DecodeVSRCRegisterClass().
static DecodeStatus decodeSImmOperand | ( | MCInst & | Inst, |
uint64_t | Imm, | ||
int64_t | Address, | ||
const void * | Decoder | ||
) | [static] |
Definition at line 249 of file PPCDisassembler.cpp.
References llvm::MCInst::addOperand(), llvm::MCOperand::CreateImm(), and llvm::MCDisassembler::Success.
static DecodeStatus decodeUImmOperand | ( | MCInst & | Inst, |
uint64_t | Imm, | ||
int64_t | Address, | ||
const void * | Decoder | ||
) | [static] |
Definition at line 241 of file PPCDisassembler.cpp.
References llvm::MCInst::addOperand(), llvm::MCOperand::CreateImm(), and llvm::MCDisassembler::Success.
static DecodeStatus DecodeVRRCRegisterClass | ( | MCInst & | Inst, |
uint64_t | RegNo, | ||
uint64_t | Address, | ||
const void * | Decoder | ||
) | [static] |
Definition at line 201 of file PPCDisassembler.cpp.
References decodeRegisterClass(), and VRegs.
static DecodeStatus DecodeVSFRCRegisterClass | ( | MCInst & | Inst, |
uint64_t | RegNo, | ||
uint64_t | Address, | ||
const void * | Decoder | ||
) | [static] |
Definition at line 213 of file PPCDisassembler.cpp.
References decodeRegisterClass(), and VSFRegs.
static DecodeStatus DecodeVSRCRegisterClass | ( | MCInst & | Inst, |
uint64_t | RegNo, | ||
uint64_t | Address, | ||
const void * | Decoder | ||
) | [static] |
Definition at line 207 of file PPCDisassembler.cpp.
References decodeRegisterClass(), and VSRegs.
void LLVMInitializePowerPCDisassembler | ( | ) |
Definition at line 45 of file PPCDisassembler.cpp.
References createPPCDisassembler(), llvm::TargetRegistry::RegisterMCDisassembler(), llvm::ThePPC32Target, llvm::ThePPC64LETarget, and llvm::ThePPC64Target.
{ PPC::CR0LT, PPC::CR0GT, PPC::CR0EQ, PPC::CR0UN, PPC::CR1LT, PPC::CR1GT, PPC::CR1EQ, PPC::CR1UN, PPC::CR2LT, PPC::CR2GT, PPC::CR2EQ, PPC::CR2UN, PPC::CR3LT, PPC::CR3GT, PPC::CR3EQ, PPC::CR3UN, PPC::CR4LT, PPC::CR4GT, PPC::CR4EQ, PPC::CR4UN, PPC::CR5LT, PPC::CR5GT, PPC::CR5EQ, PPC::CR5UN, PPC::CR6LT, PPC::CR6GT, PPC::CR6EQ, PPC::CR6UN, PPC::CR7LT, PPC::CR7GT, PPC::CR7EQ, PPC::CR7UN }
Definition at line 63 of file PPCDisassembler.cpp.
Referenced by DecodeCRBITRCRegisterClass().
{ PPC::CR0, PPC::CR1, PPC::CR2, PPC::CR3, PPC::CR4, PPC::CR5, PPC::CR6, PPC::CR7 }
Definition at line 58 of file PPCDisassembler.cpp.
Referenced by decodeCRBitMOperand(), and DecodeCRRCRegisterClass().
{ PPC::F0, PPC::F1, PPC::F2, PPC::F3, PPC::F4, PPC::F5, PPC::F6, PPC::F7, PPC::F8, PPC::F9, PPC::F10, PPC::F11, PPC::F12, PPC::F13, PPC::F14, PPC::F15, PPC::F16, PPC::F17, PPC::F18, PPC::F19, PPC::F20, PPC::F21, PPC::F22, PPC::F23, PPC::F24, PPC::F25, PPC::F26, PPC::F27, PPC::F28, PPC::F29, PPC::F30, PPC::F31 }
Definition at line 74 of file PPCDisassembler.cpp.
Referenced by DecodeF4RCRegisterClass(), and DecodeF8RCRegisterClass().
{ PPC::X0, PPC::X1, PPC::X2, PPC::X3, PPC::X4, PPC::X5, PPC::X6, PPC::X7, PPC::X8, PPC::X9, PPC::X10, PPC::X11, PPC::X12, PPC::X13, PPC::X14, PPC::X15, PPC::X16, PPC::X17, PPC::X18, PPC::X19, PPC::X20, PPC::X21, PPC::X22, PPC::X23, PPC::X24, PPC::X25, PPC::X26, PPC::X27, PPC::X28, PPC::X29, PPC::X30, PPC::X31 }
Definition at line 158 of file PPCDisassembler.cpp.
Referenced by DecodeG8RCRegisterClass(), and llvm::PPCFrameLowering::processFunctionBeforeFrameFinalized().
{ PPC::ZERO, PPC::R1, PPC::R2, PPC::R3, PPC::R4, PPC::R5, PPC::R6, PPC::R7, PPC::R8, PPC::R9, PPC::R10, PPC::R11, PPC::R12, PPC::R13, PPC::R14, PPC::R15, PPC::R16, PPC::R17, PPC::R18, PPC::R19, PPC::R20, PPC::R21, PPC::R22, PPC::R23, PPC::R24, PPC::R25, PPC::R26, PPC::R27, PPC::R28, PPC::R29, PPC::R30, PPC::R31 }
Definition at line 147 of file PPCDisassembler.cpp.
Referenced by DecodeGPRC_NOR0RegisterClass(), decodeMemRIOperands(), and decodeMemRIXOperands().
{ PPC::R0, PPC::R1, PPC::R2, PPC::R3, PPC::R4, PPC::R5, PPC::R6, PPC::R7, PPC::R8, PPC::R9, PPC::R10, PPC::R11, PPC::R12, PPC::R13, PPC::R14, PPC::R15, PPC::R16, PPC::R17, PPC::R18, PPC::R19, PPC::R20, PPC::R21, PPC::R22, PPC::R23, PPC::R24, PPC::R25, PPC::R26, PPC::R27, PPC::R28, PPC::R29, PPC::R30, PPC::R31 }
Definition at line 136 of file PPCDisassembler.cpp.
Referenced by DecodeGPRCRegisterClass(), and llvm::PPCFrameLowering::processFunctionBeforeFrameFinalized().
{ PPC::V0, PPC::V1, PPC::V2, PPC::V3, PPC::V4, PPC::V5, PPC::V6, PPC::V7, PPC::V8, PPC::V9, PPC::V10, PPC::V11, PPC::V12, PPC::V13, PPC::V14, PPC::V15, PPC::V16, PPC::V17, PPC::V18, PPC::V19, PPC::V20, PPC::V21, PPC::V22, PPC::V23, PPC::V24, PPC::V25, PPC::V26, PPC::V27, PPC::V28, PPC::V29, PPC::V30, PPC::V31 }
Definition at line 85 of file PPCDisassembler.cpp.
Referenced by DecodeVRRCRegisterClass(), and llvm::PPCFrameLowering::processFunctionBeforeFrameFinalized().
{ PPC::F0, PPC::F1, PPC::F2, PPC::F3, PPC::F4, PPC::F5, PPC::F6, PPC::F7, PPC::F8, PPC::F9, PPC::F10, PPC::F11, PPC::F12, PPC::F13, PPC::F14, PPC::F15, PPC::F16, PPC::F17, PPC::F18, PPC::F19, PPC::F20, PPC::F21, PPC::F22, PPC::F23, PPC::F24, PPC::F25, PPC::F26, PPC::F27, PPC::F28, PPC::F29, PPC::F30, PPC::F31, PPC::VF0, PPC::VF1, PPC::VF2, PPC::VF3, PPC::VF4, PPC::VF5, PPC::VF6, PPC::VF7, PPC::VF8, PPC::VF9, PPC::VF10, PPC::VF11, PPC::VF12, PPC::VF13, PPC::VF14, PPC::VF15, PPC::VF16, PPC::VF17, PPC::VF18, PPC::VF19, PPC::VF20, PPC::VF21, PPC::VF22, PPC::VF23, PPC::VF24, PPC::VF25, PPC::VF26, PPC::VF27, PPC::VF28, PPC::VF29, PPC::VF30, PPC::VF31 }
Definition at line 116 of file PPCDisassembler.cpp.
Referenced by DecodeVSFRCRegisterClass().
{ PPC::VSL0, PPC::VSL1, PPC::VSL2, PPC::VSL3, PPC::VSL4, PPC::VSL5, PPC::VSL6, PPC::VSL7, PPC::VSL8, PPC::VSL9, PPC::VSL10, PPC::VSL11, PPC::VSL12, PPC::VSL13, PPC::VSL14, PPC::VSL15, PPC::VSL16, PPC::VSL17, PPC::VSL18, PPC::VSL19, PPC::VSL20, PPC::VSL21, PPC::VSL22, PPC::VSL23, PPC::VSL24, PPC::VSL25, PPC::VSL26, PPC::VSL27, PPC::VSL28, PPC::VSL29, PPC::VSL30, PPC::VSL31, PPC::VSH0, PPC::VSH1, PPC::VSH2, PPC::VSH3, PPC::VSH4, PPC::VSH5, PPC::VSH6, PPC::VSH7, PPC::VSH8, PPC::VSH9, PPC::VSH10, PPC::VSH11, PPC::VSH12, PPC::VSH13, PPC::VSH14, PPC::VSH15, PPC::VSH16, PPC::VSH17, PPC::VSH18, PPC::VSH19, PPC::VSH20, PPC::VSH21, PPC::VSH22, PPC::VSH23, PPC::VSH24, PPC::VSH25, PPC::VSH26, PPC::VSH27, PPC::VSH28, PPC::VSH29, PPC::VSH30, PPC::VSH31 }
Definition at line 96 of file PPCDisassembler.cpp.
Referenced by DecodeVSRCRegisterClass().