[Mlir-commits] [mlir] d04c2b2 - Revert "[MLIR] Generic 'malloc', 'aligned_alloc' and 'free' functions"
Mehdi Amini
llvmlistbot at llvm.org
Mon Jul 18 11:08:16 PDT 2022
Author: Mehdi Amini
Date: 2022-07-18T18:07:36Z
New Revision: d04c2b2fd916897cadc88f33ab87582f473600ac
URL: https://github.com/llvm/llvm-project/commit/d04c2b2fd916897cadc88f33ab87582f473600ac
DIFF: https://github.com/llvm/llvm-project/commit/d04c2b2fd916897cadc88f33ab87582f473600ac.diff
LOG: Revert "[MLIR] Generic 'malloc', 'aligned_alloc' and 'free' functions"
This reverts commit 3e21fb616d9a1b29bf9d1a1ba484add633d6d5b3.
A lot of integration tests are failing on the bot.
Added:
Modified:
mlir/docs/Tutorials/Toy/Ch-6.md
mlir/examples/toy/Ch6/CMakeLists.txt
mlir/examples/toy/Ch6/include/toy/Passes.h
mlir/examples/toy/Ch6/toyc.cpp
mlir/examples/toy/Ch7/CMakeLists.txt
mlir/examples/toy/Ch7/include/toy/Passes.h
mlir/examples/toy/Ch7/toyc.cpp
mlir/include/mlir/Dialect/LLVMIR/FunctionCallUtils.h
mlir/lib/Conversion/AsyncToLLVM/AsyncToLLVM.cpp
mlir/lib/Conversion/MemRefToLLVM/MemRefToLLVM.cpp
mlir/lib/Dialect/LLVMIR/IR/FunctionCallUtils.cpp
mlir/lib/ExecutionEngine/RunnerUtils.cpp
mlir/lib/Target/LLVMIR/ModuleTranslation.cpp
mlir/test/Conversion/AsyncToLLVM/convert-coro-to-llvm.mlir
mlir/test/Conversion/AsyncToLLVM/convert-to-llvm.mlir
mlir/test/Conversion/FuncToLLVM/calling-convention.mlir
mlir/test/Conversion/MemRefToLLVM/convert-dynamic-memref-ops.mlir
mlir/test/Conversion/MemRefToLLVM/convert-static-memref-ops.mlir
mlir/test/Target/LLVMIR/llvmir.mlir
mlir/test/mlir-cpu-runner/bare-ptr-call-conv.mlir
mlir/test/mlir-cpu-runner/sgemm-naive-codegen.mlir
mlir/test/mlir-cpu-runner/simple.mlir
Removed:
mlir/examples/toy/Ch6/mlir/AllocRenamingPass.cpp
mlir/examples/toy/Ch7/mlir/AllocRenamingPass.cpp
################################################################################
diff --git a/mlir/docs/Tutorials/Toy/Ch-6.md b/mlir/docs/Tutorials/Toy/Ch-6.md
index 574b62ca68f3b..3605188d9999d 100644
--- a/mlir/docs/Tutorials/Toy/Ch-6.md
+++ b/mlir/docs/Tutorials/Toy/Ch-6.md
@@ -171,16 +171,6 @@ llvm.func @main() {
}
```
-Even though not visible from the generated LLVM dialect, it must be noted that
-the conversion of the Memref dialect into the LLVM one does not produce calls
-to the `malloc` and `free` functions, but rather to the `_mlir_alloc` and
-`_mlir_free` functions. Their names have been intentionally kept
diff erent so
-that users can provide their own implementation by means of external libraries,
-thus allowing for
diff erent behaviour or profiling. For the sake of simplicity,
-this tutorial also includes a transformation pass converting them back to the
-well known `malloc` and `free` functions, thus partially hiding this complexity
-to newcomers.
-
See [Conversion to the LLVM IR Dialect](../../ConversionToLLVMDialect.md) for
more in-depth details on lowering to the LLVM dialect.
diff --git a/mlir/examples/toy/Ch6/CMakeLists.txt b/mlir/examples/toy/Ch6/CMakeLists.txt
index 5fad31f6e59f4..48094f56d6512 100644
--- a/mlir/examples/toy/Ch6/CMakeLists.txt
+++ b/mlir/examples/toy/Ch6/CMakeLists.txt
@@ -16,7 +16,6 @@ add_public_tablegen_target(ToyCh6CombineIncGen)
add_toy_chapter(toyc-ch6
toyc.cpp
parser/AST.cpp
- mlir/AllocRenamingPass.cpp
mlir/MLIRGen.cpp
mlir/Dialect.cpp
mlir/LowerToAffineLoops.cpp
diff --git a/mlir/examples/toy/Ch6/include/toy/Passes.h b/mlir/examples/toy/Ch6/include/toy/Passes.h
index 907b425910154..62471dde46d85 100644
--- a/mlir/examples/toy/Ch6/include/toy/Passes.h
+++ b/mlir/examples/toy/Ch6/include/toy/Passes.h
@@ -29,10 +29,6 @@ std::unique_ptr<mlir::Pass> createLowerToAffinePass();
/// well as `Affine` and `Std`, to the LLVM dialect for codegen.
std::unique_ptr<mlir::Pass> createLowerToLLVMPass();
-/// Create a pass to rename the '_mlir_alloc' and '_mlir_free' functions to
-/// 'malloc' and 'free'.
-std::unique_ptr<mlir::Pass> createAllocRenamingPass();
-
} // namespace toy
} // namespace mlir
diff --git a/mlir/examples/toy/Ch6/mlir/AllocRenamingPass.cpp b/mlir/examples/toy/Ch6/mlir/AllocRenamingPass.cpp
deleted file mode 100644
index 68809a330c4d2..0000000000000
--- a/mlir/examples/toy/Ch6/mlir/AllocRenamingPass.cpp
+++ /dev/null
@@ -1,154 +0,0 @@
-//====- AllocRenamingPass.cpp ---------------------------------------------===//
-//
-// 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
-//
-//===----------------------------------------------------------------------===//
-//
-// This file implements the renaming of '_mlir_alloc' and '_mlir_free' functions
-// respectively into 'malloc' and 'free', so that the Toy example doesn't have
-// to deal with runtime libraries to be linked.
-//
-//===----------------------------------------------------------------------===//
-
-#include "toy/Passes.h"
-
-#include "mlir/Conversion/FuncToLLVM/ConvertFuncToLLVMPass.h"
-#include "mlir/Conversion/LLVMCommon/ConversionTarget.h"
-#include "mlir/Dialect/LLVMIR/LLVMDialect.h"
-#include "mlir/Pass/Pass.h"
-#include "mlir/Transforms/DialectConversion.h"
-#include "llvm/ADT/Sequence.h"
-
-using namespace mlir;
-
-//===----------------------------------------------------------------------===//
-// AllocRenamingPass RewritePatterns
-//===----------------------------------------------------------------------===//
-
-namespace {
-/// Rename the '_mlir_alloc' function into 'malloc'
-class AllocFuncRenamePattern : public OpRewritePattern<LLVM::LLVMFuncOp> {
-public:
- using OpRewritePattern<LLVM::LLVMFuncOp>::OpRewritePattern;
-
- LogicalResult match(LLVM::LLVMFuncOp op) const override {
- return LogicalResult::success(op.getName() == "_mlir_alloc");
- }
-
- void rewrite(LLVM::LLVMFuncOp op, PatternRewriter &rewriter) const override {
- rewriter.replaceOpWithNewOp<LLVM::LLVMFuncOp>(
- op, "malloc", op.getFunctionType(), op.getLinkage());
- }
-};
-
-/// Rename the '_mlir_free' function into 'free'
-class FreeFuncRenamePattern : public OpRewritePattern<LLVM::LLVMFuncOp> {
-public:
- using OpRewritePattern<LLVM::LLVMFuncOp>::OpRewritePattern;
-
- LogicalResult match(LLVM::LLVMFuncOp op) const override {
- return LogicalResult::success(op.getName() == "_mlir_free");
- }
-
- void rewrite(LLVM::LLVMFuncOp op, PatternRewriter &rewriter) const override {
- rewriter.replaceOpWithNewOp<LLVM::LLVMFuncOp>(
- op, "free", op.getFunctionType(), op.getLinkage());
- }
-};
-
-/// Rename the calls to '_mlir_alloc' with calls to 'malloc'
-class AllocCallRenamePattern : public OpRewritePattern<LLVM::CallOp> {
-public:
- using OpRewritePattern<LLVM::CallOp>::OpRewritePattern;
-
- LogicalResult match(LLVM::CallOp op) const override {
- auto callee = op.getCallee();
-
- if (!callee)
- return failure();
-
- return LogicalResult::success(*callee == "_mlir_alloc");
- }
-
- void rewrite(LLVM::CallOp op, PatternRewriter &rewriter) const override {
- rewriter.replaceOpWithNewOp<LLVM::CallOp>(op, op.getResultTypes(), "malloc",
- op.getOperands());
- }
-};
-
-/// Rename the calls to '_mlir_free' with calls to 'free'
-class FreeCallRenamePattern : public OpRewritePattern<LLVM::CallOp> {
-public:
- using OpRewritePattern<LLVM::CallOp>::OpRewritePattern;
-
- LogicalResult match(LLVM::CallOp op) const override {
- auto callee = op.getCallee();
-
- if (!callee)
- return failure();
-
- return LogicalResult::success(*callee == "_mlir_free");
- }
-
- void rewrite(LLVM::CallOp op, PatternRewriter &rewriter) const override {
- rewriter.replaceOpWithNewOp<LLVM::CallOp>(op, op.getResultTypes(), "free",
- op.getOperands());
- }
-};
-} // namespace
-
-//===----------------------------------------------------------------------===//
-// AllocRenamingPass
-//===----------------------------------------------------------------------===//
-
-namespace {
-struct AllocRenamingPass
- : public PassWrapper<AllocRenamingPass, OperationPass<ModuleOp>> {
- MLIR_DEFINE_EXPLICIT_INTERNAL_INLINE_TYPE_ID(AllocRenamingPass)
-
- void getDependentDialects(DialectRegistry ®istry) const override {
- registry.insert<LLVM::LLVMDialect>();
- }
- void runOnOperation() final;
-};
-} // namespace
-
-void AllocRenamingPass::runOnOperation() {
- LLVMConversionTarget target(getContext());
-
- target.addDynamicallyLegalOp<LLVM::LLVMFuncOp>([](LLVM::LLVMFuncOp op) {
- auto name = op.getName();
- return name != "_mlir_alloc" && name != "_mlir_free";
- });
-
- target.addDynamicallyLegalOp<LLVM::CallOp>([](LLVM::CallOp op) {
- auto callee = op.getCallee();
-
- if (!callee)
- return true;
-
- return *callee != "_mlir_alloc" && *callee != "_mlir_free";
- });
-
- target.markUnknownOpDynamicallyLegal(
- [](mlir::Operation *op) { return true; });
-
- RewritePatternSet patterns(&getContext());
-
- patterns.add<AllocFuncRenamePattern>(&getContext());
- patterns.add<FreeFuncRenamePattern>(&getContext());
- patterns.add<AllocCallRenamePattern>(&getContext());
- patterns.add<FreeCallRenamePattern>(&getContext());
-
- auto module = getOperation();
- if (failed(applyFullConversion(module, target, std::move(patterns))))
- signalPassFailure();
-}
-
-/// Create a pass to rename the '_mlir_alloc' and '_mlir_free' functions to
-/// 'malloc' and 'free'.
-std::unique_ptr<mlir::Pass> mlir::toy::createAllocRenamingPass() {
- return std::make_unique<AllocRenamingPass>();
-}
diff --git a/mlir/examples/toy/Ch6/toyc.cpp b/mlir/examples/toy/Ch6/toyc.cpp
index 8a0a6fd6f58b4..32261ec82ebf9 100644
--- a/mlir/examples/toy/Ch6/toyc.cpp
+++ b/mlir/examples/toy/Ch6/toyc.cpp
@@ -171,7 +171,6 @@ int loadAndProcessMLIR(mlir::MLIRContext &context,
if (isLoweringToLLVM) {
// Finish lowering the toy IR to the LLVM dialect.
pm.addPass(mlir::toy::createLowerToLLVMPass());
- pm.addPass(mlir::toy::createAllocRenamingPass());
}
if (mlir::failed(pm.run(*module)))
diff --git a/mlir/examples/toy/Ch7/CMakeLists.txt b/mlir/examples/toy/Ch7/CMakeLists.txt
index ec670da565fbc..8de18d37e3d82 100644
--- a/mlir/examples/toy/Ch7/CMakeLists.txt
+++ b/mlir/examples/toy/Ch7/CMakeLists.txt
@@ -16,7 +16,6 @@ add_public_tablegen_target(ToyCh7CombineIncGen)
add_toy_chapter(toyc-ch7
toyc.cpp
parser/AST.cpp
- mlir/AllocRenamingPass.cpp
mlir/MLIRGen.cpp
mlir/Dialect.cpp
mlir/LowerToAffineLoops.cpp
diff --git a/mlir/examples/toy/Ch7/include/toy/Passes.h b/mlir/examples/toy/Ch7/include/toy/Passes.h
index 907b425910154..62471dde46d85 100644
--- a/mlir/examples/toy/Ch7/include/toy/Passes.h
+++ b/mlir/examples/toy/Ch7/include/toy/Passes.h
@@ -29,10 +29,6 @@ std::unique_ptr<mlir::Pass> createLowerToAffinePass();
/// well as `Affine` and `Std`, to the LLVM dialect for codegen.
std::unique_ptr<mlir::Pass> createLowerToLLVMPass();
-/// Create a pass to rename the '_mlir_alloc' and '_mlir_free' functions to
-/// 'malloc' and 'free'.
-std::unique_ptr<mlir::Pass> createAllocRenamingPass();
-
} // namespace toy
} // namespace mlir
diff --git a/mlir/examples/toy/Ch7/mlir/AllocRenamingPass.cpp b/mlir/examples/toy/Ch7/mlir/AllocRenamingPass.cpp
deleted file mode 100644
index 68809a330c4d2..0000000000000
--- a/mlir/examples/toy/Ch7/mlir/AllocRenamingPass.cpp
+++ /dev/null
@@ -1,154 +0,0 @@
-//====- AllocRenamingPass.cpp ---------------------------------------------===//
-//
-// 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
-//
-//===----------------------------------------------------------------------===//
-//
-// This file implements the renaming of '_mlir_alloc' and '_mlir_free' functions
-// respectively into 'malloc' and 'free', so that the Toy example doesn't have
-// to deal with runtime libraries to be linked.
-//
-//===----------------------------------------------------------------------===//
-
-#include "toy/Passes.h"
-
-#include "mlir/Conversion/FuncToLLVM/ConvertFuncToLLVMPass.h"
-#include "mlir/Conversion/LLVMCommon/ConversionTarget.h"
-#include "mlir/Dialect/LLVMIR/LLVMDialect.h"
-#include "mlir/Pass/Pass.h"
-#include "mlir/Transforms/DialectConversion.h"
-#include "llvm/ADT/Sequence.h"
-
-using namespace mlir;
-
-//===----------------------------------------------------------------------===//
-// AllocRenamingPass RewritePatterns
-//===----------------------------------------------------------------------===//
-
-namespace {
-/// Rename the '_mlir_alloc' function into 'malloc'
-class AllocFuncRenamePattern : public OpRewritePattern<LLVM::LLVMFuncOp> {
-public:
- using OpRewritePattern<LLVM::LLVMFuncOp>::OpRewritePattern;
-
- LogicalResult match(LLVM::LLVMFuncOp op) const override {
- return LogicalResult::success(op.getName() == "_mlir_alloc");
- }
-
- void rewrite(LLVM::LLVMFuncOp op, PatternRewriter &rewriter) const override {
- rewriter.replaceOpWithNewOp<LLVM::LLVMFuncOp>(
- op, "malloc", op.getFunctionType(), op.getLinkage());
- }
-};
-
-/// Rename the '_mlir_free' function into 'free'
-class FreeFuncRenamePattern : public OpRewritePattern<LLVM::LLVMFuncOp> {
-public:
- using OpRewritePattern<LLVM::LLVMFuncOp>::OpRewritePattern;
-
- LogicalResult match(LLVM::LLVMFuncOp op) const override {
- return LogicalResult::success(op.getName() == "_mlir_free");
- }
-
- void rewrite(LLVM::LLVMFuncOp op, PatternRewriter &rewriter) const override {
- rewriter.replaceOpWithNewOp<LLVM::LLVMFuncOp>(
- op, "free", op.getFunctionType(), op.getLinkage());
- }
-};
-
-/// Rename the calls to '_mlir_alloc' with calls to 'malloc'
-class AllocCallRenamePattern : public OpRewritePattern<LLVM::CallOp> {
-public:
- using OpRewritePattern<LLVM::CallOp>::OpRewritePattern;
-
- LogicalResult match(LLVM::CallOp op) const override {
- auto callee = op.getCallee();
-
- if (!callee)
- return failure();
-
- return LogicalResult::success(*callee == "_mlir_alloc");
- }
-
- void rewrite(LLVM::CallOp op, PatternRewriter &rewriter) const override {
- rewriter.replaceOpWithNewOp<LLVM::CallOp>(op, op.getResultTypes(), "malloc",
- op.getOperands());
- }
-};
-
-/// Rename the calls to '_mlir_free' with calls to 'free'
-class FreeCallRenamePattern : public OpRewritePattern<LLVM::CallOp> {
-public:
- using OpRewritePattern<LLVM::CallOp>::OpRewritePattern;
-
- LogicalResult match(LLVM::CallOp op) const override {
- auto callee = op.getCallee();
-
- if (!callee)
- return failure();
-
- return LogicalResult::success(*callee == "_mlir_free");
- }
-
- void rewrite(LLVM::CallOp op, PatternRewriter &rewriter) const override {
- rewriter.replaceOpWithNewOp<LLVM::CallOp>(op, op.getResultTypes(), "free",
- op.getOperands());
- }
-};
-} // namespace
-
-//===----------------------------------------------------------------------===//
-// AllocRenamingPass
-//===----------------------------------------------------------------------===//
-
-namespace {
-struct AllocRenamingPass
- : public PassWrapper<AllocRenamingPass, OperationPass<ModuleOp>> {
- MLIR_DEFINE_EXPLICIT_INTERNAL_INLINE_TYPE_ID(AllocRenamingPass)
-
- void getDependentDialects(DialectRegistry ®istry) const override {
- registry.insert<LLVM::LLVMDialect>();
- }
- void runOnOperation() final;
-};
-} // namespace
-
-void AllocRenamingPass::runOnOperation() {
- LLVMConversionTarget target(getContext());
-
- target.addDynamicallyLegalOp<LLVM::LLVMFuncOp>([](LLVM::LLVMFuncOp op) {
- auto name = op.getName();
- return name != "_mlir_alloc" && name != "_mlir_free";
- });
-
- target.addDynamicallyLegalOp<LLVM::CallOp>([](LLVM::CallOp op) {
- auto callee = op.getCallee();
-
- if (!callee)
- return true;
-
- return *callee != "_mlir_alloc" && *callee != "_mlir_free";
- });
-
- target.markUnknownOpDynamicallyLegal(
- [](mlir::Operation *op) { return true; });
-
- RewritePatternSet patterns(&getContext());
-
- patterns.add<AllocFuncRenamePattern>(&getContext());
- patterns.add<FreeFuncRenamePattern>(&getContext());
- patterns.add<AllocCallRenamePattern>(&getContext());
- patterns.add<FreeCallRenamePattern>(&getContext());
-
- auto module = getOperation();
- if (failed(applyFullConversion(module, target, std::move(patterns))))
- signalPassFailure();
-}
-
-/// Create a pass to rename the '_mlir_alloc' and '_mlir_free' functions to
-/// 'malloc' and 'free'.
-std::unique_ptr<mlir::Pass> mlir::toy::createAllocRenamingPass() {
- return std::make_unique<AllocRenamingPass>();
-}
diff --git a/mlir/examples/toy/Ch7/toyc.cpp b/mlir/examples/toy/Ch7/toyc.cpp
index 472b685d91a40..2b8dc76f5993a 100644
--- a/mlir/examples/toy/Ch7/toyc.cpp
+++ b/mlir/examples/toy/Ch7/toyc.cpp
@@ -172,7 +172,6 @@ int loadAndProcessMLIR(mlir::MLIRContext &context,
if (isLoweringToLLVM) {
// Finish lowering the toy IR to the LLVM dialect.
pm.addPass(mlir::toy::createLowerToLLVMPass());
- pm.addPass(mlir::toy::createAllocRenamingPass());
}
if (mlir::failed(pm.run(*module)))
diff --git a/mlir/include/mlir/Dialect/LLVMIR/FunctionCallUtils.h b/mlir/include/mlir/Dialect/LLVMIR/FunctionCallUtils.h
index 960570ff254d7..6380ff2d8e132 100644
--- a/mlir/include/mlir/Dialect/LLVMIR/FunctionCallUtils.h
+++ b/mlir/include/mlir/Dialect/LLVMIR/FunctionCallUtils.h
@@ -45,7 +45,6 @@ LLVM::LLVMFuncOp lookupOrCreateMallocFn(ModuleOp moduleOp, Type indexType);
LLVM::LLVMFuncOp lookupOrCreateAlignedAllocFn(ModuleOp moduleOp,
Type indexType);
LLVM::LLVMFuncOp lookupOrCreateFreeFn(ModuleOp moduleOp);
-LLVM::LLVMFuncOp lookupOrCreateAlignedFreeFn(ModuleOp moduleOp);
LLVM::LLVMFuncOp lookupOrCreateMemRefCopyFn(ModuleOp moduleOp, Type indexType,
Type unrankedDescriptorType);
diff --git a/mlir/lib/Conversion/AsyncToLLVM/AsyncToLLVM.cpp b/mlir/lib/Conversion/AsyncToLLVM/AsyncToLLVM.cpp
index b5debeeb0a19d..159a726cd9196 100644
--- a/mlir/lib/Conversion/AsyncToLLVM/AsyncToLLVM.cpp
+++ b/mlir/lib/Conversion/AsyncToLLVM/AsyncToLLVM.cpp
@@ -399,7 +399,7 @@ class CoroFreeOpConversion : public OpConversionPattern<CoroFreeOp> {
// Free the memory.
auto freeFuncOp =
- LLVM::lookupOrCreateAlignedFreeFn(op->getParentOfType<ModuleOp>());
+ LLVM::lookupOrCreateFreeFn(op->getParentOfType<ModuleOp>());
rewriter.replaceOpWithNewOp<LLVM::CallOp>(op, TypeRange(),
SymbolRefAttr::get(freeFuncOp),
ValueRange(coroMem.getResult()));
diff --git a/mlir/lib/Conversion/MemRefToLLVM/MemRefToLLVM.cpp b/mlir/lib/Conversion/MemRefToLLVM/MemRefToLLVM.cpp
index c48e5884a291e..6e363997ac16d 100644
--- a/mlir/lib/Conversion/MemRefToLLVM/MemRefToLLVM.cpp
+++ b/mlir/lib/Conversion/MemRefToLLVM/MemRefToLLVM.cpp
@@ -315,29 +315,6 @@ struct DeallocOpLowering : public ConvertOpToLLVMPattern<memref::DeallocOp> {
}
};
-struct AlignedDeallocOpLowering
- : public ConvertOpToLLVMPattern<memref::DeallocOp> {
- using ConvertOpToLLVMPattern<memref::DeallocOp>::ConvertOpToLLVMPattern;
-
- explicit AlignedDeallocOpLowering(LLVMTypeConverter &converter)
- : ConvertOpToLLVMPattern<memref::DeallocOp>(converter) {}
-
- LogicalResult
- matchAndRewrite(memref::DeallocOp op, OpAdaptor adaptor,
- ConversionPatternRewriter &rewriter) const override {
- // Insert the `free` declaration if it is not already present.
- auto freeFunc =
- LLVM::lookupOrCreateAlignedFreeFn(op->getParentOfType<ModuleOp>());
- MemRefDescriptor memref(adaptor.memref());
- Value casted = rewriter.create<LLVM::BitcastOp>(
- op.getLoc(), getVoidPtrType(),
- memref.allocatedPtr(rewriter, op.getLoc()));
- rewriter.replaceOpWithNewOp<LLVM::CallOp>(
- op, TypeRange(), SymbolRefAttr::get(freeFunc), casted);
- return success();
- }
-};
-
// A `dim` is converted to a constant for static sizes and to an access to the
// size stored in the memref descriptor for dynamic sizes.
struct DimOpLowering : public ConvertOpToLLVMPattern<memref::DimOp> {
@@ -2049,7 +2026,7 @@ void mlir::populateMemRefToLLVMConversionPatterns(LLVMTypeConverter &converter,
// clang-format on
auto allocLowering = converter.getOptions().allocLowering;
if (allocLowering == LowerToLLVMOptions::AllocLowering::AlignedAlloc)
- patterns.add<AlignedAllocOpLowering, AlignedDeallocOpLowering>(converter);
+ patterns.add<AlignedAllocOpLowering, DeallocOpLowering>(converter);
else if (allocLowering == LowerToLLVMOptions::AllocLowering::Malloc)
patterns.add<AllocOpLowering, DeallocOpLowering>(converter);
}
diff --git a/mlir/lib/Dialect/LLVMIR/IR/FunctionCallUtils.cpp b/mlir/lib/Dialect/LLVMIR/IR/FunctionCallUtils.cpp
index e0dd5f6de84fe..c3f8fcb422402 100644
--- a/mlir/lib/Dialect/LLVMIR/IR/FunctionCallUtils.cpp
+++ b/mlir/lib/Dialect/LLVMIR/IR/FunctionCallUtils.cpp
@@ -32,10 +32,9 @@ static constexpr llvm::StringRef kPrintOpen = "printOpen";
static constexpr llvm::StringRef kPrintClose = "printClose";
static constexpr llvm::StringRef kPrintComma = "printComma";
static constexpr llvm::StringRef kPrintNewline = "printNewline";
-static constexpr llvm::StringRef kMalloc = "_mlir_alloc";
-static constexpr llvm::StringRef kAlignedAlloc = "_mlir_aligned_alloc";
-static constexpr llvm::StringRef kFree = "_mlir_free";
-static constexpr llvm::StringRef kAlignedFree = "_mlir_aligned_free";
+static constexpr llvm::StringRef kMalloc = "malloc";
+static constexpr llvm::StringRef kAlignedAlloc = "aligned_alloc";
+static constexpr llvm::StringRef kFree = "free";
static constexpr llvm::StringRef kMemRefCopy = "memrefCopy";
/// Generic print function lookupOrCreate helper.
@@ -116,13 +115,6 @@ LLVM::LLVMFuncOp mlir::LLVM::lookupOrCreateFreeFn(ModuleOp moduleOp) {
LLVM::LLVMVoidType::get(moduleOp->getContext()));
}
-LLVM::LLVMFuncOp mlir::LLVM::lookupOrCreateAlignedFreeFn(ModuleOp moduleOp) {
- return LLVM::lookupOrCreateFn(
- moduleOp, kAlignedFree,
- LLVM::LLVMPointerType::get(IntegerType::get(moduleOp->getContext(), 8)),
- LLVM::LLVMVoidType::get(moduleOp->getContext()));
-}
-
LLVM::LLVMFuncOp
mlir::LLVM::lookupOrCreateMemRefCopyFn(ModuleOp moduleOp, Type indexType,
Type unrankedDescriptorType) {
diff --git a/mlir/lib/ExecutionEngine/RunnerUtils.cpp b/mlir/lib/ExecutionEngine/RunnerUtils.cpp
index d5eae9451e398..a9ad4a9b7d6e7 100644
--- a/mlir/lib/ExecutionEngine/RunnerUtils.cpp
+++ b/mlir/lib/ExecutionEngine/RunnerUtils.cpp
@@ -16,32 +16,8 @@
#include "mlir/ExecutionEngine/RunnerUtils.h"
#include <chrono>
-#ifdef _MSC_VER
-#include "malloc.h"
-#endif
-
// NOLINTBEGIN(*-identifier-naming)
-extern "C" void *_mlir_alloc(uint64_t size) { return malloc(size); }
-
-extern "C" void *_mlir_aligned_alloc(uint64_t alignment, uint64_t size) {
-#ifdef _MSC_VER
- return _aligned_malloc(size, alignment);
-#else
- return aligned_alloc(alignment, size);
-#endif
-}
-
-extern "C" void _mlir_free(void *ptr) { free(ptr); }
-
-extern "C" void _mlir_aligned_free(void *ptr) {
-#ifdef _MSC_VER
- _aligned_free(ptr);
-#else
- free(ptr);
-#endif
-}
-
extern "C" void _mlir_ciface_printMemrefShapeI8(UnrankedMemRefType<int8_t> *M) {
std::cout << "Unranked Memref ";
printMemRefMetaData(std::cout, DynamicMemRefType<int8_t>(*M));
diff --git a/mlir/lib/Target/LLVMIR/ModuleTranslation.cpp b/mlir/lib/Target/LLVMIR/ModuleTranslation.cpp
index 047c53fc9a305..4855571c05bd5 100644
--- a/mlir/lib/Target/LLVMIR/ModuleTranslation.cpp
+++ b/mlir/lib/Target/LLVMIR/ModuleTranslation.cpp
@@ -1116,17 +1116,12 @@ prepareLLVMModule(Operation *m, llvm::LLVMContext &llvmContext,
m->getAttr(LLVM::LLVMDialect::getTargetTripleAttrName()))
llvmModule->setTargetTriple(targetTripleAttr.cast<StringAttr>().getValue());
- // Inject declarations for `_mlir_alloc`, `_mlir_aligned_alloc` and
- // `_mlir_free` functions that can be used in memref allocation / deallocation
- // coming from standard ops lowering.
+ // Inject declarations for `malloc` and `free` functions that can be used in
+ // memref allocation/deallocation coming from standard ops lowering.
llvm::IRBuilder<> builder(llvmContext);
- llvmModule->getOrInsertFunction("_mlir_alloc", builder.getInt8PtrTy(),
+ llvmModule->getOrInsertFunction("malloc", builder.getInt8PtrTy(),
builder.getInt64Ty());
- llvmModule->getOrInsertFunction("_mlir_aligned_alloc", builder.getInt8PtrTy(),
- builder.getInt64Ty(), builder.getInt64Ty());
- llvmModule->getOrInsertFunction("_mlir_free", builder.getVoidTy(),
- builder.getInt8PtrTy());
- llvmModule->getOrInsertFunction("_mlir_aligned_free", builder.getVoidTy(),
+ llvmModule->getOrInsertFunction("free", builder.getVoidTy(),
builder.getInt8PtrTy());
return llvmModule;
diff --git a/mlir/test/Conversion/AsyncToLLVM/convert-coro-to-llvm.mlir b/mlir/test/Conversion/AsyncToLLVM/convert-coro-to-llvm.mlir
index de67c817c52e9..404be5c7b3710 100644
--- a/mlir/test/Conversion/AsyncToLLVM/convert-coro-to-llvm.mlir
+++ b/mlir/test/Conversion/AsyncToLLVM/convert-coro-to-llvm.mlir
@@ -21,7 +21,7 @@ func.func @coro_begin() {
// CHECK: %[[C0:.*]] = llvm.mlir.constant(0 : i64) : i64
// CHECK: %[[NEGATED_ALIGN:.*]] = llvm.sub %[[C0]], %[[ALIGN]] : i64
// CHECK: %[[ROUNDED_SIZE:.*]] = llvm.and %[[SIZE_PLUS_ALIGN_MINUS_ONE]], %[[NEGATED_ALIGN]] : i64
- // CHECK: %[[ALLOC:.*]] = llvm.call @_mlir_aligned_alloc(%[[ALIGN]], %[[ROUNDED_SIZE]])
+ // CHECK: %[[ALLOC:.*]] = llvm.call @aligned_alloc(%[[ALIGN]], %[[ROUNDED_SIZE]])
// CHECK: %[[HDL:.*]] = llvm.intr.coro.begin %[[ID]], %[[ALLOC]]
%1 = async.coro.begin %0
return
@@ -34,7 +34,7 @@ func.func @coro_free() {
// CHECK: %[[HDL:.*]] = llvm.intr.coro.begin
%1 = async.coro.begin %0
// CHECK: %[[MEM:.*]] = llvm.intr.coro.free %[[ID]], %[[HDL]]
- // CHECK: llvm.call @_mlir_aligned_free(%[[MEM]])
+ // CHECK: llvm.call @free(%[[MEM]])
async.coro.free %0, %1
return
}
diff --git a/mlir/test/Conversion/AsyncToLLVM/convert-to-llvm.mlir b/mlir/test/Conversion/AsyncToLLVM/convert-to-llvm.mlir
index c6141ece955da..05bffc6967bd3 100644
--- a/mlir/test/Conversion/AsyncToLLVM/convert-to-llvm.mlir
+++ b/mlir/test/Conversion/AsyncToLLVM/convert-to-llvm.mlir
@@ -61,7 +61,7 @@ func.func @execute_no_async_args(%arg0: f32, %arg1: memref<1xf32>) {
// Delete coroutine.
// CHECK: ^[[CLEANUP]]:
// CHECK: %[[MEM:.*]] = llvm.intr.coro.free
-// CHECK: llvm.call @_mlir_aligned_free(%[[MEM]])
+// CHECK: llvm.call @free(%[[MEM]])
// Suspend coroutine, and also a return statement for ramp function.
// CHECK: ^[[SUSPEND]]:
diff --git a/mlir/test/Conversion/FuncToLLVM/calling-convention.mlir b/mlir/test/Conversion/FuncToLLVM/calling-convention.mlir
index 410964b06d21a..8dc5dac7f2d5f 100644
--- a/mlir/test/Conversion/FuncToLLVM/calling-convention.mlir
+++ b/mlir/test/Conversion/FuncToLLVM/calling-convention.mlir
@@ -135,7 +135,7 @@ func.func @return_var_memref_caller(%arg0: memref<4x3xf32>) {
// CHECK: %[[ALLOCA:.*]] = llvm.alloca %[[ALLOC_SIZE]] x i8
// CHECK: %[[SOURCE:.*]] = llvm.extractvalue %[[CALL_RES]][1]
// CHECK: "llvm.intr.memcpy"(%[[ALLOCA]], %[[SOURCE]], %[[ALLOC_SIZE]], %[[FALSE]])
- // CHECK: llvm.call @_mlir_free(%[[SOURCE]])
+ // CHECK: llvm.call @free(%[[SOURCE]])
// CHECK: %[[DESC:.*]] = llvm.mlir.undef : !llvm.struct<(i64, ptr<i8>)>
// CHECK: %[[RANK:.*]] = llvm.extractvalue %[[CALL_RES]][0] : !llvm.struct<(i64, ptr<i8>)>
// CHECK: %[[DESC_1:.*]] = llvm.insertvalue %[[RANK]], %[[DESC]][0]
@@ -167,7 +167,7 @@ func.func @return_var_memref(%arg0: memref<4x3xf32>) -> memref<*xf32> attributes
// CHECK: %[[TABLES_SIZE:.*]] = llvm.mul %[[DOUBLE_RANK_INC]], %[[IDX_SIZE]]
// CHECK: %[[ALLOC_SIZE:.*]] = llvm.add %[[DOUBLE_PTR_SIZE]], %[[TABLES_SIZE]]
// CHECK: %[[FALSE:.*]] = llvm.mlir.constant(false)
- // CHECK: %[[ALLOCATED:.*]] = llvm.call @_mlir_alloc(%[[ALLOC_SIZE]])
+ // CHECK: %[[ALLOCATED:.*]] = llvm.call @malloc(%[[ALLOC_SIZE]])
// CHECK: "llvm.intr.memcpy"(%[[ALLOCATED]], %[[MEMORY]], %[[ALLOC_SIZE]], %[[FALSE]])
// CHECK: %[[NEW_DESC:.*]] = llvm.mlir.undef : !llvm.struct<(i64, ptr<i8>)>
// CHECK: %[[NEW_DESC_1:.*]] = llvm.insertvalue %[[RANK]], %[[NEW_DESC]][0]
@@ -193,7 +193,7 @@ func.func @return_two_var_memref_caller(%arg0: memref<4x3xf32>) {
// CHECK: %[[ALLOCA_1:.*]] = llvm.alloca %{{.*}} x i8
// CHECK: %[[SOURCE_1:.*]] = llvm.extractvalue %[[RES_1:.*]][1] : ![[DESC_TYPE:.*]]
// CHECK: "llvm.intr.memcpy"(%[[ALLOCA_1]], %[[SOURCE_1]], %{{.*}}, %[[FALSE:.*]])
- // CHECK: llvm.call @_mlir_free(%[[SOURCE_1]])
+ // CHECK: llvm.call @free(%[[SOURCE_1]])
// CHECK: %[[DESC_1:.*]] = llvm.mlir.undef : ![[DESC_TYPE]]
// CHECK: %[[DESC_11:.*]] = llvm.insertvalue %{{.*}}, %[[DESC_1]][0]
// CHECK: llvm.insertvalue %[[ALLOCA_1]], %[[DESC_11]][1]
@@ -201,7 +201,7 @@ func.func @return_two_var_memref_caller(%arg0: memref<4x3xf32>) {
// CHECK: %[[ALLOCA_2:.*]] = llvm.alloca %{{.*}} x i8
// CHECK: %[[SOURCE_2:.*]] = llvm.extractvalue %[[RES_2:.*]][1]
// CHECK: "llvm.intr.memcpy"(%[[ALLOCA_2]], %[[SOURCE_2]], %{{.*}}, %[[FALSE]])
- // CHECK: llvm.call @_mlir_free(%[[SOURCE_2]])
+ // CHECK: llvm.call @free(%[[SOURCE_2]])
// CHECK: %[[DESC_2:.*]] = llvm.mlir.undef : ![[DESC_TYPE]]
// CHECK: %[[DESC_21:.*]] = llvm.insertvalue %{{.*}}, %[[DESC_2]][0]
// CHECK: llvm.insertvalue %[[ALLOCA_2]], %[[DESC_21]][1]
@@ -222,13 +222,13 @@ func.func @return_two_var_memref(%arg0: memref<4x3xf32>) -> (memref<*xf32>, memr
// separately, even if both operands are the same value. The calling
// convention requires the caller to free them and the caller cannot know
// whether they are the same value or not.
- // CHECK: %[[ALLOCATED_1:.*]] = llvm.call @_mlir_alloc(%{{.*}})
+ // CHECK: %[[ALLOCATED_1:.*]] = llvm.call @malloc(%{{.*}})
// CHECK: "llvm.intr.memcpy"(%[[ALLOCATED_1]], %[[MEMORY]], %{{.*}}, %[[FALSE:.*]])
// CHECK: %[[RES_1:.*]] = llvm.mlir.undef
// CHECK: %[[RES_11:.*]] = llvm.insertvalue %{{.*}}, %[[RES_1]][0]
// CHECK: %[[RES_12:.*]] = llvm.insertvalue %[[ALLOCATED_1]], %[[RES_11]][1]
- // CHECK: %[[ALLOCATED_2:.*]] = llvm.call @_mlir_alloc(%{{.*}})
+ // CHECK: %[[ALLOCATED_2:.*]] = llvm.call @malloc(%{{.*}})
// CHECK: "llvm.intr.memcpy"(%[[ALLOCATED_2]], %[[MEMORY]], %{{.*}}, %[[FALSE]])
// CHECK: %[[RES_2:.*]] = llvm.mlir.undef
// CHECK: %[[RES_21:.*]] = llvm.insertvalue %{{.*}}, %[[RES_2]][0]
diff --git a/mlir/test/Conversion/MemRefToLLVM/convert-dynamic-memref-ops.mlir b/mlir/test/Conversion/MemRefToLLVM/convert-dynamic-memref-ops.mlir
index 67c0e94572a33..639d89976baf4 100644
--- a/mlir/test/Conversion/MemRefToLLVM/convert-dynamic-memref-ops.mlir
+++ b/mlir/test/Conversion/MemRefToLLVM/convert-dynamic-memref-ops.mlir
@@ -14,7 +14,7 @@ func.func @mixed_alloc(%arg0: index, %arg1: index) -> memref<?x42x?xf32> {
// CHECK-NEXT: %[[null:.*]] = llvm.mlir.null : !llvm.ptr<f32>
// CHECK-NEXT: %[[gep:.*]] = llvm.getelementptr %[[null]][%[[sz]]] : (!llvm.ptr<f32>, i64) -> !llvm.ptr<f32>
// CHECK-NEXT: %[[sz_bytes:.*]] = llvm.ptrtoint %[[gep]] : !llvm.ptr<f32> to i64
-// CHECK-NEXT: llvm.call @_mlir_alloc(%[[sz_bytes]]) : (i64) -> !llvm.ptr<i8>
+// CHECK-NEXT: llvm.call @malloc(%[[sz_bytes]]) : (i64) -> !llvm.ptr<i8>
// CHECK-NEXT: llvm.bitcast %{{.*}} : !llvm.ptr<i8> to !llvm.ptr<f32>
// CHECK-NEXT: llvm.mlir.undef : !llvm.struct<(ptr<f32>, ptr<f32>, i64, array<3 x i64>, array<3 x i64>)>
// CHECK-NEXT: llvm.insertvalue %{{.*}}, %{{.*}}[0] : !llvm.struct<(ptr<f32>, ptr<f32>, i64, array<3 x i64>, array<3 x i64>)>
@@ -37,7 +37,7 @@ func.func @mixed_alloc(%arg0: index, %arg1: index) -> memref<?x42x?xf32> {
func.func @mixed_dealloc(%arg0: memref<?x42x?xf32>) {
// CHECK: %[[ptr:.*]] = llvm.extractvalue %{{.*}}[0] : !llvm.struct<(ptr<f32>, ptr<f32>, i64, array<3 x i64>, array<3 x i64>)>
// CHECK-NEXT: %[[ptri8:.*]] = llvm.bitcast %[[ptr]] : !llvm.ptr<f32> to !llvm.ptr<i8>
-// CHECK-NEXT: llvm.call @_mlir_free(%[[ptri8]]) : (!llvm.ptr<i8>) -> ()
+// CHECK-NEXT: llvm.call @free(%[[ptri8]]) : (!llvm.ptr<i8>) -> ()
memref.dealloc %arg0 : memref<?x42x?xf32>
return
}
@@ -54,7 +54,7 @@ func.func @dynamic_alloc(%arg0: index, %arg1: index) -> memref<?x?xf32> {
// CHECK-NEXT: %[[null:.*]] = llvm.mlir.null : !llvm.ptr<f32>
// CHECK-NEXT: %[[gep:.*]] = llvm.getelementptr %[[null]][%[[sz]]] : (!llvm.ptr<f32>, i64) -> !llvm.ptr<f32>
// CHECK-NEXT: %[[sz_bytes:.*]] = llvm.ptrtoint %[[gep]] : !llvm.ptr<f32> to i64
-// CHECK-NEXT: llvm.call @_mlir_alloc(%[[sz_bytes]]) : (i64) -> !llvm.ptr<i8>
+// CHECK-NEXT: llvm.call @malloc(%[[sz_bytes]]) : (i64) -> !llvm.ptr<i8>
// CHECK-NEXT: llvm.bitcast %{{.*}} : !llvm.ptr<i8> to !llvm.ptr<f32>
// CHECK-NEXT: llvm.mlir.undef : !llvm.struct<(ptr<f32>, ptr<f32>, i64, array<2 x i64>, array<2 x i64>)>
// CHECK-NEXT: llvm.insertvalue %{{.*}}, %{{.*}}[0] : !llvm.struct<(ptr<f32>, ptr<f32>, i64, array<2 x i64>, array<2 x i64>)>
@@ -110,7 +110,7 @@ func.func @dynamic_alloca(%arg0: index, %arg1: index) -> memref<?x?xf32> {
func.func @dynamic_dealloc(%arg0: memref<?x?xf32>) {
// CHECK: %[[ptr:.*]] = llvm.extractvalue %{{.*}}[0] : !llvm.struct<(ptr<f32>, ptr<f32>, i64, array<2 x i64>, array<2 x i64>)>
// CHECK-NEXT: %[[ptri8:.*]] = llvm.bitcast %[[ptr]] : !llvm.ptr<f32> to !llvm.ptr<i8>
-// CHECK-NEXT: llvm.call @_mlir_free(%[[ptri8]]) : (!llvm.ptr<i8>) -> ()
+// CHECK-NEXT: llvm.call @free(%[[ptri8]]) : (!llvm.ptr<i8>) -> ()
memref.dealloc %arg0 : memref<?x?xf32>
return
}
@@ -128,24 +128,24 @@ func.func @stdlib_aligned_alloc(%N : index) -> memref<32x18xf32> {
// ALIGNED-ALLOC-NEXT: %[[gep:.*]] = llvm.getelementptr %[[null]][%[[num_elems]]] : (!llvm.ptr<f32>, i64) -> !llvm.ptr<f32>
// ALIGNED-ALLOC-NEXT: %[[bytes:.*]] = llvm.ptrtoint %[[gep]] : !llvm.ptr<f32> to i64
// ALIGNED-ALLOC-NEXT: %[[alignment:.*]] = llvm.mlir.constant(32 : index) : i64
-// ALIGNED-ALLOC-NEXT: %[[allocated:.*]] = llvm.call @_mlir_aligned_alloc(%[[alignment]], %[[bytes]]) : (i64, i64) -> !llvm.ptr<i8>
+// ALIGNED-ALLOC-NEXT: %[[allocated:.*]] = llvm.call @aligned_alloc(%[[alignment]], %[[bytes]]) : (i64, i64) -> !llvm.ptr<i8>
// ALIGNED-ALLOC-NEXT: llvm.bitcast %[[allocated]] : !llvm.ptr<i8> to !llvm.ptr<f32>
%0 = memref.alloc() {alignment = 32} : memref<32x18xf32>
// Do another alloc just to test that we have a unique declaration for
// aligned_alloc.
- // ALIGNED-ALLOC: llvm.call @_mlir_aligned_alloc
+ // ALIGNED-ALLOC: llvm.call @aligned_alloc
%1 = memref.alloc() {alignment = 64} : memref<4096xf32>
// Alignment is to element type boundaries (minimum 16 bytes).
// ALIGNED-ALLOC: %[[c32:.*]] = llvm.mlir.constant(32 : index) : i64
- // ALIGNED-ALLOC-NEXT: llvm.call @_mlir_aligned_alloc(%[[c32]]
+ // ALIGNED-ALLOC-NEXT: llvm.call @aligned_alloc(%[[c32]]
%2 = memref.alloc() : memref<4096xvector<8xf32>>
// The minimum alignment is 16 bytes unless explicitly specified.
// ALIGNED-ALLOC: %[[c16:.*]] = llvm.mlir.constant(16 : index) : i64
- // ALIGNED-ALLOC-NEXT: llvm.call @_mlir_aligned_alloc(%[[c16]],
+ // ALIGNED-ALLOC-NEXT: llvm.call @aligned_alloc(%[[c16]],
%3 = memref.alloc() : memref<4096xvector<2xf32>>
// ALIGNED-ALLOC: %[[c8:.*]] = llvm.mlir.constant(8 : index) : i64
- // ALIGNED-ALLOC-NEXT: llvm.call @_mlir_aligned_alloc(%[[c8]],
+ // ALIGNED-ALLOC-NEXT: llvm.call @aligned_alloc(%[[c8]],
%4 = memref.alloc() {alignment = 8} : memref<1024xvector<4xf32>>
// Bump the memref allocation size if its size is not a multiple of alignment.
// ALIGNED-ALLOC: %[[c32:.*]] = llvm.mlir.constant(32 : index) : i64
@@ -154,11 +154,11 @@ func.func @stdlib_aligned_alloc(%N : index) -> memref<32x18xf32> {
// ALIGNED-ALLOC-NEXT: llvm.add
// ALIGNED-ALLOC-NEXT: llvm.urem
// ALIGNED-ALLOC-NEXT: %[[SIZE_ALIGNED:.*]] = llvm.sub
- // ALIGNED-ALLOC-NEXT: llvm.call @_mlir_aligned_alloc(%[[c32]], %[[SIZE_ALIGNED]])
+ // ALIGNED-ALLOC-NEXT: llvm.call @aligned_alloc(%[[c32]], %[[SIZE_ALIGNED]])
%5 = memref.alloc() {alignment = 32} : memref<100xf32>
// Bump alignment to the next power of two if it isn't.
// ALIGNED-ALLOC: %[[c128:.*]] = llvm.mlir.constant(128 : index) : i64
- // ALIGNED-ALLOC: llvm.call @_mlir_aligned_alloc(%[[c128]]
+ // ALIGNED-ALLOC: llvm.call @aligned_alloc(%[[c128]]
%6 = memref.alloc(%N) : memref<?xvector<18xf32>>
return %0 : memref<32x18xf32>
}
@@ -551,7 +551,7 @@ func.func @memref_of_memref() {
// ALIGNED-ALLOC: llvm.mlir.constant(64 : index)
// Check that the types are converted as expected.
- // ALIGNED-ALLOC: llvm.call @_mlir_aligned_alloc
+ // ALIGNED-ALLOC: llvm.call @aligned_alloc
// ALIGNED-ALLOC: llvm.bitcast %{{.*}} : !llvm.ptr<i8> to
// ALIGNED-ALLOC-SAME: !llvm.
// ALIGNED-ALLOC-SAME: [[INNER:ptr<struct<\(ptr<f32>, ptr<f32>, i64, array<1 x i64>, array<1 x i64>\)>>]]
@@ -576,7 +576,7 @@ module attributes { dlti.dl_spec = #dlti.dl_spec<#dlti.dl_entry<index, 32>> } {
// ALIGNED-ALLOC: llvm.mlir.constant(32 : index)
// Check that the types are converted as expected.
- // ALIGNED-ALLOC: llvm.call @_mlir_aligned_alloc
+ // ALIGNED-ALLOC: llvm.call @aligned_alloc
// ALIGNED-ALLOC: llvm.bitcast %{{.*}} : !llvm.ptr<i8> to
// ALIGNED-ALLOC-SAME: !llvm.
// ALIGNED-ALLOC-SAME: [[INNER:ptr<struct<\(ptr<f32>, ptr<f32>, i32, array<1 x i32>, array<1 x i32>\)>>]]
@@ -606,7 +606,7 @@ func.func @memref_of_memref_of_memref() {
// Static alignment should be computed as ceilPowerOf2(2 * sizeof(pointer) +
// (1 + 2 * rank) * sizeof(index) = ceilPowerOf2(2 * 8 + 3 * 8) = 64.
// ALIGNED-ALLOC: llvm.mlir.constant(64 : index)
- // ALIGNED-ALLOC: llvm.call @_mlir_aligned_alloc
+ // ALIGNED-ALLOC: llvm.call @aligned_alloc
%0 = memref.alloc() : memref<1 x memref<2 x memref<3 x f32>>>
return
}
@@ -623,7 +623,7 @@ func.func @ranked_unranked() {
// Static alignment should be computed as ceilPowerOf2(sizeof(index) +
// sizeof(pointer)) = 16.
// ALIGNED-ALLOC: llvm.mlir.constant(16 : index)
- // ALIGNED-ALLOC: llvm.call @_mlir_aligned_alloc
+ // ALIGNED-ALLOC: llvm.call @aligned_alloc
// ALIGNED-ALLOC: llvm.bitcast
// ALIGNED-ALLOC-SAME: !llvm.ptr<i8> to !llvm.[[INNER]]
%0 = memref.alloc() : memref<1 x memref<* x f32>>
diff --git a/mlir/test/Conversion/MemRefToLLVM/convert-static-memref-ops.mlir b/mlir/test/Conversion/MemRefToLLVM/convert-static-memref-ops.mlir
index 01a1499fe5901..1296f8e4881cd 100644
--- a/mlir/test/Conversion/MemRefToLLVM/convert-static-memref-ops.mlir
+++ b/mlir/test/Conversion/MemRefToLLVM/convert-static-memref-ops.mlir
@@ -6,7 +6,7 @@ func.func @zero_d_alloc() -> memref<f32> {
// CHECK: %[[null:.*]] = llvm.mlir.null : !llvm.ptr<f32>
// CHECK: %[[gep:.*]] = llvm.getelementptr %[[null]][%[[one]]] : (!llvm.ptr<f32>, i64) -> !llvm.ptr<f32>
// CHECK: %[[size_bytes:.*]] = llvm.ptrtoint %[[gep]] : !llvm.ptr<f32> to i64
-// CHECK: llvm.call @_mlir_alloc(%[[size_bytes]]) : (i64) -> !llvm.ptr<i8>
+// CHECK: llvm.call @malloc(%[[size_bytes]]) : (i64) -> !llvm.ptr<i8>
// CHECK: %[[ptr:.*]] = llvm.bitcast %{{.*}} : !llvm.ptr<i8> to !llvm.ptr<f32>
// CHECK: llvm.mlir.undef : !llvm.struct<(ptr<f32>, ptr<f32>, i64)>
// CHECK: llvm.insertvalue %[[ptr]], %{{.*}}[0] : !llvm.struct<(ptr<f32>, ptr<f32>, i64)>
@@ -26,7 +26,7 @@ func.func @zero_d_dealloc(%arg0: memref<f32>) {
// CHECK: unrealized_conversion_cast
// CHECK: %[[ptr:.*]] = llvm.extractvalue %{{.*}}[0] : !llvm.struct<(ptr<f32>, ptr<f32>, i64)>
// CHECK: %[[bc:.*]] = llvm.bitcast %[[ptr]] : !llvm.ptr<f32> to !llvm.ptr<i8>
-// CHECK: llvm.call @_mlir_free(%[[bc]]) : (!llvm.ptr<i8>) -> ()
+// CHECK: llvm.call @free(%[[bc]]) : (!llvm.ptr<i8>) -> ()
memref.dealloc %arg0 : memref<f32>
return
@@ -43,7 +43,7 @@ func.func @aligned_1d_alloc() -> memref<42xf32> {
// CHECK: %[[size_bytes:.*]] = llvm.ptrtoint %[[gep]] : !llvm.ptr<f32> to i64
// CHECK: %[[alignment:.*]] = llvm.mlir.constant(8 : index) : i64
// CHECK: %[[allocsize:.*]] = llvm.add %[[size_bytes]], %[[alignment]] : i64
-// CHECK: %[[allocated:.*]] = llvm.call @_mlir_alloc(%[[allocsize]]) : (i64) -> !llvm.ptr<i8>
+// CHECK: %[[allocated:.*]] = llvm.call @malloc(%[[allocsize]]) : (i64) -> !llvm.ptr<i8>
// CHECK: %[[ptr:.*]] = llvm.bitcast %{{.*}} : !llvm.ptr<i8> to !llvm.ptr<f32>
// CHECK: %[[allocatedAsInt:.*]] = llvm.ptrtoint %[[ptr]] : !llvm.ptr<f32> to i64
// CHECK: %[[one_1:.*]] = llvm.mlir.constant(1 : index) : i64
@@ -69,7 +69,7 @@ func.func @static_alloc() -> memref<32x18xf32> {
// CHECK: %[[null:.*]] = llvm.mlir.null : !llvm.ptr<f32>
// CHECK: %[[gep:.*]] = llvm.getelementptr %[[null]][%[[num_elems]]] : (!llvm.ptr<f32>, i64) -> !llvm.ptr<f32>
// CHECK: %[[size_bytes:.*]] = llvm.ptrtoint %[[gep]] : !llvm.ptr<f32> to i64
-// CHECK: %[[allocated:.*]] = llvm.call @_mlir_alloc(%[[size_bytes]]) : (i64) -> !llvm.ptr<i8>
+// CHECK: %[[allocated:.*]] = llvm.call @malloc(%[[size_bytes]]) : (i64) -> !llvm.ptr<i8>
// CHECK: llvm.bitcast %[[allocated]] : !llvm.ptr<i8> to !llvm.ptr<f32>
%0 = memref.alloc() : memref<32x18xf32>
return %0 : memref<32x18xf32>
@@ -106,7 +106,7 @@ func.func @static_alloca() -> memref<32x18xf32> {
func.func @static_dealloc(%static: memref<10x8xf32>) {
// CHECK: %[[ptr:.*]] = llvm.extractvalue %{{.*}}[0] : !llvm.struct<(ptr<f32>, ptr<f32>, i64, array<2 x i64>, array<2 x i64>)>
// CHECK: %[[bc:.*]] = llvm.bitcast %[[ptr]] : !llvm.ptr<f32> to !llvm.ptr<i8>
-// CHECK: llvm.call @_mlir_free(%[[bc]]) : (!llvm.ptr<i8>) -> ()
+// CHECK: llvm.call @free(%[[bc]]) : (!llvm.ptr<i8>) -> ()
memref.dealloc %static : memref<10x8xf32>
return
}
@@ -206,7 +206,7 @@ module attributes { dlti.dl_spec = #dlti.dl_spec<#dlti.dl_entry<index, 32>> } {
// CHECK: llvm.ptrtoint %{{.*}} : !llvm.ptr<{{.*}}> to i32
// CHECK: llvm.ptrtoint %{{.*}} : !llvm.ptr<{{.*}}> to i32
// CHECK: llvm.add %{{.*}} : i32
- // CHECK: llvm.call @_mlir_alloc(%{{.*}}) : (i32) -> !llvm.ptr
+ // CHECK: llvm.call @malloc(%{{.*}}) : (i32) -> !llvm.ptr
// CHECK: llvm.ptrtoint %{{.*}} : !llvm.ptr<{{.*}}> to i32
// CHECK: llvm.sub {{.*}} : i32
// CHECK: llvm.add {{.*}} : i32
diff --git a/mlir/test/Target/LLVMIR/llvmir.mlir b/mlir/test/Target/LLVMIR/llvmir.mlir
index 1668da4b83ee7..9a30a9d4a719a 100644
--- a/mlir/test/Target/LLVMIR/llvmir.mlir
+++ b/mlir/test/Target/LLVMIR/llvmir.mlir
@@ -147,9 +147,9 @@ llvm.mlir.global internal constant @sectionvar("teststring") {section = ".mysec
// inserted before other functions in the module.
//
-// CHECK: declare ptr @_mlir_alloc(i64)
-llvm.func @_mlir_alloc(i64) -> !llvm.ptr<i8>
-// CHECK: declare void @_mlir_free(ptr)
+// CHECK: declare ptr @malloc(i64)
+llvm.func @malloc(i64) -> !llvm.ptr<i8>
+// CHECK: declare void @free(ptr)
//
@@ -499,7 +499,7 @@ llvm.func @dso_local_func() attributes {dso_local} {
// CHECK-LABEL: define void @memref_alloc()
llvm.func @memref_alloc() {
-// CHECK-NEXT: %{{[0-9]+}} = call ptr @_mlir_alloc(i64 400)
+// CHECK-NEXT: %{{[0-9]+}} = call ptr @malloc(i64 400)
// CHECK-NEXT: %{{[0-9]+}} = insertvalue { ptr } undef, ptr %{{[0-9]+}}, 0
%0 = llvm.mlir.constant(10 : index) : i64
%1 = llvm.mlir.constant(10 : index) : i64
@@ -507,7 +507,7 @@ llvm.func @memref_alloc() {
%3 = llvm.mlir.undef : !llvm.struct<(ptr<f32>)>
%4 = llvm.mlir.constant(4 : index) : i64
%5 = llvm.mul %2, %4 : i64
- %6 = llvm.call @_mlir_alloc(%5) : (i64) -> !llvm.ptr<i8>
+ %6 = llvm.call @malloc(%5) : (i64) -> !llvm.ptr<i8>
%7 = llvm.bitcast %6 : !llvm.ptr<i8> to !llvm.ptr<f32>
%8 = llvm.insertvalue %7, %3[0] : !llvm.struct<(ptr<f32>)>
// CHECK-NEXT: ret void
@@ -520,13 +520,13 @@ llvm.func @get_index() -> i64
// CHECK-LABEL: define void @store_load_static()
llvm.func @store_load_static() {
^bb0:
-// CHECK-NEXT: %{{[0-9]+}} = call ptr @_mlir_alloc(i64 40)
+// CHECK-NEXT: %{{[0-9]+}} = call ptr @malloc(i64 40)
// CHECK-NEXT: %{{[0-9]+}} = insertvalue { ptr } undef, ptr %{{[0-9]+}}, 0
%0 = llvm.mlir.constant(10 : index) : i64
%1 = llvm.mlir.undef : !llvm.struct<(ptr<f32>)>
%2 = llvm.mlir.constant(4 : index) : i64
%3 = llvm.mul %0, %2 : i64
- %4 = llvm.call @_mlir_alloc(%3) : (i64) -> !llvm.ptr<i8>
+ %4 = llvm.call @malloc(%3) : (i64) -> !llvm.ptr<i8>
%5 = llvm.bitcast %4 : !llvm.ptr<i8> to !llvm.ptr<f32>
%6 = llvm.insertvalue %5, %1[0] : !llvm.struct<(ptr<f32>)>
%7 = llvm.mlir.constant(1.000000e+00 : f32) : f32
@@ -587,13 +587,13 @@ llvm.func @store_load_static() {
// CHECK-LABEL: define void @store_load_dynamic(i64 {{%.*}})
llvm.func @store_load_dynamic(%arg0: i64) {
// CHECK-NEXT: %{{[0-9]+}} = mul i64 %{{[0-9]+}}, 4
-// CHECK-NEXT: %{{[0-9]+}} = call ptr @_mlir_alloc(i64 %{{[0-9]+}})
+// CHECK-NEXT: %{{[0-9]+}} = call ptr @malloc(i64 %{{[0-9]+}})
// CHECK-NEXT: %{{[0-9]+}} = insertvalue { ptr, i64 } undef, ptr %{{[0-9]+}}, 0
// CHECK-NEXT: %{{[0-9]+}} = insertvalue { ptr, i64 } %{{[0-9]+}}, i64 %{{[0-9]+}}, 1
%0 = llvm.mlir.undef : !llvm.struct<(ptr<f32>, i64)>
%1 = llvm.mlir.constant(4 : index) : i64
%2 = llvm.mul %arg0, %1 : i64
- %3 = llvm.call @_mlir_alloc(%2) : (i64) -> !llvm.ptr<i8>
+ %3 = llvm.call @malloc(%2) : (i64) -> !llvm.ptr<i8>
%4 = llvm.bitcast %3 : !llvm.ptr<i8> to !llvm.ptr<f32>
%5 = llvm.insertvalue %4, %0[0] : !llvm.struct<(ptr<f32>, i64)>
%6 = llvm.insertvalue %arg0, %5[1] : !llvm.struct<(ptr<f32>, i64)>
@@ -660,7 +660,7 @@ llvm.func @store_load_mixed(%arg0: i64) {
// CHECK-NEXT: %{{[0-9]+}} = mul i64 %{{[0-9]+}}, 4
// CHECK-NEXT: %{{[0-9]+}} = mul i64 %{{[0-9]+}}, 10
// CHECK-NEXT: %{{[0-9]+}} = mul i64 %{{[0-9]+}}, 4
-// CHECK-NEXT: %{{[0-9]+}} = call ptr @_mlir_alloc(i64 %{{[0-9]+}})
+// CHECK-NEXT: %{{[0-9]+}} = call ptr @malloc(i64 %{{[0-9]+}})
// CHECK-NEXT: %{{[0-9]+}} = insertvalue { ptr, i64, i64 } undef, ptr %{{[0-9]+}}, 0
// CHECK-NEXT: %{{[0-9]+}} = insertvalue { ptr, i64, i64 } %{{[0-9]+}}, i64 %{{[0-9]+}}, 1
// CHECK-NEXT: %{{[0-9]+}} = insertvalue { ptr, i64, i64 } %{{[0-9]+}}, i64 10, 2
@@ -672,7 +672,7 @@ llvm.func @store_load_mixed(%arg0: i64) {
%6 = llvm.mlir.undef : !llvm.struct<(ptr<f32>, i64, i64)>
%7 = llvm.mlir.constant(4 : index) : i64
%8 = llvm.mul %5, %7 : i64
- %9 = llvm.call @_mlir_alloc(%8) : (i64) -> !llvm.ptr<i8>
+ %9 = llvm.call @malloc(%8) : (i64) -> !llvm.ptr<i8>
%10 = llvm.bitcast %9 : !llvm.ptr<i8> to !llvm.ptr<f32>
%11 = llvm.insertvalue %10, %6[0] : !llvm.struct<(ptr<f32>, i64, i64)>
%12 = llvm.insertvalue %arg0, %11[1] : !llvm.struct<(ptr<f32>, i64, i64)>
@@ -773,7 +773,7 @@ llvm.func @memref_args_rets(%arg0: !llvm.struct<(ptr<f32>)>, %arg1: !llvm.struct
llvm.store %2, %14 : !llvm.ptr<f32>
// CHECK-NEXT: %{{[0-9]+}} = mul i64 10, %{{[0-9]+}}
// CHECK-NEXT: %{{[0-9]+}} = mul i64 %{{[0-9]+}}, 4
-// CHECK-NEXT: %{{[0-9]+}} = call ptr @_mlir_alloc(i64 %{{[0-9]+}})
+// CHECK-NEXT: %{{[0-9]+}} = call ptr @malloc(i64 %{{[0-9]+}})
// CHECK-NEXT: %{{[0-9]+}} = insertvalue { ptr, i64 } undef, ptr %{{[0-9]+}}, 0
// CHECK-NEXT: %{{[0-9]+}} = insertvalue { ptr, i64 } %{{[0-9]+}}, i64 %{{[0-9]+}}, 1
%15 = llvm.mlir.constant(10 : index) : i64
@@ -781,7 +781,7 @@ llvm.func @memref_args_rets(%arg0: !llvm.struct<(ptr<f32>)>, %arg1: !llvm.struct
%17 = llvm.mlir.undef : !llvm.struct<(ptr<f32>, i64)>
%18 = llvm.mlir.constant(4 : index) : i64
%19 = llvm.mul %16, %18 : i64
- %20 = llvm.call @_mlir_alloc(%19) : (i64) -> !llvm.ptr<i8>
+ %20 = llvm.call @malloc(%19) : (i64) -> !llvm.ptr<i8>
%21 = llvm.bitcast %20 : !llvm.ptr<i8> to !llvm.ptr<f32>
%22 = llvm.insertvalue %21, %17[0] : !llvm.struct<(ptr<f32>, i64)>
%23 = llvm.insertvalue %1, %22[1] : !llvm.struct<(ptr<f32>, i64)>
diff --git a/mlir/test/mlir-cpu-runner/bare-ptr-call-conv.mlir b/mlir/test/mlir-cpu-runner/bare-ptr-call-conv.mlir
index 285b9856c749b..3168b5829c116 100644
--- a/mlir/test/mlir-cpu-runner/bare-ptr-call-conv.mlir
+++ b/mlir/test/mlir-cpu-runner/bare-ptr-call-conv.mlir
@@ -1,6 +1,4 @@
-// RUN: mlir-opt %s -pass-pipeline="func.func(convert-scf-to-cf,convert-arith-to-llvm),convert-memref-to-llvm,convert-func-to-llvm{use-bare-ptr-memref-call-conv=1}" -reconcile-unrealized-casts \
-// RUN: | mlir-cpu-runner -shared-libs=%mlir_runner_utils_dir/libmlir_runner_utils%shlibext,%linalg_test_lib_dir/libmlir_c_runner_utils%shlibext -entry-point-result=void \
-// RUN: | FileCheck %s
+// RUN: mlir-opt %s -pass-pipeline="func.func(convert-scf-to-cf,convert-arith-to-llvm),convert-memref-to-llvm,convert-func-to-llvm{use-bare-ptr-memref-call-conv=1}" -reconcile-unrealized-casts | mlir-cpu-runner -shared-libs=%linalg_test_lib_dir/libmlir_c_runner_utils%shlibext -entry-point-result=void | FileCheck %s
// Verify bare pointer memref calling convention. `simple_add1_add2_test`
// gets two 2xf32 memrefs, adds 1.0f to the first one and 2.0f to the second
@@ -28,8 +26,8 @@ func.func @simple_add1_add2_test(%arg0: memref<2xf32>, %arg1: memref<2xf32>) {
}
// External declarations.
-llvm.func @_mlir_alloc(i64) -> !llvm.ptr<i8>
-llvm.func @_mlir_free(!llvm.ptr<i8>)
+llvm.func @malloc(i64) -> !llvm.ptr<i8>
+llvm.func @free(!llvm.ptr<i8>)
func.func private @printF32(%arg0: f32)
func.func private @printComma()
func.func private @printNewline()
diff --git a/mlir/test/mlir-cpu-runner/sgemm-naive-codegen.mlir b/mlir/test/mlir-cpu-runner/sgemm-naive-codegen.mlir
index 488bcec50597d..57ca74f870bd4 100644
--- a/mlir/test/mlir-cpu-runner/sgemm-naive-codegen.mlir
+++ b/mlir/test/mlir-cpu-runner/sgemm-naive-codegen.mlir
@@ -1,6 +1,4 @@
-// RUN: mlir-opt -pass-pipeline="func.func(convert-linalg-to-loops,lower-affine,convert-scf-to-cf,convert-arith-to-llvm),convert-vector-to-llvm,convert-memref-to-llvm,convert-func-to-llvm,reconcile-unrealized-casts" %s \
-// RUN: | mlir-cpu-runner -O3 -e main -entry-point-result=void -shared-libs=%mlir_runner_utils_dir/libmlir_runner_utils%shlibext,%mlir_runner_utils_dir/libmlir_c_runner_utils%shlibext \
-// RUN: | FileCheck %s
+// RUN: mlir-opt -pass-pipeline="func.func(convert-linalg-to-loops,lower-affine,convert-scf-to-cf,convert-arith-to-llvm),convert-vector-to-llvm,convert-memref-to-llvm,convert-func-to-llvm,reconcile-unrealized-casts" %s | mlir-cpu-runner -O3 -e main -entry-point-result=void -shared-libs=%mlir_runner_utils_dir/libmlir_c_runner_utils%shlibext | FileCheck %s
func.func @main() {
%A = memref.alloc() : memref<16x16xf32>
diff --git a/mlir/test/mlir-cpu-runner/simple.mlir b/mlir/test/mlir-cpu-runner/simple.mlir
index 5bf7c10e5db32..72d241439d06e 100644
--- a/mlir/test/mlir-cpu-runner/simple.mlir
+++ b/mlir/test/mlir-cpu-runner/simple.mlir
@@ -1,36 +1,22 @@
-// RUN: mlir-cpu-runner %s \
-// RUN: -shared-libs=%mlir_runner_utils_dir/libmlir_runner_utils%shlibext,%mlir_runner_utils_dir/libmlir_c_runner_utils%shlibext \
-// RUN: | FileCheck %s
-
-// RUN: mlir-cpu-runner %s -e foo \
-// RUN: -shared-libs=%mlir_runner_utils_dir/libmlir_runner_utils%shlibext,%mlir_runner_utils_dir/libmlir_c_runner_utils%shlibext \
-// RUN: | FileCheck -check-prefix=NOMAIN %s
-
-// RUN: mlir-cpu-runner %s --entry-point-result=i32 -e int32_main \
-// RUN: -shared-libs=%mlir_runner_utils_dir/libmlir_runner_utils%shlibext,%mlir_runner_utils_dir/libmlir_c_runner_utils%shlibext \
-// RUN: | FileCheck -check-prefix=INT32MAIN %s
-
-// RUN: mlir-cpu-runner %s --entry-point-result=i64 -e int64_main \
-// RUN: -shared-libs=%mlir_runner_utils_dir/libmlir_runner_utils%shlibext,%mlir_runner_utils_dir/libmlir_c_runner_utils%shlibext \
-// RUN: | FileCheck -check-prefix=INT64MAIN %s
-
-// RUN: mlir-cpu-runner %s -O3 \
-// RUN: -shared-libs=%mlir_runner_utils_dir/libmlir_runner_utils%shlibext,%mlir_runner_utils_dir/libmlir_c_runner_utils%shlibext \
-// RUN: | FileCheck %s
+// RUN: mlir-cpu-runner %s | FileCheck %s
+// RUN: mlir-cpu-runner %s -e foo | FileCheck -check-prefix=NOMAIN %s
+// RUN: mlir-cpu-runner %s --entry-point-result=i32 -e int32_main | FileCheck -check-prefix=INT32MAIN %s
+// RUN: mlir-cpu-runner %s --entry-point-result=i64 -e int64_main | FileCheck -check-prefix=INT64MAIN %s
+// RUN: mlir-cpu-runner %s -O3 | FileCheck %s
// RUN: cp %s %t
-// RUN: mlir-cpu-runner %t -dump-object-file -shared-libs=%mlir_runner_utils_dir/libmlir_runner_utils%shlibext,%mlir_runner_utils_dir/libmlir_c_runner_utils%shlibext | FileCheck %t
+// RUN: mlir-cpu-runner %t -dump-object-file | FileCheck %t
// RUN: ls %t.o
// RUN: rm %t.o
-// RUN: mlir-cpu-runner %s -dump-object-file -object-filename=%T/test.o -shared-libs=%mlir_runner_utils_dir/libmlir_runner_utils%shlibext,%mlir_runner_utils_dir/libmlir_c_runner_utils%shlibext | FileCheck %s
+// RUN: mlir-cpu-runner %s -dump-object-file -object-filename=%T/test.o | FileCheck %s
// RUN: ls %T/test.o
// RUN: rm %T/test.o
// Declarations of C library functions.
llvm.func @fabsf(f32) -> f32
-llvm.func @_mlir_alloc(i64) -> !llvm.ptr<i8>
-llvm.func @_mlir_free(!llvm.ptr<i8>)
+llvm.func @malloc(i64) -> !llvm.ptr<i8>
+llvm.func @free(!llvm.ptr<i8>)
// Check that a simple function with a nested call works.
llvm.func @main() -> f32 {
@@ -40,16 +26,16 @@ llvm.func @main() -> f32 {
}
// CHECK: 4.200000e+02
-// Helper typed functions wrapping calls to "_mlir_alloc" and "_mlir_free".
+// Helper typed functions wrapping calls to "malloc" and "free".
llvm.func @allocation() -> !llvm.ptr<f32> {
%0 = llvm.mlir.constant(4 : index) : i64
- %1 = llvm.call @_mlir_alloc(%0) : (i64) -> !llvm.ptr<i8>
+ %1 = llvm.call @malloc(%0) : (i64) -> !llvm.ptr<i8>
%2 = llvm.bitcast %1 : !llvm.ptr<i8> to !llvm.ptr<f32>
llvm.return %2 : !llvm.ptr<f32>
}
llvm.func @deallocation(%arg0: !llvm.ptr<f32>) {
%0 = llvm.bitcast %arg0 : !llvm.ptr<f32> to !llvm.ptr<i8>
- llvm.call @_mlir_free(%0) : (!llvm.ptr<i8>) -> ()
+ llvm.call @free(%0) : (!llvm.ptr<i8>) -> ()
llvm.return
}
More information about the Mlir-commits
mailing list