diff options
author | Yann Herklotz <git@yannherklotz.com> | 2022-09-26 19:08:01 +0100 |
---|---|---|
committer | Yann Herklotz <git@yannherklotz.com> | 2022-09-26 19:08:48 +0100 |
commit | 0034f32d6d85d7f21cf04c82083860cdb2fe1ddb (patch) | |
tree | f37f65190acd6040a262cdb7d2dbf6e2b17556f5 /test/CAPI/standalone-capi-test.c | |
parent | b018c1ef00eade87c9efbf48cc2e3466877ea79d (diff) | |
download | gsa-mlir-master.tar.gz gsa-mlir-master.zip |
Diffstat (limited to 'test/CAPI/standalone-capi-test.c')
-rw-r--r-- | test/CAPI/standalone-capi-test.c | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/test/CAPI/standalone-capi-test.c b/test/CAPI/standalone-capi-test.c new file mode 100644 index 0000000..54f3ca7 --- /dev/null +++ b/test/CAPI/standalone-capi-test.c @@ -0,0 +1,49 @@ +//===- standalone-cap-demo.c - Simple demo of 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: standalone-capi-test 2>&1 | FileCheck %s + +#include <stdio.h> + +#include "Standalone-c/Dialects.h" +#include "mlir-c/IR.h" +#include "mlir-c/RegisterEverything.h" + +static void registerAllUpstreamDialects(MlirContext ctx) { + MlirDialectRegistry registry = mlirDialectRegistryCreate(); + mlirRegisterAllDialects(registry); + mlirContextAppendDialectRegistry(ctx, registry); + mlirDialectRegistryDestroy(registry); +} + +int main(int argc, char **argv) { + MlirContext ctx = mlirContextCreate(); + // TODO: Create the dialect handles for the builtin dialects and avoid this. + // This adds dozens of MB of binary size over just the standalone dialect. + registerAllUpstreamDialects(ctx); + mlirDialectHandleRegisterDialect(mlirGetDialectHandle__standalone__(), ctx); + + MlirModule module = mlirModuleCreateParse( + ctx, mlirStringRefCreateFromCString("%0 = arith.constant 2 : i32\n" + "%1 = standalone.foo %0 : i32\n")); + if (mlirModuleIsNull(module)) { + printf("ERROR: Could not parse.\n"); + mlirContextDestroy(ctx); + return 1; + } + MlirOperation op = mlirModuleGetOperation(module); + + // CHECK: %[[C:.*]] = arith.constant 2 : i32 + // CHECK: standalone.foo %[[C]] : i32 + mlirOperationDump(op); + + mlirModuleDestroy(module); + mlirContextDestroy(ctx); + return 0; +} |