Viewing file: FPEnv.h (3.07 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
//===- FPEnv.h ---- FP Environment ------------------------------*- C++ -*-===// // // 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 // //===----------------------------------------------------------------------===// // /// @file /// This file contains the declarations of entities that describe floating /// point environment and related functions. // //===----------------------------------------------------------------------===//
#ifndef LLVM_IR_FPENV_H #define LLVM_IR_FPENV_H
#include "llvm/ADT/FloatingPointMode.h" #include "llvm/IR/FMF.h" #include <optional>
namespace llvm { class StringRef;
namespace Intrinsic { typedef unsigned ID; }
class Instruction;
namespace fp {
/// Exception behavior used for floating point operations. /// /// Each of these values correspond to some metadata argument value of a /// constrained floating point intrinsic. See the LLVM Language Reference Manual /// for details. enum ExceptionBehavior : uint8_t { ebIgnore, ///< This corresponds to "fpexcept.ignore". ebMayTrap, ///< This corresponds to "fpexcept.maytrap". ebStrict ///< This corresponds to "fpexcept.strict". };
}
/// Returns a valid RoundingMode enumerator when given a string /// that is valid as input in constrained intrinsic rounding mode /// metadata. std::optional<RoundingMode> convertStrToRoundingMode(StringRef);
/// For any RoundingMode enumerator, returns a string valid as input in /// constrained intrinsic rounding mode metadata. std::optional<StringRef> convertRoundingModeToStr(RoundingMode);
/// Returns a valid ExceptionBehavior enumerator when given a string /// valid as input in constrained intrinsic exception behavior metadata. std::optional<fp::ExceptionBehavior> convertStrToExceptionBehavior(StringRef);
/// For any ExceptionBehavior enumerator, returns a string valid as /// input in constrained intrinsic exception behavior metadata. std::optional<StringRef> convertExceptionBehaviorToStr(fp::ExceptionBehavior);
/// Returns true if the exception handling behavior and rounding mode /// match what is used in the default floating point environment. inline bool isDefaultFPEnvironment(fp::ExceptionBehavior EB, RoundingMode RM) { return EB == fp::ebIgnore && RM == RoundingMode::NearestTiesToEven; }
/// Returns constrained intrinsic id to represent the given instruction in /// strictfp function. If the instruction is already a constrained intrinsic or /// does not have a constrained intrinsic counterpart, the function returns /// zero. Intrinsic::ID getConstrainedIntrinsicID(const Instruction &Instr);
/// Returns true if the rounding mode RM may be QRM at compile time or /// at run time. inline bool canRoundingModeBe(RoundingMode RM, RoundingMode QRM) { return RM == QRM || RM == RoundingMode::Dynamic; }
/// Returns true if the possibility of a signaling NaN can be safely /// ignored. inline bool canIgnoreSNaN(fp::ExceptionBehavior EB, FastMathFlags FMF) { return (EB == fp::ebIgnore || FMF.noNaNs()); } } #endif
|