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