LLVM API Documentation

Defines | Typedefs | Functions | Variables
PPCDisassembler.cpp File Reference
#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"
Include dependency graph for PPCDisassembler.cpp:

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 MCDisassemblercreatePPCDisassembler (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 Documentation

#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.


Typedef Documentation

Definition at line 22 of file PPCDisassembler.cpp.


Function Documentation

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]
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]
static DecodeStatus decodeMemRIXOperands ( MCInst Inst,
uint64_t  Imm,
int64_t  Address,
const void *  Decoder 
) [static]
template<std::size_t N>
static DecodeStatus decodeRegisterClass ( MCInst Inst,
uint64_t  RegNo,
const unsigned(&)  Regs[N] 
) [static]
template<unsigned N>
static DecodeStatus decodeSImmOperand ( MCInst Inst,
uint64_t  Imm,
int64_t  Address,
const void *  Decoder 
) [static]
template<unsigned N>
static DecodeStatus decodeUImmOperand ( MCInst Inst,
uint64_t  Imm,
int64_t  Address,
const void *  Decoder 
) [static]
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.


Variable Documentation

const unsigned CRBITRegs[] [static]
Initial value:
 {
  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().

const unsigned CRRegs[] [static]
Initial value:
 {
  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().

const unsigned FRegs[] [static]
Initial value:
 {
  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().

const unsigned G8Regs[] [static]
Initial value:
 {
  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().

const unsigned GP0Regs[] [static]
Initial value:
 {
  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().

const unsigned GPRegs[] [static]
Initial value:
 {
  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().

const unsigned VRegs[] [static]
Initial value:
 {
  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().

const unsigned VSFRegs[] [static]
Initial value:
 {
  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().

const unsigned VSRegs[] [static]
Initial value:
 {
  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().