Files
clang-p2996/flang/lib/Optimizer/Builder/LowLevelIntrinsics.cpp
Asher Mancinelli 1433c3e997 [flang] Remove dead functions for getting LLVM intrinsics (#137743)
In cleaning up LowLevelIntrinsics I found some uncalled functions. We
would like to remove direct calls to llvm instructions wherever possible
to make it easier on consumers of our IR to match LLVM intrinsics, so if
this code is needed again we should use the op from the llvm dialect
instead anyways.
2025-04-29 06:47:13 -07:00

113 lines
4.6 KiB
C++

//===-- LowLevelIntrinsics.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
//
//===----------------------------------------------------------------------===//
//
// Coding style: https://mlir.llvm.org/getting_started/DeveloperGuide/
//
//===----------------------------------------------------------------------===//
//
// Low level intrinsic functions.
//
// These include LLVM intrinsic calls and standard C library calls.
// Target-specific calls, such as OS functions, should be factored in other
// file(s).
//
//===----------------------------------------------------------------------===//
#include "flang/Optimizer/Builder/LowLevelIntrinsics.h"
#include "flang/Optimizer/Builder/FIRBuilder.h"
mlir::func::FuncOp fir::factory::getRealloc(fir::FirOpBuilder &builder) {
auto ptrTy = builder.getRefType(builder.getIntegerType(8));
llvm::SmallVector<mlir::Type> args = {ptrTy, builder.getI64Type()};
auto reallocTy = mlir::FunctionType::get(builder.getContext(), args, {ptrTy});
return builder.createFunction(builder.getUnknownLoc(), "realloc", reallocTy);
}
mlir::func::FuncOp
fir::factory::getLlvmGetRounding(fir::FirOpBuilder &builder) {
auto int32Ty = builder.getIntegerType(32);
auto funcTy =
mlir::FunctionType::get(builder.getContext(), std::nullopt, {int32Ty});
return builder.createFunction(builder.getUnknownLoc(), "llvm.get.rounding",
funcTy);
}
mlir::func::FuncOp
fir::factory::getLlvmSetRounding(fir::FirOpBuilder &builder) {
auto int32Ty = builder.getIntegerType(32);
auto funcTy =
mlir::FunctionType::get(builder.getContext(), {int32Ty}, std::nullopt);
return builder.createFunction(builder.getUnknownLoc(), "llvm.set.rounding",
funcTy);
}
mlir::func::FuncOp
fir::factory::getLlvmInitTrampoline(fir::FirOpBuilder &builder) {
auto ptrTy = builder.getRefType(builder.getIntegerType(8));
auto funcTy = mlir::FunctionType::get(builder.getContext(),
{ptrTy, ptrTy, ptrTy}, std::nullopt);
return builder.createFunction(builder.getUnknownLoc(), "llvm.init.trampoline",
funcTy);
}
mlir::func::FuncOp
fir::factory::getLlvmAdjustTrampoline(fir::FirOpBuilder &builder) {
auto ptrTy = builder.getRefType(builder.getIntegerType(8));
auto funcTy = mlir::FunctionType::get(builder.getContext(), {ptrTy}, {ptrTy});
return builder.createFunction(builder.getUnknownLoc(),
"llvm.adjust.trampoline", funcTy);
}
mlir::func::FuncOp fir::factory::getFeclearexcept(fir::FirOpBuilder &builder) {
auto int32Ty = builder.getIntegerType(32);
auto funcTy =
mlir::FunctionType::get(builder.getContext(), {int32Ty}, {int32Ty});
return builder.createFunction(builder.getUnknownLoc(), "feclearexcept",
funcTy);
}
mlir::func::FuncOp
fir::factory::getFedisableexcept(fir::FirOpBuilder &builder) {
auto int32Ty = builder.getIntegerType(32);
auto funcTy =
mlir::FunctionType::get(builder.getContext(), {int32Ty}, {int32Ty});
return builder.createFunction(builder.getUnknownLoc(), "fedisableexcept",
funcTy);
}
mlir::func::FuncOp fir::factory::getFeenableexcept(fir::FirOpBuilder &builder) {
auto int32Ty = builder.getIntegerType(32);
auto funcTy =
mlir::FunctionType::get(builder.getContext(), {int32Ty}, {int32Ty});
return builder.createFunction(builder.getUnknownLoc(), "feenableexcept",
funcTy);
}
mlir::func::FuncOp fir::factory::getFegetexcept(fir::FirOpBuilder &builder) {
auto int32Ty = builder.getIntegerType(32);
auto funcTy =
mlir::FunctionType::get(builder.getContext(), std::nullopt, {int32Ty});
return builder.createFunction(builder.getUnknownLoc(), "fegetexcept", funcTy);
}
mlir::func::FuncOp fir::factory::getFeraiseexcept(fir::FirOpBuilder &builder) {
auto int32Ty = builder.getIntegerType(32);
auto funcTy =
mlir::FunctionType::get(builder.getContext(), {int32Ty}, {int32Ty});
return builder.createFunction(builder.getUnknownLoc(), "feraiseexcept",
funcTy);
}
mlir::func::FuncOp fir::factory::getFetestexcept(fir::FirOpBuilder &builder) {
auto int32Ty = builder.getIntegerType(32);
auto funcTy =
mlir::FunctionType::get(builder.getContext(), {int32Ty}, {int32Ty});
return builder.createFunction(builder.getUnknownLoc(), "fetestexcept",
funcTy);
}