LLVM 20.0.0git
Classes | Namespaces
LoopVectorizationLegality.h File Reference

This file defines the LoopVectorizationLegality class. More...

#include "llvm/ADT/MapVector.h"
#include "llvm/Analysis/LoopAccessAnalysis.h"
#include "llvm/Support/TypeSize.h"
#include "llvm/Transforms/Utils/LoopUtils.h"

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...
 
struct  llvm::HistogramInfo
 This holds details about a histogram operation – a load -> update -> store sequence where each lane in a vector might be updating the same element as another lane. More...
 
class  llvm::LoopVectorizationLegality
 LoopVectorizationLegality checks if it is legal to vectorize a loop, and to what vectorization factor. More...
 

Namespaces

namespace  llvm
 This is an optimization pass for GlobalISel generic memory operations.
 

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.