xref: /aosp_15_r20/external/boringssl/src/gen/bcm/ghash-x86-linux.S (revision 8fb009dc861624b67b6cdb62ea21f0f22d0c584b)
1*8fb009dcSAndroid Build Coastguard Worker// This file is generated from a similarly-named Perl script in the BoringSSL
2*8fb009dcSAndroid Build Coastguard Worker// source tree. Do not edit by hand.
3*8fb009dcSAndroid Build Coastguard Worker
4*8fb009dcSAndroid Build Coastguard Worker#include <openssl/asm_base.h>
5*8fb009dcSAndroid Build Coastguard Worker
6*8fb009dcSAndroid Build Coastguard Worker#if !defined(OPENSSL_NO_ASM) && defined(OPENSSL_X86) && defined(__ELF__)
7*8fb009dcSAndroid Build Coastguard Worker.text
8*8fb009dcSAndroid Build Coastguard Worker.globl	gcm_init_clmul
9*8fb009dcSAndroid Build Coastguard Worker.hidden	gcm_init_clmul
10*8fb009dcSAndroid Build Coastguard Worker.type	gcm_init_clmul,@function
11*8fb009dcSAndroid Build Coastguard Worker.align	16
12*8fb009dcSAndroid Build Coastguard Workergcm_init_clmul:
13*8fb009dcSAndroid Build Coastguard Worker.L_gcm_init_clmul_begin:
14*8fb009dcSAndroid Build Coastguard Worker	movl	4(%esp),%edx
15*8fb009dcSAndroid Build Coastguard Worker	movl	8(%esp),%eax
16*8fb009dcSAndroid Build Coastguard Worker	call	.L000pic
17*8fb009dcSAndroid Build Coastguard Worker.L000pic:
18*8fb009dcSAndroid Build Coastguard Worker	popl	%ecx
19*8fb009dcSAndroid Build Coastguard Worker	leal	.Lbswap-.L000pic(%ecx),%ecx
20*8fb009dcSAndroid Build Coastguard Worker	movdqu	(%eax),%xmm2
21*8fb009dcSAndroid Build Coastguard Worker	pshufd	$78,%xmm2,%xmm2
22*8fb009dcSAndroid Build Coastguard Worker	pshufd	$255,%xmm2,%xmm4
23*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm2,%xmm3
24*8fb009dcSAndroid Build Coastguard Worker	psllq	$1,%xmm2
25*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm5,%xmm5
26*8fb009dcSAndroid Build Coastguard Worker	psrlq	$63,%xmm3
27*8fb009dcSAndroid Build Coastguard Worker	pcmpgtd	%xmm4,%xmm5
28*8fb009dcSAndroid Build Coastguard Worker	pslldq	$8,%xmm3
29*8fb009dcSAndroid Build Coastguard Worker	por	%xmm3,%xmm2
30*8fb009dcSAndroid Build Coastguard Worker	pand	16(%ecx),%xmm5
31*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm5,%xmm2
32*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm2,%xmm0
33*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm0,%xmm1
34*8fb009dcSAndroid Build Coastguard Worker	pshufd	$78,%xmm0,%xmm3
35*8fb009dcSAndroid Build Coastguard Worker	pshufd	$78,%xmm2,%xmm4
36*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm0,%xmm3
37*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm2,%xmm4
38*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,58,68,194,0
39*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,58,68,202,17
40*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,58,68,220,0
41*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm0,%xmm3
42*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm1,%xmm3
43*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm3,%xmm4
44*8fb009dcSAndroid Build Coastguard Worker	psrldq	$8,%xmm3
45*8fb009dcSAndroid Build Coastguard Worker	pslldq	$8,%xmm4
46*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm3,%xmm1
47*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm4,%xmm0
48*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm0,%xmm4
49*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm0,%xmm3
50*8fb009dcSAndroid Build Coastguard Worker	psllq	$5,%xmm0
51*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm0,%xmm3
52*8fb009dcSAndroid Build Coastguard Worker	psllq	$1,%xmm0
53*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm3,%xmm0
54*8fb009dcSAndroid Build Coastguard Worker	psllq	$57,%xmm0
55*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm0,%xmm3
56*8fb009dcSAndroid Build Coastguard Worker	pslldq	$8,%xmm0
57*8fb009dcSAndroid Build Coastguard Worker	psrldq	$8,%xmm3
58*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm4,%xmm0
59*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm3,%xmm1
60*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm0,%xmm4
61*8fb009dcSAndroid Build Coastguard Worker	psrlq	$1,%xmm0
62*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm4,%xmm1
63*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm0,%xmm4
64*8fb009dcSAndroid Build Coastguard Worker	psrlq	$5,%xmm0
65*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm4,%xmm0
66*8fb009dcSAndroid Build Coastguard Worker	psrlq	$1,%xmm0
67*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm1,%xmm0
68*8fb009dcSAndroid Build Coastguard Worker	pshufd	$78,%xmm2,%xmm3
69*8fb009dcSAndroid Build Coastguard Worker	pshufd	$78,%xmm0,%xmm4
70*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm2,%xmm3
71*8fb009dcSAndroid Build Coastguard Worker	movdqu	%xmm2,(%edx)
72*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm0,%xmm4
73*8fb009dcSAndroid Build Coastguard Worker	movdqu	%xmm0,16(%edx)
74*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,58,15,227,8
75*8fb009dcSAndroid Build Coastguard Worker	movdqu	%xmm4,32(%edx)
76*8fb009dcSAndroid Build Coastguard Worker	ret
77*8fb009dcSAndroid Build Coastguard Worker.size	gcm_init_clmul,.-.L_gcm_init_clmul_begin
78*8fb009dcSAndroid Build Coastguard Worker.globl	gcm_gmult_clmul
79*8fb009dcSAndroid Build Coastguard Worker.hidden	gcm_gmult_clmul
80*8fb009dcSAndroid Build Coastguard Worker.type	gcm_gmult_clmul,@function
81*8fb009dcSAndroid Build Coastguard Worker.align	16
82*8fb009dcSAndroid Build Coastguard Workergcm_gmult_clmul:
83*8fb009dcSAndroid Build Coastguard Worker.L_gcm_gmult_clmul_begin:
84*8fb009dcSAndroid Build Coastguard Worker	movl	4(%esp),%eax
85*8fb009dcSAndroid Build Coastguard Worker	movl	8(%esp),%edx
86*8fb009dcSAndroid Build Coastguard Worker	call	.L001pic
87*8fb009dcSAndroid Build Coastguard Worker.L001pic:
88*8fb009dcSAndroid Build Coastguard Worker	popl	%ecx
89*8fb009dcSAndroid Build Coastguard Worker	leal	.Lbswap-.L001pic(%ecx),%ecx
90*8fb009dcSAndroid Build Coastguard Worker	movdqu	(%eax),%xmm0
91*8fb009dcSAndroid Build Coastguard Worker	movdqa	(%ecx),%xmm5
92*8fb009dcSAndroid Build Coastguard Worker	movups	(%edx),%xmm2
93*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,0,197
94*8fb009dcSAndroid Build Coastguard Worker	movups	32(%edx),%xmm4
95*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm0,%xmm1
96*8fb009dcSAndroid Build Coastguard Worker	pshufd	$78,%xmm0,%xmm3
97*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm0,%xmm3
98*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,58,68,194,0
99*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,58,68,202,17
100*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,58,68,220,0
101*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm0,%xmm3
102*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm1,%xmm3
103*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm3,%xmm4
104*8fb009dcSAndroid Build Coastguard Worker	psrldq	$8,%xmm3
105*8fb009dcSAndroid Build Coastguard Worker	pslldq	$8,%xmm4
106*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm3,%xmm1
107*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm4,%xmm0
108*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm0,%xmm4
109*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm0,%xmm3
110*8fb009dcSAndroid Build Coastguard Worker	psllq	$5,%xmm0
111*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm0,%xmm3
112*8fb009dcSAndroid Build Coastguard Worker	psllq	$1,%xmm0
113*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm3,%xmm0
114*8fb009dcSAndroid Build Coastguard Worker	psllq	$57,%xmm0
115*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm0,%xmm3
116*8fb009dcSAndroid Build Coastguard Worker	pslldq	$8,%xmm0
117*8fb009dcSAndroid Build Coastguard Worker	psrldq	$8,%xmm3
118*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm4,%xmm0
119*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm3,%xmm1
120*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm0,%xmm4
121*8fb009dcSAndroid Build Coastguard Worker	psrlq	$1,%xmm0
122*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm4,%xmm1
123*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm0,%xmm4
124*8fb009dcSAndroid Build Coastguard Worker	psrlq	$5,%xmm0
125*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm4,%xmm0
126*8fb009dcSAndroid Build Coastguard Worker	psrlq	$1,%xmm0
127*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm1,%xmm0
128*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,0,197
129*8fb009dcSAndroid Build Coastguard Worker	movdqu	%xmm0,(%eax)
130*8fb009dcSAndroid Build Coastguard Worker	ret
131*8fb009dcSAndroid Build Coastguard Worker.size	gcm_gmult_clmul,.-.L_gcm_gmult_clmul_begin
132*8fb009dcSAndroid Build Coastguard Worker.globl	gcm_ghash_clmul
133*8fb009dcSAndroid Build Coastguard Worker.hidden	gcm_ghash_clmul
134*8fb009dcSAndroid Build Coastguard Worker.type	gcm_ghash_clmul,@function
135*8fb009dcSAndroid Build Coastguard Worker.align	16
136*8fb009dcSAndroid Build Coastguard Workergcm_ghash_clmul:
137*8fb009dcSAndroid Build Coastguard Worker.L_gcm_ghash_clmul_begin:
138*8fb009dcSAndroid Build Coastguard Worker	pushl	%ebp
139*8fb009dcSAndroid Build Coastguard Worker	pushl	%ebx
140*8fb009dcSAndroid Build Coastguard Worker	pushl	%esi
141*8fb009dcSAndroid Build Coastguard Worker	pushl	%edi
142*8fb009dcSAndroid Build Coastguard Worker	movl	20(%esp),%eax
143*8fb009dcSAndroid Build Coastguard Worker	movl	24(%esp),%edx
144*8fb009dcSAndroid Build Coastguard Worker	movl	28(%esp),%esi
145*8fb009dcSAndroid Build Coastguard Worker	movl	32(%esp),%ebx
146*8fb009dcSAndroid Build Coastguard Worker	call	.L002pic
147*8fb009dcSAndroid Build Coastguard Worker.L002pic:
148*8fb009dcSAndroid Build Coastguard Worker	popl	%ecx
149*8fb009dcSAndroid Build Coastguard Worker	leal	.Lbswap-.L002pic(%ecx),%ecx
150*8fb009dcSAndroid Build Coastguard Worker	movdqu	(%eax),%xmm0
151*8fb009dcSAndroid Build Coastguard Worker	movdqa	(%ecx),%xmm5
152*8fb009dcSAndroid Build Coastguard Worker	movdqu	(%edx),%xmm2
153*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,0,197
154*8fb009dcSAndroid Build Coastguard Worker	subl	$16,%ebx
155*8fb009dcSAndroid Build Coastguard Worker	jz	.L003odd_tail
156*8fb009dcSAndroid Build Coastguard Worker	movdqu	(%esi),%xmm3
157*8fb009dcSAndroid Build Coastguard Worker	movdqu	16(%esi),%xmm6
158*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,0,221
159*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,0,245
160*8fb009dcSAndroid Build Coastguard Worker	movdqu	32(%edx),%xmm5
161*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm3,%xmm0
162*8fb009dcSAndroid Build Coastguard Worker	pshufd	$78,%xmm6,%xmm3
163*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm6,%xmm7
164*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm6,%xmm3
165*8fb009dcSAndroid Build Coastguard Worker	leal	32(%esi),%esi
166*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,58,68,242,0
167*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,58,68,250,17
168*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,58,68,221,0
169*8fb009dcSAndroid Build Coastguard Worker	movups	16(%edx),%xmm2
170*8fb009dcSAndroid Build Coastguard Worker	nop
171*8fb009dcSAndroid Build Coastguard Worker	subl	$32,%ebx
172*8fb009dcSAndroid Build Coastguard Worker	jbe	.L004even_tail
173*8fb009dcSAndroid Build Coastguard Worker	jmp	.L005mod_loop
174*8fb009dcSAndroid Build Coastguard Worker.align	32
175*8fb009dcSAndroid Build Coastguard Worker.L005mod_loop:
176*8fb009dcSAndroid Build Coastguard Worker	pshufd	$78,%xmm0,%xmm4
177*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm0,%xmm1
178*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm0,%xmm4
179*8fb009dcSAndroid Build Coastguard Worker	nop
180*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,58,68,194,0
181*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,58,68,202,17
182*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,58,68,229,16
183*8fb009dcSAndroid Build Coastguard Worker	movups	(%edx),%xmm2
184*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm6,%xmm0
185*8fb009dcSAndroid Build Coastguard Worker	movdqa	(%ecx),%xmm5
186*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm7,%xmm1
187*8fb009dcSAndroid Build Coastguard Worker	movdqu	(%esi),%xmm7
188*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm0,%xmm3
189*8fb009dcSAndroid Build Coastguard Worker	movdqu	16(%esi),%xmm6
190*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm1,%xmm3
191*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,0,253
192*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm3,%xmm4
193*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm4,%xmm3
194*8fb009dcSAndroid Build Coastguard Worker	psrldq	$8,%xmm4
195*8fb009dcSAndroid Build Coastguard Worker	pslldq	$8,%xmm3
196*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm4,%xmm1
197*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm3,%xmm0
198*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,0,245
199*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm7,%xmm1
200*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm6,%xmm7
201*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm0,%xmm4
202*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm0,%xmm3
203*8fb009dcSAndroid Build Coastguard Worker	psllq	$5,%xmm0
204*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm0,%xmm3
205*8fb009dcSAndroid Build Coastguard Worker	psllq	$1,%xmm0
206*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm3,%xmm0
207*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,58,68,242,0
208*8fb009dcSAndroid Build Coastguard Worker	movups	32(%edx),%xmm5
209*8fb009dcSAndroid Build Coastguard Worker	psllq	$57,%xmm0
210*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm0,%xmm3
211*8fb009dcSAndroid Build Coastguard Worker	pslldq	$8,%xmm0
212*8fb009dcSAndroid Build Coastguard Worker	psrldq	$8,%xmm3
213*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm4,%xmm0
214*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm3,%xmm1
215*8fb009dcSAndroid Build Coastguard Worker	pshufd	$78,%xmm7,%xmm3
216*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm0,%xmm4
217*8fb009dcSAndroid Build Coastguard Worker	psrlq	$1,%xmm0
218*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm7,%xmm3
219*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm4,%xmm1
220*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,58,68,250,17
221*8fb009dcSAndroid Build Coastguard Worker	movups	16(%edx),%xmm2
222*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm0,%xmm4
223*8fb009dcSAndroid Build Coastguard Worker	psrlq	$5,%xmm0
224*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm4,%xmm0
225*8fb009dcSAndroid Build Coastguard Worker	psrlq	$1,%xmm0
226*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm1,%xmm0
227*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,58,68,221,0
228*8fb009dcSAndroid Build Coastguard Worker	leal	32(%esi),%esi
229*8fb009dcSAndroid Build Coastguard Worker	subl	$32,%ebx
230*8fb009dcSAndroid Build Coastguard Worker	ja	.L005mod_loop
231*8fb009dcSAndroid Build Coastguard Worker.L004even_tail:
232*8fb009dcSAndroid Build Coastguard Worker	pshufd	$78,%xmm0,%xmm4
233*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm0,%xmm1
234*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm0,%xmm4
235*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,58,68,194,0
236*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,58,68,202,17
237*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,58,68,229,16
238*8fb009dcSAndroid Build Coastguard Worker	movdqa	(%ecx),%xmm5
239*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm6,%xmm0
240*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm7,%xmm1
241*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm0,%xmm3
242*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm1,%xmm3
243*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm3,%xmm4
244*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm4,%xmm3
245*8fb009dcSAndroid Build Coastguard Worker	psrldq	$8,%xmm4
246*8fb009dcSAndroid Build Coastguard Worker	pslldq	$8,%xmm3
247*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm4,%xmm1
248*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm3,%xmm0
249*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm0,%xmm4
250*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm0,%xmm3
251*8fb009dcSAndroid Build Coastguard Worker	psllq	$5,%xmm0
252*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm0,%xmm3
253*8fb009dcSAndroid Build Coastguard Worker	psllq	$1,%xmm0
254*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm3,%xmm0
255*8fb009dcSAndroid Build Coastguard Worker	psllq	$57,%xmm0
256*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm0,%xmm3
257*8fb009dcSAndroid Build Coastguard Worker	pslldq	$8,%xmm0
258*8fb009dcSAndroid Build Coastguard Worker	psrldq	$8,%xmm3
259*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm4,%xmm0
260*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm3,%xmm1
261*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm0,%xmm4
262*8fb009dcSAndroid Build Coastguard Worker	psrlq	$1,%xmm0
263*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm4,%xmm1
264*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm0,%xmm4
265*8fb009dcSAndroid Build Coastguard Worker	psrlq	$5,%xmm0
266*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm4,%xmm0
267*8fb009dcSAndroid Build Coastguard Worker	psrlq	$1,%xmm0
268*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm1,%xmm0
269*8fb009dcSAndroid Build Coastguard Worker	testl	%ebx,%ebx
270*8fb009dcSAndroid Build Coastguard Worker	jnz	.L006done
271*8fb009dcSAndroid Build Coastguard Worker	movups	(%edx),%xmm2
272*8fb009dcSAndroid Build Coastguard Worker.L003odd_tail:
273*8fb009dcSAndroid Build Coastguard Worker	movdqu	(%esi),%xmm3
274*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,0,221
275*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm3,%xmm0
276*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm0,%xmm1
277*8fb009dcSAndroid Build Coastguard Worker	pshufd	$78,%xmm0,%xmm3
278*8fb009dcSAndroid Build Coastguard Worker	pshufd	$78,%xmm2,%xmm4
279*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm0,%xmm3
280*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm2,%xmm4
281*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,58,68,194,0
282*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,58,68,202,17
283*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,58,68,220,0
284*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm0,%xmm3
285*8fb009dcSAndroid Build Coastguard Worker	xorps	%xmm1,%xmm3
286*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm3,%xmm4
287*8fb009dcSAndroid Build Coastguard Worker	psrldq	$8,%xmm3
288*8fb009dcSAndroid Build Coastguard Worker	pslldq	$8,%xmm4
289*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm3,%xmm1
290*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm4,%xmm0
291*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm0,%xmm4
292*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm0,%xmm3
293*8fb009dcSAndroid Build Coastguard Worker	psllq	$5,%xmm0
294*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm0,%xmm3
295*8fb009dcSAndroid Build Coastguard Worker	psllq	$1,%xmm0
296*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm3,%xmm0
297*8fb009dcSAndroid Build Coastguard Worker	psllq	$57,%xmm0
298*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm0,%xmm3
299*8fb009dcSAndroid Build Coastguard Worker	pslldq	$8,%xmm0
300*8fb009dcSAndroid Build Coastguard Worker	psrldq	$8,%xmm3
301*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm4,%xmm0
302*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm3,%xmm1
303*8fb009dcSAndroid Build Coastguard Worker	movdqa	%xmm0,%xmm4
304*8fb009dcSAndroid Build Coastguard Worker	psrlq	$1,%xmm0
305*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm4,%xmm1
306*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm0,%xmm4
307*8fb009dcSAndroid Build Coastguard Worker	psrlq	$5,%xmm0
308*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm4,%xmm0
309*8fb009dcSAndroid Build Coastguard Worker	psrlq	$1,%xmm0
310*8fb009dcSAndroid Build Coastguard Worker	pxor	%xmm1,%xmm0
311*8fb009dcSAndroid Build Coastguard Worker.L006done:
312*8fb009dcSAndroid Build Coastguard Worker.byte	102,15,56,0,197
313*8fb009dcSAndroid Build Coastguard Worker	movdqu	%xmm0,(%eax)
314*8fb009dcSAndroid Build Coastguard Worker	popl	%edi
315*8fb009dcSAndroid Build Coastguard Worker	popl	%esi
316*8fb009dcSAndroid Build Coastguard Worker	popl	%ebx
317*8fb009dcSAndroid Build Coastguard Worker	popl	%ebp
318*8fb009dcSAndroid Build Coastguard Worker	ret
319*8fb009dcSAndroid Build Coastguard Worker.size	gcm_ghash_clmul,.-.L_gcm_ghash_clmul_begin
320*8fb009dcSAndroid Build Coastguard Worker.align	64
321*8fb009dcSAndroid Build Coastguard Worker.Lbswap:
322*8fb009dcSAndroid Build Coastguard Worker.byte	15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0
323*8fb009dcSAndroid Build Coastguard Worker.byte	1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194
324*8fb009dcSAndroid Build Coastguard Worker.byte	71,72,65,83,72,32,102,111,114,32,120,56,54,44,32,67
325*8fb009dcSAndroid Build Coastguard Worker.byte	82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112
326*8fb009dcSAndroid Build Coastguard Worker.byte	112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62
327*8fb009dcSAndroid Build Coastguard Worker.byte	0
328*8fb009dcSAndroid Build Coastguard Worker#endif  // !defined(OPENSSL_NO_ASM) && defined(OPENSSL_X86) && defined(__ELF__)
329