summaryrefslogtreecommitdiffstats
path: root/compiler-rt/lib/builtins/fp_mode.h
diff options
context:
space:
mode:
authorYi Kong <yikong@google.com>2019-03-26 22:01:22 +0000
committerYi Kong <yikong@google.com>2019-03-26 22:01:22 +0000
commit2cabea054e40ae2837da959d0ca89ae25cf1b1f1 (patch)
tree28e7e891bd6a5b5f3dbb3745db45ea6498c1b36a /compiler-rt/lib/builtins/fp_mode.h
parent05495c5d4571b1756369e00a1ca7003d63e204da (diff)
downloadbcm5719-llvm-2cabea054e40ae2837da959d0ca89ae25cf1b1f1.tar.gz
bcm5719-llvm-2cabea054e40ae2837da959d0ca89ae25cf1b1f1.zip
[builtins] Rounding mode support for addxf3/subxf3
Implement rounding mode support for addxf3/subxf3. On architectures that implemented the support, this will access the corresponding floating point environment register to apply the correct rounding. For other architectures, it will keep the current behaviour and use IEEE-754 default rounding mode (to nearest, ties to even). ARM32/AArch64 support implemented in this change. i386 and AMD64 will be added in a follow up change. Differential Revision: https://reviews.llvm.org/D57143 llvm-svn: 357035
Diffstat (limited to 'compiler-rt/lib/builtins/fp_mode.h')
-rw-r--r--compiler-rt/lib/builtins/fp_mode.h29
1 files changed, 29 insertions, 0 deletions
diff --git a/compiler-rt/lib/builtins/fp_mode.h b/compiler-rt/lib/builtins/fp_mode.h
new file mode 100644
index 00000000000..51bec0431a4
--- /dev/null
+++ b/compiler-rt/lib/builtins/fp_mode.h
@@ -0,0 +1,29 @@
+//===----- lib/fp_mode.h - Floaing-point environment mode utilities --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
+//
+//===----------------------------------------------------------------------===//
+//
+// This file is not part of the interface of this library.
+//
+// This file defines an interface for accessing hardware floating point
+// environment mode.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef FP_MODE
+#define FP_MODE
+
+typedef enum {
+ FE_TONEAREST,
+ FE_DOWNWARD,
+ FE_UPWARD,
+ FE_TOWARDZERO
+} FE_ROUND_MODE;
+
+FE_ROUND_MODE __fe_getround();
+int __fe_raise_inexact();
+
+#endif // FP_MODE_H
OpenPOWER on IntegriCloud