//===- pdl.c - Test of PDL dialect C API ----------------------------------===// // // 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 // //===----------------------------------------------------------------------===// // RUN: mlir-capi-pdl-test 2>&1 | FileCheck %s #include "mlir-c/Dialect/PDL.h" #include "mlir-c/BuiltinTypes.h" #include "mlir-c/IR.h" #include #include #include #include // CHECK-LABEL: testAttributeType void testAttributeType(MlirContext ctx) { fprintf(stderr, "testAttributeType\n"); MlirType parsedType = mlirTypeParseGet( ctx, mlirStringRefCreateFromCString("!pdl.attribute")); MlirType constructedType = mlirPDLAttributeTypeGet(ctx); assert(!mlirTypeIsNull(parsedType) && "couldn't parse PDLAttributeType"); assert(!mlirTypeIsNull(constructedType) && "couldn't construct PDLAttributeType"); // CHECK: parsedType isa PDLType: 1 fprintf(stderr, "parsedType isa PDLType: %d\n", mlirTypeIsAPDLType(parsedType)); // CHECK: parsedType isa PDLAttributeType: 1 fprintf(stderr, "parsedType isa PDLAttributeType: %d\n", mlirTypeIsAPDLAttributeType(parsedType)); // CHECK: parsedType isa PDLOperationType: 0 fprintf(stderr, "parsedType isa PDLOperationType: %d\n", mlirTypeIsAPDLOperationType(parsedType)); // CHECK: parsedType isa PDLRangeType: 0 fprintf(stderr, "parsedType isa PDLRangeType: %d\n", mlirTypeIsAPDLRangeType(parsedType)); // CHECK: parsedType isa PDLTypeType: 0 fprintf(stderr, "parsedType isa PDLTypeType: %d\n", mlirTypeIsAPDLTypeType(parsedType)); // CHECK: parsedType isa PDLValueType: 0 fprintf(stderr, "parsedType isa PDLValueType: %d\n", mlirTypeIsAPDLValueType(parsedType)); // CHECK: constructedType isa PDLType: 1 fprintf(stderr, "constructedType isa PDLType: %d\n", mlirTypeIsAPDLType(constructedType)); // CHECK: constructedType isa PDLAttributeType: 1 fprintf(stderr, "constructedType isa PDLAttributeType: %d\n", mlirTypeIsAPDLAttributeType(constructedType)); // CHECK: constructedType isa PDLOperationType: 0 fprintf(stderr, "constructedType isa PDLOperationType: %d\n", mlirTypeIsAPDLOperationType(constructedType)); // CHECK: constructedType isa PDLRangeType: 0 fprintf(stderr, "constructedType isa PDLRangeType: %d\n", mlirTypeIsAPDLRangeType(constructedType)); // CHECK: constructedType isa PDLTypeType: 0 fprintf(stderr, "constructedType isa PDLTypeType: %d\n", mlirTypeIsAPDLTypeType(constructedType)); // CHECK: constructedType isa PDLValueType: 0 fprintf(stderr, "constructedType isa PDLValueType: %d\n", mlirTypeIsAPDLValueType(constructedType)); // CHECK: equal: 1 fprintf(stderr, "equal: %d\n", mlirTypeEqual(parsedType, constructedType)); // CHECK: !pdl.attribute mlirTypeDump(parsedType); // CHECK: !pdl.attribute mlirTypeDump(constructedType); fprintf(stderr, "\n\n"); } // CHECK-LABEL: testOperationType void testOperationType(MlirContext ctx) { fprintf(stderr, "testOperationType\n"); MlirType parsedType = mlirTypeParseGet( ctx, mlirStringRefCreateFromCString("!pdl.operation")); MlirType constructedType = mlirPDLOperationTypeGet(ctx); assert(!mlirTypeIsNull(parsedType) && "couldn't parse PDLAttributeType"); assert(!mlirTypeIsNull(constructedType) && "couldn't construct PDLAttributeType"); // CHECK: parsedType isa PDLType: 1 fprintf(stderr, "parsedType isa PDLType: %d\n", mlirTypeIsAPDLType(parsedType)); // CHECK: parsedType isa PDLAttributeType: 0 fprintf(stderr, "parsedType isa PDLAttributeType: %d\n", mlirTypeIsAPDLAttributeType(parsedType)); // CHECK: parsedType isa PDLOperationType: 1 fprintf(stderr, "parsedType isa PDLOperationType: %d\n", mlirTypeIsAPDLOperationType(parsedType)); // CHECK: parsedType isa PDLRangeType: 0 fprintf(stderr, "parsedType isa PDLRangeType: %d\n", mlirTypeIsAPDLRangeType(parsedType)); // CHECK: parsedType isa PDLTypeType: 0 fprintf(stderr, "parsedType isa PDLTypeType: %d\n", mlirTypeIsAPDLTypeType(parsedType)); // CHECK: parsedType isa PDLValueType: 0 fprintf(stderr, "parsedType isa PDLValueType: %d\n", mlirTypeIsAPDLValueType(parsedType)); // CHECK: constructedType isa PDLType: 1 fprintf(stderr, "constructedType isa PDLType: %d\n", mlirTypeIsAPDLType(constructedType)); // CHECK: constructedType isa PDLAttributeType: 0 fprintf(stderr, "constructedType isa PDLAttributeType: %d\n", mlirTypeIsAPDLAttributeType(constructedType)); // CHECK: constructedType isa PDLOperationType: 1 fprintf(stderr, "constructedType isa PDLOperationType: %d\n", mlirTypeIsAPDLOperationType(constructedType)); // CHECK: constructedType isa PDLRangeType: 0 fprintf(stderr, "constructedType isa PDLRangeType: %d\n", mlirTypeIsAPDLRangeType(constructedType)); // CHECK: constructedType isa PDLTypeType: 0 fprintf(stderr, "constructedType isa PDLTypeType: %d\n", mlirTypeIsAPDLTypeType(constructedType)); // CHECK: constructedType isa PDLValueType: 0 fprintf(stderr, "constructedType isa PDLValueType: %d\n", mlirTypeIsAPDLValueType(constructedType)); // CHECK: equal: 1 fprintf(stderr, "equal: %d\n", mlirTypeEqual(parsedType, constructedType)); // CHECK: !pdl.operation mlirTypeDump(parsedType); // CHECK: !pdl.operation mlirTypeDump(constructedType); fprintf(stderr, "\n\n"); } // CHECK-LABEL: testRangeType void testRangeType(MlirContext ctx) { fprintf(stderr, "testRangeType\n"); MlirType typeType = mlirPDLTypeTypeGet(ctx); MlirType parsedType = mlirTypeParseGet( ctx, mlirStringRefCreateFromCString("!pdl.range")); MlirType constructedType = mlirPDLRangeTypeGet(typeType); MlirType elementType = mlirPDLRangeTypeGetElementType(constructedType); assert(!mlirTypeIsNull(typeType) && "couldn't get PDLTypeType"); assert(!mlirTypeIsNull(parsedType) && "couldn't parse PDLAttributeType"); assert(!mlirTypeIsNull(constructedType) && "couldn't construct PDLAttributeType"); // CHECK: parsedType isa PDLType: 1 fprintf(stderr, "parsedType isa PDLType: %d\n", mlirTypeIsAPDLType(parsedType)); // CHECK: parsedType isa PDLAttributeType: 0 fprintf(stderr, "parsedType isa PDLAttributeType: %d\n", mlirTypeIsAPDLAttributeType(parsedType)); // CHECK: parsedType isa PDLOperationType: 0 fprintf(stderr, "parsedType isa PDLOperationType: %d\n", mlirTypeIsAPDLOperationType(parsedType)); // CHECK: parsedType isa PDLRangeType: 1 fprintf(stderr, "parsedType isa PDLRangeType: %d\n", mlirTypeIsAPDLRangeType(parsedType)); // CHECK: parsedType isa PDLTypeType: 0 fprintf(stderr, "parsedType isa PDLTypeType: %d\n", mlirTypeIsAPDLTypeType(parsedType)); // CHECK: parsedType isa PDLValueType: 0 fprintf(stderr, "parsedType isa PDLValueType: %d\n", mlirTypeIsAPDLValueType(parsedType)); // CHECK: constructedType isa PDLType: 1 fprintf(stderr, "constructedType isa PDLType: %d\n", mlirTypeIsAPDLType(constructedType)); // CHECK: constructedType isa PDLAttributeType: 0 fprintf(stderr, "constructedType isa PDLAttributeType: %d\n", mlirTypeIsAPDLAttributeType(constructedType)); // CHECK: constructedType isa PDLOperationType: 0 fprintf(stderr, "constructedType isa PDLOperationType: %d\n", mlirTypeIsAPDLOperationType(constructedType)); // CHECK: constructedType isa PDLRangeType: 1 fprintf(stderr, "constructedType isa PDLRangeType: %d\n", mlirTypeIsAPDLRangeType(constructedType)); // CHECK: constructedType isa PDLTypeType: 0 fprintf(stderr, "constructedType isa PDLTypeType: %d\n", mlirTypeIsAPDLTypeType(constructedType)); // CHECK: constructedType isa PDLValueType: 0 fprintf(stderr, "constructedType isa PDLValueType: %d\n", mlirTypeIsAPDLValueType(constructedType)); // CHECK: equal: 1 fprintf(stderr, "equal: %d\n", mlirTypeEqual(parsedType, constructedType)); // CHECK: equal: 1 fprintf(stderr, "equal: %d\n", mlirTypeEqual(typeType, elementType)); // CHECK: !pdl.range mlirTypeDump(parsedType); // CHECK: !pdl.range mlirTypeDump(constructedType); // CHECK: !pdl.type mlirTypeDump(elementType); fprintf(stderr, "\n\n"); } // CHECK-LABEL: testTypeType void testTypeType(MlirContext ctx) { fprintf(stderr, "testTypeType\n"); MlirType parsedType = mlirTypeParseGet( ctx, mlirStringRefCreateFromCString("!pdl.type")); MlirType constructedType = mlirPDLTypeTypeGet(ctx); assert(!mlirTypeIsNull(parsedType) && "couldn't parse PDLAttributeType"); assert(!mlirTypeIsNull(constructedType) && "couldn't construct PDLAttributeType"); // CHECK: parsedType isa PDLType: 1 fprintf(stderr, "parsedType isa PDLType: %d\n", mlirTypeIsAPDLType(parsedType)); // CHECK: parsedType isa PDLAttributeType: 0 fprintf(stderr, "parsedType isa PDLAttributeType: %d\n", mlirTypeIsAPDLAttributeType(parsedType)); // CHECK: parsedType isa PDLOperationType: 0 fprintf(stderr, "parsedType isa PDLOperationType: %d\n", mlirTypeIsAPDLOperationType(parsedType)); // CHECK: parsedType isa PDLRangeType: 0 fprintf(stderr, "parsedType isa PDLRangeType: %d\n", mlirTypeIsAPDLRangeType(parsedType)); // CHECK: parsedType isa PDLTypeType: 1 fprintf(stderr, "parsedType isa PDLTypeType: %d\n", mlirTypeIsAPDLTypeType(parsedType)); // CHECK: parsedType isa PDLValueType: 0 fprintf(stderr, "parsedType isa PDLValueType: %d\n", mlirTypeIsAPDLValueType(parsedType)); // CHECK: constructedType isa PDLType: 1 fprintf(stderr, "constructedType isa PDLType: %d\n", mlirTypeIsAPDLType(constructedType)); // CHECK: constructedType isa PDLAttributeType: 0 fprintf(stderr, "constructedType isa PDLAttributeType: %d\n", mlirTypeIsAPDLAttributeType(constructedType)); // CHECK: constructedType isa PDLOperationType: 0 fprintf(stderr, "constructedType isa PDLOperationType: %d\n", mlirTypeIsAPDLOperationType(constructedType)); // CHECK: constructedType isa PDLRangeType: 0 fprintf(stderr, "constructedType isa PDLRangeType: %d\n", mlirTypeIsAPDLRangeType(constructedType)); // CHECK: constructedType isa PDLTypeType: 1 fprintf(stderr, "constructedType isa PDLTypeType: %d\n", mlirTypeIsAPDLTypeType(constructedType)); // CHECK: constructedType isa PDLValueType: 0 fprintf(stderr, "constructedType isa PDLValueType: %d\n", mlirTypeIsAPDLValueType(constructedType)); // CHECK: equal: 1 fprintf(stderr, "equal: %d\n", mlirTypeEqual(parsedType, constructedType)); // CHECK: !pdl.type mlirTypeDump(parsedType); // CHECK: !pdl.type mlirTypeDump(constructedType); fprintf(stderr, "\n\n"); } // CHECK-LABEL: testValueType void testValueType(MlirContext ctx) { fprintf(stderr, "testValueType\n"); MlirType parsedType = mlirTypeParseGet( ctx, mlirStringRefCreateFromCString("!pdl.value")); MlirType constructedType = mlirPDLValueTypeGet(ctx); assert(!mlirTypeIsNull(parsedType) && "couldn't parse PDLAttributeType"); assert(!mlirTypeIsNull(constructedType) && "couldn't construct PDLAttributeType"); // CHECK: parsedType isa PDLType: 1 fprintf(stderr, "parsedType isa PDLType: %d\n", mlirTypeIsAPDLType(parsedType)); // CHECK: parsedType isa PDLAttributeType: 0 fprintf(stderr, "parsedType isa PDLAttributeType: %d\n", mlirTypeIsAPDLAttributeType(parsedType)); // CHECK: parsedType isa PDLOperationType: 0 fprintf(stderr, "parsedType isa PDLOperationType: %d\n", mlirTypeIsAPDLOperationType(parsedType)); // CHECK: parsedType isa PDLRangeType: 0 fprintf(stderr, "parsedType isa PDLRangeType: %d\n", mlirTypeIsAPDLRangeType(parsedType)); // CHECK: parsedType isa PDLTypeType: 0 fprintf(stderr, "parsedType isa PDLTypeType: %d\n", mlirTypeIsAPDLTypeType(parsedType)); // CHECK: parsedType isa PDLValueType: 1 fprintf(stderr, "parsedType isa PDLValueType: %d\n", mlirTypeIsAPDLValueType(parsedType)); // CHECK: constructedType isa PDLType: 1 fprintf(stderr, "constructedType isa PDLType: %d\n", mlirTypeIsAPDLType(constructedType)); // CHECK: constructedType isa PDLAttributeType: 0 fprintf(stderr, "constructedType isa PDLAttributeType: %d\n", mlirTypeIsAPDLAttributeType(constructedType)); // CHECK: constructedType isa PDLOperationType: 0 fprintf(stderr, "constructedType isa PDLOperationType: %d\n", mlirTypeIsAPDLOperationType(constructedType)); // CHECK: constructedType isa PDLRangeType: 0 fprintf(stderr, "constructedType isa PDLRangeType: %d\n", mlirTypeIsAPDLRangeType(constructedType)); // CHECK: constructedType isa PDLTypeType: 0 fprintf(stderr, "constructedType isa PDLTypeType: %d\n", mlirTypeIsAPDLTypeType(constructedType)); // CHECK: constructedType isa PDLValueType: 1 fprintf(stderr, "constructedType isa PDLValueType: %d\n", mlirTypeIsAPDLValueType(constructedType)); // CHECK: equal: 1 fprintf(stderr, "equal: %d\n", mlirTypeEqual(parsedType, constructedType)); // CHECK: !pdl.value mlirTypeDump(parsedType); // CHECK: !pdl.value mlirTypeDump(constructedType); fprintf(stderr, "\n\n"); } int main(void) { MlirContext ctx = mlirContextCreate(); mlirDialectHandleRegisterDialect(mlirGetDialectHandle__pdl__(), ctx); testAttributeType(ctx); testOperationType(ctx); testRangeType(ctx); testTypeType(ctx); testValueType(ctx); mlirContextDestroy(ctx); return EXIT_SUCCESS; }