xref: /llvm-project/mlir/test/CAPI/transform.c (revision f42e1a7484796e3d0915abbc35ce6bdb205a1678)
13e1f6d02SAlex Zinenko //===- transform.c - Test of Transform dialect C API ----------------------===//
23e1f6d02SAlex Zinenko //
33e1f6d02SAlex Zinenko // Part of the LLVM Project, under the Apache License v2.0 with LLVM
43e1f6d02SAlex Zinenko // Exceptions.
53e1f6d02SAlex Zinenko // See https://llvm.org/LICENSE.txt for license information.
63e1f6d02SAlex Zinenko // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
73e1f6d02SAlex Zinenko //
83e1f6d02SAlex Zinenko //===----------------------------------------------------------------------===//
93e1f6d02SAlex Zinenko 
103e1f6d02SAlex Zinenko // RUN: mlir-capi-transform-test 2>&1 | FileCheck %s
113e1f6d02SAlex Zinenko 
123e1f6d02SAlex Zinenko #include "mlir-c/Dialect/Transform.h"
133e1f6d02SAlex Zinenko #include "mlir-c/IR.h"
143e1f6d02SAlex Zinenko #include "mlir-c/Support.h"
153e1f6d02SAlex Zinenko 
163e1f6d02SAlex Zinenko #include <assert.h>
173e1f6d02SAlex Zinenko #include <stdio.h>
183e1f6d02SAlex Zinenko #include <stdlib.h>
193e1f6d02SAlex Zinenko 
203e1f6d02SAlex Zinenko // CHECK-LABEL: testAnyOpType
testAnyOpType(MlirContext ctx)213e1f6d02SAlex Zinenko void testAnyOpType(MlirContext ctx) {
223e1f6d02SAlex Zinenko   fprintf(stderr, "testAnyOpType\n");
233e1f6d02SAlex Zinenko 
243e1f6d02SAlex Zinenko   MlirType parsedType = mlirTypeParseGet(
253e1f6d02SAlex Zinenko       ctx, mlirStringRefCreateFromCString("!transform.any_op"));
263e1f6d02SAlex Zinenko   MlirType constructedType = mlirTransformAnyOpTypeGet(ctx);
273e1f6d02SAlex Zinenko 
283e1f6d02SAlex Zinenko   assert(!mlirTypeIsNull(parsedType) && "couldn't parse AnyOpType");
293e1f6d02SAlex Zinenko   assert(!mlirTypeIsNull(constructedType) && "couldn't construct AnyOpType");
303e1f6d02SAlex Zinenko 
313e1f6d02SAlex Zinenko   // CHECK: equal: 1
323e1f6d02SAlex Zinenko   fprintf(stderr, "equal: %d\n", mlirTypeEqual(parsedType, constructedType));
333e1f6d02SAlex Zinenko 
343e1f6d02SAlex Zinenko   // CHECK: parsedType isa AnyOpType: 1
353e1f6d02SAlex Zinenko   fprintf(stderr, "parsedType isa AnyOpType: %d\n",
363e1f6d02SAlex Zinenko           mlirTypeIsATransformAnyOpType(parsedType));
373e1f6d02SAlex Zinenko   // CHECK: parsedType isa OperationType: 0
383e1f6d02SAlex Zinenko   fprintf(stderr, "parsedType isa OperationType: %d\n",
393e1f6d02SAlex Zinenko           mlirTypeIsATransformOperationType(parsedType));
403e1f6d02SAlex Zinenko 
413e1f6d02SAlex Zinenko   // CHECK: !transform.any_op
423e1f6d02SAlex Zinenko   mlirTypeDump(constructedType);
433e1f6d02SAlex Zinenko 
443e1f6d02SAlex Zinenko   fprintf(stderr, "\n\n");
453e1f6d02SAlex Zinenko }
463e1f6d02SAlex Zinenko 
473e1f6d02SAlex Zinenko // CHECK-LABEL: testOperationType
testOperationType(MlirContext ctx)483e1f6d02SAlex Zinenko void testOperationType(MlirContext ctx) {
493e1f6d02SAlex Zinenko   fprintf(stderr, "testOperationType\n");
503e1f6d02SAlex Zinenko 
513e1f6d02SAlex Zinenko   MlirType parsedType = mlirTypeParseGet(
523e1f6d02SAlex Zinenko       ctx, mlirStringRefCreateFromCString("!transform.op<\"foo.bar\">"));
533e1f6d02SAlex Zinenko   MlirType constructedType = mlirTransformOperationTypeGet(
543e1f6d02SAlex Zinenko       ctx, mlirStringRefCreateFromCString("foo.bar"));
553e1f6d02SAlex Zinenko 
563e1f6d02SAlex Zinenko   assert(!mlirTypeIsNull(parsedType) && "couldn't parse AnyOpType");
573e1f6d02SAlex Zinenko   assert(!mlirTypeIsNull(constructedType) && "couldn't construct AnyOpType");
583e1f6d02SAlex Zinenko 
593e1f6d02SAlex Zinenko   // CHECK: equal: 1
603e1f6d02SAlex Zinenko   fprintf(stderr, "equal: %d\n", mlirTypeEqual(parsedType, constructedType));
613e1f6d02SAlex Zinenko 
623e1f6d02SAlex Zinenko   // CHECK: parsedType isa AnyOpType: 0
633e1f6d02SAlex Zinenko   fprintf(stderr, "parsedType isa AnyOpType: %d\n",
643e1f6d02SAlex Zinenko           mlirTypeIsATransformAnyOpType(parsedType));
653e1f6d02SAlex Zinenko   // CHECK: parsedType isa OperationType: 1
663e1f6d02SAlex Zinenko   fprintf(stderr, "parsedType isa OperationType: %d\n",
673e1f6d02SAlex Zinenko           mlirTypeIsATransformOperationType(parsedType));
683e1f6d02SAlex Zinenko 
693e1f6d02SAlex Zinenko   // CHECK: operation name equal: 1
703e1f6d02SAlex Zinenko   MlirStringRef operationName =
713e1f6d02SAlex Zinenko       mlirTransformOperationTypeGetOperationName(constructedType);
723e1f6d02SAlex Zinenko   fprintf(stderr, "operation name equal: %d\n",
733e1f6d02SAlex Zinenko           mlirStringRefEqual(operationName,
743e1f6d02SAlex Zinenko                              mlirStringRefCreateFromCString("foo.bar")));
753e1f6d02SAlex Zinenko 
763e1f6d02SAlex Zinenko   // CHECK: !transform.op<"foo.bar">
773e1f6d02SAlex Zinenko   mlirTypeDump(constructedType);
783e1f6d02SAlex Zinenko 
793e1f6d02SAlex Zinenko   fprintf(stderr, "\n\n");
803e1f6d02SAlex Zinenko }
813e1f6d02SAlex Zinenko 
main(void)823e1f6d02SAlex Zinenko int main(void) {
833e1f6d02SAlex Zinenko   MlirContext ctx = mlirContextCreate();
843e1f6d02SAlex Zinenko   mlirDialectHandleRegisterDialect(mlirGetDialectHandle__transform__(), ctx);
853e1f6d02SAlex Zinenko   testAnyOpType(ctx);
863e1f6d02SAlex Zinenko   testOperationType(ctx);
87*f42e1a74SParker Schuh   mlirContextDestroy(ctx);
883e1f6d02SAlex Zinenko   return EXIT_SUCCESS;
893e1f6d02SAlex Zinenko }
90