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