|
LLVM 22.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/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 54 of file X86AvoidStoreForwardingBlocks.cpp.
|
static |
Definition at line 344 of file X86AvoidStoreForwardingBlocks.cpp.
References E(), llvm::ilist_detail::node_parent_access< NodeTy, ParentTy >::getParent(), MBB, MI, llvm::SmallVectorTemplateBase< T, bool >::push_back(), llvm::reverse(), and X86AvoidSFBInspectionLimit.
|
static |
Definition at line 296 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 304 of file X86AvoidStoreForwardingBlocks.cpp.
References llvm::X86::AddrBaseReg, getAddrOffset(), and MI.
Referenced by hasSameBaseOpValue(), isRelevantAddressingMode(), and updateKillStatus().
|
static |
Definition at line 309 of file X86AvoidStoreForwardingBlocks.cpp.
References llvm::X86::AddrDisp, getAddrOffset(), and MI.
Referenced by isRelevantAddressingMode().
Definition at line 238 of file X86AvoidStoreForwardingBlocks.cpp.
References llvm_unreachable.
Definition at line 267 of file X86AvoidStoreForwardingBlocks.cpp.
References llvm_unreachable.
|
static |
Definition at line 612 of file X86AvoidStoreForwardingBlocks.cpp.
References getBaseOperand(), llvm::MachineOperand::getIndex(), llvm::MachineOperand::getReg(), and llvm::MachineOperand::isReg().
| INITIALIZE_PASS_BEGIN | ( | X86AvoidSFBLegacy | , |
| DEBUG_TYPE | , | ||
| "Machine code sinking" | , | ||
| false | , | ||
| false | ) |
References DEBUG_TYPE, and INITIALIZE_PASS_DEPENDENCY.
|
static |
Definition at line 623 of file X86AvoidStoreForwardingBlocks.cpp.
Definition at line 158 of file X86AvoidStoreForwardingBlocks.cpp.
References isXMMLoadOpcode(), and isYMMLoadOpcode().
Definition at line 162 of file X86AvoidStoreForwardingBlocks.cpp.
Definition at line 214 of file X86AvoidStoreForwardingBlocks.cpp.
References isYMMLoadOpcode().
|
static |
Definition at line 317 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 138 of file X86AvoidStoreForwardingBlocks.cpp.
Referenced by isPotentialBlockedMemCpyLd().
Definition at line 148 of file X86AvoidStoreForwardingBlocks.cpp.
Referenced by isPotentialBlockedMemCpyLd(), and isPotentialBlockingStoreInst().
|
static |
Definition at line 641 of file X86AvoidStoreForwardingBlocks.cpp.
References llvm::SmallVectorTemplateCommon< T, typename >::back(), llvm::SmallVectorImpl< T >::clear(), llvm::SmallVectorTemplateBase< T, bool >::pop_back(), llvm::SmallVectorTemplateBase< T, bool >::push_back(), and llvm::SmallVectorTemplateCommon< T, typename >::size().
|
static |
Definition at line 631 of file X86AvoidStoreForwardingBlocks.cpp.
References Size.
|
static |
Definition at line 498 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 131 of file X86AvoidStoreForwardingBlocks.cpp.
|
static |
| Machine code false |
Definition at line 132 of file X86AvoidStoreForwardingBlocks.cpp.
|
static |
Definition at line 232 of file X86AvoidStoreForwardingBlocks.cpp.
|
static |
Definition at line 235 of file X86AvoidStoreForwardingBlocks.cpp.
|
static |
Definition at line 234 of file X86AvoidStoreForwardingBlocks.cpp.
|
static |
Definition at line 233 of file X86AvoidStoreForwardingBlocks.cpp.
|
static |
Definition at line 236 of file X86AvoidStoreForwardingBlocks.cpp.
| Machine code sinking |
Definition at line 131 of file X86AvoidStoreForwardingBlocks.cpp.
|
static |
Referenced by findPotentialBlockers().