LLVM 24.0.0git
SLPReductionUtils.cpp File Reference

Go to the source code of this file.

Namespaces

namespace  llvm
 This is an optimization pass for GlobalISel generic memory operations.
namespace  llvm::slpvectorizer
 A private "module" namespace for types and utilities used by this pass.

Functions

static bool llvm::slpvectorizer::matchRdxBop (Instruction *I, Value *&V0, Value *&V1)
Instruction * llvm::slpvectorizer::getNonPhiOperand (Instruction *I, PHINode *Phi)
bool llvm::slpvectorizer::isReductionCandidate (Instruction *I)
Type * llvm::slpvectorizer::getBoolReduxWideTy (RecurKind RdxKind, Type *RootTy, Type *LeafTy)
BoolBitmask llvm::slpvectorizer::isBoolBitmaskRdx (RecurKind RdxKind, const SmallDenseMap< Value *, NarrowedLeafInfo > &NarrowedLeafShifts, const DataLayout &DL)
Value * llvm::slpvectorizer::tryEmitBoolReduxBitcastCmp (IRBuilderBase &Builder, const TargetTransformInfo &TTI, RecurKind RdxKind, Value *Vec, const Value *Root, FastMathFlags FMF, TargetTransformInfo::TargetCostKind CostKind)
 Emits the booleanized logical and/or reduction of Vec with the i1 root Root as trunc+bitcast+cmp (all-ones comparison for And, zero for Or) if it is cheaper than the wide reduction plus the result trunc.