blob: c897efcd965e94896390df3d5a3c2632432adfb9 [file] [log] [blame]
David Benjaminfe0c91e2024-03-18 15:37:24 +10001// This file is generated from a similarly-named Perl script in the BoringSSL
2// source tree. Do not edit by hand.
3
4#include <openssl/asm_base.h>
5
6#if !defined(OPENSSL_NO_ASM) && defined(OPENSSL_X86) && defined(__ELF__)
7.text
8.globl gcm_init_clmul
9.hidden gcm_init_clmul
10.type gcm_init_clmul,@function
11.align 16
12gcm_init_clmul:
13.L_gcm_init_clmul_begin:
14 movl 4(%esp),%edx
15 movl 8(%esp),%eax
16 call .L000pic
17.L000pic:
18 popl %ecx
19 leal .Lbswap-.L000pic(%ecx),%ecx
20 movdqu (%eax),%xmm2
21 pshufd $78,%xmm2,%xmm2
22 pshufd $255,%xmm2,%xmm4
23 movdqa %xmm2,%xmm3
24 psllq $1,%xmm2
25 pxor %xmm5,%xmm5
26 psrlq $63,%xmm3
27 pcmpgtd %xmm4,%xmm5
28 pslldq $8,%xmm3
29 por %xmm3,%xmm2
30 pand 16(%ecx),%xmm5
31 pxor %xmm5,%xmm2
32 movdqa %xmm2,%xmm0
33 movdqa %xmm0,%xmm1
34 pshufd $78,%xmm0,%xmm3
35 pshufd $78,%xmm2,%xmm4
36 pxor %xmm0,%xmm3
37 pxor %xmm2,%xmm4
38.byte 102,15,58,68,194,0
39.byte 102,15,58,68,202,17
40.byte 102,15,58,68,220,0
41 xorps %xmm0,%xmm3
42 xorps %xmm1,%xmm3
43 movdqa %xmm3,%xmm4
44 psrldq $8,%xmm3
45 pslldq $8,%xmm4
46 pxor %xmm3,%xmm1
47 pxor %xmm4,%xmm0
48 movdqa %xmm0,%xmm4
49 movdqa %xmm0,%xmm3
50 psllq $5,%xmm0
51 pxor %xmm0,%xmm3
52 psllq $1,%xmm0
53 pxor %xmm3,%xmm0
54 psllq $57,%xmm0
55 movdqa %xmm0,%xmm3
56 pslldq $8,%xmm0
57 psrldq $8,%xmm3
58 pxor %xmm4,%xmm0
59 pxor %xmm3,%xmm1
60 movdqa %xmm0,%xmm4
61 psrlq $1,%xmm0
62 pxor %xmm4,%xmm1
63 pxor %xmm0,%xmm4
64 psrlq $5,%xmm0
65 pxor %xmm4,%xmm0
66 psrlq $1,%xmm0
67 pxor %xmm1,%xmm0
68 pshufd $78,%xmm2,%xmm3
69 pshufd $78,%xmm0,%xmm4
70 pxor %xmm2,%xmm3
71 movdqu %xmm2,(%edx)
72 pxor %xmm0,%xmm4
73 movdqu %xmm0,16(%edx)
74.byte 102,15,58,15,227,8
75 movdqu %xmm4,32(%edx)
76 ret
77.size gcm_init_clmul,.-.L_gcm_init_clmul_begin
78.globl gcm_gmult_clmul
79.hidden gcm_gmult_clmul
80.type gcm_gmult_clmul,@function
81.align 16
82gcm_gmult_clmul:
83.L_gcm_gmult_clmul_begin:
84 movl 4(%esp),%eax
85 movl 8(%esp),%edx
86 call .L001pic
87.L001pic:
88 popl %ecx
89 leal .Lbswap-.L001pic(%ecx),%ecx
90 movdqu (%eax),%xmm0
91 movdqa (%ecx),%xmm5
92 movups (%edx),%xmm2
93.byte 102,15,56,0,197
94 movups 32(%edx),%xmm4
95 movdqa %xmm0,%xmm1
96 pshufd $78,%xmm0,%xmm3
97 pxor %xmm0,%xmm3
98.byte 102,15,58,68,194,0
99.byte 102,15,58,68,202,17
100.byte 102,15,58,68,220,0
101 xorps %xmm0,%xmm3
102 xorps %xmm1,%xmm3
103 movdqa %xmm3,%xmm4
104 psrldq $8,%xmm3
105 pslldq $8,%xmm4
106 pxor %xmm3,%xmm1
107 pxor %xmm4,%xmm0
108 movdqa %xmm0,%xmm4
109 movdqa %xmm0,%xmm3
110 psllq $5,%xmm0
111 pxor %xmm0,%xmm3
112 psllq $1,%xmm0
113 pxor %xmm3,%xmm0
114 psllq $57,%xmm0
115 movdqa %xmm0,%xmm3
116 pslldq $8,%xmm0
117 psrldq $8,%xmm3
118 pxor %xmm4,%xmm0
119 pxor %xmm3,%xmm1
120 movdqa %xmm0,%xmm4
121 psrlq $1,%xmm0
122 pxor %xmm4,%xmm1
123 pxor %xmm0,%xmm4
124 psrlq $5,%xmm0
125 pxor %xmm4,%xmm0
126 psrlq $1,%xmm0
127 pxor %xmm1,%xmm0
128.byte 102,15,56,0,197
129 movdqu %xmm0,(%eax)
130 ret
131.size gcm_gmult_clmul,.-.L_gcm_gmult_clmul_begin
132.globl gcm_ghash_clmul
133.hidden gcm_ghash_clmul
134.type gcm_ghash_clmul,@function
135.align 16
136gcm_ghash_clmul:
137.L_gcm_ghash_clmul_begin:
138 pushl %ebp
139 pushl %ebx
140 pushl %esi
141 pushl %edi
142 movl 20(%esp),%eax
143 movl 24(%esp),%edx
144 movl 28(%esp),%esi
145 movl 32(%esp),%ebx
146 call .L002pic
147.L002pic:
148 popl %ecx
149 leal .Lbswap-.L002pic(%ecx),%ecx
150 movdqu (%eax),%xmm0
151 movdqa (%ecx),%xmm5
152 movdqu (%edx),%xmm2
153.byte 102,15,56,0,197
154 subl $16,%ebx
155 jz .L003odd_tail
156 movdqu (%esi),%xmm3
157 movdqu 16(%esi),%xmm6
158.byte 102,15,56,0,221
159.byte 102,15,56,0,245
160 movdqu 32(%edx),%xmm5
161 pxor %xmm3,%xmm0
162 pshufd $78,%xmm6,%xmm3
163 movdqa %xmm6,%xmm7
164 pxor %xmm6,%xmm3
165 leal 32(%esi),%esi
166.byte 102,15,58,68,242,0
167.byte 102,15,58,68,250,17
168.byte 102,15,58,68,221,0
169 movups 16(%edx),%xmm2
170 nop
171 subl $32,%ebx
172 jbe .L004even_tail
173 jmp .L005mod_loop
174.align 32
175.L005mod_loop:
176 pshufd $78,%xmm0,%xmm4
177 movdqa %xmm0,%xmm1
178 pxor %xmm0,%xmm4
179 nop
180.byte 102,15,58,68,194,0
181.byte 102,15,58,68,202,17
182.byte 102,15,58,68,229,16
183 movups (%edx),%xmm2
184 xorps %xmm6,%xmm0
185 movdqa (%ecx),%xmm5
186 xorps %xmm7,%xmm1
187 movdqu (%esi),%xmm7
188 pxor %xmm0,%xmm3
189 movdqu 16(%esi),%xmm6
190 pxor %xmm1,%xmm3
191.byte 102,15,56,0,253
192 pxor %xmm3,%xmm4
193 movdqa %xmm4,%xmm3
194 psrldq $8,%xmm4
195 pslldq $8,%xmm3
196 pxor %xmm4,%xmm1
197 pxor %xmm3,%xmm0
198.byte 102,15,56,0,245
199 pxor %xmm7,%xmm1
200 movdqa %xmm6,%xmm7
201 movdqa %xmm0,%xmm4
202 movdqa %xmm0,%xmm3
203 psllq $5,%xmm0
204 pxor %xmm0,%xmm3
205 psllq $1,%xmm0
206 pxor %xmm3,%xmm0
207.byte 102,15,58,68,242,0
208 movups 32(%edx),%xmm5
209 psllq $57,%xmm0
210 movdqa %xmm0,%xmm3
211 pslldq $8,%xmm0
212 psrldq $8,%xmm3
213 pxor %xmm4,%xmm0
214 pxor %xmm3,%xmm1
215 pshufd $78,%xmm7,%xmm3
216 movdqa %xmm0,%xmm4
217 psrlq $1,%xmm0
218 pxor %xmm7,%xmm3
219 pxor %xmm4,%xmm1
220.byte 102,15,58,68,250,17
221 movups 16(%edx),%xmm2
222 pxor %xmm0,%xmm4
223 psrlq $5,%xmm0
224 pxor %xmm4,%xmm0
225 psrlq $1,%xmm0
226 pxor %xmm1,%xmm0
227.byte 102,15,58,68,221,0
228 leal 32(%esi),%esi
229 subl $32,%ebx
230 ja .L005mod_loop
231.L004even_tail:
232 pshufd $78,%xmm0,%xmm4
233 movdqa %xmm0,%xmm1
234 pxor %xmm0,%xmm4
235.byte 102,15,58,68,194,0
236.byte 102,15,58,68,202,17
237.byte 102,15,58,68,229,16
238 movdqa (%ecx),%xmm5
239 xorps %xmm6,%xmm0
240 xorps %xmm7,%xmm1
241 pxor %xmm0,%xmm3
242 pxor %xmm1,%xmm3
243 pxor %xmm3,%xmm4
244 movdqa %xmm4,%xmm3
245 psrldq $8,%xmm4
246 pslldq $8,%xmm3
247 pxor %xmm4,%xmm1
248 pxor %xmm3,%xmm0
249 movdqa %xmm0,%xmm4
250 movdqa %xmm0,%xmm3
251 psllq $5,%xmm0
252 pxor %xmm0,%xmm3
253 psllq $1,%xmm0
254 pxor %xmm3,%xmm0
255 psllq $57,%xmm0
256 movdqa %xmm0,%xmm3
257 pslldq $8,%xmm0
258 psrldq $8,%xmm3
259 pxor %xmm4,%xmm0
260 pxor %xmm3,%xmm1
261 movdqa %xmm0,%xmm4
262 psrlq $1,%xmm0
263 pxor %xmm4,%xmm1
264 pxor %xmm0,%xmm4
265 psrlq $5,%xmm0
266 pxor %xmm4,%xmm0
267 psrlq $1,%xmm0
268 pxor %xmm1,%xmm0
269 testl %ebx,%ebx
270 jnz .L006done
271 movups (%edx),%xmm2
272.L003odd_tail:
273 movdqu (%esi),%xmm3
274.byte 102,15,56,0,221
275 pxor %xmm3,%xmm0
276 movdqa %xmm0,%xmm1
277 pshufd $78,%xmm0,%xmm3
278 pshufd $78,%xmm2,%xmm4
279 pxor %xmm0,%xmm3
280 pxor %xmm2,%xmm4
281.byte 102,15,58,68,194,0
282.byte 102,15,58,68,202,17
283.byte 102,15,58,68,220,0
284 xorps %xmm0,%xmm3
285 xorps %xmm1,%xmm3
286 movdqa %xmm3,%xmm4
287 psrldq $8,%xmm3
288 pslldq $8,%xmm4
289 pxor %xmm3,%xmm1
290 pxor %xmm4,%xmm0
291 movdqa %xmm0,%xmm4
292 movdqa %xmm0,%xmm3
293 psllq $5,%xmm0
294 pxor %xmm0,%xmm3
295 psllq $1,%xmm0
296 pxor %xmm3,%xmm0
297 psllq $57,%xmm0
298 movdqa %xmm0,%xmm3
299 pslldq $8,%xmm0
300 psrldq $8,%xmm3
301 pxor %xmm4,%xmm0
302 pxor %xmm3,%xmm1
303 movdqa %xmm0,%xmm4
304 psrlq $1,%xmm0
305 pxor %xmm4,%xmm1
306 pxor %xmm0,%xmm4
307 psrlq $5,%xmm0
308 pxor %xmm4,%xmm0
309 psrlq $1,%xmm0
310 pxor %xmm1,%xmm0
311.L006done:
312.byte 102,15,56,0,197
313 movdqu %xmm0,(%eax)
314 popl %edi
315 popl %esi
316 popl %ebx
317 popl %ebp
318 ret
319.size gcm_ghash_clmul,.-.L_gcm_ghash_clmul_begin
320.align 64
321.Lbswap:
322.byte 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0
323.byte 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194
324.byte 71,72,65,83,72,32,102,111,114,32,120,56,54,44,32,67
325.byte 82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112
326.byte 112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62
327.byte 0
328#endif // !defined(OPENSSL_NO_ASM) && defined(OPENSSL_X86) && defined(__ELF__)