10a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva/*
20a490665a3a287cd3aee1e7327f2381222c387c4Liubov DmitrievaCopyright (c) 2011 Intel Corporation
30a490665a3a287cd3aee1e7327f2381222c387c4Liubov DmitrievaAll rights reserved.
40a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
50a490665a3a287cd3aee1e7327f2381222c387c4Liubov DmitrievaRedistribution and use in source and binary forms, with or without
60a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrievamodification, are permitted provided that the following conditions are met:
70a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
80a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva    * Redistributions of source code must retain the above copyright notice,
90a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva    * this list of conditions and the following disclaimer.
100a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
110a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva    * Redistributions in binary form must reproduce the above copyright notice,
120a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva    * this list of conditions and the following disclaimer in the documentation
130a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva    * and/or other materials provided with the distribution.
140a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
150a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva    * Neither the name of Intel Corporation nor the names of its contributors
160a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva    * may be used to endorse or promote products derived from this software
170a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva    * without specific prior written permission.
180a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
190a490665a3a287cd3aee1e7327f2381222c387c4Liubov DmitrievaTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
200a490665a3a287cd3aee1e7327f2381222c387c4Liubov DmitrievaANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
210a490665a3a287cd3aee1e7327f2381222c387c4Liubov DmitrievaWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
220a490665a3a287cd3aee1e7327f2381222c387c4Liubov DmitrievaDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
230a490665a3a287cd3aee1e7327f2381222c387c4Liubov DmitrievaANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
240a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
250a490665a3a287cd3aee1e7327f2381222c387c4Liubov DmitrievaLOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
260a490665a3a287cd3aee1e7327f2381222c387c4Liubov DmitrievaANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
270a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
280a490665a3a287cd3aee1e7327f2381222c387c4Liubov DmitrievaSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
290a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva*/
300a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
310a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva#ifndef L
320a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva# define L(label)	.L##label
330a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva#endif
340a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
350a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva#ifndef cfi_startproc
360a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva# define cfi_startproc	.cfi_startproc
370a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva#endif
380a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
390a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva#ifndef cfi_endproc
400a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva# define cfi_endproc	.cfi_endproc
410a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva#endif
420a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
430a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva#ifndef cfi_rel_offset
440a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva# define cfi_rel_offset(reg, off)	.cfi_rel_offset reg, off
450a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva#endif
460a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
470a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva#ifndef cfi_restore
480a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva# define cfi_restore(reg)	.cfi_restore reg
490a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva#endif
500a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
510a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva#ifndef cfi_adjust_cfa_offset
520a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva# define cfi_adjust_cfa_offset(off)	.cfi_adjust_cfa_offset off
530a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva#endif
540a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
550a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva#ifndef ENTRY
560a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva# define ENTRY(name)	\
570a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	.type name, @function;	\
580a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	.globl name;	\
590a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	.p2align 4;	\
600a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrievaname:	\
610a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	cfi_startproc
620a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva#endif
630a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
640a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva#ifndef END
650a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva# define END(name)	\
660a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	cfi_endproc;	\
670a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	.size name, .-name
680a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva#endif
690a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
700a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva#define CFI_PUSH(REG)	\
710a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	cfi_adjust_cfa_offset (4);	\
720a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	cfi_rel_offset (REG, 0)
730a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
740a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva#define CFI_POP(REG)	\
750a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	cfi_adjust_cfa_offset (-4);	\
760a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	cfi_restore (REG)
770a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
780a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva#define PUSH(REG) pushl REG; CFI_PUSH (REG)
790a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva#define POP(REG) popl REG; CFI_POP (REG)
800a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
810a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva#define ENTRANCE PUSH(%esi); PUSH(%edi)
820a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva#define RETURN  POP(%edi); POP(%esi); ret; CFI_PUSH(%esi); CFI_PUSH(%edi);
830a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva#define PARMS  4
840a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva#define STR1  PARMS
850a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva#define STR2  STR1+4
860a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
870a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	.text
880a490665a3a287cd3aee1e7327f2381222c387c4Liubov DmitrievaENTRY (wcscmp)
890a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva/*
900a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	* This implementation uses SSE to compare up to 16 bytes at a time.
910a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva*/
920a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	mov	STR1(%esp), %edx
930a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	mov	STR2(%esp), %eax
940a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
950a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	mov	(%eax), %ecx
960a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	cmp	%ecx, (%edx)
970a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jne	L(neq)
980a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	test	%ecx, %ecx
990a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jz	L(eq)
1000a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
1010a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	mov	4(%eax), %ecx
1020a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	cmp	%ecx, 4(%edx)
1030a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jne	L(neq)
1040a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	test	%ecx, %ecx
1050a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jz	L(eq)
1060a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
1070a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	mov	8(%eax), %ecx
1080a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	cmp	%ecx, 8(%edx)
1090a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jne	L(neq)
1100a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	test	%ecx, %ecx
1110a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jz	L(eq)
1120a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
1130a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	mov	12(%eax), %ecx
1140a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	cmp	%ecx, 12(%edx)
1150a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jne	L(neq)
1160a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	test	%ecx, %ecx
1170a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jz	L(eq)
1180a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
1190a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	ENTRANCE
1200a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	add	$16, %eax
1210a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	add	$16, %edx
1220a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
1230a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	mov	%eax, %esi
1240a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	mov	%edx, %edi
1250a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	pxor	%xmm0, %xmm0		/* clear %xmm0 for null char checks */
1260a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	mov	%al, %ch
1270a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	mov	%dl, %cl
1280a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	and	$63, %eax		/* esi alignment in cache line */
1290a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	and	$63, %edx		/* edi alignment in cache line */
1300a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	and	$15, %cl
1310a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jz	L(continue_00)
1320a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	cmp	$16, %edx
1330a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jb	L(continue_0)
1340a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	cmp	$32, %edx
1350a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jb	L(continue_16)
1360a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	cmp	$48, %edx
1370a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jb	L(continue_32)
1380a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
1390a490665a3a287cd3aee1e7327f2381222c387c4Liubov DmitrievaL(continue_48):
1400a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	and	$15, %ch
1410a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jz	L(continue_48_00)
1420a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	cmp	$16, %eax
1430a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jb	L(continue_0_48)
1440a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	cmp	$32, %eax
1450a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jb	L(continue_16_48)
1460a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	cmp	$48, %eax
1470a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jb	L(continue_32_48)
1480a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
1490a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	.p2align 4
1500a490665a3a287cd3aee1e7327f2381222c387c4Liubov DmitrievaL(continue_48_48):
1510a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	mov	(%esi), %ecx
1520a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	cmp	%ecx, (%edi)
1530a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jne	L(nequal)
1540a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	test	%ecx, %ecx
1550a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jz	L(equal)
1560a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
1570a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	mov	4(%esi), %ecx
1580a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	cmp	%ecx, 4(%edi)
1590a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jne	L(nequal)
1600a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	test	%ecx, %ecx
1610a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jz	L(equal)
1620a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
1630a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	mov	8(%esi), %ecx
1640a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	cmp	%ecx, 8(%edi)
1650a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jne	L(nequal)
1660a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	test	%ecx, %ecx
1670a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jz	L(equal)
1680a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
1690a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	mov	12(%esi), %ecx
1700a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	cmp	%ecx, 12(%edi)
1710a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jne	L(nequal)
1720a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	test	%ecx, %ecx
1730a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jz	L(equal)
1740a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
1750a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	movdqu	16(%edi), %xmm1
1760a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	movdqu	16(%esi), %xmm2
1770a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	pcmpeqd	%xmm1, %xmm0		/* Any null double_word? */
1780a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	pcmpeqd	%xmm2, %xmm1		/* compare first 4 double_words for equality */
1790a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	psubb	%xmm0, %xmm1		/* packed sub of comparison results*/
1800a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	pmovmskb %xmm1, %edx
1810a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	sub	$0xffff, %edx		/* if first 4 double_words are same, edx == 0xffff */
1820a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jnz	L(less4_double_words_16)
1830a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
1840a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	movdqu	32(%edi), %xmm1
1850a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	movdqu	32(%esi), %xmm2
1860a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	pcmpeqd	%xmm1, %xmm0		/* Any null double_word? */
1870a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	pcmpeqd	%xmm2, %xmm1		/* compare first 4 double_words for equality */
1880a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	psubb	%xmm0, %xmm1		/* packed sub of comparison results*/
1890a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	pmovmskb %xmm1, %edx
1900a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	sub	$0xffff, %edx		/* if first 4 double_words are same, edx == 0xffff */
1910a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jnz	L(less4_double_words_32)
1920a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
1930a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	movdqu	48(%edi), %xmm1
1940a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	movdqu	48(%esi), %xmm2
1950a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	pcmpeqd	%xmm1, %xmm0		/* Any null double_word? */
1960a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	pcmpeqd	%xmm2, %xmm1		/* compare first 4 double_words for equality */
1970a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	psubb	%xmm0, %xmm1		/* packed sub of comparison results*/
1980a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	pmovmskb %xmm1, %edx
1990a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	sub	$0xffff, %edx		/* if first 4 double_words are same, edx == 0xffff */
2000a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jnz	L(less4_double_words_48)
2010a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
2020a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	add	$64, %esi
2030a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	add	$64, %edi
2040a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jmp	L(continue_48_48)
2050a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
2060a490665a3a287cd3aee1e7327f2381222c387c4Liubov DmitrievaL(continue_0):
2070a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	and	$15, %ch
2080a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jz	L(continue_0_00)
2090a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	cmp	$16, %eax
2100a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jb	L(continue_0_0)
2110a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	cmp	$32, %eax
2120a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jb	L(continue_0_16)
2130a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	cmp	$48, %eax
2140a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jb	L(continue_0_32)
2150a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
2160a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	.p2align 4
2170a490665a3a287cd3aee1e7327f2381222c387c4Liubov DmitrievaL(continue_0_48):
2180a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	mov	(%esi), %ecx
2190a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	cmp	%ecx, (%edi)
2200a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jne	L(nequal)
2210a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	test	%ecx, %ecx
2220a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jz	L(equal)
2230a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
2240a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	mov	4(%esi), %ecx
2250a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	cmp	%ecx, 4(%edi)
2260a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jne	L(nequal)
2270a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	test	%ecx, %ecx
2280a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jz	L(equal)
2290a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
2300a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	mov	8(%esi), %ecx
2310a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	cmp	%ecx, 8(%edi)
2320a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jne	L(nequal)
2330a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	test	%ecx, %ecx
2340a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jz	L(equal)
2350a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
2360a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	mov	12(%esi), %ecx
2370a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	cmp	%ecx, 12(%edi)
2380a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jne	L(nequal)
2390a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	test	%ecx, %ecx
2400a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jz	L(equal)
2410a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
2420a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	movdqu	16(%edi), %xmm1
2430a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	movdqu	16(%esi), %xmm2
2440a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	pcmpeqd	%xmm1, %xmm0		/* Any null double_word? */
2450a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	pcmpeqd	%xmm2, %xmm1		/* compare first 4 double_words for equality */
2460a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	psubb	%xmm0, %xmm1		/* packed sub of comparison results*/
2470a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	pmovmskb %xmm1, %edx
2480a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	sub	$0xffff, %edx		/* if first 4 double_words are same, edx == 0xffff */
2490a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jnz	L(less4_double_words_16)
2500a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
2510a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	movdqu	32(%edi), %xmm1
2520a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	movdqu	32(%esi), %xmm2
2530a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	pcmpeqd	%xmm1, %xmm0		/* Any null double_word? */
2540a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	pcmpeqd	%xmm2, %xmm1		/* compare first 4 double_words for equality */
2550a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	psubb	%xmm0, %xmm1		/* packed sub of comparison results*/
2560a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	pmovmskb %xmm1, %edx
2570a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	sub	$0xffff, %edx		/* if first 4 double_words are same, edx == 0xffff */
2580a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jnz	L(less4_double_words_32)
2590a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
2600a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	mov	48(%esi), %ecx
2610a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	cmp	%ecx, 48(%edi)
2620a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jne	L(nequal)
2630a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	test	%ecx, %ecx
2640a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jz	L(equal)
2650a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
2660a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	mov	52(%esi), %ecx
2670a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	cmp	%ecx, 52(%edi)
2680a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jne	L(nequal)
2690a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	test	%ecx, %ecx
2700a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jz	L(equal)
2710a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
2720a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	mov	56(%esi), %ecx
2730a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	cmp	%ecx, 56(%edi)
2740a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jne	L(nequal)
2750a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	test	%ecx, %ecx
2760a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jz	L(equal)
2770a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
2780a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	mov	60(%esi), %ecx
2790a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	cmp	%ecx, 60(%edi)
2800a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jne	L(nequal)
2810a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	test	%ecx, %ecx
2820a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jz	L(equal)
2830a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
2840a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	add	$64, %esi
2850a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	add	$64, %edi
2860a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jmp	L(continue_0_48)
2870a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
2880a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	.p2align 4
2890a490665a3a287cd3aee1e7327f2381222c387c4Liubov DmitrievaL(continue_00):
2900a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	and	$15, %ch
2910a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jz	L(continue_00_00)
2920a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	cmp	$16, %eax
2930a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jb	L(continue_00_0)
2940a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	cmp	$32, %eax
2950a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jb	L(continue_00_16)
2960a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	cmp	$48, %eax
2970a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jb	L(continue_00_32)
2980a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
2990a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	.p2align 4
3000a490665a3a287cd3aee1e7327f2381222c387c4Liubov DmitrievaL(continue_00_48):
3010a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	pcmpeqd	(%edi), %xmm0
3020a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	mov	(%edi), %eax
3030a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	pmovmskb %xmm0, %ecx
3040a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	test	%ecx, %ecx
3050a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jnz	L(less4_double_words1)
3060a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
3070a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	cmp	(%esi), %eax
3080a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jne	L(nequal)
3090a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
3100a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	mov	4(%edi), %eax
3110a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	cmp	4(%esi), %eax
3120a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jne	L(nequal)
3130a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
3140a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	mov	8(%edi), %eax
3150a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	cmp	8(%esi), %eax
3160a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jne	L(nequal)
3170a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
3180a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	mov	12(%edi), %eax
3190a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	cmp	12(%esi), %eax
3200a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jne	L(nequal)
3210a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
3220a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	movdqu	16(%esi), %xmm2
3230a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	pcmpeqd	%xmm2, %xmm0		/* Any null double_word? */
3240a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	pcmpeqd	16(%edi), %xmm2		/* compare first 4 double_words for equality */
3250a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	psubb	%xmm0, %xmm2		/* packed sub of comparison results*/
3260a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	pmovmskb %xmm2, %edx
3270a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	sub	$0xffff, %edx		/* if first 4 double_words are same, edx == 0xffff */
3280a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jnz	L(less4_double_words_16)
3290a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
3300a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	movdqu	32(%esi), %xmm2
3310a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	pcmpeqd	%xmm2, %xmm0		/* Any null double_word? */
3320a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	pcmpeqd	32(%edi), %xmm2		/* compare first 4 double_words for equality */
3330a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	psubb	%xmm0, %xmm2		/* packed sub of comparison results*/
3340a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	pmovmskb %xmm2, %edx
3350a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	sub	$0xffff, %edx		/* if first 4 double_words are same, edx == 0xffff */
3360a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jnz	L(less4_double_words_32)
3370a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
3380a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	movdqu	48(%esi), %xmm2
3390a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	pcmpeqd	%xmm2, %xmm0		/* Any null double_word? */
3400a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	pcmpeqd	48(%edi), %xmm2		/* compare first 4 double_words for equality */
3410a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	psubb	%xmm0, %xmm2		/* packed sub of comparison results*/
3420a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	pmovmskb %xmm2, %edx
3430a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	sub	$0xffff, %edx		/* if first 4 double_words are same, edx == 0xffff */
3440a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jnz	L(less4_double_words_48)
3450a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
3460a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	add	$64, %esi
3470a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	add	$64, %edi
3480a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jmp	L(continue_00_48)
3490a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
3500a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	.p2align 4
3510a490665a3a287cd3aee1e7327f2381222c387c4Liubov DmitrievaL(continue_32):
3520a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	and	$15, %ch
3530a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jz	L(continue_32_00)
3540a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	cmp	$16, %eax
3550a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jb	L(continue_0_32)
3560a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	cmp	$32, %eax
3570a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jb	L(continue_16_32)
3580a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	cmp	$48, %eax
3590a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jb	L(continue_32_32)
3600a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
3610a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	.p2align 4
3620a490665a3a287cd3aee1e7327f2381222c387c4Liubov DmitrievaL(continue_32_48):
3630a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	mov	(%esi), %ecx
3640a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	cmp	%ecx, (%edi)
3650a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jne	L(nequal)
3660a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	test	%ecx, %ecx
3670a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jz	L(equal)
3680a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
3690a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	mov	4(%esi), %ecx
3700a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	cmp	%ecx, 4(%edi)
3710a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jne	L(nequal)
3720a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	test	%ecx, %ecx
3730a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jz	L(equal)
3740a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
3750a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	mov	8(%esi), %ecx
3760a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	cmp	%ecx, 8(%edi)
3770a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jne	L(nequal)
3780a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	test	%ecx, %ecx
3790a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jz	L(equal)
3800a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
3810a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	mov	12(%esi), %ecx
3820a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	cmp	%ecx, 12(%edi)
3830a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jne	L(nequal)
3840a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	test	%ecx, %ecx
3850a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jz	L(equal)
3860a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
3870a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	mov	16(%esi), %ecx
3880a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	cmp	%ecx, 16(%edi)
3890a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jne	L(nequal)
3900a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	test	%ecx, %ecx
3910a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jz	L(equal)
3920a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
3930a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	mov	20(%esi), %ecx
3940a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	cmp	%ecx, 20(%edi)
3950a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jne	L(nequal)
3960a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	test	%ecx, %ecx
3970a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jz	L(equal)
3980a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
3990a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	mov	24(%esi), %ecx
4000a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	cmp	%ecx, 24(%edi)
4010a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jne	L(nequal)
4020a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	test	%ecx, %ecx
4030a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jz	L(equal)
4040a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
4050a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	mov	28(%esi), %ecx
4060a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	cmp	%ecx, 28(%edi)
4070a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jne	L(nequal)
4080a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	test	%ecx, %ecx
4090a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jz	L(equal)
4100a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
4110a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	movdqu	32(%edi), %xmm1
4120a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	movdqu	32(%esi), %xmm2
4130a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	pcmpeqd	%xmm1, %xmm0		/* Any null double_word? */
4140a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	pcmpeqd	%xmm2, %xmm1		/* compare first 4 double_words for equality */
4150a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	psubb	%xmm0, %xmm1		/* packed sub of comparison results*/
4160a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	pmovmskb %xmm1, %edx
4170a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	sub	$0xffff, %edx		/* if first 4 double_words are same, edx == 0xffff */
4180a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jnz	L(less4_double_words_32)
4190a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
4200a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	movdqu	48(%edi), %xmm1
4210a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	movdqu	48(%esi), %xmm2
4220a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	pcmpeqd	%xmm1, %xmm0		/* Any null double_word? */
4230a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	pcmpeqd	%xmm2, %xmm1		/* compare first 4 double_words for equality */
4240a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	psubb	%xmm0, %xmm1		/* packed sub of comparison results*/
4250a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	pmovmskb %xmm1, %edx
4260a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	sub	$0xffff, %edx		/* if first 4 double_words are same, edx == 0xffff */
4270a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jnz	L(less4_double_words_48)
4280a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
4290a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	add	$64, %esi
4300a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	add	$64, %edi
4310a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jmp	L(continue_32_48)
4320a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
4330a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	.p2align 4
4340a490665a3a287cd3aee1e7327f2381222c387c4Liubov DmitrievaL(continue_16):
4350a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	and	$15, %ch
4360a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jz	L(continue_16_00)
4370a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	cmp	$16, %eax
4380a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jb	L(continue_0_16)
4390a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	cmp	$32, %eax
4400a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jb	L(continue_16_16)
4410a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	cmp	$48, %eax
4420a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jb	L(continue_16_32)
4430a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
4440a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	.p2align 4
4450a490665a3a287cd3aee1e7327f2381222c387c4Liubov DmitrievaL(continue_16_48):
4460a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	mov	(%esi), %ecx
4470a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	cmp	%ecx, (%edi)
4480a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jne	L(nequal)
4490a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	test	%ecx, %ecx
4500a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jz	L(equal)
4510a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
4520a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	mov	4(%esi), %ecx
4530a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	cmp	%ecx, 4(%edi)
4540a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jne	L(nequal)
4550a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	test	%ecx, %ecx
4560a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jz	L(equal)
4570a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
4580a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	mov	8(%esi), %ecx
4590a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	cmp	%ecx, 8(%edi)
4600a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jne	L(nequal)
4610a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	test	%ecx, %ecx
4620a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jz	L(equal)
4630a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
4640a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	mov	12(%esi), %ecx
4650a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	cmp	%ecx, 12(%edi)
4660a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jne	L(nequal)
4670a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	test	%ecx, %ecx
4680a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jz	L(equal)
4690a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
4700a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	movdqu	16(%edi), %xmm1
4710a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	movdqu	16(%esi), %xmm2
4720a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	pcmpeqd	%xmm1, %xmm0		/* Any null double_word? */
4730a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	pcmpeqd	%xmm2, %xmm1		/* compare first 4 double_words for equality */
4740a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	psubb	%xmm0, %xmm1		/* packed sub of comparison results*/
4750a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	pmovmskb %xmm1, %edx
4760a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	sub	$0xffff, %edx		/* if first 4 double_words are same, edx == 0xffff */
4770a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jnz	L(less4_double_words_16)
4780a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
4790a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	mov	32(%esi), %ecx
4800a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	cmp	%ecx, 32(%edi)
4810a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jne	L(nequal)
4820a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	test	%ecx, %ecx
4830a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jz	L(equal)
4840a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
4850a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	mov	36(%esi), %ecx
4860a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	cmp	%ecx, 36(%edi)
4870a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jne	L(nequal)
4880a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	test	%ecx, %ecx
4890a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jz	L(equal)
4900a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
4910a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	mov	40(%esi), %ecx
4920a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	cmp	%ecx, 40(%edi)
4930a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jne	L(nequal)
4940a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	test	%ecx, %ecx
4950a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jz	L(equal)
4960a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
4970a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	mov	44(%esi), %ecx
4980a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	cmp	%ecx, 44(%edi)
4990a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jne	L(nequal)
5000a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	test	%ecx, %ecx
5010a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jz	L(equal)
5020a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
5030a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	movdqu	48(%edi), %xmm1
5040a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	movdqu	48(%esi), %xmm2
5050a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	pcmpeqd	%xmm1, %xmm0		/* Any null double_word? */
5060a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	pcmpeqd	%xmm2, %xmm1		/* compare first 4 double_words for equality */
5070a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	psubb	%xmm0, %xmm1		/* packed sub of comparison results*/
5080a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	pmovmskb %xmm1, %edx
5090a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	sub	$0xffff, %edx		/* if first 4 double_words are same, edx == 0xffff */
5100a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jnz	L(less4_double_words_48)
5110a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
5120a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	add	$64, %esi
5130a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	add	$64, %edi
5140a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jmp	L(continue_16_48)
5150a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
5160a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	.p2align 4
5170a490665a3a287cd3aee1e7327f2381222c387c4Liubov DmitrievaL(continue_00_00):
5180a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	movdqa	(%edi), %xmm1
5190a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	pcmpeqd	%xmm1, %xmm0		/* Any null double_word? */
5200a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	pcmpeqd	(%esi), %xmm1		/* compare first 4 double_words for equality */
5210a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	psubb	%xmm0, %xmm1		/* packed sub of comparison results*/
5220a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	pmovmskb %xmm1, %edx
5230a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	sub	$0xffff, %edx		/* if first 4 double_words are same, edx == 0xffff */
5240a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jnz	L(less4_double_words)
5250a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
5260a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	movdqa	16(%edi), %xmm3
5270a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	pcmpeqd	%xmm3, %xmm0		/* Any null double_word? */
5280a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	pcmpeqd	16(%esi), %xmm3		/* compare first 4 double_words for equality */
5290a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	psubb	%xmm0, %xmm3		/* packed sub of comparison results*/
5300a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	pmovmskb %xmm3, %edx
5310a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	sub	$0xffff, %edx		/* if first 4 double_words are same, edx == 0xffff */
5320a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jnz	L(less4_double_words_16)
5330a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
5340a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	movdqa	32(%edi), %xmm5
5350a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	pcmpeqd	%xmm5, %xmm0		/* Any null double_word? */
5360a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	pcmpeqd	32(%esi), %xmm5		/* compare first 4 double_words for equality */
5370a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	psubb	%xmm0, %xmm5		/* packed sub of comparison results*/
5380a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	pmovmskb %xmm5, %edx
5390a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	sub	$0xffff, %edx		/* if first 4 double_words are same, edx == 0xffff */
5400a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jnz	L(less4_double_words_32)
5410a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
5420a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	movdqa	48(%edi), %xmm1
5430a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	pcmpeqd	%xmm1, %xmm0		/* Any null double_word? */
5440a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	pcmpeqd	48(%esi), %xmm1		/* compare first 4 double_words for equality */
5450a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	psubb	%xmm0, %xmm1		/* packed sub of comparison results*/
5460a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	pmovmskb %xmm1, %edx
5470a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	sub	$0xffff, %edx		/* if first 4 double_words are same, edx == 0xffff */
5480a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jnz	L(less4_double_words_48)
5490a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
5500a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	add	$64, %esi
5510a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	add	$64, %edi
5520a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jmp	L(continue_00_00)
5530a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
5540a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	.p2align 4
5550a490665a3a287cd3aee1e7327f2381222c387c4Liubov DmitrievaL(continue_00_32):
5560a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	movdqu	(%esi), %xmm2
5570a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	pcmpeqd	%xmm2, %xmm0		/* Any null double_word? */
5580a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	pcmpeqd	(%edi), %xmm2		/* compare first 4 double_words for equality */
5590a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	psubb	%xmm0, %xmm2		/* packed sub of comparison results*/
5600a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	pmovmskb %xmm2, %edx
5610a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	sub	$0xffff, %edx		/* if first 4 double_words are same, edx == 0xffff */
5620a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jnz	L(less4_double_words)
5630a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
5640a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	add	$16, %esi
5650a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	add	$16, %edi
5660a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jmp	L(continue_00_48)
5670a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
5680a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	.p2align 4
5690a490665a3a287cd3aee1e7327f2381222c387c4Liubov DmitrievaL(continue_00_16):
5700a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	movdqu	(%esi), %xmm2
5710a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	pcmpeqd	%xmm2, %xmm0		/* Any null double_word? */
5720a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	pcmpeqd	(%edi), %xmm2		/* compare first 4 double_words for equality */
5730a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	psubb	%xmm0, %xmm2		/* packed sub of comparison results*/
5740a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	pmovmskb %xmm2, %edx
5750a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	sub	$0xffff, %edx		/* if first 4 double_words are same, edx == 0xffff */
5760a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jnz	L(less4_double_words)
5770a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
5780a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	movdqu	16(%esi), %xmm2
5790a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	pcmpeqd	%xmm2, %xmm0		/* Any null double_word? */
5800a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	pcmpeqd	16(%edi), %xmm2		/* compare first 4 double_words for equality */
5810a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	psubb	%xmm0, %xmm2		/* packed sub of comparison results*/
5820a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	pmovmskb %xmm2, %edx
5830a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	sub	$0xffff, %edx		/* if first 4 double_words are same, edx == 0xffff */
5840a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jnz	L(less4_double_words_16)
5850a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
5860a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	add	$32, %esi
5870a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	add	$32, %edi
5880a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jmp	L(continue_00_48)
5890a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
5900a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	.p2align 4
5910a490665a3a287cd3aee1e7327f2381222c387c4Liubov DmitrievaL(continue_00_0):
5920a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	movdqu	(%esi), %xmm2
5930a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	pcmpeqd	%xmm2, %xmm0		/* Any null double_word? */
5940a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	pcmpeqd	(%edi), %xmm2		/* compare first 4 double_words for equality */
5950a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	psubb	%xmm0, %xmm2		/* packed sub of comparison results*/
5960a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	pmovmskb %xmm2, %edx
5970a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	sub	$0xffff, %edx		/* if first 4 double_words are same, edx == 0xffff */
5980a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jnz	L(less4_double_words)
5990a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
6000a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	movdqu	16(%esi), %xmm2
6010a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	pcmpeqd	%xmm2, %xmm0		/* Any null double_word? */
6020a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	pcmpeqd	16(%edi), %xmm2		/* compare first 4 double_words for equality */
6030a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	psubb	%xmm0, %xmm2		/* packed sub of comparison results*/
6040a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	pmovmskb %xmm2, %edx
6050a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	sub	$0xffff, %edx		/* if first 4 double_words are same, edx == 0xffff */
6060a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jnz	L(less4_double_words_16)
6070a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
6080a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	movdqu	32(%esi), %xmm2
6090a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	pcmpeqd	%xmm2, %xmm0		/* Any null double_word? */
6100a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	pcmpeqd	32(%edi), %xmm2		/* compare first 4 double_words for equality */
6110a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	psubb	%xmm0, %xmm2		/* packed sub of comparison results*/
6120a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	pmovmskb %xmm2, %edx
6130a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	sub	$0xffff, %edx		/* if first 4 double_words are same, edx == 0xffff */
6140a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jnz	L(less4_double_words_32)
6150a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
6160a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	add	$48, %esi
6170a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	add	$48, %edi
6180a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jmp	L(continue_00_48)
6190a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
6200a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	.p2align 4
6210a490665a3a287cd3aee1e7327f2381222c387c4Liubov DmitrievaL(continue_48_00):
6220a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	pcmpeqd	(%esi), %xmm0
6230a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	mov	(%edi), %eax
6240a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	pmovmskb %xmm0, %ecx
6250a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	test	%ecx, %ecx
6260a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jnz	L(less4_double_words1)
6270a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
6280a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	cmp	(%esi), %eax
6290a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jne	L(nequal)
6300a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
6310a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	mov	4(%edi), %eax
6320a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	cmp	4(%esi), %eax
6330a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jne	L(nequal)
6340a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
6350a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	mov	8(%edi), %eax
6360a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	cmp	8(%esi), %eax
6370a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jne	L(nequal)
6380a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
6390a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	mov	12(%edi), %eax
6400a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	cmp	12(%esi), %eax
6410a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jne	L(nequal)
6420a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
6430a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	movdqu	16(%edi), %xmm1
6440a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	pcmpeqd	%xmm1, %xmm0		/* Any null double_word? */
6450a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	pcmpeqd	16(%esi), %xmm1		/* compare first 4 double_words for equality */
6460a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	psubb	%xmm0, %xmm1		/* packed sub of comparison results*/
6470a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	pmovmskb %xmm1, %edx
6480a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	sub	$0xffff, %edx		/* if first 4 double_words are same, edx == 0xffff */
6490a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jnz	L(less4_double_words_16)
6500a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
6510a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	movdqu	32(%edi), %xmm1
6520a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	pcmpeqd	%xmm1, %xmm0		/* Any null double_word? */
6530a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	pcmpeqd	32(%esi), %xmm1		/* compare first 4 double_words for equality */
6540a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	psubb	%xmm0, %xmm1		/* packed sub of comparison results*/
6550a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	pmovmskb %xmm1, %edx
6560a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	sub	$0xffff, %edx		/* if first 4 double_words are same, edx == 0xffff */
6570a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jnz	L(less4_double_words_32)
6580a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
6590a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	movdqu	48(%edi), %xmm1
6600a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	pcmpeqd	%xmm1, %xmm0		/* Any null double_word? */
6610a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	pcmpeqd	48(%esi), %xmm1		/* compare first 4 double_words for equality */
6620a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	psubb	%xmm0, %xmm1		/* packed sub of comparison results*/
6630a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	pmovmskb %xmm1, %edx
6640a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	sub	$0xffff, %edx		/* if first 4 double_words are same, edx == 0xffff */
6650a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jnz	L(less4_double_words_48)
6660a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
6670a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	add	$64, %esi
6680a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	add	$64, %edi
6690a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jmp	L(continue_48_00)
6700a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
6710a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	.p2align 4
6720a490665a3a287cd3aee1e7327f2381222c387c4Liubov DmitrievaL(continue_32_00):
6730a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	movdqu	(%edi), %xmm1
6740a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	pcmpeqd	%xmm1, %xmm0		/* Any null double_word? */
6750a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	pcmpeqd	(%esi), %xmm1		/* compare first 4 double_words for equality */
6760a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	psubb	%xmm0, %xmm1		/* packed sub of comparison results*/
6770a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	pmovmskb %xmm1, %edx
6780a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	sub	$0xffff, %edx		/* if first 4 double_words are same, edx == 0xffff */
6790a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jnz	L(less4_double_words)
6800a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
6810a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	add	$16, %esi
6820a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	add	$16, %edi
6830a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jmp	L(continue_48_00)
6840a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
6850a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	.p2align 4
6860a490665a3a287cd3aee1e7327f2381222c387c4Liubov DmitrievaL(continue_16_00):
6870a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	movdqu	(%edi), %xmm1
6880a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	pcmpeqd	%xmm1, %xmm0		/* Any null double_word? */
6890a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	pcmpeqd	(%esi), %xmm1		/* compare first 4 double_words for equality */
6900a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	psubb	%xmm0, %xmm1		/* packed sub of comparison results*/
6910a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	pmovmskb %xmm1, %edx
6920a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	sub	$0xffff, %edx		/* if first 4 double_words are same, edx == 0xffff */
6930a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jnz	L(less4_double_words)
6940a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
6950a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	movdqu	16(%edi), %xmm1
6960a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	pcmpeqd	%xmm1, %xmm0		/* Any null double_word? */
6970a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	pcmpeqd	16(%esi), %xmm1		/* compare first 4 double_words for equality */
6980a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	psubb	%xmm0, %xmm1		/* packed sub of comparison results*/
6990a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	pmovmskb %xmm1, %edx
7000a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	sub	$0xffff, %edx		/* if first 4 double_words are same, edx == 0xffff */
7010a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jnz	L(less4_double_words_16)
7020a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
7030a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	add	$32, %esi
7040a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	add	$32, %edi
7050a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jmp	L(continue_48_00)
7060a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
7070a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	.p2align 4
7080a490665a3a287cd3aee1e7327f2381222c387c4Liubov DmitrievaL(continue_0_00):
7090a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	movdqu	(%edi), %xmm1
7100a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	pcmpeqd	%xmm1, %xmm0		/* Any null double_word? */
7110a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	pcmpeqd	(%esi), %xmm1		/* compare first 4 double_words for equality */
7120a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	psubb	%xmm0, %xmm1		/* packed sub of comparison results*/
7130a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	pmovmskb %xmm1, %edx
7140a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	sub	$0xffff, %edx		/* if first 4 double_words are same, edx == 0xffff */
7150a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jnz	L(less4_double_words)
7160a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
7170a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	movdqu	16(%edi), %xmm1
7180a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	pcmpeqd	%xmm1, %xmm0		/* Any null double_word? */
7190a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	pcmpeqd	16(%esi), %xmm1		/* compare first 4 double_words for equality */
7200a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	psubb	%xmm0, %xmm1		/* packed sub of comparison results*/
7210a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	pmovmskb %xmm1, %edx
7220a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	sub	$0xffff, %edx		/* if first 4 double_words are same, edx == 0xffff */
7230a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jnz	L(less4_double_words_16)
7240a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
7250a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	movdqu	32(%edi), %xmm1
7260a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	pcmpeqd	%xmm1, %xmm0		/* Any null double_word? */
7270a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	pcmpeqd	32(%esi), %xmm1		/* compare first 4 double_words for equality */
7280a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	psubb	%xmm0, %xmm1		/* packed sub of comparison results*/
7290a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	pmovmskb %xmm1, %edx
7300a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	sub	$0xffff, %edx		/* if first 4 double_words are same, edx == 0xffff */
7310a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jnz	L(less4_double_words_32)
7320a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
7330a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	add	$48, %esi
7340a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	add	$48, %edi
7350a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jmp	L(continue_48_00)
7360a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
7370a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	.p2align 4
7380a490665a3a287cd3aee1e7327f2381222c387c4Liubov DmitrievaL(continue_32_32):
7390a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	movdqu	(%edi), %xmm1
7400a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	movdqu	(%esi), %xmm2
7410a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	pcmpeqd	%xmm1, %xmm0		/* Any null double_word? */
7420a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	pcmpeqd	%xmm2, %xmm1		/* compare first 4 double_words for equality */
7430a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	psubb	%xmm0, %xmm1		/* packed sub of comparison results*/
7440a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	pmovmskb %xmm1, %edx
7450a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	sub	$0xffff, %edx		/* if first 4 double_words are same, edx == 0xffff */
7460a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jnz	L(less4_double_words)
7470a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
7480a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	add	$16, %esi
7490a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	add	$16, %edi
7500a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jmp	L(continue_48_48)
7510a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
7520a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	.p2align 4
7530a490665a3a287cd3aee1e7327f2381222c387c4Liubov DmitrievaL(continue_16_16):
7540a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	movdqu	(%edi), %xmm1
7550a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	movdqu	(%esi), %xmm2
7560a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	pcmpeqd	%xmm1, %xmm0		/* Any null double_word? */
7570a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	pcmpeqd	%xmm2, %xmm1		/* compare first 4 double_words for equality */
7580a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	psubb	%xmm0, %xmm1		/* packed sub of comparison results*/
7590a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	pmovmskb %xmm1, %edx
7600a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	sub	$0xffff, %edx		/* if first 4 double_words are same, edx == 0xffff */
7610a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jnz	L(less4_double_words)
7620a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
7630a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	movdqu	16(%edi), %xmm3
7640a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	movdqu	16(%esi), %xmm4
7650a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	pcmpeqd	%xmm3, %xmm0		/* Any null double_word? */
7660a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	pcmpeqd	%xmm4, %xmm3		/* compare first 4 double_words for equality */
7670a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	psubb	%xmm0, %xmm3		/* packed sub of comparison results*/
7680a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	pmovmskb %xmm3, %edx
7690a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	sub	$0xffff, %edx		/* if first 4 double_words are same, edx == 0xffff */
7700a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jnz	L(less4_double_words_16)
7710a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
7720a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	add	$32, %esi
7730a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	add	$32, %edi
7740a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jmp	L(continue_48_48)
7750a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
7760a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	.p2align 4
7770a490665a3a287cd3aee1e7327f2381222c387c4Liubov DmitrievaL(continue_0_0):
7780a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	movdqu	(%edi), %xmm1
7790a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	movdqu	(%esi), %xmm2
7800a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	pcmpeqd	%xmm1, %xmm0		/* Any null double_word? */
7810a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	pcmpeqd	%xmm2, %xmm1		/* compare first 4 double_words for equality */
7820a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	psubb	%xmm0, %xmm1		/* packed sub of comparison results*/
7830a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	pmovmskb %xmm1, %edx
7840a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	sub	$0xffff, %edx		/* if first 4 double_words are same, edx == 0xffff */
7850a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jnz	L(less4_double_words)
7860a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
7870a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	movdqu	16(%edi), %xmm3
7880a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	movdqu	16(%esi), %xmm4
7890a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	pcmpeqd	%xmm3, %xmm0		/* Any null double_word? */
7900a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	pcmpeqd	%xmm4, %xmm3		/* compare first 4 double_words for equality */
7910a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	psubb	%xmm0, %xmm3		/* packed sub of comparison results*/
7920a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	pmovmskb %xmm3, %edx
7930a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	sub	$0xffff, %edx		/* if first 4 double_words are same, edx == 0xffff */
7940a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jnz	L(less4_double_words_16)
7950a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
7960a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	movdqu	32(%edi), %xmm1
7970a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	movdqu	32(%esi), %xmm2
7980a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	pcmpeqd	%xmm1, %xmm0		/* Any null double_word? */
7990a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	pcmpeqd	%xmm2, %xmm1		/* compare first 4 double_words for equality */
8000a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	psubb	%xmm0, %xmm1		/* packed sub of comparison results*/
8010a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	pmovmskb %xmm1, %edx
8020a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	sub	$0xffff, %edx		/* if first 4 double_words are same, edx == 0xffff */
8030a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jnz	L(less4_double_words_32)
8040a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
8050a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	add	$48, %esi
8060a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	add	$48, %edi
8070a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jmp	L(continue_48_48)
8080a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
8090a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	.p2align 4
8100a490665a3a287cd3aee1e7327f2381222c387c4Liubov DmitrievaL(continue_0_16):
8110a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	movdqu	(%edi), %xmm1
8120a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	movdqu	(%esi), %xmm2
8130a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	pcmpeqd	%xmm1, %xmm0		/* Any null double_word? */
8140a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	pcmpeqd	%xmm2, %xmm1		/* compare first 4 double_words for equality */
8150a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	psubb	%xmm0, %xmm1		/* packed sub of comparison results*/
8160a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	pmovmskb %xmm1, %edx
8170a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	sub	$0xffff, %edx		/* if first 4 double_words are same, edx == 0xffff */
8180a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jnz	L(less4_double_words)
8190a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
8200a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	movdqu	16(%edi), %xmm1
8210a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	movdqu	16(%esi), %xmm2
8220a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	pcmpeqd	%xmm1, %xmm0		/* Any null double_word? */
8230a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	pcmpeqd	%xmm2, %xmm1		/* compare first 4 double_words for equality */
8240a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	psubb	%xmm0, %xmm1		/* packed sub of comparison results*/
8250a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	pmovmskb %xmm1, %edx
8260a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	sub	$0xffff, %edx		/* if first 4 double_words are same, edx == 0xffff */
8270a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jnz	L(less4_double_words_16)
8280a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
8290a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	add	$32, %esi
8300a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	add	$32, %edi
8310a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jmp	L(continue_32_48)
8320a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
8330a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	.p2align 4
8340a490665a3a287cd3aee1e7327f2381222c387c4Liubov DmitrievaL(continue_0_32):
8350a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	movdqu	(%edi), %xmm1
8360a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	movdqu	(%esi), %xmm2
8370a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	pcmpeqd	%xmm1, %xmm0		/* Any null double_word? */
8380a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	pcmpeqd	%xmm2, %xmm1		/* compare first 4 double_words for equality */
8390a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	psubb	%xmm0, %xmm1		/* packed sub of comparison results*/
8400a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	pmovmskb %xmm1, %edx
8410a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	sub	$0xffff, %edx		/* if first 4 double_words are same, edx == 0xffff */
8420a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jnz	L(less4_double_words)
8430a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
8440a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	add	$16, %esi
8450a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	add	$16, %edi
8460a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jmp	L(continue_16_48)
8470a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
8480a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	.p2align 4
8490a490665a3a287cd3aee1e7327f2381222c387c4Liubov DmitrievaL(continue_16_32):
8500a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	movdqu	(%edi), %xmm1
8510a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	movdqu	(%esi), %xmm2
8520a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	pcmpeqd	%xmm1, %xmm0		/* Any null double_word? */
8530a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	pcmpeqd	%xmm2, %xmm1		/* compare first 4 double_words for equality */
8540a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	psubb	%xmm0, %xmm1		/* packed sub of comparison results*/
8550a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	pmovmskb %xmm1, %edx
8560a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	sub	$0xffff, %edx		/* if first 4 double_words are same, edx == 0xffff */
8570a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jnz	L(less4_double_words)
8580a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
8590a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	add	$16, %esi
8600a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	add	$16, %edi
8610a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jmp	L(continue_32_48)
8620a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
8630a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	.p2align 4
8640a490665a3a287cd3aee1e7327f2381222c387c4Liubov DmitrievaL(less4_double_words1):
8650a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	cmp	(%esi), %eax
8660a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jne	L(nequal)
8670a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	test	%eax, %eax
8680a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jz	L(equal)
8690a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
8700a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	mov	4(%esi), %ecx
8710a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	cmp	%ecx, 4(%edi)
8720a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jne	L(nequal)
8730a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	test	%ecx, %ecx
8740a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jz	L(equal)
8750a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
8760a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	mov	8(%esi), %ecx
8770a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	cmp	%ecx, 8(%edi)
8780a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jne	L(nequal)
8790a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	test	%ecx, %ecx
8800a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jz	L(equal)
8810a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
8820a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	mov	12(%esi), %ecx
8830a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	cmp	%ecx, 12(%edi)
8840a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jne	L(nequal)
8850a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	xor	%eax, %eax
8860a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	RETURN
8870a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
8880a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	.p2align 4
8890a490665a3a287cd3aee1e7327f2381222c387c4Liubov DmitrievaL(less4_double_words):
8900a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	xor	%eax, %eax
8910a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	test	%dl, %dl
8920a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jz	L(next_two_double_words)
8930a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	and	$15, %dl
8940a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jz	L(second_double_word)
8950a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	mov	(%esi), %ecx
8960a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	cmp	%ecx, (%edi)
8970a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jne	L(nequal)
8980a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	RETURN
8990a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
9000a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	.p2align 4
9010a490665a3a287cd3aee1e7327f2381222c387c4Liubov DmitrievaL(second_double_word):
9020a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	mov	4(%esi), %ecx
9030a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	cmp	%ecx, 4(%edi)
9040a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jne	L(nequal)
9050a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	RETURN
9060a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
9070a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	.p2align 4
9080a490665a3a287cd3aee1e7327f2381222c387c4Liubov DmitrievaL(next_two_double_words):
9090a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	and	$15, %dh
9100a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jz	L(fourth_double_word)
9110a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	mov	8(%esi), %ecx
9120a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	cmp	%ecx, 8(%edi)
9130a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jne	L(nequal)
9140a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	RETURN
9150a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
9160a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	.p2align 4
9170a490665a3a287cd3aee1e7327f2381222c387c4Liubov DmitrievaL(fourth_double_word):
9180a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	mov	12(%esi), %ecx
9190a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	cmp	%ecx, 12(%edi)
9200a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jne	L(nequal)
9210a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	RETURN
9220a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
9230a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	.p2align 4
9240a490665a3a287cd3aee1e7327f2381222c387c4Liubov DmitrievaL(less4_double_words_16):
9250a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	xor	%eax, %eax
9260a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	test	%dl, %dl
9270a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jz	L(next_two_double_words_16)
9280a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	and	$15, %dl
9290a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jz	L(second_double_word_16)
9300a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	mov	16(%esi), %ecx
9310a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	cmp	%ecx, 16(%edi)
9320a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jne	L(nequal)
9330a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	RETURN
9340a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
9350a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	.p2align 4
9360a490665a3a287cd3aee1e7327f2381222c387c4Liubov DmitrievaL(second_double_word_16):
9370a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	mov	20(%esi), %ecx
9380a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	cmp	%ecx, 20(%edi)
9390a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jne	L(nequal)
9400a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	RETURN
9410a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
9420a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	.p2align 4
9430a490665a3a287cd3aee1e7327f2381222c387c4Liubov DmitrievaL(next_two_double_words_16):
9440a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	and	$15, %dh
9450a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jz	L(fourth_double_word_16)
9460a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	mov	24(%esi), %ecx
9470a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	cmp	%ecx, 24(%edi)
9480a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jne	L(nequal)
9490a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	RETURN
9500a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
9510a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	.p2align 4
9520a490665a3a287cd3aee1e7327f2381222c387c4Liubov DmitrievaL(fourth_double_word_16):
9530a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	mov	28(%esi), %ecx
9540a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	cmp	%ecx, 28(%edi)
9550a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jne	L(nequal)
9560a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	RETURN
9570a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
9580a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	.p2align 4
9590a490665a3a287cd3aee1e7327f2381222c387c4Liubov DmitrievaL(less4_double_words_32):
9600a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	xor	%eax, %eax
9610a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	test	%dl, %dl
9620a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jz	L(next_two_double_words_32)
9630a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	and	$15, %dl
9640a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jz	L(second_double_word_32)
9650a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	mov	32(%esi), %ecx
9660a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	cmp	%ecx, 32(%edi)
9670a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jne	L(nequal)
9680a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	RETURN
9690a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
9700a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	.p2align 4
9710a490665a3a287cd3aee1e7327f2381222c387c4Liubov DmitrievaL(second_double_word_32):
9720a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	mov	36(%esi), %ecx
9730a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	cmp	%ecx, 36(%edi)
9740a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jne	L(nequal)
9750a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	RETURN
9760a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
9770a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	.p2align 4
9780a490665a3a287cd3aee1e7327f2381222c387c4Liubov DmitrievaL(next_two_double_words_32):
9790a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	and	$15, %dh
9800a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jz	L(fourth_double_word_32)
9810a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	mov	40(%esi), %ecx
9820a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	cmp	%ecx, 40(%edi)
9830a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jne	L(nequal)
9840a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	RETURN
9850a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
9860a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	.p2align 4
9870a490665a3a287cd3aee1e7327f2381222c387c4Liubov DmitrievaL(fourth_double_word_32):
9880a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	mov	44(%esi), %ecx
9890a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	cmp	%ecx, 44(%edi)
9900a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jne	L(nequal)
9910a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	RETURN
9920a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
9930a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	.p2align 4
9940a490665a3a287cd3aee1e7327f2381222c387c4Liubov DmitrievaL(less4_double_words_48):
9950a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	xor	%eax, %eax
9960a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	test	%dl, %dl
9970a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jz	L(next_two_double_words_48)
9980a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	and	$15, %dl
9990a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jz	L(second_double_word_48)
10000a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	mov	48(%esi), %ecx
10010a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	cmp	%ecx, 48(%edi)
10020a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jne	L(nequal)
10030a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	RETURN
10040a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
10050a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	.p2align 4
10060a490665a3a287cd3aee1e7327f2381222c387c4Liubov DmitrievaL(second_double_word_48):
10070a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	mov	52(%esi), %ecx
10080a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	cmp	%ecx, 52(%edi)
10090a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jne	L(nequal)
10100a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	RETURN
10110a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
10120a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	.p2align 4
10130a490665a3a287cd3aee1e7327f2381222c387c4Liubov DmitrievaL(next_two_double_words_48):
10140a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	and	$15, %dh
10150a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jz	L(fourth_double_word_48)
10160a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	mov	56(%esi), %ecx
10170a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	cmp	%ecx, 56(%edi)
10180a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jne	L(nequal)
10190a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	RETURN
10200a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
10210a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	.p2align 4
10220a490665a3a287cd3aee1e7327f2381222c387c4Liubov DmitrievaL(fourth_double_word_48):
10230a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	mov	60(%esi), %ecx
10240a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	cmp	%ecx, 60(%edi)
10250a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jne	L(nequal)
10260a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	RETURN
10270a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
10280a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	.p2align 4
10290a490665a3a287cd3aee1e7327f2381222c387c4Liubov DmitrievaL(nequal):
10300a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	mov	$1, %eax
10310a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jg	L(return)
10320a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	neg	%eax
10330a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	RETURN
10340a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
10350a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	.p2align 4
10360a490665a3a287cd3aee1e7327f2381222c387c4Liubov DmitrievaL(return):
10370a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	RETURN
10380a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
10390a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	.p2align 4
10400a490665a3a287cd3aee1e7327f2381222c387c4Liubov DmitrievaL(equal):
10410a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	xorl	%eax, %eax
10420a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	RETURN
10430a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
10440a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	CFI_POP (%edi)
10450a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	CFI_POP (%esi)
10460a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
10470a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	.p2align 4
10480a490665a3a287cd3aee1e7327f2381222c387c4Liubov DmitrievaL(neq):
10490a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	mov	$1, %eax
10500a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	jg	L(neq_bigger)
10510a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	neg	%eax
10520a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
10530a490665a3a287cd3aee1e7327f2381222c387c4Liubov DmitrievaL(neq_bigger):
10540a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	ret
10550a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
10560a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	.p2align 4
10570a490665a3a287cd3aee1e7327f2381222c387c4Liubov DmitrievaL(eq):
10580a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	xorl	%eax, %eax
10590a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva	ret
10600a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
10610a490665a3a287cd3aee1e7327f2381222c387c4Liubov DmitrievaEND (wcscmp)
10620a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva
1063