mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-10-22 12:33:33 +02:00
a91d41c574
This is recommit of commit e6584b2b7b2d, which was reverted in 30e7ee3c4bac together with af57dbf12e54. Original message is below. Enumerations that describe rounding mode and exception behavior were defined inside ConstrainedFPIntrinsic. It makes sense to use the same definitions to represent the same properties in other cases, not only in constrained intrinsics. It was however inconvenient as required to include constrained intrinsics definitions even if they were not needed. Also using long scope prefix reduced readability. This change moves these definitioins to the namespace llvm::fp. No functional changes. Differential Revision: https://reviews.llvm.org/D69552
71 lines
2.5 KiB
C++
71 lines
2.5 KiB
C++
//===- 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_FLOATINGPOINT_H
|
|
#define LLVM_IR_FLOATINGPOINT_H
|
|
|
|
#include "llvm/ADT/Optional.h"
|
|
#include "llvm/ADT/StringRef.h"
|
|
#include <stdint.h>
|
|
|
|
namespace llvm {
|
|
|
|
namespace fp {
|
|
|
|
/// Rounding mode 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 RoundingMode : uint8_t {
|
|
rmDynamic, ///< This corresponds to "fpround.dynamic".
|
|
rmToNearest, ///< This corresponds to "fpround.tonearest".
|
|
rmDownward, ///< This corresponds to "fpround.downward".
|
|
rmUpward, ///< This corresponds to "fpround.upward".
|
|
rmTowardZero ///< This corresponds to "fpround.tozero".
|
|
};
|
|
|
|
/// 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.
|
|
Optional<fp::RoundingMode> StrToRoundingMode(StringRef);
|
|
|
|
/// For any RoundingMode enumerator, returns a string valid as input in
|
|
/// constrained intrinsic rounding mode metadata.
|
|
Optional<StringRef> RoundingModeToStr(fp::RoundingMode);
|
|
|
|
/// Returns a valid ExceptionBehavior enumerator when given a string
|
|
/// valid as input in constrained intrinsic exception behavior metadata.
|
|
Optional<fp::ExceptionBehavior> StrToExceptionBehavior(StringRef);
|
|
|
|
/// For any ExceptionBehavior enumerator, returns a string valid as
|
|
/// input in constrained intrinsic exception behavior metadata.
|
|
Optional<StringRef> ExceptionBehaviorToStr(fp::ExceptionBehavior);
|
|
|
|
}
|
|
#endif
|