LLVM: lib/Target/X86/X86AvoidStoreForwardingBlocks.cpp File Reference (original) (raw)

Go to the source code of this file.

Macros
#define DEBUG_TYPE "x86-avoid-SFB"
Functions
INITIALIZE_PASS_BEGIN (X86AvoidSFBPass, DEBUG_TYPE, "Machine code sinking", false, false) INITIALIZE_PASS_END(X86AvoidSFBPass
static bool isXMMLoadOpcode (unsigned Opcode)
static bool isYMMLoadOpcode (unsigned Opcode)
static bool isPotentialBlockedMemCpyLd (unsigned Opcode)
static bool isPotentialBlockedMemCpyPair (unsigned LdOpcode, unsigned StOpcode)
static bool isPotentialBlockingStoreInst (unsigned Opcode, unsigned LoadOpcode)
static unsigned getYMMtoXMMLoadOpcode (unsigned LoadOpcode)
static unsigned getYMMtoXMMStoreOpcode (unsigned StoreOpcode)
static int getAddrOffset (const MachineInstr *MI)
static MachineOperand & getBaseOperand (MachineInstr *MI)
static MachineOperand & getDispOperand (MachineInstr *MI)
static bool isRelevantAddressingMode (MachineInstr *MI)
static SmallVector< MachineInstr *, 2 > findPotentialBlockers (MachineInstr *LoadInst)
static void updateKillStatus (MachineInstr *LoadInst, MachineInstr *StoreInst)
static bool hasSameBaseOpValue (MachineInstr *LoadInst, MachineInstr *StoreInst)
static bool isBlockingStore (int64_t LoadDispImm, unsigned LoadSize, int64_t StoreDispImm, unsigned StoreSize)
static void updateBlockingStoresDispSizeMap (DisplacementSizeMap &BlockingStoresDispSizeMap, int64_t DispImm, unsigned Size)
static void removeRedundantBlockingStores (DisplacementSizeMap &BlockingStoresDispSizeMap)
Variables
static cl::opt< bool > DisableX86AvoidStoreForwardBlocks ("x86-disable-avoid-SFB", cl::Hidden, cl::desc("X86: Disable Store Forwarding Blocks fixup."), cl::init(false))
static cl::opt< unsigned > X86AvoidSFBInspectionLimit ("x86-sfb-inspection-limit", cl::desc("X86: Number of instructions backward to " "inspect for store forwarding blocks."), cl::init(20), cl::Hidden)
DEBUG_TYPE
Machine code sinking
Machine code false
static const int MOV128SZ = 16
static const int MOV64SZ = 8
static const int MOV32SZ = 4
static const int MOV16SZ = 2
static const int MOV8SZ = 1

DEBUG_TYPE

#define DEBUG_TYPE "x86-avoid-SFB"

findPotentialBlockers()

getAddrOffset()

getBaseOperand()

getDispOperand()

getYMMtoXMMLoadOpcode()

getYMMtoXMMStoreOpcode()

hasSameBaseOpValue()

INITIALIZE_PASS_BEGIN()

INITIALIZE_PASS_BEGIN ( X86AvoidSFBPass ,
DEBUG_TYPE ,
"Machine code sinking" ,
false ,
false )

isBlockingStore()

bool isBlockingStore ( int64_t LoadDispImm, unsigned LoadSize, int64_t StoreDispImm, unsigned StoreSize ) static

isPotentialBlockedMemCpyLd()

isPotentialBlockedMemCpyPair()

isPotentialBlockingStoreInst()

isRelevantAddressingMode()

Definition at line 311 of file X86AvoidStoreForwardingBlocks.cpp.

References llvm::X86::AddrIndexReg, llvm::X86::AddrScaleAmt, llvm::X86::AddrSegmentReg, llvm::sampleprof::Base, getAddrOffset(), getBaseOperand(), getDispOperand(), llvm::MachineOperand::getImm(), llvm::MachineOperand::getReg(), llvm::MachineOperand::isImm(), llvm::MachineOperand::isReg(), and MI.

isXMMLoadOpcode()

isYMMLoadOpcode()

removeRedundantBlockingStores()

void removeRedundantBlockingStores ( DisplacementSizeMap & BlockingStoresDispSizeMap) static

updateBlockingStoresDispSizeMap()

void updateBlockingStoresDispSizeMap ( DisplacementSizeMap & BlockingStoresDispSizeMap, int64_t DispImm, unsigned Size ) static

updateKillStatus()

DEBUG_TYPE

DisableX86AvoidStoreForwardBlocks

cl::opt< bool > DisableX86AvoidStoreForwardBlocks("x86-disable-avoid-SFB", cl::Hidden, cl::desc("X86: Disable Store Forwarding Blocks fixup."), cl::init(false)) ( "x86-disable-avoid-SFB" , cl::Hidden , cl::desc("X86: Disable Store Forwarding Blocks fixup.") , cl::init(false) ) static

false

MOV128SZ

MOV16SZ

MOV32SZ

MOV64SZ

MOV8SZ

sinking

X86AvoidSFBInspectionLimit

cl::opt< unsigned > X86AvoidSFBInspectionLimit("x86-sfb-inspection-limit", cl::desc("X86: Number of instructions backward to " "inspect for store forwarding blocks."), cl::init(20), cl::Hidden) ( "x86-sfb-inspection-limit" , cl::desc("X86: Number of instructions backward to " "inspect for store forwarding blocks.") , cl::init(20) , cl::Hidden ) static