mirror of
https://github.com/llvm/llvm-project.git
synced 2025-04-25 07:36:06 +00:00

In order to meaningfully generate getters and setters from IRDL, it makes sense to embed the names of operands, results, etc. in the IR definition. This PR introduces this feature. Names are constrained similarly to TableGen names.
59 lines
1.5 KiB
C
59 lines
1.5 KiB
C
//===- irdl.c - Test for the C bindings for IRDL registration -------------===//
|
|
//
|
|
// 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-irdl-test 2>&1 | FileCheck %s
|
|
*/
|
|
|
|
#include "mlir-c/Dialect/IRDL.h"
|
|
#include "mlir-c/IR.h"
|
|
|
|
const char irdlDialect[] = "\
|
|
irdl.dialect @foo {\
|
|
irdl.operation @op {\
|
|
%i32 = irdl.is i32\
|
|
irdl.results(baz: %i32)\
|
|
}\
|
|
}\
|
|
irdl.dialect @bar {\
|
|
irdl.operation @op {\
|
|
%i32 = irdl.is i32\
|
|
irdl.operands(baz: %i32)\
|
|
}\
|
|
}";
|
|
|
|
// CHECK: module {
|
|
// CHECK-NEXT: %[[RES:.*]] = "foo.op"() : () -> i32
|
|
// CHECK-NEXT: "bar.op"(%[[RES]]) : (i32) -> ()
|
|
// CHECK-NEXT: }
|
|
const char newDialectUsage[] = "\
|
|
module {\
|
|
%res = \"foo.op\"() : () -> i32\
|
|
\"bar.op\"(%res) : (i32) -> ()\
|
|
}";
|
|
|
|
int main(void) {
|
|
MlirContext ctx = mlirContextCreate();
|
|
mlirDialectHandleLoadDialect(mlirGetDialectHandle__irdl__(), ctx);
|
|
|
|
MlirModule dialectDecl =
|
|
mlirModuleCreateParse(ctx, mlirStringRefCreateFromCString(irdlDialect));
|
|
|
|
mlirLoadIRDLDialects(dialectDecl);
|
|
mlirModuleDestroy(dialectDecl);
|
|
|
|
MlirModule usingModule = mlirModuleCreateParse(
|
|
ctx, mlirStringRefCreateFromCString(newDialectUsage));
|
|
|
|
mlirOperationDump(mlirModuleGetOperation(usingModule));
|
|
|
|
mlirModuleDestroy(usingModule);
|
|
mlirContextDestroy(ctx);
|
|
return 0;
|
|
}
|