|
LLVM 23.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 342 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 294 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 302 of file X86AvoidStoreForwardingBlocks.cpp.
References llvm::X86::AddrBaseReg, getAddrOffset(), and MI.
Referenced by hasSameBaseOpValue(), isRelevantAddressingMode(), and updateKillStatus().
|
static |
Definition at line 307 of file X86AvoidStoreForwardingBlocks.cpp.
References llvm::X86::AddrDisp, getAddrOffset(), and MI.
Referenced by isRelevantAddressingMode().
Definition at line 236 of file X86AvoidStoreForwardingBlocks.cpp.
References llvm_unreachable.
Definition at line 265 of file X86AvoidStoreForwardingBlocks.cpp.
References llvm_unreachable.
|
static |
Definition at line 604 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 615 of file X86AvoidStoreForwardingBlocks.cpp.
Definition at line 156 of file X86AvoidStoreForwardingBlocks.cpp.
References isXMMLoadOpcode(), and isYMMLoadOpcode().
Definition at line 160 of file X86AvoidStoreForwardingBlocks.cpp.
Definition at line 212 of file X86AvoidStoreForwardingBlocks.cpp.
References isYMMLoadOpcode().
|
static |
Definition at line 315 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 136 of file X86AvoidStoreForwardingBlocks.cpp.
Referenced by isPotentialBlockedMemCpyLd().
Definition at line 146 of file X86AvoidStoreForwardingBlocks.cpp.
Referenced by isPotentialBlockedMemCpyLd(), and isPotentialBlockingStoreInst().
|
static |
Definition at line 633 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 623 of file X86AvoidStoreForwardingBlocks.cpp.
References Size.
|
static |
Definition at line 489 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 129 of file X86AvoidStoreForwardingBlocks.cpp.
|
static |
| Machine code false |
Definition at line 130 of file X86AvoidStoreForwardingBlocks.cpp.
|
static |
Definition at line 230 of file X86AvoidStoreForwardingBlocks.cpp.
|
static |
Definition at line 233 of file X86AvoidStoreForwardingBlocks.cpp.
|
static |
Definition at line 232 of file X86AvoidStoreForwardingBlocks.cpp.
|
static |
Definition at line 231 of file X86AvoidStoreForwardingBlocks.cpp.
|
static |
Definition at line 234 of file X86AvoidStoreForwardingBlocks.cpp.
| Machine code sinking |
Definition at line 129 of file X86AvoidStoreForwardingBlocks.cpp.
|
static |
Referenced by findPotentialBlockers().