blob: b4993351ba3e6c3d3852e3a585410fa4c60d1be9 [file] [edit]
//===-- rounding.h - Descriptions of floating point formats -------*- 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
//
//===----------------------------------------------------------------------===//
//
// Helper entities for rounding mode testing.
//
//===----------------------------------------------------------------------===//
#ifndef _ROUNDING_H_
#define _ROUNDING_H_
// Standard rounding modes returned by FLT_ROUNDS.
#define ROUNDING_TOWARDZERO 0
#define ROUNDING_TONEAREST 1
#define ROUNDING_UPWARD 2
#define ROUNDING_DOWNWARD 3
#define ROUNDING_TONEARESTFROMZERO 4
// Not all targets support getting/setting rounding mode using builtin
// functions.
#if defined(__x86_64__) || defined(__aarch64__) || defined(__arm__) || \
defined(__riscv) || defined(__ppc__)
#define FLOAT_AVAILABLE 1
#define DOUBLE_AVAILABLE 1
#endif
// Function that "calculates" rounding mode. It is defined in a separate file to
// make rounding mode unknown in compile time.
int get_rounding_mode(int rm);
#endif // _ROUNDING_H_