aboutsummaryrefslogtreecommitdiff
path: root/src/softfloat_ext.cpp
blob: 8408a1511682fdc6384870a8cef7ee6501ce5118 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
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);
    } 
}