LLVM
8.0.1
|
#include "X86InstrInfo.h"
#include "X86Subtarget.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/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 53 of file X86AvoidStoreForwardingBlocks.cpp.
|
static |
Definition at line 339 of file X86AvoidStoreForwardingBlocks.cpp.
References llvm::ARM_AM::add, llvm::X86::AddrNumOperands, assert(), llvm::BuildMI(), llvm::MachineInstr::dump(), E, getBaseOperand(), llvm::MachineInstr::getDebugLoc(), llvm::MachineInstr::getDesc(), llvm::MachineFunction::getMachineMemOperand(), llvm::MachineInstr::getOpcode(), llvm::MachineInstr::getOperand(), llvm::MachineBasicBlock::getParent(), llvm::MachineInstr::getParent(), llvm::ilist_node_with_parent< NodeTy, ParentTy, Options >::getPrevNode(), getYMMtoXMMLoadOpcode(), getYMMtoXMMStoreOpcode(), llvm::MCInstrDesc::isCall(), llvm::MachineOperand::isKill(), llvm::MachineOperand::isReg(), isYMMLoadOpcode(), LLVM_DEBUG, llvm::MachineInstr::memoperands_begin(), MI, MOV128SZ, MOV16SZ, MOV32SZ, MOV64SZ, MOV8SZ, MRI, llvm::MachineBasicBlock::pred_begin(), llvm::MachineBasicBlock::pred_end(), llvm::SmallVectorTemplateBase< T >::push_back(), llvm::MachineBasicBlock::rbegin(), llvm::MachineBasicBlock::rend(), llvm::MachineOperand::setIsKill(), Size, TII, TRI, and X86AvoidSFBInspectionLimit.
Referenced by removeRedundantBlockingStores().
|
static |
Definition at line 291 of file X86AvoidStoreForwardingBlocks.cpp.
References assert(), llvm::MachineInstr::getDesc(), llvm::X86II::getMemoryOperandNo(), llvm::X86II::getOperandBias(), 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 llvm::MachineInstr::getOperand().
Referenced by findPotentialBlockers(), hasSameBaseOpValue(), isRelevantAddressingMode(), and updateKillStatus().
|
static |
Definition at line 304 of file X86AvoidStoreForwardingBlocks.cpp.
References llvm::X86::AddrDisp, getAddrOffset(), and llvm::MachineInstr::getOperand().
Referenced by isRelevantAddressingMode(), removeRedundantBlockingStores(), and updateKillStatus().
Definition at line 233 of file X86AvoidStoreForwardingBlocks.cpp.
References llvm_unreachable.
Referenced by findPotentialBlockers().
Definition at line 262 of file X86AvoidStoreForwardingBlocks.cpp.
References llvm_unreachable.
Referenced by findPotentialBlockers().
|
static |
Definition at line 608 of file X86AvoidStoreForwardingBlocks.cpp.
References getBaseOperand(), llvm::MachineOperand::getIndex(), llvm::MachineOperand::getReg(), and llvm::MachineOperand::isReg().
Referenced by removeRedundantBlockingStores().
INITIALIZE_PASS_BEGIN | ( | X86AvoidSFBPass | , |
DEBUG_TYPE | , | ||
"Machine code sinking" | , | ||
false | , | ||
false | |||
) |
|
static |
Definition at line 619 of file X86AvoidStoreForwardingBlocks.cpp.
Referenced by removeRedundantBlockingStores().
Definition at line 153 of file X86AvoidStoreForwardingBlocks.cpp.
References isXMMLoadOpcode(), and isYMMLoadOpcode().
Referenced by updateKillStatus().
|
static |
Definition at line 157 of file X86AvoidStoreForwardingBlocks.cpp.
Referenced by updateKillStatus().
|
static |
Definition at line 209 of file X86AvoidStoreForwardingBlocks.cpp.
References isYMMLoadOpcode().
Referenced by removeRedundantBlockingStores().
|
static |
Definition at line 312 of file X86AvoidStoreForwardingBlocks.cpp.
References llvm::X86::AddrIndexReg, llvm::X86::AddrScaleAmt, llvm::X86::AddrSegmentReg, getAddrOffset(), getBaseOperand(), getDispOperand(), llvm::MachineOperand::getImm(), llvm::MachineInstr::getOperand(), llvm::MachineOperand::getReg(), llvm::MachineOperand::isFI(), llvm::MachineOperand::isImm(), and llvm::MachineOperand::isReg().
Referenced by removeRedundantBlockingStores(), and updateKillStatus().
Definition at line 133 of file X86AvoidStoreForwardingBlocks.cpp.
Referenced by isPotentialBlockedMemCpyLd().
Definition at line 143 of file X86AvoidStoreForwardingBlocks.cpp.
Referenced by findPotentialBlockers(), isPotentialBlockedMemCpyLd(), and isPotentialBlockingStoreInst().
|
static |
Definition at line 640 of file X86AvoidStoreForwardingBlocks.cpp.
References assert(), llvm::SmallVectorTemplateCommon< T >::back(), llvm::dbgs(), DisableX86AvoidStoreForwardBlocks, llvm::MachineInstr::dump(), findPotentialBlockers(), getDispOperand(), llvm::MachineFunction::getFunction(), llvm::MachineOperand::getImm(), llvm::MachineInstr::getOpcode(), llvm::MachineFunction::getRegInfo(), llvm::MachineFunction::getSubtarget(), hasSameBaseOpValue(), llvm::X86Subtarget::is64Bit(), isBlockingStore(), isPotentialBlockingStoreInst(), isRelevantAddressingMode(), LLVM_DEBUG, MRI, llvm::SmallVectorTemplateBase< T >::pop_back(), llvm::SmallVectorTemplateBase< T >::push_back(), llvm::SmallVectorBase::size(), TII, TRI, updateBlockingStoresDispSizeMap(), and updateKillStatus().
|
static |
Definition at line 627 of file X86AvoidStoreForwardingBlocks.cpp.
References Size.
Referenced by removeRedundantBlockingStores().
|
static |
Definition at line 492 of file X86AvoidStoreForwardingBlocks.cpp.
References assert(), llvm::MachineMemOperand::getAAInfo(), getBaseOperand(), getDispOperand(), llvm::MachineOperand::getImm(), llvm::MachineMemOperand::getOffset(), llvm::MachineInstr::getOpcode(), llvm::MachineBasicBlock::getParent(), llvm::MachineOperand::getParent(), llvm::MachineInstr::getParent(), llvm::ilist_node_with_parent< NodeTy, ParentTy, Options >::getPrevNode(), llvm::MachineMemOperand::getSize(), llvm::MachineMemOperand::getValue(), llvm::MachineInstr::hasOneMemOperand(), llvm::MachineOperand::isKill(), isPotentialBlockedMemCpyLd(), isPotentialBlockedMemCpyPair(), llvm::MachineOperand::isReg(), isRelevantAddressingMode(), llvm::MachineInstr::memoperands_begin(), MI, MRI, llvm::NoAlias, llvm::MachineOperand::setIsKill(), TII, and TRI.
Referenced by removeRedundantBlockingStores().
DEBUG_TYPE |
Definition at line 126 of file X86AvoidStoreForwardingBlocks.cpp.
|
static |
Referenced by removeRedundantBlockingStores().
Machine code false |
Definition at line 126 of file X86AvoidStoreForwardingBlocks.cpp.
|
static |
Definition at line 227 of file X86AvoidStoreForwardingBlocks.cpp.
Referenced by findPotentialBlockers().
|
static |
Definition at line 230 of file X86AvoidStoreForwardingBlocks.cpp.
Referenced by findPotentialBlockers().
|
static |
Definition at line 229 of file X86AvoidStoreForwardingBlocks.cpp.
Referenced by findPotentialBlockers().
|
static |
Definition at line 228 of file X86AvoidStoreForwardingBlocks.cpp.
Referenced by findPotentialBlockers().
|
static |
Definition at line 231 of file X86AvoidStoreForwardingBlocks.cpp.
Referenced by findPotentialBlockers().
Machine code sinking |
Definition at line 126 of file X86AvoidStoreForwardingBlocks.cpp.
|
static |
Referenced by findPotentialBlockers().