LLVM  8.0.1
Classes | Namespaces | Functions
LoopVectorizationLegality.h File Reference

This file defines the LoopVectorizationLegality class. More...

#include "llvm/ADT/MapVector.h"
#include "llvm/Analysis/LoopAccessAnalysis.h"
#include "llvm/Analysis/OptimizationRemarkEmitter.h"
#include "llvm/Transforms/Utils/LoopUtils.h"
Include dependency graph for LoopVectorizationLegality.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  llvm::LoopVectorizeHints
 Utility class for getting and setting loop vectorizer hints in the form of loop metadata. More...
 
class  llvm::LoopVectorizationRequirements
 This holds vectorization requirements that must be verified late in the process. More...
 
class  llvm::LoopVectorizationLegality
 LoopVectorizationLegality checks if it is legal to vectorize a loop, and to what vectorization factor. More...
 

Namespaces

 llvm
 This class represents lattice values for constants.
 

Functions

OptimizationRemarkAnalysis llvm::createLVMissedAnalysis (const char *PassName, StringRef RemarkName, Loop *TheLoop, Instruction *I=nullptr)
 Create an analysis remark that explains why vectorization failed. More...
 

Detailed Description

This file defines the LoopVectorizationLegality class.

Original code in Loop Vectorizer has been moved out to its own file for modularity and reusability.

Currently, it works for innermost loop vectorization. Extending this to outer loop vectorization is a TODO item.

Also provides: 1) LoopVectorizeHints class which keeps a number of loop annotations locally for easy look up. It has the ability to write them back as loop metadata, upon request. 2) LoopVectorizationRequirements class for lazy bail out for the purpose of reporting useful failure to vectorize message.

Definition in file LoopVectorizationLegality.h.