MLIR 22.0.0git
PDL.cpp
Go to the documentation of this file.
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
14
15using namespace mlir;
16
17MLIR_DEFINE_CAPI_DIALECT_REGISTRATION(PDL, pdl, pdl::PDLDialect)
18
19//===---------------------------------------------------------------------===//
20// PDLType
21//===---------------------------------------------------------------------===//
22
23bool mlirTypeIsAPDLType(MlirType type) {
24 return isa<pdl::PDLType>(unwrap(type));
25}
26
27//===---------------------------------------------------------------------===//
28// AttributeType
29//===---------------------------------------------------------------------===//
30
31bool mlirTypeIsAPDLAttributeType(MlirType type) {
32 return isa<pdl::AttributeType>(unwrap(type));
33}
34
35MlirType mlirPDLAttributeTypeGet(MlirContext ctx) {
36 return wrap(pdl::AttributeType::get(unwrap(ctx)));
37}
38
39//===---------------------------------------------------------------------===//
40// OperationType
41//===---------------------------------------------------------------------===//
42
43bool mlirTypeIsAPDLOperationType(MlirType type) {
44 return isa<pdl::OperationType>(unwrap(type));
45}
46
47MlirType mlirPDLOperationTypeGet(MlirContext ctx) {
48 return wrap(pdl::OperationType::get(unwrap(ctx)));
49}
50
51//===---------------------------------------------------------------------===//
52// RangeType
53//===---------------------------------------------------------------------===//
54
55bool mlirTypeIsAPDLRangeType(MlirType type) {
56 return isa<pdl::RangeType>(unwrap(type));
57}
58
59MlirType mlirPDLRangeTypeGet(MlirType elementType) {
60 return wrap(pdl::RangeType::get(unwrap(elementType)));
61}
62
63MlirType mlirPDLRangeTypeGetElementType(MlirType type) {
64 return wrap(cast<pdl::RangeType>(unwrap(type)).getElementType());
65}
66
67//===---------------------------------------------------------------------===//
68// TypeType
69//===---------------------------------------------------------------------===//
70
71bool mlirTypeIsAPDLTypeType(MlirType type) {
72 return isa<pdl::TypeType>(unwrap(type));
73}
74
75MlirType mlirPDLTypeTypeGet(MlirContext ctx) {
76 return wrap(pdl::TypeType::get(unwrap(ctx)));
77}
78
79//===---------------------------------------------------------------------===//
80// ValueType
81//===---------------------------------------------------------------------===//
82
83bool mlirTypeIsAPDLValueType(MlirType type) {
84 return isa<pdl::ValueType>(unwrap(type));
85}
86
87MlirType mlirPDLValueTypeGet(MlirContext ctx) {
88 return wrap(pdl::ValueType::get(unwrap(ctx)));
89}
bool mlirTypeIsAPDLRangeType(MlirType type)
Definition PDL.cpp:55
bool mlirTypeIsAPDLTypeType(MlirType type)
Definition PDL.cpp:71
MlirType mlirPDLOperationTypeGet(MlirContext ctx)
Definition PDL.cpp:47
bool mlirTypeIsAPDLValueType(MlirType type)
Definition PDL.cpp:83
MlirType mlirPDLAttributeTypeGet(MlirContext ctx)
Definition PDL.cpp:35
bool mlirTypeIsAPDLOperationType(MlirType type)
Definition PDL.cpp:43
MlirType mlirPDLRangeTypeGet(MlirType elementType)
Definition PDL.cpp:59
MlirType mlirPDLValueTypeGet(MlirContext ctx)
Definition PDL.cpp:87
MlirType mlirPDLRangeTypeGetElementType(MlirType type)
Definition PDL.cpp:63
bool mlirTypeIsAPDLAttributeType(MlirType type)
Definition PDL.cpp:31
MlirType mlirPDLTypeTypeGet(MlirContext ctx)
Definition PDL.cpp:75
static Type getElementType(Type type)
Determine the element type of type.
#define MLIR_DEFINE_CAPI_DIALECT_REGISTRATION(Name, Namespace, ClassName)
MlirDiagnostic wrap(mlir::Diagnostic &diagnostic)
Definition Diagnostics.h:24
mlir::Diagnostic & unwrap(MlirDiagnostic diagnostic)
Definition Diagnostics.h:19
MLIR_CAPI_EXPORTED bool mlirTypeIsAPDLType(MlirType type)
Definition PDL.cpp:23
Include the generated interface declarations.