xref: /aosp_15_r20/external/cronet/third_party/boringssl/src/gen/bcm/ghash-ssse3-x86_64-linux.S (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
1// 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_64) && defined(__ELF__)
7.text
8
9
10
11
12
13.type	gcm_gmult_ssse3, @function
14.globl	gcm_gmult_ssse3
15.hidden gcm_gmult_ssse3
16.align	16
17gcm_gmult_ssse3:
18.cfi_startproc
19
20_CET_ENDBR
21	movdqu	(%rdi),%xmm0
22	movdqa	.Lreverse_bytes(%rip),%xmm10
23	movdqa	.Llow4_mask(%rip),%xmm2
24
25
26.byte	102,65,15,56,0,194
27
28
29	movdqa	%xmm2,%xmm1
30	pandn	%xmm0,%xmm1
31	psrld	$4,%xmm1
32	pand	%xmm2,%xmm0
33
34
35
36
37	pxor	%xmm2,%xmm2
38	pxor	%xmm3,%xmm3
39	movq	$5,%rax
40.Loop_row_1:
41	movdqa	(%rsi),%xmm4
42	leaq	16(%rsi),%rsi
43
44
45	movdqa	%xmm2,%xmm6
46.byte	102,15,58,15,243,1
47	movdqa	%xmm6,%xmm3
48	psrldq	$1,%xmm2
49
50
51
52
53	movdqa	%xmm4,%xmm5
54.byte	102,15,56,0,224
55.byte	102,15,56,0,233
56
57
58	pxor	%xmm5,%xmm2
59
60
61
62	movdqa	%xmm4,%xmm5
63	psllq	$60,%xmm5
64	movdqa	%xmm5,%xmm6
65	pslldq	$8,%xmm6
66	pxor	%xmm6,%xmm3
67
68
69	psrldq	$8,%xmm5
70	pxor	%xmm5,%xmm2
71	psrlq	$4,%xmm4
72	pxor	%xmm4,%xmm2
73
74	subq	$1,%rax
75	jnz	.Loop_row_1
76
77
78
79	pxor	%xmm3,%xmm2
80	psrlq	$1,%xmm3
81	pxor	%xmm3,%xmm2
82	psrlq	$1,%xmm3
83	pxor	%xmm3,%xmm2
84	psrlq	$5,%xmm3
85	pxor	%xmm3,%xmm2
86	pxor	%xmm3,%xmm3
87	movq	$5,%rax
88.Loop_row_2:
89	movdqa	(%rsi),%xmm4
90	leaq	16(%rsi),%rsi
91
92
93	movdqa	%xmm2,%xmm6
94.byte	102,15,58,15,243,1
95	movdqa	%xmm6,%xmm3
96	psrldq	$1,%xmm2
97
98
99
100
101	movdqa	%xmm4,%xmm5
102.byte	102,15,56,0,224
103.byte	102,15,56,0,233
104
105
106	pxor	%xmm5,%xmm2
107
108
109
110	movdqa	%xmm4,%xmm5
111	psllq	$60,%xmm5
112	movdqa	%xmm5,%xmm6
113	pslldq	$8,%xmm6
114	pxor	%xmm6,%xmm3
115
116
117	psrldq	$8,%xmm5
118	pxor	%xmm5,%xmm2
119	psrlq	$4,%xmm4
120	pxor	%xmm4,%xmm2
121
122	subq	$1,%rax
123	jnz	.Loop_row_2
124
125
126
127	pxor	%xmm3,%xmm2
128	psrlq	$1,%xmm3
129	pxor	%xmm3,%xmm2
130	psrlq	$1,%xmm3
131	pxor	%xmm3,%xmm2
132	psrlq	$5,%xmm3
133	pxor	%xmm3,%xmm2
134	pxor	%xmm3,%xmm3
135	movq	$6,%rax
136.Loop_row_3:
137	movdqa	(%rsi),%xmm4
138	leaq	16(%rsi),%rsi
139
140
141	movdqa	%xmm2,%xmm6
142.byte	102,15,58,15,243,1
143	movdqa	%xmm6,%xmm3
144	psrldq	$1,%xmm2
145
146
147
148
149	movdqa	%xmm4,%xmm5
150.byte	102,15,56,0,224
151.byte	102,15,56,0,233
152
153
154	pxor	%xmm5,%xmm2
155
156
157
158	movdqa	%xmm4,%xmm5
159	psllq	$60,%xmm5
160	movdqa	%xmm5,%xmm6
161	pslldq	$8,%xmm6
162	pxor	%xmm6,%xmm3
163
164
165	psrldq	$8,%xmm5
166	pxor	%xmm5,%xmm2
167	psrlq	$4,%xmm4
168	pxor	%xmm4,%xmm2
169
170	subq	$1,%rax
171	jnz	.Loop_row_3
172
173
174
175	pxor	%xmm3,%xmm2
176	psrlq	$1,%xmm3
177	pxor	%xmm3,%xmm2
178	psrlq	$1,%xmm3
179	pxor	%xmm3,%xmm2
180	psrlq	$5,%xmm3
181	pxor	%xmm3,%xmm2
182	pxor	%xmm3,%xmm3
183
184.byte	102,65,15,56,0,210
185	movdqu	%xmm2,(%rdi)
186
187
188	pxor	%xmm0,%xmm0
189	pxor	%xmm1,%xmm1
190	pxor	%xmm2,%xmm2
191	pxor	%xmm3,%xmm3
192	pxor	%xmm4,%xmm4
193	pxor	%xmm5,%xmm5
194	pxor	%xmm6,%xmm6
195	ret
196.cfi_endproc
197
198.size	gcm_gmult_ssse3,.-gcm_gmult_ssse3
199
200
201
202
203
204.type	gcm_ghash_ssse3, @function
205.globl	gcm_ghash_ssse3
206.hidden gcm_ghash_ssse3
207.align	16
208gcm_ghash_ssse3:
209.cfi_startproc
210
211_CET_ENDBR
212	movdqu	(%rdi),%xmm0
213	movdqa	.Lreverse_bytes(%rip),%xmm10
214	movdqa	.Llow4_mask(%rip),%xmm11
215
216
217	andq	$-16,%rcx
218
219
220
221.byte	102,65,15,56,0,194
222
223
224	pxor	%xmm3,%xmm3
225.Loop_ghash:
226
227	movdqu	(%rdx),%xmm1
228.byte	102,65,15,56,0,202
229	pxor	%xmm1,%xmm0
230
231
232	movdqa	%xmm11,%xmm1
233	pandn	%xmm0,%xmm1
234	psrld	$4,%xmm1
235	pand	%xmm11,%xmm0
236
237
238
239
240	pxor	%xmm2,%xmm2
241
242	movq	$5,%rax
243.Loop_row_4:
244	movdqa	(%rsi),%xmm4
245	leaq	16(%rsi),%rsi
246
247
248	movdqa	%xmm2,%xmm6
249.byte	102,15,58,15,243,1
250	movdqa	%xmm6,%xmm3
251	psrldq	$1,%xmm2
252
253
254
255
256	movdqa	%xmm4,%xmm5
257.byte	102,15,56,0,224
258.byte	102,15,56,0,233
259
260
261	pxor	%xmm5,%xmm2
262
263
264
265	movdqa	%xmm4,%xmm5
266	psllq	$60,%xmm5
267	movdqa	%xmm5,%xmm6
268	pslldq	$8,%xmm6
269	pxor	%xmm6,%xmm3
270
271
272	psrldq	$8,%xmm5
273	pxor	%xmm5,%xmm2
274	psrlq	$4,%xmm4
275	pxor	%xmm4,%xmm2
276
277	subq	$1,%rax
278	jnz	.Loop_row_4
279
280
281
282	pxor	%xmm3,%xmm2
283	psrlq	$1,%xmm3
284	pxor	%xmm3,%xmm2
285	psrlq	$1,%xmm3
286	pxor	%xmm3,%xmm2
287	psrlq	$5,%xmm3
288	pxor	%xmm3,%xmm2
289	pxor	%xmm3,%xmm3
290	movq	$5,%rax
291.Loop_row_5:
292	movdqa	(%rsi),%xmm4
293	leaq	16(%rsi),%rsi
294
295
296	movdqa	%xmm2,%xmm6
297.byte	102,15,58,15,243,1
298	movdqa	%xmm6,%xmm3
299	psrldq	$1,%xmm2
300
301
302
303
304	movdqa	%xmm4,%xmm5
305.byte	102,15,56,0,224
306.byte	102,15,56,0,233
307
308
309	pxor	%xmm5,%xmm2
310
311
312
313	movdqa	%xmm4,%xmm5
314	psllq	$60,%xmm5
315	movdqa	%xmm5,%xmm6
316	pslldq	$8,%xmm6
317	pxor	%xmm6,%xmm3
318
319
320	psrldq	$8,%xmm5
321	pxor	%xmm5,%xmm2
322	psrlq	$4,%xmm4
323	pxor	%xmm4,%xmm2
324
325	subq	$1,%rax
326	jnz	.Loop_row_5
327
328
329
330	pxor	%xmm3,%xmm2
331	psrlq	$1,%xmm3
332	pxor	%xmm3,%xmm2
333	psrlq	$1,%xmm3
334	pxor	%xmm3,%xmm2
335	psrlq	$5,%xmm3
336	pxor	%xmm3,%xmm2
337	pxor	%xmm3,%xmm3
338	movq	$6,%rax
339.Loop_row_6:
340	movdqa	(%rsi),%xmm4
341	leaq	16(%rsi),%rsi
342
343
344	movdqa	%xmm2,%xmm6
345.byte	102,15,58,15,243,1
346	movdqa	%xmm6,%xmm3
347	psrldq	$1,%xmm2
348
349
350
351
352	movdqa	%xmm4,%xmm5
353.byte	102,15,56,0,224
354.byte	102,15,56,0,233
355
356
357	pxor	%xmm5,%xmm2
358
359
360
361	movdqa	%xmm4,%xmm5
362	psllq	$60,%xmm5
363	movdqa	%xmm5,%xmm6
364	pslldq	$8,%xmm6
365	pxor	%xmm6,%xmm3
366
367
368	psrldq	$8,%xmm5
369	pxor	%xmm5,%xmm2
370	psrlq	$4,%xmm4
371	pxor	%xmm4,%xmm2
372
373	subq	$1,%rax
374	jnz	.Loop_row_6
375
376
377
378	pxor	%xmm3,%xmm2
379	psrlq	$1,%xmm3
380	pxor	%xmm3,%xmm2
381	psrlq	$1,%xmm3
382	pxor	%xmm3,%xmm2
383	psrlq	$5,%xmm3
384	pxor	%xmm3,%xmm2
385	pxor	%xmm3,%xmm3
386	movdqa	%xmm2,%xmm0
387
388
389	leaq	-256(%rsi),%rsi
390
391
392	leaq	16(%rdx),%rdx
393	subq	$16,%rcx
394	jnz	.Loop_ghash
395
396
397.byte	102,65,15,56,0,194
398	movdqu	%xmm0,(%rdi)
399
400
401	pxor	%xmm0,%xmm0
402	pxor	%xmm1,%xmm1
403	pxor	%xmm2,%xmm2
404	pxor	%xmm3,%xmm3
405	pxor	%xmm4,%xmm4
406	pxor	%xmm5,%xmm5
407	pxor	%xmm6,%xmm6
408	ret
409.cfi_endproc
410
411.size	gcm_ghash_ssse3,.-gcm_ghash_ssse3
412
413.section	.rodata
414.align	16
415
416
417.Lreverse_bytes:
418.byte	15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0
419
420.Llow4_mask:
421.quad	0x0f0f0f0f0f0f0f0f, 0x0f0f0f0f0f0f0f0f
422.text
423#endif
424