aboutsummaryrefslogtreecommitdiffstats
path: root/runtime
diff options
context:
space:
mode:
authorDavid Monniaux <david.monniaux@univ-grenoble-alpes.fr>2019-05-16 14:52:35 +0200
committerDavid Monniaux <david.monniaux@univ-grenoble-alpes.fr>2019-05-16 14:52:35 +0200
commit7d59276032275776e1f37dfb99ad2f60bc6ab639 (patch)
tree988d6491a722d70894a0b55b05fce79ea21d899e /runtime
parentbe0b9e66ce1fd71830d9316a13afc64d9a71552e (diff)
downloadcompcert-kvx-7d59276032275776e1f37dfb99ad2f60bc6ab639.tar.gz
compcert-kvx-7d59276032275776e1f37dfb99ad2f60bc6ab639.zip
umod
Diffstat (limited to 'runtime')
-rw-r--r--runtime/mppa_k1c/vararg.S34
1 files changed, 33 insertions, 1 deletions
diff --git a/runtime/mppa_k1c/vararg.S b/runtime/mppa_k1c/vararg.S
index 9869eb0b..184bd3f8 100644
--- a/runtime/mppa_k1c/vararg.S
+++ b/runtime/mppa_k1c/vararg.S
@@ -58,7 +58,6 @@ __compcert_acswapw:
.globl __compcert_i32_udiv
.globl __compcert_i32_umod
__compcert_i32_sdiv:
-__compcert_i32_smod:
__compcert_i32_umod:
sxwd $r0 = $r0
sxwd $r1 = $r1
@@ -87,6 +86,38 @@ __compcert_i32_umod:
ret
;;
+__compcert_i32_smod:
+ sxwd $r4 = $r0
+ sxwd $r5 = $r1
+ make $r2 = 0x3ff0000000000000
+ ;;
+ copyd $r0 = $r4
+ copyd $r1 = $r5
+ floatd.rn.s $r4 = $r4, 0
+ ;;
+ floatd.rn.s $r3 = $r5, 0
+ ;;
+ floatw.rn.s $r5 = $r5, 0
+ ;;
+ finvw $r5=$r5
+ ;;
+ fwidenlwd $r5 = $r5
+ ;;
+ fmuld $r4 = $r4, $r5
+ ;;
+ ffmsd $r2 = $r5, $r3
+ copyd $r5 = $r4
+ ;;
+ ffmad $r5 = $r2, $r4
+ ;;
+ ffmad $r4 = $r2, $r5
+ ;;
+ fixedd.rz $r4 = $r4, 0
+ ;;
+ msbfd $r0 = $r1, $r4
+ ret
+ ;;
+
__compcert_i32_udiv:
zxwd $r0 = $r0
zxwd $r1 = $r1
@@ -112,5 +143,6 @@ __compcert_i32_udiv:
ffmad $r0 = $r2, $r1
;;
fixedud.rz $r0 = $r0, 0
+ ;;
ret
;;