From 742cd4505a6646247bf0740ea4e6ab779972a554 Mon Sep 17 00:00:00 2001 From: David Monniaux Date: Thu, 16 May 2019 14:54:17 +0200 Subject: sdiv, smod, udiv, umod through fast routines --- runtime/mppa_k1c/vararg.S | 33 ++++++++++++++++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) (limited to 'runtime') diff --git a/runtime/mppa_k1c/vararg.S b/runtime/mppa_k1c/vararg.S index 184bd3f8..5804c707 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_umod: sxwd $r0 = $r0 sxwd $r1 = $r1 make $r2 = 0x3ff0000000000000 @@ -146,3 +145,35 @@ __compcert_i32_udiv: ;; ret ;; + +__compcert_i32_umod: + zxwd $r4 = $r0 + zxwd $r5 = $r1 + make $r2 = 0x3ff0000000000000 + ;; + copyd $r0 = $r4 + copyd $r1 = $r5 + floatud.rn.s $r4 = $r4, 0 + ;; + floatud.rn.s $r3 = $r5, 0 + ;; + floatuw.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 + ;; + fixedud.rz $r4 = $r4, 0 + ;; + msbfd $r0 = $r1, $r4 + ret + ;; -- cgit