LLVM  13.0.0git
Classes | Namespaces
LoopVectorizationLegality.h File Reference
#include "llvm/ADT/MapVector.h"
#include "llvm/Analysis/LoopAccessAnalysis.h"
#include "llvm/Analysis/OptimizationRemarkEmitter.h"
#include "llvm/Support/TypeSize.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.


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...



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.