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