LLVM 24.0.0git
SLPCompatibilityAnalysis.h File Reference
#include "llvm/ADT/ArrayRef.h"
#include "llvm/ADT/BitmaskEnum.h"
#include "llvm/ADT/STLExtras.h"
#include "llvm/ADT/SmallBitVector.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/Analysis/IVDescriptors.h"
#include "llvm/IR/Instruction.h"
#include <cstdint>
#include <utility>

Go to the source code of this file.

Classes

class  llvm::slpvectorizer::BinOpSameOpcodeHelper
 Helper class that determines VL can use the same opcode. More...
class  llvm::slpvectorizer::InstructionsState
 Main data required for vectorization of instructions. More...

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

bool llvm::slpvectorizer::isValidForAlternation (unsigned Opcode)
bool llvm::slpvectorizer::isAbsorbableFMulOrFAdd (ArrayRef< Value * > VL, Value *V)
 Checks if V is a single-use fmul/fadd with operands outside VL.
bool llvm::slpvectorizer::isAbsorbableCopyableFMulOrFAdd (const InstructionsState &S, Value *V)
 Checks if V is a copyable single-use fmul/fadd, absorbable as fmuladd(a, b, -0.0) or fmuladd(1.0, a, b).
bool llvm::slpvectorizer::hasOnlyAbsorbableCopyableFMulOrFAdds (ArrayRef< Value * > VL)
 Checks if every copyable in VL is an absorbable fmul/fadd: the binops die instead of being computed and gathered.
InstructionsState llvm::slpvectorizer::getSameOpcode (ArrayRef< Value * > VL, const TargetLibraryInfo &TLI)
std::pair< Instruction *, SmallVector< Value * > > llvm::slpvectorizer::convertTo (Instruction *I, const InstructionsState &S)
bool llvm::slpvectorizer::isAlternateInstruction (Instruction *I, Instruction *MainOp, Instruction *AltOp, const TargetLibraryInfo &TLI)
 Checks if the specified instruction I is an alternate operation for the given MainOp and AltOp instructions.
SmallVector< SmallVector< Value * > > llvm::slpvectorizer::scanAltAssociativeOperands (const InstructionsState &S, const TargetLibraryInfo &TLI, ArrayRef< Value * > VL, ArrayRef< Value * > Op0, ArrayRef< Value * > Op1, SmallVectorImpl< Value * > &ReassocScalars, SmallBitVector &SubLanes)
 Peel the per-lane associative chains of an alternate node into operand columns.