aboutsummaryrefslogtreecommitdiff
path: root/src/softfloat_ext.cpp
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2020-06-18 20:32:43 -0400
committerGitHub <noreply@github.com>2020-06-18 20:32:43 -0400
commit5ea0f589c92018b4596ebbbd5e0ce3b71467585c (patch)
tree10cbcb71acd74dcdc3e43d944cb07141639d3d9e /src/softfloat_ext.cpp
parentcaaa26c9f0db92c463a826f15c8392162be2e037 (diff)
parenteb7fad28f8f11b985c8ee6fbeb4a68345a9b3a5e (diff)
downloadzig-5ea0f589c92018b4596ebbbd5e0ce3b71467585c.tar.gz
zig-5ea0f589c92018b4596ebbbd5e0ce3b71467585c.zip
Merge pull request #5625 from antlilja/master
Improve support for f128 and comptime_float operations
Diffstat (limited to 'src/softfloat_ext.cpp')
-rw-r--r--src/softfloat_ext.cpp25
1 files changed, 25 insertions, 0 deletions
diff --git a/src/softfloat_ext.cpp b/src/softfloat_ext.cpp
new file mode 100644
index 0000000000..8408a15116
--- /dev/null
+++ b/src/softfloat_ext.cpp
@@ -0,0 +1,25 @@
+#include "softfloat_ext.hpp"
+
+extern "C" {
+ #include "softfloat.h"
+}
+
+void f128M_abs(const float128_t *aPtr, float128_t *zPtr) {
+ float128_t zero_float;
+ ui32_to_f128M(0, &zero_float);
+ if (f128M_lt(aPtr, &zero_float)) {
+ f128M_sub(&zero_float, aPtr, zPtr);
+ } else {
+ *zPtr = *aPtr;
+ }
+}
+
+void f128M_trunc(const float128_t *aPtr, float128_t *zPtr) {
+ float128_t zero_float;
+ ui32_to_f128M(0, &zero_float);
+ if (f128M_lt(aPtr, &zero_float)) {
+ f128M_roundToInt(aPtr, softfloat_round_max, false, zPtr);
+ } else {
+ f128M_roundToInt(aPtr, softfloat_round_min, false, zPtr);
+ }
+} \ No newline at end of file