xref: /aosp_15_r20/external/cronet/third_party/boringssl/src/gen/bcm/ghash-ssse3-x86-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) && defined(__ELF__)
7.text
8.globl	gcm_gmult_ssse3
9.hidden	gcm_gmult_ssse3
10.type	gcm_gmult_ssse3,@function
11.align	16
12gcm_gmult_ssse3:
13.L_gcm_gmult_ssse3_begin:
14	pushl	%ebp
15	pushl	%ebx
16	pushl	%esi
17	pushl	%edi
18	movl	20(%esp),%edi
19	movl	24(%esp),%esi
20	movdqu	(%edi),%xmm0
21	call	.L000pic_point
22.L000pic_point:
23	popl	%eax
24	movdqa	.Lreverse_bytes-.L000pic_point(%eax),%xmm7
25	movdqa	.Llow4_mask-.L000pic_point(%eax),%xmm2
26.byte	102,15,56,0,199
27	movdqa	%xmm2,%xmm1
28	pandn	%xmm0,%xmm1
29	psrld	$4,%xmm1
30	pand	%xmm2,%xmm0
31	pxor	%xmm2,%xmm2
32	pxor	%xmm3,%xmm3
33	movl	$5,%eax
34.L001loop_row_1:
35	movdqa	(%esi),%xmm4
36	leal	16(%esi),%esi
37	movdqa	%xmm2,%xmm6
38.byte	102,15,58,15,243,1
39	movdqa	%xmm6,%xmm3
40	psrldq	$1,%xmm2
41	movdqa	%xmm4,%xmm5
42.byte	102,15,56,0,224
43.byte	102,15,56,0,233
44	pxor	%xmm5,%xmm2
45	movdqa	%xmm4,%xmm5
46	psllq	$60,%xmm5
47	movdqa	%xmm5,%xmm6
48	pslldq	$8,%xmm6
49	pxor	%xmm6,%xmm3
50	psrldq	$8,%xmm5
51	pxor	%xmm5,%xmm2
52	psrlq	$4,%xmm4
53	pxor	%xmm4,%xmm2
54	subl	$1,%eax
55	jnz	.L001loop_row_1
56	pxor	%xmm3,%xmm2
57	psrlq	$1,%xmm3
58	pxor	%xmm3,%xmm2
59	psrlq	$1,%xmm3
60	pxor	%xmm3,%xmm2
61	psrlq	$5,%xmm3
62	pxor	%xmm3,%xmm2
63	pxor	%xmm3,%xmm3
64	movl	$5,%eax
65.L002loop_row_2:
66	movdqa	(%esi),%xmm4
67	leal	16(%esi),%esi
68	movdqa	%xmm2,%xmm6
69.byte	102,15,58,15,243,1
70	movdqa	%xmm6,%xmm3
71	psrldq	$1,%xmm2
72	movdqa	%xmm4,%xmm5
73.byte	102,15,56,0,224
74.byte	102,15,56,0,233
75	pxor	%xmm5,%xmm2
76	movdqa	%xmm4,%xmm5
77	psllq	$60,%xmm5
78	movdqa	%xmm5,%xmm6
79	pslldq	$8,%xmm6
80	pxor	%xmm6,%xmm3
81	psrldq	$8,%xmm5
82	pxor	%xmm5,%xmm2
83	psrlq	$4,%xmm4
84	pxor	%xmm4,%xmm2
85	subl	$1,%eax
86	jnz	.L002loop_row_2
87	pxor	%xmm3,%xmm2
88	psrlq	$1,%xmm3
89	pxor	%xmm3,%xmm2
90	psrlq	$1,%xmm3
91	pxor	%xmm3,%xmm2
92	psrlq	$5,%xmm3
93	pxor	%xmm3,%xmm2
94	pxor	%xmm3,%xmm3
95	movl	$6,%eax
96.L003loop_row_3:
97	movdqa	(%esi),%xmm4
98	leal	16(%esi),%esi
99	movdqa	%xmm2,%xmm6
100.byte	102,15,58,15,243,1
101	movdqa	%xmm6,%xmm3
102	psrldq	$1,%xmm2
103	movdqa	%xmm4,%xmm5
104.byte	102,15,56,0,224
105.byte	102,15,56,0,233
106	pxor	%xmm5,%xmm2
107	movdqa	%xmm4,%xmm5
108	psllq	$60,%xmm5
109	movdqa	%xmm5,%xmm6
110	pslldq	$8,%xmm6
111	pxor	%xmm6,%xmm3
112	psrldq	$8,%xmm5
113	pxor	%xmm5,%xmm2
114	psrlq	$4,%xmm4
115	pxor	%xmm4,%xmm2
116	subl	$1,%eax
117	jnz	.L003loop_row_3
118	pxor	%xmm3,%xmm2
119	psrlq	$1,%xmm3
120	pxor	%xmm3,%xmm2
121	psrlq	$1,%xmm3
122	pxor	%xmm3,%xmm2
123	psrlq	$5,%xmm3
124	pxor	%xmm3,%xmm2
125	pxor	%xmm3,%xmm3
126.byte	102,15,56,0,215
127	movdqu	%xmm2,(%edi)
128	pxor	%xmm0,%xmm0
129	pxor	%xmm1,%xmm1
130	pxor	%xmm2,%xmm2
131	pxor	%xmm3,%xmm3
132	pxor	%xmm4,%xmm4
133	pxor	%xmm5,%xmm5
134	pxor	%xmm6,%xmm6
135	popl	%edi
136	popl	%esi
137	popl	%ebx
138	popl	%ebp
139	ret
140.size	gcm_gmult_ssse3,.-.L_gcm_gmult_ssse3_begin
141.globl	gcm_ghash_ssse3
142.hidden	gcm_ghash_ssse3
143.type	gcm_ghash_ssse3,@function
144.align	16
145gcm_ghash_ssse3:
146.L_gcm_ghash_ssse3_begin:
147	pushl	%ebp
148	pushl	%ebx
149	pushl	%esi
150	pushl	%edi
151	movl	20(%esp),%edi
152	movl	24(%esp),%esi
153	movl	28(%esp),%edx
154	movl	32(%esp),%ecx
155	movdqu	(%edi),%xmm0
156	call	.L004pic_point
157.L004pic_point:
158	popl	%ebx
159	movdqa	.Lreverse_bytes-.L004pic_point(%ebx),%xmm7
160	andl	$-16,%ecx
161.byte	102,15,56,0,199
162	pxor	%xmm3,%xmm3
163.L005loop_ghash:
164	movdqa	.Llow4_mask-.L004pic_point(%ebx),%xmm2
165	movdqu	(%edx),%xmm1
166.byte	102,15,56,0,207
167	pxor	%xmm1,%xmm0
168	movdqa	%xmm2,%xmm1
169	pandn	%xmm0,%xmm1
170	psrld	$4,%xmm1
171	pand	%xmm2,%xmm0
172	pxor	%xmm2,%xmm2
173	movl	$5,%eax
174.L006loop_row_4:
175	movdqa	(%esi),%xmm4
176	leal	16(%esi),%esi
177	movdqa	%xmm2,%xmm6
178.byte	102,15,58,15,243,1
179	movdqa	%xmm6,%xmm3
180	psrldq	$1,%xmm2
181	movdqa	%xmm4,%xmm5
182.byte	102,15,56,0,224
183.byte	102,15,56,0,233
184	pxor	%xmm5,%xmm2
185	movdqa	%xmm4,%xmm5
186	psllq	$60,%xmm5
187	movdqa	%xmm5,%xmm6
188	pslldq	$8,%xmm6
189	pxor	%xmm6,%xmm3
190	psrldq	$8,%xmm5
191	pxor	%xmm5,%xmm2
192	psrlq	$4,%xmm4
193	pxor	%xmm4,%xmm2
194	subl	$1,%eax
195	jnz	.L006loop_row_4
196	pxor	%xmm3,%xmm2
197	psrlq	$1,%xmm3
198	pxor	%xmm3,%xmm2
199	psrlq	$1,%xmm3
200	pxor	%xmm3,%xmm2
201	psrlq	$5,%xmm3
202	pxor	%xmm3,%xmm2
203	pxor	%xmm3,%xmm3
204	movl	$5,%eax
205.L007loop_row_5:
206	movdqa	(%esi),%xmm4
207	leal	16(%esi),%esi
208	movdqa	%xmm2,%xmm6
209.byte	102,15,58,15,243,1
210	movdqa	%xmm6,%xmm3
211	psrldq	$1,%xmm2
212	movdqa	%xmm4,%xmm5
213.byte	102,15,56,0,224
214.byte	102,15,56,0,233
215	pxor	%xmm5,%xmm2
216	movdqa	%xmm4,%xmm5
217	psllq	$60,%xmm5
218	movdqa	%xmm5,%xmm6
219	pslldq	$8,%xmm6
220	pxor	%xmm6,%xmm3
221	psrldq	$8,%xmm5
222	pxor	%xmm5,%xmm2
223	psrlq	$4,%xmm4
224	pxor	%xmm4,%xmm2
225	subl	$1,%eax
226	jnz	.L007loop_row_5
227	pxor	%xmm3,%xmm2
228	psrlq	$1,%xmm3
229	pxor	%xmm3,%xmm2
230	psrlq	$1,%xmm3
231	pxor	%xmm3,%xmm2
232	psrlq	$5,%xmm3
233	pxor	%xmm3,%xmm2
234	pxor	%xmm3,%xmm3
235	movl	$6,%eax
236.L008loop_row_6:
237	movdqa	(%esi),%xmm4
238	leal	16(%esi),%esi
239	movdqa	%xmm2,%xmm6
240.byte	102,15,58,15,243,1
241	movdqa	%xmm6,%xmm3
242	psrldq	$1,%xmm2
243	movdqa	%xmm4,%xmm5
244.byte	102,15,56,0,224
245.byte	102,15,56,0,233
246	pxor	%xmm5,%xmm2
247	movdqa	%xmm4,%xmm5
248	psllq	$60,%xmm5
249	movdqa	%xmm5,%xmm6
250	pslldq	$8,%xmm6
251	pxor	%xmm6,%xmm3
252	psrldq	$8,%xmm5
253	pxor	%xmm5,%xmm2
254	psrlq	$4,%xmm4
255	pxor	%xmm4,%xmm2
256	subl	$1,%eax
257	jnz	.L008loop_row_6
258	pxor	%xmm3,%xmm2
259	psrlq	$1,%xmm3
260	pxor	%xmm3,%xmm2
261	psrlq	$1,%xmm3
262	pxor	%xmm3,%xmm2
263	psrlq	$5,%xmm3
264	pxor	%xmm3,%xmm2
265	pxor	%xmm3,%xmm3
266	movdqa	%xmm2,%xmm0
267	leal	-256(%esi),%esi
268	leal	16(%edx),%edx
269	subl	$16,%ecx
270	jnz	.L005loop_ghash
271.byte	102,15,56,0,199
272	movdqu	%xmm0,(%edi)
273	pxor	%xmm0,%xmm0
274	pxor	%xmm1,%xmm1
275	pxor	%xmm2,%xmm2
276	pxor	%xmm3,%xmm3
277	pxor	%xmm4,%xmm4
278	pxor	%xmm5,%xmm5
279	pxor	%xmm6,%xmm6
280	popl	%edi
281	popl	%esi
282	popl	%ebx
283	popl	%ebp
284	ret
285.size	gcm_ghash_ssse3,.-.L_gcm_ghash_ssse3_begin
286.align	16
287.Lreverse_bytes:
288.byte	15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0
289.align	16
290.Llow4_mask:
291.long	252645135,252645135,252645135,252645135
292#endif  // !defined(OPENSSL_NO_ASM) && defined(OPENSSL_X86) && defined(__ELF__)
293