• 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%ifdef BORINGSSL_PREFIX
5%include "boringssl_prefix_symbols_nasm.inc"
6%endif
7%ifidn __OUTPUT_FORMAT__,obj
8section	code	use32 class=code align=64
9%elifidn __OUTPUT_FORMAT__,win32
10$@feat.00 equ 1
11section	.text	code align=64
12%else
13section	.text	code
14%endif
15global	_gcm_init_clmul
16align	16
17_gcm_init_clmul:
18L$_gcm_init_clmul_begin:
19	mov	edx,DWORD [4+esp]
20	mov	eax,DWORD [8+esp]
21	call	L$000pic
22L$000pic:
23	pop	ecx
24	lea	ecx,[(L$bswap-L$000pic)+ecx]
25	movdqu	xmm2,[eax]
26	pshufd	xmm2,xmm2,78
27	pshufd	xmm4,xmm2,255
28	movdqa	xmm3,xmm2
29	psllq	xmm2,1
30	pxor	xmm5,xmm5
31	psrlq	xmm3,63
32	pcmpgtd	xmm5,xmm4
33	pslldq	xmm3,8
34	por	xmm2,xmm3
35	pand	xmm5,[16+ecx]
36	pxor	xmm2,xmm5
37	movdqa	xmm0,xmm2
38	movdqa	xmm1,xmm0
39	pshufd	xmm3,xmm0,78
40	pshufd	xmm4,xmm2,78
41	pxor	xmm3,xmm0
42	pxor	xmm4,xmm2
43db	102,15,58,68,194,0
44db	102,15,58,68,202,17
45db	102,15,58,68,220,0
46	xorps	xmm3,xmm0
47	xorps	xmm3,xmm1
48	movdqa	xmm4,xmm3
49	psrldq	xmm3,8
50	pslldq	xmm4,8
51	pxor	xmm1,xmm3
52	pxor	xmm0,xmm4
53	movdqa	xmm4,xmm0
54	movdqa	xmm3,xmm0
55	psllq	xmm0,5
56	pxor	xmm3,xmm0
57	psllq	xmm0,1
58	pxor	xmm0,xmm3
59	psllq	xmm0,57
60	movdqa	xmm3,xmm0
61	pslldq	xmm0,8
62	psrldq	xmm3,8
63	pxor	xmm0,xmm4
64	pxor	xmm1,xmm3
65	movdqa	xmm4,xmm0
66	psrlq	xmm0,1
67	pxor	xmm1,xmm4
68	pxor	xmm4,xmm0
69	psrlq	xmm0,5
70	pxor	xmm0,xmm4
71	psrlq	xmm0,1
72	pxor	xmm0,xmm1
73	pshufd	xmm3,xmm2,78
74	pshufd	xmm4,xmm0,78
75	pxor	xmm3,xmm2
76	movdqu	[edx],xmm2
77	pxor	xmm4,xmm0
78	movdqu	[16+edx],xmm0
79db	102,15,58,15,227,8
80	movdqu	[32+edx],xmm4
81	ret
82global	_gcm_gmult_clmul
83align	16
84_gcm_gmult_clmul:
85L$_gcm_gmult_clmul_begin:
86	mov	eax,DWORD [4+esp]
87	mov	edx,DWORD [8+esp]
88	call	L$001pic
89L$001pic:
90	pop	ecx
91	lea	ecx,[(L$bswap-L$001pic)+ecx]
92	movdqu	xmm0,[eax]
93	movdqa	xmm5,[ecx]
94	movups	xmm2,[edx]
95db	102,15,56,0,197
96	movups	xmm4,[32+edx]
97	movdqa	xmm1,xmm0
98	pshufd	xmm3,xmm0,78
99	pxor	xmm3,xmm0
100db	102,15,58,68,194,0
101db	102,15,58,68,202,17
102db	102,15,58,68,220,0
103	xorps	xmm3,xmm0
104	xorps	xmm3,xmm1
105	movdqa	xmm4,xmm3
106	psrldq	xmm3,8
107	pslldq	xmm4,8
108	pxor	xmm1,xmm3
109	pxor	xmm0,xmm4
110	movdqa	xmm4,xmm0
111	movdqa	xmm3,xmm0
112	psllq	xmm0,5
113	pxor	xmm3,xmm0
114	psllq	xmm0,1
115	pxor	xmm0,xmm3
116	psllq	xmm0,57
117	movdqa	xmm3,xmm0
118	pslldq	xmm0,8
119	psrldq	xmm3,8
120	pxor	xmm0,xmm4
121	pxor	xmm1,xmm3
122	movdqa	xmm4,xmm0
123	psrlq	xmm0,1
124	pxor	xmm1,xmm4
125	pxor	xmm4,xmm0
126	psrlq	xmm0,5
127	pxor	xmm0,xmm4
128	psrlq	xmm0,1
129	pxor	xmm0,xmm1
130db	102,15,56,0,197
131	movdqu	[eax],xmm0
132	ret
133global	_gcm_ghash_clmul
134align	16
135_gcm_ghash_clmul:
136L$_gcm_ghash_clmul_begin:
137	push	ebp
138	push	ebx
139	push	esi
140	push	edi
141	mov	eax,DWORD [20+esp]
142	mov	edx,DWORD [24+esp]
143	mov	esi,DWORD [28+esp]
144	mov	ebx,DWORD [32+esp]
145	call	L$002pic
146L$002pic:
147	pop	ecx
148	lea	ecx,[(L$bswap-L$002pic)+ecx]
149	movdqu	xmm0,[eax]
150	movdqa	xmm5,[ecx]
151	movdqu	xmm2,[edx]
152db	102,15,56,0,197
153	sub	ebx,16
154	jz	NEAR L$003odd_tail
155	movdqu	xmm3,[esi]
156	movdqu	xmm6,[16+esi]
157db	102,15,56,0,221
158db	102,15,56,0,245
159	movdqu	xmm5,[32+edx]
160	pxor	xmm0,xmm3
161	pshufd	xmm3,xmm6,78
162	movdqa	xmm7,xmm6
163	pxor	xmm3,xmm6
164	lea	esi,[32+esi]
165db	102,15,58,68,242,0
166db	102,15,58,68,250,17
167db	102,15,58,68,221,0
168	movups	xmm2,[16+edx]
169	nop
170	sub	ebx,32
171	jbe	NEAR L$004even_tail
172	jmp	NEAR L$005mod_loop
173align	32
174L$005mod_loop:
175	pshufd	xmm4,xmm0,78
176	movdqa	xmm1,xmm0
177	pxor	xmm4,xmm0
178	nop
179db	102,15,58,68,194,0
180db	102,15,58,68,202,17
181db	102,15,58,68,229,16
182	movups	xmm2,[edx]
183	xorps	xmm0,xmm6
184	movdqa	xmm5,[ecx]
185	xorps	xmm1,xmm7
186	movdqu	xmm7,[esi]
187	pxor	xmm3,xmm0
188	movdqu	xmm6,[16+esi]
189	pxor	xmm3,xmm1
190db	102,15,56,0,253
191	pxor	xmm4,xmm3
192	movdqa	xmm3,xmm4
193	psrldq	xmm4,8
194	pslldq	xmm3,8
195	pxor	xmm1,xmm4
196	pxor	xmm0,xmm3
197db	102,15,56,0,245
198	pxor	xmm1,xmm7
199	movdqa	xmm7,xmm6
200	movdqa	xmm4,xmm0
201	movdqa	xmm3,xmm0
202	psllq	xmm0,5
203	pxor	xmm3,xmm0
204	psllq	xmm0,1
205	pxor	xmm0,xmm3
206db	102,15,58,68,242,0
207	movups	xmm5,[32+edx]
208	psllq	xmm0,57
209	movdqa	xmm3,xmm0
210	pslldq	xmm0,8
211	psrldq	xmm3,8
212	pxor	xmm0,xmm4
213	pxor	xmm1,xmm3
214	pshufd	xmm3,xmm7,78
215	movdqa	xmm4,xmm0
216	psrlq	xmm0,1
217	pxor	xmm3,xmm7
218	pxor	xmm1,xmm4
219db	102,15,58,68,250,17
220	movups	xmm2,[16+edx]
221	pxor	xmm4,xmm0
222	psrlq	xmm0,5
223	pxor	xmm0,xmm4
224	psrlq	xmm0,1
225	pxor	xmm0,xmm1
226db	102,15,58,68,221,0
227	lea	esi,[32+esi]
228	sub	ebx,32
229	ja	NEAR L$005mod_loop
230L$004even_tail:
231	pshufd	xmm4,xmm0,78
232	movdqa	xmm1,xmm0
233	pxor	xmm4,xmm0
234db	102,15,58,68,194,0
235db	102,15,58,68,202,17
236db	102,15,58,68,229,16
237	movdqa	xmm5,[ecx]
238	xorps	xmm0,xmm6
239	xorps	xmm1,xmm7
240	pxor	xmm3,xmm0
241	pxor	xmm3,xmm1
242	pxor	xmm4,xmm3
243	movdqa	xmm3,xmm4
244	psrldq	xmm4,8
245	pslldq	xmm3,8
246	pxor	xmm1,xmm4
247	pxor	xmm0,xmm3
248	movdqa	xmm4,xmm0
249	movdqa	xmm3,xmm0
250	psllq	xmm0,5
251	pxor	xmm3,xmm0
252	psllq	xmm0,1
253	pxor	xmm0,xmm3
254	psllq	xmm0,57
255	movdqa	xmm3,xmm0
256	pslldq	xmm0,8
257	psrldq	xmm3,8
258	pxor	xmm0,xmm4
259	pxor	xmm1,xmm3
260	movdqa	xmm4,xmm0
261	psrlq	xmm0,1
262	pxor	xmm1,xmm4
263	pxor	xmm4,xmm0
264	psrlq	xmm0,5
265	pxor	xmm0,xmm4
266	psrlq	xmm0,1
267	pxor	xmm0,xmm1
268	test	ebx,ebx
269	jnz	NEAR L$006done
270	movups	xmm2,[edx]
271L$003odd_tail:
272	movdqu	xmm3,[esi]
273db	102,15,56,0,221
274	pxor	xmm0,xmm3
275	movdqa	xmm1,xmm0
276	pshufd	xmm3,xmm0,78
277	pshufd	xmm4,xmm2,78
278	pxor	xmm3,xmm0
279	pxor	xmm4,xmm2
280db	102,15,58,68,194,0
281db	102,15,58,68,202,17
282db	102,15,58,68,220,0
283	xorps	xmm3,xmm0
284	xorps	xmm3,xmm1
285	movdqa	xmm4,xmm3
286	psrldq	xmm3,8
287	pslldq	xmm4,8
288	pxor	xmm1,xmm3
289	pxor	xmm0,xmm4
290	movdqa	xmm4,xmm0
291	movdqa	xmm3,xmm0
292	psllq	xmm0,5
293	pxor	xmm3,xmm0
294	psllq	xmm0,1
295	pxor	xmm0,xmm3
296	psllq	xmm0,57
297	movdqa	xmm3,xmm0
298	pslldq	xmm0,8
299	psrldq	xmm3,8
300	pxor	xmm0,xmm4
301	pxor	xmm1,xmm3
302	movdqa	xmm4,xmm0
303	psrlq	xmm0,1
304	pxor	xmm1,xmm4
305	pxor	xmm4,xmm0
306	psrlq	xmm0,5
307	pxor	xmm0,xmm4
308	psrlq	xmm0,1
309	pxor	xmm0,xmm1
310L$006done:
311db	102,15,56,0,197
312	movdqu	[eax],xmm0
313	pop	edi
314	pop	esi
315	pop	ebx
316	pop	ebp
317	ret
318align	64
319L$bswap:
320db	15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0
321db	1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194
322db	71,72,65,83,72,32,102,111,114,32,120,56,54,44,32,67
323db	82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112
324db	112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62
325db	0
326