xref: /aosp_15_r20/external/boringssl/src/third_party/fiat/asm/fiat_p256_adx_sqr.S (revision 8fb009dc861624b67b6cdb62ea21f0f22d0c584b)
1#include <openssl/asm_base.h>
2
3#if !defined(OPENSSL_NO_ASM) && defined(OPENSSL_X86_64) && \
4    (defined(__APPLE__) || defined(__ELF__))
5
6.text
7#if defined(__APPLE__)
8.private_extern _fiat_p256_adx_sqr
9.global _fiat_p256_adx_sqr
10_fiat_p256_adx_sqr:
11#else
12.type fiat_p256_adx_sqr, @function
13.hidden fiat_p256_adx_sqr
14.global fiat_p256_adx_sqr
15fiat_p256_adx_sqr:
16#endif
17
18.cfi_startproc
19_CET_ENDBR
20pushq %rbp
21.cfi_adjust_cfa_offset 8
22.cfi_offset rbp, -16
23movq %rsp, %rbp
24movq (%rsi), %rdx
25mulxq 0x18(%rsi), %rax, %r10
26mulxq %rdx, %r11, %rcx
27mulxq 0x8(%rsi), %r8, %r9
28movq %rbx, -0x80(%rsp)
29.cfi_offset rbx, -16-0x80
30xorq %rbx, %rbx
31adoxq %r8, %r8
32movq %r12, -0x78(%rsp)
33.cfi_offset r12, -16-0x78
34mulxq 0x10(%rsi), %rbx, %r12
35movq 0x8(%rsi), %rdx
36movq %r13, -0x70(%rsp)
37.cfi_offset r13, -16-0x70
38movq %r14, -0x68(%rsp)
39.cfi_offset r14, -16-0x68
40mulxq %rdx, %r13, %r14
41movq %r15, -0x60(%rsp)
42.cfi_offset r15, -16-0x60
43movq %rdi, -0x58(%rsp)
44mulxq 0x10(%rsi), %r15, %rdi
45adcxq %r15, %r12
46movq %r11, -0x50(%rsp)
47mulxq 0x18(%rsi), %r15, %r11
48adcxq %rdi, %r10
49movq $0x0, %rdi
50adcxq %rdi, %r11
51clc
52adcxq %r9, %rbx
53adoxq %rbx, %rbx
54adcxq %r12, %rax
55adoxq %rax, %rax
56adcxq %r10, %r15
57adoxq %r15, %r15
58movq 0x10(%rsi), %rdx
59mulxq 0x18(%rsi), %r9, %r12
60adcxq %r11, %r9
61adcxq %rdi, %r12
62mulxq %rdx, %r10, %r11
63clc
64adcxq %r8, %rcx
65adcxq %rbx, %r13
66adcxq %rax, %r14
67adoxq %r9, %r9
68adcxq %r15, %r10
69movq 0x18(%rsi), %rdx
70mulxq %rdx, %r8, %rbx
71adoxq %r12, %r12
72adcxq %r9, %r11
73movq -0x50(%rsp), %rsi
74adcxq %r12, %r8
75movq $0x100000000, %rax
76movq %rax, %rdx
77mulxq %rsi, %rax, %r15
78adcxq %rdi, %rbx
79adoxq %rdi, %rbx
80xorq %r9, %r9
81adoxq %rcx, %rax
82adoxq %r13, %r15
83mulxq %rax, %rdi, %rcx
84adcxq %r15, %rdi
85adoxq %r14, %rcx
86movq $0xffffffff00000001, %rdx
87mulxq %rsi, %r13, %r14
88adoxq %r10, %r14
89adcxq %rcx, %r13
90mulxq %rax, %r10, %r12
91adoxq %r11, %r12
92movq %r9, %r11
93adoxq %r8, %r11
94adcxq %r14, %r10
95movq %r9, %r8
96adcxq %r12, %r8
97movq %r9, %rax
98adcxq %r11, %rax
99movq %r9, %r15
100adoxq %rbx, %r15
101movq $0x100000000, %rdx
102mulxq %rdi, %rbx, %rcx
103movq %r9, %r14
104adcxq %r15, %r14
105movq %r9, %r12
106adoxq %r12, %r12
107adcxq %r9, %r12
108adoxq %r13, %rbx
109mulxq %rbx, %r13, %r11
110movq $0xffffffff00000001, %r15
111movq %r15, %rdx
112mulxq %rbx, %r15, %rsi
113adoxq %r10, %rcx
114adoxq %r8, %r11
115mulxq %rdi, %r10, %r8
116adcxq %rcx, %r13
117adoxq %rax, %r8
118adcxq %r11, %r10
119adoxq %r14, %rsi
120movq %r12, %rdi
121movq %r9, %rax
122adoxq %rax, %rdi
123adcxq %r8, %r15
124movq %rax, %r14
125adcxq %rsi, %r14
126adcxq %r9, %rdi
127decq %r9
128movq %r13, %rbx
129subq %r9, %rbx
130movq $0xffffffff, %rcx
131movq %r10, %r11
132sbbq %rcx, %r11
133movq %r15, %r8
134sbbq %rax, %r8
135movq %r14, %rsi
136sbbq %rdx, %rsi
137sbbq %rax, %rdi
138cmovcq %r13, %rbx
139cmovcq %r15, %r8
140cmovcq %r10, %r11
141cmovcq %r14, %rsi
142movq -0x58(%rsp), %rdi
143movq %rsi, 0x18(%rdi)
144movq %rbx, (%rdi)
145movq %r11, 0x8(%rdi)
146movq %r8, 0x10(%rdi)
147movq -0x80(%rsp), %rbx
148.cfi_restore rbx
149movq -0x78(%rsp), %r12
150.cfi_restore r12
151movq -0x70(%rsp), %r13
152.cfi_restore r13
153movq -0x68(%rsp), %r14
154.cfi_restore r14
155movq -0x60(%rsp), %r15
156.cfi_restore r15
157popq %rbp
158.cfi_restore rbp
159.cfi_adjust_cfa_offset -8
160retq
161.cfi_endproc
162#if defined(__ELF__)
163.size fiat_p256_adx_sqr, .-fiat_p256_adx_sqr
164#endif
165
166#endif
167