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 PARMS 8 820a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva#define ENTRANCE PUSH(%edi); 830a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva#define RETURN POP (%edi); ret; CFI_PUSH (%edi); 840a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva 850a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva#define STR1 PARMS 860a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva#define STR2 STR1+4 870a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva 880a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva .text 890a490665a3a287cd3aee1e7327f2381222c387c4Liubov DmitrievaENTRY (strrchr) 900a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva 910a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva ENTRANCE 920a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva mov STR1(%esp), %ecx 930a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva movd STR2(%esp), %xmm1 940a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva 950a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva pxor %xmm2, %xmm2 960a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva mov %ecx, %edi 970a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva punpcklbw %xmm1, %xmm1 980a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva punpcklbw %xmm1, %xmm1 990a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva /* ECX has OFFSET. */ 1000a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva and $63, %ecx 1010a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva pshufd $0, %xmm1, %xmm1 1020a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva cmp $48, %ecx 1030a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva ja L(crosscache) 1040a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva 1050a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva/* unaligned string. */ 1060a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva movdqu (%edi), %xmm0 1070a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva pcmpeqb %xmm0, %xmm2 1080a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva pcmpeqb %xmm1, %xmm0 1090a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva /* Find where NULL is. */ 1100a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva pmovmskb %xmm2, %ecx 1110a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva /* Check if there is a match. */ 1120a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva pmovmskb %xmm0, %eax 1130a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva add $16, %edi 1140a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva 1150a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva test %eax, %eax 1160a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva jnz L(unaligned_match1) 1170a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva 1180a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva test %ecx, %ecx 1190a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva jnz L(return_null) 1200a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva 1210a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva and $-16, %edi 1220a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva 1230a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva PUSH (%esi) 1240a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva PUSH (%ebx) 1250a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva 1260a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva xor %ebx, %ebx 1270a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva jmp L(loop) 1280a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva 1290a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva CFI_POP (%esi) 1300a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva CFI_POP (%ebx) 1310a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva 1320a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva .p2align 4 1330a490665a3a287cd3aee1e7327f2381222c387c4Liubov DmitrievaL(unaligned_match1): 1340a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva test %ecx, %ecx 1350a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva jnz L(prolog_find_zero_1) 1360a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva 1370a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva PUSH (%esi) 1380a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva PUSH (%ebx) 1390a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva 1400a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva mov %eax, %ebx 1410a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva mov %edi, %esi 1420a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva and $-16, %edi 1430a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva jmp L(loop) 1440a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva 1450a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva CFI_POP (%esi) 1460a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva CFI_POP (%ebx) 1470a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva 1480a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva .p2align 4 1490a490665a3a287cd3aee1e7327f2381222c387c4Liubov DmitrievaL(crosscache): 1500a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva/* Hancle unaligned string. */ 1510a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva and $15, %ecx 1520a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva and $-16, %edi 1530a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva pxor %xmm3, %xmm3 1540a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva movdqa (%edi), %xmm0 1550a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva pcmpeqb %xmm0, %xmm3 1560a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva pcmpeqb %xmm1, %xmm0 1570a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva /* Find where NULL is. */ 1580a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva pmovmskb %xmm3, %edx 1590a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva /* Check if there is a match. */ 1600a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva pmovmskb %xmm0, %eax 1610a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva /* Remove the leading bytes. */ 1620a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva shr %cl, %edx 1630a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva shr %cl, %eax 1640a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva add $16, %edi 1650a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva 1660a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva test %eax, %eax 1670a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva jnz L(unaligned_match) 1680a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva 1690a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva test %edx, %edx 1700a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva jnz L(return_null) 1710a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva 1720a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva PUSH (%esi) 1730a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva PUSH (%ebx) 1740a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva 1750a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva xor %ebx, %ebx 1760a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva jmp L(loop) 1770a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva 1780a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva CFI_POP (%esi) 1790a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva CFI_POP (%ebx) 1800a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva 1810a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva .p2align 4 1820a490665a3a287cd3aee1e7327f2381222c387c4Liubov DmitrievaL(unaligned_match): 1830a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva test %edx, %edx 1840a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva jnz L(prolog_find_zero) 1850a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva 1860a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva PUSH (%esi) 1870a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva PUSH (%ebx) 1880a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva 1890a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva mov %eax, %ebx 1900a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva lea (%edi, %ecx), %esi 1910a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva 1920a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva/* Loop start on aligned string. */ 1930a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva .p2align 4 1940a490665a3a287cd3aee1e7327f2381222c387c4Liubov DmitrievaL(loop): 1950a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva movdqa (%edi), %xmm0 1960a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva pcmpeqb %xmm0, %xmm2 1970a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva add $16, %edi 1980a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva pcmpeqb %xmm1, %xmm0 1990a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva pmovmskb %xmm2, %ecx 2000a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva pmovmskb %xmm0, %eax 2010a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva or %eax, %ecx 2020a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva jnz L(matches) 2030a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva 2040a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva movdqa (%edi), %xmm0 2050a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva pcmpeqb %xmm0, %xmm2 2060a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva add $16, %edi 2070a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva pcmpeqb %xmm1, %xmm0 2080a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva pmovmskb %xmm2, %ecx 2090a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva pmovmskb %xmm0, %eax 2100a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva or %eax, %ecx 2110a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva jnz L(matches) 2120a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva 2130a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva movdqa (%edi), %xmm0 2140a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva pcmpeqb %xmm0, %xmm2 2150a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva add $16, %edi 2160a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva pcmpeqb %xmm1, %xmm0 2170a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva pmovmskb %xmm2, %ecx 2180a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva pmovmskb %xmm0, %eax 2190a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva or %eax, %ecx 2200a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva jnz L(matches) 2210a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva 2220a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva movdqa (%edi), %xmm0 2230a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva pcmpeqb %xmm0, %xmm2 2240a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva add $16, %edi 2250a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva pcmpeqb %xmm1, %xmm0 2260a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva pmovmskb %xmm2, %ecx 2270a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva pmovmskb %xmm0, %eax 2280a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva or %eax, %ecx 2290a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva jz L(loop) 2300a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva 2310a490665a3a287cd3aee1e7327f2381222c387c4Liubov DmitrievaL(matches): 2320a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva test %eax, %eax 2330a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva jnz L(match) 2340a490665a3a287cd3aee1e7327f2381222c387c4Liubov DmitrievaL(return_value): 2350a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva test %ebx, %ebx 2360a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva jz L(return_null_1) 2370a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva mov %ebx, %eax 2380a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva mov %esi, %edi 2390a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva 2400a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva POP (%ebx) 2410a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva POP (%esi) 2420a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva 2430a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva jmp L(match_case1) 2440a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva 2450a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva CFI_PUSH (%ebx) 2460a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva CFI_PUSH (%esi) 2470a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva 2480a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva .p2align 4 2490a490665a3a287cd3aee1e7327f2381222c387c4Liubov DmitrievaL(return_null_1): 2500a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva POP (%ebx) 2510a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva POP (%esi) 2520a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva 2530a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva xor %eax, %eax 2540a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva RETURN 2550a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva 2560a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva CFI_PUSH (%ebx) 2570a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva CFI_PUSH (%esi) 2580a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva 2590a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva .p2align 4 2600a490665a3a287cd3aee1e7327f2381222c387c4Liubov DmitrievaL(match): 2610a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva pmovmskb %xmm2, %ecx 2620a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva test %ecx, %ecx 2630a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva jnz L(find_zero) 2640a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva mov %eax, %ebx 2650a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva mov %edi, %esi 2660a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva jmp L(loop) 2670a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva 2680a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva .p2align 4 2690a490665a3a287cd3aee1e7327f2381222c387c4Liubov DmitrievaL(find_zero): 2700a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva test %cl, %cl 2710a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva jz L(find_zero_high) 2720a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva mov %cl, %dl 2730a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva and $15, %dl 2740a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva jz L(find_zero_8) 2750a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva test $0x01, %cl 2760a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva jnz L(FindZeroExit1) 2770a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva test $0x02, %cl 2780a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva jnz L(FindZeroExit2) 2790a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva test $0x04, %cl 2800a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva jnz L(FindZeroExit3) 281592c7b4cd72e18f2f1941df3d63026d7f94ef7ceChih-Hung Hsieh and $(1 << 4) - 1, %eax 2820a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva jz L(return_value) 2830a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva 2840a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva POP (%ebx) 2850a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva POP (%esi) 2860a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva jmp L(match_case1) 2870a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva 2880a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva CFI_PUSH (%ebx) 2890a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva CFI_PUSH (%esi) 2900a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva 2910a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva .p2align 4 2920a490665a3a287cd3aee1e7327f2381222c387c4Liubov DmitrievaL(find_zero_8): 2930a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva test $0x10, %cl 2940a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva jnz L(FindZeroExit5) 2950a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva test $0x20, %cl 2960a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva jnz L(FindZeroExit6) 2970a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva test $0x40, %cl 2980a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva jnz L(FindZeroExit7) 299592c7b4cd72e18f2f1941df3d63026d7f94ef7ceChih-Hung Hsieh and $(1 << 8) - 1, %eax 3000a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva jz L(return_value) 3010a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva 3020a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva POP (%ebx) 3030a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva POP (%esi) 3040a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva jmp L(match_case1) 3050a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva 3060a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva CFI_PUSH (%ebx) 3070a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva CFI_PUSH (%esi) 3080a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva 3090a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva .p2align 4 3100a490665a3a287cd3aee1e7327f2381222c387c4Liubov DmitrievaL(find_zero_high): 3110a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva mov %ch, %dh 3120a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva and $15, %dh 3130a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva jz L(find_zero_high_8) 3140a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva test $0x01, %ch 3150a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva jnz L(FindZeroExit9) 3160a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva test $0x02, %ch 3170a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva jnz L(FindZeroExit10) 3180a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva test $0x04, %ch 3190a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva jnz L(FindZeroExit11) 320592c7b4cd72e18f2f1941df3d63026d7f94ef7ceChih-Hung Hsieh and $(1 << 12) - 1, %eax 3210a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva jz L(return_value) 3220a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva 3230a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva POP (%ebx) 3240a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva POP (%esi) 3250a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva jmp L(match_case1) 3260a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva 3270a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva CFI_PUSH (%ebx) 3280a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva CFI_PUSH (%esi) 3290a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva 3300a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva .p2align 4 3310a490665a3a287cd3aee1e7327f2381222c387c4Liubov DmitrievaL(find_zero_high_8): 3320a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva test $0x10, %ch 3330a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva jnz L(FindZeroExit13) 3340a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva test $0x20, %ch 3350a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva jnz L(FindZeroExit14) 3360a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva test $0x40, %ch 3370a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva jnz L(FindZeroExit15) 338592c7b4cd72e18f2f1941df3d63026d7f94ef7ceChih-Hung Hsieh and $(1 << 16) - 1, %eax 3390a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva jz L(return_value) 3400a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva 3410a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva POP (%ebx) 3420a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva POP (%esi) 3430a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva jmp L(match_case1) 3440a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva 3450a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva CFI_PUSH (%ebx) 3460a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva CFI_PUSH (%esi) 3470a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva 3480a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva .p2align 4 3490a490665a3a287cd3aee1e7327f2381222c387c4Liubov DmitrievaL(FindZeroExit1): 3500a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva and $1, %eax 3510a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva jz L(return_value) 3520a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva 3530a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva POP (%ebx) 3540a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva POP (%esi) 3550a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva jmp L(match_case1) 3560a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva 3570a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva CFI_PUSH (%ebx) 3580a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva CFI_PUSH (%esi) 3590a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva 3600a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva .p2align 4 3610a490665a3a287cd3aee1e7327f2381222c387c4Liubov DmitrievaL(FindZeroExit2): 362592c7b4cd72e18f2f1941df3d63026d7f94ef7ceChih-Hung Hsieh and $(1 << 2) - 1, %eax 3630a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva jz L(return_value) 3640a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva 3650a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva POP (%ebx) 3660a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva POP (%esi) 3670a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva jmp L(match_case1) 3680a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva 3690a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva CFI_PUSH (%ebx) 3700a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva CFI_PUSH (%esi) 3710a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva 3720a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva .p2align 4 3730a490665a3a287cd3aee1e7327f2381222c387c4Liubov DmitrievaL(FindZeroExit3): 374592c7b4cd72e18f2f1941df3d63026d7f94ef7ceChih-Hung Hsieh and $(1 << 3) - 1, %eax 3750a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva jz L(return_value) 3760a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva 3770a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva POP (%ebx) 3780a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva POP (%esi) 3790a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva jmp L(match_case1) 3800a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva 3810a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva CFI_PUSH (%ebx) 3820a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva CFI_PUSH (%esi) 3830a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva 3840a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva .p2align 4 3850a490665a3a287cd3aee1e7327f2381222c387c4Liubov DmitrievaL(FindZeroExit5): 386592c7b4cd72e18f2f1941df3d63026d7f94ef7ceChih-Hung Hsieh and $(1 << 5) - 1, %eax 3870a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva jz L(return_value) 3880a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva 3890a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva POP (%ebx) 3900a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva POP (%esi) 3910a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva jmp L(match_case1) 3920a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva 3930a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva CFI_PUSH (%ebx) 3940a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva CFI_PUSH (%esi) 3950a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva 3960a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva .p2align 4 3970a490665a3a287cd3aee1e7327f2381222c387c4Liubov DmitrievaL(FindZeroExit6): 398592c7b4cd72e18f2f1941df3d63026d7f94ef7ceChih-Hung Hsieh and $(1 << 6) - 1, %eax 3990a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva jz L(return_value) 4000a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva 4010a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva POP (%ebx) 4020a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva POP (%esi) 4030a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva jmp L(match_case1) 4040a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva 4050a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva CFI_PUSH (%ebx) 4060a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva CFI_PUSH (%esi) 4070a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva 4080a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva .p2align 4 4090a490665a3a287cd3aee1e7327f2381222c387c4Liubov DmitrievaL(FindZeroExit7): 410592c7b4cd72e18f2f1941df3d63026d7f94ef7ceChih-Hung Hsieh and $(1 << 7) - 1, %eax 4110a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva jz L(return_value) 4120a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva 4130a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva POP (%ebx) 4140a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva POP (%esi) 4150a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva jmp L(match_case1) 4160a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva 4170a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva CFI_PUSH (%ebx) 4180a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva CFI_PUSH (%esi) 4190a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva 4200a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva .p2align 4 4210a490665a3a287cd3aee1e7327f2381222c387c4Liubov DmitrievaL(FindZeroExit9): 422592c7b4cd72e18f2f1941df3d63026d7f94ef7ceChih-Hung Hsieh and $(1 << 9) - 1, %eax 4230a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva jz L(return_value) 4240a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva 4250a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva POP (%ebx) 4260a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva POP (%esi) 4270a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva jmp L(match_case1) 4280a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva 4290a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva CFI_PUSH (%ebx) 4300a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva CFI_PUSH (%esi) 4310a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva 4320a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva .p2align 4 4330a490665a3a287cd3aee1e7327f2381222c387c4Liubov DmitrievaL(FindZeroExit10): 434592c7b4cd72e18f2f1941df3d63026d7f94ef7ceChih-Hung Hsieh and $(1 << 10) - 1, %eax 4350a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva jz L(return_value) 4360a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva 4370a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva POP (%ebx) 4380a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva POP (%esi) 4390a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva jmp L(match_case1) 4400a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva 4410a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva CFI_PUSH (%ebx) 4420a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva CFI_PUSH (%esi) 4430a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva 4440a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva .p2align 4 4450a490665a3a287cd3aee1e7327f2381222c387c4Liubov DmitrievaL(FindZeroExit11): 446592c7b4cd72e18f2f1941df3d63026d7f94ef7ceChih-Hung Hsieh and $(1 << 11) - 1, %eax 4470a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva jz L(return_value) 4480a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva 4490a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva POP (%ebx) 4500a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva POP (%esi) 4510a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva jmp L(match_case1) 4520a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva 4530a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva CFI_PUSH (%ebx) 4540a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva CFI_PUSH (%esi) 4550a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva 4560a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva .p2align 4 4570a490665a3a287cd3aee1e7327f2381222c387c4Liubov DmitrievaL(FindZeroExit13): 458592c7b4cd72e18f2f1941df3d63026d7f94ef7ceChih-Hung Hsieh and $(1 << 13) - 1, %eax 4590a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva jz L(return_value) 4600a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva 4610a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva POP (%ebx) 4620a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva POP (%esi) 4630a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva jmp L(match_case1) 4640a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva 4650a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva CFI_PUSH (%ebx) 4660a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva CFI_PUSH (%esi) 4670a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva 4680a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva .p2align 4 4690a490665a3a287cd3aee1e7327f2381222c387c4Liubov DmitrievaL(FindZeroExit14): 470592c7b4cd72e18f2f1941df3d63026d7f94ef7ceChih-Hung Hsieh and $(1 << 14) - 1, %eax 4710a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva jz L(return_value) 4720a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva 4730a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva POP (%ebx) 4740a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva POP (%esi) 4750a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva jmp L(match_case1) 4760a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva 4770a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva CFI_PUSH (%ebx) 4780a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva CFI_PUSH (%esi) 4790a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva 4800a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva .p2align 4 4810a490665a3a287cd3aee1e7327f2381222c387c4Liubov DmitrievaL(FindZeroExit15): 482592c7b4cd72e18f2f1941df3d63026d7f94ef7ceChih-Hung Hsieh and $(1 << 15) - 1, %eax 4830a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva jz L(return_value) 4840a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva 4850a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva POP (%ebx) 4860a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva POP (%esi) 4870a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva 4880a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva .p2align 4 4890a490665a3a287cd3aee1e7327f2381222c387c4Liubov DmitrievaL(match_case1): 4900a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva test %ah, %ah 4910a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva jnz L(match_case1_high) 4920a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva mov %al, %dl 4930a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva and $15 << 4, %dl 4940a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva jnz L(match_case1_8) 4950a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva test $0x08, %al 4960a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva jnz L(Exit4) 4970a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva test $0x04, %al 4980a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva jnz L(Exit3) 4990a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva test $0x02, %al 5000a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva jnz L(Exit2) 5010a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva lea -16(%edi), %eax 5020a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva RETURN 5030a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva 5040a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva .p2align 4 5050a490665a3a287cd3aee1e7327f2381222c387c4Liubov DmitrievaL(match_case1_8): 5060a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva test $0x80, %al 5070a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva jnz L(Exit8) 5080a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva test $0x40, %al 5090a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva jnz L(Exit7) 5100a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva test $0x20, %al 5110a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva jnz L(Exit6) 5120a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva lea -12(%edi), %eax 5130a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva RETURN 5140a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva 5150a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva .p2align 4 5160a490665a3a287cd3aee1e7327f2381222c387c4Liubov DmitrievaL(match_case1_high): 5170a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva mov %ah, %dh 5180a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva and $15 << 4, %dh 5190a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva jnz L(match_case1_high_8) 5200a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva test $0x08, %ah 5210a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva jnz L(Exit12) 5220a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva test $0x04, %ah 5230a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva jnz L(Exit11) 5240a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva test $0x02, %ah 5250a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva jnz L(Exit10) 5260a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva lea -8(%edi), %eax 5270a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva RETURN 5280a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva 5290a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva .p2align 4 5300a490665a3a287cd3aee1e7327f2381222c387c4Liubov DmitrievaL(match_case1_high_8): 5310a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva test $0x80, %ah 5320a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva jnz L(Exit16) 5330a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva test $0x40, %ah 5340a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva jnz L(Exit15) 5350a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva test $0x20, %ah 5360a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva jnz L(Exit14) 5370a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva lea -4(%edi), %eax 5380a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva RETURN 5390a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva 5400a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva .p2align 4 5410a490665a3a287cd3aee1e7327f2381222c387c4Liubov DmitrievaL(Exit2): 5420a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva lea -15(%edi), %eax 5430a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva RETURN 5440a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva 5450a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva .p2align 4 5460a490665a3a287cd3aee1e7327f2381222c387c4Liubov DmitrievaL(Exit3): 5470a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva lea -14(%edi), %eax 5480a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva RETURN 5490a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva 5500a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva .p2align 4 5510a490665a3a287cd3aee1e7327f2381222c387c4Liubov DmitrievaL(Exit4): 5520a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva lea -13(%edi), %eax 5530a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva RETURN 5540a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva 5550a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva .p2align 4 5560a490665a3a287cd3aee1e7327f2381222c387c4Liubov DmitrievaL(Exit6): 5570a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva lea -11(%edi), %eax 5580a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva RETURN 5590a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva 5600a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva .p2align 4 5610a490665a3a287cd3aee1e7327f2381222c387c4Liubov DmitrievaL(Exit7): 5620a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva lea -10(%edi), %eax 5630a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva RETURN 5640a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva 5650a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva .p2align 4 5660a490665a3a287cd3aee1e7327f2381222c387c4Liubov DmitrievaL(Exit8): 5670a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva lea -9(%edi), %eax 5680a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva RETURN 5690a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva 5700a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva .p2align 4 5710a490665a3a287cd3aee1e7327f2381222c387c4Liubov DmitrievaL(Exit10): 5720a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva lea -7(%edi), %eax 5730a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva RETURN 5740a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva 5750a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva .p2align 4 5760a490665a3a287cd3aee1e7327f2381222c387c4Liubov DmitrievaL(Exit11): 5770a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva lea -6(%edi), %eax 5780a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva RETURN 5790a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva 5800a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva .p2align 4 5810a490665a3a287cd3aee1e7327f2381222c387c4Liubov DmitrievaL(Exit12): 5820a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva lea -5(%edi), %eax 5830a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva RETURN 5840a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva 5850a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva .p2align 4 5860a490665a3a287cd3aee1e7327f2381222c387c4Liubov DmitrievaL(Exit14): 5870a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva lea -3(%edi), %eax 5880a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva RETURN 5890a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva 5900a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva .p2align 4 5910a490665a3a287cd3aee1e7327f2381222c387c4Liubov DmitrievaL(Exit15): 5920a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva lea -2(%edi), %eax 5930a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva RETURN 5940a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva 5950a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva .p2align 4 5960a490665a3a287cd3aee1e7327f2381222c387c4Liubov DmitrievaL(Exit16): 5970a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva lea -1(%edi), %eax 5980a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva RETURN 5990a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva 6000a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva/* Return NULL. */ 6010a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva .p2align 4 6020a490665a3a287cd3aee1e7327f2381222c387c4Liubov DmitrievaL(return_null): 6030a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva xor %eax, %eax 6040a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva RETURN 6050a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva 6060a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva .p2align 4 6070a490665a3a287cd3aee1e7327f2381222c387c4Liubov DmitrievaL(prolog_find_zero): 6080a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva add %ecx, %edi 6090a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva mov %edx, %ecx 6100a490665a3a287cd3aee1e7327f2381222c387c4Liubov DmitrievaL(prolog_find_zero_1): 6110a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva test %cl, %cl 6120a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva jz L(prolog_find_zero_high) 6130a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva mov %cl, %dl 6140a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva and $15, %dl 6150a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva jz L(prolog_find_zero_8) 6160a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva test $0x01, %cl 6170a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva jnz L(PrologFindZeroExit1) 6180a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva test $0x02, %cl 6190a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva jnz L(PrologFindZeroExit2) 6200a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva test $0x04, %cl 6210a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva jnz L(PrologFindZeroExit3) 622592c7b4cd72e18f2f1941df3d63026d7f94ef7ceChih-Hung Hsieh and $(1 << 4) - 1, %eax 6230a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva jnz L(match_case1) 6240a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva xor %eax, %eax 6250a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva RETURN 6260a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva 6270a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva .p2align 4 6280a490665a3a287cd3aee1e7327f2381222c387c4Liubov DmitrievaL(prolog_find_zero_8): 6290a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva test $0x10, %cl 6300a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva jnz L(PrologFindZeroExit5) 6310a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva test $0x20, %cl 6320a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva jnz L(PrologFindZeroExit6) 6330a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva test $0x40, %cl 6340a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva jnz L(PrologFindZeroExit7) 635592c7b4cd72e18f2f1941df3d63026d7f94ef7ceChih-Hung Hsieh and $(1 << 8) - 1, %eax 6360a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva jnz L(match_case1) 6370a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva xor %eax, %eax 6380a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva RETURN 6390a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva 6400a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva .p2align 4 6410a490665a3a287cd3aee1e7327f2381222c387c4Liubov DmitrievaL(prolog_find_zero_high): 6420a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva mov %ch, %dh 6430a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva and $15, %dh 6440a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva jz L(prolog_find_zero_high_8) 6450a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva test $0x01, %ch 6460a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva jnz L(PrologFindZeroExit9) 6470a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva test $0x02, %ch 6480a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva jnz L(PrologFindZeroExit10) 6490a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva test $0x04, %ch 6500a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva jnz L(PrologFindZeroExit11) 651592c7b4cd72e18f2f1941df3d63026d7f94ef7ceChih-Hung Hsieh and $(1 << 12) - 1, %eax 6520a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva jnz L(match_case1) 6530a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva xor %eax, %eax 6540a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva RETURN 6550a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva 6560a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva .p2align 4 6570a490665a3a287cd3aee1e7327f2381222c387c4Liubov DmitrievaL(prolog_find_zero_high_8): 6580a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva test $0x10, %ch 6590a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva jnz L(PrologFindZeroExit13) 6600a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva test $0x20, %ch 6610a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva jnz L(PrologFindZeroExit14) 6620a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva test $0x40, %ch 6630a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva jnz L(PrologFindZeroExit15) 664592c7b4cd72e18f2f1941df3d63026d7f94ef7ceChih-Hung Hsieh and $(1 << 16) - 1, %eax 6650a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva jnz L(match_case1) 6660a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva xor %eax, %eax 6670a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva RETURN 6680a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva 6690a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva .p2align 4 6700a490665a3a287cd3aee1e7327f2381222c387c4Liubov DmitrievaL(PrologFindZeroExit1): 6710a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva and $1, %eax 6720a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva jnz L(match_case1) 6730a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva xor %eax, %eax 6740a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva RETURN 6750a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva 6760a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva .p2align 4 6770a490665a3a287cd3aee1e7327f2381222c387c4Liubov DmitrievaL(PrologFindZeroExit2): 678592c7b4cd72e18f2f1941df3d63026d7f94ef7ceChih-Hung Hsieh and $(1 << 2) - 1, %eax 6790a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva jnz L(match_case1) 6800a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva xor %eax, %eax 6810a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva RETURN 6820a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva 6830a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva .p2align 4 6840a490665a3a287cd3aee1e7327f2381222c387c4Liubov DmitrievaL(PrologFindZeroExit3): 685592c7b4cd72e18f2f1941df3d63026d7f94ef7ceChih-Hung Hsieh and $(1 << 3) - 1, %eax 6860a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva jnz L(match_case1) 6870a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva xor %eax, %eax 6880a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva RETURN 6890a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva 6900a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva .p2align 4 6910a490665a3a287cd3aee1e7327f2381222c387c4Liubov DmitrievaL(PrologFindZeroExit5): 692592c7b4cd72e18f2f1941df3d63026d7f94ef7ceChih-Hung Hsieh and $(1 << 5) - 1, %eax 6930a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva jnz L(match_case1) 6940a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva xor %eax, %eax 6950a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva RETURN 6960a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva 6970a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva .p2align 4 6980a490665a3a287cd3aee1e7327f2381222c387c4Liubov DmitrievaL(PrologFindZeroExit6): 699592c7b4cd72e18f2f1941df3d63026d7f94ef7ceChih-Hung Hsieh and $(1 << 6) - 1, %eax 7000a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva jnz L(match_case1) 7010a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva xor %eax, %eax 7020a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva RETURN 7030a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva 7040a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva .p2align 4 7050a490665a3a287cd3aee1e7327f2381222c387c4Liubov DmitrievaL(PrologFindZeroExit7): 706592c7b4cd72e18f2f1941df3d63026d7f94ef7ceChih-Hung Hsieh and $(1 << 7) - 1, %eax 7070a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva jnz L(match_case1) 7080a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva xor %eax, %eax 7090a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva RETURN 7100a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva 7110a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva .p2align 4 7120a490665a3a287cd3aee1e7327f2381222c387c4Liubov DmitrievaL(PrologFindZeroExit9): 713592c7b4cd72e18f2f1941df3d63026d7f94ef7ceChih-Hung Hsieh and $(1 << 9) - 1, %eax 7140a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva jnz L(match_case1) 7150a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva xor %eax, %eax 7160a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva RETURN 7170a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva 7180a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva .p2align 4 7190a490665a3a287cd3aee1e7327f2381222c387c4Liubov DmitrievaL(PrologFindZeroExit10): 720592c7b4cd72e18f2f1941df3d63026d7f94ef7ceChih-Hung Hsieh and $(1 << 10) - 1, %eax 7210a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva jnz L(match_case1) 7220a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva xor %eax, %eax 7230a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva RETURN 7240a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva 7250a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva .p2align 4 7260a490665a3a287cd3aee1e7327f2381222c387c4Liubov DmitrievaL(PrologFindZeroExit11): 727592c7b4cd72e18f2f1941df3d63026d7f94ef7ceChih-Hung Hsieh and $(1 << 11) - 1, %eax 7280a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva jnz L(match_case1) 7290a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva xor %eax, %eax 7300a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva RETURN 7310a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva 7320a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva .p2align 4 7330a490665a3a287cd3aee1e7327f2381222c387c4Liubov DmitrievaL(PrologFindZeroExit13): 734592c7b4cd72e18f2f1941df3d63026d7f94ef7ceChih-Hung Hsieh and $(1 << 13) - 1, %eax 7350a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva jnz L(match_case1) 7360a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva xor %eax, %eax 7370a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva RETURN 7380a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva 7390a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva .p2align 4 7400a490665a3a287cd3aee1e7327f2381222c387c4Liubov DmitrievaL(PrologFindZeroExit14): 741592c7b4cd72e18f2f1941df3d63026d7f94ef7ceChih-Hung Hsieh and $(1 << 14) - 1, %eax 7420a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva jnz L(match_case1) 7430a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva xor %eax, %eax 7440a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva RETURN 7450a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva 7460a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva .p2align 4 7470a490665a3a287cd3aee1e7327f2381222c387c4Liubov DmitrievaL(PrologFindZeroExit15): 748592c7b4cd72e18f2f1941df3d63026d7f94ef7ceChih-Hung Hsieh and $(1 << 15) - 1, %eax 7490a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva jnz L(match_case1) 7500a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva xor %eax, %eax 7510a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva RETURN 7520a490665a3a287cd3aee1e7327f2381222c387c4Liubov Dmitrieva 7530a490665a3a287cd3aee1e7327f2381222c387c4Liubov DmitrievaEND (strrchr) 754