LLVM
8.0.1
|
This pass creates bundles of SMEM and VMEM instructions forming memory clauses if XNACK is enabled. More...
#include "AMDGPU.h"
#include "AMDGPUSubtarget.h"
#include "GCNRegPressure.h"
#include "SIInstrInfo.h"
#include "SIMachineFunctionInfo.h"
#include "SIRegisterInfo.h"
#include "MCTargetDesc/AMDGPUMCTargetDesc.h"
#include "llvm/ADT/DenseMap.h"
#include "llvm/CodeGen/LiveIntervals.h"
#include "llvm/CodeGen/MachineFunctionPass.h"
Go to the source code of this file.
Macros | |
#define | DEBUG_TYPE "si-form-memory-clauses" |
Functions | |
INITIALIZE_PASS_BEGIN (SIFormMemoryClauses, DEBUG_TYPE, "SI Form memory clauses", false, false) INITIALIZE_PASS_END(SIFormMemoryClauses | |
static bool | isVMEMClauseInst (const MachineInstr &MI) |
static bool | isSMEMClauseInst (const MachineInstr &MI) |
static bool | isValidClauseInst (const MachineInstr &MI, bool IsVMEMClause) |
static unsigned | getMopState (const MachineOperand &MO) |
Variables | |
static cl::opt< unsigned > | MaxClause ("amdgpu-max-memory-clause", cl::Hidden, cl::init(15), cl::desc("Maximum length of a memory clause, instructions")) |
DEBUG_TYPE | |
SI Form memory | clauses |
SI Form memory | false |
This pass creates bundles of SMEM and VMEM instructions forming memory clauses if XNACK is enabled.
Def operands of clauses are marked as early clobber to make sure we will not override any source within a clause.
Definition in file SIFormMemoryClauses.cpp.
#define DEBUG_TYPE "si-form-memory-clauses" |
Definition at line 30 of file SIFormMemoryClauses.cpp.
|
static |
Definition at line 125 of file SIFormMemoryClauses.cpp.
References llvm::GCNDownwardRPTracker::advanceToNext(), llvm::LaneBitmask::all(), B, llvm::BuildMI(), llvm::MachineInstr::bundleWithPred(), llvm::RegState::Dead, E, llvm::RegState::EarlyClobber, llvm::LaneBitmask::getAll(), llvm::MachineFunction::getFunction(), llvm::LaneBitmask::getHighestLane(), llvm::MachineFunction::getInfo(), llvm::LaneBitmask::getNumLanes(), llvm::GCNRegPressure::getOccupancy(), llvm::MachineOperand::getReg(), llvm::MachineFunction::getRegInfo(), llvm::GCNRegPressure::getSGPRNum(), llvm::MachineFunction::getSubtarget(), llvm::GCNRegPressure::getVGPRNum(), I, llvm::RegState::Implicit, llvm::MachineOperand::isDead(), llvm::MachineOperand::isEarlyClobber(), llvm::MachineOperand::isImplicit(), llvm::MachineOperand::isKill(), llvm::TargetRegisterInfo::isPhysicalRegister(), llvm::MachineOperand::isRenamable(), llvm::MachineOperand::isUndef(), isValidClauseInst(), llvm::TargetRegisterInfo::isVirtualRegister(), isVMEMClauseInst(), llvm::RegState::Kill, llvm_unreachable, llvm::BitmaskEnumDetail::Mask(), MaxClause, MI, llvm::GCNRPTracker::moveMaxPressure(), MRI, llvm::MachineInstr::operands(), llvm::SmallVectorTemplateBase< T >::push_back(), Reg, llvm::RegState::Renamable, llvm::GCNDownwardRPTracker::reset(), llvm::sort(), llvm::ARM_MB::ST, SubReg, TII, TRI, and llvm::RegState::Undef.
INITIALIZE_PASS_BEGIN | ( | SIFormMemoryClauses | , |
DEBUG_TYPE | , | ||
"SI Form memory clauses" | , | ||
false | , | ||
false | |||
) |
|
static |
Definition at line 104 of file SIFormMemoryClauses.cpp.
References llvm::SIInstrInfo::isSMRD().
Referenced by isValidClauseInst().
|
static |
Definition at line 110 of file SIFormMemoryClauses.cpp.
References llvm::AMDGPU::getAtomicNoRetOp(), llvm::AMDGPU::getAtomicRetOp(), llvm::MachineInstr::getOpcode(), llvm::MachineInstr::isBundled(), llvm::MachineInstr::isDebugValue(), isSMEMClauseInst(), isVMEMClauseInst(), llvm::MachineInstr::mayLoad(), and llvm::MachineInstr::mayStore().
Referenced by getMopState().
|
static |
Definition at line 100 of file SIFormMemoryClauses.cpp.
References llvm::SIInstrInfo::isFLAT(), and llvm::SIInstrInfo::isVMEM().
Referenced by getMopState(), and isValidClauseInst().
SI Form memory clauses |
Definition at line 88 of file SIFormMemoryClauses.cpp.
DEBUG_TYPE |
Definition at line 88 of file SIFormMemoryClauses.cpp.
SI Form memory false |
Definition at line 88 of file SIFormMemoryClauses.cpp.
|
static |
Referenced by getMopState().