LLVM 22.0.0git
TwoAddressInstructionPass.cpp File Reference

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< boolEnableRescheduling ("twoaddr-reschedule", cl::desc("Coalesce copies by rescheduling (default=true)"), cl::init(true), cl::Hidden)
static cl::opt< unsignedMaxDataFlowEdge ("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

Macro Definition Documentation

◆ DEBUG_TYPE

#define DEBUG_TYPE   "twoaddressinstruction"

Definition at line 68 of file TwoAddressInstructionPass.cpp.

Function Documentation

◆ getMappedReg()

MCRegister getMappedReg ( Register Reg,
DenseMap< Register, Register > & RegMap )
static

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()

bool isTwoAddrUse ( MachineInstr & MI,
Register Reg,
Register & DstReg )
static

Return true if the specified MI uses the specified register as a two-address use.

If so, return the destination register by reference.

Definition at line 471 of file TwoAddressInstructionPass.cpp.

References AbstractManglingParser< Derived, Alloc >::NumOps, llvm::MachineOperand::getReg(), llvm::MachineOperand::isReg(), llvm::MachineOperand::isUse(), MI, and Reg.

◆ 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"  )

Variable Documentation

◆ DEBUG_TYPE

DEBUG_TYPE

Definition at line 263 of file TwoAddressInstructionPass.cpp.

◆ 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

Definition at line 264 of file TwoAddressInstructionPass.cpp.

◆ 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

Definition at line 264 of file TwoAddressInstructionPass.cpp.