diff options
author | tege <tege@gmplib.org> | 1996-05-08 09:10:48 +0200 |
---|---|---|
committer | tege <tege@gmplib.org> | 1996-05-08 09:10:48 +0200 |
commit | c6d715868f53b08c62a129ffd77fb585fd89c43b (patch) | |
tree | 82f36d2d8cbe7e07ad3e18d5c6e047e8796d861e /mpn/clipper | |
download | gmp-c6d715868f53b08c62a129ffd77fb585fd89c43b.tar.gz |
Initial revision
Diffstat (limited to 'mpn/clipper')
-rw-r--r-- | mpn/clipper/add_n.s | 26 | ||||
-rw-r--r-- | mpn/clipper/mul_1.s | 25 | ||||
-rw-r--r-- | mpn/clipper/sub_n.s | 26 |
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 |