[flang-commits] [flang] f1c84d0 - [flang][NFC] Add TODOs for KIND = 2
Valentin Clement via flang-commits
flang-commits at lists.llvm.org
Mon Jun 13 09:45:41 PDT 2022
Author: Valentin Clement
Date: 2022-06-13T18:45:32+02:00
New Revision: f1c84d0ff0510d360d261ff13c7ac1014657e19e
URL: https://github.com/llvm/llvm-project/commit/f1c84d0ff0510d360d261ff13c7ac1014657e19e
DIFF: https://github.com/llvm/llvm-project/commit/f1c84d0ff0510d360d261ff13c7ac1014657e19e.diff
LOG: [flang][NFC] Add TODOs for KIND = 2
Add TODO for KIND=2 so the user is notified correctly.
This patch is part of the upstreaming effort from fir-dev branch.
Reviewed By: jeanPerier, PeteSteinfeld
Differential Revision: https://reviews.llvm.org/D127619
Co-authored-by: Peter Steinfeld <psteinfeld at nvidia.com>
Added:
Modified:
flang/lib/Optimizer/Builder/Runtime/Numeric.cpp
Removed:
################################################################################
diff --git a/flang/lib/Optimizer/Builder/Runtime/Numeric.cpp b/flang/lib/Optimizer/Builder/Runtime/Numeric.cpp
index dc7ca80278f1..f8f88a8a31ff 100644
--- a/flang/lib/Optimizer/Builder/Runtime/Numeric.cpp
+++ b/flang/lib/Optimizer/Builder/Runtime/Numeric.cpp
@@ -11,6 +11,7 @@
#include "flang/Optimizer/Builder/Character.h"
#include "flang/Optimizer/Builder/FIRBuilder.h"
#include "flang/Optimizer/Builder/Runtime/RTBuilder.h"
+#include "flang/Optimizer/Builder/Todo.h"
#include "flang/Runtime/numeric.h"
#include "mlir/Dialect/Func/IR/FuncOps.h"
@@ -212,7 +213,9 @@ mlir::Value fir::runtime::genExponent(fir::FirOpBuilder &builder,
mlir::func::FuncOp func;
mlir::Type fltTy = x.getType();
- if (fltTy.isF32()) {
+ if (fltTy.isF16()) {
+ TODO(loc, "support for REAL with KIND = 2 in EXPONENT");
+ } else if (fltTy.isF32()) {
if (resultType.isInteger(32))
func = fir::runtime::getRuntimeFunc<mkRTKey(Exponent4_4)>(loc, builder);
else if (resultType.isInteger(64))
@@ -233,7 +236,7 @@ mlir::Value fir::runtime::genExponent(fir::FirOpBuilder &builder,
else if (resultType.isInteger(64))
func = fir::runtime::getRuntimeFunc<ForcedExponent16_8>(loc, builder);
} else
- fir::emitFatalError(loc, "unsupported real kind in Exponent lowering");
+ fir::emitFatalError(loc, "unsupported REAL KIND in EXPONENT");
auto funcTy = func.getFunctionType();
llvm::SmallVector<mlir::Value> args = {
@@ -247,8 +250,9 @@ mlir::Value fir::runtime::genFraction(fir::FirOpBuilder &builder,
mlir::Location loc, mlir::Value x) {
mlir::func::FuncOp func;
mlir::Type fltTy = x.getType();
-
- if (fltTy.isF32())
+ if (fltTy.isF16())
+ TODO(loc, "support for REAL with KIND = 2 in FRACTION");
+ else if (fltTy.isF32())
func = fir::runtime::getRuntimeFunc<mkRTKey(Fraction4)>(loc, builder);
else if (fltTy.isF64())
func = fir::runtime::getRuntimeFunc<mkRTKey(Fraction8)>(loc, builder);
@@ -257,7 +261,7 @@ mlir::Value fir::runtime::genFraction(fir::FirOpBuilder &builder,
else if (fltTy.isF128())
func = fir::runtime::getRuntimeFunc<ForcedFraction16>(loc, builder);
else
- fir::emitFatalError(loc, "unsupported real kind in Fraction lowering");
+ fir::emitFatalError(loc, "unsupported real kind in FRACTION");
auto funcTy = func.getFunctionType();
llvm::SmallVector<mlir::Value> args = {
@@ -273,7 +277,9 @@ mlir::Value fir::runtime::genNearest(fir::FirOpBuilder &builder,
mlir::func::FuncOp func;
mlir::Type fltTy = x.getType();
- if (fltTy.isF32())
+ if (fltTy.isF16())
+ TODO(loc, "support for REAL with KIND = 2 in NEAREST");
+ else if (fltTy.isF32())
func = fir::runtime::getRuntimeFunc<mkRTKey(Nearest4)>(loc, builder);
else if (fltTy.isF64())
func = fir::runtime::getRuntimeFunc<mkRTKey(Nearest8)>(loc, builder);
@@ -282,7 +288,7 @@ mlir::Value fir::runtime::genNearest(fir::FirOpBuilder &builder,
else if (fltTy.isF128())
func = fir::runtime::getRuntimeFunc<ForcedNearest16>(loc, builder);
else
- fir::emitFatalError(loc, "unsupported REAL kind in Nearest lowering");
+ fir::emitFatalError(loc, "unsupported REAL kind in NEAREST");
auto funcTy = func.getFunctionType();
@@ -308,7 +314,9 @@ mlir::Value fir::runtime::genRRSpacing(fir::FirOpBuilder &builder,
mlir::func::FuncOp func;
mlir::Type fltTy = x.getType();
- if (fltTy.isF32())
+ if (fltTy.isF16())
+ TODO(loc, "support for REAL with KIND = 2 in RRSPACING");
+ else if (fltTy.isF32())
func = fir::runtime::getRuntimeFunc<mkRTKey(RRSpacing4)>(loc, builder);
else if (fltTy.isF64())
func = fir::runtime::getRuntimeFunc<mkRTKey(RRSpacing8)>(loc, builder);
@@ -317,7 +325,7 @@ mlir::Value fir::runtime::genRRSpacing(fir::FirOpBuilder &builder,
else if (fltTy.isF128())
func = fir::runtime::getRuntimeFunc<ForcedRRSpacing16>(loc, builder);
else
- fir::emitFatalError(loc, "unsupported real kind in RRSpacing lowering");
+ fir::emitFatalError(loc, "unsupported real kind in RRSPACING");
auto funcTy = func.getFunctionType();
llvm::SmallVector<mlir::Value> args = {
@@ -333,7 +341,9 @@ mlir::Value fir::runtime::genScale(fir::FirOpBuilder &builder,
mlir::func::FuncOp func;
mlir::Type fltTy = x.getType();
- if (fltTy.isF32())
+ if (fltTy.isF16())
+ TODO(loc, "support for REAL with KIND = 2 in SCALE");
+ else if (fltTy.isF32())
func = fir::runtime::getRuntimeFunc<mkRTKey(Scale4)>(loc, builder);
else if (fltTy.isF64())
func = fir::runtime::getRuntimeFunc<mkRTKey(Scale8)>(loc, builder);
@@ -342,7 +352,7 @@ mlir::Value fir::runtime::genScale(fir::FirOpBuilder &builder,
else if (fltTy.isF128())
func = fir::runtime::getRuntimeFunc<ForcedScale16>(loc, builder);
else
- fir::emitFatalError(loc, "unsupported REAL kind in Scale lowering");
+ fir::emitFatalError(loc, "unsupported REAL kind in SCALE");
auto funcTy = func.getFunctionType();
auto args = fir::runtime::createArguments(builder, loc, funcTy, x, i);
@@ -357,7 +367,9 @@ mlir::Value fir::runtime::genSetExponent(fir::FirOpBuilder &builder,
mlir::func::FuncOp func;
mlir::Type fltTy = x.getType();
- if (fltTy.isF32())
+ if (fltTy.isF16())
+ TODO(loc, "support for REAL with KIND = 2 in FRACTION");
+ else if (fltTy.isF32())
func = fir::runtime::getRuntimeFunc<mkRTKey(SetExponent4)>(loc, builder);
else if (fltTy.isF64())
func = fir::runtime::getRuntimeFunc<mkRTKey(SetExponent8)>(loc, builder);
@@ -366,7 +378,7 @@ mlir::Value fir::runtime::genSetExponent(fir::FirOpBuilder &builder,
else if (fltTy.isF128())
func = fir::runtime::getRuntimeFunc<ForcedSetExponent16>(loc, builder);
else
- fir::emitFatalError(loc, "unsupported real kind in Fraction lowering");
+ fir::emitFatalError(loc, "unsupported real kind in FRACTION");
auto funcTy = func.getFunctionType();
auto args = fir::runtime::createArguments(builder, loc, funcTy, x, i);
@@ -380,7 +392,9 @@ mlir::Value fir::runtime::genSpacing(fir::FirOpBuilder &builder,
mlir::func::FuncOp func;
mlir::Type fltTy = x.getType();
- if (fltTy.isF32())
+ if (fltTy.isF16())
+ TODO(loc, "support for REAL with KIND = 2 in SPACING");
+ else if (fltTy.isF32())
func = fir::runtime::getRuntimeFunc<mkRTKey(Spacing4)>(loc, builder);
else if (fltTy.isF64())
func = fir::runtime::getRuntimeFunc<mkRTKey(Spacing8)>(loc, builder);
@@ -389,7 +403,7 @@ mlir::Value fir::runtime::genSpacing(fir::FirOpBuilder &builder,
else if (fltTy.isF128())
func = fir::runtime::getRuntimeFunc<ForcedSpacing16>(loc, builder);
else
- fir::emitFatalError(loc, "unsupported real kind in Spacing lowering");
+ fir::emitFatalError(loc, "unsupported real kind in SPACING");
auto funcTy = func.getFunctionType();
llvm::SmallVector<mlir::Value> args = {
More information about the flang-commits
mailing list