13#include <mlir/IR/Builders.h>
14#include <mlir/IR/DialectImplementation.h>
16#include <llvm/ADT/TypeSwitch.h>
21#define GET_TYPEDEF_CLASSES
29 #define GET_TYPEDEF_LIST
40 return isa<BoolType, BitVectorType, ArrayType, IntType, SortType, SMTFuncType>(type);
49 return emitError() <<
"bit-vector must have at least a width of one";
59ArrayType::verify(function_ref<InFlightDiagnostic()> emitError, Type domainType, Type rangeType) {
61 return emitError() <<
"domain must be any SMT value type";
64 return emitError() <<
"range must be any SMT value type";
75 function_ref<InFlightDiagnostic()> emitError, ArrayRef<Type> domainTypes, Type rangeType
77 if (domainTypes.empty()) {
78 return emitError() <<
"domain must not be empty";
81 return emitError() <<
"domain types must be any non-function SMT type";
84 return emitError() <<
"range type must be any non-function SMT type";
95 function_ref<InFlightDiagnostic()> emitError, StringAttr ,
96 ArrayRef<Type> sortParams
99 return emitError() <<
"sort parameter types must be any non-function SMT type";
::llvm::LogicalResult verify(::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError, mlir::Type domainType, mlir::Type rangeType)
::llvm::LogicalResult verify(::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError, int64_t width)
::llvm::LogicalResult verify(::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError, ::llvm::ArrayRef< mlir::Type > domainTypes, mlir::Type rangeType)
::llvm::LogicalResult verify(::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError, mlir::StringAttr identifier, ::llvm::ArrayRef< mlir::Type > sortParams)
bool isAnyNonFuncSMTValueType(mlir::Type type)
Returns whether the given type is an SMT value type (excluding functions).
bool isAnySMTValueType(mlir::Type type)
Returns whether the given type is an SMT value type.