aboutsummaryrefslogtreecommitdiffstats
path: root/runtime
diff options
context:
space:
mode:
authorDavid Monniaux <david.monniaux@univ-grenoble-alpes.fr>2019-05-16 14:47:28 +0200
committerDavid Monniaux <david.monniaux@univ-grenoble-alpes.fr>2019-05-16 14:47:28 +0200
commitbe0b9e66ce1fd71830d9316a13afc64d9a71552e (patch)
tree47e7c4350a107cdd7615761065cc823ed1abec60 /runtime
parentaecc44ba24c68b03f5cd978ce193ac9b7bc9bb42 (diff)
downloadcompcert-kvx-be0b9e66ce1fd71830d9316a13afc64d9a71552e.tar.gz
compcert-kvx-be0b9e66ce1fd71830d9316a13afc64d9a71552e.zip
udiv
Diffstat (limited to 'runtime')
-rw-r--r--runtime/mppa_k1c/vararg.S29
1 files changed, 28 insertions, 1 deletions
diff --git a/runtime/mppa_k1c/vararg.S b/runtime/mppa_k1c/vararg.S
index e7b05893..9869eb0b 100644
--- a/runtime/mppa_k1c/vararg.S
+++ b/runtime/mppa_k1c/vararg.S
@@ -59,7 +59,6 @@ __compcert_acswapw:
.globl __compcert_i32_umod
__compcert_i32_sdiv:
__compcert_i32_smod:
-__compcert_i32_udiv:
__compcert_i32_umod:
sxwd $r0 = $r0
sxwd $r1 = $r1
@@ -87,3 +86,31 @@ __compcert_i32_umod:
fixedd.rz $r0 = $r0, 0
ret
;;
+
+__compcert_i32_udiv:
+ zxwd $r0 = $r0
+ zxwd $r1 = $r1
+ make $r2 = 0x3ff0000000000000
+ ;;
+ floatud.rn.s $r0 = $r0, 0
+ ;;
+ floatud.rn.s $r3 = $r1, 0
+ ;;
+ floatuw.rn.s $r1 = $r1, 0
+ ;;
+ finvw $r1=$r1
+ ;;
+ fwidenlwd $r1 = $r1
+ ;;
+ fmuld $r0 = $r0, $r1
+ ;;
+ ffmsd $r2 = $r1, $r3
+ copyd $r1 = $r0
+ ;;
+ ffmad $r1 = $r2, $r0
+ ;;
+ ffmad $r0 = $r2, $r1
+ ;;
+ fixedud.rz $r0 = $r0, 0
+ ret
+ ;;