LLVM 24.0.0git
X86AvoidStoreForwardingBlocks.cpp File Reference

Go to the source code of this file.

Macros

#define DEBUG_TYPE   "x86-avoid-sfb"

Functions

 INITIALIZE_PASS_BEGIN (X86AvoidSFBLegacy, DEBUG_TYPE, "Machine code sinking", false, false) INITIALIZE_PASS_END(X86AvoidSFBLegacy
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, unsigned InspectionLimit)
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

 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

Macro Definition Documentation

◆ DEBUG_TYPE

#define DEBUG_TYPE   "x86-avoid-sfb"

Definition at line 55 of file X86AvoidStoreForwardingBlocks.cpp.

Function Documentation

◆ findPotentialBlockers()

◆ getAddrOffset()

int getAddrOffset ( const MachineInstr * MI)
static

◆ getBaseOperand()

MachineOperand & getBaseOperand ( MachineInstr * MI)
static

◆ getDispOperand()

MachineOperand & getDispOperand ( MachineInstr * MI)
static

Definition at line 297 of file X86AvoidStoreForwardingBlocks.cpp.

References llvm::X86::AddrDisp, getAddrOffset(), and MI.

Referenced by isRelevantAddressingMode().

◆ getYMMtoXMMLoadOpcode()

unsigned getYMMtoXMMLoadOpcode ( unsigned LoadOpcode)
static

Definition at line 228 of file X86AvoidStoreForwardingBlocks.cpp.

References llvm_unreachable.

◆ getYMMtoXMMStoreOpcode()

unsigned getYMMtoXMMStoreOpcode ( unsigned StoreOpcode)
static

Definition at line 257 of file X86AvoidStoreForwardingBlocks.cpp.

References llvm_unreachable.

◆ hasSameBaseOpValue()

◆ INITIALIZE_PASS_BEGIN()

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

◆ isBlockingStore()

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

Definition at line 604 of file X86AvoidStoreForwardingBlocks.cpp.

◆ isPotentialBlockedMemCpyLd()

bool isPotentialBlockedMemCpyLd ( unsigned Opcode)
static

Definition at line 148 of file X86AvoidStoreForwardingBlocks.cpp.

References isXMMLoadOpcode(), and isYMMLoadOpcode().

◆ isPotentialBlockedMemCpyPair()

bool isPotentialBlockedMemCpyPair ( unsigned LdOpcode,
unsigned StOpcode )
static

Definition at line 152 of file X86AvoidStoreForwardingBlocks.cpp.

◆ isPotentialBlockingStoreInst()

bool isPotentialBlockingStoreInst ( unsigned Opcode,
unsigned LoadOpcode )
static

Definition at line 204 of file X86AvoidStoreForwardingBlocks.cpp.

References isYMMLoadOpcode().

◆ isRelevantAddressingMode()

◆ isXMMLoadOpcode()

bool isXMMLoadOpcode ( unsigned Opcode)
static

Definition at line 128 of file X86AvoidStoreForwardingBlocks.cpp.

Referenced by isPotentialBlockedMemCpyLd().

◆ isYMMLoadOpcode()

bool isYMMLoadOpcode ( unsigned Opcode)
static

◆ removeRedundantBlockingStores()

◆ updateBlockingStoresDispSizeMap()

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

Definition at line 612 of file X86AvoidStoreForwardingBlocks.cpp.

References Size.

◆ updateKillStatus()

Variable Documentation

◆ DEBUG_TYPE

DEBUG_TYPE

Definition at line 121 of file X86AvoidStoreForwardingBlocks.cpp.

◆ false

Machine code false

Definition at line 122 of file X86AvoidStoreForwardingBlocks.cpp.

◆ MOV128SZ

const int MOV128SZ = 16
static

Definition at line 222 of file X86AvoidStoreForwardingBlocks.cpp.

◆ MOV16SZ

const int MOV16SZ = 2
static

Definition at line 225 of file X86AvoidStoreForwardingBlocks.cpp.

◆ MOV32SZ

const int MOV32SZ = 4
static

Definition at line 224 of file X86AvoidStoreForwardingBlocks.cpp.

◆ MOV64SZ

const int MOV64SZ = 8
static

Definition at line 223 of file X86AvoidStoreForwardingBlocks.cpp.

◆ MOV8SZ

const int MOV8SZ = 1
static

Definition at line 226 of file X86AvoidStoreForwardingBlocks.cpp.

◆ sinking

Machine code sinking

Definition at line 121 of file X86AvoidStoreForwardingBlocks.cpp.