summaryrefslogtreecommitdiff
path: root/mlir/lib/Dialect/LLVMIR/IR/FunctionCallUtils.cpp
diff options
context:
space:
mode:
authorMatthias Springer <me@m-sp.org>2025-11-04 23:45:35 +0000
committerMatthias Springer <me@m-sp.org>2025-11-05 12:29:25 +0000
commitf3d28c4ffd949c6b2807d165b20184ead6445da9 (patch)
treed6c65ac461b9cf36c8d8be0c9012a63904ba3898 /mlir/lib/Dialect/LLVMIR/IR/FunctionCallUtils.cpp
parent6c640b86e6e03298385231cb7e77d2f3524bc643 (diff)
Prototype: APFloat CPU runnerusers/matthias-springer/apfloat_runner
Diffstat (limited to 'mlir/lib/Dialect/LLVMIR/IR/FunctionCallUtils.cpp')
-rw-r--r--mlir/lib/Dialect/LLVMIR/IR/FunctionCallUtils.cpp23
1 files changed, 23 insertions, 0 deletions
diff --git a/mlir/lib/Dialect/LLVMIR/IR/FunctionCallUtils.cpp b/mlir/lib/Dialect/LLVMIR/IR/FunctionCallUtils.cpp
index feaffa34897b..8ee039be6056 100644
--- a/mlir/lib/Dialect/LLVMIR/IR/FunctionCallUtils.cpp
+++ b/mlir/lib/Dialect/LLVMIR/IR/FunctionCallUtils.cpp
@@ -30,6 +30,8 @@ static constexpr llvm::StringRef kPrintF16 = "printF16";
static constexpr llvm::StringRef kPrintBF16 = "printBF16";
static constexpr llvm::StringRef kPrintF32 = "printF32";
static constexpr llvm::StringRef kPrintF64 = "printF64";
+static constexpr llvm::StringRef kPrintApFloat = "printApFloat";
+static constexpr llvm::StringRef kApFloatAddF = "APFloat_add";
static constexpr llvm::StringRef kPrintString = "printString";
static constexpr llvm::StringRef kPrintOpen = "printOpen";
static constexpr llvm::StringRef kPrintClose = "printClose";
@@ -160,6 +162,27 @@ mlir::LLVM::lookupOrCreatePrintF64Fn(OpBuilder &b, Operation *moduleOp,
LLVM::LLVMVoidType::get(moduleOp->getContext()), symbolTables);
}
+FailureOr<LLVM::LLVMFuncOp>
+mlir::LLVM::lookupOrCreateApFloatPrintFn(OpBuilder &b, Operation *moduleOp,
+ SymbolTableCollection *symbolTables) {
+ return lookupOrCreateReservedFn(
+ b, moduleOp, kPrintApFloat,
+ {IntegerType::get(moduleOp->getContext(), 32),
+ IntegerType::get(moduleOp->getContext(), 64)},
+ LLVM::LLVMVoidType::get(moduleOp->getContext()), symbolTables);
+}
+
+FailureOr<LLVM::LLVMFuncOp>
+mlir::LLVM::lookupOrCreateApFloatAddFFn(OpBuilder &b, Operation *moduleOp,
+ SymbolTableCollection *symbolTables) {
+ return lookupOrCreateReservedFn(
+ b, moduleOp, kApFloatAddF,
+ {IntegerType::get(moduleOp->getContext(), 32),
+ IntegerType::get(moduleOp->getContext(), 64),
+ IntegerType::get(moduleOp->getContext(), 64)},
+ IntegerType::get(moduleOp->getContext(), 64), symbolTables);
+}
+
static LLVM::LLVMPointerType getCharPtr(MLIRContext *context) {
return LLVM::LLVMPointerType::get(context);
}