LLVM: lib/Target/PowerPC/PPCInstrInfo.cpp File Reference (original) (raw)

Go to the source code of this file.

Macros
#define DEBUG_TYPE "ppc-instr-info"
#define GET_INSTRMAP_INFO
#define GET_INSTRINFO_CTOR_DTOR
#define InfoArrayIdxFMAInst 0
#define InfoArrayIdxFAddInst 1
#define InfoArrayIdxFMULInst 2
#define InfoArrayIdxAddOpIdx 3
#define InfoArrayIdxMULOpIdx 4
#define InfoArrayIdxFSubInst 5
#define PPC_LNX_DEFINE_OFFSETS
#define PPC_TGT_PARSER_UNDEF_MACROS
Functions
STATISTIC (NumStoreSPILLVSRRCAsVec, "Number of spillvsrrc spilled to stack as vec")
STATISTIC (NumStoreSPILLVSRRCAsGpr, "Number of spillvsrrc spilled to stack as gpr")
STATISTIC (NumGPRtoVSRSpill, "Number of gpr spills to spillvsrrc")
STATISTIC (CmpIselsConverted, "Number of ISELs that depend on comparison of constants converted")
STATISTIC (MissedConvertibleImmediateInstrs, "Number of compare-immediate instructions fed by constants")
STATISTIC (NumRcRotatesConvertedToRcAnd, "Number of record-form rotates converted to record-form andi")
static unsigned getCRBitValue (unsigned CRBit)
static bool MBBDefinesCTR (MachineBasicBlock &MBB)
static bool isLdStSafeToCluster (const MachineInstr &LdSt, const TargetRegisterInfo *TRI)
static bool isClusterableLdStOpcPair (unsigned FirstOpc, unsigned SecondOpc, const PPCSubtarget &Subtarget)
static bool isAnImmediateOperand (const MachineOperand &MO)
static unsigned selectReg (int64_t Imm1, int64_t Imm2, unsigned CompareOpc, unsigned TrueReg, unsigned FalseReg, unsigned CRSubReg)
static void swapMIOperands (MachineInstr &MI, unsigned Op1, unsigned Op2)
static bool isOpZeroOfSubwordPreincLoad (int Opcode)
static bool definedBySignExtendingOp (const unsigned Reg, const MachineRegisterInfo *MRI)
static bool definedByZeroExtendingOp (const unsigned Reg, const MachineRegisterInfo *MRI)
Variables
static cl::opt< bool > DisableCTRLoopAnal ("disable-ppc-ctrloop-analysis", cl::Hidden, cl::desc("Disable analysis for CTR loops"))
static cl::opt< bool > DisableCmpOpt ("disable-ppc-cmp-opt", cl::desc("Disable compare instruction optimization"), cl::Hidden)
static cl::opt< bool > VSXSelfCopyCrash ("crash-on-ppc-vsx-self-copy", cl::desc("Causes the backend to crash instead of generating a nop VSX copy"), cl::Hidden)
static cl::opt< bool > UseOldLatencyCalc ("ppc-old-latency-calc", cl::Hidden, cl::desc("Use the old (incorrect) instruction latency calculation"))
static cl::opt< float > FMARPFactor ("ppc-fma-rp-factor", cl::Hidden, cl::init(1.5), cl::desc("register pressure factor for the transformations."))
static cl::opt< bool > EnableFMARegPressureReduction ("ppc-fma-rp-reduction", cl::Hidden, cl::init(true), cl::desc("enable register pressure reduce in machine combiner pass."))
static const uint16_t FMAOpIdxInfo [][6]
const unsigned MAX_BINOP_DEPTH = 1

DEBUG_TYPE

#define DEBUG_TYPE "ppc-instr-info"

GET_INSTRINFO_CTOR_DTOR

#define GET_INSTRINFO_CTOR_DTOR

GET_INSTRMAP_INFO

#define GET_INSTRMAP_INFO

InfoArrayIdxAddOpIdx

#define InfoArrayIdxAddOpIdx 3

InfoArrayIdxFAddInst

#define InfoArrayIdxFAddInst 1

InfoArrayIdxFMAInst

#define InfoArrayIdxFMAInst 0

InfoArrayIdxFMULInst

#define InfoArrayIdxFMULInst 2

InfoArrayIdxFSubInst

#define InfoArrayIdxFSubInst 5

InfoArrayIdxMULOpIdx

#define InfoArrayIdxMULOpIdx 4

PPC_LNX_DEFINE_OFFSETS

#define PPC_LNX_DEFINE_OFFSETS

PPC_TGT_PARSER_UNDEF_MACROS

#define PPC_TGT_PARSER_UNDEF_MACROS

definedBySignExtendingOp()

definedByZeroExtendingOp()

getCRBitValue()

isAnImmediateOperand()

isClusterableLdStOpcPair()

isLdStSafeToCluster()

isOpZeroOfSubwordPreincLoad()

bool isOpZeroOfSubwordPreincLoad ( int Opcode) static

MBBDefinesCTR()

selectReg()

STATISTIC() [1/6]

STATISTIC ( CmpIselsConverted ,
"Number of ISELs that depend on comparison of constants converted" )

STATISTIC() [2/6]

STATISTIC ( MissedConvertibleImmediateInstrs ,
"Number of compare-immediate instructions fed by constants" )

STATISTIC() [3/6]

STATISTIC ( NumGPRtoVSRSpill ,
"Number of gpr spills to spillvsrrc" )

STATISTIC() [4/6]

STATISTIC ( NumRcRotatesConvertedToRcAnd ,
"Number of record-form rotates converted to record-form andi" )

STATISTIC() [5/6]

STATISTIC ( NumStoreSPILLVSRRCAsGpr ,
"Number of spillvsrrc spilled to stack as gpr" )

STATISTIC() [6/6]

STATISTIC ( NumStoreSPILLVSRRCAsVec ,
"Number of spillvsrrc spilled to stack as vec" )

swapMIOperands()

DisableCmpOpt

cl::opt< bool > DisableCmpOpt("disable-ppc-cmp-opt", cl::desc("Disable compare instruction optimization"), cl::Hidden) ( "disable-ppc-cmp-opt" , cl::desc("Disable compare instruction optimization") , cl::Hidden ) static

DisableCTRLoopAnal

EnableFMARegPressureReduction

cl::opt< bool > EnableFMARegPressureReduction("ppc-fma-rp-reduction", cl::Hidden, cl::init(true), cl::desc("enable register pressure reduce in machine combiner pass.")) ( "ppc-fma-rp-reduction" , cl::Hidden , cl::init(true) , cl::desc("enable register pressure reduce in machine combiner pass.") ) static

FMAOpIdxInfo

Initial value:

= {

{PPC::XSMADDADP, PPC::XSADDDP, PPC::XSMULDP, 1, 2, PPC::XSSUBDP},

{PPC::XSMADDASP, PPC::XSADDSP, PPC::XSMULSP, 1, 2, PPC::XSSUBSP},

{PPC::XVMADDADP, PPC::XVADDDP, PPC::XVMULDP, 1, 2, PPC::XVSUBDP},

{PPC::XVMADDASP, PPC::XVADDSP, PPC::XVMULSP, 1, 2, PPC::XVSUBSP},

{PPC::FMADD, PPC::FADD, PPC::FMUL, 3, 1, PPC::FSUB},

{PPC::FMADDS, PPC::FADDS, PPC::FMULS, 3, 1, PPC::FSUBS}}

Definition at line 284 of file PPCInstrInfo.cpp.

Referenced by llvm::PPCInstrInfo::finalizeInsInstrs(), and llvm::PPCInstrInfo::getFMAPatterns().

FMARPFactor

cl::opt< float > FMARPFactor("ppc-fma-rp-factor", cl::Hidden, cl::init(1.5), cl::desc("register pressure factor for the transformations.")) ( "ppc-fma-rp-factor" , cl::Hidden , cl::init(1.5) , cl::desc("register pressure factor for the transformations.") ) static

MAX_BINOP_DEPTH

UseOldLatencyCalc

cl::opt< bool > UseOldLatencyCalc("ppc-old-latency-calc", cl::Hidden, cl::desc("Use the old (incorrect) instruction latency calculation")) ( "ppc-old-latency-calc" , cl::Hidden , cl::desc("Use the old (incorrect) instruction latency calculation") ) static

VSXSelfCopyCrash

cl::opt< bool > VSXSelfCopyCrash("crash-on-ppc-vsx-self-copy", cl::desc("Causes the backend to crash instead of generating a nop VSX copy"), cl::Hidden) ( "crash-on-ppc-vsx-self-copy" , cl::desc("Causes the backend to crash instead of generating a nop VSX copy") , cl::Hidden ) static