1 //===- pdl.c - Test of PDL dialect C API ----------------------------------===// 2 // 3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM 4 // Exceptions. 5 // See https://llvm.org/LICENSE.txt for license information. 6 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 7 // 8 //===----------------------------------------------------------------------===// 9 10 // RUN: mlir-capi-pdl-test 2>&1 | FileCheck %s 11 12 #include "mlir-c/Dialect/PDL.h" 13 #include "mlir-c/BuiltinTypes.h" 14 #include "mlir-c/IR.h" 15 16 #include <assert.h> 17 #include <inttypes.h> 18 #include <stdio.h> 19 #include <stdlib.h> 20 21 // CHECK-LABEL: testAttributeType 22 void testAttributeType(MlirContext ctx) { 23 fprintf(stderr, "testAttributeType\n"); 24 25 MlirType parsedType = mlirTypeParseGet( 26 ctx, mlirStringRefCreateFromCString("!pdl.attribute")); 27 MlirType constructedType = mlirPDLAttributeTypeGet(ctx); 28 29 assert(!mlirTypeIsNull(parsedType) && "couldn't parse PDLAttributeType"); 30 assert(!mlirTypeIsNull(constructedType) && "couldn't construct PDLAttributeType"); 31 32 // CHECK: parsedType isa PDLType: 1 33 fprintf(stderr, "parsedType isa PDLType: %d\n", 34 mlirTypeIsAPDLType(parsedType)); 35 // CHECK: parsedType isa PDLAttributeType: 1 36 fprintf(stderr, "parsedType isa PDLAttributeType: %d\n", 37 mlirTypeIsAPDLAttributeType(parsedType)); 38 // CHECK: parsedType isa PDLOperationType: 0 39 fprintf(stderr, "parsedType isa PDLOperationType: %d\n", 40 mlirTypeIsAPDLOperationType(parsedType)); 41 // CHECK: parsedType isa PDLRangeType: 0 42 fprintf(stderr, "parsedType isa PDLRangeType: %d\n", 43 mlirTypeIsAPDLRangeType(parsedType)); 44 // CHECK: parsedType isa PDLTypeType: 0 45 fprintf(stderr, "parsedType isa PDLTypeType: %d\n", 46 mlirTypeIsAPDLTypeType(parsedType)); 47 // CHECK: parsedType isa PDLValueType: 0 48 fprintf(stderr, "parsedType isa PDLValueType: %d\n", 49 mlirTypeIsAPDLValueType(parsedType)); 50 51 // CHECK: constructedType isa PDLType: 1 52 fprintf(stderr, "constructedType isa PDLType: %d\n", 53 mlirTypeIsAPDLType(constructedType)); 54 // CHECK: constructedType isa PDLAttributeType: 1 55 fprintf(stderr, "constructedType isa PDLAttributeType: %d\n", 56 mlirTypeIsAPDLAttributeType(constructedType)); 57 // CHECK: constructedType isa PDLOperationType: 0 58 fprintf(stderr, "constructedType isa PDLOperationType: %d\n", 59 mlirTypeIsAPDLOperationType(constructedType)); 60 // CHECK: constructedType isa PDLRangeType: 0 61 fprintf(stderr, "constructedType isa PDLRangeType: %d\n", 62 mlirTypeIsAPDLRangeType(constructedType)); 63 // CHECK: constructedType isa PDLTypeType: 0 64 fprintf(stderr, "constructedType isa PDLTypeType: %d\n", 65 mlirTypeIsAPDLTypeType(constructedType)); 66 // CHECK: constructedType isa PDLValueType: 0 67 fprintf(stderr, "constructedType isa PDLValueType: %d\n", 68 mlirTypeIsAPDLValueType(constructedType)); 69 70 // CHECK: equal: 1 71 fprintf(stderr, "equal: %d\n", mlirTypeEqual(parsedType, constructedType)); 72 73 // CHECK: !pdl.attribute 74 mlirTypeDump(parsedType); 75 // CHECK: !pdl.attribute 76 mlirTypeDump(constructedType); 77 78 fprintf(stderr, "\n\n"); 79 } 80 81 // CHECK-LABEL: testOperationType 82 void testOperationType(MlirContext ctx) { 83 fprintf(stderr, "testOperationType\n"); 84 85 MlirType parsedType = mlirTypeParseGet( 86 ctx, mlirStringRefCreateFromCString("!pdl.operation")); 87 MlirType constructedType = mlirPDLOperationTypeGet(ctx); 88 89 assert(!mlirTypeIsNull(parsedType) && "couldn't parse PDLAttributeType"); 90 assert(!mlirTypeIsNull(constructedType) && "couldn't construct PDLAttributeType"); 91 92 // CHECK: parsedType isa PDLType: 1 93 fprintf(stderr, "parsedType isa PDLType: %d\n", 94 mlirTypeIsAPDLType(parsedType)); 95 // CHECK: parsedType isa PDLAttributeType: 0 96 fprintf(stderr, "parsedType isa PDLAttributeType: %d\n", 97 mlirTypeIsAPDLAttributeType(parsedType)); 98 // CHECK: parsedType isa PDLOperationType: 1 99 fprintf(stderr, "parsedType isa PDLOperationType: %d\n", 100 mlirTypeIsAPDLOperationType(parsedType)); 101 // CHECK: parsedType isa PDLRangeType: 0 102 fprintf(stderr, "parsedType isa PDLRangeType: %d\n", 103 mlirTypeIsAPDLRangeType(parsedType)); 104 // CHECK: parsedType isa PDLTypeType: 0 105 fprintf(stderr, "parsedType isa PDLTypeType: %d\n", 106 mlirTypeIsAPDLTypeType(parsedType)); 107 // CHECK: parsedType isa PDLValueType: 0 108 fprintf(stderr, "parsedType isa PDLValueType: %d\n", 109 mlirTypeIsAPDLValueType(parsedType)); 110 111 // CHECK: constructedType isa PDLType: 1 112 fprintf(stderr, "constructedType isa PDLType: %d\n", 113 mlirTypeIsAPDLType(constructedType)); 114 // CHECK: constructedType isa PDLAttributeType: 0 115 fprintf(stderr, "constructedType isa PDLAttributeType: %d\n", 116 mlirTypeIsAPDLAttributeType(constructedType)); 117 // CHECK: constructedType isa PDLOperationType: 1 118 fprintf(stderr, "constructedType isa PDLOperationType: %d\n", 119 mlirTypeIsAPDLOperationType(constructedType)); 120 // CHECK: constructedType isa PDLRangeType: 0 121 fprintf(stderr, "constructedType isa PDLRangeType: %d\n", 122 mlirTypeIsAPDLRangeType(constructedType)); 123 // CHECK: constructedType isa PDLTypeType: 0 124 fprintf(stderr, "constructedType isa PDLTypeType: %d\n", 125 mlirTypeIsAPDLTypeType(constructedType)); 126 // CHECK: constructedType isa PDLValueType: 0 127 fprintf(stderr, "constructedType isa PDLValueType: %d\n", 128 mlirTypeIsAPDLValueType(constructedType)); 129 130 // CHECK: equal: 1 131 fprintf(stderr, "equal: %d\n", mlirTypeEqual(parsedType, constructedType)); 132 133 // CHECK: !pdl.operation 134 mlirTypeDump(parsedType); 135 // CHECK: !pdl.operation 136 mlirTypeDump(constructedType); 137 138 fprintf(stderr, "\n\n"); 139 } 140 141 // CHECK-LABEL: testRangeType 142 void testRangeType(MlirContext ctx) { 143 fprintf(stderr, "testRangeType\n"); 144 145 MlirType typeType = mlirPDLTypeTypeGet(ctx); 146 MlirType parsedType = mlirTypeParseGet( 147 ctx, mlirStringRefCreateFromCString("!pdl.range<type>")); 148 MlirType constructedType = mlirPDLRangeTypeGet(typeType); 149 150 assert(!mlirTypeIsNull(typeType) && "couldn't get PDLTypeType"); 151 assert(!mlirTypeIsNull(parsedType) && "couldn't parse PDLAttributeType"); 152 assert(!mlirTypeIsNull(constructedType) && "couldn't construct PDLAttributeType"); 153 154 // CHECK: parsedType isa PDLType: 1 155 fprintf(stderr, "parsedType isa PDLType: %d\n", 156 mlirTypeIsAPDLType(parsedType)); 157 // CHECK: parsedType isa PDLAttributeType: 0 158 fprintf(stderr, "parsedType isa PDLAttributeType: %d\n", 159 mlirTypeIsAPDLAttributeType(parsedType)); 160 // CHECK: parsedType isa PDLOperationType: 0 161 fprintf(stderr, "parsedType isa PDLOperationType: %d\n", 162 mlirTypeIsAPDLOperationType(parsedType)); 163 // CHECK: parsedType isa PDLRangeType: 1 164 fprintf(stderr, "parsedType isa PDLRangeType: %d\n", 165 mlirTypeIsAPDLRangeType(parsedType)); 166 // CHECK: parsedType isa PDLTypeType: 0 167 fprintf(stderr, "parsedType isa PDLTypeType: %d\n", 168 mlirTypeIsAPDLTypeType(parsedType)); 169 // CHECK: parsedType isa PDLValueType: 0 170 fprintf(stderr, "parsedType isa PDLValueType: %d\n", 171 mlirTypeIsAPDLValueType(parsedType)); 172 173 // CHECK: constructedType isa PDLType: 1 174 fprintf(stderr, "constructedType isa PDLType: %d\n", 175 mlirTypeIsAPDLType(constructedType)); 176 // CHECK: constructedType isa PDLAttributeType: 0 177 fprintf(stderr, "constructedType isa PDLAttributeType: %d\n", 178 mlirTypeIsAPDLAttributeType(constructedType)); 179 // CHECK: constructedType isa PDLOperationType: 0 180 fprintf(stderr, "constructedType isa PDLOperationType: %d\n", 181 mlirTypeIsAPDLOperationType(constructedType)); 182 // CHECK: constructedType isa PDLRangeType: 1 183 fprintf(stderr, "constructedType isa PDLRangeType: %d\n", 184 mlirTypeIsAPDLRangeType(constructedType)); 185 // CHECK: constructedType isa PDLTypeType: 0 186 fprintf(stderr, "constructedType isa PDLTypeType: %d\n", 187 mlirTypeIsAPDLTypeType(constructedType)); 188 // CHECK: constructedType isa PDLValueType: 0 189 fprintf(stderr, "constructedType isa PDLValueType: %d\n", 190 mlirTypeIsAPDLValueType(constructedType)); 191 192 // CHECK: equal: 1 193 fprintf(stderr, "equal: %d\n", mlirTypeEqual(parsedType, constructedType)); 194 195 // CHECK: !pdl.range<type> 196 mlirTypeDump(parsedType); 197 // CHECK: !pdl.range<type> 198 mlirTypeDump(constructedType); 199 200 fprintf(stderr, "\n\n"); 201 } 202 203 // CHECK-LABEL: testTypeType 204 void testTypeType(MlirContext ctx) { 205 fprintf(stderr, "testTypeType\n"); 206 207 MlirType parsedType = mlirTypeParseGet( 208 ctx, mlirStringRefCreateFromCString("!pdl.type")); 209 MlirType constructedType = mlirPDLTypeTypeGet(ctx); 210 211 assert(!mlirTypeIsNull(parsedType) && "couldn't parse PDLAttributeType"); 212 assert(!mlirTypeIsNull(constructedType) && "couldn't construct PDLAttributeType"); 213 214 // CHECK: parsedType isa PDLType: 1 215 fprintf(stderr, "parsedType isa PDLType: %d\n", 216 mlirTypeIsAPDLType(parsedType)); 217 // CHECK: parsedType isa PDLAttributeType: 0 218 fprintf(stderr, "parsedType isa PDLAttributeType: %d\n", 219 mlirTypeIsAPDLAttributeType(parsedType)); 220 // CHECK: parsedType isa PDLOperationType: 0 221 fprintf(stderr, "parsedType isa PDLOperationType: %d\n", 222 mlirTypeIsAPDLOperationType(parsedType)); 223 // CHECK: parsedType isa PDLRangeType: 0 224 fprintf(stderr, "parsedType isa PDLRangeType: %d\n", 225 mlirTypeIsAPDLRangeType(parsedType)); 226 // CHECK: parsedType isa PDLTypeType: 1 227 fprintf(stderr, "parsedType isa PDLTypeType: %d\n", 228 mlirTypeIsAPDLTypeType(parsedType)); 229 // CHECK: parsedType isa PDLValueType: 0 230 fprintf(stderr, "parsedType isa PDLValueType: %d\n", 231 mlirTypeIsAPDLValueType(parsedType)); 232 233 // CHECK: constructedType isa PDLType: 1 234 fprintf(stderr, "constructedType isa PDLType: %d\n", 235 mlirTypeIsAPDLType(constructedType)); 236 // CHECK: constructedType isa PDLAttributeType: 0 237 fprintf(stderr, "constructedType isa PDLAttributeType: %d\n", 238 mlirTypeIsAPDLAttributeType(constructedType)); 239 // CHECK: constructedType isa PDLOperationType: 0 240 fprintf(stderr, "constructedType isa PDLOperationType: %d\n", 241 mlirTypeIsAPDLOperationType(constructedType)); 242 // CHECK: constructedType isa PDLRangeType: 0 243 fprintf(stderr, "constructedType isa PDLRangeType: %d\n", 244 mlirTypeIsAPDLRangeType(constructedType)); 245 // CHECK: constructedType isa PDLTypeType: 1 246 fprintf(stderr, "constructedType isa PDLTypeType: %d\n", 247 mlirTypeIsAPDLTypeType(constructedType)); 248 // CHECK: constructedType isa PDLValueType: 0 249 fprintf(stderr, "constructedType isa PDLValueType: %d\n", 250 mlirTypeIsAPDLValueType(constructedType)); 251 252 // CHECK: equal: 1 253 fprintf(stderr, "equal: %d\n", mlirTypeEqual(parsedType, constructedType)); 254 255 // CHECK: !pdl.type 256 mlirTypeDump(parsedType); 257 // CHECK: !pdl.type 258 mlirTypeDump(constructedType); 259 260 fprintf(stderr, "\n\n"); 261 } 262 263 // CHECK-LABEL: testValueType 264 void testValueType(MlirContext ctx) { 265 fprintf(stderr, "testValueType\n"); 266 267 MlirType parsedType = mlirTypeParseGet( 268 ctx, mlirStringRefCreateFromCString("!pdl.value")); 269 MlirType constructedType = mlirPDLValueTypeGet(ctx); 270 271 assert(!mlirTypeIsNull(parsedType) && "couldn't parse PDLAttributeType"); 272 assert(!mlirTypeIsNull(constructedType) && "couldn't construct PDLAttributeType"); 273 274 // CHECK: parsedType isa PDLType: 1 275 fprintf(stderr, "parsedType isa PDLType: %d\n", 276 mlirTypeIsAPDLType(parsedType)); 277 // CHECK: parsedType isa PDLAttributeType: 0 278 fprintf(stderr, "parsedType isa PDLAttributeType: %d\n", 279 mlirTypeIsAPDLAttributeType(parsedType)); 280 // CHECK: parsedType isa PDLOperationType: 0 281 fprintf(stderr, "parsedType isa PDLOperationType: %d\n", 282 mlirTypeIsAPDLOperationType(parsedType)); 283 // CHECK: parsedType isa PDLRangeType: 0 284 fprintf(stderr, "parsedType isa PDLRangeType: %d\n", 285 mlirTypeIsAPDLRangeType(parsedType)); 286 // CHECK: parsedType isa PDLTypeType: 0 287 fprintf(stderr, "parsedType isa PDLTypeType: %d\n", 288 mlirTypeIsAPDLTypeType(parsedType)); 289 // CHECK: parsedType isa PDLValueType: 1 290 fprintf(stderr, "parsedType isa PDLValueType: %d\n", 291 mlirTypeIsAPDLValueType(parsedType)); 292 293 // CHECK: constructedType isa PDLType: 1 294 fprintf(stderr, "constructedType isa PDLType: %d\n", 295 mlirTypeIsAPDLType(constructedType)); 296 // CHECK: constructedType isa PDLAttributeType: 0 297 fprintf(stderr, "constructedType isa PDLAttributeType: %d\n", 298 mlirTypeIsAPDLAttributeType(constructedType)); 299 // CHECK: constructedType isa PDLOperationType: 0 300 fprintf(stderr, "constructedType isa PDLOperationType: %d\n", 301 mlirTypeIsAPDLOperationType(constructedType)); 302 // CHECK: constructedType isa PDLRangeType: 0 303 fprintf(stderr, "constructedType isa PDLRangeType: %d\n", 304 mlirTypeIsAPDLRangeType(constructedType)); 305 // CHECK: constructedType isa PDLTypeType: 0 306 fprintf(stderr, "constructedType isa PDLTypeType: %d\n", 307 mlirTypeIsAPDLTypeType(constructedType)); 308 // CHECK: constructedType isa PDLValueType: 1 309 fprintf(stderr, "constructedType isa PDLValueType: %d\n", 310 mlirTypeIsAPDLValueType(constructedType)); 311 312 // CHECK: equal: 1 313 fprintf(stderr, "equal: %d\n", mlirTypeEqual(parsedType, constructedType)); 314 315 // CHECK: !pdl.value 316 mlirTypeDump(parsedType); 317 // CHECK: !pdl.value 318 mlirTypeDump(constructedType); 319 320 fprintf(stderr, "\n\n"); 321 } 322 323 int main() { 324 MlirContext ctx = mlirContextCreate(); 325 mlirDialectHandleRegisterDialect(mlirGetDialectHandle__pdl__(), ctx); 326 testAttributeType(ctx); 327 testOperationType(ctx); 328 testRangeType(ctx); 329 testTypeType(ctx); 330 testValueType(ctx); 331 return EXIT_SUCCESS; 332 } 333