summaryrefslogtreecommitdiff
path: root/mpn/clipper
diff options
context:
space:
mode:
authortege <tege@gmplib.org>1996-05-08 09:10:48 +0200
committertege <tege@gmplib.org>1996-05-08 09:10:48 +0200
commitc6d715868f53b08c62a129ffd77fb585fd89c43b (patch)
tree82f36d2d8cbe7e07ad3e18d5c6e047e8796d861e /mpn/clipper
downloadgmp-c6d715868f53b08c62a129ffd77fb585fd89c43b.tar.gz
Initial revision
Diffstat (limited to 'mpn/clipper')
-rw-r--r--mpn/clipper/add_n.s26
-rw-r--r--mpn/clipper/mul_1.s25
-rw-r--r--mpn/clipper/sub_n.s26
3 files changed, 77 insertions, 0 deletions
diff --git a/mpn/clipper/add_n.s b/mpn/clipper/add_n.s
new file mode 100644
index 000000000..40ed1bd32
--- /dev/null
+++ b/mpn/clipper/add_n.s
@@ -0,0 +1,26 @@
+.text
+ .align 16
+.globl ___mpn_add_n
+___mpn_add_n:
+ subq $8,sp
+ storw r6,(sp)
+ loadw 12(sp),r2
+ loadw 16(sp),r3
+ loadq $0,r6 ; clear carry-save register
+
+.Loop: loadw (r1),r4
+ loadw (r2),r5
+ addwc r6,r6 ; restore carry from r6
+ addwc r5,r4
+ storw r4,(r0)
+ subwc r6,r6 ; save carry in r6
+ addq $4,r0
+ addq $4,r1
+ addq $4,r2
+ subq $1,r3
+ brne .Loop
+
+ negw r6,r0
+ loadw (sp),r6
+ addq $8,sp
+ ret sp
diff --git a/mpn/clipper/mul_1.s b/mpn/clipper/mul_1.s
new file mode 100644
index 000000000..f20ece02a
--- /dev/null
+++ b/mpn/clipper/mul_1.s
@@ -0,0 +1,25 @@
+.text
+ .align 16
+.globl ___mpn_mul_1
+___mpn_mul_1:
+ subq $8,sp
+ storw r6,(sp)
+ loadw 12(sp),r2
+ loadw 16(sp),r3
+ loadq $0,r6 ; clear carry limb
+
+.Loop: loadw (r1),r4
+ mulwux r3,r4
+ addw r6,r4 ; add old carry limb into low product limb
+ loadq $0,r6
+ addwc r5,r6 ; propagate cy into high product limb
+ storw r4,(r0)
+ addq $4,r0
+ addq $4,r1
+ subq $1,r2
+ brne .Loop
+
+ movw r6,r0
+ loadw 0(sp),r6
+ addq $8,sp
+ ret sp
diff --git a/mpn/clipper/sub_n.s b/mpn/clipper/sub_n.s
new file mode 100644
index 000000000..6f47d47c9
--- /dev/null
+++ b/mpn/clipper/sub_n.s
@@ -0,0 +1,26 @@
+.text
+ .align 16
+.globl ___mpn_sub_n
+___mpn_sub_n:
+ subq $8,sp
+ storw r6,(sp)
+ loadw 12(sp),r2
+ loadw 16(sp),r3
+ loadq $0,r6 ; clear carry-save register
+
+.Loop: loadw (r1),r4
+ loadw (r2),r5
+ addwc r6,r6 ; restore carry from r6
+ subwc r5,r4
+ storw r4,(r0)
+ subwc r6,r6 ; save carry in r6
+ addq $4,r0
+ addq $4,r1
+ addq $4,r2
+ subq $1,r3
+ brne .Loop
+
+ negw r6,r0
+ loadw (sp),r6
+ addq $8,sp
+ ret sp