blob: 64788645ec94381a987451dafa8bd0c18a952333 [file] [log] [blame]
//===- 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 "mlir-c/IR.h"
#include "Standalone-c/Dialects.h"
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.
mlirRegisterAllDialects(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;
}