LLVM 17.0.0git
|
#include "X86.h"
#include "X86InstrInfo.h"
#include "X86Subtarget.h"
#include "llvm/ADT/Statistic.h"
#include "llvm/Analysis/ProfileSummaryInfo.h"
#include "llvm/CodeGen/LazyMachineBlockFrequencyInfo.h"
#include "llvm/CodeGen/MachineFunctionPass.h"
#include "llvm/CodeGen/MachineInstrBuilder.h"
#include "llvm/CodeGen/MachineSizeOpts.h"
#include "llvm/CodeGen/Passes.h"
#include "llvm/CodeGen/TargetSchedule.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/raw_ostream.h"
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 (unsigned Reg) |
static bool | hasInefficientLEABaseReg (const MachineOperand &Base, const MachineOperand &Index) |
Returns true if this LEA uses base an 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) |
#define DEBUG_TYPE FIXUPLEA_NAME |
Definition at line 33 of file X86FixupLEAs.cpp.
#define FIXUPLEA_DESC "X86 LEA Fixup" |
Definition at line 30 of file X86FixupLEAs.cpp.
#define FIXUPLEA_NAME "x86-fixup-LEAs" |
Definition at line 31 of file X86FixupLEAs.cpp.
|
inlinestatic |
Definition at line 375 of file X86FixupLEAs.cpp.
References llvm_unreachable, and llvm::Offset.
Definition at line 351 of file X86FixupLEAs.cpp.
References llvm_unreachable.
Definition at line 389 of file X86FixupLEAs.cpp.
References llvm_unreachable.
|
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 295 of file X86FixupLEAs.cpp.
References llvm::MachineBasicBlock::begin(), llvm::MachineBasicBlock::end(), I, llvm::MachineBasicBlock::isPredecessor(), and MBB.
Definition at line 363 of file X86FixupLEAs.cpp.
References llvm_unreachable.
|
inlinestatic |
Returns true if this LEA uses base an index registers, and the base register is known to be inefficient for the subtarget.
Definition at line 341 of file X86FixupLEAs.cpp.
References llvm::sampleprof::Base, and isInefficientLEAReg().
|
inlinestatic |
Definition at line 347 of file X86FixupLEAs.cpp.
References llvm::Offset.
Definition at line 332 of file X86FixupLEAs.cpp.
Referenced by hasInefficientLEABaseReg().
Definition at line 220 of file X86FixupLEAs.cpp.
Referenced by llvm::X86InstrInfo::isDataInvariant().
STATISTIC | ( | NumLEAs | , |
"Number of LEA instructions created" | |||
) |