LLVM 24.0.0git
SLPReductionUtils.h 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.

Enumerations

enum class  llvm::slpvectorizer::BoolBitmask { llvm::slpvectorizer::None , llvm::slpvectorizer::NoMask , llvm::slpvectorizer::NeedMask }
 The result of matching a boolean bitmask reduction over narrowed leaves. More...

Functions

Type * llvm::slpvectorizer::getBoolReduxWideTy (RecurKind RdxKind, Type *RootTy, Type *LeafTy)
BoolBitmask llvm::slpvectorizer::isBoolBitmaskRdx (RecurKind RdxKind, const SmallDenseMap< Value *, NarrowedLeafInfo > &NarrowedLeafShifts, const DataLayout &DL)
Instruction * llvm::slpvectorizer::getNonPhiOperand (Instruction *I, PHINode *Phi)
bool llvm::slpvectorizer::isReductionCandidate (Instruction *I)
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.