From c6d715868f53b08c62a129ffd77fb585fd89c43b Mon Sep 17 00:00:00 2001 From: tege Date: Wed, 8 May 1996 09:10:48 +0200 Subject: Initial revision --- mpn/clipper/add_n.s | 26 ++++++++++++++++++++++++++ mpn/clipper/mul_1.s | 25 +++++++++++++++++++++++++ mpn/clipper/sub_n.s | 26 ++++++++++++++++++++++++++ 3 files changed, 77 insertions(+) create mode 100644 mpn/clipper/add_n.s create mode 100644 mpn/clipper/mul_1.s create mode 100644 mpn/clipper/sub_n.s (limited to 'mpn/clipper') 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 -- cgit v1.2.1