-rw-r--r-- 8132 lib25519-20241004/crypto_multiscalar/ed25519/arm64-maa4-intmul/ge25519_p1p1_to_p2.S raw
#include "crypto_asm_hidden.h"
// linker define ge25519_p1p1_to_p2
.p2align 4
ASM_HIDDEN _CRYPTO_SHARED_NAMESPACE(ge25519_p1p1_to_p2)
.globl _CRYPTO_SHARED_NAMESPACE(ge25519_p1p1_to_p2)
ASM_HIDDEN CRYPTO_SHARED_NAMESPACE(ge25519_p1p1_to_p2)
.globl CRYPTO_SHARED_NAMESPACE(ge25519_p1p1_to_p2)
_CRYPTO_SHARED_NAMESPACE(ge25519_p1p1_to_p2):
CRYPTO_SHARED_NAMESPACE(ge25519_p1p1_to_p2):
sub sp, sp, #96
stp x19, x20, [sp, #0]
stp x21, x22, [sp, #16]
stp x23, x24, [sp, #32]
stp x25, x26, [sp, #48]
stp x27, x28, [sp, #64]
stp x29, x30, [sp, #80]
mov x19, #19
mov x21, #0x8000000000000000
/* p1p1 to p2 */
// mul
ldp x3, x4, [x1, #0]
ldp x5, x6, [x1, #16]
ldp x7, x16, [x1, #96]
ldp x17, x27, [x1, #112]
mul x8, x3, x7
umulh x9, x3, x7
mul x30, x4, x7
adds x9, x9, x30
umulh x10, x4, x7
mul x30, x5, x7
adcs x10, x10, x30
umulh x11, x5, x7
mul x30, x6, x7
adcs x11, x11, x30
umulh x12, x6, x7
adc x12, x12, xzr
mul x28, x3, x16
umulh x7, x3, x16
mul x30, x4, x16
adds x7, x7, x30
umulh x15, x4, x16
mul x30, x5, x16
adcs x15, x15, x30
umulh x14, x5, x16
mul x30, x6, x16
adcs x14, x14, x30
umulh x13, x6, x16
adc x13, x13, xzr
adds x9, x9, x28
adcs x10, x10, x7
adcs x11, x11, x15
adcs x12, x12, x14
adc x13, x13, xzr
mul x28, x3, x17
umulh x7, x3, x17
mul x30, x4, x17
adds x7, x7, x30
umulh x16, x4, x17
mul x30, x5, x17
adcs x16, x16, x30
umulh x15, x5, x17
mul x30, x6, x17
adcs x15, x15, x30
umulh x14, x6, x17
adc x14, x14, xzr
adds x10, x10, x28
adcs x11, x11, x7
adcs x12, x12, x16
adcs x13, x13, x15
adc x14, x14, xzr
mul x28, x3, x27
umulh x7, x3, x27
mul x30, x4, x27
adds x7, x7, x30
umulh x16, x4, x27
mul x30, x5, x27
adcs x16, x16, x30
umulh x17, x5, x27
mul x30, x6, x27
adcs x17, x17, x30
umulh x15, x6, x27
adc x15, x15, xzr
adds x11, x11, x28
adcs x12, x12, x7
adcs x13, x13, x16
adcs x14, x14, x17
adc x15, x15, xzr
mul x30, x12, x18
umulh x4, x12, x18
adds x8, x8, x30
mul x30, x13, x18
umulh x5, x13, x18
adcs x9, x9, x30
mul x30, x14, x18
umulh x6, x14, x18
adcs x10, x10, x30
mul x30, x15, x18
umulh x7, x15, x18
adcs x11, x11, x30
cset x16, cs
adds x11, x11, x6
adc x7, x7, x16
cmn x11, x11
adc x7, x7, x7
mul x7, x7, x19
bic x11, x11, x21
adds x8, x8, x7
adcs x9, x9, x4
adcs x10, x10, x5
adc x11, x11, xzr
stp x8, x9, [x0, #0]
stp x10, x11, [x0, #16]
// mul
ldp x3, x4, [x1, #32]
ldp x5, x6, [x1, #48]
ldp x7, x16, [x1, #64]
ldp x17, x27, [x1, #80]
mul x8, x3, x7
umulh x9, x3, x7
mul x30, x4, x7
adds x9, x9, x30
umulh x10, x4, x7
mul x30, x5, x7
adcs x10, x10, x30
umulh x11, x5, x7
mul x30, x6, x7
adcs x11, x11, x30
umulh x12, x6, x7
adc x12, x12, xzr
mul x28, x3, x16
umulh x7, x3, x16
mul x30, x4, x16
adds x7, x7, x30
umulh x15, x4, x16
mul x30, x5, x16
adcs x15, x15, x30
umulh x14, x5, x16
mul x30, x6, x16
adcs x14, x14, x30
umulh x13, x6, x16
adc x13, x13, xzr
adds x9, x9, x28
adcs x10, x10, x7
adcs x11, x11, x15
adcs x12, x12, x14
adc x13, x13, xzr
mul x28, x3, x17
umulh x7, x3, x17
mul x30, x4, x17
adds x7, x7, x30
umulh x16, x4, x17
mul x30, x5, x17
adcs x16, x16, x30
umulh x15, x5, x17
mul x30, x6, x17
adcs x15, x15, x30
umulh x14, x6, x17
adc x14, x14, xzr
adds x10, x10, x28
adcs x11, x11, x7
adcs x12, x12, x16
adcs x13, x13, x15
adc x14, x14, xzr
mul x28, x3, x27
umulh x7, x3, x27
mul x30, x4, x27
adds x7, x7, x30
umulh x16, x4, x27
mul x30, x5, x27
adcs x16, x16, x30
umulh x17, x5, x27
mul x30, x6, x27
adcs x17, x17, x30
umulh x15, x6, x27
adc x15, x15, xzr
adds x11, x11, x28
adcs x12, x12, x7
adcs x13, x13, x16
adcs x14, x14, x17
adc x15, x15, xzr
mul x30, x12, x18
umulh x4, x12, x18
adds x8, x8, x30
mul x30, x13, x18
umulh x5, x13, x18
adcs x9, x9, x30
mul x30, x14, x18
umulh x6, x14, x18
adcs x10, x10, x30
mul x30, x15, x18
umulh x7, x15, x18
adcs x11, x11, x30
cset x16, cs
adds x11, x11, x6
adc x7, x7, x16
cmn x11, x11
adc x7, x7, x7
mul x7, x7, x19
bic x11, x11, x21
adds x8, x8, x7
adcs x9, x9, x4
adcs x10, x10, x5
adc x11, x11, xzr
stp x8, x9, [x0, #32]
stp x10, x11, [x0, #48]
// mul
ldp x3, x4, [x1, #32]
ldp x5, x6, [x1, #48]
ldp x7, x16, [x1, #96]
ldp x17, x27, [x1, #112]
mul x8, x3, x7
umulh x9, x3, x7
mul x30, x4, x7
adds x9, x9, x30
umulh x10, x4, x7
mul x30, x5, x7
adcs x10, x10, x30
umulh x11, x5, x7
mul x30, x6, x7
adcs x11, x11, x30
umulh x12, x6, x7
adc x12, x12, xzr
mul x28, x3, x16
umulh x7, x3, x16
mul x30, x4, x16
adds x7, x7, x30
umulh x15, x4, x16
mul x30, x5, x16
adcs x15, x15, x30
umulh x14, x5, x16
mul x30, x6, x16
adcs x14, x14, x30
umulh x13, x6, x16
adc x13, x13, xzr
adds x9, x9, x28
adcs x10, x10, x7
adcs x11, x11, x15
adcs x12, x12, x14
adc x13, x13, xzr
mul x28, x3, x17
umulh x7, x3, x17
mul x30, x4, x17
adds x7, x7, x30
umulh x16, x4, x17
mul x30, x5, x17
adcs x16, x16, x30
umulh x15, x5, x17
mul x30, x6, x17
adcs x15, x15, x30
umulh x14, x6, x17
adc x14, x14, xzr
adds x10, x10, x28
adcs x11, x11, x7
adcs x12, x12, x16
adcs x13, x13, x15
adc x14, x14, xzr
mul x28, x3, x27
umulh x7, x3, x27
mul x30, x4, x27
adds x7, x7, x30
umulh x16, x4, x27
mul x30, x5, x27
adcs x16, x16, x30
umulh x17, x5, x27
mul x30, x6, x27
adcs x17, x17, x30
umulh x15, x6, x27
adc x15, x15, xzr
adds x11, x11, x28
adcs x12, x12, x7
adcs x13, x13, x16
adcs x14, x14, x17
adc x15, x15, xzr
mul x30, x12, x18
umulh x4, x12, x18
adds x8, x8, x30
mul x30, x13, x18
umulh x5, x13, x18
adcs x9, x9, x30
mul x30, x14, x18
umulh x6, x14, x18
adcs x10, x10, x30
mul x30, x15, x18
umulh x7, x15, x18
adcs x11, x11, x30
cset x16, cs
adds x11, x11, x6
adc x7, x7, x16
cmn x11, x11
adc x7, x7, x7
mul x7, x7, x19
bic x11, x11, x21
adds x8, x8, x7
adcs x9, x9, x4
adcs x10, x10, x5
adc x11, x11, xzr
stp x8, x9, [x0, #64]
stp x10, x11, [x0, #80]
ldp x29, x30, [sp, #80]
ldp x27, x28, [sp, #64]
ldp x25, x26, [sp, #48]
ldp x23, x24, [sp, #32]
ldp x21, x22, [sp, #16]
ldp x19, x20, [sp, #0]
add sp, sp, #96
ret
.section .note.GNU-stack,"",@progbits