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/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 338 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 290 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 298 of file X86AvoidStoreForwardingBlocks.cpp.
References llvm::X86::AddrBaseReg, getAddrOffset(), and MI.
Referenced by hasSameBaseOpValue(), isRelevantAddressingMode(), and updateKillStatus().
|
static |
Definition at line 303 of file X86AvoidStoreForwardingBlocks.cpp.
References llvm::X86::AddrDisp, getAddrOffset(), and MI.
Referenced by isRelevantAddressingMode().
Definition at line 232 of file X86AvoidStoreForwardingBlocks.cpp.
References llvm_unreachable.
Definition at line 261 of file X86AvoidStoreForwardingBlocks.cpp.
References llvm_unreachable.
|
static |
Definition at line 607 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 618 of file X86AvoidStoreForwardingBlocks.cpp.
Definition at line 152 of file X86AvoidStoreForwardingBlocks.cpp.
References isXMMLoadOpcode(), and isYMMLoadOpcode().
Definition at line 156 of file X86AvoidStoreForwardingBlocks.cpp.
Definition at line 208 of file X86AvoidStoreForwardingBlocks.cpp.
References isYMMLoadOpcode().
|
static |
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.
Definition at line 132 of file X86AvoidStoreForwardingBlocks.cpp.
Referenced by isPotentialBlockedMemCpyLd().
Definition at line 142 of file X86AvoidStoreForwardingBlocks.cpp.
Referenced by isPotentialBlockedMemCpyLd(), and isPotentialBlockingStoreInst().
|
static |
|
static |
Definition at line 626 of file X86AvoidStoreForwardingBlocks.cpp.
References Size.
|
static |
Definition at line 492 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 125 of file X86AvoidStoreForwardingBlocks.cpp.
|
static |
Machine code false |
Definition at line 125 of file X86AvoidStoreForwardingBlocks.cpp.
|
static |
Definition at line 226 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 227 of file X86AvoidStoreForwardingBlocks.cpp.
|
static |
Definition at line 230 of file X86AvoidStoreForwardingBlocks.cpp.
Machine code sinking |
Definition at line 125 of file X86AvoidStoreForwardingBlocks.cpp.
|
static |
Referenced by findPotentialBlockers().