• 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%include "ring_core_generated/prefix_symbols_nasm.inc"
5%ifidn __OUTPUT_FORMAT__,obj
6section	code	use32 class=code align=64
7%elifidn __OUTPUT_FORMAT__,win32
8$@feat.00 equ 1
9section	.text	code align=64
10%else
11section	.text	code
12%endif
13global	_gcm_init_clmul
14align	16
15_gcm_init_clmul:
16L$_gcm_init_clmul_begin:
17	mov	edx,DWORD [4+esp]
18	mov	eax,DWORD [8+esp]
19	call	L$000pic
20L$000pic:
21	pop	ecx
22	lea	ecx,[(L$bswap-L$000pic)+ecx]
23	movdqu	xmm2,[eax]
24	pshufd	xmm2,xmm2,78
25	pshufd	xmm4,xmm2,255
26	movdqa	xmm3,xmm2
27	psllq	xmm2,1
28	pxor	xmm5,xmm5
29	psrlq	xmm3,63
30	pcmpgtd	xmm5,xmm4
31	pslldq	xmm3,8
32	por	xmm2,xmm3
33	pand	xmm5,[16+ecx]
34	pxor	xmm2,xmm5
35	movdqa	xmm0,xmm2
36	movdqa	xmm1,xmm0
37	pshufd	xmm3,xmm0,78
38	pshufd	xmm4,xmm2,78
39	pxor	xmm3,xmm0
40	pxor	xmm4,xmm2
41db	102,15,58,68,194,0
42db	102,15,58,68,202,17
43db	102,15,58,68,220,0
44	xorps	xmm3,xmm0
45	xorps	xmm3,xmm1
46	movdqa	xmm4,xmm3
47	psrldq	xmm3,8
48	pslldq	xmm4,8
49	pxor	xmm1,xmm3
50	pxor	xmm0,xmm4
51	movdqa	xmm4,xmm0
52	movdqa	xmm3,xmm0
53	psllq	xmm0,5
54	pxor	xmm3,xmm0
55	psllq	xmm0,1
56	pxor	xmm0,xmm3
57	psllq	xmm0,57
58	movdqa	xmm3,xmm0
59	pslldq	xmm0,8
60	psrldq	xmm3,8
61	pxor	xmm0,xmm4
62	pxor	xmm1,xmm3
63	movdqa	xmm4,xmm0
64	psrlq	xmm0,1
65	pxor	xmm1,xmm4
66	pxor	xmm4,xmm0
67	psrlq	xmm0,5
68	pxor	xmm0,xmm4
69	psrlq	xmm0,1
70	pxor	xmm0,xmm1
71	pshufd	xmm3,xmm2,78
72	pshufd	xmm4,xmm0,78
73	pxor	xmm3,xmm2
74	movdqu	[edx],xmm2
75	pxor	xmm4,xmm0
76	movdqu	[16+edx],xmm0
77db	102,15,58,15,227,8
78	movdqu	[32+edx],xmm4
79	ret
80global	_gcm_gmult_clmul
81align	16
82_gcm_gmult_clmul:
83L$_gcm_gmult_clmul_begin:
84	mov	eax,DWORD [4+esp]
85	mov	edx,DWORD [8+esp]
86	call	L$001pic
87L$001pic:
88	pop	ecx
89	lea	ecx,[(L$bswap-L$001pic)+ecx]
90	movdqu	xmm0,[eax]
91	movdqa	xmm5,[ecx]
92	movups	xmm2,[edx]
93db	102,15,56,0,197
94	movups	xmm4,[32+edx]
95	movdqa	xmm1,xmm0
96	pshufd	xmm3,xmm0,78
97	pxor	xmm3,xmm0
98db	102,15,58,68,194,0
99db	102,15,58,68,202,17
100db	102,15,58,68,220,0
101	xorps	xmm3,xmm0
102	xorps	xmm3,xmm1
103	movdqa	xmm4,xmm3
104	psrldq	xmm3,8
105	pslldq	xmm4,8
106	pxor	xmm1,xmm3
107	pxor	xmm0,xmm4
108	movdqa	xmm4,xmm0
109	movdqa	xmm3,xmm0
110	psllq	xmm0,5
111	pxor	xmm3,xmm0
112	psllq	xmm0,1
113	pxor	xmm0,xmm3
114	psllq	xmm0,57
115	movdqa	xmm3,xmm0
116	pslldq	xmm0,8
117	psrldq	xmm3,8
118	pxor	xmm0,xmm4
119	pxor	xmm1,xmm3
120	movdqa	xmm4,xmm0
121	psrlq	xmm0,1
122	pxor	xmm1,xmm4
123	pxor	xmm4,xmm0
124	psrlq	xmm0,5
125	pxor	xmm0,xmm4
126	psrlq	xmm0,1
127	pxor	xmm0,xmm1
128db	102,15,56,0,197
129	movdqu	[eax],xmm0
130	ret
131global	_gcm_ghash_clmul
132align	16
133_gcm_ghash_clmul:
134L$_gcm_ghash_clmul_begin:
135	push	ebp
136	push	ebx
137	push	esi
138	push	edi
139	mov	eax,DWORD [20+esp]
140	mov	edx,DWORD [24+esp]
141	mov	esi,DWORD [28+esp]
142	mov	ebx,DWORD [32+esp]
143	call	L$002pic
144L$002pic:
145	pop	ecx
146	lea	ecx,[(L$bswap-L$002pic)+ecx]
147	movdqu	xmm0,[eax]
148	movdqa	xmm5,[ecx]
149	movdqu	xmm2,[edx]
150db	102,15,56,0,197
151	sub	ebx,16
152	jz	NEAR L$003odd_tail
153	movdqu	xmm3,[esi]
154	movdqu	xmm6,[16+esi]
155db	102,15,56,0,221
156db	102,15,56,0,245
157	movdqu	xmm5,[32+edx]
158	pxor	xmm0,xmm3
159	pshufd	xmm3,xmm6,78
160	movdqa	xmm7,xmm6
161	pxor	xmm3,xmm6
162	lea	esi,[32+esi]
163db	102,15,58,68,242,0
164db	102,15,58,68,250,17
165db	102,15,58,68,221,0
166	movups	xmm2,[16+edx]
167	nop
168	sub	ebx,32
169	jbe	NEAR L$004even_tail
170	jmp	NEAR L$005mod_loop
171align	32
172L$005mod_loop:
173	pshufd	xmm4,xmm0,78
174	movdqa	xmm1,xmm0
175	pxor	xmm4,xmm0
176	nop
177db	102,15,58,68,194,0
178db	102,15,58,68,202,17
179db	102,15,58,68,229,16
180	movups	xmm2,[edx]
181	xorps	xmm0,xmm6
182	movdqa	xmm5,[ecx]
183	xorps	xmm1,xmm7
184	movdqu	xmm7,[esi]
185	pxor	xmm3,xmm0
186	movdqu	xmm6,[16+esi]
187	pxor	xmm3,xmm1
188db	102,15,56,0,253
189	pxor	xmm4,xmm3
190	movdqa	xmm3,xmm4
191	psrldq	xmm4,8
192	pslldq	xmm3,8
193	pxor	xmm1,xmm4
194	pxor	xmm0,xmm3
195db	102,15,56,0,245
196	pxor	xmm1,xmm7
197	movdqa	xmm7,xmm6
198	movdqa	xmm4,xmm0
199	movdqa	xmm3,xmm0
200	psllq	xmm0,5
201	pxor	xmm3,xmm0
202	psllq	xmm0,1
203	pxor	xmm0,xmm3
204db	102,15,58,68,242,0
205	movups	xmm5,[32+edx]
206	psllq	xmm0,57
207	movdqa	xmm3,xmm0
208	pslldq	xmm0,8
209	psrldq	xmm3,8
210	pxor	xmm0,xmm4
211	pxor	xmm1,xmm3
212	pshufd	xmm3,xmm7,78
213	movdqa	xmm4,xmm0
214	psrlq	xmm0,1
215	pxor	xmm3,xmm7
216	pxor	xmm1,xmm4
217db	102,15,58,68,250,17
218	movups	xmm2,[16+edx]
219	pxor	xmm4,xmm0
220	psrlq	xmm0,5
221	pxor	xmm0,xmm4
222	psrlq	xmm0,1
223	pxor	xmm0,xmm1
224db	102,15,58,68,221,0
225	lea	esi,[32+esi]
226	sub	ebx,32
227	ja	NEAR L$005mod_loop
228L$004even_tail:
229	pshufd	xmm4,xmm0,78
230	movdqa	xmm1,xmm0
231	pxor	xmm4,xmm0
232db	102,15,58,68,194,0
233db	102,15,58,68,202,17
234db	102,15,58,68,229,16
235	movdqa	xmm5,[ecx]
236	xorps	xmm0,xmm6
237	xorps	xmm1,xmm7
238	pxor	xmm3,xmm0
239	pxor	xmm3,xmm1
240	pxor	xmm4,xmm3
241	movdqa	xmm3,xmm4
242	psrldq	xmm4,8
243	pslldq	xmm3,8
244	pxor	xmm1,xmm4
245	pxor	xmm0,xmm3
246	movdqa	xmm4,xmm0
247	movdqa	xmm3,xmm0
248	psllq	xmm0,5
249	pxor	xmm3,xmm0
250	psllq	xmm0,1
251	pxor	xmm0,xmm3
252	psllq	xmm0,57
253	movdqa	xmm3,xmm0
254	pslldq	xmm0,8
255	psrldq	xmm3,8
256	pxor	xmm0,xmm4
257	pxor	xmm1,xmm3
258	movdqa	xmm4,xmm0
259	psrlq	xmm0,1
260	pxor	xmm1,xmm4
261	pxor	xmm4,xmm0
262	psrlq	xmm0,5
263	pxor	xmm0,xmm4
264	psrlq	xmm0,1
265	pxor	xmm0,xmm1
266	test	ebx,ebx
267	jnz	NEAR L$006done
268	movups	xmm2,[edx]
269L$003odd_tail:
270	movdqu	xmm3,[esi]
271db	102,15,56,0,221
272	pxor	xmm0,xmm3
273	movdqa	xmm1,xmm0
274	pshufd	xmm3,xmm0,78
275	pshufd	xmm4,xmm2,78
276	pxor	xmm3,xmm0
277	pxor	xmm4,xmm2
278db	102,15,58,68,194,0
279db	102,15,58,68,202,17
280db	102,15,58,68,220,0
281	xorps	xmm3,xmm0
282	xorps	xmm3,xmm1
283	movdqa	xmm4,xmm3
284	psrldq	xmm3,8
285	pslldq	xmm4,8
286	pxor	xmm1,xmm3
287	pxor	xmm0,xmm4
288	movdqa	xmm4,xmm0
289	movdqa	xmm3,xmm0
290	psllq	xmm0,5
291	pxor	xmm3,xmm0
292	psllq	xmm0,1
293	pxor	xmm0,xmm3
294	psllq	xmm0,57
295	movdqa	xmm3,xmm0
296	pslldq	xmm0,8
297	psrldq	xmm3,8
298	pxor	xmm0,xmm4
299	pxor	xmm1,xmm3
300	movdqa	xmm4,xmm0
301	psrlq	xmm0,1
302	pxor	xmm1,xmm4
303	pxor	xmm4,xmm0
304	psrlq	xmm0,5
305	pxor	xmm0,xmm4
306	psrlq	xmm0,1
307	pxor	xmm0,xmm1
308L$006done:
309db	102,15,56,0,197
310	movdqu	[eax],xmm0
311	pop	edi
312	pop	esi
313	pop	ebx
314	pop	ebp
315	ret
316align	64
317L$bswap:
318db	15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0
319db	1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194
320align	64
321L$007rem_8bit:
322dw	0,450,900,582,1800,1738,1164,1358
323dw	3600,4050,3476,3158,2328,2266,2716,2910
324dw	7200,7650,8100,7782,6952,6890,6316,6510
325dw	4656,5106,4532,4214,5432,5370,5820,6014
326dw	14400,14722,15300,14854,16200,16010,15564,15630
327dw	13904,14226,13780,13334,12632,12442,13020,13086
328dw	9312,9634,10212,9766,9064,8874,8428,8494
329dw	10864,11186,10740,10294,11640,11450,12028,12094
330dw	28800,28994,29444,29382,30600,30282,29708,30158
331dw	32400,32594,32020,31958,31128,30810,31260,31710
332dw	27808,28002,28452,28390,27560,27242,26668,27118
333dw	25264,25458,24884,24822,26040,25722,26172,26622
334dw	18624,18690,19268,19078,20424,19978,19532,19854
335dw	18128,18194,17748,17558,16856,16410,16988,17310
336dw	21728,21794,22372,22182,21480,21034,20588,20910
337dw	23280,23346,22900,22710,24056,23610,24188,24510
338dw	57600,57538,57988,58182,58888,59338,58764,58446
339dw	61200,61138,60564,60758,59416,59866,60316,59998
340dw	64800,64738,65188,65382,64040,64490,63916,63598
341dw	62256,62194,61620,61814,62520,62970,63420,63102
342dw	55616,55426,56004,56070,56904,57226,56780,56334
343dw	55120,54930,54484,54550,53336,53658,54236,53790
344dw	50528,50338,50916,50982,49768,50090,49644,49198
345dw	52080,51890,51444,51510,52344,52666,53244,52798
346dw	37248,36930,37380,37830,38536,38730,38156,38094
347dw	40848,40530,39956,40406,39064,39258,39708,39646
348dw	36256,35938,36388,36838,35496,35690,35116,35054
349dw	33712,33394,32820,33270,33976,34170,34620,34558
350dw	43456,43010,43588,43910,44744,44810,44364,44174
351dw	42960,42514,42068,42390,41176,41242,41820,41630
352dw	46560,46114,46692,47014,45800,45866,45420,45230
353dw	48112,47666,47220,47542,48376,48442,49020,48830
354db	71,72,65,83,72,32,102,111,114,32,120,56,54,44,32,67
355db	82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112
356db	112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62
357db	0
358