aboutsummaryrefslogtreecommitdiffstats
path: root/runtime/mppa_k1c/i64_smod.S
diff options
context:
space:
mode:
Diffstat (limited to 'runtime/mppa_k1c/i64_smod.S')
-rw-r--r--runtime/mppa_k1c/i64_smod.S46
1 files changed, 46 insertions, 0 deletions
diff --git a/runtime/mppa_k1c/i64_smod.S b/runtime/mppa_k1c/i64_smod.S
new file mode 100644
index 00000000..9a62b63d
--- /dev/null
+++ b/runtime/mppa_k1c/i64_smod.S
@@ -0,0 +1,46 @@
+ .text
+
+ .align 8
+ .globl __compcert_i64_smod
+ .type __compcert_i64_smod, @function
+__compcert_i64_smod:
+ addw $r12 = $r12, -24
+ get $r8 = $ra
+ ;;
+ sd 16[$r12] = $r15
+ make $r15 = 0
+ ;;
+ sd 28[$r12] = $r10
+ copyd $r10 = $r15
+ ;;
+ sw 24[$r12] = $r8
+ ;;
+ cb.dltz $r0? .L5
+ ;;
+.L2:
+ absd $r1 = $r1
+ ;; /* Can't issue next in the same bundle */
+ make $r2 = 1
+ call udivmoddi4
+ ;;
+ lwz $r8 = 24[$r12]
+ xord $r0 = $r0, $r10
+ ;;
+ addd $r0 = $r15, $r0
+ ld $r10 = 28[$r12]
+ ;;
+ ld $r15 = 16[$r12]
+ addw $r12 = $r12, 24
+ ;;
+ set $ra = $r8
+ ;; /* Can't issue next in the same bundle */
+ ret
+ ;;
+.L5:
+ negd $r0 = $r0
+ make $r15 = 1
+ make $r10 = -1
+ goto .L2
+ ;;
+ .size __compcert_i64_smod, .-__compcert_i64_smod
+ .ident "GCC: (GNU) 4.9.4"