112 lines
4.5 KiB
C
112 lines
4.5 KiB
C
//===- SMT.h - C interface for the SMT dialect --------------------*- C -*-===//
|
|
//
|
|
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
|
// See https://llvm.org/LICENSE.txt for license information.
|
|
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#ifndef MLIR_C_DIALECT_SMT_H
|
|
#define MLIR_C_DIALECT_SMT_H
|
|
|
|
#include "mlir-c/IR.h"
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
//===----------------------------------------------------------------------===//
|
|
// Dialect API.
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
MLIR_DECLARE_CAPI_DIALECT_REGISTRATION(SMT, smt);
|
|
|
|
//===----------------------------------------------------------------------===//
|
|
// Type API.
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
/// Checks if the given type is any non-func SMT value type.
|
|
MLIR_CAPI_EXPORTED bool mlirSMTTypeIsAnyNonFuncSMTValueType(MlirType type);
|
|
|
|
/// Checks if the given type is any SMT value type.
|
|
MLIR_CAPI_EXPORTED bool mlirSMTTypeIsAnySMTValueType(MlirType type);
|
|
|
|
/// Checks if the given type is a smt::ArrayType.
|
|
MLIR_CAPI_EXPORTED bool mlirSMTTypeIsAArray(MlirType type);
|
|
|
|
/// Creates an array type with the given domain and range types.
|
|
MLIR_CAPI_EXPORTED MlirType mlirSMTTypeGetArray(MlirContext ctx,
|
|
MlirType domainType,
|
|
MlirType rangeType);
|
|
|
|
/// Checks if the given type is a smt::BitVectorType.
|
|
MLIR_CAPI_EXPORTED bool mlirSMTTypeIsABitVector(MlirType type);
|
|
|
|
/// Creates a smt::BitVectorType with the given width.
|
|
MLIR_CAPI_EXPORTED MlirType mlirSMTTypeGetBitVector(MlirContext ctx,
|
|
int32_t width);
|
|
|
|
/// Checks if the given type is a smt::BoolType.
|
|
MLIR_CAPI_EXPORTED bool mlirSMTTypeIsABool(MlirType type);
|
|
|
|
/// Creates a smt::BoolType.
|
|
MLIR_CAPI_EXPORTED MlirType mlirSMTTypeGetBool(MlirContext ctx);
|
|
|
|
/// Checks if the given type is a smt::IntType.
|
|
MLIR_CAPI_EXPORTED bool mlirSMTTypeIsAInt(MlirType type);
|
|
|
|
/// Creates a smt::IntType.
|
|
MLIR_CAPI_EXPORTED MlirType mlirSMTTypeGetInt(MlirContext ctx);
|
|
|
|
/// Checks if the given type is a smt::FuncType.
|
|
MLIR_CAPI_EXPORTED bool mlirSMTTypeIsASMTFunc(MlirType type);
|
|
|
|
/// Creates a smt::FuncType with the given domain and range types.
|
|
MLIR_CAPI_EXPORTED MlirType mlirSMTTypeGetSMTFunc(MlirContext ctx,
|
|
size_t numberOfDomainTypes,
|
|
const MlirType *domainTypes,
|
|
MlirType rangeType);
|
|
|
|
/// Checks if the given type is a smt::SortType.
|
|
MLIR_CAPI_EXPORTED bool mlirSMTTypeIsASort(MlirType type);
|
|
|
|
/// Creates a smt::SortType with the given identifier and sort parameters.
|
|
MLIR_CAPI_EXPORTED MlirType mlirSMTTypeGetSort(MlirContext ctx,
|
|
MlirIdentifier identifier,
|
|
size_t numberOfSortParams,
|
|
const MlirType *sortParams);
|
|
|
|
//===----------------------------------------------------------------------===//
|
|
// Attribute API.
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
/// Checks if the given string is a valid smt::BVCmpPredicate.
|
|
MLIR_CAPI_EXPORTED bool mlirSMTAttrCheckBVCmpPredicate(MlirContext ctx,
|
|
MlirStringRef str);
|
|
|
|
/// Checks if the given string is a valid smt::IntPredicate.
|
|
MLIR_CAPI_EXPORTED bool mlirSMTAttrCheckIntPredicate(MlirContext ctx,
|
|
MlirStringRef str);
|
|
|
|
/// Checks if the given attribute is a smt::SMTAttribute.
|
|
MLIR_CAPI_EXPORTED bool mlirSMTAttrIsASMTAttribute(MlirAttribute attr);
|
|
|
|
/// Creates a smt::BitVectorAttr with the given value and width.
|
|
MLIR_CAPI_EXPORTED MlirAttribute mlirSMTAttrGetBitVector(MlirContext ctx,
|
|
uint64_t value,
|
|
unsigned width);
|
|
|
|
/// Creates a smt::BVCmpPredicateAttr with the given string.
|
|
MLIR_CAPI_EXPORTED MlirAttribute
|
|
mlirSMTAttrGetBVCmpPredicate(MlirContext ctx, MlirStringRef str);
|
|
|
|
/// Creates a smt::IntPredicateAttr with the given string.
|
|
MLIR_CAPI_EXPORTED MlirAttribute mlirSMTAttrGetIntPredicate(MlirContext ctx,
|
|
MlirStringRef str);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif // MLIR_C_DIALECT_SMT_H
|