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

Go to the source code of this file.

Macros
#define DEBUG_TYPE "ppc-loop-instr-form-prep"
Functions
STATISTIC (PHINodeAlreadyExistsUpdate, "PHI node already in pre-increment form")
STATISTIC (PHINodeAlreadyExistsDS, "PHI node already in DS form")
STATISTIC (PHINodeAlreadyExistsDQ, "PHI node already in DQ form")
STATISTIC (DSFormChainRewritten, "Num of DS form chain rewritten")
STATISTIC (DQFormChainRewritten, "Num of DQ form chain rewritten")
STATISTIC (UpdFormChainRewritten, "Num of update form chain rewritten")
STATISTIC (ChainCommoningRewritten, "Num of commoning chains")
static bool IsPtrInBounds (Value *BasePtr)
static std::string getInstrName (const Value *I, StringRef Suffix)
static Value * getPointerOperandAndType (Value *MemI, Type **PtrElementType=nullptr)
Variables
static cl::opt< unsigned > MaxVarsPrep ("ppc-formprep-max-vars", cl::Hidden, cl::init(24), cl::desc("Potential common base number threshold per function " "for PPC loop prep"))
static cl::opt< bool > PreferUpdateForm ("ppc-formprep-prefer-update", cl::init(true), cl::Hidden, cl::desc("prefer update form when ds form is also a update form"))
static cl::opt< bool > EnableUpdateFormForNonConstInc ("ppc-formprep-update-nonconst-inc", cl::init(false), cl::Hidden, cl::desc("prepare update form when the load/store increment is a loop " "invariant non-const value."))
static cl::opt< bool > EnableChainCommoning ("ppc-formprep-chain-commoning", cl::init(false), cl::Hidden, cl::desc("Enable chain commoning in PPC loop prepare pass."))
static cl::opt< unsigned > MaxVarsUpdateForm ("ppc-preinc-prep-max-vars", cl::Hidden, cl::init(3), cl::desc("Potential PHI threshold per loop for PPC loop prep of update " "form"))
static cl::opt< unsigned > MaxVarsDSForm ("ppc-dsprep-max-vars", cl::Hidden, cl::init(3), cl::desc("Potential PHI threshold per loop for PPC loop prep of DS form"))
static cl::opt< unsigned > MaxVarsDQForm ("ppc-dqprep-max-vars", cl::Hidden, cl::init(8), cl::desc("Potential PHI threshold per loop for PPC loop prep of DQ form"))
static cl::opt< unsigned > MaxVarsChainCommon ("ppc-chaincommon-max-vars", cl::Hidden, cl::init(4), cl::desc("Bucket number per loop for PPC loop chain common"))
static cl::opt< unsigned > DispFormPrepMinThreshold ("ppc-dispprep-min-threshold", cl::Hidden, cl::init(2), cl::desc("Minimal common base load/store instructions triggering DS/DQ form " "preparation"))
static cl::opt< unsigned > ChainCommonPrepMinThreshold ("ppc-chaincommon-min-threshold", cl::Hidden, cl::init(4), cl::desc("Minimal common base load/store instructions triggering chain " "commoning preparation. Must be not smaller than 4"))
static const char * name = "Prepare loop for ppc preferred instruction forms"
static constexpr StringRef PHINodeNameSuffix = ".phi"
static constexpr StringRef CastNodeNameSuffix = ".cast"
static constexpr StringRef GEPNodeIncNameSuffix = ".inc"
static constexpr StringRef GEPNodeOffNameSuffix = ".off"

DEBUG_TYPE

#define DEBUG_TYPE "ppc-loop-instr-form-prep"

getInstrName()

getPointerOperandAndType()

Value * getPointerOperandAndType ( Value * MemI, Type ** PtrElementType = nullptr ) static

IsPtrInBounds()

STATISTIC() [1/7]

STATISTIC ( ChainCommoningRewritten ,
"Num of commoning chains" )

STATISTIC() [2/7]

STATISTIC ( DQFormChainRewritten ,
"Num of DQ form chain rewritten" )

STATISTIC() [3/7]

STATISTIC ( DSFormChainRewritten ,
"Num of DS form chain rewritten" )

STATISTIC() [4/7]

STATISTIC ( PHINodeAlreadyExistsDQ ,
"PHI node already in DQ form" )

STATISTIC() [5/7]

STATISTIC ( PHINodeAlreadyExistsDS ,
"PHI node already in DS form" )

STATISTIC() [6/7]

STATISTIC ( PHINodeAlreadyExistsUpdate ,
"PHI node already in pre-increment form" )

STATISTIC() [7/7]

STATISTIC ( UpdFormChainRewritten ,
"Num of update form chain rewritten" )

CastNodeNameSuffix

ChainCommonPrepMinThreshold

cl::opt< unsigned > ChainCommonPrepMinThreshold("ppc-chaincommon-min-threshold", cl::Hidden, cl::init(4), cl::desc("Minimal common base load/store instructions triggering chain " "commoning preparation. Must be not smaller than 4")) ( "ppc-chaincommon-min-threshold" , cl::Hidden , cl::init(4) , cl::desc("Minimal common base load/store instructions triggering chain " "commoning preparation. Must be not smaller than 4") ) static

DispFormPrepMinThreshold

cl::opt< unsigned > DispFormPrepMinThreshold("ppc-dispprep-min-threshold", cl::Hidden, cl::init(2), cl::desc("Minimal common base load/store instructions triggering DS/DQ form " "preparation")) ( "ppc-dispprep-min-threshold" , cl::Hidden , cl::init(2) , cl::desc("Minimal common base load/store instructions triggering DS/DQ form " "preparation") ) static

EnableChainCommoning

cl::opt< bool > EnableChainCommoning("ppc-formprep-chain-commoning", cl::init(false), cl::Hidden, cl::desc("Enable chain commoning in PPC loop prepare pass.")) ( "ppc-formprep-chain-commoning" , cl::init(false) , cl::Hidden , cl::desc("Enable chain commoning in PPC loop prepare pass.") ) static

EnableUpdateFormForNonConstInc

cl::opt< bool > EnableUpdateFormForNonConstInc("ppc-formprep-update-nonconst-inc", cl::init(false), cl::Hidden, cl::desc("prepare update form when the load/store increment is a loop " "invariant non-const value.")) ( "ppc-formprep-update-nonconst-inc" , cl::init(false) , cl::Hidden , cl::desc("prepare update form when the load/store increment is a loop " "invariant non-const value.") ) static

GEPNodeIncNameSuffix

GEPNodeOffNameSuffix

MaxVarsChainCommon

cl::opt< unsigned > MaxVarsChainCommon("ppc-chaincommon-max-vars", cl::Hidden, cl::init(4), cl::desc("Bucket number per loop for PPC loop chain common")) ( "ppc-chaincommon-max-vars" , cl::Hidden , cl::init(4) , cl::desc("Bucket number per loop for PPC loop chain common") ) static

MaxVarsDQForm

cl::opt< unsigned > MaxVarsDQForm("ppc-dqprep-max-vars", cl::Hidden, cl::init(8), cl::desc("Potential PHI threshold per loop for PPC loop prep of DQ form")) ( "ppc-dqprep-max-vars" , cl::Hidden , cl::init(8) , cl::desc("Potential PHI threshold per loop for PPC loop prep of DQ form") ) static

MaxVarsDSForm

cl::opt< unsigned > MaxVarsDSForm("ppc-dsprep-max-vars", cl::Hidden, cl::init(3), cl::desc("Potential PHI threshold per loop for PPC loop prep of DS form")) ( "ppc-dsprep-max-vars" , cl::Hidden , cl::init(3) , cl::desc("Potential PHI threshold per loop for PPC loop prep of DS form") ) static

MaxVarsPrep

MaxVarsUpdateForm

cl::opt< unsigned > MaxVarsUpdateForm("ppc-preinc-prep-max-vars", cl::Hidden, cl::init(3), cl::desc("Potential PHI threshold per loop for PPC loop prep of update " "form")) ( "ppc-preinc-prep-max-vars" , cl::Hidden , cl::init(3) , cl::desc("Potential PHI threshold per loop for PPC loop prep of update " "form") ) static

name

const char* name = "Prepare loop for ppc preferred instruction forms" static

PHINodeNameSuffix

PreferUpdateForm

cl::opt< bool > PreferUpdateForm("ppc-formprep-prefer-update", cl::init(true), cl::Hidden, cl::desc("prefer update form when ds form is also a update form")) ( "ppc-formprep-prefer-update" , cl::init(true) , cl::Hidden , cl::desc("prefer update form when ds form is also a update form") ) static