summaryrefslogtreecommitdiff
path: root/sys/src/ape/lib/ap/spim/vlop.s
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@felloff.net>2015-10-04 19:50:24 +0200
committercinap_lenrek <cinap_lenrek@felloff.net>2015-10-04 19:50:24 +0200
commit9e3ef5c777971707ab4ba426bb55d3bb2553ddf9 (patch)
treea5126925764bd3cb47d8702bab4bbd8b6b02aea3 /sys/src/ape/lib/ap/spim/vlop.s
parentd2af6b40af268fafdbd04c0222e785167b9ae021 (diff)
ape: add machine specific code for spim
Diffstat (limited to 'sys/src/ape/lib/ap/spim/vlop.s')
-rw-r--r--sys/src/ape/lib/ap/spim/vlop.s20
1 files changed, 20 insertions, 0 deletions
diff --git a/sys/src/ape/lib/ap/spim/vlop.s b/sys/src/ape/lib/ap/spim/vlop.s
new file mode 100644
index 000000000..7c618739c
--- /dev/null
+++ b/sys/src/ape/lib/ap/spim/vlop.s
@@ -0,0 +1,20 @@
+/*
+ * from https://bitbucket.org/cherry9/plan9-loongson
+ */
+TEXT _mulv(SB), $0
+ MOVW 8(FP), R2 /* hi1 */
+ MOVW 4(FP), R3 /* lo1 */
+ MOVW 16(FP), R4 /* hi2 */
+ MOVW 12(FP), R5 /* lo2 */
+ MULU R5, R3 /* lo1*lo2 -> hi:lo*/
+ MOVW LO, R6
+ MOVW HI, R7
+ MULU R3, R4 /* lo1*hi2 -> _:hi */
+ MOVW LO, R8
+ ADDU R8, R7
+ MULU R2, R5 /* hi1*lo2 -> _:hi */
+ MOVW LO, R8
+ ADDU R8, R7
+ MOVW R6, 0(R1) /* lo */
+ MOVW R7, 4(R1) /* hi */
+ RET