xref: /aosp_15_r20/bionic/libc/arch-x86_64/string/sse4-memcmp-slm.S (revision 8d67ca893c1523eb926b9080dbe4e2ffd2a27ba1)
1*8d67ca89SAndroid Build Coastguard Worker/*
2*8d67ca89SAndroid Build Coastguard WorkerCopyright (c) 2014, Intel Corporation
3*8d67ca89SAndroid Build Coastguard WorkerAll rights reserved.
4*8d67ca89SAndroid Build Coastguard Worker
5*8d67ca89SAndroid Build Coastguard WorkerRedistribution and use in source and binary forms, with or without
6*8d67ca89SAndroid Build Coastguard Workermodification, are permitted provided that the following conditions are met:
7*8d67ca89SAndroid Build Coastguard Worker
8*8d67ca89SAndroid Build Coastguard Worker    * Redistributions of source code must retain the above copyright notice,
9*8d67ca89SAndroid Build Coastguard Worker    * this list of conditions and the following disclaimer.
10*8d67ca89SAndroid Build Coastguard Worker
11*8d67ca89SAndroid Build Coastguard Worker    * Redistributions in binary form must reproduce the above copyright notice,
12*8d67ca89SAndroid Build Coastguard Worker    * this list of conditions and the following disclaimer in the documentation
13*8d67ca89SAndroid Build Coastguard Worker    * and/or other materials provided with the distribution.
14*8d67ca89SAndroid Build Coastguard Worker
15*8d67ca89SAndroid Build Coastguard Worker    * Neither the name of Intel Corporation nor the names of its contributors
16*8d67ca89SAndroid Build Coastguard Worker    * may be used to endorse or promote products derived from this software
17*8d67ca89SAndroid Build Coastguard Worker    * without specific prior written permission.
18*8d67ca89SAndroid Build Coastguard Worker
19*8d67ca89SAndroid Build Coastguard WorkerTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
20*8d67ca89SAndroid Build Coastguard WorkerANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
21*8d67ca89SAndroid Build Coastguard WorkerWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
22*8d67ca89SAndroid Build Coastguard WorkerDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
23*8d67ca89SAndroid Build Coastguard WorkerANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
24*8d67ca89SAndroid Build Coastguard Worker(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
25*8d67ca89SAndroid Build Coastguard WorkerLOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
26*8d67ca89SAndroid Build Coastguard WorkerANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27*8d67ca89SAndroid Build Coastguard Worker(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
28*8d67ca89SAndroid Build Coastguard WorkerSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29*8d67ca89SAndroid Build Coastguard Worker*/
30*8d67ca89SAndroid Build Coastguard Worker
31*8d67ca89SAndroid Build Coastguard Worker
32*8d67ca89SAndroid Build Coastguard Worker#ifndef MEMCMP
33*8d67ca89SAndroid Build Coastguard Worker# define MEMCMP		memcmp
34*8d67ca89SAndroid Build Coastguard Worker#endif
35*8d67ca89SAndroid Build Coastguard Worker
36*8d67ca89SAndroid Build Coastguard Worker#ifndef L
37*8d67ca89SAndroid Build Coastguard Worker# define L(label)	.L##label
38*8d67ca89SAndroid Build Coastguard Worker#endif
39*8d67ca89SAndroid Build Coastguard Worker
40*8d67ca89SAndroid Build Coastguard Worker#ifndef ALIGN
41*8d67ca89SAndroid Build Coastguard Worker# define ALIGN(n)	.p2align n
42*8d67ca89SAndroid Build Coastguard Worker#endif
43*8d67ca89SAndroid Build Coastguard Worker
44*8d67ca89SAndroid Build Coastguard Worker#ifndef cfi_startproc
45*8d67ca89SAndroid Build Coastguard Worker# define cfi_startproc			.cfi_startproc
46*8d67ca89SAndroid Build Coastguard Worker#endif
47*8d67ca89SAndroid Build Coastguard Worker
48*8d67ca89SAndroid Build Coastguard Worker#ifndef cfi_endproc
49*8d67ca89SAndroid Build Coastguard Worker# define cfi_endproc			.cfi_endproc
50*8d67ca89SAndroid Build Coastguard Worker#endif
51*8d67ca89SAndroid Build Coastguard Worker
52*8d67ca89SAndroid Build Coastguard Worker#ifndef ENTRY
53*8d67ca89SAndroid Build Coastguard Worker# define ENTRY(name)			\
54*8d67ca89SAndroid Build Coastguard Worker	.type name,  @function; 	\
55*8d67ca89SAndroid Build Coastguard Worker	.globl name;			\
56*8d67ca89SAndroid Build Coastguard Worker	.p2align 4;			\
57*8d67ca89SAndroid Build Coastguard Workername:					\
58*8d67ca89SAndroid Build Coastguard Worker	cfi_startproc
59*8d67ca89SAndroid Build Coastguard Worker#endif
60*8d67ca89SAndroid Build Coastguard Worker
61*8d67ca89SAndroid Build Coastguard Worker#ifndef END
62*8d67ca89SAndroid Build Coastguard Worker# define END(name)			\
63*8d67ca89SAndroid Build Coastguard Worker	cfi_endproc;			\
64*8d67ca89SAndroid Build Coastguard Worker	.size name, .-name
65*8d67ca89SAndroid Build Coastguard Worker#endif
66*8d67ca89SAndroid Build Coastguard Worker
67*8d67ca89SAndroid Build Coastguard Worker#ifndef ALIGN
68*8d67ca89SAndroid Build Coastguard Worker# define ALIGN(n)	.p2align n
69*8d67ca89SAndroid Build Coastguard Worker#endif
70*8d67ca89SAndroid Build Coastguard Worker
71*8d67ca89SAndroid Build Coastguard Worker#define JMPTBL(I, B)	(I - B)
72*8d67ca89SAndroid Build Coastguard Worker
73*8d67ca89SAndroid Build Coastguard Worker#define BRANCH_TO_JMPTBL_ENTRY(TABLE, INDEX, SCALE)		\
74*8d67ca89SAndroid Build Coastguard Worker  lea		TABLE(%rip), %r11;				\
75*8d67ca89SAndroid Build Coastguard Worker  movslq	(%r11, INDEX, SCALE), %rcx;			\
76*8d67ca89SAndroid Build Coastguard Worker  add		%r11, %rcx;					\
77*8d67ca89SAndroid Build Coastguard Worker  jmp		*%rcx;						\
78*8d67ca89SAndroid Build Coastguard Worker  ud2
79*8d67ca89SAndroid Build Coastguard Worker
80*8d67ca89SAndroid Build Coastguard Worker	.section .text.sse4.1,"ax",@progbits
81*8d67ca89SAndroid Build Coastguard WorkerENTRY (MEMCMP)
82*8d67ca89SAndroid Build Coastguard Worker#ifdef USE_AS_WMEMCMP
83*8d67ca89SAndroid Build Coastguard Worker	shl	$2, %rdx
84*8d67ca89SAndroid Build Coastguard Worker#endif
85*8d67ca89SAndroid Build Coastguard Worker	pxor	%xmm0, %xmm0
86*8d67ca89SAndroid Build Coastguard Worker	cmp	$79, %rdx
87*8d67ca89SAndroid Build Coastguard Worker	ja	L(79bytesormore)
88*8d67ca89SAndroid Build Coastguard Worker#ifndef USE_AS_WMEMCMP
89*8d67ca89SAndroid Build Coastguard Worker	cmp	$1, %rdx
90*8d67ca89SAndroid Build Coastguard Worker	je	L(firstbyte)
91*8d67ca89SAndroid Build Coastguard Worker#endif
92*8d67ca89SAndroid Build Coastguard Worker	add	%rdx, %rsi
93*8d67ca89SAndroid Build Coastguard Worker	add	%rdx, %rdi
94*8d67ca89SAndroid Build Coastguard Worker	BRANCH_TO_JMPTBL_ENTRY(L(table_64bytes), %rdx, 4)
95*8d67ca89SAndroid Build Coastguard Worker
96*8d67ca89SAndroid Build Coastguard Worker#ifndef USE_AS_WMEMCMP
97*8d67ca89SAndroid Build Coastguard Worker	ALIGN (4)
98*8d67ca89SAndroid Build Coastguard WorkerL(firstbyte):
99*8d67ca89SAndroid Build Coastguard Worker	movzbl	(%rdi), %eax
100*8d67ca89SAndroid Build Coastguard Worker	movzbl	(%rsi), %ecx
101*8d67ca89SAndroid Build Coastguard Worker	sub	%ecx, %eax
102*8d67ca89SAndroid Build Coastguard Worker	ret
103*8d67ca89SAndroid Build Coastguard Worker#endif
104*8d67ca89SAndroid Build Coastguard Worker
105*8d67ca89SAndroid Build Coastguard Worker	ALIGN (4)
106*8d67ca89SAndroid Build Coastguard WorkerL(79bytesormore):
107*8d67ca89SAndroid Build Coastguard Worker	movdqu	(%rsi), %xmm1
108*8d67ca89SAndroid Build Coastguard Worker	movdqu	(%rdi), %xmm2
109*8d67ca89SAndroid Build Coastguard Worker	pxor	%xmm1, %xmm2
110*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
111*8d67ca89SAndroid Build Coastguard Worker	jnc	L(16bytesin256)
112*8d67ca89SAndroid Build Coastguard Worker	mov	%rsi, %rcx
113*8d67ca89SAndroid Build Coastguard Worker	and	$-16, %rsi
114*8d67ca89SAndroid Build Coastguard Worker	add	$16, %rsi
115*8d67ca89SAndroid Build Coastguard Worker	sub	%rsi, %rcx
116*8d67ca89SAndroid Build Coastguard Worker
117*8d67ca89SAndroid Build Coastguard Worker	sub	%rcx, %rdi
118*8d67ca89SAndroid Build Coastguard Worker	add	%rcx, %rdx
119*8d67ca89SAndroid Build Coastguard Worker	test	$0xf, %rdi
120*8d67ca89SAndroid Build Coastguard Worker	jz	L(2aligned)
121*8d67ca89SAndroid Build Coastguard Worker
122*8d67ca89SAndroid Build Coastguard Worker	cmp	$128, %rdx
123*8d67ca89SAndroid Build Coastguard Worker	ja	L(128bytesormore)
124*8d67ca89SAndroid Build Coastguard WorkerL(less128bytes):
125*8d67ca89SAndroid Build Coastguard Worker	sub	$64, %rdx
126*8d67ca89SAndroid Build Coastguard Worker
127*8d67ca89SAndroid Build Coastguard Worker	movdqu	(%rdi), %xmm2
128*8d67ca89SAndroid Build Coastguard Worker	pxor	(%rsi), %xmm2
129*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
130*8d67ca89SAndroid Build Coastguard Worker	jnc	L(16bytesin256)
131*8d67ca89SAndroid Build Coastguard Worker
132*8d67ca89SAndroid Build Coastguard Worker	movdqu	16(%rdi), %xmm2
133*8d67ca89SAndroid Build Coastguard Worker	pxor	16(%rsi), %xmm2
134*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
135*8d67ca89SAndroid Build Coastguard Worker	jnc	L(32bytesin256)
136*8d67ca89SAndroid Build Coastguard Worker
137*8d67ca89SAndroid Build Coastguard Worker	movdqu	32(%rdi), %xmm2
138*8d67ca89SAndroid Build Coastguard Worker	pxor	32(%rsi), %xmm2
139*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
140*8d67ca89SAndroid Build Coastguard Worker	jnc	L(48bytesin256)
141*8d67ca89SAndroid Build Coastguard Worker
142*8d67ca89SAndroid Build Coastguard Worker	movdqu	48(%rdi), %xmm2
143*8d67ca89SAndroid Build Coastguard Worker	pxor	48(%rsi), %xmm2
144*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
145*8d67ca89SAndroid Build Coastguard Worker	jnc	L(64bytesin256)
146*8d67ca89SAndroid Build Coastguard Worker	cmp	$32, %rdx
147*8d67ca89SAndroid Build Coastguard Worker	jb	L(less32bytesin64)
148*8d67ca89SAndroid Build Coastguard Worker
149*8d67ca89SAndroid Build Coastguard Worker	movdqu	64(%rdi), %xmm2
150*8d67ca89SAndroid Build Coastguard Worker	pxor	64(%rsi), %xmm2
151*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
152*8d67ca89SAndroid Build Coastguard Worker	jnc	L(80bytesin256)
153*8d67ca89SAndroid Build Coastguard Worker
154*8d67ca89SAndroid Build Coastguard Worker	movdqu	80(%rdi), %xmm2
155*8d67ca89SAndroid Build Coastguard Worker	pxor	80(%rsi), %xmm2
156*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
157*8d67ca89SAndroid Build Coastguard Worker	jnc	L(96bytesin256)
158*8d67ca89SAndroid Build Coastguard Worker	sub	$32, %rdx
159*8d67ca89SAndroid Build Coastguard Worker	add	$32, %rdi
160*8d67ca89SAndroid Build Coastguard Worker	add	$32, %rsi
161*8d67ca89SAndroid Build Coastguard WorkerL(less32bytesin64):
162*8d67ca89SAndroid Build Coastguard Worker	add	$64, %rdi
163*8d67ca89SAndroid Build Coastguard Worker	add	$64, %rsi
164*8d67ca89SAndroid Build Coastguard Worker	add	%rdx, %rsi
165*8d67ca89SAndroid Build Coastguard Worker	add	%rdx, %rdi
166*8d67ca89SAndroid Build Coastguard Worker	BRANCH_TO_JMPTBL_ENTRY(L(table_64bytes), %rdx, 4)
167*8d67ca89SAndroid Build Coastguard Worker
168*8d67ca89SAndroid Build Coastguard WorkerL(128bytesormore):
169*8d67ca89SAndroid Build Coastguard Worker	cmp	$512, %rdx
170*8d67ca89SAndroid Build Coastguard Worker	ja	L(512bytesormore)
171*8d67ca89SAndroid Build Coastguard Worker	cmp	$256, %rdx
172*8d67ca89SAndroid Build Coastguard Worker	ja	L(less512bytes)
173*8d67ca89SAndroid Build Coastguard WorkerL(less256bytes):
174*8d67ca89SAndroid Build Coastguard Worker	sub	$128, %rdx
175*8d67ca89SAndroid Build Coastguard Worker
176*8d67ca89SAndroid Build Coastguard Worker	movdqu	(%rdi), %xmm2
177*8d67ca89SAndroid Build Coastguard Worker	pxor	(%rsi), %xmm2
178*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
179*8d67ca89SAndroid Build Coastguard Worker	jnc	L(16bytesin256)
180*8d67ca89SAndroid Build Coastguard Worker
181*8d67ca89SAndroid Build Coastguard Worker	movdqu	16(%rdi), %xmm2
182*8d67ca89SAndroid Build Coastguard Worker	pxor	16(%rsi), %xmm2
183*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
184*8d67ca89SAndroid Build Coastguard Worker	jnc	L(32bytesin256)
185*8d67ca89SAndroid Build Coastguard Worker
186*8d67ca89SAndroid Build Coastguard Worker	movdqu	32(%rdi), %xmm2
187*8d67ca89SAndroid Build Coastguard Worker	pxor	32(%rsi), %xmm2
188*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
189*8d67ca89SAndroid Build Coastguard Worker	jnc	L(48bytesin256)
190*8d67ca89SAndroid Build Coastguard Worker
191*8d67ca89SAndroid Build Coastguard Worker	movdqu	48(%rdi), %xmm2
192*8d67ca89SAndroid Build Coastguard Worker	pxor	48(%rsi), %xmm2
193*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
194*8d67ca89SAndroid Build Coastguard Worker	jnc	L(64bytesin256)
195*8d67ca89SAndroid Build Coastguard Worker
196*8d67ca89SAndroid Build Coastguard Worker	movdqu	64(%rdi), %xmm2
197*8d67ca89SAndroid Build Coastguard Worker	pxor	64(%rsi), %xmm2
198*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
199*8d67ca89SAndroid Build Coastguard Worker	jnc	L(80bytesin256)
200*8d67ca89SAndroid Build Coastguard Worker
201*8d67ca89SAndroid Build Coastguard Worker	movdqu	80(%rdi), %xmm2
202*8d67ca89SAndroid Build Coastguard Worker	pxor	80(%rsi), %xmm2
203*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
204*8d67ca89SAndroid Build Coastguard Worker	jnc	L(96bytesin256)
205*8d67ca89SAndroid Build Coastguard Worker
206*8d67ca89SAndroid Build Coastguard Worker	movdqu	96(%rdi), %xmm2
207*8d67ca89SAndroid Build Coastguard Worker	pxor	96(%rsi), %xmm2
208*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
209*8d67ca89SAndroid Build Coastguard Worker	jnc	L(112bytesin256)
210*8d67ca89SAndroid Build Coastguard Worker
211*8d67ca89SAndroid Build Coastguard Worker	movdqu	112(%rdi), %xmm2
212*8d67ca89SAndroid Build Coastguard Worker	pxor	112(%rsi), %xmm2
213*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
214*8d67ca89SAndroid Build Coastguard Worker	jnc	L(128bytesin256)
215*8d67ca89SAndroid Build Coastguard Worker
216*8d67ca89SAndroid Build Coastguard Worker	add	$128, %rsi
217*8d67ca89SAndroid Build Coastguard Worker	add	$128, %rdi
218*8d67ca89SAndroid Build Coastguard Worker
219*8d67ca89SAndroid Build Coastguard Worker	cmp	$64, %rdx
220*8d67ca89SAndroid Build Coastguard Worker	jae	L(less128bytes)
221*8d67ca89SAndroid Build Coastguard Worker
222*8d67ca89SAndroid Build Coastguard Worker	cmp	$32, %rdx
223*8d67ca89SAndroid Build Coastguard Worker	jb	L(less32bytesin128)
224*8d67ca89SAndroid Build Coastguard Worker
225*8d67ca89SAndroid Build Coastguard Worker	movdqu	(%rdi), %xmm2
226*8d67ca89SAndroid Build Coastguard Worker	pxor	(%rsi), %xmm2
227*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
228*8d67ca89SAndroid Build Coastguard Worker	jnc	L(16bytesin256)
229*8d67ca89SAndroid Build Coastguard Worker
230*8d67ca89SAndroid Build Coastguard Worker	movdqu	16(%rdi), %xmm2
231*8d67ca89SAndroid Build Coastguard Worker	pxor	16(%rsi), %xmm2
232*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
233*8d67ca89SAndroid Build Coastguard Worker	jnc	L(32bytesin256)
234*8d67ca89SAndroid Build Coastguard Worker	sub	$32, %rdx
235*8d67ca89SAndroid Build Coastguard Worker	add	$32, %rdi
236*8d67ca89SAndroid Build Coastguard Worker	add	$32, %rsi
237*8d67ca89SAndroid Build Coastguard WorkerL(less32bytesin128):
238*8d67ca89SAndroid Build Coastguard Worker	add	%rdx, %rsi
239*8d67ca89SAndroid Build Coastguard Worker	add	%rdx, %rdi
240*8d67ca89SAndroid Build Coastguard Worker	BRANCH_TO_JMPTBL_ENTRY(L(table_64bytes), %rdx, 4)
241*8d67ca89SAndroid Build Coastguard Worker
242*8d67ca89SAndroid Build Coastguard WorkerL(less512bytes):
243*8d67ca89SAndroid Build Coastguard Worker	sub	$256, %rdx
244*8d67ca89SAndroid Build Coastguard Worker	movdqu	(%rdi), %xmm2
245*8d67ca89SAndroid Build Coastguard Worker	pxor	(%rsi), %xmm2
246*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
247*8d67ca89SAndroid Build Coastguard Worker	jnc	L(16bytesin256)
248*8d67ca89SAndroid Build Coastguard Worker
249*8d67ca89SAndroid Build Coastguard Worker	movdqu	16(%rdi), %xmm2
250*8d67ca89SAndroid Build Coastguard Worker	pxor	16(%rsi), %xmm2
251*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
252*8d67ca89SAndroid Build Coastguard Worker	jnc	L(32bytesin256)
253*8d67ca89SAndroid Build Coastguard Worker
254*8d67ca89SAndroid Build Coastguard Worker	movdqu	32(%rdi), %xmm2
255*8d67ca89SAndroid Build Coastguard Worker	pxor	32(%rsi), %xmm2
256*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
257*8d67ca89SAndroid Build Coastguard Worker	jnc	L(48bytesin256)
258*8d67ca89SAndroid Build Coastguard Worker
259*8d67ca89SAndroid Build Coastguard Worker	movdqu	48(%rdi), %xmm2
260*8d67ca89SAndroid Build Coastguard Worker	pxor	48(%rsi), %xmm2
261*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
262*8d67ca89SAndroid Build Coastguard Worker	jnc	L(64bytesin256)
263*8d67ca89SAndroid Build Coastguard Worker
264*8d67ca89SAndroid Build Coastguard Worker	movdqu	64(%rdi), %xmm2
265*8d67ca89SAndroid Build Coastguard Worker	pxor	64(%rsi), %xmm2
266*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
267*8d67ca89SAndroid Build Coastguard Worker	jnc	L(80bytesin256)
268*8d67ca89SAndroid Build Coastguard Worker
269*8d67ca89SAndroid Build Coastguard Worker	movdqu	80(%rdi), %xmm2
270*8d67ca89SAndroid Build Coastguard Worker	pxor	80(%rsi), %xmm2
271*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
272*8d67ca89SAndroid Build Coastguard Worker	jnc	L(96bytesin256)
273*8d67ca89SAndroid Build Coastguard Worker
274*8d67ca89SAndroid Build Coastguard Worker	movdqu	96(%rdi), %xmm2
275*8d67ca89SAndroid Build Coastguard Worker	pxor	96(%rsi), %xmm2
276*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
277*8d67ca89SAndroid Build Coastguard Worker	jnc	L(112bytesin256)
278*8d67ca89SAndroid Build Coastguard Worker
279*8d67ca89SAndroid Build Coastguard Worker	movdqu	112(%rdi), %xmm2
280*8d67ca89SAndroid Build Coastguard Worker	pxor	112(%rsi), %xmm2
281*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
282*8d67ca89SAndroid Build Coastguard Worker	jnc	L(128bytesin256)
283*8d67ca89SAndroid Build Coastguard Worker
284*8d67ca89SAndroid Build Coastguard Worker	movdqu	128(%rdi), %xmm2
285*8d67ca89SAndroid Build Coastguard Worker	pxor	128(%rsi), %xmm2
286*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
287*8d67ca89SAndroid Build Coastguard Worker	jnc	L(144bytesin256)
288*8d67ca89SAndroid Build Coastguard Worker
289*8d67ca89SAndroid Build Coastguard Worker	movdqu	144(%rdi), %xmm2
290*8d67ca89SAndroid Build Coastguard Worker	pxor	144(%rsi), %xmm2
291*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
292*8d67ca89SAndroid Build Coastguard Worker	jnc	L(160bytesin256)
293*8d67ca89SAndroid Build Coastguard Worker
294*8d67ca89SAndroid Build Coastguard Worker	movdqu	160(%rdi), %xmm2
295*8d67ca89SAndroid Build Coastguard Worker	pxor	160(%rsi), %xmm2
296*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
297*8d67ca89SAndroid Build Coastguard Worker	jnc	L(176bytesin256)
298*8d67ca89SAndroid Build Coastguard Worker
299*8d67ca89SAndroid Build Coastguard Worker	movdqu	176(%rdi), %xmm2
300*8d67ca89SAndroid Build Coastguard Worker	pxor	176(%rsi), %xmm2
301*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
302*8d67ca89SAndroid Build Coastguard Worker	jnc	L(192bytesin256)
303*8d67ca89SAndroid Build Coastguard Worker
304*8d67ca89SAndroid Build Coastguard Worker	movdqu	192(%rdi), %xmm2
305*8d67ca89SAndroid Build Coastguard Worker	pxor	192(%rsi), %xmm2
306*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
307*8d67ca89SAndroid Build Coastguard Worker	jnc	L(208bytesin256)
308*8d67ca89SAndroid Build Coastguard Worker
309*8d67ca89SAndroid Build Coastguard Worker	movdqu	208(%rdi), %xmm2
310*8d67ca89SAndroid Build Coastguard Worker	pxor	208(%rsi), %xmm2
311*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
312*8d67ca89SAndroid Build Coastguard Worker	jnc	L(224bytesin256)
313*8d67ca89SAndroid Build Coastguard Worker
314*8d67ca89SAndroid Build Coastguard Worker	movdqu	224(%rdi), %xmm2
315*8d67ca89SAndroid Build Coastguard Worker	pxor	224(%rsi), %xmm2
316*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
317*8d67ca89SAndroid Build Coastguard Worker	jnc	L(240bytesin256)
318*8d67ca89SAndroid Build Coastguard Worker
319*8d67ca89SAndroid Build Coastguard Worker	movdqu	240(%rdi), %xmm2
320*8d67ca89SAndroid Build Coastguard Worker	pxor	240(%rsi), %xmm2
321*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
322*8d67ca89SAndroid Build Coastguard Worker	jnc	L(256bytesin256)
323*8d67ca89SAndroid Build Coastguard Worker
324*8d67ca89SAndroid Build Coastguard Worker	add	$256, %rsi
325*8d67ca89SAndroid Build Coastguard Worker	add	$256, %rdi
326*8d67ca89SAndroid Build Coastguard Worker
327*8d67ca89SAndroid Build Coastguard Worker	cmp	$128, %rdx
328*8d67ca89SAndroid Build Coastguard Worker	jae	L(less256bytes)
329*8d67ca89SAndroid Build Coastguard Worker
330*8d67ca89SAndroid Build Coastguard Worker	cmp	$64, %rdx
331*8d67ca89SAndroid Build Coastguard Worker	jae	L(less128bytes)
332*8d67ca89SAndroid Build Coastguard Worker
333*8d67ca89SAndroid Build Coastguard Worker	cmp	$32, %rdx
334*8d67ca89SAndroid Build Coastguard Worker	jb	L(less32bytesin256)
335*8d67ca89SAndroid Build Coastguard Worker
336*8d67ca89SAndroid Build Coastguard Worker	movdqu	(%rdi), %xmm2
337*8d67ca89SAndroid Build Coastguard Worker	pxor	(%rsi), %xmm2
338*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
339*8d67ca89SAndroid Build Coastguard Worker	jnc	L(16bytesin256)
340*8d67ca89SAndroid Build Coastguard Worker
341*8d67ca89SAndroid Build Coastguard Worker	movdqu	16(%rdi), %xmm2
342*8d67ca89SAndroid Build Coastguard Worker	pxor	16(%rsi), %xmm2
343*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
344*8d67ca89SAndroid Build Coastguard Worker	jnc	L(32bytesin256)
345*8d67ca89SAndroid Build Coastguard Worker	sub	$32, %rdx
346*8d67ca89SAndroid Build Coastguard Worker	add	$32, %rdi
347*8d67ca89SAndroid Build Coastguard Worker	add	$32, %rsi
348*8d67ca89SAndroid Build Coastguard WorkerL(less32bytesin256):
349*8d67ca89SAndroid Build Coastguard Worker	add	%rdx, %rsi
350*8d67ca89SAndroid Build Coastguard Worker	add	%rdx, %rdi
351*8d67ca89SAndroid Build Coastguard Worker	BRANCH_TO_JMPTBL_ENTRY(L(table_64bytes), %rdx, 4)
352*8d67ca89SAndroid Build Coastguard Worker
353*8d67ca89SAndroid Build Coastguard Worker	ALIGN (4)
354*8d67ca89SAndroid Build Coastguard WorkerL(512bytesormore):
355*8d67ca89SAndroid Build Coastguard Worker	mov	__x86_data_cache_size_half(%rip), %r8
356*8d67ca89SAndroid Build Coastguard Worker	mov	%r8, %r9
357*8d67ca89SAndroid Build Coastguard Worker	shr	$1, %r8
358*8d67ca89SAndroid Build Coastguard Worker	add	%r9, %r8
359*8d67ca89SAndroid Build Coastguard Worker	cmp	%r8, %rdx
360*8d67ca89SAndroid Build Coastguard Worker	ja	L(L2_L3_cache_unaglined)
361*8d67ca89SAndroid Build Coastguard Worker	sub	$64, %rdx
362*8d67ca89SAndroid Build Coastguard Worker	ALIGN (4)
363*8d67ca89SAndroid Build Coastguard WorkerL(64bytesormore_loop):
364*8d67ca89SAndroid Build Coastguard Worker	movdqu	(%rdi), %xmm2
365*8d67ca89SAndroid Build Coastguard Worker	pxor	(%rsi), %xmm2
366*8d67ca89SAndroid Build Coastguard Worker	movdqa	%xmm2, %xmm1
367*8d67ca89SAndroid Build Coastguard Worker
368*8d67ca89SAndroid Build Coastguard Worker	movdqu	16(%rdi), %xmm3
369*8d67ca89SAndroid Build Coastguard Worker	pxor	16(%rsi), %xmm3
370*8d67ca89SAndroid Build Coastguard Worker	por	%xmm3, %xmm1
371*8d67ca89SAndroid Build Coastguard Worker
372*8d67ca89SAndroid Build Coastguard Worker	movdqu	32(%rdi), %xmm4
373*8d67ca89SAndroid Build Coastguard Worker	pxor	32(%rsi), %xmm4
374*8d67ca89SAndroid Build Coastguard Worker	por	%xmm4, %xmm1
375*8d67ca89SAndroid Build Coastguard Worker
376*8d67ca89SAndroid Build Coastguard Worker	movdqu	48(%rdi), %xmm5
377*8d67ca89SAndroid Build Coastguard Worker	pxor	48(%rsi), %xmm5
378*8d67ca89SAndroid Build Coastguard Worker	por	%xmm5, %xmm1
379*8d67ca89SAndroid Build Coastguard Worker
380*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm1, %xmm0
381*8d67ca89SAndroid Build Coastguard Worker	jnc	L(64bytesormore_loop_end)
382*8d67ca89SAndroid Build Coastguard Worker	add	$64, %rsi
383*8d67ca89SAndroid Build Coastguard Worker	add	$64, %rdi
384*8d67ca89SAndroid Build Coastguard Worker	sub	$64, %rdx
385*8d67ca89SAndroid Build Coastguard Worker	jae	L(64bytesormore_loop)
386*8d67ca89SAndroid Build Coastguard Worker
387*8d67ca89SAndroid Build Coastguard Worker	add	$64, %rdx
388*8d67ca89SAndroid Build Coastguard Worker	add	%rdx, %rsi
389*8d67ca89SAndroid Build Coastguard Worker	add	%rdx, %rdi
390*8d67ca89SAndroid Build Coastguard Worker	BRANCH_TO_JMPTBL_ENTRY(L(table_64bytes), %rdx, 4)
391*8d67ca89SAndroid Build Coastguard Worker
392*8d67ca89SAndroid Build Coastguard WorkerL(L2_L3_cache_unaglined):
393*8d67ca89SAndroid Build Coastguard Worker	sub	$64, %rdx
394*8d67ca89SAndroid Build Coastguard Worker	ALIGN (4)
395*8d67ca89SAndroid Build Coastguard WorkerL(L2_L3_unaligned_128bytes_loop):
396*8d67ca89SAndroid Build Coastguard Worker	prefetchnta 0x1c0(%rdi)
397*8d67ca89SAndroid Build Coastguard Worker	prefetchnta 0x1c0(%rsi)
398*8d67ca89SAndroid Build Coastguard Worker	movdqu	(%rdi), %xmm2
399*8d67ca89SAndroid Build Coastguard Worker	pxor	(%rsi), %xmm2
400*8d67ca89SAndroid Build Coastguard Worker	movdqa	%xmm2, %xmm1
401*8d67ca89SAndroid Build Coastguard Worker
402*8d67ca89SAndroid Build Coastguard Worker	movdqu	16(%rdi), %xmm3
403*8d67ca89SAndroid Build Coastguard Worker	pxor	16(%rsi), %xmm3
404*8d67ca89SAndroid Build Coastguard Worker	por	%xmm3, %xmm1
405*8d67ca89SAndroid Build Coastguard Worker
406*8d67ca89SAndroid Build Coastguard Worker	movdqu	32(%rdi), %xmm4
407*8d67ca89SAndroid Build Coastguard Worker	pxor	32(%rsi), %xmm4
408*8d67ca89SAndroid Build Coastguard Worker	por	%xmm4, %xmm1
409*8d67ca89SAndroid Build Coastguard Worker
410*8d67ca89SAndroid Build Coastguard Worker	movdqu	48(%rdi), %xmm5
411*8d67ca89SAndroid Build Coastguard Worker	pxor	48(%rsi), %xmm5
412*8d67ca89SAndroid Build Coastguard Worker	por	%xmm5, %xmm1
413*8d67ca89SAndroid Build Coastguard Worker
414*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm1, %xmm0
415*8d67ca89SAndroid Build Coastguard Worker	jnc	L(64bytesormore_loop_end)
416*8d67ca89SAndroid Build Coastguard Worker	add	$64, %rsi
417*8d67ca89SAndroid Build Coastguard Worker	add	$64, %rdi
418*8d67ca89SAndroid Build Coastguard Worker	sub	$64, %rdx
419*8d67ca89SAndroid Build Coastguard Worker	jae	L(L2_L3_unaligned_128bytes_loop)
420*8d67ca89SAndroid Build Coastguard Worker
421*8d67ca89SAndroid Build Coastguard Worker	add	$64, %rdx
422*8d67ca89SAndroid Build Coastguard Worker	add	%rdx, %rsi
423*8d67ca89SAndroid Build Coastguard Worker	add	%rdx, %rdi
424*8d67ca89SAndroid Build Coastguard Worker	BRANCH_TO_JMPTBL_ENTRY(L(table_64bytes), %rdx, 4)
425*8d67ca89SAndroid Build Coastguard Worker
426*8d67ca89SAndroid Build Coastguard Worker/*
427*8d67ca89SAndroid Build Coastguard Worker * This case is for machines which are sensitive for unaligned instructions.
428*8d67ca89SAndroid Build Coastguard Worker */
429*8d67ca89SAndroid Build Coastguard Worker	ALIGN (4)
430*8d67ca89SAndroid Build Coastguard WorkerL(2aligned):
431*8d67ca89SAndroid Build Coastguard Worker	cmp	$128, %rdx
432*8d67ca89SAndroid Build Coastguard Worker	ja	L(128bytesormorein2aligned)
433*8d67ca89SAndroid Build Coastguard WorkerL(less128bytesin2aligned):
434*8d67ca89SAndroid Build Coastguard Worker	sub	$64, %rdx
435*8d67ca89SAndroid Build Coastguard Worker
436*8d67ca89SAndroid Build Coastguard Worker	movdqa	(%rdi), %xmm2
437*8d67ca89SAndroid Build Coastguard Worker	pxor	(%rsi), %xmm2
438*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
439*8d67ca89SAndroid Build Coastguard Worker	jnc	L(16bytesin256)
440*8d67ca89SAndroid Build Coastguard Worker
441*8d67ca89SAndroid Build Coastguard Worker	movdqa	16(%rdi), %xmm2
442*8d67ca89SAndroid Build Coastguard Worker	pxor	16(%rsi), %xmm2
443*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
444*8d67ca89SAndroid Build Coastguard Worker	jnc	L(32bytesin256)
445*8d67ca89SAndroid Build Coastguard Worker
446*8d67ca89SAndroid Build Coastguard Worker	movdqa	32(%rdi), %xmm2
447*8d67ca89SAndroid Build Coastguard Worker	pxor	32(%rsi), %xmm2
448*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
449*8d67ca89SAndroid Build Coastguard Worker	jnc	L(48bytesin256)
450*8d67ca89SAndroid Build Coastguard Worker
451*8d67ca89SAndroid Build Coastguard Worker	movdqa	48(%rdi), %xmm2
452*8d67ca89SAndroid Build Coastguard Worker	pxor	48(%rsi), %xmm2
453*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
454*8d67ca89SAndroid Build Coastguard Worker	jnc	L(64bytesin256)
455*8d67ca89SAndroid Build Coastguard Worker	cmp	$32, %rdx
456*8d67ca89SAndroid Build Coastguard Worker	jb	L(less32bytesin64in2alinged)
457*8d67ca89SAndroid Build Coastguard Worker
458*8d67ca89SAndroid Build Coastguard Worker	movdqa	64(%rdi), %xmm2
459*8d67ca89SAndroid Build Coastguard Worker	pxor	64(%rsi), %xmm2
460*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
461*8d67ca89SAndroid Build Coastguard Worker	jnc	L(80bytesin256)
462*8d67ca89SAndroid Build Coastguard Worker
463*8d67ca89SAndroid Build Coastguard Worker	movdqa	80(%rdi), %xmm2
464*8d67ca89SAndroid Build Coastguard Worker	pxor	80(%rsi), %xmm2
465*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
466*8d67ca89SAndroid Build Coastguard Worker	jnc	L(96bytesin256)
467*8d67ca89SAndroid Build Coastguard Worker	sub	$32, %rdx
468*8d67ca89SAndroid Build Coastguard Worker	add	$32, %rdi
469*8d67ca89SAndroid Build Coastguard Worker	add	$32, %rsi
470*8d67ca89SAndroid Build Coastguard WorkerL(less32bytesin64in2alinged):
471*8d67ca89SAndroid Build Coastguard Worker	add	$64, %rdi
472*8d67ca89SAndroid Build Coastguard Worker	add	$64, %rsi
473*8d67ca89SAndroid Build Coastguard Worker	add	%rdx, %rsi
474*8d67ca89SAndroid Build Coastguard Worker	add	%rdx, %rdi
475*8d67ca89SAndroid Build Coastguard Worker	BRANCH_TO_JMPTBL_ENTRY(L(table_64bytes), %rdx, 4)
476*8d67ca89SAndroid Build Coastguard Worker
477*8d67ca89SAndroid Build Coastguard Worker	ALIGN (4)
478*8d67ca89SAndroid Build Coastguard WorkerL(128bytesormorein2aligned):
479*8d67ca89SAndroid Build Coastguard Worker	cmp	$512, %rdx
480*8d67ca89SAndroid Build Coastguard Worker	ja	L(512bytesormorein2aligned)
481*8d67ca89SAndroid Build Coastguard Worker	cmp	$256, %rdx
482*8d67ca89SAndroid Build Coastguard Worker	ja	L(256bytesormorein2aligned)
483*8d67ca89SAndroid Build Coastguard WorkerL(less256bytesin2alinged):
484*8d67ca89SAndroid Build Coastguard Worker	sub	$128, %rdx
485*8d67ca89SAndroid Build Coastguard Worker
486*8d67ca89SAndroid Build Coastguard Worker	movdqa	(%rdi), %xmm2
487*8d67ca89SAndroid Build Coastguard Worker	pxor	(%rsi), %xmm2
488*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
489*8d67ca89SAndroid Build Coastguard Worker	jnc	L(16bytesin256)
490*8d67ca89SAndroid Build Coastguard Worker
491*8d67ca89SAndroid Build Coastguard Worker	movdqa	16(%rdi), %xmm2
492*8d67ca89SAndroid Build Coastguard Worker	pxor	16(%rsi), %xmm2
493*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
494*8d67ca89SAndroid Build Coastguard Worker	jnc	L(32bytesin256)
495*8d67ca89SAndroid Build Coastguard Worker
496*8d67ca89SAndroid Build Coastguard Worker	movdqa	32(%rdi), %xmm2
497*8d67ca89SAndroid Build Coastguard Worker	pxor	32(%rsi), %xmm2
498*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
499*8d67ca89SAndroid Build Coastguard Worker	jnc	L(48bytesin256)
500*8d67ca89SAndroid Build Coastguard Worker
501*8d67ca89SAndroid Build Coastguard Worker	movdqa	48(%rdi), %xmm2
502*8d67ca89SAndroid Build Coastguard Worker	pxor	48(%rsi), %xmm2
503*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
504*8d67ca89SAndroid Build Coastguard Worker	jnc	L(64bytesin256)
505*8d67ca89SAndroid Build Coastguard Worker
506*8d67ca89SAndroid Build Coastguard Worker	movdqa	64(%rdi), %xmm2
507*8d67ca89SAndroid Build Coastguard Worker	pxor	64(%rsi), %xmm2
508*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
509*8d67ca89SAndroid Build Coastguard Worker	jnc	L(80bytesin256)
510*8d67ca89SAndroid Build Coastguard Worker
511*8d67ca89SAndroid Build Coastguard Worker	movdqa	80(%rdi), %xmm2
512*8d67ca89SAndroid Build Coastguard Worker	pxor	80(%rsi), %xmm2
513*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
514*8d67ca89SAndroid Build Coastguard Worker	jnc	L(96bytesin256)
515*8d67ca89SAndroid Build Coastguard Worker
516*8d67ca89SAndroid Build Coastguard Worker	movdqa	96(%rdi), %xmm2
517*8d67ca89SAndroid Build Coastguard Worker	pxor	96(%rsi), %xmm2
518*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
519*8d67ca89SAndroid Build Coastguard Worker	jnc	L(112bytesin256)
520*8d67ca89SAndroid Build Coastguard Worker
521*8d67ca89SAndroid Build Coastguard Worker	movdqa	112(%rdi), %xmm2
522*8d67ca89SAndroid Build Coastguard Worker	pxor	112(%rsi), %xmm2
523*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
524*8d67ca89SAndroid Build Coastguard Worker	jnc	L(128bytesin256)
525*8d67ca89SAndroid Build Coastguard Worker
526*8d67ca89SAndroid Build Coastguard Worker	add	$128, %rsi
527*8d67ca89SAndroid Build Coastguard Worker	add	$128, %rdi
528*8d67ca89SAndroid Build Coastguard Worker
529*8d67ca89SAndroid Build Coastguard Worker	cmp	$64, %rdx
530*8d67ca89SAndroid Build Coastguard Worker	jae	L(less128bytesin2aligned)
531*8d67ca89SAndroid Build Coastguard Worker
532*8d67ca89SAndroid Build Coastguard Worker	cmp	$32, %rdx
533*8d67ca89SAndroid Build Coastguard Worker	jb	L(less32bytesin128in2aligned)
534*8d67ca89SAndroid Build Coastguard Worker
535*8d67ca89SAndroid Build Coastguard Worker	movdqu	(%rdi), %xmm2
536*8d67ca89SAndroid Build Coastguard Worker	pxor	(%rsi), %xmm2
537*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
538*8d67ca89SAndroid Build Coastguard Worker	jnc	L(16bytesin256)
539*8d67ca89SAndroid Build Coastguard Worker
540*8d67ca89SAndroid Build Coastguard Worker	movdqu	16(%rdi), %xmm2
541*8d67ca89SAndroid Build Coastguard Worker	pxor	16(%rsi), %xmm2
542*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
543*8d67ca89SAndroid Build Coastguard Worker	jnc	L(32bytesin256)
544*8d67ca89SAndroid Build Coastguard Worker	sub	$32, %rdx
545*8d67ca89SAndroid Build Coastguard Worker	add	$32, %rdi
546*8d67ca89SAndroid Build Coastguard Worker	add	$32, %rsi
547*8d67ca89SAndroid Build Coastguard WorkerL(less32bytesin128in2aligned):
548*8d67ca89SAndroid Build Coastguard Worker	add	%rdx, %rsi
549*8d67ca89SAndroid Build Coastguard Worker	add	%rdx, %rdi
550*8d67ca89SAndroid Build Coastguard Worker	BRANCH_TO_JMPTBL_ENTRY(L(table_64bytes), %rdx, 4)
551*8d67ca89SAndroid Build Coastguard Worker
552*8d67ca89SAndroid Build Coastguard Worker	ALIGN (4)
553*8d67ca89SAndroid Build Coastguard WorkerL(256bytesormorein2aligned):
554*8d67ca89SAndroid Build Coastguard Worker
555*8d67ca89SAndroid Build Coastguard Worker	sub	$256, %rdx
556*8d67ca89SAndroid Build Coastguard Worker	movdqa	(%rdi), %xmm2
557*8d67ca89SAndroid Build Coastguard Worker	pxor	(%rsi), %xmm2
558*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
559*8d67ca89SAndroid Build Coastguard Worker	jnc	L(16bytesin256)
560*8d67ca89SAndroid Build Coastguard Worker
561*8d67ca89SAndroid Build Coastguard Worker	movdqa	16(%rdi), %xmm2
562*8d67ca89SAndroid Build Coastguard Worker	pxor	16(%rsi), %xmm2
563*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
564*8d67ca89SAndroid Build Coastguard Worker	jnc	L(32bytesin256)
565*8d67ca89SAndroid Build Coastguard Worker
566*8d67ca89SAndroid Build Coastguard Worker	movdqa	32(%rdi), %xmm2
567*8d67ca89SAndroid Build Coastguard Worker	pxor	32(%rsi), %xmm2
568*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
569*8d67ca89SAndroid Build Coastguard Worker	jnc	L(48bytesin256)
570*8d67ca89SAndroid Build Coastguard Worker
571*8d67ca89SAndroid Build Coastguard Worker	movdqa	48(%rdi), %xmm2
572*8d67ca89SAndroid Build Coastguard Worker	pxor	48(%rsi), %xmm2
573*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
574*8d67ca89SAndroid Build Coastguard Worker	jnc	L(64bytesin256)
575*8d67ca89SAndroid Build Coastguard Worker
576*8d67ca89SAndroid Build Coastguard Worker	movdqa	64(%rdi), %xmm2
577*8d67ca89SAndroid Build Coastguard Worker	pxor	64(%rsi), %xmm2
578*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
579*8d67ca89SAndroid Build Coastguard Worker	jnc	L(80bytesin256)
580*8d67ca89SAndroid Build Coastguard Worker
581*8d67ca89SAndroid Build Coastguard Worker	movdqa	80(%rdi), %xmm2
582*8d67ca89SAndroid Build Coastguard Worker	pxor	80(%rsi), %xmm2
583*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
584*8d67ca89SAndroid Build Coastguard Worker	jnc	L(96bytesin256)
585*8d67ca89SAndroid Build Coastguard Worker
586*8d67ca89SAndroid Build Coastguard Worker	movdqa	96(%rdi), %xmm2
587*8d67ca89SAndroid Build Coastguard Worker	pxor	96(%rsi), %xmm2
588*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
589*8d67ca89SAndroid Build Coastguard Worker	jnc	L(112bytesin256)
590*8d67ca89SAndroid Build Coastguard Worker
591*8d67ca89SAndroid Build Coastguard Worker	movdqa	112(%rdi), %xmm2
592*8d67ca89SAndroid Build Coastguard Worker	pxor	112(%rsi), %xmm2
593*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
594*8d67ca89SAndroid Build Coastguard Worker	jnc	L(128bytesin256)
595*8d67ca89SAndroid Build Coastguard Worker
596*8d67ca89SAndroid Build Coastguard Worker	movdqa	128(%rdi), %xmm2
597*8d67ca89SAndroid Build Coastguard Worker	pxor	128(%rsi), %xmm2
598*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
599*8d67ca89SAndroid Build Coastguard Worker	jnc	L(144bytesin256)
600*8d67ca89SAndroid Build Coastguard Worker
601*8d67ca89SAndroid Build Coastguard Worker	movdqa	144(%rdi), %xmm2
602*8d67ca89SAndroid Build Coastguard Worker	pxor	144(%rsi), %xmm2
603*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
604*8d67ca89SAndroid Build Coastguard Worker	jnc	L(160bytesin256)
605*8d67ca89SAndroid Build Coastguard Worker
606*8d67ca89SAndroid Build Coastguard Worker	movdqa	160(%rdi), %xmm2
607*8d67ca89SAndroid Build Coastguard Worker	pxor	160(%rsi), %xmm2
608*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
609*8d67ca89SAndroid Build Coastguard Worker	jnc	L(176bytesin256)
610*8d67ca89SAndroid Build Coastguard Worker
611*8d67ca89SAndroid Build Coastguard Worker	movdqa	176(%rdi), %xmm2
612*8d67ca89SAndroid Build Coastguard Worker	pxor	176(%rsi), %xmm2
613*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
614*8d67ca89SAndroid Build Coastguard Worker	jnc	L(192bytesin256)
615*8d67ca89SAndroid Build Coastguard Worker
616*8d67ca89SAndroid Build Coastguard Worker	movdqa	192(%rdi), %xmm2
617*8d67ca89SAndroid Build Coastguard Worker	pxor	192(%rsi), %xmm2
618*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
619*8d67ca89SAndroid Build Coastguard Worker	jnc	L(208bytesin256)
620*8d67ca89SAndroid Build Coastguard Worker
621*8d67ca89SAndroid Build Coastguard Worker	movdqa	208(%rdi), %xmm2
622*8d67ca89SAndroid Build Coastguard Worker	pxor	208(%rsi), %xmm2
623*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
624*8d67ca89SAndroid Build Coastguard Worker	jnc	L(224bytesin256)
625*8d67ca89SAndroid Build Coastguard Worker
626*8d67ca89SAndroid Build Coastguard Worker	movdqa	224(%rdi), %xmm2
627*8d67ca89SAndroid Build Coastguard Worker	pxor	224(%rsi), %xmm2
628*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
629*8d67ca89SAndroid Build Coastguard Worker	jnc	L(240bytesin256)
630*8d67ca89SAndroid Build Coastguard Worker
631*8d67ca89SAndroid Build Coastguard Worker	movdqa	240(%rdi), %xmm2
632*8d67ca89SAndroid Build Coastguard Worker	pxor	240(%rsi), %xmm2
633*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
634*8d67ca89SAndroid Build Coastguard Worker	jnc	L(256bytesin256)
635*8d67ca89SAndroid Build Coastguard Worker
636*8d67ca89SAndroid Build Coastguard Worker	add	$256, %rsi
637*8d67ca89SAndroid Build Coastguard Worker	add	$256, %rdi
638*8d67ca89SAndroid Build Coastguard Worker
639*8d67ca89SAndroid Build Coastguard Worker	cmp	$128, %rdx
640*8d67ca89SAndroid Build Coastguard Worker	jae	L(less256bytesin2alinged)
641*8d67ca89SAndroid Build Coastguard Worker
642*8d67ca89SAndroid Build Coastguard Worker	cmp	$64, %rdx
643*8d67ca89SAndroid Build Coastguard Worker	jae	L(less128bytesin2aligned)
644*8d67ca89SAndroid Build Coastguard Worker
645*8d67ca89SAndroid Build Coastguard Worker	cmp	$32, %rdx
646*8d67ca89SAndroid Build Coastguard Worker	jb	L(less32bytesin256in2alinged)
647*8d67ca89SAndroid Build Coastguard Worker
648*8d67ca89SAndroid Build Coastguard Worker	movdqa	(%rdi), %xmm2
649*8d67ca89SAndroid Build Coastguard Worker	pxor	(%rsi), %xmm2
650*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
651*8d67ca89SAndroid Build Coastguard Worker	jnc	L(16bytesin256)
652*8d67ca89SAndroid Build Coastguard Worker
653*8d67ca89SAndroid Build Coastguard Worker	movdqa	16(%rdi), %xmm2
654*8d67ca89SAndroid Build Coastguard Worker	pxor	16(%rsi), %xmm2
655*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
656*8d67ca89SAndroid Build Coastguard Worker	jnc	L(32bytesin256)
657*8d67ca89SAndroid Build Coastguard Worker	sub	$32, %rdx
658*8d67ca89SAndroid Build Coastguard Worker	add	$32, %rdi
659*8d67ca89SAndroid Build Coastguard Worker	add	$32, %rsi
660*8d67ca89SAndroid Build Coastguard WorkerL(less32bytesin256in2alinged):
661*8d67ca89SAndroid Build Coastguard Worker	add	%rdx, %rsi
662*8d67ca89SAndroid Build Coastguard Worker	add	%rdx, %rdi
663*8d67ca89SAndroid Build Coastguard Worker	BRANCH_TO_JMPTBL_ENTRY(L(table_64bytes), %rdx, 4)
664*8d67ca89SAndroid Build Coastguard Worker
665*8d67ca89SAndroid Build Coastguard Worker	ALIGN (4)
666*8d67ca89SAndroid Build Coastguard WorkerL(512bytesormorein2aligned):
667*8d67ca89SAndroid Build Coastguard Worker	mov	__x86_data_cache_size_half(%rip), %r8
668*8d67ca89SAndroid Build Coastguard Worker	mov	%r8, %r9
669*8d67ca89SAndroid Build Coastguard Worker	shr	$1, %r8
670*8d67ca89SAndroid Build Coastguard Worker	add	%r9, %r8
671*8d67ca89SAndroid Build Coastguard Worker	cmp	%r8, %rdx
672*8d67ca89SAndroid Build Coastguard Worker	ja	L(L2_L3_cache_aglined)
673*8d67ca89SAndroid Build Coastguard Worker
674*8d67ca89SAndroid Build Coastguard Worker	sub	$64, %rdx
675*8d67ca89SAndroid Build Coastguard Worker	ALIGN (4)
676*8d67ca89SAndroid Build Coastguard WorkerL(64bytesormore_loopin2aligned):
677*8d67ca89SAndroid Build Coastguard Worker	movdqa	(%rdi), %xmm2
678*8d67ca89SAndroid Build Coastguard Worker	pxor	(%rsi), %xmm2
679*8d67ca89SAndroid Build Coastguard Worker	movdqa	%xmm2, %xmm1
680*8d67ca89SAndroid Build Coastguard Worker
681*8d67ca89SAndroid Build Coastguard Worker	movdqa	16(%rdi), %xmm3
682*8d67ca89SAndroid Build Coastguard Worker	pxor	16(%rsi), %xmm3
683*8d67ca89SAndroid Build Coastguard Worker	por	%xmm3, %xmm1
684*8d67ca89SAndroid Build Coastguard Worker
685*8d67ca89SAndroid Build Coastguard Worker	movdqa	32(%rdi), %xmm4
686*8d67ca89SAndroid Build Coastguard Worker	pxor	32(%rsi), %xmm4
687*8d67ca89SAndroid Build Coastguard Worker	por	%xmm4, %xmm1
688*8d67ca89SAndroid Build Coastguard Worker
689*8d67ca89SAndroid Build Coastguard Worker	movdqa	48(%rdi), %xmm5
690*8d67ca89SAndroid Build Coastguard Worker	pxor	48(%rsi), %xmm5
691*8d67ca89SAndroid Build Coastguard Worker	por	%xmm5, %xmm1
692*8d67ca89SAndroid Build Coastguard Worker
693*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm1, %xmm0
694*8d67ca89SAndroid Build Coastguard Worker	jnc	L(64bytesormore_loop_end)
695*8d67ca89SAndroid Build Coastguard Worker	add	$64, %rsi
696*8d67ca89SAndroid Build Coastguard Worker	add	$64, %rdi
697*8d67ca89SAndroid Build Coastguard Worker	sub	$64, %rdx
698*8d67ca89SAndroid Build Coastguard Worker	jae	L(64bytesormore_loopin2aligned)
699*8d67ca89SAndroid Build Coastguard Worker
700*8d67ca89SAndroid Build Coastguard Worker	add	$64, %rdx
701*8d67ca89SAndroid Build Coastguard Worker	add	%rdx, %rsi
702*8d67ca89SAndroid Build Coastguard Worker	add	%rdx, %rdi
703*8d67ca89SAndroid Build Coastguard Worker	BRANCH_TO_JMPTBL_ENTRY(L(table_64bytes), %rdx, 4)
704*8d67ca89SAndroid Build Coastguard WorkerL(L2_L3_cache_aglined):
705*8d67ca89SAndroid Build Coastguard Worker	sub	$64, %rdx
706*8d67ca89SAndroid Build Coastguard Worker	ALIGN (4)
707*8d67ca89SAndroid Build Coastguard WorkerL(L2_L3_aligned_128bytes_loop):
708*8d67ca89SAndroid Build Coastguard Worker	prefetchnta 0x1c0(%rdi)
709*8d67ca89SAndroid Build Coastguard Worker	prefetchnta 0x1c0(%rsi)
710*8d67ca89SAndroid Build Coastguard Worker	movdqa	(%rdi), %xmm2
711*8d67ca89SAndroid Build Coastguard Worker	pxor	(%rsi), %xmm2
712*8d67ca89SAndroid Build Coastguard Worker	movdqa	%xmm2, %xmm1
713*8d67ca89SAndroid Build Coastguard Worker
714*8d67ca89SAndroid Build Coastguard Worker	movdqa	16(%rdi), %xmm3
715*8d67ca89SAndroid Build Coastguard Worker	pxor	16(%rsi), %xmm3
716*8d67ca89SAndroid Build Coastguard Worker	por	%xmm3, %xmm1
717*8d67ca89SAndroid Build Coastguard Worker
718*8d67ca89SAndroid Build Coastguard Worker	movdqa	32(%rdi), %xmm4
719*8d67ca89SAndroid Build Coastguard Worker	pxor	32(%rsi), %xmm4
720*8d67ca89SAndroid Build Coastguard Worker	por	%xmm4, %xmm1
721*8d67ca89SAndroid Build Coastguard Worker
722*8d67ca89SAndroid Build Coastguard Worker	movdqa	48(%rdi), %xmm5
723*8d67ca89SAndroid Build Coastguard Worker	pxor	48(%rsi), %xmm5
724*8d67ca89SAndroid Build Coastguard Worker	por	%xmm5, %xmm1
725*8d67ca89SAndroid Build Coastguard Worker
726*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm1, %xmm0
727*8d67ca89SAndroid Build Coastguard Worker	jnc	L(64bytesormore_loop_end)
728*8d67ca89SAndroid Build Coastguard Worker	add	$64, %rsi
729*8d67ca89SAndroid Build Coastguard Worker	add	$64, %rdi
730*8d67ca89SAndroid Build Coastguard Worker	sub	$64, %rdx
731*8d67ca89SAndroid Build Coastguard Worker	jae	L(L2_L3_aligned_128bytes_loop)
732*8d67ca89SAndroid Build Coastguard Worker
733*8d67ca89SAndroid Build Coastguard Worker	add	$64, %rdx
734*8d67ca89SAndroid Build Coastguard Worker	add	%rdx, %rsi
735*8d67ca89SAndroid Build Coastguard Worker	add	%rdx, %rdi
736*8d67ca89SAndroid Build Coastguard Worker	BRANCH_TO_JMPTBL_ENTRY(L(table_64bytes), %rdx, 4)
737*8d67ca89SAndroid Build Coastguard Worker
738*8d67ca89SAndroid Build Coastguard Worker
739*8d67ca89SAndroid Build Coastguard Worker	ALIGN (4)
740*8d67ca89SAndroid Build Coastguard WorkerL(64bytesormore_loop_end):
741*8d67ca89SAndroid Build Coastguard Worker	add	$16, %rdi
742*8d67ca89SAndroid Build Coastguard Worker	add	$16, %rsi
743*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
744*8d67ca89SAndroid Build Coastguard Worker	jnc	L(16bytes)
745*8d67ca89SAndroid Build Coastguard Worker
746*8d67ca89SAndroid Build Coastguard Worker	add	$16, %rdi
747*8d67ca89SAndroid Build Coastguard Worker	add	$16, %rsi
748*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm3, %xmm0
749*8d67ca89SAndroid Build Coastguard Worker	jnc	L(16bytes)
750*8d67ca89SAndroid Build Coastguard Worker
751*8d67ca89SAndroid Build Coastguard Worker	add	$16, %rdi
752*8d67ca89SAndroid Build Coastguard Worker	add	$16, %rsi
753*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm4, %xmm0
754*8d67ca89SAndroid Build Coastguard Worker	jnc	L(16bytes)
755*8d67ca89SAndroid Build Coastguard Worker
756*8d67ca89SAndroid Build Coastguard Worker	add	$16, %rdi
757*8d67ca89SAndroid Build Coastguard Worker	add	$16, %rsi
758*8d67ca89SAndroid Build Coastguard Worker	jmp	L(16bytes)
759*8d67ca89SAndroid Build Coastguard Worker
760*8d67ca89SAndroid Build Coastguard WorkerL(256bytesin256):
761*8d67ca89SAndroid Build Coastguard Worker	add	$256, %rdi
762*8d67ca89SAndroid Build Coastguard Worker	add	$256, %rsi
763*8d67ca89SAndroid Build Coastguard Worker	jmp	L(16bytes)
764*8d67ca89SAndroid Build Coastguard WorkerL(240bytesin256):
765*8d67ca89SAndroid Build Coastguard Worker	add	$240, %rdi
766*8d67ca89SAndroid Build Coastguard Worker	add	$240, %rsi
767*8d67ca89SAndroid Build Coastguard Worker	jmp	L(16bytes)
768*8d67ca89SAndroid Build Coastguard WorkerL(224bytesin256):
769*8d67ca89SAndroid Build Coastguard Worker	add	$224, %rdi
770*8d67ca89SAndroid Build Coastguard Worker	add	$224, %rsi
771*8d67ca89SAndroid Build Coastguard Worker	jmp	L(16bytes)
772*8d67ca89SAndroid Build Coastguard WorkerL(208bytesin256):
773*8d67ca89SAndroid Build Coastguard Worker	add	$208, %rdi
774*8d67ca89SAndroid Build Coastguard Worker	add	$208, %rsi
775*8d67ca89SAndroid Build Coastguard Worker	jmp	L(16bytes)
776*8d67ca89SAndroid Build Coastguard WorkerL(192bytesin256):
777*8d67ca89SAndroid Build Coastguard Worker	add	$192, %rdi
778*8d67ca89SAndroid Build Coastguard Worker	add	$192, %rsi
779*8d67ca89SAndroid Build Coastguard Worker	jmp	L(16bytes)
780*8d67ca89SAndroid Build Coastguard WorkerL(176bytesin256):
781*8d67ca89SAndroid Build Coastguard Worker	add	$176, %rdi
782*8d67ca89SAndroid Build Coastguard Worker	add	$176, %rsi
783*8d67ca89SAndroid Build Coastguard Worker	jmp	L(16bytes)
784*8d67ca89SAndroid Build Coastguard WorkerL(160bytesin256):
785*8d67ca89SAndroid Build Coastguard Worker	add	$160, %rdi
786*8d67ca89SAndroid Build Coastguard Worker	add	$160, %rsi
787*8d67ca89SAndroid Build Coastguard Worker	jmp	L(16bytes)
788*8d67ca89SAndroid Build Coastguard WorkerL(144bytesin256):
789*8d67ca89SAndroid Build Coastguard Worker	add	$144, %rdi
790*8d67ca89SAndroid Build Coastguard Worker	add	$144, %rsi
791*8d67ca89SAndroid Build Coastguard Worker	jmp	L(16bytes)
792*8d67ca89SAndroid Build Coastguard WorkerL(128bytesin256):
793*8d67ca89SAndroid Build Coastguard Worker	add	$128, %rdi
794*8d67ca89SAndroid Build Coastguard Worker	add	$128, %rsi
795*8d67ca89SAndroid Build Coastguard Worker	jmp	L(16bytes)
796*8d67ca89SAndroid Build Coastguard WorkerL(112bytesin256):
797*8d67ca89SAndroid Build Coastguard Worker	add	$112, %rdi
798*8d67ca89SAndroid Build Coastguard Worker	add	$112, %rsi
799*8d67ca89SAndroid Build Coastguard Worker	jmp	L(16bytes)
800*8d67ca89SAndroid Build Coastguard WorkerL(96bytesin256):
801*8d67ca89SAndroid Build Coastguard Worker	add	$96, %rdi
802*8d67ca89SAndroid Build Coastguard Worker	add	$96, %rsi
803*8d67ca89SAndroid Build Coastguard Worker	jmp	L(16bytes)
804*8d67ca89SAndroid Build Coastguard WorkerL(80bytesin256):
805*8d67ca89SAndroid Build Coastguard Worker	add	$80, %rdi
806*8d67ca89SAndroid Build Coastguard Worker	add	$80, %rsi
807*8d67ca89SAndroid Build Coastguard Worker	jmp	L(16bytes)
808*8d67ca89SAndroid Build Coastguard WorkerL(64bytesin256):
809*8d67ca89SAndroid Build Coastguard Worker	add	$64, %rdi
810*8d67ca89SAndroid Build Coastguard Worker	add	$64, %rsi
811*8d67ca89SAndroid Build Coastguard Worker	jmp	L(16bytes)
812*8d67ca89SAndroid Build Coastguard WorkerL(48bytesin256):
813*8d67ca89SAndroid Build Coastguard Worker	add	$16, %rdi
814*8d67ca89SAndroid Build Coastguard Worker	add	$16, %rsi
815*8d67ca89SAndroid Build Coastguard WorkerL(32bytesin256):
816*8d67ca89SAndroid Build Coastguard Worker	add	$16, %rdi
817*8d67ca89SAndroid Build Coastguard Worker	add	$16, %rsi
818*8d67ca89SAndroid Build Coastguard WorkerL(16bytesin256):
819*8d67ca89SAndroid Build Coastguard Worker	add	$16, %rdi
820*8d67ca89SAndroid Build Coastguard Worker	add	$16, %rsi
821*8d67ca89SAndroid Build Coastguard WorkerL(16bytes):
822*8d67ca89SAndroid Build Coastguard Worker	mov	-16(%rdi), %rax
823*8d67ca89SAndroid Build Coastguard Worker	mov	-16(%rsi), %rcx
824*8d67ca89SAndroid Build Coastguard Worker	cmp	%rax, %rcx
825*8d67ca89SAndroid Build Coastguard Worker	jne	L(diffin8bytes)
826*8d67ca89SAndroid Build Coastguard WorkerL(8bytes):
827*8d67ca89SAndroid Build Coastguard Worker	mov	-8(%rdi), %rax
828*8d67ca89SAndroid Build Coastguard Worker	mov	-8(%rsi), %rcx
829*8d67ca89SAndroid Build Coastguard Worker	cmp	%rax, %rcx
830*8d67ca89SAndroid Build Coastguard Worker	jne	L(diffin8bytes)
831*8d67ca89SAndroid Build Coastguard Worker	xor	%eax, %eax
832*8d67ca89SAndroid Build Coastguard Worker	ret
833*8d67ca89SAndroid Build Coastguard Worker
834*8d67ca89SAndroid Build Coastguard Worker	ALIGN (4)
835*8d67ca89SAndroid Build Coastguard WorkerL(12bytes):
836*8d67ca89SAndroid Build Coastguard Worker	mov	-12(%rdi), %rax
837*8d67ca89SAndroid Build Coastguard Worker	mov	-12(%rsi), %rcx
838*8d67ca89SAndroid Build Coastguard Worker	cmp	%rax, %rcx
839*8d67ca89SAndroid Build Coastguard Worker	jne	L(diffin8bytes)
840*8d67ca89SAndroid Build Coastguard WorkerL(4bytes):
841*8d67ca89SAndroid Build Coastguard Worker	mov	-4(%rsi), %ecx
842*8d67ca89SAndroid Build Coastguard Worker	mov	-4(%rdi), %eax
843*8d67ca89SAndroid Build Coastguard Worker	cmp	%eax, %ecx
844*8d67ca89SAndroid Build Coastguard Worker	jne	L(diffin4bytes)
845*8d67ca89SAndroid Build Coastguard WorkerL(0bytes):
846*8d67ca89SAndroid Build Coastguard Worker	xor	%eax, %eax
847*8d67ca89SAndroid Build Coastguard Worker	ret
848*8d67ca89SAndroid Build Coastguard Worker
849*8d67ca89SAndroid Build Coastguard Worker#ifndef USE_AS_WMEMCMP
850*8d67ca89SAndroid Build Coastguard Worker/* unreal case for wmemcmp */
851*8d67ca89SAndroid Build Coastguard Worker	ALIGN (4)
852*8d67ca89SAndroid Build Coastguard WorkerL(65bytes):
853*8d67ca89SAndroid Build Coastguard Worker	movdqu	-65(%rdi), %xmm1
854*8d67ca89SAndroid Build Coastguard Worker	movdqu	-65(%rsi), %xmm2
855*8d67ca89SAndroid Build Coastguard Worker	mov	$-65, %dl
856*8d67ca89SAndroid Build Coastguard Worker	pxor	%xmm1, %xmm2
857*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
858*8d67ca89SAndroid Build Coastguard Worker	jnc	L(less16bytes)
859*8d67ca89SAndroid Build Coastguard WorkerL(49bytes):
860*8d67ca89SAndroid Build Coastguard Worker	movdqu	-49(%rdi), %xmm1
861*8d67ca89SAndroid Build Coastguard Worker	movdqu	-49(%rsi), %xmm2
862*8d67ca89SAndroid Build Coastguard Worker	mov	$-49, %dl
863*8d67ca89SAndroid Build Coastguard Worker	pxor	%xmm1, %xmm2
864*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
865*8d67ca89SAndroid Build Coastguard Worker	jnc	L(less16bytes)
866*8d67ca89SAndroid Build Coastguard WorkerL(33bytes):
867*8d67ca89SAndroid Build Coastguard Worker	movdqu	-33(%rdi), %xmm1
868*8d67ca89SAndroid Build Coastguard Worker	movdqu	-33(%rsi), %xmm2
869*8d67ca89SAndroid Build Coastguard Worker	mov	$-33, %dl
870*8d67ca89SAndroid Build Coastguard Worker	pxor	%xmm1, %xmm2
871*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
872*8d67ca89SAndroid Build Coastguard Worker	jnc	L(less16bytes)
873*8d67ca89SAndroid Build Coastguard WorkerL(17bytes):
874*8d67ca89SAndroid Build Coastguard Worker	mov	-17(%rdi), %rax
875*8d67ca89SAndroid Build Coastguard Worker	mov	-17(%rsi), %rcx
876*8d67ca89SAndroid Build Coastguard Worker	cmp	%rax, %rcx
877*8d67ca89SAndroid Build Coastguard Worker	jne	L(diffin8bytes)
878*8d67ca89SAndroid Build Coastguard WorkerL(9bytes):
879*8d67ca89SAndroid Build Coastguard Worker	mov	-9(%rdi), %rax
880*8d67ca89SAndroid Build Coastguard Worker	mov	-9(%rsi), %rcx
881*8d67ca89SAndroid Build Coastguard Worker	cmp	%rax, %rcx
882*8d67ca89SAndroid Build Coastguard Worker	jne	L(diffin8bytes)
883*8d67ca89SAndroid Build Coastguard Worker	movzbl	-1(%rdi), %eax
884*8d67ca89SAndroid Build Coastguard Worker	movzbl	-1(%rsi), %edx
885*8d67ca89SAndroid Build Coastguard Worker	sub	%edx, %eax
886*8d67ca89SAndroid Build Coastguard Worker	ret
887*8d67ca89SAndroid Build Coastguard Worker
888*8d67ca89SAndroid Build Coastguard Worker	ALIGN (4)
889*8d67ca89SAndroid Build Coastguard WorkerL(13bytes):
890*8d67ca89SAndroid Build Coastguard Worker	mov	-13(%rdi), %rax
891*8d67ca89SAndroid Build Coastguard Worker	mov	-13(%rsi), %rcx
892*8d67ca89SAndroid Build Coastguard Worker	cmp	%rax, %rcx
893*8d67ca89SAndroid Build Coastguard Worker	jne	L(diffin8bytes)
894*8d67ca89SAndroid Build Coastguard Worker	mov	-8(%rdi), %rax
895*8d67ca89SAndroid Build Coastguard Worker	mov	-8(%rsi), %rcx
896*8d67ca89SAndroid Build Coastguard Worker	cmp	%rax, %rcx
897*8d67ca89SAndroid Build Coastguard Worker	jne	L(diffin8bytes)
898*8d67ca89SAndroid Build Coastguard Worker	xor	%eax, %eax
899*8d67ca89SAndroid Build Coastguard Worker	ret
900*8d67ca89SAndroid Build Coastguard Worker
901*8d67ca89SAndroid Build Coastguard Worker	ALIGN (4)
902*8d67ca89SAndroid Build Coastguard WorkerL(5bytes):
903*8d67ca89SAndroid Build Coastguard Worker	mov	-5(%rdi), %eax
904*8d67ca89SAndroid Build Coastguard Worker	mov	-5(%rsi), %ecx
905*8d67ca89SAndroid Build Coastguard Worker	cmp	%eax, %ecx
906*8d67ca89SAndroid Build Coastguard Worker	jne	L(diffin4bytes)
907*8d67ca89SAndroid Build Coastguard Worker	movzbl	-1(%rdi), %eax
908*8d67ca89SAndroid Build Coastguard Worker	movzbl	-1(%rsi), %edx
909*8d67ca89SAndroid Build Coastguard Worker	sub	%edx, %eax
910*8d67ca89SAndroid Build Coastguard Worker	ret
911*8d67ca89SAndroid Build Coastguard Worker
912*8d67ca89SAndroid Build Coastguard Worker	ALIGN (4)
913*8d67ca89SAndroid Build Coastguard WorkerL(66bytes):
914*8d67ca89SAndroid Build Coastguard Worker	movdqu	-66(%rdi), %xmm1
915*8d67ca89SAndroid Build Coastguard Worker	movdqu	-66(%rsi), %xmm2
916*8d67ca89SAndroid Build Coastguard Worker	mov	$-66, %dl
917*8d67ca89SAndroid Build Coastguard Worker	pxor	%xmm1, %xmm2
918*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
919*8d67ca89SAndroid Build Coastguard Worker	jnc	L(less16bytes)
920*8d67ca89SAndroid Build Coastguard WorkerL(50bytes):
921*8d67ca89SAndroid Build Coastguard Worker	movdqu	-50(%rdi), %xmm1
922*8d67ca89SAndroid Build Coastguard Worker	movdqu	-50(%rsi), %xmm2
923*8d67ca89SAndroid Build Coastguard Worker	mov	$-50, %dl
924*8d67ca89SAndroid Build Coastguard Worker	pxor	%xmm1, %xmm2
925*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
926*8d67ca89SAndroid Build Coastguard Worker	jnc	L(less16bytes)
927*8d67ca89SAndroid Build Coastguard WorkerL(34bytes):
928*8d67ca89SAndroid Build Coastguard Worker	movdqu	-34(%rdi), %xmm1
929*8d67ca89SAndroid Build Coastguard Worker	movdqu	-34(%rsi), %xmm2
930*8d67ca89SAndroid Build Coastguard Worker	mov	$-34, %dl
931*8d67ca89SAndroid Build Coastguard Worker	pxor	%xmm1, %xmm2
932*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
933*8d67ca89SAndroid Build Coastguard Worker	jnc	L(less16bytes)
934*8d67ca89SAndroid Build Coastguard WorkerL(18bytes):
935*8d67ca89SAndroid Build Coastguard Worker	mov	-18(%rdi), %rax
936*8d67ca89SAndroid Build Coastguard Worker	mov	-18(%rsi), %rcx
937*8d67ca89SAndroid Build Coastguard Worker	cmp	%rax, %rcx
938*8d67ca89SAndroid Build Coastguard Worker	jne	L(diffin8bytes)
939*8d67ca89SAndroid Build Coastguard WorkerL(10bytes):
940*8d67ca89SAndroid Build Coastguard Worker	mov	-10(%rdi), %rax
941*8d67ca89SAndroid Build Coastguard Worker	mov	-10(%rsi), %rcx
942*8d67ca89SAndroid Build Coastguard Worker	cmp	%rax, %rcx
943*8d67ca89SAndroid Build Coastguard Worker	jne	L(diffin8bytes)
944*8d67ca89SAndroid Build Coastguard Worker	movzwl	-2(%rdi), %eax
945*8d67ca89SAndroid Build Coastguard Worker	movzwl	-2(%rsi), %ecx
946*8d67ca89SAndroid Build Coastguard Worker	cmp	%cl, %al
947*8d67ca89SAndroid Build Coastguard Worker	jne	L(end)
948*8d67ca89SAndroid Build Coastguard Worker	and	$0xffff, %eax
949*8d67ca89SAndroid Build Coastguard Worker	and	$0xffff, %ecx
950*8d67ca89SAndroid Build Coastguard Worker	sub	%ecx, %eax
951*8d67ca89SAndroid Build Coastguard Worker	ret
952*8d67ca89SAndroid Build Coastguard Worker
953*8d67ca89SAndroid Build Coastguard Worker	ALIGN (4)
954*8d67ca89SAndroid Build Coastguard WorkerL(14bytes):
955*8d67ca89SAndroid Build Coastguard Worker	mov	-14(%rdi), %rax
956*8d67ca89SAndroid Build Coastguard Worker	mov	-14(%rsi), %rcx
957*8d67ca89SAndroid Build Coastguard Worker	cmp	%rax, %rcx
958*8d67ca89SAndroid Build Coastguard Worker	jne	L(diffin8bytes)
959*8d67ca89SAndroid Build Coastguard Worker	mov	-8(%rdi), %rax
960*8d67ca89SAndroid Build Coastguard Worker	mov	-8(%rsi), %rcx
961*8d67ca89SAndroid Build Coastguard Worker	cmp	%rax, %rcx
962*8d67ca89SAndroid Build Coastguard Worker	jne	L(diffin8bytes)
963*8d67ca89SAndroid Build Coastguard Worker	xor	%eax, %eax
964*8d67ca89SAndroid Build Coastguard Worker	ret
965*8d67ca89SAndroid Build Coastguard Worker
966*8d67ca89SAndroid Build Coastguard Worker	ALIGN (4)
967*8d67ca89SAndroid Build Coastguard WorkerL(6bytes):
968*8d67ca89SAndroid Build Coastguard Worker	mov	-6(%rdi), %eax
969*8d67ca89SAndroid Build Coastguard Worker	mov	-6(%rsi), %ecx
970*8d67ca89SAndroid Build Coastguard Worker	cmp	%eax, %ecx
971*8d67ca89SAndroid Build Coastguard Worker	jne	L(diffin4bytes)
972*8d67ca89SAndroid Build Coastguard WorkerL(2bytes):
973*8d67ca89SAndroid Build Coastguard Worker	movzwl	-2(%rsi), %ecx
974*8d67ca89SAndroid Build Coastguard Worker	movzwl	-2(%rdi), %eax
975*8d67ca89SAndroid Build Coastguard Worker	cmp	%cl, %al
976*8d67ca89SAndroid Build Coastguard Worker	jne	L(end)
977*8d67ca89SAndroid Build Coastguard Worker	and	$0xffff, %eax
978*8d67ca89SAndroid Build Coastguard Worker	and	$0xffff, %ecx
979*8d67ca89SAndroid Build Coastguard Worker	sub	%ecx, %eax
980*8d67ca89SAndroid Build Coastguard Worker	ret
981*8d67ca89SAndroid Build Coastguard Worker
982*8d67ca89SAndroid Build Coastguard Worker	ALIGN (4)
983*8d67ca89SAndroid Build Coastguard WorkerL(67bytes):
984*8d67ca89SAndroid Build Coastguard Worker	movdqu	-67(%rdi), %xmm2
985*8d67ca89SAndroid Build Coastguard Worker	movdqu	-67(%rsi), %xmm1
986*8d67ca89SAndroid Build Coastguard Worker	mov	$-67, %dl
987*8d67ca89SAndroid Build Coastguard Worker	pxor	%xmm1, %xmm2
988*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
989*8d67ca89SAndroid Build Coastguard Worker	jnc	L(less16bytes)
990*8d67ca89SAndroid Build Coastguard WorkerL(51bytes):
991*8d67ca89SAndroid Build Coastguard Worker	movdqu	-51(%rdi), %xmm2
992*8d67ca89SAndroid Build Coastguard Worker	movdqu	-51(%rsi), %xmm1
993*8d67ca89SAndroid Build Coastguard Worker	mov	$-51, %dl
994*8d67ca89SAndroid Build Coastguard Worker	pxor	%xmm1, %xmm2
995*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
996*8d67ca89SAndroid Build Coastguard Worker	jnc	L(less16bytes)
997*8d67ca89SAndroid Build Coastguard WorkerL(35bytes):
998*8d67ca89SAndroid Build Coastguard Worker	movdqu	-35(%rsi), %xmm1
999*8d67ca89SAndroid Build Coastguard Worker	movdqu	-35(%rdi), %xmm2
1000*8d67ca89SAndroid Build Coastguard Worker	mov	$-35, %dl
1001*8d67ca89SAndroid Build Coastguard Worker	pxor	%xmm1, %xmm2
1002*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
1003*8d67ca89SAndroid Build Coastguard Worker	jnc	L(less16bytes)
1004*8d67ca89SAndroid Build Coastguard WorkerL(19bytes):
1005*8d67ca89SAndroid Build Coastguard Worker	mov	-19(%rdi), %rax
1006*8d67ca89SAndroid Build Coastguard Worker	mov	-19(%rsi), %rcx
1007*8d67ca89SAndroid Build Coastguard Worker	cmp	%rax, %rcx
1008*8d67ca89SAndroid Build Coastguard Worker	jne	L(diffin8bytes)
1009*8d67ca89SAndroid Build Coastguard WorkerL(11bytes):
1010*8d67ca89SAndroid Build Coastguard Worker	mov	-11(%rdi), %rax
1011*8d67ca89SAndroid Build Coastguard Worker	mov	-11(%rsi), %rcx
1012*8d67ca89SAndroid Build Coastguard Worker	cmp	%rax, %rcx
1013*8d67ca89SAndroid Build Coastguard Worker	jne	L(diffin8bytes)
1014*8d67ca89SAndroid Build Coastguard Worker	mov	-4(%rdi), %eax
1015*8d67ca89SAndroid Build Coastguard Worker	mov	-4(%rsi), %ecx
1016*8d67ca89SAndroid Build Coastguard Worker	cmp	%eax, %ecx
1017*8d67ca89SAndroid Build Coastguard Worker	jne	L(diffin4bytes)
1018*8d67ca89SAndroid Build Coastguard Worker	xor	%eax, %eax
1019*8d67ca89SAndroid Build Coastguard Worker	ret
1020*8d67ca89SAndroid Build Coastguard Worker
1021*8d67ca89SAndroid Build Coastguard Worker	ALIGN (4)
1022*8d67ca89SAndroid Build Coastguard WorkerL(15bytes):
1023*8d67ca89SAndroid Build Coastguard Worker	mov	-15(%rdi), %rax
1024*8d67ca89SAndroid Build Coastguard Worker	mov	-15(%rsi), %rcx
1025*8d67ca89SAndroid Build Coastguard Worker	cmp	%rax, %rcx
1026*8d67ca89SAndroid Build Coastguard Worker	jne	L(diffin8bytes)
1027*8d67ca89SAndroid Build Coastguard Worker	mov	-8(%rdi), %rax
1028*8d67ca89SAndroid Build Coastguard Worker	mov	-8(%rsi), %rcx
1029*8d67ca89SAndroid Build Coastguard Worker	cmp	%rax, %rcx
1030*8d67ca89SAndroid Build Coastguard Worker	jne	L(diffin8bytes)
1031*8d67ca89SAndroid Build Coastguard Worker	xor	%eax, %eax
1032*8d67ca89SAndroid Build Coastguard Worker	ret
1033*8d67ca89SAndroid Build Coastguard Worker
1034*8d67ca89SAndroid Build Coastguard Worker	ALIGN (4)
1035*8d67ca89SAndroid Build Coastguard WorkerL(7bytes):
1036*8d67ca89SAndroid Build Coastguard Worker	mov	-7(%rdi), %eax
1037*8d67ca89SAndroid Build Coastguard Worker	mov	-7(%rsi), %ecx
1038*8d67ca89SAndroid Build Coastguard Worker	cmp	%eax, %ecx
1039*8d67ca89SAndroid Build Coastguard Worker	jne	L(diffin4bytes)
1040*8d67ca89SAndroid Build Coastguard Worker	mov	-4(%rdi), %eax
1041*8d67ca89SAndroid Build Coastguard Worker	mov	-4(%rsi), %ecx
1042*8d67ca89SAndroid Build Coastguard Worker	cmp	%eax, %ecx
1043*8d67ca89SAndroid Build Coastguard Worker	jne	L(diffin4bytes)
1044*8d67ca89SAndroid Build Coastguard Worker	xor	%eax, %eax
1045*8d67ca89SAndroid Build Coastguard Worker	ret
1046*8d67ca89SAndroid Build Coastguard Worker
1047*8d67ca89SAndroid Build Coastguard Worker	ALIGN (4)
1048*8d67ca89SAndroid Build Coastguard WorkerL(3bytes):
1049*8d67ca89SAndroid Build Coastguard Worker	movzwl	-3(%rdi), %eax
1050*8d67ca89SAndroid Build Coastguard Worker	movzwl	-3(%rsi), %ecx
1051*8d67ca89SAndroid Build Coastguard Worker	cmp	%eax, %ecx
1052*8d67ca89SAndroid Build Coastguard Worker	jne	L(diffin2bytes)
1053*8d67ca89SAndroid Build Coastguard WorkerL(1bytes):
1054*8d67ca89SAndroid Build Coastguard Worker	movzbl	-1(%rdi), %eax
1055*8d67ca89SAndroid Build Coastguard Worker	movzbl	-1(%rsi), %ecx
1056*8d67ca89SAndroid Build Coastguard Worker	sub	%ecx, %eax
1057*8d67ca89SAndroid Build Coastguard Worker	ret
1058*8d67ca89SAndroid Build Coastguard Worker#endif
1059*8d67ca89SAndroid Build Coastguard Worker
1060*8d67ca89SAndroid Build Coastguard Worker	ALIGN (4)
1061*8d67ca89SAndroid Build Coastguard WorkerL(68bytes):
1062*8d67ca89SAndroid Build Coastguard Worker	movdqu	-68(%rdi), %xmm2
1063*8d67ca89SAndroid Build Coastguard Worker	movdqu	-68(%rsi), %xmm1
1064*8d67ca89SAndroid Build Coastguard Worker	mov	$-68, %dl
1065*8d67ca89SAndroid Build Coastguard Worker	pxor	%xmm1, %xmm2
1066*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
1067*8d67ca89SAndroid Build Coastguard Worker	jnc	L(less16bytes)
1068*8d67ca89SAndroid Build Coastguard WorkerL(52bytes):
1069*8d67ca89SAndroid Build Coastguard Worker	movdqu	-52(%rdi), %xmm2
1070*8d67ca89SAndroid Build Coastguard Worker	movdqu	-52(%rsi), %xmm1
1071*8d67ca89SAndroid Build Coastguard Worker	mov	$-52, %dl
1072*8d67ca89SAndroid Build Coastguard Worker	pxor	%xmm1, %xmm2
1073*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
1074*8d67ca89SAndroid Build Coastguard Worker	jnc	L(less16bytes)
1075*8d67ca89SAndroid Build Coastguard WorkerL(36bytes):
1076*8d67ca89SAndroid Build Coastguard Worker	movdqu	-36(%rdi), %xmm2
1077*8d67ca89SAndroid Build Coastguard Worker	movdqu	-36(%rsi), %xmm1
1078*8d67ca89SAndroid Build Coastguard Worker	mov	$-36, %dl
1079*8d67ca89SAndroid Build Coastguard Worker	pxor	%xmm1, %xmm2
1080*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
1081*8d67ca89SAndroid Build Coastguard Worker	jnc	L(less16bytes)
1082*8d67ca89SAndroid Build Coastguard WorkerL(20bytes):
1083*8d67ca89SAndroid Build Coastguard Worker	movdqu	-20(%rdi), %xmm2
1084*8d67ca89SAndroid Build Coastguard Worker	movdqu	-20(%rsi), %xmm1
1085*8d67ca89SAndroid Build Coastguard Worker	mov	$-20, %dl
1086*8d67ca89SAndroid Build Coastguard Worker	pxor	%xmm1, %xmm2
1087*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
1088*8d67ca89SAndroid Build Coastguard Worker	jnc	L(less16bytes)
1089*8d67ca89SAndroid Build Coastguard Worker	mov	-4(%rdi), %eax
1090*8d67ca89SAndroid Build Coastguard Worker	mov	-4(%rsi), %ecx
1091*8d67ca89SAndroid Build Coastguard Worker	cmp	%eax, %ecx
1092*8d67ca89SAndroid Build Coastguard Worker	jne	L(diffin4bytes)
1093*8d67ca89SAndroid Build Coastguard Worker	xor	%eax, %eax
1094*8d67ca89SAndroid Build Coastguard Worker	ret
1095*8d67ca89SAndroid Build Coastguard Worker
1096*8d67ca89SAndroid Build Coastguard Worker#ifndef USE_AS_WMEMCMP
1097*8d67ca89SAndroid Build Coastguard Worker/* unreal cases for wmemcmp */
1098*8d67ca89SAndroid Build Coastguard Worker	ALIGN (4)
1099*8d67ca89SAndroid Build Coastguard WorkerL(69bytes):
1100*8d67ca89SAndroid Build Coastguard Worker	movdqu	-69(%rsi), %xmm1
1101*8d67ca89SAndroid Build Coastguard Worker	movdqu	-69(%rdi), %xmm2
1102*8d67ca89SAndroid Build Coastguard Worker	mov	$-69, %dl
1103*8d67ca89SAndroid Build Coastguard Worker	pxor	%xmm1, %xmm2
1104*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
1105*8d67ca89SAndroid Build Coastguard Worker	jnc	L(less16bytes)
1106*8d67ca89SAndroid Build Coastguard WorkerL(53bytes):
1107*8d67ca89SAndroid Build Coastguard Worker	movdqu	-53(%rsi), %xmm1
1108*8d67ca89SAndroid Build Coastguard Worker	movdqu	-53(%rdi), %xmm2
1109*8d67ca89SAndroid Build Coastguard Worker	mov	$-53, %dl
1110*8d67ca89SAndroid Build Coastguard Worker	pxor	%xmm1, %xmm2
1111*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
1112*8d67ca89SAndroid Build Coastguard Worker	jnc	L(less16bytes)
1113*8d67ca89SAndroid Build Coastguard WorkerL(37bytes):
1114*8d67ca89SAndroid Build Coastguard Worker	movdqu	-37(%rsi), %xmm1
1115*8d67ca89SAndroid Build Coastguard Worker	movdqu	-37(%rdi), %xmm2
1116*8d67ca89SAndroid Build Coastguard Worker	mov	$-37, %dl
1117*8d67ca89SAndroid Build Coastguard Worker	pxor	%xmm1, %xmm2
1118*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
1119*8d67ca89SAndroid Build Coastguard Worker	jnc	L(less16bytes)
1120*8d67ca89SAndroid Build Coastguard WorkerL(21bytes):
1121*8d67ca89SAndroid Build Coastguard Worker	movdqu	-21(%rsi), %xmm1
1122*8d67ca89SAndroid Build Coastguard Worker	movdqu	-21(%rdi), %xmm2
1123*8d67ca89SAndroid Build Coastguard Worker	mov	$-21, %dl
1124*8d67ca89SAndroid Build Coastguard Worker	pxor	%xmm1, %xmm2
1125*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
1126*8d67ca89SAndroid Build Coastguard Worker	jnc	L(less16bytes)
1127*8d67ca89SAndroid Build Coastguard Worker	mov	-8(%rdi), %rax
1128*8d67ca89SAndroid Build Coastguard Worker	mov	-8(%rsi), %rcx
1129*8d67ca89SAndroid Build Coastguard Worker	cmp	%rax, %rcx
1130*8d67ca89SAndroid Build Coastguard Worker	jne	L(diffin8bytes)
1131*8d67ca89SAndroid Build Coastguard Worker	xor	%eax, %eax
1132*8d67ca89SAndroid Build Coastguard Worker	ret
1133*8d67ca89SAndroid Build Coastguard Worker
1134*8d67ca89SAndroid Build Coastguard Worker	ALIGN (4)
1135*8d67ca89SAndroid Build Coastguard WorkerL(70bytes):
1136*8d67ca89SAndroid Build Coastguard Worker	movdqu	-70(%rsi), %xmm1
1137*8d67ca89SAndroid Build Coastguard Worker	movdqu	-70(%rdi), %xmm2
1138*8d67ca89SAndroid Build Coastguard Worker	mov	$-70, %dl
1139*8d67ca89SAndroid Build Coastguard Worker	pxor	%xmm1, %xmm2
1140*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
1141*8d67ca89SAndroid Build Coastguard Worker	jnc	L(less16bytes)
1142*8d67ca89SAndroid Build Coastguard WorkerL(54bytes):
1143*8d67ca89SAndroid Build Coastguard Worker	movdqu	-54(%rsi), %xmm1
1144*8d67ca89SAndroid Build Coastguard Worker	movdqu	-54(%rdi), %xmm2
1145*8d67ca89SAndroid Build Coastguard Worker	mov	$-54, %dl
1146*8d67ca89SAndroid Build Coastguard Worker	pxor	%xmm1, %xmm2
1147*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
1148*8d67ca89SAndroid Build Coastguard Worker	jnc	L(less16bytes)
1149*8d67ca89SAndroid Build Coastguard WorkerL(38bytes):
1150*8d67ca89SAndroid Build Coastguard Worker	movdqu	-38(%rsi), %xmm1
1151*8d67ca89SAndroid Build Coastguard Worker	movdqu	-38(%rdi), %xmm2
1152*8d67ca89SAndroid Build Coastguard Worker	mov	$-38, %dl
1153*8d67ca89SAndroid Build Coastguard Worker	pxor	%xmm1, %xmm2
1154*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
1155*8d67ca89SAndroid Build Coastguard Worker	jnc	L(less16bytes)
1156*8d67ca89SAndroid Build Coastguard WorkerL(22bytes):
1157*8d67ca89SAndroid Build Coastguard Worker	movdqu	-22(%rsi), %xmm1
1158*8d67ca89SAndroid Build Coastguard Worker	movdqu	-22(%rdi), %xmm2
1159*8d67ca89SAndroid Build Coastguard Worker	mov	$-22, %dl
1160*8d67ca89SAndroid Build Coastguard Worker	pxor	%xmm1, %xmm2
1161*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
1162*8d67ca89SAndroid Build Coastguard Worker	jnc	L(less16bytes)
1163*8d67ca89SAndroid Build Coastguard Worker	mov	-8(%rdi), %rax
1164*8d67ca89SAndroid Build Coastguard Worker	mov	-8(%rsi), %rcx
1165*8d67ca89SAndroid Build Coastguard Worker	cmp	%rax, %rcx
1166*8d67ca89SAndroid Build Coastguard Worker	jne	L(diffin8bytes)
1167*8d67ca89SAndroid Build Coastguard Worker	xor	%eax, %eax
1168*8d67ca89SAndroid Build Coastguard Worker	ret
1169*8d67ca89SAndroid Build Coastguard Worker
1170*8d67ca89SAndroid Build Coastguard Worker	ALIGN (4)
1171*8d67ca89SAndroid Build Coastguard WorkerL(71bytes):
1172*8d67ca89SAndroid Build Coastguard Worker	movdqu	-71(%rsi), %xmm1
1173*8d67ca89SAndroid Build Coastguard Worker	movdqu	-71(%rdi), %xmm2
1174*8d67ca89SAndroid Build Coastguard Worker	mov	$-71, %dl
1175*8d67ca89SAndroid Build Coastguard Worker	pxor	%xmm1, %xmm2
1176*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
1177*8d67ca89SAndroid Build Coastguard Worker	jnc	L(less16bytes)
1178*8d67ca89SAndroid Build Coastguard WorkerL(55bytes):
1179*8d67ca89SAndroid Build Coastguard Worker	movdqu	-55(%rdi), %xmm2
1180*8d67ca89SAndroid Build Coastguard Worker	movdqu	-55(%rsi), %xmm1
1181*8d67ca89SAndroid Build Coastguard Worker	mov	$-55, %dl
1182*8d67ca89SAndroid Build Coastguard Worker	pxor	%xmm1, %xmm2
1183*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
1184*8d67ca89SAndroid Build Coastguard Worker	jnc	L(less16bytes)
1185*8d67ca89SAndroid Build Coastguard WorkerL(39bytes):
1186*8d67ca89SAndroid Build Coastguard Worker	movdqu	-39(%rdi), %xmm2
1187*8d67ca89SAndroid Build Coastguard Worker	movdqu	-39(%rsi), %xmm1
1188*8d67ca89SAndroid Build Coastguard Worker	mov	$-39, %dl
1189*8d67ca89SAndroid Build Coastguard Worker	pxor	%xmm1, %xmm2
1190*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
1191*8d67ca89SAndroid Build Coastguard Worker	jnc	L(less16bytes)
1192*8d67ca89SAndroid Build Coastguard WorkerL(23bytes):
1193*8d67ca89SAndroid Build Coastguard Worker	movdqu	-23(%rdi), %xmm2
1194*8d67ca89SAndroid Build Coastguard Worker	movdqu	-23(%rsi), %xmm1
1195*8d67ca89SAndroid Build Coastguard Worker	mov	$-23, %dl
1196*8d67ca89SAndroid Build Coastguard Worker	pxor	%xmm1, %xmm2
1197*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
1198*8d67ca89SAndroid Build Coastguard Worker	jnc	L(less16bytes)
1199*8d67ca89SAndroid Build Coastguard Worker	mov	-8(%rdi), %rax
1200*8d67ca89SAndroid Build Coastguard Worker	mov	-8(%rsi), %rcx
1201*8d67ca89SAndroid Build Coastguard Worker	cmp	%rax, %rcx
1202*8d67ca89SAndroid Build Coastguard Worker	jne	L(diffin8bytes)
1203*8d67ca89SAndroid Build Coastguard Worker	xor	%eax, %eax
1204*8d67ca89SAndroid Build Coastguard Worker	ret
1205*8d67ca89SAndroid Build Coastguard Worker#endif
1206*8d67ca89SAndroid Build Coastguard Worker
1207*8d67ca89SAndroid Build Coastguard Worker	ALIGN (4)
1208*8d67ca89SAndroid Build Coastguard WorkerL(72bytes):
1209*8d67ca89SAndroid Build Coastguard Worker	movdqu	-72(%rsi), %xmm1
1210*8d67ca89SAndroid Build Coastguard Worker	movdqu	-72(%rdi), %xmm2
1211*8d67ca89SAndroid Build Coastguard Worker	mov	$-72, %dl
1212*8d67ca89SAndroid Build Coastguard Worker	pxor	%xmm1, %xmm2
1213*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
1214*8d67ca89SAndroid Build Coastguard Worker	jnc	L(less16bytes)
1215*8d67ca89SAndroid Build Coastguard WorkerL(56bytes):
1216*8d67ca89SAndroid Build Coastguard Worker	movdqu	-56(%rdi), %xmm2
1217*8d67ca89SAndroid Build Coastguard Worker	movdqu	-56(%rsi), %xmm1
1218*8d67ca89SAndroid Build Coastguard Worker	mov	$-56, %dl
1219*8d67ca89SAndroid Build Coastguard Worker	pxor	%xmm1, %xmm2
1220*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
1221*8d67ca89SAndroid Build Coastguard Worker	jnc	L(less16bytes)
1222*8d67ca89SAndroid Build Coastguard WorkerL(40bytes):
1223*8d67ca89SAndroid Build Coastguard Worker	movdqu	-40(%rdi), %xmm2
1224*8d67ca89SAndroid Build Coastguard Worker	movdqu	-40(%rsi), %xmm1
1225*8d67ca89SAndroid Build Coastguard Worker	mov	$-40, %dl
1226*8d67ca89SAndroid Build Coastguard Worker	pxor	%xmm1, %xmm2
1227*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
1228*8d67ca89SAndroid Build Coastguard Worker	jnc	L(less16bytes)
1229*8d67ca89SAndroid Build Coastguard WorkerL(24bytes):
1230*8d67ca89SAndroid Build Coastguard Worker	movdqu	-24(%rdi), %xmm2
1231*8d67ca89SAndroid Build Coastguard Worker	movdqu	-24(%rsi), %xmm1
1232*8d67ca89SAndroid Build Coastguard Worker	mov	$-24, %dl
1233*8d67ca89SAndroid Build Coastguard Worker	pxor	%xmm1, %xmm2
1234*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
1235*8d67ca89SAndroid Build Coastguard Worker	jnc	L(less16bytes)
1236*8d67ca89SAndroid Build Coastguard Worker	mov	-8(%rdi), %rax
1237*8d67ca89SAndroid Build Coastguard Worker	mov	-8(%rsi), %rcx
1238*8d67ca89SAndroid Build Coastguard Worker	cmp	%rax, %rcx
1239*8d67ca89SAndroid Build Coastguard Worker	jne	L(diffin8bytes)
1240*8d67ca89SAndroid Build Coastguard Worker	xor	%eax, %eax
1241*8d67ca89SAndroid Build Coastguard Worker	ret
1242*8d67ca89SAndroid Build Coastguard Worker
1243*8d67ca89SAndroid Build Coastguard Worker#ifndef USE_AS_WMEMCMP
1244*8d67ca89SAndroid Build Coastguard Worker/* unreal cases for wmemcmp */
1245*8d67ca89SAndroid Build Coastguard Worker	ALIGN (4)
1246*8d67ca89SAndroid Build Coastguard WorkerL(73bytes):
1247*8d67ca89SAndroid Build Coastguard Worker	movdqu	-73(%rsi), %xmm1
1248*8d67ca89SAndroid Build Coastguard Worker	movdqu	-73(%rdi), %xmm2
1249*8d67ca89SAndroid Build Coastguard Worker	mov	$-73, %dl
1250*8d67ca89SAndroid Build Coastguard Worker	pxor	%xmm1, %xmm2
1251*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
1252*8d67ca89SAndroid Build Coastguard Worker	jnc	L(less16bytes)
1253*8d67ca89SAndroid Build Coastguard WorkerL(57bytes):
1254*8d67ca89SAndroid Build Coastguard Worker	movdqu	-57(%rdi), %xmm2
1255*8d67ca89SAndroid Build Coastguard Worker	movdqu	-57(%rsi), %xmm1
1256*8d67ca89SAndroid Build Coastguard Worker	mov	$-57, %dl
1257*8d67ca89SAndroid Build Coastguard Worker	pxor	%xmm1, %xmm2
1258*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
1259*8d67ca89SAndroid Build Coastguard Worker	jnc	L(less16bytes)
1260*8d67ca89SAndroid Build Coastguard WorkerL(41bytes):
1261*8d67ca89SAndroid Build Coastguard Worker	movdqu	-41(%rdi), %xmm2
1262*8d67ca89SAndroid Build Coastguard Worker	movdqu	-41(%rsi), %xmm1
1263*8d67ca89SAndroid Build Coastguard Worker	mov	$-41, %dl
1264*8d67ca89SAndroid Build Coastguard Worker	pxor	%xmm1, %xmm2
1265*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
1266*8d67ca89SAndroid Build Coastguard Worker	jnc	L(less16bytes)
1267*8d67ca89SAndroid Build Coastguard WorkerL(25bytes):
1268*8d67ca89SAndroid Build Coastguard Worker	movdqu	-25(%rdi), %xmm2
1269*8d67ca89SAndroid Build Coastguard Worker	movdqu	-25(%rsi), %xmm1
1270*8d67ca89SAndroid Build Coastguard Worker	mov	$-25, %dl
1271*8d67ca89SAndroid Build Coastguard Worker	pxor	%xmm1, %xmm2
1272*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
1273*8d67ca89SAndroid Build Coastguard Worker	jnc	L(less16bytes)
1274*8d67ca89SAndroid Build Coastguard Worker	mov	-9(%rdi), %rax
1275*8d67ca89SAndroid Build Coastguard Worker	mov	-9(%rsi), %rcx
1276*8d67ca89SAndroid Build Coastguard Worker	cmp	%rax, %rcx
1277*8d67ca89SAndroid Build Coastguard Worker	jne	L(diffin8bytes)
1278*8d67ca89SAndroid Build Coastguard Worker	movzbl	-1(%rdi), %eax
1279*8d67ca89SAndroid Build Coastguard Worker	movzbl	-1(%rsi), %ecx
1280*8d67ca89SAndroid Build Coastguard Worker	sub	%ecx, %eax
1281*8d67ca89SAndroid Build Coastguard Worker	ret
1282*8d67ca89SAndroid Build Coastguard Worker
1283*8d67ca89SAndroid Build Coastguard Worker	ALIGN (4)
1284*8d67ca89SAndroid Build Coastguard WorkerL(74bytes):
1285*8d67ca89SAndroid Build Coastguard Worker	movdqu	-74(%rsi), %xmm1
1286*8d67ca89SAndroid Build Coastguard Worker	movdqu	-74(%rdi), %xmm2
1287*8d67ca89SAndroid Build Coastguard Worker	mov	$-74, %dl
1288*8d67ca89SAndroid Build Coastguard Worker	pxor	%xmm1, %xmm2
1289*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
1290*8d67ca89SAndroid Build Coastguard Worker	jnc	L(less16bytes)
1291*8d67ca89SAndroid Build Coastguard WorkerL(58bytes):
1292*8d67ca89SAndroid Build Coastguard Worker	movdqu	-58(%rdi), %xmm2
1293*8d67ca89SAndroid Build Coastguard Worker	movdqu	-58(%rsi), %xmm1
1294*8d67ca89SAndroid Build Coastguard Worker	mov	$-58, %dl
1295*8d67ca89SAndroid Build Coastguard Worker	pxor	%xmm1, %xmm2
1296*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
1297*8d67ca89SAndroid Build Coastguard Worker	jnc	L(less16bytes)
1298*8d67ca89SAndroid Build Coastguard WorkerL(42bytes):
1299*8d67ca89SAndroid Build Coastguard Worker	movdqu	-42(%rdi), %xmm2
1300*8d67ca89SAndroid Build Coastguard Worker	movdqu	-42(%rsi), %xmm1
1301*8d67ca89SAndroid Build Coastguard Worker	mov	$-42, %dl
1302*8d67ca89SAndroid Build Coastguard Worker	pxor	%xmm1, %xmm2
1303*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
1304*8d67ca89SAndroid Build Coastguard Worker	jnc	L(less16bytes)
1305*8d67ca89SAndroid Build Coastguard WorkerL(26bytes):
1306*8d67ca89SAndroid Build Coastguard Worker	movdqu	-26(%rdi), %xmm2
1307*8d67ca89SAndroid Build Coastguard Worker	movdqu	-26(%rsi), %xmm1
1308*8d67ca89SAndroid Build Coastguard Worker	mov	$-26, %dl
1309*8d67ca89SAndroid Build Coastguard Worker	pxor	%xmm1, %xmm2
1310*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
1311*8d67ca89SAndroid Build Coastguard Worker	jnc	L(less16bytes)
1312*8d67ca89SAndroid Build Coastguard Worker	mov	-10(%rdi), %rax
1313*8d67ca89SAndroid Build Coastguard Worker	mov	-10(%rsi), %rcx
1314*8d67ca89SAndroid Build Coastguard Worker	cmp	%rax, %rcx
1315*8d67ca89SAndroid Build Coastguard Worker	jne	L(diffin8bytes)
1316*8d67ca89SAndroid Build Coastguard Worker	movzwl	-2(%rdi), %eax
1317*8d67ca89SAndroid Build Coastguard Worker	movzwl	-2(%rsi), %ecx
1318*8d67ca89SAndroid Build Coastguard Worker	jmp	L(diffin2bytes)
1319*8d67ca89SAndroid Build Coastguard Worker
1320*8d67ca89SAndroid Build Coastguard Worker	ALIGN (4)
1321*8d67ca89SAndroid Build Coastguard WorkerL(75bytes):
1322*8d67ca89SAndroid Build Coastguard Worker	movdqu	-75(%rsi), %xmm1
1323*8d67ca89SAndroid Build Coastguard Worker	movdqu	-75(%rdi), %xmm2
1324*8d67ca89SAndroid Build Coastguard Worker	mov	$-75, %dl
1325*8d67ca89SAndroid Build Coastguard Worker	pxor	%xmm1, %xmm2
1326*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
1327*8d67ca89SAndroid Build Coastguard Worker	jnc	L(less16bytes)
1328*8d67ca89SAndroid Build Coastguard WorkerL(59bytes):
1329*8d67ca89SAndroid Build Coastguard Worker	movdqu	-59(%rdi), %xmm2
1330*8d67ca89SAndroid Build Coastguard Worker	movdqu	-59(%rsi), %xmm1
1331*8d67ca89SAndroid Build Coastguard Worker	mov	$-59, %dl
1332*8d67ca89SAndroid Build Coastguard Worker	pxor	%xmm1, %xmm2
1333*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
1334*8d67ca89SAndroid Build Coastguard Worker	jnc	L(less16bytes)
1335*8d67ca89SAndroid Build Coastguard WorkerL(43bytes):
1336*8d67ca89SAndroid Build Coastguard Worker	movdqu	-43(%rdi), %xmm2
1337*8d67ca89SAndroid Build Coastguard Worker	movdqu	-43(%rsi), %xmm1
1338*8d67ca89SAndroid Build Coastguard Worker	mov	$-43, %dl
1339*8d67ca89SAndroid Build Coastguard Worker	pxor	%xmm1, %xmm2
1340*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
1341*8d67ca89SAndroid Build Coastguard Worker	jnc	L(less16bytes)
1342*8d67ca89SAndroid Build Coastguard WorkerL(27bytes):
1343*8d67ca89SAndroid Build Coastguard Worker	movdqu	-27(%rdi), %xmm2
1344*8d67ca89SAndroid Build Coastguard Worker	movdqu	-27(%rsi), %xmm1
1345*8d67ca89SAndroid Build Coastguard Worker	mov	$-27, %dl
1346*8d67ca89SAndroid Build Coastguard Worker	pxor	%xmm1, %xmm2
1347*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
1348*8d67ca89SAndroid Build Coastguard Worker	jnc	L(less16bytes)
1349*8d67ca89SAndroid Build Coastguard Worker	mov	-11(%rdi), %rax
1350*8d67ca89SAndroid Build Coastguard Worker	mov	-11(%rsi), %rcx
1351*8d67ca89SAndroid Build Coastguard Worker	cmp	%rax, %rcx
1352*8d67ca89SAndroid Build Coastguard Worker	jne	L(diffin8bytes)
1353*8d67ca89SAndroid Build Coastguard Worker	mov	-4(%rdi), %eax
1354*8d67ca89SAndroid Build Coastguard Worker	mov	-4(%rsi), %ecx
1355*8d67ca89SAndroid Build Coastguard Worker	cmp	%eax, %ecx
1356*8d67ca89SAndroid Build Coastguard Worker	jne	L(diffin4bytes)
1357*8d67ca89SAndroid Build Coastguard Worker	xor	%eax, %eax
1358*8d67ca89SAndroid Build Coastguard Worker	ret
1359*8d67ca89SAndroid Build Coastguard Worker#endif
1360*8d67ca89SAndroid Build Coastguard Worker	ALIGN (4)
1361*8d67ca89SAndroid Build Coastguard WorkerL(76bytes):
1362*8d67ca89SAndroid Build Coastguard Worker	movdqu	-76(%rsi), %xmm1
1363*8d67ca89SAndroid Build Coastguard Worker	movdqu	-76(%rdi), %xmm2
1364*8d67ca89SAndroid Build Coastguard Worker	mov	$-76, %dl
1365*8d67ca89SAndroid Build Coastguard Worker	pxor	%xmm1, %xmm2
1366*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
1367*8d67ca89SAndroid Build Coastguard Worker	jnc	L(less16bytes)
1368*8d67ca89SAndroid Build Coastguard WorkerL(60bytes):
1369*8d67ca89SAndroid Build Coastguard Worker	movdqu	-60(%rdi), %xmm2
1370*8d67ca89SAndroid Build Coastguard Worker	movdqu	-60(%rsi), %xmm1
1371*8d67ca89SAndroid Build Coastguard Worker	mov	$-60, %dl
1372*8d67ca89SAndroid Build Coastguard Worker	pxor	%xmm1, %xmm2
1373*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
1374*8d67ca89SAndroid Build Coastguard Worker	jnc	L(less16bytes)
1375*8d67ca89SAndroid Build Coastguard WorkerL(44bytes):
1376*8d67ca89SAndroid Build Coastguard Worker	movdqu	-44(%rdi), %xmm2
1377*8d67ca89SAndroid Build Coastguard Worker	movdqu	-44(%rsi), %xmm1
1378*8d67ca89SAndroid Build Coastguard Worker	mov	$-44, %dl
1379*8d67ca89SAndroid Build Coastguard Worker	pxor	%xmm1, %xmm2
1380*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
1381*8d67ca89SAndroid Build Coastguard Worker	jnc	L(less16bytes)
1382*8d67ca89SAndroid Build Coastguard WorkerL(28bytes):
1383*8d67ca89SAndroid Build Coastguard Worker	movdqu	-28(%rdi), %xmm2
1384*8d67ca89SAndroid Build Coastguard Worker	movdqu	-28(%rsi), %xmm1
1385*8d67ca89SAndroid Build Coastguard Worker	mov	$-28, %dl
1386*8d67ca89SAndroid Build Coastguard Worker	pxor	%xmm1, %xmm2
1387*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
1388*8d67ca89SAndroid Build Coastguard Worker	jnc	L(less16bytes)
1389*8d67ca89SAndroid Build Coastguard Worker	mov	-12(%rdi), %rax
1390*8d67ca89SAndroid Build Coastguard Worker	mov	-12(%rsi), %rcx
1391*8d67ca89SAndroid Build Coastguard Worker	cmp	%rax, %rcx
1392*8d67ca89SAndroid Build Coastguard Worker	jne	L(diffin8bytes)
1393*8d67ca89SAndroid Build Coastguard Worker	mov	-4(%rdi), %eax
1394*8d67ca89SAndroid Build Coastguard Worker	mov	-4(%rsi), %ecx
1395*8d67ca89SAndroid Build Coastguard Worker	cmp	%eax, %ecx
1396*8d67ca89SAndroid Build Coastguard Worker	jne	L(diffin4bytes)
1397*8d67ca89SAndroid Build Coastguard Worker	xor	%eax, %eax
1398*8d67ca89SAndroid Build Coastguard Worker	ret
1399*8d67ca89SAndroid Build Coastguard Worker
1400*8d67ca89SAndroid Build Coastguard Worker#ifndef USE_AS_WMEMCMP
1401*8d67ca89SAndroid Build Coastguard Worker/* unreal cases for wmemcmp */
1402*8d67ca89SAndroid Build Coastguard Worker	ALIGN (4)
1403*8d67ca89SAndroid Build Coastguard WorkerL(77bytes):
1404*8d67ca89SAndroid Build Coastguard Worker	movdqu	-77(%rsi), %xmm1
1405*8d67ca89SAndroid Build Coastguard Worker	movdqu	-77(%rdi), %xmm2
1406*8d67ca89SAndroid Build Coastguard Worker	mov	$-77, %dl
1407*8d67ca89SAndroid Build Coastguard Worker	pxor	%xmm1, %xmm2
1408*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
1409*8d67ca89SAndroid Build Coastguard Worker	jnc	L(less16bytes)
1410*8d67ca89SAndroid Build Coastguard WorkerL(61bytes):
1411*8d67ca89SAndroid Build Coastguard Worker	movdqu	-61(%rdi), %xmm2
1412*8d67ca89SAndroid Build Coastguard Worker	movdqu	-61(%rsi), %xmm1
1413*8d67ca89SAndroid Build Coastguard Worker	mov	$-61, %dl
1414*8d67ca89SAndroid Build Coastguard Worker	pxor	%xmm1, %xmm2
1415*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
1416*8d67ca89SAndroid Build Coastguard Worker	jnc	L(less16bytes)
1417*8d67ca89SAndroid Build Coastguard WorkerL(45bytes):
1418*8d67ca89SAndroid Build Coastguard Worker	movdqu	-45(%rdi), %xmm2
1419*8d67ca89SAndroid Build Coastguard Worker	movdqu	-45(%rsi), %xmm1
1420*8d67ca89SAndroid Build Coastguard Worker	mov	$-45, %dl
1421*8d67ca89SAndroid Build Coastguard Worker	pxor	%xmm1, %xmm2
1422*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
1423*8d67ca89SAndroid Build Coastguard Worker	jnc	L(less16bytes)
1424*8d67ca89SAndroid Build Coastguard WorkerL(29bytes):
1425*8d67ca89SAndroid Build Coastguard Worker	movdqu	-29(%rdi), %xmm2
1426*8d67ca89SAndroid Build Coastguard Worker	movdqu	-29(%rsi), %xmm1
1427*8d67ca89SAndroid Build Coastguard Worker	mov	$-29, %dl
1428*8d67ca89SAndroid Build Coastguard Worker	pxor	%xmm1, %xmm2
1429*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
1430*8d67ca89SAndroid Build Coastguard Worker	jnc	L(less16bytes)
1431*8d67ca89SAndroid Build Coastguard Worker
1432*8d67ca89SAndroid Build Coastguard Worker	mov	-13(%rdi), %rax
1433*8d67ca89SAndroid Build Coastguard Worker	mov	-13(%rsi), %rcx
1434*8d67ca89SAndroid Build Coastguard Worker	cmp	%rax, %rcx
1435*8d67ca89SAndroid Build Coastguard Worker	jne	L(diffin8bytes)
1436*8d67ca89SAndroid Build Coastguard Worker
1437*8d67ca89SAndroid Build Coastguard Worker	mov	-8(%rdi), %rax
1438*8d67ca89SAndroid Build Coastguard Worker	mov	-8(%rsi), %rcx
1439*8d67ca89SAndroid Build Coastguard Worker	cmp	%rax, %rcx
1440*8d67ca89SAndroid Build Coastguard Worker	jne	L(diffin8bytes)
1441*8d67ca89SAndroid Build Coastguard Worker	xor	%eax, %eax
1442*8d67ca89SAndroid Build Coastguard Worker	ret
1443*8d67ca89SAndroid Build Coastguard Worker
1444*8d67ca89SAndroid Build Coastguard Worker	ALIGN (4)
1445*8d67ca89SAndroid Build Coastguard WorkerL(78bytes):
1446*8d67ca89SAndroid Build Coastguard Worker	movdqu	-78(%rsi), %xmm1
1447*8d67ca89SAndroid Build Coastguard Worker	movdqu	-78(%rdi), %xmm2
1448*8d67ca89SAndroid Build Coastguard Worker	mov	$-78, %dl
1449*8d67ca89SAndroid Build Coastguard Worker	pxor	%xmm1, %xmm2
1450*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
1451*8d67ca89SAndroid Build Coastguard Worker	jnc	L(less16bytes)
1452*8d67ca89SAndroid Build Coastguard WorkerL(62bytes):
1453*8d67ca89SAndroid Build Coastguard Worker	movdqu	-62(%rdi), %xmm2
1454*8d67ca89SAndroid Build Coastguard Worker	movdqu	-62(%rsi), %xmm1
1455*8d67ca89SAndroid Build Coastguard Worker	mov	$-62, %dl
1456*8d67ca89SAndroid Build Coastguard Worker	pxor	%xmm1, %xmm2
1457*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
1458*8d67ca89SAndroid Build Coastguard Worker	jnc	L(less16bytes)
1459*8d67ca89SAndroid Build Coastguard WorkerL(46bytes):
1460*8d67ca89SAndroid Build Coastguard Worker	movdqu	-46(%rdi), %xmm2
1461*8d67ca89SAndroid Build Coastguard Worker	movdqu	-46(%rsi), %xmm1
1462*8d67ca89SAndroid Build Coastguard Worker	mov	$-46, %dl
1463*8d67ca89SAndroid Build Coastguard Worker	pxor	%xmm1, %xmm2
1464*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
1465*8d67ca89SAndroid Build Coastguard Worker	jnc	L(less16bytes)
1466*8d67ca89SAndroid Build Coastguard WorkerL(30bytes):
1467*8d67ca89SAndroid Build Coastguard Worker	movdqu	-30(%rdi), %xmm2
1468*8d67ca89SAndroid Build Coastguard Worker	movdqu	-30(%rsi), %xmm1
1469*8d67ca89SAndroid Build Coastguard Worker	mov	$-30, %dl
1470*8d67ca89SAndroid Build Coastguard Worker	pxor	%xmm1, %xmm2
1471*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
1472*8d67ca89SAndroid Build Coastguard Worker	jnc	L(less16bytes)
1473*8d67ca89SAndroid Build Coastguard Worker	mov	-14(%rdi), %rax
1474*8d67ca89SAndroid Build Coastguard Worker	mov	-14(%rsi), %rcx
1475*8d67ca89SAndroid Build Coastguard Worker	cmp	%rax, %rcx
1476*8d67ca89SAndroid Build Coastguard Worker	jne	L(diffin8bytes)
1477*8d67ca89SAndroid Build Coastguard Worker	mov	-8(%rdi), %rax
1478*8d67ca89SAndroid Build Coastguard Worker	mov	-8(%rsi), %rcx
1479*8d67ca89SAndroid Build Coastguard Worker	cmp	%rax, %rcx
1480*8d67ca89SAndroid Build Coastguard Worker	jne	L(diffin8bytes)
1481*8d67ca89SAndroid Build Coastguard Worker	xor	%eax, %eax
1482*8d67ca89SAndroid Build Coastguard Worker	ret
1483*8d67ca89SAndroid Build Coastguard Worker
1484*8d67ca89SAndroid Build Coastguard Worker	ALIGN (4)
1485*8d67ca89SAndroid Build Coastguard WorkerL(79bytes):
1486*8d67ca89SAndroid Build Coastguard Worker	movdqu	-79(%rsi), %xmm1
1487*8d67ca89SAndroid Build Coastguard Worker	movdqu	-79(%rdi), %xmm2
1488*8d67ca89SAndroid Build Coastguard Worker	mov	$-79, %dl
1489*8d67ca89SAndroid Build Coastguard Worker	pxor	%xmm1, %xmm2
1490*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
1491*8d67ca89SAndroid Build Coastguard Worker	jnc	L(less16bytes)
1492*8d67ca89SAndroid Build Coastguard WorkerL(63bytes):
1493*8d67ca89SAndroid Build Coastguard Worker	movdqu	-63(%rdi), %xmm2
1494*8d67ca89SAndroid Build Coastguard Worker	movdqu	-63(%rsi), %xmm1
1495*8d67ca89SAndroid Build Coastguard Worker	mov	$-63, %dl
1496*8d67ca89SAndroid Build Coastguard Worker	pxor	%xmm1, %xmm2
1497*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
1498*8d67ca89SAndroid Build Coastguard Worker	jnc	L(less16bytes)
1499*8d67ca89SAndroid Build Coastguard WorkerL(47bytes):
1500*8d67ca89SAndroid Build Coastguard Worker	movdqu	-47(%rdi), %xmm2
1501*8d67ca89SAndroid Build Coastguard Worker	movdqu	-47(%rsi), %xmm1
1502*8d67ca89SAndroid Build Coastguard Worker	mov	$-47, %dl
1503*8d67ca89SAndroid Build Coastguard Worker	pxor	%xmm1, %xmm2
1504*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
1505*8d67ca89SAndroid Build Coastguard Worker	jnc	L(less16bytes)
1506*8d67ca89SAndroid Build Coastguard WorkerL(31bytes):
1507*8d67ca89SAndroid Build Coastguard Worker	movdqu	-31(%rdi), %xmm2
1508*8d67ca89SAndroid Build Coastguard Worker	movdqu	-31(%rsi), %xmm1
1509*8d67ca89SAndroid Build Coastguard Worker	mov	$-31, %dl
1510*8d67ca89SAndroid Build Coastguard Worker	pxor	%xmm1, %xmm2
1511*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
1512*8d67ca89SAndroid Build Coastguard Worker	jnc	L(less16bytes)
1513*8d67ca89SAndroid Build Coastguard Worker	mov	-15(%rdi), %rax
1514*8d67ca89SAndroid Build Coastguard Worker	mov	-15(%rsi), %rcx
1515*8d67ca89SAndroid Build Coastguard Worker	cmp	%rax, %rcx
1516*8d67ca89SAndroid Build Coastguard Worker	jne	L(diffin8bytes)
1517*8d67ca89SAndroid Build Coastguard Worker	mov	-8(%rdi), %rax
1518*8d67ca89SAndroid Build Coastguard Worker	mov	-8(%rsi), %rcx
1519*8d67ca89SAndroid Build Coastguard Worker	cmp	%rax, %rcx
1520*8d67ca89SAndroid Build Coastguard Worker	jne	L(diffin8bytes)
1521*8d67ca89SAndroid Build Coastguard Worker	xor	%eax, %eax
1522*8d67ca89SAndroid Build Coastguard Worker	ret
1523*8d67ca89SAndroid Build Coastguard Worker#endif
1524*8d67ca89SAndroid Build Coastguard Worker	ALIGN (4)
1525*8d67ca89SAndroid Build Coastguard WorkerL(64bytes):
1526*8d67ca89SAndroid Build Coastguard Worker	movdqu	-64(%rdi), %xmm2
1527*8d67ca89SAndroid Build Coastguard Worker	movdqu	-64(%rsi), %xmm1
1528*8d67ca89SAndroid Build Coastguard Worker	mov	$-64, %dl
1529*8d67ca89SAndroid Build Coastguard Worker	pxor	%xmm1, %xmm2
1530*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
1531*8d67ca89SAndroid Build Coastguard Worker	jnc	L(less16bytes)
1532*8d67ca89SAndroid Build Coastguard WorkerL(48bytes):
1533*8d67ca89SAndroid Build Coastguard Worker	movdqu	-48(%rdi), %xmm2
1534*8d67ca89SAndroid Build Coastguard Worker	movdqu	-48(%rsi), %xmm1
1535*8d67ca89SAndroid Build Coastguard Worker	mov	$-48, %dl
1536*8d67ca89SAndroid Build Coastguard Worker	pxor	%xmm1, %xmm2
1537*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
1538*8d67ca89SAndroid Build Coastguard Worker	jnc	L(less16bytes)
1539*8d67ca89SAndroid Build Coastguard WorkerL(32bytes):
1540*8d67ca89SAndroid Build Coastguard Worker	movdqu	-32(%rdi), %xmm2
1541*8d67ca89SAndroid Build Coastguard Worker	movdqu	-32(%rsi), %xmm1
1542*8d67ca89SAndroid Build Coastguard Worker	mov	$-32, %dl
1543*8d67ca89SAndroid Build Coastguard Worker	pxor	%xmm1, %xmm2
1544*8d67ca89SAndroid Build Coastguard Worker	ptest	%xmm2, %xmm0
1545*8d67ca89SAndroid Build Coastguard Worker	jnc	L(less16bytes)
1546*8d67ca89SAndroid Build Coastguard Worker
1547*8d67ca89SAndroid Build Coastguard Worker	mov	-16(%rdi), %rax
1548*8d67ca89SAndroid Build Coastguard Worker	mov	-16(%rsi), %rcx
1549*8d67ca89SAndroid Build Coastguard Worker	cmp	%rax, %rcx
1550*8d67ca89SAndroid Build Coastguard Worker	jne	L(diffin8bytes)
1551*8d67ca89SAndroid Build Coastguard Worker
1552*8d67ca89SAndroid Build Coastguard Worker	mov	-8(%rdi), %rax
1553*8d67ca89SAndroid Build Coastguard Worker	mov	-8(%rsi), %rcx
1554*8d67ca89SAndroid Build Coastguard Worker	cmp	%rax, %rcx
1555*8d67ca89SAndroid Build Coastguard Worker	jne	L(diffin8bytes)
1556*8d67ca89SAndroid Build Coastguard Worker	xor	%eax, %eax
1557*8d67ca89SAndroid Build Coastguard Worker	ret
1558*8d67ca89SAndroid Build Coastguard Worker
1559*8d67ca89SAndroid Build Coastguard Worker/*
1560*8d67ca89SAndroid Build Coastguard Worker * Aligned 8 bytes to avoid 2 branch "taken" in one 16 alinged code block.
1561*8d67ca89SAndroid Build Coastguard Worker */
1562*8d67ca89SAndroid Build Coastguard Worker	ALIGN (3)
1563*8d67ca89SAndroid Build Coastguard WorkerL(less16bytes):
1564*8d67ca89SAndroid Build Coastguard Worker	movsbq	%dl, %rdx
1565*8d67ca89SAndroid Build Coastguard Worker	mov	(%rsi, %rdx), %rcx
1566*8d67ca89SAndroid Build Coastguard Worker	mov	(%rdi, %rdx), %rax
1567*8d67ca89SAndroid Build Coastguard Worker	cmp	%rax, %rcx
1568*8d67ca89SAndroid Build Coastguard Worker	jne	L(diffin8bytes)
1569*8d67ca89SAndroid Build Coastguard Worker	mov	8(%rsi, %rdx), %rcx
1570*8d67ca89SAndroid Build Coastguard Worker	mov	8(%rdi, %rdx), %rax
1571*8d67ca89SAndroid Build Coastguard WorkerL(diffin8bytes):
1572*8d67ca89SAndroid Build Coastguard Worker	cmp	%eax, %ecx
1573*8d67ca89SAndroid Build Coastguard Worker	jne	L(diffin4bytes)
1574*8d67ca89SAndroid Build Coastguard Worker	shr	$32, %rcx
1575*8d67ca89SAndroid Build Coastguard Worker	shr	$32, %rax
1576*8d67ca89SAndroid Build Coastguard Worker
1577*8d67ca89SAndroid Build Coastguard Worker#ifdef USE_AS_WMEMCMP
1578*8d67ca89SAndroid Build Coastguard Worker/* for wmemcmp */
1579*8d67ca89SAndroid Build Coastguard Worker	cmp	%eax, %ecx
1580*8d67ca89SAndroid Build Coastguard Worker	jne	L(diffin4bytes)
1581*8d67ca89SAndroid Build Coastguard Worker	xor	%eax, %eax
1582*8d67ca89SAndroid Build Coastguard Worker	ret
1583*8d67ca89SAndroid Build Coastguard Worker#endif
1584*8d67ca89SAndroid Build Coastguard Worker
1585*8d67ca89SAndroid Build Coastguard WorkerL(diffin4bytes):
1586*8d67ca89SAndroid Build Coastguard Worker#ifndef USE_AS_WMEMCMP
1587*8d67ca89SAndroid Build Coastguard Worker	cmp	%cx, %ax
1588*8d67ca89SAndroid Build Coastguard Worker	jne	L(diffin2bytes)
1589*8d67ca89SAndroid Build Coastguard Worker	shr	$16, %ecx
1590*8d67ca89SAndroid Build Coastguard Worker	shr	$16, %eax
1591*8d67ca89SAndroid Build Coastguard WorkerL(diffin2bytes):
1592*8d67ca89SAndroid Build Coastguard Worker	cmp	%cl, %al
1593*8d67ca89SAndroid Build Coastguard Worker	jne	L(end)
1594*8d67ca89SAndroid Build Coastguard Worker	and	$0xffff, %eax
1595*8d67ca89SAndroid Build Coastguard Worker	and	$0xffff, %ecx
1596*8d67ca89SAndroid Build Coastguard Worker	sub	%ecx, %eax
1597*8d67ca89SAndroid Build Coastguard Worker	ret
1598*8d67ca89SAndroid Build Coastguard Worker#else
1599*8d67ca89SAndroid Build Coastguard Worker
1600*8d67ca89SAndroid Build Coastguard Worker/* for wmemcmp */
1601*8d67ca89SAndroid Build Coastguard Worker	mov	$1, %eax
1602*8d67ca89SAndroid Build Coastguard Worker	jl	L(nequal_bigger)
1603*8d67ca89SAndroid Build Coastguard Worker	neg	%eax
1604*8d67ca89SAndroid Build Coastguard Worker	ret
1605*8d67ca89SAndroid Build Coastguard Worker
1606*8d67ca89SAndroid Build Coastguard Worker	ALIGN (4)
1607*8d67ca89SAndroid Build Coastguard WorkerL(nequal_bigger):
1608*8d67ca89SAndroid Build Coastguard Worker	ret
1609*8d67ca89SAndroid Build Coastguard Worker
1610*8d67ca89SAndroid Build Coastguard WorkerL(unreal_case):
1611*8d67ca89SAndroid Build Coastguard Worker	xor	%eax, %eax
1612*8d67ca89SAndroid Build Coastguard Worker	ret
1613*8d67ca89SAndroid Build Coastguard Worker#endif
1614*8d67ca89SAndroid Build Coastguard Worker
1615*8d67ca89SAndroid Build Coastguard Worker	ALIGN (4)
1616*8d67ca89SAndroid Build Coastguard WorkerL(end):
1617*8d67ca89SAndroid Build Coastguard Worker	and	$0xff, %eax
1618*8d67ca89SAndroid Build Coastguard Worker	and	$0xff, %ecx
1619*8d67ca89SAndroid Build Coastguard Worker	sub	%ecx, %eax
1620*8d67ca89SAndroid Build Coastguard Worker	ret
1621*8d67ca89SAndroid Build Coastguard Worker
1622*8d67ca89SAndroid Build Coastguard WorkerEND (MEMCMP)
1623*8d67ca89SAndroid Build Coastguard Worker
1624*8d67ca89SAndroid Build Coastguard Worker	.section .rodata.sse4.1,"a",@progbits
1625*8d67ca89SAndroid Build Coastguard Worker	ALIGN (3)
1626*8d67ca89SAndroid Build Coastguard Worker#ifndef USE_AS_WMEMCMP
1627*8d67ca89SAndroid Build Coastguard WorkerL(table_64bytes):
1628*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(0bytes), L(table_64bytes))
1629*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(1bytes), L(table_64bytes))
1630*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(2bytes), L(table_64bytes))
1631*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(3bytes), L(table_64bytes))
1632*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(4bytes), L(table_64bytes))
1633*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(5bytes), L(table_64bytes))
1634*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(6bytes), L(table_64bytes))
1635*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(7bytes), L(table_64bytes))
1636*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(8bytes), L(table_64bytes))
1637*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(9bytes), L(table_64bytes))
1638*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(10bytes), L(table_64bytes))
1639*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(11bytes), L(table_64bytes))
1640*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(12bytes), L(table_64bytes))
1641*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(13bytes), L(table_64bytes))
1642*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(14bytes), L(table_64bytes))
1643*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(15bytes), L(table_64bytes))
1644*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(16bytes), L(table_64bytes))
1645*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(17bytes), L(table_64bytes))
1646*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(18bytes), L(table_64bytes))
1647*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(19bytes), L(table_64bytes))
1648*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(20bytes), L(table_64bytes))
1649*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(21bytes), L(table_64bytes))
1650*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(22bytes), L(table_64bytes))
1651*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(23bytes), L(table_64bytes))
1652*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(24bytes), L(table_64bytes))
1653*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(25bytes), L(table_64bytes))
1654*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(26bytes), L(table_64bytes))
1655*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(27bytes), L(table_64bytes))
1656*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(28bytes), L(table_64bytes))
1657*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(29bytes), L(table_64bytes))
1658*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(30bytes), L(table_64bytes))
1659*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(31bytes), L(table_64bytes))
1660*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(32bytes), L(table_64bytes))
1661*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(33bytes), L(table_64bytes))
1662*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(34bytes), L(table_64bytes))
1663*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(35bytes), L(table_64bytes))
1664*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(36bytes), L(table_64bytes))
1665*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(37bytes), L(table_64bytes))
1666*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(38bytes), L(table_64bytes))
1667*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(39bytes), L(table_64bytes))
1668*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(40bytes), L(table_64bytes))
1669*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(41bytes), L(table_64bytes))
1670*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(42bytes), L(table_64bytes))
1671*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(43bytes), L(table_64bytes))
1672*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(44bytes), L(table_64bytes))
1673*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(45bytes), L(table_64bytes))
1674*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(46bytes), L(table_64bytes))
1675*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(47bytes), L(table_64bytes))
1676*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(48bytes), L(table_64bytes))
1677*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(49bytes), L(table_64bytes))
1678*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(50bytes), L(table_64bytes))
1679*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(51bytes), L(table_64bytes))
1680*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(52bytes), L(table_64bytes))
1681*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(53bytes), L(table_64bytes))
1682*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(54bytes), L(table_64bytes))
1683*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(55bytes), L(table_64bytes))
1684*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(56bytes), L(table_64bytes))
1685*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(57bytes), L(table_64bytes))
1686*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(58bytes), L(table_64bytes))
1687*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(59bytes), L(table_64bytes))
1688*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(60bytes), L(table_64bytes))
1689*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(61bytes), L(table_64bytes))
1690*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(62bytes), L(table_64bytes))
1691*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(63bytes), L(table_64bytes))
1692*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(64bytes), L(table_64bytes))
1693*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(65bytes), L(table_64bytes))
1694*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(66bytes), L(table_64bytes))
1695*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(67bytes), L(table_64bytes))
1696*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(68bytes), L(table_64bytes))
1697*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(69bytes), L(table_64bytes))
1698*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(70bytes), L(table_64bytes))
1699*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(71bytes), L(table_64bytes))
1700*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(72bytes), L(table_64bytes))
1701*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(73bytes), L(table_64bytes))
1702*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(74bytes), L(table_64bytes))
1703*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(75bytes), L(table_64bytes))
1704*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(76bytes), L(table_64bytes))
1705*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(77bytes), L(table_64bytes))
1706*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(78bytes), L(table_64bytes))
1707*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(79bytes), L(table_64bytes))
1708*8d67ca89SAndroid Build Coastguard Worker#else
1709*8d67ca89SAndroid Build Coastguard WorkerL(table_64bytes):
1710*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(0bytes), L(table_64bytes))
1711*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(unreal_case), L(table_64bytes))
1712*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(unreal_case), L(table_64bytes))
1713*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(unreal_case), L(table_64bytes))
1714*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(4bytes), L(table_64bytes))
1715*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(unreal_case), L(table_64bytes))
1716*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(unreal_case), L(table_64bytes))
1717*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(unreal_case), L(table_64bytes))
1718*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(8bytes), L(table_64bytes))
1719*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(unreal_case), L(table_64bytes))
1720*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(unreal_case), L(table_64bytes))
1721*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(unreal_case), L(table_64bytes))
1722*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(12bytes), L(table_64bytes))
1723*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(unreal_case), L(table_64bytes))
1724*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(unreal_case), L(table_64bytes))
1725*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(unreal_case), L(table_64bytes))
1726*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(16bytes), L(table_64bytes))
1727*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(unreal_case), L(table_64bytes))
1728*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(unreal_case), L(table_64bytes))
1729*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(unreal_case), L(table_64bytes))
1730*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(20bytes), L(table_64bytes))
1731*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(unreal_case), L(table_64bytes))
1732*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(unreal_case), L(table_64bytes))
1733*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(unreal_case), L(table_64bytes))
1734*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(24bytes), L(table_64bytes))
1735*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(unreal_case), L(table_64bytes))
1736*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(unreal_case), L(table_64bytes))
1737*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(unreal_case), L(table_64bytes))
1738*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(28bytes), L(table_64bytes))
1739*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(unreal_case), L(table_64bytes))
1740*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(unreal_case), L(table_64bytes))
1741*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(unreal_case), L(table_64bytes))
1742*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(32bytes), L(table_64bytes))
1743*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(unreal_case), L(table_64bytes))
1744*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(unreal_case), L(table_64bytes))
1745*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(unreal_case), L(table_64bytes))
1746*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(36bytes), L(table_64bytes))
1747*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(unreal_case), L(table_64bytes))
1748*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(unreal_case), L(table_64bytes))
1749*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(unreal_case), L(table_64bytes))
1750*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(40bytes), L(table_64bytes))
1751*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(unreal_case), L(table_64bytes))
1752*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(unreal_case), L(table_64bytes))
1753*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(unreal_case), L(table_64bytes))
1754*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(44bytes), L(table_64bytes))
1755*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(unreal_case), L(table_64bytes))
1756*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(unreal_case), L(table_64bytes))
1757*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(unreal_case), L(table_64bytes))
1758*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(48bytes), L(table_64bytes))
1759*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(unreal_case), L(table_64bytes))
1760*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(unreal_case), L(table_64bytes))
1761*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(unreal_case), L(table_64bytes))
1762*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(52bytes), L(table_64bytes))
1763*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(unreal_case), L(table_64bytes))
1764*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(unreal_case), L(table_64bytes))
1765*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(unreal_case), L(table_64bytes))
1766*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(56bytes), L(table_64bytes))
1767*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(unreal_case), L(table_64bytes))
1768*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(unreal_case), L(table_64bytes))
1769*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(unreal_case), L(table_64bytes))
1770*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(60bytes), L(table_64bytes))
1771*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(unreal_case), L(table_64bytes))
1772*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(unreal_case), L(table_64bytes))
1773*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(unreal_case), L(table_64bytes))
1774*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(64bytes), L(table_64bytes))
1775*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(unreal_case), L(table_64bytes))
1776*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(unreal_case), L(table_64bytes))
1777*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(unreal_case), L(table_64bytes))
1778*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(68bytes), L(table_64bytes))
1779*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(unreal_case), L(table_64bytes))
1780*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(unreal_case), L(table_64bytes))
1781*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(unreal_case), L(table_64bytes))
1782*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(72bytes), L(table_64bytes))
1783*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(unreal_case), L(table_64bytes))
1784*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(unreal_case), L(table_64bytes))
1785*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(unreal_case), L(table_64bytes))
1786*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(76bytes), L(table_64bytes))
1787*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(unreal_case), L(table_64bytes))
1788*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(unreal_case), L(table_64bytes))
1789*8d67ca89SAndroid Build Coastguard Worker	.int	JMPTBL (L(unreal_case), L(table_64bytes))
1790*8d67ca89SAndroid Build Coastguard Worker#endif
1791