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