LLVM
8.0.1
|
#include "AMDGPU.h"
#include "AMDGPUSubtarget.h"
#include "MCTargetDesc/AMDGPUMCTargetDesc.h"
#include "SIInstrInfo.h"
#include "SIRegisterInfo.h"
#include "Utils/AMDGPUBaseInfo.h"
#include "llvm/ADT/ArrayRef.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/ADT/StringRef.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/Pass.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/MathExtras.h"
#include "llvm/Support/raw_ostream.h"
#include <algorithm>
#include <cassert>
#include <cstdlib>
#include <iterator>
#include <utility>
Go to the source code of this file.
Macros | |
#define | DEBUG_TYPE "si-load-store-opt" |
Enumerations | |
enum | InstClassEnum |
enum | RegisterEnum |
Functions | |
INITIALIZE_PASS_BEGIN (SILoadStoreOptimizer, DEBUG_TYPE, "SI Load Store Optimizer", false, false) INITIALIZE_PASS_END(SILoadStoreOptimizer | |
static void | moveInstsAfter (MachineBasicBlock::iterator I, ArrayRef< MachineInstr *> InstsToMove) |
static void | addDefsUsesToList (const MachineInstr &MI, DenseSet< unsigned > &RegDefs, DenseSet< unsigned > &PhysRegUses) |
static bool | memAccessesCanBeReordered (MachineBasicBlock::iterator A, MachineBasicBlock::iterator B, const SIInstrInfo *TII, AliasAnalysis *AA) |
static bool | addToListsIfDependent (MachineInstr &MI, DenseSet< unsigned > &RegDefs, DenseSet< unsigned > &PhysRegUses, SmallVectorImpl< MachineInstr *> &Insts) |
static bool | canMoveInstsAcrossMemOp (MachineInstr &MemOp, ArrayRef< MachineInstr *> InstsToMove, const SIInstrInfo *TII, AliasAnalysis *AA) |
Variables | |
DEBUG_TYPE | |
SI Load Store | Optimizer |
SI Load Store | false |
#define DEBUG_TYPE "si-load-store-opt" |
Definition at line 94 of file SILoadStoreOptimizer.cpp.
enum InstClassEnum |
Definition at line 97 of file SILoadStoreOptimizer.cpp.
enum RegisterEnum |
Definition at line 112 of file SILoadStoreOptimizer.cpp.
|
static |
Definition at line 244 of file SILoadStoreOptimizer.cpp.
References llvm::detail::DenseSetImpl< ValueT, MapTy, ValueInfoT >::insert(), llvm::TargetRegisterInfo::isPhysicalRegister(), and llvm::MachineInstr::operands().
Referenced by addToListsIfDependent(), and canMoveInstsAcrossMemOp().
|
static |
Definition at line 271 of file SILoadStoreOptimizer.cpp.
References addDefsUsesToList(), llvm::detail::DenseSetImpl< ValueT, MapTy, ValueInfoT >::count(), llvm::TargetRegisterInfo::isPhysicalRegister(), llvm::MachineInstr::operands(), and llvm::SmallVectorTemplateBase< T, bool >::push_back().
Referenced by canMoveInstsAcrossMemOp().
|
static |
Definition at line 296 of file SILoadStoreOptimizer.cpp.
References llvm::abs(), llvm::ARM_AM::add, llvm::MachineInstrBuilder::add(), addDefsUsesToList(), llvm::MachineInstrBuilder::addImm(), llvm::MachineInstrBuilder::addReg(), addToListsIfDependent(), assert(), llvm::TargetLoweringBase::AddrMode::BaseOffs, llvm::MachineBasicBlock::begin(), llvm::BuildMI(), llvm::MachineInstrBuilder::cloneMergedMemRefs(), llvm::SmallPtrSetImpl< PtrType >::count(), llvm::MachineOperand::CreateImm(), llvm::MachineOperand::CreateReg(), llvm::dbgs(), llvm::RegState::Dead, llvm::tgtok::Def, llvm::RegState::Define, llvm::MachineInstr::dump(), E, llvm::MachineBasicBlock::end(), llvm::MachineInstr::getDebugLoc(), llvm::MachineFunction::getFunction(), llvm::AMDGPU::getGlobalSaddrOp(), llvm::MachineOperand::getImm(), llvm::GCNSubtarget::getInstrInfo(), llvm::ilist_node_impl< OptionsT >::getIterator(), llvm::AMDGPU::getMUBUFBaseOpcode(), llvm::AMDGPU::getMUBUFDwords(), llvm::AMDGPU::getMUBUFHasSoffset(), llvm::AMDGPU::getMUBUFHasSrsrc(), llvm::AMDGPU::getMUBUFHasVAddr(), llvm::AMDGPU::getMUBUFOpcode(), llvm::AMDGPU::getNamedOperandIdx(), llvm::MachineInstr::getNumOperands(), llvm::MachineInstr::getOpcode(), llvm::MachineInstr::getOperand(), llvm::MachineInstr::getParent(), llvm::MachineOperand::getReg(), getReg(), llvm::MachineFunction::getRegInfo(), llvm::AMDGPU::getSMRDEncodedOffset(), llvm::MachineOperand::getSubReg(), llvm::MachineFunction::getSubtarget(), llvm::GCNSubtarget::getTargetLowering(), llvm::TargetLoweringBase::AddrMode::HasBaseReg, llvm::GCNSubtarget::hasDwordx3LoadStores(), llvm::MachineInstr::hasOrderedMemoryRef(), I, llvm::SmallPtrSetImpl< PtrType >::insert(), llvm::MachineOperand::isImm(), llvm::SITargetLowering::isLegalGlobalAddressingMode(), llvm::TargetRegisterInfo::isPhysicalRegister(), isReg(), llvm::MachineOperand::isReg(), llvm::isUInt< 8 >(), llvm::RegState::Kill, llvm::GCNSubtarget::ldsRequiresM0Init(), LLVM_DEBUG, llvm_unreachable, llvm::GCNSubtarget::loadStoreOptEnabled(), llvm::Match, llvm::MachineInstr::mayLoad(), llvm::MachineInstr::mayLoadOrStore(), memAccessesCanBeReordered(), MI, Modified, moveInstsAfter(), MRI, llvm::None, P, llvm::SmallVectorTemplateBase< T >::push_back(), Reg, std::swap(), TII, TRI, and llvm::LPAC::UNKNOWN.
INITIALIZE_PASS_BEGIN | ( | SILoadStoreOptimizer | , |
DEBUG_TYPE | , | ||
"SI Load Store Optimizer" | , | ||
false | , | ||
false | |||
) |
|
static |
Definition at line 258 of file SILoadStoreOptimizer.cpp.
References llvm::SIInstrInfo::areMemAccessesTriviallyDisjoint().
Referenced by canMoveInstsAcrossMemOp().
|
static |
Definition at line 234 of file SILoadStoreOptimizer.cpp.
References I, llvm::MachineBasicBlock::insert(), and MI.
Referenced by canMoveInstsAcrossMemOp().
DEBUG_TYPE |
Definition at line 223 of file SILoadStoreOptimizer.cpp.
SI Load Store false |
Definition at line 223 of file SILoadStoreOptimizer.cpp.
SI Load Store Optimizer |
Definition at line 223 of file SILoadStoreOptimizer.cpp.