LLVM 22.0.0git
X86FixupLEAs.cpp File Reference

Go to the source code of this file.

Macros

#define FIXUPLEA_DESC   "X86 LEA Fixup"
#define FIXUPLEA_NAME   "x86-fixup-LEAs"
#define DEBUG_TYPE   FIXUPLEA_NAME

Functions

 STATISTIC (NumLEAs, "Number of LEA instructions created")
static bool isLEA (unsigned Opcode)
static bool getPreviousInstr (MachineBasicBlock::iterator &I, MachineBasicBlock &MBB)
 getPreviousInstr - Given a reference to an instruction in a basic block, return a reference to the previous instruction in the block, wrapping around to the last instruction of the block if the block branches to itself.
static bool isInefficientLEAReg (Register Reg)
static bool hasInefficientLEABaseReg (const MachineOperand &Base, const MachineOperand &Index)
 Returns true if this LEA uses base and index registers, and the base register is known to be inefficient for the subtarget.
static bool hasLEAOffset (const MachineOperand &Offset)
static unsigned getADDrrFromLEA (unsigned LEAOpcode)
static unsigned getSUBrrFromLEA (unsigned LEAOpcode)
static unsigned getADDriFromLEA (unsigned LEAOpcode, const MachineOperand &Offset)
static unsigned getINCDECFromLEA (unsigned LEAOpcode, bool IsINC)

Macro Definition Documentation

◆ DEBUG_TYPE

#define DEBUG_TYPE   FIXUPLEA_NAME

Definition at line 33 of file X86FixupLEAs.cpp.

◆ FIXUPLEA_DESC

#define FIXUPLEA_DESC   "X86 LEA Fixup"

Definition at line 30 of file X86FixupLEAs.cpp.

◆ FIXUPLEA_NAME

#define FIXUPLEA_NAME   "x86-fixup-LEAs"

Definition at line 31 of file X86FixupLEAs.cpp.

Function Documentation

◆ getADDriFromLEA()

unsigned getADDriFromLEA ( unsigned LEAOpcode,
const MachineOperand & Offset )
inlinestatic

Definition at line 371 of file X86FixupLEAs.cpp.

References llvm_unreachable, and llvm::Offset.

◆ getADDrrFromLEA()

unsigned getADDrrFromLEA ( unsigned LEAOpcode)
inlinestatic

Definition at line 347 of file X86FixupLEAs.cpp.

References llvm_unreachable.

◆ getINCDECFromLEA()

unsigned getINCDECFromLEA ( unsigned LEAOpcode,
bool IsINC )
inlinestatic

Definition at line 384 of file X86FixupLEAs.cpp.

References llvm_unreachable.

◆ getPreviousInstr()

bool getPreviousInstr ( MachineBasicBlock::iterator & I,
MachineBasicBlock & MBB )
inlinestatic

getPreviousInstr - Given a reference to an instruction in a basic block, return a reference to the previous instruction in the block, wrapping around to the last instruction of the block if the block branches to itself.

Definition at line 290 of file X86FixupLEAs.cpp.

References I, and MBB.

◆ getSUBrrFromLEA()

unsigned getSUBrrFromLEA ( unsigned LEAOpcode)
inlinestatic

Definition at line 359 of file X86FixupLEAs.cpp.

References llvm_unreachable.

◆ hasInefficientLEABaseReg()

bool hasInefficientLEABaseReg ( const MachineOperand & Base,
const MachineOperand & Index )
inlinestatic

Returns true if this LEA uses base and index registers, and the base register is known to be inefficient for the subtarget.

Definition at line 336 of file X86FixupLEAs.cpp.

References llvm::sampleprof::Base, and isInefficientLEAReg().

◆ hasLEAOffset()

bool hasLEAOffset ( const MachineOperand & Offset)
inlinestatic

Definition at line 342 of file X86FixupLEAs.cpp.

References llvm::Offset.

◆ isInefficientLEAReg()

bool isInefficientLEAReg ( Register Reg)
inlinestatic

Definition at line 327 of file X86FixupLEAs.cpp.

References Reg.

Referenced by hasInefficientLEABaseReg().

◆ isLEA()

bool isLEA ( unsigned Opcode)
static

Definition at line 215 of file X86FixupLEAs.cpp.

Referenced by llvm::X86InstrInfo::isDataInvariant().

◆ STATISTIC()

STATISTIC ( NumLEAs ,
"Number of LEA instructions created"  )