11#include "llvm/ADT/TypeSwitch.h"
12#include "mlir/IR/Builders.h"
13#include "mlir/IR/DialectImplementation.h"
21#define GET_TYPEDEF_CLASSES
26#define GET_TYPEDEF_LIST
36 return isa<BoolType, BitVectorType, ArrayType, IntType, SortType, SMTFuncType>(type);
45 return emitError() <<
"bit-vector must have at least a width of one";
55ArrayType::verify(function_ref<InFlightDiagnostic()> emitError, Type domainType, Type rangeType) {
57 return emitError() <<
"domain must be any SMT value type";
60 return emitError() <<
"range must be any SMT value type";
71 function_ref<InFlightDiagnostic()> emitError, ArrayRef<Type> domainTypes, Type rangeType
73 if (domainTypes.empty()) {
74 return emitError() <<
"domain must not be empty";
77 return emitError() <<
"domain types must be any non-function SMT type";
80 return emitError() <<
"range type must be any non-function SMT type";
91 function_ref<InFlightDiagnostic()> emitError, StringAttr identifier, ArrayRef<Type> sortParams
94 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.