LLVM 20.0.0git
Classes | Namespaces | Typedefs | Enumerations | Functions
IRSimilarityIdentifier.h File Reference
#include "llvm/IR/InstVisitor.h"
#include "llvm/IR/Instructions.h"
#include "llvm/IR/PassManager.h"
#include "llvm/Pass.h"
#include "llvm/Support/Allocator.h"
#include <optional>

Go to the source code of this file.

Classes

struct  llvm::IRSimilarity::IRInstructionData
 This provides the utilities for hashing an Instruction to an unsigned integer. More...
 
struct  llvm::IRSimilarity::IRInstructionDataList
 
struct  llvm::IRSimilarity::IRInstructionDataTraits
 
struct  llvm::IRSimilarity::IRInstructionMapper
 Helper struct for converting the Instructions in a Module into a vector of unsigned integers. More...
 
struct  llvm::IRSimilarity::IRInstructionMapper::InstructionClassification
 Custom InstVisitor to classify different instructions for whether it can be analyzed for similarity. More...
 
class  llvm::IRSimilarity::IRSimilarityCandidate
 This is a class that wraps a range of IRInstructionData from one point to another in the vector of IRInstructionData, which is a region of the program. More...
 
struct  llvm::IRSimilarity::IRSimilarityCandidate::OperandMapping
 
struct  llvm::IRSimilarity::IRSimilarityCandidate::RelativeLocMapping
 A helper struct to hold the candidate, for a branch instruction, the relative location of a label, and the label itself. More...
 
class  llvm::IRSimilarity::IRSimilarityIdentifier
 This class puts all the pieces of the IRInstructionData, IRInstructionMapper, IRSimilarityCandidate together. More...
 
class  llvm::IRSimilarityIdentifierWrapperPass
 An analysis pass based on legacy pass manager that runs and returns IRSimilarityIdentifier run on the Module. More...
 
class  llvm::IRSimilarityAnalysis
 An analysis pass that runs and returns the IRSimilarityIdentifier run on the Module. More...
 
class  llvm::IRSimilarityAnalysisPrinterPass
 Printer pass that uses IRSimilarityAnalysis. More...
 

Namespaces

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

Typedefs

typedef DenseMap< IRSimilarityCandidate *, DenseMap< unsigned, DenseSet< unsigned > > > llvm::IRSimilarity::CandidateGVNMapping
 
typedef std::vector< IRSimilarityCandidate > llvm::IRSimilarity::SimilarityGroup
 
typedef std::vector< SimilarityGroup > llvm::IRSimilarity::SimilarityGroupList
 

Enumerations

enum  llvm::IRSimilarity::InstrType { llvm::IRSimilarity::Legal , llvm::IRSimilarity::Illegal , llvm::IRSimilarity::Invisible }
 This represents what is and is not supported when finding similarity in Instructions. More...
 

Functions

bool llvm::IRSimilarity::isClose (const IRInstructionData &A, const IRInstructionData &B)
 Compare one IRInstructionData class to another IRInstructionData class for whether they are performing a the same operation, and can mapped to the same value.