xref: /llvm-project/mlir/lib/CAPI/Dialect/Transform.cpp (revision 8b134d0b3593a511bff3046d89d35a7d09c469bd)
1 //===- Transform.cpp - C Interface for Transform dialect ------------------===//
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
8 
9 #include "mlir-c/Dialect/Transform.h"
10 #include "mlir-c/Support.h"
11 #include "mlir/CAPI/Registration.h"
12 #include "mlir/Dialect/Transform/IR/TransformDialect.h"
13 #include "mlir/Dialect/Transform/IR/TransformTypes.h"
14 
15 using namespace mlir;
16 
17 MLIR_DEFINE_CAPI_DIALECT_REGISTRATION(Transform, transform,
18                                       transform::TransformDialect)
19 
20 //===---------------------------------------------------------------------===//
21 // AnyOpType
22 //===---------------------------------------------------------------------===//
23 
24 bool mlirTypeIsATransformAnyOpType(MlirType type) {
25   return isa<transform::AnyOpType>(unwrap(type));
26 }
27 
28 MlirType mlirTransformAnyOpTypeGet(MlirContext ctx) {
29   return wrap(transform::AnyOpType::get(unwrap(ctx)));
30 }
31 
32 //===---------------------------------------------------------------------===//
33 // AnyValueType
34 //===---------------------------------------------------------------------===//
35 
36 bool mlirTypeIsATransformAnyValueType(MlirType type) {
37   return isa<transform::AnyValueType>(unwrap(type));
38 }
39 
40 MlirType mlirTransformAnyValueTypeGet(MlirContext ctx) {
41   return wrap(transform::AnyValueType::get(unwrap(ctx)));
42 }
43 
44 //===---------------------------------------------------------------------===//
45 // OperationType
46 //===---------------------------------------------------------------------===//
47 
48 bool mlirTypeIsATransformOperationType(MlirType type) {
49   return isa<transform::OperationType>(unwrap(type));
50 }
51 
52 MlirTypeID mlirTransformOperationTypeGetTypeID(void) {
53   return wrap(transform::OperationType::getTypeID());
54 }
55 
56 MlirType mlirTransformOperationTypeGet(MlirContext ctx,
57                                        MlirStringRef operationName) {
58   return wrap(
59       transform::OperationType::get(unwrap(ctx), unwrap(operationName)));
60 }
61 
62 MlirStringRef mlirTransformOperationTypeGetOperationName(MlirType type) {
63   return wrap(cast<transform::OperationType>(unwrap(type)).getOperationName());
64 }
65