Go to the documentation of this file.
12 #ifndef LLVM_LIB_TARGET_AMDGPU_AMDGPUALIASANALYSIS_H
13 #define LLVM_LIB_TARGET_AMDGPU_AMDGPUALIASANALYSIS_H
61 std::unique_ptr<AMDGPUAAResult> Result;
93 AAR.addAAResult(WrapperPass->getResult());
99 #endif // LLVM_LIB_TARGET_AMDGPU_AMDGPUALIASANALYSIS_H
A set of analyses that are preserved following a run of a transformation pass.
Analysis pass providing a never-invalidated alias analysis result.
This is an optimization pass for GlobalISel generic memory operations.
We currently emits eax Perhaps this is what we really should generate is Is imull three or four cycles eax eax The current instruction priority is based on pattern complexity The former is more complex because it folds a load so the latter will not be emitted Perhaps we should use AddedComplexity to give LEA32r a higher priority We should always try to match LEA first since the LEA matching code does some estimate to determine whether the match is profitable if we care more about code then imull is better It s two bytes shorter than movl leal On a Pentium M
A parsed version of the target data layout string in and methods for querying it.
ImmutablePass class - This class is used to provide information that does not need to be run.
This currently compiles esp xmm0 movsd esp eax eax esp ret We should use not the dag combiner This is because dagcombine2 needs to be able to see through the X86ISD::Wrapper which DAGCombine can t really do The code for turning x load into a single vector load is target independent and should be moved to the dag combiner The code for turning x load into a vector load can only handle a direct load from a global or a direct load from the stack It should be generalized to handle any load from P
Legacy wrapper pass to provide the AMDGPUAAResult object.
The possible results of an alias query.
bool invalidate(Function &, const PreservedAnalyses &, FunctionAnalysisManager::Invalidator &Inv)
Handle invalidation events from the new pass manager.
void getAnalysisUsage(AnalysisUsage &AU) const override
getAnalysisUsage - This function should be overriden by passes that need analysis information to do t...
amdgpu Simplify well known AMD library false FunctionCallee Value * Arg
This class stores info we want to provide to or retain within an alias query.
bool doInitialization(Module &M) override
doInitialization - Virtual method overridden by subclasses to do any necessary initialization before ...
Represent the analysis usage information of a pass.
API to communicate dependencies between analyses during invalidation.
bool doFinalization(Module &M) override
doFinalization - Virtual method overriden by subclasses to do any necessary clean up after all passes...
ModRefInfo getModRefInfoMask(const MemoryLocation &Loc, AAQueryInfo &AAQI, bool IgnoreLocals)
A special type used by analysis passes to provide an address that identifies that particular analysis...
ModRefInfo
Flags indicating whether a memory access modifies or references memory.
AMDGPUAAResult(AMDGPUAAResult &&Arg)
OutputIt move(R &&Range, OutputIt Out)
Provide wrappers to std::move which take ranges instead of having to pass begin/end explicitly.
A Module instance is used to store all the information related to an LLVM module.
A CRTP mix-in that provides informational APIs needed for analysis passes.
AliasResult alias(const MemoryLocation &LocA, const MemoryLocation &LocB, AAQueryInfo &AAQI, const Instruction *CtxI)
AMDGPUExternalAAWrapper()
const AMDGPUAAResult & getResult() const
MachineBasicBlock MachineBasicBlock::iterator DebugLoc DL
AMDGPUAAResult(const DataLayout &DL)
A simple AA result that uses TBAA metadata to answer queries.
Pass interface - Implemented by all 'passes'.
A wrapper pass for external alias analyses.
A container for analyses that lazily runs them and caches their results.
AMDGPUAAResult run(Function &F, AnalysisManager< Function > &AM)
AMDGPUAAResult & getResult()
A base class to help implement the function alias analysis results concept.
Representation for a specific memory location.