| #include <openssl/asm_base.h> |
| |
| #if !defined(OPENSSL_NO_ASM) && defined(OPENSSL_X86_64) && \ |
| (defined(__APPLE__) || defined(__ELF__)) |
| |
| .text |
| #if defined(__APPLE__) |
| .private_extern _fiat_p256_adx_mul |
| .global _fiat_p256_adx_mul |
| _fiat_p256_adx_mul: |
| #else |
| .type fiat_p256_adx_mul, @function |
| .hidden fiat_p256_adx_mul |
| .global fiat_p256_adx_mul |
| fiat_p256_adx_mul: |
| #endif |
| |
| .cfi_startproc |
| _CET_ENDBR |
| pushq %rbp |
| ;.cfi_adjust_cfa_offset 8 |
| .cfi_offset rbp, -16 |
| movq %rsp, %rbp |
| movq %rdx, %rax |
| movq (%rsi), %rdx |
| testb %al, %al |
| mulxq (%rax), %rcx, %r8 |
| movq %rbx, -0x80(%rsp) |
| .cfi_offset rbx, -16-0x80 |
| mulxq 0x8(%rax), %r9, %rbx |
| movq %r14, -0x68(%rsp) |
| .cfi_offset r14, -16-0x68 |
| adcq %r8, %r9 |
| movq %r15, -0x60(%rsp) |
| .cfi_offset r15, -16-0x60 |
| mulxq 0x10(%rax), %r14, %r15 |
| movq %r12, -0x78(%rsp) |
| .cfi_offset r12, -16-0x78 |
| adcq %rbx, %r14 |
| mulxq 0x18(%rax), %r10, %r11 |
| movq %r13, -0x70(%rsp) |
| .cfi_offset r13, -16-0x70 |
| adcq %r15, %r10 |
| movq 0x8(%rsi), %rdx |
| mulxq (%rax), %r8, %rbx |
| adcq $0x0, %r11 |
| xorq %r15, %r15 |
| adcxq %r9, %r8 |
| adoxq %r14, %rbx |
| movq %rdi, -0x58(%rsp) |
| mulxq 0x8(%rax), %r9, %rdi |
| adcxq %rbx, %r9 |
| adoxq %r10, %rdi |
| mulxq 0x10(%rax), %r14, %rbx |
| adcxq %rdi, %r14 |
| adoxq %r11, %rbx |
| mulxq 0x18(%rax), %r12, %r13 |
| adcxq %rbx, %r12 |
| movq $0x100000000, %rdx |
| mulxq %rcx, %r10, %r11 |
| adoxq %r15, %r13 |
| adcxq %r15, %r13 |
| xorq %rdi, %rdi |
| adoxq %r8, %r10 |
| mulxq %r10, %rbx, %r8 |
| adoxq %r9, %r11 |
| adcxq %r11, %rbx |
| adoxq %r14, %r8 |
| movq $0xffffffff00000001, %rdx |
| mulxq %rcx, %r15, %r9 |
| adcxq %r8, %r15 |
| adoxq %r12, %r9 |
| mulxq %r10, %rcx, %r14 |
| movq 0x10(%rsi), %rdx |
| mulxq 0x8(%rax), %r12, %r10 |
| adcxq %r9, %rcx |
| adoxq %r13, %r14 |
| mulxq (%rax), %r13, %r11 |
| movq %rdi, %r9 |
| adcxq %r9, %r14 |
| adoxq %rdi, %rdi |
| adcq $0x0, %rdi |
| xorq %r9, %r9 |
| adcxq %rbx, %r13 |
| adoxq %r15, %r11 |
| movq 0x10(%rsi), %rdx |
| mulxq 0x10(%rax), %r8, %r15 |
| adoxq %rcx, %r10 |
| mulxq 0x18(%rax), %rbx, %rcx |
| movq 0x18(%rsi), %rdx |
| adcxq %r11, %r12 |
| mulxq 0x8(%rax), %r11, %rsi |
| adcxq %r10, %r8 |
| adoxq %r14, %r15 |
| adcxq %r15, %rbx |
| adoxq %r9, %rcx |
| adcxq %r9, %rcx |
| mulxq (%rax), %r10, %r15 |
| addq %rdi, %rcx |
| movq %r9, %r14 |
| adcq $0x0, %r14 |
| xorq %r9, %r9 |
| adcxq %r12, %r10 |
| adoxq %r8, %r15 |
| adcxq %r15, %r11 |
| adoxq %rbx, %rsi |
| mulxq 0x10(%rax), %r12, %r8 |
| adoxq %rcx, %r8 |
| mulxq 0x18(%rax), %rbx, %rcx |
| adcxq %rsi, %r12 |
| adoxq %r9, %rcx |
| movq $0x100000000, %rdx |
| adcxq %r8, %rbx |
| adcq $0x0, %rcx |
| mulxq %r13, %r15, %rdi |
| xorq %rax, %rax |
| adcxq %r14, %rcx |
| adcq $0x0, %rax |
| xorq %r9, %r9 |
| adoxq %r10, %r15 |
| mulxq %r15, %r10, %r14 |
| adoxq %r11, %rdi |
| movq $0xffffffff00000001, %rdx |
| adoxq %r12, %r14 |
| adcxq %rdi, %r10 |
| mulxq %r13, %r11, %r12 |
| adcxq %r14, %r11 |
| adoxq %rbx, %r12 |
| mulxq %r15, %r13, %rbx |
| adcxq %r12, %r13 |
| adoxq %rcx, %rbx |
| movq %r9, %r8 |
| adoxq %r9, %rax |
| adcxq %rbx, %r8 |
| adcq $0x0, %rax |
| movq %rax, %rcx |
| movq $0xffffffffffffffff, %r15 |
| movq %r10, %rdi |
| subq %r15, %rdi |
| movq $0xffffffff, %r14 |
| movq %r11, %r12 |
| sbbq %r14, %r12 |
| movq %r13, %rbx |
| sbbq %r9, %rbx |
| movq %rax, %rax |
| movq %r8, %rax |
| sbbq %rdx, %rax |
| sbbq %r9, %rcx |
| cmovcq %r10, %rdi |
| movq -0x58(%rsp), %r10 |
| cmovcq %r13, %rbx |
| movq -0x70(%rsp), %r13 |
| .cfi_restore r13 |
| cmovcq %r11, %r12 |
| cmovcq %r8, %rax |
| movq %rbx, 0x10(%r10) |
| movq -0x80(%rsp), %rbx |
| .cfi_restore rbx |
| movq %rdi, (%r10) |
| movq %r12, 0x8(%r10) |
| movq %rax, 0x18(%r10) |
| movq -0x78(%rsp), %r12 |
| .cfi_restore r12 |
| movq -0x68(%rsp), %r14 |
| .cfi_restore r14 |
| movq -0x60(%rsp), %r15 |
| .cfi_restore r15 |
| popq %rbp |
| .cfi_restore rbp |
| .cfi_adjust_cfa_offset -8 |
| retq |
| .cfi_endproc |
| #if defined(__ELF__) |
| .size fiat_p256_adx_mul, .-fiat_p256_adx_mul |
| #endif |
| |
| #endif |