LLVM: lib/CodeGen/TwoAddressInstructionPass.cpp File Reference (original) (raw)

Go to the source code of this file.

Macros
#define DEBUG_TYPE "twoaddressinstruction"
Functions
STATISTIC (NumTwoAddressInstrs, "Number of two-address instructions")
STATISTIC (NumCommuted, "Number of instructions commuted to coalesce")
STATISTIC (NumAggrCommuted, "Number of instructions aggressively commuted")
STATISTIC (NumConvertedTo3Addr, "Number of instructions promoted to 3-address")
STATISTIC (NumReSchedUps, "Number of instructions re-scheduled up")
STATISTIC (NumReSchedDowns, "Number of instructions re-scheduled down")
INITIALIZE_PASS_BEGIN (TwoAddressInstructionLegacyPass, DEBUG_TYPE, "Two-Address instruction pass", false, false) INITIALIZE_PASS_END(TwoAddressInstructionLegacyPass
static bool isTwoAddrUse (MachineInstr &MI, Register Reg, Register &DstReg)
Return true if the specified MI uses the specified register as a two-address use.
static MCRegister getMappedReg (Register Reg, DenseMap< Register, Register > &RegMap)
Return the physical register the specified virtual register might be mapped to.
Variables
static cl::opt< bool > EnableRescheduling ("twoaddr-reschedule", cl::desc("Coalesce copies by rescheduling (default=true)"), cl::init(true), cl::Hidden)
static cl::opt< unsigned > MaxDataFlowEdge ("dataflow-edge-limit", cl::Hidden, cl::init(3), cl::desc("Maximum number of dataflow edges to traverse when evaluating " "the benefit of commuting operands"))
DEBUG_TYPE
Two Address instruction pass
Two Address instruction false

DEBUG_TYPE

#define DEBUG_TYPE "twoaddressinstruction"

getMappedReg()

Return the physical register the specified virtual register might be mapped to.

Definition at line 533 of file TwoAddressInstructionPass.cpp.

References llvm::DenseMapBase< DerivedT, KeyT, ValueT, KeyInfoT, BucketT >::end(), llvm::DenseMapBase< DerivedT, KeyT, ValueT, KeyInfoT, BucketT >::find(), and Reg.

INITIALIZE_PASS_BEGIN()

INITIALIZE_PASS_BEGIN ( TwoAddressInstructionLegacyPass ,
DEBUG_TYPE ,
"Two-Address instruction pass" ,
false ,
false )

isTwoAddrUse()

STATISTIC() [1/6]

STATISTIC ( NumAggrCommuted ,
"Number of instructions aggressively commuted" )

STATISTIC() [2/6]

STATISTIC ( NumCommuted ,
"Number of instructions commuted to coalesce" )

STATISTIC() [3/6]

STATISTIC ( NumConvertedTo3Addr ,
"Number of instructions promoted to 3-address" )

STATISTIC() [4/6]

STATISTIC ( NumReSchedDowns ,
"Number of instructions re-scheduled down" )

STATISTIC() [5/6]

STATISTIC ( NumReSchedUps ,
"Number of instructions re-scheduled up" )

STATISTIC() [6/6]

STATISTIC ( NumTwoAddressInstrs ,
"Number of two-address instructions" )

DEBUG_TYPE

EnableRescheduling

cl::opt< bool > EnableRescheduling("twoaddr-reschedule", cl::desc("Coalesce copies by rescheduling (default=true)"), cl::init(true), cl::Hidden) ( "twoaddr-reschedule" , cl::desc("Coalesce copies by rescheduling (default=true)") , cl::init(true) , cl::Hidden ) static

false

Two Address instruction false

MaxDataFlowEdge

cl::opt< unsigned > MaxDataFlowEdge("dataflow-edge-limit", cl::Hidden, cl::init(3), cl::desc("Maximum number of dataflow edges to traverse when evaluating " "the benefit of commuting operands")) ( "dataflow-edge-limit" , cl::Hidden , cl::init(3) , cl::desc("Maximum number of dataflow edges to traverse when evaluating " "the benefit of commuting operands") ) static

pass

Two Address instruction pass