diff options
author | David Monniaux <david.monniaux@univ-grenoble-alpes.fr> | 2019-04-13 20:44:14 +0200 |
---|---|---|
committer | David Monniaux <david.monniaux@univ-grenoble-alpes.fr> | 2019-04-13 20:44:14 +0200 |
commit | c819b4be371dd44704956a80532fdcf8f5e9b833 (patch) | |
tree | 078b77b7b1434a47b5a1fa9d4620b4b277d84ac0 | |
parent | 14cb39a563f56c852d8dacbbfa9604a722079e49 (diff) | |
parent | dcd4d128db54d3bb38e85bfbab54a6223387f0ea (diff) | |
download | compcert-kvx-c819b4be371dd44704956a80532fdcf8f5e9b833.tar.gz compcert-kvx-c819b4be371dd44704956a80532fdcf8f5e9b833.zip |
Merge branch 'mppa-work' of gricad-gitlab.univ-grenoble-alpes.fr:sixcy/CompCert into mppa-work
-rw-r--r-- | runtime/mppa_k1c/i64_sdiv.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/runtime/mppa_k1c/i64_sdiv.c b/runtime/mppa_k1c/i64_sdiv.c index 0b281d3e..c80ae0cb 100644 --- a/runtime/mppa_k1c/i64_sdiv.c +++ b/runtime/mppa_k1c/i64_sdiv.c @@ -51,3 +51,18 @@ float f32_div(float a, float b) { return __divsf3(a, b); } #endif + +#include <mppa_bare_runtime/k1c/registers.h> + +/* DM FIXME this is for floating point */ +int fetestexcept(int excepts) { + int mask = (K1_SFR_CS_IO_MASK | K1_SFR_CS_DZ_MASK | K1_SFR_CS_OV_MASK | K1_SFR_CS_UN_MASK | K1_SFR_CS_IN_MASK) & excepts; + unsigned long long cs = __builtin_k1_get(K1_SFR_CS); + return cs & mask; +} + +int feclearexcept(int excepts) { + int mask = (K1_SFR_CS_IO_MASK | K1_SFR_CS_DZ_MASK | K1_SFR_CS_OV_MASK | K1_SFR_CS_UN_MASK | K1_SFR_CS_IN_MASK) & excepts; + __builtin_k1_wfxl(K1_SFR_CS, mask); + return 0; +} |