diff options
Diffstat (limited to 'vere/ext/gmp/gen/aarch64-linux/mpn/bdiv_dbm1c.s')
-rw-r--r-- | vere/ext/gmp/gen/aarch64-linux/mpn/bdiv_dbm1c.s | 123 |
1 files changed, 123 insertions, 0 deletions
diff --git a/vere/ext/gmp/gen/aarch64-linux/mpn/bdiv_dbm1c.s b/vere/ext/gmp/gen/aarch64-linux/mpn/bdiv_dbm1c.s new file mode 100644 index 0000000..859498b --- /dev/null +++ b/vere/ext/gmp/gen/aarch64-linux/mpn/bdiv_dbm1c.s @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + .align 4 + .text + .align 3 + .globl __gmpn_bdiv_dbm1c + .type __gmpn_bdiv_dbm1c,@function +__gmpn_bdiv_dbm1c: + ldr x5, [x1], #8 + ands x6, x2, #3 + b.eq .Lfi0 + cmp x6, #2 + b.cc .Lfi1 + b.eq .Lfi2 + +.Lfi3: mul x12, x5, x3 + umulh x13, x5, x3 + ldr x5, [x1], #8 + b .Llo3 + +.Lfi0: mul x10, x5, x3 + umulh x11, x5, x3 + ldr x5, [x1], #8 + b .Llo0 + +.Lfi1: subs x2, x2, #1 + mul x12, x5, x3 + umulh x13, x5, x3 + b.ls .Lwd1 + ldr x5, [x1], #8 + b .Llo1 + +.Lfi2: mul x10, x5, x3 + umulh x11, x5, x3 + ldr x5, [x1], #8 + b .Llo2 + +.Ltop: ldr x5, [x1], #8 + subs x4, x4, x10 + str x4, [x0], #8 + sbc x4, x4, x11 +.Llo1: mul x10, x5, x3 + umulh x11, x5, x3 + ldr x5, [x1], #8 + subs x4, x4, x12 + str x4, [x0], #8 + sbc x4, x4, x13 +.Llo0: mul x12, x5, x3 + umulh x13, x5, x3 + ldr x5, [x1], #8 + subs x4, x4, x10 + str x4, [x0], #8 + sbc x4, x4, x11 +.Llo3: mul x10, x5, x3 + umulh x11, x5, x3 + ldr x5, [x1], #8 + subs x4, x4, x12 + str x4, [x0], #8 + sbc x4, x4, x13 +.Llo2: subs x2, x2, #4 + mul x12, x5, x3 + umulh x13, x5, x3 + b.hi .Ltop + +.Lwd2: subs x4, x4, x10 + str x4, [x0], #8 + sbc x4, x4, x11 +.Lwd1: subs x4, x4, x12 + str x4, [x0] + sbc x0, x4, x13 + ret + .size __gmpn_bdiv_dbm1c,.-__gmpn_bdiv_dbm1c |