LLVM 23.0.0git
llvm::VPIRFlags Class Reference

Class to record and manage LLVM IR flags. More...

#include "Transforms/Vectorize/VPlan.h"

Inheritance diagram for llvm::VPIRFlags:
[legend]

Classes

struct  DisjointFlagsTy
struct  NonNegFlagsTy
struct  TruncFlagsTy
struct  WrapFlagsTy

Public Member Functions

 VPIRFlags ()
 VPIRFlags (Instruction &I)
 VPIRFlags (CmpInst::Predicate Pred)
 VPIRFlags (CmpInst::Predicate Pred, FastMathFlags FMFs)
 VPIRFlags (WrapFlagsTy WrapFlags)
 VPIRFlags (TruncFlagsTy TruncFlags)
 VPIRFlags (FastMathFlags FMFs)
 VPIRFlags (DisjointFlagsTy DisjointFlags)
 VPIRFlags (NonNegFlagsTy NonNegFlags)
 VPIRFlags (ExactFlagsTy ExactFlags)
 VPIRFlags (GEPNoWrapFlags GEPFlags)
 VPIRFlags (RecurKind Kind, bool IsOrdered, bool IsInLoop, FastMathFlags FMFs)
void transferFlags (VPIRFlags &Other)
void intersectFlags (const VPIRFlags &Other)
 Only keep flags also present in Other.
void dropPoisonGeneratingFlags ()
 Drop all poison-generating flags.
void applyFlags (Instruction &I) const
 Apply the IR flags to I.
CmpInst::Predicate getPredicate () const
void setPredicate (CmpInst::Predicate Pred)
GEPNoWrapFlags getGEPNoWrapFlags () const
bool hasPredicate () const
 Returns true if the recipe has a comparison predicate.
bool hasFastMathFlags () const
 Returns true if the recipe has fast-math flags.
LLVM_ABI_FOR_TEST FastMathFlags getFastMathFlags () const
bool hasNonNegFlag () const
 Returns true if the recipe has non-negative flag.
bool isNonNeg () const
bool hasNoUnsignedWrap () const
bool hasNoSignedWrap () const
bool hasNoWrapFlags () const
WrapFlagsTy getNoWrapFlags () const
bool isDisjoint () const
RecurKind getRecurKind () const
bool isReductionOrdered () const
bool isReductionInLoop () const
LLVM_ABI_FOR_TEST bool flagsValidForOpcode (unsigned Opcode) const
 Returns true if the set flags are valid for Opcode.
LLVM_ABI_FOR_TEST bool hasRequiredFlagsForOpcode (unsigned Opcode) const
 Returns true if Opcode has its required flags set.
void printFlags (raw_ostream &O) const

Static Public Member Functions

static VPIRFlags getDefaultFlags (unsigned Opcode)
 Returns default flags for Opcode for opcodes that support it, asserts otherwise.

Detailed Description

Class to record and manage LLVM IR flags.

Definition at line 696 of file VPlan.h.

Constructor & Destructor Documentation

◆ VPIRFlags() [1/12]

◆ VPIRFlags() [2/12]

◆ VPIRFlags() [3/12]

llvm::VPIRFlags::VPIRFlags ( CmpInst::Predicate Pred)
inline

Definition at line 831 of file VPlan.h.

References AllFlags, assert(), CmpPredStorage, getPredicate(), and llvm::Bitfield::set().

◆ VPIRFlags() [4/12]

llvm::VPIRFlags::VPIRFlags ( CmpInst::Predicate Pred,
FastMathFlags FMFs )
inline

Definition at line 836 of file VPlan.h.

References AllFlags, assert(), FCmpFlags, FMFs, getPredicate(), and llvm::Bitfield::set().

◆ VPIRFlags() [5/12]

llvm::VPIRFlags::VPIRFlags ( WrapFlagsTy WrapFlags)
inline

Definition at line 843 of file VPlan.h.

References AllFlags, and WrapFlags.

◆ VPIRFlags() [6/12]

llvm::VPIRFlags::VPIRFlags ( TruncFlagsTy TruncFlags)
inline

Definition at line 848 of file VPlan.h.

References AllFlags, and TruncFlags.

◆ VPIRFlags() [7/12]

llvm::VPIRFlags::VPIRFlags ( FastMathFlags FMFs)
inline

Definition at line 853 of file VPlan.h.

References AllFlags, and FMFs.

◆ VPIRFlags() [8/12]

llvm::VPIRFlags::VPIRFlags ( DisjointFlagsTy DisjointFlags)
inline

Definition at line 857 of file VPlan.h.

References AllFlags, and DisjointFlags.

◆ VPIRFlags() [9/12]

llvm::VPIRFlags::VPIRFlags ( NonNegFlagsTy NonNegFlags)
inline

Definition at line 862 of file VPlan.h.

References AllFlags, and NonNegFlags.

◆ VPIRFlags() [10/12]

llvm::VPIRFlags::VPIRFlags ( ExactFlagsTy ExactFlags)
inline

Definition at line 867 of file VPlan.h.

References AllFlags, and ExactFlags.

◆ VPIRFlags() [11/12]

llvm::VPIRFlags::VPIRFlags ( GEPNoWrapFlags GEPFlags)
inline

Definition at line 872 of file VPlan.h.

References AllFlags, GEPFlagsStorage, and llvm::GEPNoWrapFlags::getRaw().

◆ VPIRFlags() [12/12]

llvm::VPIRFlags::VPIRFlags ( RecurKind Kind,
bool IsOrdered,
bool IsInLoop,
FastMathFlags FMFs )
inline

Definition at line 877 of file VPlan.h.

References AllFlags, FMFs, and ReductionFlags.

Member Function Documentation

◆ applyFlags()

◆ dropPoisonGeneratingFlags()

void llvm::VPIRFlags::dropPoisonGeneratingFlags ( )
inline

Drop all poison-generating flags.

Definition at line 893 of file VPlan.h.

References DisjointFlags, ExactFlags, GEPFlagsStorage, NonNegFlags, TruncFlags, and WrapFlags.

◆ flagsValidForOpcode()

◆ getDefaultFlags()

VPIRFlags VPIRFlags::getDefaultFlags ( unsigned Opcode)
static

◆ getFastMathFlags()

◆ getGEPNoWrapFlags()

◆ getNoWrapFlags()

WrapFlagsTy llvm::VPIRFlags::getNoWrapFlags ( ) const
inline

Definition at line 1049 of file VPlan.h.

References hasNoSignedWrap(), and hasNoUnsignedWrap().

Referenced by llvm::VPWidenCanonicalIVRecipe::clone().

◆ getPredicate()

◆ getRecurKind()

RecurKind llvm::VPIRFlags::getRecurKind ( ) const
inline

Definition at line 1059 of file VPlan.h.

References assert(), and ReductionFlags.

Referenced by llvm::VPlanTransforms::handleMultiUseReductions(), and printFlags().

◆ hasFastMathFlags()

bool llvm::VPIRFlags::hasFastMathFlags ( ) const
inline

Returns true if the recipe has fast-math flags.

Definition at line 1001 of file VPlan.h.

Referenced by llvm::VPInstruction::execute().

◆ hasNonNegFlag()

bool llvm::VPIRFlags::hasNonNegFlag ( ) const
inline

Returns true if the recipe has non-negative flag.

Definition at line 1009 of file VPlan.h.

◆ hasNoSignedWrap()

bool llvm::VPIRFlags::hasNoSignedWrap ( ) const
inline

Definition at line 1028 of file VPlan.h.

References llvm_unreachable, TruncFlags, and WrapFlags.

Referenced by getNoWrapFlags().

◆ hasNoUnsignedWrap()

bool llvm::VPIRFlags::hasNoUnsignedWrap ( ) const
inline

Definition at line 1017 of file VPlan.h.

References llvm_unreachable, TruncFlags, and WrapFlags.

Referenced by getNoWrapFlags().

◆ hasNoWrapFlags()

bool llvm::VPIRFlags::hasNoWrapFlags ( ) const
inline

Definition at line 1039 of file VPlan.h.

◆ hasPredicate()

bool llvm::VPIRFlags::hasPredicate ( ) const
inline

Returns true if the recipe has a comparison predicate.

Definition at line 996 of file VPlan.h.

Referenced by llvm::VPReplicateRecipe::execute().

◆ hasRequiredFlagsForOpcode()

bool VPIRFlags::hasRequiredFlagsForOpcode ( unsigned Opcode) const

Returns true if Opcode has its required flags set.

Definition at line 2281 of file VPlanRecipes.cpp.

References llvm::VPInstruction::ComputeReductionResult, getDefaultFlags(), and llvm::Required.

Referenced by llvm::VPInstruction::execute(), and llvm::VPInstruction::VPInstruction().

◆ intersectFlags()

void VPIRFlags::intersectFlags ( const VPIRFlags & Other)

Only keep flags also present in Other.

Other must have the same OpType as the current object.

Definition at line 341 of file VPlanRecipes.cpp.

References assert(), CmpPredStorage, DisjointFlags, ExactFlags, FCmpFlags, GEPFlagsStorage, NonNegFlags, ReductionFlags, TruncFlags, VPIRFlags(), and WrapFlags.

◆ isDisjoint()

bool llvm::VPIRFlags::isDisjoint ( ) const
inline

Definition at line 1053 of file VPlan.h.

References assert(), and DisjointFlags.

◆ isNonNeg()

bool llvm::VPIRFlags::isNonNeg ( ) const
inline

Definition at line 1011 of file VPlan.h.

References assert(), and NonNegFlags.

◆ isReductionInLoop()

bool llvm::VPIRFlags::isReductionInLoop ( ) const
inline

Definition at line 1071 of file VPlan.h.

References assert(), and ReductionFlags.

Referenced by printFlags().

◆ isReductionOrdered()

bool llvm::VPIRFlags::isReductionOrdered ( ) const
inline

Definition at line 1065 of file VPlan.h.

References assert(), and ReductionFlags.

Referenced by printFlags().

◆ printFlags()

◆ setPredicate()

void llvm::VPIRFlags::setPredicate ( CmpInst::Predicate Pred)
inline

Definition at line 981 of file VPlan.h.

References assert(), CmpPredStorage, FCmpFlags, getPredicate(), and llvm::Bitfield::set().

◆ transferFlags()

void llvm::VPIRFlags::transferFlags ( VPIRFlags & Other)
inline

Definition at line 882 of file VPlan.h.

References AllFlags, and VPIRFlags().

Member Data Documentation

◆ AllFlags

uint8_t llvm::VPIRFlags::AllFlags[2]

◆ CmpPredStorage

uint8_t llvm::VPIRFlags::CmpPredStorage

Definition at line 777 of file VPlan.h.

Referenced by getPredicate(), intersectFlags(), setPredicate(), VPIRFlags(), and VPIRFlags().

◆ DisjointFlags

DisjointFlagsTy llvm::VPIRFlags::DisjointFlags

◆ ExactFlags

ExactFlagsTy llvm::VPIRFlags::ExactFlags

◆ FCmpFlags

FCmpFlagsTy llvm::VPIRFlags::FCmpFlags

Definition at line 785 of file VPlan.h.

Referenced by getPredicate(), intersectFlags(), setPredicate(), VPIRFlags(), and VPIRFlags().

◆ FMFs

◆ GEPFlagsStorage

uint8_t llvm::VPIRFlags::GEPFlagsStorage

◆ NonNegFlags

NonNegFlagsTy llvm::VPIRFlags::NonNegFlags

◆ ReductionFlags

ReductionFlagsTy llvm::VPIRFlags::ReductionFlags

◆ TruncFlags

◆ WrapFlags


The documentation for this class was generated from the following files: