LLVM 20.0.0git
|
#include "llvm/ADT/ArrayRef.h"
#include "llvm/ADT/FoldingSet.h"
#include "llvm/ADT/GraphTraits.h"
#include "llvm/ADT/STLExtras.h"
#include "llvm/ADT/SetVector.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/ADT/StringRef.h"
#include "llvm/Analysis/LoopInfo.h"
#include "llvm/Analysis/PostDominators.h"
#include "llvm/IR/BasicBlock.h"
#include "llvm/IR/Constant.h"
#include "llvm/IR/Constants.h"
#include "llvm/IR/DerivedTypes.h"
#include "llvm/IR/Dominators.h"
#include "llvm/IR/Function.h"
#include "llvm/IR/Instruction.h"
#include "llvm/IR/Instructions.h"
#include "llvm/IR/Type.h"
#include "llvm/IR/Use.h"
#include "llvm/IR/User.h"
#include "llvm/IR/Value.h"
#include "llvm/IR/Verifier.h"
#include "llvm/InitializePasses.h"
#include "llvm/Pass.h"
#include "llvm/Support/Allocator.h"
#include "llvm/Support/Casting.h"
#include "llvm/Support/CommandLine.h"
#include "llvm/Support/Compiler.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/raw_ostream.h"
#include "llvm/Transforms/Utils/Local.h"
#include <algorithm>
#include <cassert>
#include <cstddef>
#include <cstdint>
#include <iterator>
#include <map>
#include <set>
#include <utility>
#include <vector>
Go to the source code of this file.
Classes | |
struct | false::GepNode |
struct | false::in_set |
Namespaces | |
namespace | llvm |
This is an optimization pass for GlobalISel generic memory operations. | |
namespace | false |
Macros | |
#define | DEBUG_TYPE "commgep" |
Functions | |
void | llvm::initializeHexagonCommonGEPPass (PassRegistry &) |
INITIALIZE_PASS_BEGIN (HexagonCommonGEP, "hcommgep", "Hexagon Common GEP", false, false) INITIALIZE_PASS_END(HexagonCommonGEP | |
raw_ostream & | false::operator<< (raw_ostream &OS, const GepNode &GN) |
template<typename NodeContainer > | |
void | false::dump_node_container (raw_ostream &OS, const NodeContainer &S) |
raw_ostream & | false::operator<< (raw_ostream &OS, const NodeVect &S) LLVM_ATTRIBUTE_UNUSED |
raw_ostream & | false::operator<< (raw_ostream &OS, const NodeToUsesMap &M) LLVM_ATTRIBUTE_UNUSED |
void * | operator new (size_t, SpecificBumpPtrAllocator< GepNode > &A) |
static void | invert_find_roots (const NodeVect &Nodes, NodeChildrenMap &NCM, NodeVect &Roots) |
static void | nodes_for_root (GepNode *Root, NodeChildrenMap &NCM, NodeSet &Nodes) |
static const NodeSet * | node_class (GepNode *N, NodeSymRel &Rel) |
static NodePair | node_pair (GepNode *N1, GepNode *N2) |
static unsigned | node_hash (GepNode *N) |
static bool | node_eq (GepNode *N1, GepNode *N2, NodePairSet &Eq, NodePairSet &Ne) |
template<typename T > | |
static BasicBlock * | nearest_common_dominator (DominatorTree *DT, T &Blocks) |
template<typename T > | |
static BasicBlock * | nearest_common_dominatee (DominatorTree *DT, T &Blocks) |
template<typename T > | |
static BasicBlock::iterator | first_use_of_in_block (T &Values, BasicBlock *B) |
static bool | is_empty (const BasicBlock *B) |
static BasicBlock * | preheader (DominatorTree *DT, Loop *L) |
FunctionPass * | llvm::createHexagonCommonGEP () |
Variables | |
static cl::opt< bool > | OptSpeculate ("commgep-speculate", cl::init(true), cl::Hidden) |
static cl::opt< bool > | OptEnableInv ("commgep-inv", cl::init(true), cl::Hidden) |
static cl::opt< bool > | OptEnableConst ("commgep-const", cl::init(true), cl::Hidden) |
hcommgep | |
Hexagon Common | GEP |
Hexagon Common | false |
#define DEBUG_TYPE "commgep" |
Definition at line 50 of file HexagonCommonGEP.cpp.
|
static |
Definition at line 715 of file HexagonCommonGEP.cpp.
INITIALIZE_PASS_BEGIN | ( | HexagonCommonGEP | , |
"hcommgep" | , | ||
"Hexagon Common GEP" | , | ||
false | , | ||
false | |||
) |
|
static |
Definition at line 431 of file HexagonCommonGEP.cpp.
References N.
|
static |
Definition at line 741 of file HexagonCommonGEP.cpp.
References B.
|
static |
Definition at line 689 of file HexagonCommonGEP.cpp.
References B, Blocks, llvm::DominatorTree::dominates(), llvm::DominatorTreeBase< NodeT, IsPostDom >::getRoot(), and I.
|
static |
Definition at line 660 of file HexagonCommonGEP.cpp.
References B, Blocks, llvm::dbgs(), llvm::DominatorTree::findNearestCommonDominator(), llvm::Value::getName(), I, and LLVM_DEBUG.
Definition at line 469 of file HexagonCommonGEP.cpp.
References N.
|
static |
Definition at line 495 of file HexagonCommonGEP.cpp.
References node_eq(), node_hash(), node_pair(), and P.
Referenced by node_eq().
|
static |
|
static |
Definition at line 479 of file HexagonCommonGEP.cpp.
Referenced by node_eq().
|
static |
Definition at line 443 of file HexagonCommonGEP.cpp.
References llvm::append_range(), llvm::First, llvm::NodeSet::insert(), and N.
|
inline |
Definition at line 320 of file HexagonCommonGEP.cpp.
References A.
|
static |
Definition at line 854 of file HexagonCommonGEP.cpp.
References llvm::DomTreeNodeBase< NodeT >::getBlock(), llvm::DomTreeNodeBase< NodeT >::getIDom(), llvm::DominatorTreeBase< NodeT, IsPostDom >::getNode(), and OptSpeculate.
Hexagon Common false |
Definition at line 172 of file HexagonCommonGEP.cpp.
Hexagon Common GEP |
Definition at line 171 of file HexagonCommonGEP.cpp.
Referenced by allZeroIndices(), aspaceWrapValue(), calculateVectorIndex(), llvm::FastISel::canFoldAddIntoGEP(), canonicalizeGEPOfConstGEPI8(), canRewriteGEPAsOffset(), llvm::slpvectorizer::BoUpSLP::canVectorizeLoads(), chainToBasePointerCost(), checkOverflow(), CleanupConstantGlobalUsers(), collectOffsets(), collectSRATypes(), combineAndLoadToBZHI(), llvm::ConstantFoldCastOperand(), llvm::ConstantFoldExtractElementInstruction(), convertToParamAS(), convertToRelLookupTable(), llvm::MachineInstr::copyFlagsFromInstruction(), llvm::GetElementPtrInst::Create(), decompose(), decomposeGEP(), DoFlattenLoopPair(), llvm::emitGEPOffset(), llvm::VPWidenGEPRecipe::execute(), llvm::VPWidenPointerInductionRecipe::execute(), llvm::VPlan::execute(), fillCommonArgs(), llvm::findAllocaForValue(), findArgParts(), findBaseDefiningValue(), findBaseDefiningValueOfVector(), findForkedSCEVs(), findLoadCallsAtConstantOffset(), findRematerializableChainToBasePointer(), FindSingleUseIdentifiedObject(), llvm::InstCombinerImpl::foldCmpLoadFromIndexedGlobal(), foldDependentIVs(), foldGEPChainAsStructAccess(), foldGEPChainAsU8Access(), llvm::InstCombinerImpl::foldICmpAndConstant(), llvm::InstCombinerImpl::foldICmpCommutative(), llvm::InstCombinerImpl::foldICmpInstWithConstantNotInt(), llvm::InstCombinerImpl::foldPHIArgGEPIntoPHI(), foldSelectGEP(), llvm::gep_type_begin(), llvm::gep_type_end(), GEPSequentialConstIndexed(), GEPToVectorIndex(), llvm::ConstantExpr::getAlignOf(), getBaseType(), llvm::ARMTTIImpl::getGatherScatterOpCost(), llvm::ScalarEvolution::getGEPExpr(), getGEPSmallConstantIntOffsetV(), llvm::getIndexExpressionsFromGEP(), llvm::TargetTransformInfoImplCRTPBase< T >::getInstructionCost(), llvm::X86TTIImpl::getMemoryOpCost(), getOffsetFromIndex(), getOptimizationFlags(), llvm::TargetTransformInfoImplCRTPBase< T >::getPointersChainCost(), llvm::RISCVTTIImpl::getPointersChainCost(), llvm::getPtrStride(), getSalvageOpsForGEP(), llvm::ConstantExpr::getSizeOf(), getStrideAndModOffsetOfGEP(), llvm::getUnderlyingObject(), getUniformBase(), llvm::AMDGPUTTIImpl::getUnrollingPreferences(), HasAddressTaken(), hasOnlyOneNonZeroIndex(), llvm::Operator::hasPoisonGeneratingFlags(), llvm::Instruction::hasSameSpecialState(), hoistGEP(), insertSpills(), llvm::IRSimilarity::isClose(), llvm::IsConstantOffsetFromGlobal(), isDereferenceableAndAlignedPointer(), isFoldableInLoop(), llvm::isGEPBasedOnPointerToString(), isGEPFoldable(), isGEPKnownNonNull(), isKnownTypeIdMember(), isNoWrapAddRec(), isOnlyCopiedFromConstantMemory(), isPointerOperand(), IsPtrInBounds(), isSafeAndProfitableToSinkLoad(), IsSafeComputationToRemove(), llvm::vputils::isUniformAfterVectorization(), LLVMGEPGetNoWrapFlags(), LLVMGEPSetNoWrapFlags(), LLVMGetGEPSourceElementType(), LLVMGetNumIndices(), LLVMIsInBounds(), LLVMSetIsInBounds(), llvm::lowerGlobalIFuncUsersAsGlobalCtor(), makeGEPAndLoad(), makeGEPAndStore(), llvm::PatternMatch::VScaleVal_match::match(), llvm::PatternMatch::PtrAdd_match< PointerOpTy, OffsetOpTy >::match(), llvm::InstModificationIRStrategy::mutate(), parseJumpTable(), passingValueIsAlwaysUndefined(), reconstructCommon(), reconstructGEP(), llvm::BPFPreserveStaticOffsetPass::reconstructLoad(), llvm::BPFPreserveStaticOffsetPass::reconstructStore(), removePAICalls(), replaceWithGEP(), rewriteAccessChain(), rewriteGEPAsOffset(), rsrcPartRoot(), llvm::TypeFinder::run(), llvm::JumpTableToSwitchPass::run(), llvm::salvageDebugInfoImpl(), shouldConvertToRelLookupTable(), shouldMergeGEPs(), shouldSinkVectorOfPtrs(), llvm::InstCombinerImpl::SimplifyDemandedUseBits(), llvm::InstCombinerImpl::SimplifyDemandedVectorElts(), splitGlobal(), stripGetElementPtr(), StripPointerGEPsAndCasts(), llvm::VPRecipeBuilder::tryToCreateWidenRecipe(), tryToRecognizeTableBasedCttz(), unrollGEPLoad(), unrollGEPStore(), llvm::ValueEnumerator::ValueEnumerator(), llvm::dxil::ValueEnumerator::ValueEnumerator(), llvm::InstCombinerImpl::visitExtractElementInst(), llvm::InstCombinerImpl::visitExtractValueInst(), llvm::InstCombinerImpl::visitFCmpInst(), llvm::InstCombinerImpl::visitGEPOfGEP(), llvm::ObjectSizeOffsetEvaluator::visitGEPOperator(), llvm::InstCombinerImpl::visitGetElementPtrInst(), llvm::InstCombinerImpl::visitPtrToInt(), llvm::InstCombinerImpl::visitStoreInst(), llvm::VPlanTransforms::VPInstructionsToVPRecipes(), llvm::VPRecipeWithIRFlags::VPRecipeWithIRFlags(), WriteConstantInternal(), and WriteOptimizationInfo().
hcommgep |
Definition at line 171 of file HexagonCommonGEP.cpp.
|
static |
|
static |
|
static |
Referenced by preheader().