15 #ifndef MLIR_QUANTIZER_SUPPORT_CONFIGURATION_H 16 #define MLIR_QUANTIZER_SUPPORT_CONFIGURATION_H 25 #include "llvm/ADT/DenseMap.h" 26 #include "llvm/ADT/SmallBitVector.h" 27 #include "llvm/ADT/StringSet.h" 46 using OpHandlerFn = std::function<void(Operation *op, CAGSlice &cag)>;
54 unsigned ordinal = candidateTypes.size();
55 assert(allCandidateTypesMask.size() == ordinal);
57 candidateTypes.push_back(ct);
58 allCandidateTypesMask.push_back(
true);
64 assert(index < candidateTypes.size());
65 return candidateTypes[index];
69 return candidateTypes;
74 return allCandidateTypesMask;
80 llvm::SmallBitVector disabled(allCandidateTypesMask);
81 for (
unsigned ordinal : exceptOrdinals) {
82 disabled.reset(ordinal);
88 template <
typename OpTy>
96 template <
typename OpTy>
98 addRequireStatsOpByName(OpTy::getOperationName());
108 template <
typename OpTy>
127 void addRequireStatsOpByName(StringRef opName);
130 std::vector<CandidateQuantizedType> candidateTypes;
133 llvm::SmallBitVector allCandidateTypesMask;
136 llvm::StringMap<OpHandlerFn> opHandlers;
140 llvm::StringSet<> requireStatsOpNames;
146 #endif // MLIR_QUANTIZER_SUPPORT_CONFIGURATION_H Definition: InferTypeOpInterface.cpp:20
ArrayRef< CandidateQuantizedType > getCandidateTypes() const
Definition: Configuration.h:68
Definition: Operation.h:27
TargetConfiguration(SolverContext &context)
Definition: Configuration.cpp:20
void addValueIdentityOp()
Definition: Configuration.h:109
virtual void finalizeAnchors(CAGSlice &cag) const
Finalizes the CAG after all anchors have been added.
Definition: Configuration.h:117
static constexpr size_t MaxSchemeIndex
Definition: Configuration.h:45
std::function< void(Operation *op, CAGSlice &cag)> OpHandlerFn
Definition: Configuration.h:46
llvm::SmallBitVector getCandidateTypeDisabledExceptMask(ArrayRef< unsigned > exceptOrdinals) const
Gets a mask with every candidate type except those in the given mask.
Definition: Configuration.h:79
A slice of a CAG (which may be the whole graph).
Definition: ConstraintAnalysisGraph.h:245
llvm::SmallBitVector getAllCandidateTypesMask() const
Gets a mask of all enabled candidate types by ordinal.
Definition: Configuration.h:73
virtual ~TargetConfiguration()=default
Definition: Configuration.h:43
Definition: QuantTypes.h:209
void handleOp(Operation *op, CAGSlice &cag) const
Handles the operation if a handler is defined for it.
Definition: Configuration.cpp:35
void addOpHandler(OpHandlerFn fn)
Adds an op handler.
Definition: Configuration.h:89
const CandidateQuantizedType & getCandidateType(unsigned index) const
Gets a prototype scheme by index.
Definition: Configuration.h:63
Definition: Metadata.h:28
void addOpHandlerByName(StringRef name, OpHandlerFn fn)
Definition: Configuration.cpp:22
unsigned addCandidateType(quant::AnyQuantizedType quantizedType, CandidateQuantizedType::Scheme scheme)
Adds a candidate type, returning its ordinal.
Definition: Configuration.h:52
virtual void addValueIdentityOpByName(StringRef opName)=0
bool isRequireStatsOp(Operation *op) const
Returns whether opName is a RequireStatsOp.
Definition: Configuration.cpp:30
virtual bool isHandledType(Type t) const =0
Whether an operand or result type is subject to analysis by this config.
void addRequireStatsOp()
Definition: Configuration.h:97
Candidate for a quantized type conversion.
Definition: Metadata.h:47
Scheme
Definition: Metadata.h:50