xref: /llvm-project/mlir/lib/CAPI/Dialect/PDL.cpp (revision 5550c821897ab77e664977121a0e90ad5be1ff59)
1 //===- PDL.cpp - C Interface for PDL 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/PDL.h"
10 #include "mlir/CAPI/Registration.h"
11 #include "mlir/Dialect/PDL/IR/PDL.h"
12 #include "mlir/Dialect/PDL/IR/PDLOps.h"
13 #include "mlir/Dialect/PDL/IR/PDLTypes.h"
14 
15 using namespace mlir;
16 
MLIR_DEFINE_CAPI_DIALECT_REGISTRATION(PDL,pdl,pdl::PDLDialect)17 MLIR_DEFINE_CAPI_DIALECT_REGISTRATION(PDL, pdl, pdl::PDLDialect)
18 
19 //===---------------------------------------------------------------------===//
20 // PDLType
21 //===---------------------------------------------------------------------===//
22 
23 bool mlirTypeIsAPDLType(MlirType type) {
24   return isa<pdl::PDLType>(unwrap(type));
25 }
26 
27 //===---------------------------------------------------------------------===//
28 // AttributeType
29 //===---------------------------------------------------------------------===//
30 
mlirTypeIsAPDLAttributeType(MlirType type)31 bool mlirTypeIsAPDLAttributeType(MlirType type) {
32   return isa<pdl::AttributeType>(unwrap(type));
33 }
34 
mlirPDLAttributeTypeGet(MlirContext ctx)35 MlirType mlirPDLAttributeTypeGet(MlirContext ctx) {
36   return wrap(pdl::AttributeType::get(unwrap(ctx)));
37 }
38 
39 //===---------------------------------------------------------------------===//
40 // OperationType
41 //===---------------------------------------------------------------------===//
42 
mlirTypeIsAPDLOperationType(MlirType type)43 bool mlirTypeIsAPDLOperationType(MlirType type) {
44   return isa<pdl::OperationType>(unwrap(type));
45 }
46 
mlirPDLOperationTypeGet(MlirContext ctx)47 MlirType mlirPDLOperationTypeGet(MlirContext ctx) {
48   return wrap(pdl::OperationType::get(unwrap(ctx)));
49 }
50 
51 //===---------------------------------------------------------------------===//
52 // RangeType
53 //===---------------------------------------------------------------------===//
54 
mlirTypeIsAPDLRangeType(MlirType type)55 bool mlirTypeIsAPDLRangeType(MlirType type) {
56   return isa<pdl::RangeType>(unwrap(type));
57 }
58 
mlirPDLRangeTypeGet(MlirType elementType)59 MlirType mlirPDLRangeTypeGet(MlirType elementType) {
60   return wrap(pdl::RangeType::get(unwrap(elementType)));
61 }
62 
mlirPDLRangeTypeGetElementType(MlirType type)63 MlirType mlirPDLRangeTypeGetElementType(MlirType type) {
64   return wrap(cast<pdl::RangeType>(unwrap(type)).getElementType());
65 }
66 
67 //===---------------------------------------------------------------------===//
68 // TypeType
69 //===---------------------------------------------------------------------===//
70 
mlirTypeIsAPDLTypeType(MlirType type)71 bool mlirTypeIsAPDLTypeType(MlirType type) {
72   return isa<pdl::TypeType>(unwrap(type));
73 }
74 
mlirPDLTypeTypeGet(MlirContext ctx)75 MlirType mlirPDLTypeTypeGet(MlirContext ctx) {
76   return wrap(pdl::TypeType::get(unwrap(ctx)));
77 }
78 
79 //===---------------------------------------------------------------------===//
80 // ValueType
81 //===---------------------------------------------------------------------===//
82 
mlirTypeIsAPDLValueType(MlirType type)83 bool mlirTypeIsAPDLValueType(MlirType type) {
84   return isa<pdl::ValueType>(unwrap(type));
85 }
86 
mlirPDLValueTypeGet(MlirContext ctx)87 MlirType mlirPDLValueTypeGet(MlirContext ctx) {
88   return wrap(pdl::ValueType::get(unwrap(ctx)));
89 }
90