11337622aSThéo Degioanni //===- irdl.c - Test for the C bindings for IRDL registration -------------===// 21337622aSThéo Degioanni // 31337622aSThéo Degioanni // Part of the LLVM Project, under the Apache License v2.0 with LLVM 41337622aSThéo Degioanni // Exceptions. 51337622aSThéo Degioanni // See https://llvm.org/LICENSE.txt for license information. 61337622aSThéo Degioanni // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 71337622aSThéo Degioanni // 81337622aSThéo Degioanni //===----------------------------------------------------------------------===// 91337622aSThéo Degioanni 101337622aSThéo Degioanni /* RUN: mlir-capi-irdl-test 2>&1 | FileCheck %s 111337622aSThéo Degioanni */ 121337622aSThéo Degioanni 131337622aSThéo Degioanni #include "mlir-c/Dialect/IRDL.h" 141337622aSThéo Degioanni #include "mlir-c/IR.h" 151337622aSThéo Degioanni 161337622aSThéo Degioanni const char irdlDialect[] = "\ 171337622aSThéo Degioanni irdl.dialect @foo {\ 181337622aSThéo Degioanni irdl.operation @op {\ 191337622aSThéo Degioanni %i32 = irdl.is i32\ 20*69d3ba3dSThéo Degioanni irdl.results(baz: %i32)\ 211337622aSThéo Degioanni }\ 221337622aSThéo Degioanni }\ 231337622aSThéo Degioanni irdl.dialect @bar {\ 241337622aSThéo Degioanni irdl.operation @op {\ 251337622aSThéo Degioanni %i32 = irdl.is i32\ 26*69d3ba3dSThéo Degioanni irdl.operands(baz: %i32)\ 271337622aSThéo Degioanni }\ 281337622aSThéo Degioanni }"; 291337622aSThéo Degioanni 301337622aSThéo Degioanni // CHECK: module { 311337622aSThéo Degioanni // CHECK-NEXT: %[[RES:.*]] = "foo.op"() : () -> i32 321337622aSThéo Degioanni // CHECK-NEXT: "bar.op"(%[[RES]]) : (i32) -> () 331337622aSThéo Degioanni // CHECK-NEXT: } 341337622aSThéo Degioanni const char newDialectUsage[] = "\ 351337622aSThéo Degioanni module {\ 361337622aSThéo Degioanni %res = \"foo.op\"() : () -> i32\ 371337622aSThéo Degioanni \"bar.op\"(%res) : (i32) -> ()\ 381337622aSThéo Degioanni }"; 391337622aSThéo Degioanni 401337622aSThéo Degioanni int main(void) { 411337622aSThéo Degioanni MlirContext ctx = mlirContextCreate(); 421337622aSThéo Degioanni mlirDialectHandleLoadDialect(mlirGetDialectHandle__irdl__(), ctx); 431337622aSThéo Degioanni 441337622aSThéo Degioanni MlirModule dialectDecl = 451337622aSThéo Degioanni mlirModuleCreateParse(ctx, mlirStringRefCreateFromCString(irdlDialect)); 461337622aSThéo Degioanni 471337622aSThéo Degioanni mlirLoadIRDLDialects(dialectDecl); 481337622aSThéo Degioanni mlirModuleDestroy(dialectDecl); 491337622aSThéo Degioanni 501337622aSThéo Degioanni MlirModule usingModule = mlirModuleCreateParse( 511337622aSThéo Degioanni ctx, mlirStringRefCreateFromCString(newDialectUsage)); 521337622aSThéo Degioanni 531337622aSThéo Degioanni mlirOperationDump(mlirModuleGetOperation(usingModule)); 541337622aSThéo Degioanni 551337622aSThéo Degioanni mlirModuleDestroy(usingModule); 561337622aSThéo Degioanni mlirContextDestroy(ctx); 571337622aSThéo Degioanni return 0; 581337622aSThéo Degioanni } 59