1//===- FPEnv.h ---- FP Environment ------------------------------*- 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/// @file
10/// This file contains the declarations of entities that describe floating
11/// point environment and related functions.
12//
13//===----------------------------------------------------------------------===//
14
15#ifndef LLVM_IR_FPENV_H
16#define LLVM_IR_FPENV_H
17
18#include "llvm/ADT/FloatingPointMode.h"
19#include "llvm/ADT/Optional.h"
20
21namespace llvm {
22class StringRef;
23
24namespace fp {
25
26/// Exception behavior used for floating point operations.
27///
28/// Each of these values correspond to some metadata argument value of a
29/// constrained floating point intrinsic. See the LLVM Language Reference Manual
30/// for details.
31enum ExceptionBehavior : uint8_t {
32 ebIgnore, ///< This corresponds to "fpexcept.ignore".
33 ebMayTrap, ///< This corresponds to "fpexcept.maytrap".
34 ebStrict ///< This corresponds to "fpexcept.strict".
35};
36
37}
38
39/// Returns a valid RoundingMode enumerator when given a string
40/// that is valid as input in constrained intrinsic rounding mode
41/// metadata.
42Optional<RoundingMode> StrToRoundingMode(StringRef);
43
44/// For any RoundingMode enumerator, returns a string valid as input in
45/// constrained intrinsic rounding mode metadata.
46Optional<StringRef> RoundingModeToStr(RoundingMode);
47
48/// Returns a valid ExceptionBehavior enumerator when given a string
49/// valid as input in constrained intrinsic exception behavior metadata.
50Optional<fp::ExceptionBehavior> StrToExceptionBehavior(StringRef);
51
52/// For any ExceptionBehavior enumerator, returns a string valid as
53/// input in constrained intrinsic exception behavior metadata.
54Optional<StringRef> ExceptionBehaviorToStr(fp::ExceptionBehavior);
55}
56#endif
57