LLVM 20.0.0git
|
#include "X86.h"
#include "X86InstrInfo.h"
#include "X86Subtarget.h"
#include "llvm/Analysis/AliasAnalysis.h"
#include "llvm/CodeGen/MachineBasicBlock.h"
#include "llvm/CodeGen/MachineFunction.h"
#include "llvm/CodeGen/MachineFunctionPass.h"
#include "llvm/CodeGen/MachineInstr.h"
#include "llvm/CodeGen/MachineInstrBuilder.h"
#include "llvm/CodeGen/MachineOperand.h"
#include "llvm/CodeGen/MachineRegisterInfo.h"
#include "llvm/IR/DebugInfoMetadata.h"
#include "llvm/IR/DebugLoc.h"
#include "llvm/IR/Function.h"
#include "llvm/InitializePasses.h"
#include "llvm/MC/MCInstrDesc.h"
Go to the source code of this file.
Macros | |
#define | DEBUG_TYPE "x86-avoid-SFB" |
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 |
#define DEBUG_TYPE "x86-avoid-SFB" |
Definition at line 55 of file X86AvoidStoreForwardingBlocks.cpp.
|
static |
Definition at line 339 of file X86AvoidStoreForwardingBlocks.cpp.
References llvm::ilist_detail::node_parent_access< NodeTy, ParentTy >::getParent(), MBB, MI, llvm::MachineBasicBlock::predecessors(), llvm::SmallVectorTemplateBase< T, bool >::push_back(), llvm::reverse(), and X86AvoidSFBInspectionLimit.
|
static |
Definition at line 291 of file X86AvoidStoreForwardingBlocks.cpp.
References assert(), llvm::X86II::getMemoryOperandNo(), llvm::X86II::getOperandBias(), MI, and llvm::MCInstrDesc::TSFlags.
Referenced by getBaseOperand(), getDispOperand(), and isRelevantAddressingMode().
|
static |
Definition at line 299 of file X86AvoidStoreForwardingBlocks.cpp.
References llvm::X86::AddrBaseReg, getAddrOffset(), and MI.
Referenced by hasSameBaseOpValue(), isRelevantAddressingMode(), and updateKillStatus().
|
static |
Definition at line 304 of file X86AvoidStoreForwardingBlocks.cpp.
References llvm::X86::AddrDisp, getAddrOffset(), and MI.
Referenced by isRelevantAddressingMode().
Definition at line 233 of file X86AvoidStoreForwardingBlocks.cpp.
References llvm_unreachable.
Definition at line 262 of file X86AvoidStoreForwardingBlocks.cpp.
References llvm_unreachable.
|
static |
Definition at line 608 of file X86AvoidStoreForwardingBlocks.cpp.
References getBaseOperand(), llvm::MachineOperand::getIndex(), llvm::MachineOperand::getReg(), and llvm::MachineOperand::isReg().
INITIALIZE_PASS_BEGIN | ( | X86AvoidSFBPass | , |
DEBUG_TYPE | , | ||
"Machine code sinking" | , | ||
false | , | ||
false | |||
) |
|
static |
Definition at line 619 of file X86AvoidStoreForwardingBlocks.cpp.
Definition at line 153 of file X86AvoidStoreForwardingBlocks.cpp.
References isXMMLoadOpcode(), and isYMMLoadOpcode().
Definition at line 157 of file X86AvoidStoreForwardingBlocks.cpp.
Definition at line 209 of file X86AvoidStoreForwardingBlocks.cpp.
References isYMMLoadOpcode().
|
static |
Definition at line 312 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.
Definition at line 133 of file X86AvoidStoreForwardingBlocks.cpp.
Referenced by isPotentialBlockedMemCpyLd().
Definition at line 143 of file X86AvoidStoreForwardingBlocks.cpp.
Referenced by isPotentialBlockedMemCpyLd(), and isPotentialBlockingStoreInst().
|
static |
|
static |
Definition at line 627 of file X86AvoidStoreForwardingBlocks.cpp.
References Size.
|
static |
Definition at line 493 of file X86AvoidStoreForwardingBlocks.cpp.
References getBaseOperand(), llvm::ilist_detail::node_parent_access< NodeTy, ParentTy >::getParent(), llvm::ilist_node_with_parent< NodeTy, ParentTy, Options >::getPrevNode(), llvm::MachineOperand::isKill(), llvm::MachineOperand::isReg(), llvm::prev_nodbg(), and llvm::MachineOperand::setIsKill().
DEBUG_TYPE |
Definition at line 126 of file X86AvoidStoreForwardingBlocks.cpp.
|
static |
Machine code false |
Definition at line 126 of file X86AvoidStoreForwardingBlocks.cpp.
|
static |
Definition at line 227 of file X86AvoidStoreForwardingBlocks.cpp.
|
static |
Definition at line 230 of file X86AvoidStoreForwardingBlocks.cpp.
|
static |
Definition at line 229 of file X86AvoidStoreForwardingBlocks.cpp.
|
static |
Definition at line 228 of file X86AvoidStoreForwardingBlocks.cpp.
|
static |
Definition at line 231 of file X86AvoidStoreForwardingBlocks.cpp.
Machine code sinking |
Definition at line 126 of file X86AvoidStoreForwardingBlocks.cpp.
|
static |
Referenced by findPotentialBlockers().