hsblst-0.0.1: c-source/build/coff/add_mod_256-armv8.S
.text
.globl add_mod_256
.def add_mod_256;
.type 32;
.endef
.p2align 5
add_mod_256:
ldp x8,x9,[x1]
ldp x12,x13,[x2]
ldp x10,x11,[x1,#16]
adds x8,x8,x12
ldp x14,x15,[x2,#16]
adcs x9,x9,x13
ldp x4,x5,[x3]
adcs x10,x10,x14
ldp x6,x7,[x3,#16]
adcs x11,x11,x15
adc x3,xzr,xzr
subs x16,x8,x4
sbcs x17,x9,x5
sbcs x1,x10,x6
sbcs x2,x11,x7
sbcs xzr,x3,xzr
csel x8,x8,x16,lo
csel x9,x9,x17,lo
csel x10,x10,x1,lo
stp x8,x9,[x0]
csel x11,x11,x2,lo
stp x10,x11,[x0,#16]
ret
.globl mul_by_3_mod_256
.def mul_by_3_mod_256;
.type 32;
.endef
.p2align 5
mul_by_3_mod_256:
ldp x12,x13,[x1]
ldp x14,x15,[x1,#16]
adds x8,x12,x12
ldp x4,x5,[x2]
adcs x9,x13,x13
ldp x6,x7,[x2,#16]
adcs x10,x14,x14
adcs x11,x15,x15
adc x3,xzr,xzr
subs x16,x8,x4
sbcs x17,x9,x5
sbcs x1,x10,x6
sbcs x2,x11,x7
sbcs xzr,x3,xzr
csel x8,x8,x16,lo
csel x9,x9,x17,lo
csel x10,x10,x1,lo
csel x11,x11,x2,lo
adds x8,x8,x12
adcs x9,x9,x13
adcs x10,x10,x14
adcs x11,x11,x15
adc x3,xzr,xzr
subs x16,x8,x4
sbcs x17,x9,x5
sbcs x1,x10,x6
sbcs x2,x11,x7
sbcs xzr,x3,xzr
csel x8,x8,x16,lo
csel x9,x9,x17,lo
csel x10,x10,x1,lo
stp x8,x9,[x0]
csel x11,x11,x2,lo
stp x10,x11,[x0,#16]
ret
.globl lshift_mod_256
.def lshift_mod_256;
.type 32;
.endef
.p2align 5
lshift_mod_256:
ldp x8,x9,[x1]
ldp x10,x11,[x1,#16]
ldp x4,x5,[x3]
ldp x6,x7,[x3,#16]
.Loop_lshift_mod_256:
adds x8,x8,x8
sub x2,x2,#1
adcs x9,x9,x9
adcs x10,x10,x10
adcs x11,x11,x11
adc x3,xzr,xzr
subs x12,x8,x4
sbcs x13,x9,x5
sbcs x14,x10,x6
sbcs x15,x11,x7
sbcs xzr,x3,xzr
csel x8,x8,x12,lo
csel x9,x9,x13,lo
csel x10,x10,x14,lo
csel x11,x11,x15,lo
cbnz x2,.Loop_lshift_mod_256
stp x8,x9,[x0]
stp x10,x11,[x0,#16]
ret
.globl rshift_mod_256
.def rshift_mod_256;
.type 32;
.endef
.p2align 5
rshift_mod_256:
ldp x8,x9,[x1]
ldp x10,x11,[x1,#16]
ldp x4,x5,[x3]
ldp x6,x7,[x3,#16]
.Loop_rshift:
adds x12,x8,x4
sub x2,x2,#1
adcs x13,x9,x5
adcs x14,x10,x6
adcs x15,x11,x7
adc x3,xzr,xzr
tst x8,#1
csel x12,x12,x8,ne
csel x13,x13,x9,ne
csel x14,x14,x10,ne
csel x15,x15,x11,ne
csel x3,x3,xzr,ne
extr x8,x13,x12,#1
extr x9,x14,x13,#1
extr x10,x15,x14,#1
extr x11,x3,x15,#1
cbnz x2,.Loop_rshift
stp x8,x9,[x0]
stp x10,x11,[x0,#16]
ret
.globl cneg_mod_256
.def cneg_mod_256;
.type 32;
.endef
.p2align 5
cneg_mod_256:
ldp x8,x9,[x1]
ldp x4,x5,[x3]
ldp x10,x11,[x1,#16]
subs x12,x4,x8
ldp x6,x7,[x3,#16]
orr x4,x8,x9
sbcs x13,x5,x9
orr x5,x10,x11
sbcs x14,x6,x10
orr x3,x4,x5
sbc x15,x7,x11
cmp x3,#0
csetm x3,ne
ands x2,x2,x3
csel x8,x8,x12,eq
csel x9,x9,x13,eq
csel x10,x10,x14,eq
stp x8,x9,[x0]
csel x11,x11,x15,eq
stp x10,x11,[x0,#16]
ret
.globl sub_mod_256
.def sub_mod_256;
.type 32;
.endef
.p2align 5
sub_mod_256:
ldp x8,x9,[x1]
ldp x12,x13,[x2]
ldp x10,x11,[x1,#16]
subs x8,x8,x12
ldp x14,x15,[x2,#16]
sbcs x9,x9,x13
ldp x4,x5,[x3]
sbcs x10,x10,x14
ldp x6,x7,[x3,#16]
sbcs x11,x11,x15
sbc x3,xzr,xzr
and x4,x4,x3
and x5,x5,x3
adds x8,x8,x4
and x6,x6,x3
adcs x9,x9,x5
and x7,x7,x3
adcs x10,x10,x6
stp x8,x9,[x0]
adc x11,x11,x7
stp x10,x11,[x0,#16]
ret
.globl check_mod_256
.def check_mod_256;
.type 32;
.endef
.p2align 5
check_mod_256:
ldp x8,x9,[x0]
ldp x10,x11,[x0,#16]
ldp x4,x5,[x1]
ldp x6,x7,[x1,#16]
#ifdef __AARCH64EB__
rev x8,x8
rev x9,x9
rev x10,x10
rev x11,x11
#endif
subs xzr,x8,x4
sbcs xzr,x9,x5
orr x8,x8,x9
sbcs xzr,x10,x6
orr x8,x8,x10
sbcs xzr,x11,x7
orr x8,x8,x11
sbc x1,xzr,xzr
cmp x8,#0
mov x0,#1
csel x0,x0,xzr,ne
and x0,x0,x1
ret
.globl add_n_check_mod_256
.def add_n_check_mod_256;
.type 32;
.endef
.p2align 5
add_n_check_mod_256:
ldp x8,x9,[x1]
ldp x12,x13,[x2]
ldp x10,x11,[x1,#16]
ldp x14,x15,[x2,#16]
#ifdef __AARCH64EB__
rev x8,x8
rev x12,x12
rev x9,x9
rev x13,x13
rev x10,x10
rev x14,x14
rev x11,x11
rev x15,x15
#endif
adds x8,x8,x12
ldp x4,x5,[x3]
adcs x9,x9,x13
ldp x6,x7,[x3,#16]
adcs x10,x10,x14
adcs x11,x11,x15
adc x3,xzr,xzr
subs x16,x8,x4
sbcs x17,x9,x5
sbcs x1,x10,x6
sbcs x2,x11,x7
sbcs xzr,x3,xzr
csel x8,x8,x16,lo
csel x9,x9,x17,lo
csel x10,x10,x1,lo
csel x11,x11,x2,lo
orr x16, x8, x9
orr x17, x10, x11
orr x16, x16, x17
#ifdef __AARCH64EB__
rev x8,x8
rev x9,x9
rev x10,x10
rev x11,x11
#endif
stp x8,x9,[x0]
stp x10,x11,[x0,#16]
mov x17, #1
cmp x16, #0
csel x0, x17, xzr, ne
ret
.globl sub_n_check_mod_256
.def sub_n_check_mod_256;
.type 32;
.endef
.p2align 5
sub_n_check_mod_256:
ldp x8,x9,[x1]
ldp x12,x13,[x2]
ldp x10,x11,[x1,#16]
ldp x14,x15,[x2,#16]
#ifdef __AARCH64EB__
rev x8,x8
rev x12,x12
rev x9,x9
rev x13,x13
rev x10,x10
rev x14,x14
rev x11,x11
rev x15,x15
#endif
subs x8,x8,x12
sbcs x9,x9,x13
ldp x4,x5,[x3]
sbcs x10,x10,x14
ldp x6,x7,[x3,#16]
sbcs x11,x11,x15
sbc x3,xzr,xzr
and x4,x4,x3
and x5,x5,x3
adds x8,x8,x4
and x6,x6,x3
adcs x9,x9,x5
and x7,x7,x3
adcs x10,x10,x6
adc x11,x11,x7
orr x16, x8, x9
orr x17, x10, x11
orr x16, x16, x17
#ifdef __AARCH64EB__
rev x8,x8
rev x9,x9
rev x10,x10
rev x11,x11
#endif
stp x8,x9,[x0]
stp x10,x11,[x0,#16]
mov x17, #1
cmp x16, #0
csel x0, x17, xzr, ne
ret