LLVM  8.0.1
Classes | Public Types | Public Member Functions | List of all members
llvm::LoopVectorizeHints Class Reference

Utility class for getting and setting loop vectorizer hints in the form of loop metadata. More...

#include "llvm/Transforms/Vectorize/LoopVectorizationLegality.h"

Public Types

enum  ForceKind { FK_Undefined = -1, FK_Disabled = 0, FK_Enabled = 1 }
 

Public Member Functions

 LoopVectorizeHints (const Loop *L, bool InterleaveOnlyWhenForced, OptimizationRemarkEmitter &ORE)
 
void setAlreadyVectorized ()
 Mark the loop L as already vectorized by setting the width to 1. More...
 
bool allowVectorization (Function *F, Loop *L, bool VectorizeOnlyWhenForced) const
 
void emitRemarkWithHints () const
 Dumps all the hint information. More...
 
unsigned getWidth () const
 
unsigned getInterleave () const
 
unsigned getIsVectorized () const
 
enum ForceKind getForce () const
 
const charvectorizeAnalysisPassName () const
 If hints are provided that force vectorization, use the AlwaysPrint pass name to force the frontend to print the diagnostic. More...
 
bool allowReordering () const
 
bool isPotentiallyUnsafe () const
 
void setPotentiallyUnsafe ()
 

Detailed Description

Utility class for getting and setting loop vectorizer hints in the form of loop metadata.

This class keeps a number of loop annotations locally (as member variables) and can, upon request, write them back as metadata on the loop. It will initially scan the loop for existing metadata, and will update the local values based on information in the loop. We cannot write all values to metadata, as the mere presence of some info, for example 'force', means a decision has been made. So, we need to be careful NOT to add them if the user hasn't specifically asked so.

Definition at line 58 of file LoopVectorizationLegality.h.

Member Enumeration Documentation

◆ ForceKind

Enumerator
FK_Undefined 

Not selected.

FK_Disabled 

Forcing disabled.

FK_Enabled 

Forcing enabled.

Definition at line 92 of file LoopVectorizationLegality.h.

Constructor & Destructor Documentation

◆ LoopVectorizeHints()

llvm::LoopVectorizeHints::LoopVectorizeHints ( const Loop L,
bool  InterleaveOnlyWhenForced,
OptimizationRemarkEmitter ORE 
)

Member Function Documentation

◆ allowReordering()

bool llvm::LoopVectorizeHints::allowReordering ( ) const
inline

◆ allowVectorization()

bool llvm::LoopVectorizeHints::allowVectorization ( Function F,
Loop L,
bool  VectorizeOnlyWhenForced 
) const

◆ emitRemarkWithHints()

void llvm::LoopVectorizeHints::emitRemarkWithHints ( ) const

Dumps all the hint information.

Definition at line 139 of file LoopVectorizationLegality.cpp.

References FK_Disabled, FK_Enabled, and LV_NAME.

Referenced by allowVectorization(), and setAlreadyVectorized().

◆ getForce()

enum ForceKind llvm::LoopVectorizeHints::getForce ( ) const
inline

◆ getInterleave()

unsigned llvm::LoopVectorizeHints::getInterleave ( ) const
inline

Definition at line 115 of file LoopVectorizationLegality.h.

◆ getIsVectorized()

unsigned llvm::LoopVectorizeHints::getIsVectorized ( ) const
inline

Definition at line 116 of file LoopVectorizationLegality.h.

Referenced by allowVectorization().

◆ getWidth()

unsigned llvm::LoopVectorizeHints::getWidth ( ) const
inline

◆ isPotentiallyUnsafe()

bool llvm::LoopVectorizeHints::isPotentiallyUnsafe ( ) const
inline

Definition at line 137 of file LoopVectorizationLegality.h.

References FK_Enabled, and getForce().

◆ setAlreadyVectorized()

void llvm::LoopVectorizeHints::setAlreadyVectorized ( )
inline

Mark the loop L as already vectorized by setting the width to 1.

Definition at line 102 of file LoopVectorizationLegality.h.

References allowVectorization(), emitRemarkWithHints(), and F().

Referenced by llvm::InnerLoopVectorizer::createVectorizedLoopSkeleton(), and processLoopInVPlanNativePath().

◆ setPotentiallyUnsafe()

void llvm::LoopVectorizeHints::setPotentiallyUnsafe ( )
inline

Definition at line 146 of file LoopVectorizationLegality.h.

References Arg, and Name.

◆ vectorizeAnalysisPassName()

const char * llvm::LoopVectorizeHints::vectorizeAnalysisPassName ( ) const

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