brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.5 KiB · ad52ece Raw
59 lines · c
1//===- irdl.c - Test for the C bindings for IRDL registration -------------===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM4// Exceptions.5// See https://llvm.org/LICENSE.txt for license information.6// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception7//8//===----------------------------------------------------------------------===//9 10/* RUN: mlir-capi-irdl-test 2>&1 | FileCheck %s11 */12 13#include "mlir-c/Dialect/IRDL.h"14#include "mlir-c/IR.h"15 16const char irdlDialect[] = "\17  irdl.dialect @foo {\18    irdl.operation @op {\19      %i32 = irdl.is i32\20      irdl.results(baz: %i32)\21    }\22  }\23  irdl.dialect @bar {\24    irdl.operation @op {\25      %i32 = irdl.is i32\26      irdl.operands(baz: %i32)\27    }\28  }";29 30// CHECK:      module {31// CHECK-NEXT:   %[[RES:.*]] = "foo.op"() : () -> i3232// CHECK-NEXT:   "bar.op"(%[[RES]]) :  (i32) -> ()33// CHECK-NEXT: }34const char newDialectUsage[] = "\35  module {\36    %res = \"foo.op\"() : () -> i32\37    \"bar.op\"(%res) : (i32) -> ()\38  }";39 40int main(void) {41  MlirContext ctx = mlirContextCreate();42  mlirDialectHandleLoadDialect(mlirGetDialectHandle__irdl__(), ctx);43 44  MlirModule dialectDecl =45      mlirModuleCreateParse(ctx, mlirStringRefCreateFromCString(irdlDialect));46 47  mlirLoadIRDLDialects(dialectDecl);48  mlirModuleDestroy(dialectDecl);49 50  MlirModule usingModule = mlirModuleCreateParse(51      ctx, mlirStringRefCreateFromCString(newDialectUsage));52 53  mlirOperationDump(mlirModuleGetOperation(usingModule));54 55  mlirModuleDestroy(usingModule);56  mlirContextDestroy(ctx);57  return 0;58}59