FLANG
Numeric.h
1//===-- Numeric.h -- generate numeric intrinsics runtime calls --*- C++ -*-===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8
9#ifndef FORTRAN_OPTIMIZER_BUILDER_RUNTIME_NUMERIC_H
10#define FORTRAN_OPTIMIZER_BUILDER_RUNTIME_NUMERIC_H
11
12#include "mlir/Dialect/Func/IR/FuncOps.h"
13
14namespace fir {
15class ExtendedValue;
16class FirOpBuilder;
17} // namespace fir
18
19namespace fir::runtime {
20
22mlir::Value genErfcScaled(fir::FirOpBuilder &builder, mlir::Location loc,
23 mlir::Value x);
24
26mlir::Value genExponent(fir::FirOpBuilder &builder, mlir::Location loc,
27 mlir::Type resultType, mlir::Value x);
28
30mlir::Value genFraction(fir::FirOpBuilder &builder, mlir::Location loc,
31 mlir::Value x);
32
34mlir::Value genMod(fir::FirOpBuilder &builder, mlir::Location loc,
35 mlir::Value a, mlir::Value p);
36
38mlir::Value genModulo(fir::FirOpBuilder &builder, mlir::Location loc,
39 mlir::Value a, mlir::Value p);
40
42mlir::Value genNearest(fir::FirOpBuilder &builder, mlir::Location loc,
43 mlir::Value x, mlir::Value s);
44
46mlir::Value genRRSpacing(fir::FirOpBuilder &builder, mlir::Location loc,
47 mlir::Value x);
48
50mlir::Value genScale(fir::FirOpBuilder &builder, mlir::Location loc,
51 mlir::Value x, mlir::Value i);
52
54mlir::Value genSelectedCharKind(fir::FirOpBuilder &builder, mlir::Location loc,
55 mlir::Value name, mlir::Value length);
56
58mlir::Value genSelectedIntKind(fir::FirOpBuilder &builder, mlir::Location loc,
59 mlir::Value x);
60
62mlir::Value genSelectedLogicalKind(fir::FirOpBuilder &builder,
63 mlir::Location loc, mlir::Value x);
64
66mlir::Value genSelectedRealKind(fir::FirOpBuilder &builder, mlir::Location loc,
67 mlir::Value precision, mlir::Value range,
68 mlir::Value radix);
69
71mlir::Value genSetExponent(fir::FirOpBuilder &builder, mlir::Location loc,
72 mlir::Value x, mlir::Value i);
73
75mlir::Value genSpacing(fir::FirOpBuilder &builder, mlir::Location loc,
76 mlir::Value x);
77
78} // namespace fir::runtime
79#endif // FORTRAN_OPTIMIZER_BUILDER_RUNTIME_NUMERIC_H
Definition: FIRBuilder.h:55
Definition: AbstractConverter.h:31