1*8d67ca89SAndroid Build Coastguard Worker/* 2*8d67ca89SAndroid Build Coastguard WorkerCopyright (c) 2014, Intel Corporation 3*8d67ca89SAndroid Build Coastguard WorkerAll rights reserved. 4*8d67ca89SAndroid Build Coastguard Worker 5*8d67ca89SAndroid Build Coastguard WorkerRedistribution and use in source and binary forms, with or without 6*8d67ca89SAndroid Build Coastguard Workermodification, are permitted provided that the following conditions are met: 7*8d67ca89SAndroid Build Coastguard Worker 8*8d67ca89SAndroid Build Coastguard Worker * Redistributions of source code must retain the above copyright notice, 9*8d67ca89SAndroid Build Coastguard Worker * this list of conditions and the following disclaimer. 10*8d67ca89SAndroid Build Coastguard Worker 11*8d67ca89SAndroid Build Coastguard Worker * Redistributions in binary form must reproduce the above copyright notice, 12*8d67ca89SAndroid Build Coastguard Worker * this list of conditions and the following disclaimer in the documentation 13*8d67ca89SAndroid Build Coastguard Worker * and/or other materials provided with the distribution. 14*8d67ca89SAndroid Build Coastguard Worker 15*8d67ca89SAndroid Build Coastguard Worker * Neither the name of Intel Corporation nor the names of its contributors 16*8d67ca89SAndroid Build Coastguard Worker * may be used to endorse or promote products derived from this software 17*8d67ca89SAndroid Build Coastguard Worker * without specific prior written permission. 18*8d67ca89SAndroid Build Coastguard Worker 19*8d67ca89SAndroid Build Coastguard WorkerTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 20*8d67ca89SAndroid Build Coastguard WorkerANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 21*8d67ca89SAndroid Build Coastguard WorkerWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 22*8d67ca89SAndroid Build Coastguard WorkerDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR 23*8d67ca89SAndroid Build Coastguard WorkerANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 24*8d67ca89SAndroid Build Coastguard Worker(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 25*8d67ca89SAndroid Build Coastguard WorkerLOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON 26*8d67ca89SAndroid Build Coastguard WorkerANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 27*8d67ca89SAndroid Build Coastguard Worker(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 28*8d67ca89SAndroid Build Coastguard WorkerSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 29*8d67ca89SAndroid Build Coastguard Worker*/ 30*8d67ca89SAndroid Build Coastguard Worker 31*8d67ca89SAndroid Build Coastguard Worker#ifndef L 32*8d67ca89SAndroid Build Coastguard Worker# define L(label) .L##label 33*8d67ca89SAndroid Build Coastguard Worker#endif 34*8d67ca89SAndroid Build Coastguard Worker 35*8d67ca89SAndroid Build Coastguard Worker#ifndef cfi_startproc 36*8d67ca89SAndroid Build Coastguard Worker# define cfi_startproc .cfi_startproc 37*8d67ca89SAndroid Build Coastguard Worker#endif 38*8d67ca89SAndroid Build Coastguard Worker 39*8d67ca89SAndroid Build Coastguard Worker#ifndef cfi_endproc 40*8d67ca89SAndroid Build Coastguard Worker# define cfi_endproc .cfi_endproc 41*8d67ca89SAndroid Build Coastguard Worker#endif 42*8d67ca89SAndroid Build Coastguard Worker 43*8d67ca89SAndroid Build Coastguard Worker#ifndef cfi_rel_offset 44*8d67ca89SAndroid Build Coastguard Worker# define cfi_rel_offset(reg, off) .cfi_rel_offset reg, off 45*8d67ca89SAndroid Build Coastguard Worker#endif 46*8d67ca89SAndroid Build Coastguard Worker 47*8d67ca89SAndroid Build Coastguard Worker#ifndef cfi_restore 48*8d67ca89SAndroid Build Coastguard Worker# define cfi_restore(reg) .cfi_restore reg 49*8d67ca89SAndroid Build Coastguard Worker#endif 50*8d67ca89SAndroid Build Coastguard Worker 51*8d67ca89SAndroid Build Coastguard Worker#ifndef cfi_adjust_cfa_offset 52*8d67ca89SAndroid Build Coastguard Worker# define cfi_adjust_cfa_offset(off) .cfi_adjust_cfa_offset off 53*8d67ca89SAndroid Build Coastguard Worker#endif 54*8d67ca89SAndroid Build Coastguard Worker 55*8d67ca89SAndroid Build Coastguard Worker#ifndef cfi_remember_state 56*8d67ca89SAndroid Build Coastguard Worker# define cfi_remember_state .cfi_remember_state 57*8d67ca89SAndroid Build Coastguard Worker#endif 58*8d67ca89SAndroid Build Coastguard Worker 59*8d67ca89SAndroid Build Coastguard Worker#ifndef cfi_restore_state 60*8d67ca89SAndroid Build Coastguard Worker# define cfi_restore_state .cfi_restore_state 61*8d67ca89SAndroid Build Coastguard Worker#endif 62*8d67ca89SAndroid Build Coastguard Worker 63*8d67ca89SAndroid Build Coastguard Worker#ifndef ENTRY 64*8d67ca89SAndroid Build Coastguard Worker# define ENTRY(name) \ 65*8d67ca89SAndroid Build Coastguard Worker .type name, @function; \ 66*8d67ca89SAndroid Build Coastguard Worker .globl name; \ 67*8d67ca89SAndroid Build Coastguard Worker .p2align 4; \ 68*8d67ca89SAndroid Build Coastguard Workername: \ 69*8d67ca89SAndroid Build Coastguard Worker cfi_startproc 70*8d67ca89SAndroid Build Coastguard Worker#endif 71*8d67ca89SAndroid Build Coastguard Worker 72*8d67ca89SAndroid Build Coastguard Worker#ifndef END 73*8d67ca89SAndroid Build Coastguard Worker# define END(name) \ 74*8d67ca89SAndroid Build Coastguard Worker cfi_endproc; \ 75*8d67ca89SAndroid Build Coastguard Worker .size name, .-name 76*8d67ca89SAndroid Build Coastguard Worker#endif 77*8d67ca89SAndroid Build Coastguard Worker 78*8d67ca89SAndroid Build Coastguard Worker#ifndef MEMCMP 79*8d67ca89SAndroid Build Coastguard Worker# define MEMCMP memcmp_sse4 80*8d67ca89SAndroid Build Coastguard Worker#endif 81*8d67ca89SAndroid Build Coastguard Worker 82*8d67ca89SAndroid Build Coastguard Worker#define CFI_PUSH(REG) \ 83*8d67ca89SAndroid Build Coastguard Worker cfi_adjust_cfa_offset (4); \ 84*8d67ca89SAndroid Build Coastguard Worker cfi_rel_offset (REG, 0) 85*8d67ca89SAndroid Build Coastguard Worker 86*8d67ca89SAndroid Build Coastguard Worker#define CFI_POP(REG) \ 87*8d67ca89SAndroid Build Coastguard Worker cfi_adjust_cfa_offset (-4); \ 88*8d67ca89SAndroid Build Coastguard Worker cfi_restore (REG) 89*8d67ca89SAndroid Build Coastguard Worker 90*8d67ca89SAndroid Build Coastguard Worker#define PUSH(REG) pushl REG; CFI_PUSH (REG) 91*8d67ca89SAndroid Build Coastguard Worker#define POP(REG) popl REG; CFI_POP (REG) 92*8d67ca89SAndroid Build Coastguard Worker 93*8d67ca89SAndroid Build Coastguard Worker#define PARMS 4 94*8d67ca89SAndroid Build Coastguard Worker#define BLK1 PARMS 95*8d67ca89SAndroid Build Coastguard Worker#define BLK2 BLK1 + 4 96*8d67ca89SAndroid Build Coastguard Worker#define LEN BLK2 + 4 97*8d67ca89SAndroid Build Coastguard Worker#define RETURN POP (%ebx); ret; CFI_PUSH (%ebx) 98*8d67ca89SAndroid Build Coastguard Worker 99*8d67ca89SAndroid Build Coastguard Worker 100*8d67ca89SAndroid Build Coastguard Worker#if (defined SHARED || defined __PIC__) 101*8d67ca89SAndroid Build Coastguard Worker# define JMPTBL(I, B) I - B 102*8d67ca89SAndroid Build Coastguard Worker 103*8d67ca89SAndroid Build Coastguard Worker/* Load an entry in a jump table into EBX and branch to it. TABLE is a 104*8d67ca89SAndroid Build Coastguard Worker jump table with relative offsets. INDEX is a register contains the 105*8d67ca89SAndroid Build Coastguard Worker index into the jump table. SCALE is the scale of INDEX. */ 106*8d67ca89SAndroid Build Coastguard Worker 107*8d67ca89SAndroid Build Coastguard Worker# define BRANCH_TO_JMPTBL_ENTRY(TABLE, INDEX, SCALE) \ 108*8d67ca89SAndroid Build Coastguard Worker/* We first load PC into EBX. */ \ 109*8d67ca89SAndroid Build Coastguard Worker call __x86.get_pc_thunk.bx; \ 110*8d67ca89SAndroid Build Coastguard Worker/* Get the address of the jump table. */ \ 111*8d67ca89SAndroid Build Coastguard Worker addl $(TABLE - .), %ebx; \ 112*8d67ca89SAndroid Build Coastguard Worker/* Get the entry and convert the relative offset to the \ 113*8d67ca89SAndroid Build Coastguard Worker absolute address. */ \ 114*8d67ca89SAndroid Build Coastguard Worker addl (%ebx,INDEX,SCALE), %ebx; \ 115*8d67ca89SAndroid Build Coastguard Worker/* We loaded the jump table and adjuested EDX/ESI. Go. */ \ 116*8d67ca89SAndroid Build Coastguard Worker jmp *%ebx 117*8d67ca89SAndroid Build Coastguard Worker#else 118*8d67ca89SAndroid Build Coastguard Worker# define JMPTBL(I, B) I 119*8d67ca89SAndroid Build Coastguard Worker 120*8d67ca89SAndroid Build Coastguard Worker/* Load an entry in a jump table into EBX and branch to it. TABLE is a 121*8d67ca89SAndroid Build Coastguard Worker jump table with relative offsets. INDEX is a register contains the 122*8d67ca89SAndroid Build Coastguard Worker index into the jump table. SCALE is the scale of INDEX. */ 123*8d67ca89SAndroid Build Coastguard Worker# define BRANCH_TO_JMPTBL_ENTRY(TABLE, INDEX, SCALE) \ 124*8d67ca89SAndroid Build Coastguard Worker jmp *TABLE(,INDEX,SCALE) 125*8d67ca89SAndroid Build Coastguard Worker#endif 126*8d67ca89SAndroid Build Coastguard Worker 127*8d67ca89SAndroid Build Coastguard Worker 128*8d67ca89SAndroid Build Coastguard Worker/* Warning! 129*8d67ca89SAndroid Build Coastguard Worker wmemcmp has to use SIGNED comparison for elements. 130*8d67ca89SAndroid Build Coastguard Worker memcmp has to use UNSIGNED comparison for elemnts. 131*8d67ca89SAndroid Build Coastguard Worker*/ 132*8d67ca89SAndroid Build Coastguard Worker 133*8d67ca89SAndroid Build Coastguard Worker .section .text.sse4.2,"ax",@progbits 134*8d67ca89SAndroid Build Coastguard WorkerENTRY (MEMCMP) 135*8d67ca89SAndroid Build Coastguard Worker movl BLK1(%esp), %eax 136*8d67ca89SAndroid Build Coastguard Worker movl BLK2(%esp), %edx 137*8d67ca89SAndroid Build Coastguard Worker movl LEN(%esp), %ecx 138*8d67ca89SAndroid Build Coastguard Worker 139*8d67ca89SAndroid Build Coastguard Worker#ifdef USE_AS_WMEMCMP 140*8d67ca89SAndroid Build Coastguard Worker shl $2, %ecx 141*8d67ca89SAndroid Build Coastguard Worker test %ecx, %ecx 142*8d67ca89SAndroid Build Coastguard Worker jz L(return0) 143*8d67ca89SAndroid Build Coastguard Worker#else 144*8d67ca89SAndroid Build Coastguard Worker cmp $1, %ecx 145*8d67ca89SAndroid Build Coastguard Worker jbe L(less1bytes) 146*8d67ca89SAndroid Build Coastguard Worker#endif 147*8d67ca89SAndroid Build Coastguard Worker 148*8d67ca89SAndroid Build Coastguard Worker pxor %xmm0, %xmm0 149*8d67ca89SAndroid Build Coastguard Worker cmp $64, %ecx 150*8d67ca89SAndroid Build Coastguard Worker ja L(64bytesormore) 151*8d67ca89SAndroid Build Coastguard Worker cmp $8, %ecx 152*8d67ca89SAndroid Build Coastguard Worker 153*8d67ca89SAndroid Build Coastguard Worker#ifndef USE_AS_WMEMCMP 154*8d67ca89SAndroid Build Coastguard Worker PUSH (%ebx) 155*8d67ca89SAndroid Build Coastguard Worker jb L(less8bytes) 156*8d67ca89SAndroid Build Coastguard Worker#else 157*8d67ca89SAndroid Build Coastguard Worker jb L(less8bytes) 158*8d67ca89SAndroid Build Coastguard Worker PUSH (%ebx) 159*8d67ca89SAndroid Build Coastguard Worker#endif 160*8d67ca89SAndroid Build Coastguard Worker 161*8d67ca89SAndroid Build Coastguard Worker add %ecx, %edx 162*8d67ca89SAndroid Build Coastguard Worker add %ecx, %eax 163*8d67ca89SAndroid Build Coastguard Worker BRANCH_TO_JMPTBL_ENTRY(L(table_64bytes), %ecx, 4) 164*8d67ca89SAndroid Build Coastguard Worker 165*8d67ca89SAndroid Build Coastguard Worker#ifndef USE_AS_WMEMCMP 166*8d67ca89SAndroid Build Coastguard Worker .p2align 4 167*8d67ca89SAndroid Build Coastguard WorkerL(less8bytes): 168*8d67ca89SAndroid Build Coastguard Worker mov (%eax), %bl 169*8d67ca89SAndroid Build Coastguard Worker cmpb (%edx), %bl 170*8d67ca89SAndroid Build Coastguard Worker jne L(nonzero) 171*8d67ca89SAndroid Build Coastguard Worker 172*8d67ca89SAndroid Build Coastguard Worker mov 1(%eax), %bl 173*8d67ca89SAndroid Build Coastguard Worker cmpb 1(%edx), %bl 174*8d67ca89SAndroid Build Coastguard Worker jne L(nonzero) 175*8d67ca89SAndroid Build Coastguard Worker 176*8d67ca89SAndroid Build Coastguard Worker cmp $2, %ecx 177*8d67ca89SAndroid Build Coastguard Worker jz L(0bytes) 178*8d67ca89SAndroid Build Coastguard Worker 179*8d67ca89SAndroid Build Coastguard Worker mov 2(%eax), %bl 180*8d67ca89SAndroid Build Coastguard Worker cmpb 2(%edx), %bl 181*8d67ca89SAndroid Build Coastguard Worker jne L(nonzero) 182*8d67ca89SAndroid Build Coastguard Worker 183*8d67ca89SAndroid Build Coastguard Worker cmp $3, %ecx 184*8d67ca89SAndroid Build Coastguard Worker jz L(0bytes) 185*8d67ca89SAndroid Build Coastguard Worker 186*8d67ca89SAndroid Build Coastguard Worker mov 3(%eax), %bl 187*8d67ca89SAndroid Build Coastguard Worker cmpb 3(%edx), %bl 188*8d67ca89SAndroid Build Coastguard Worker jne L(nonzero) 189*8d67ca89SAndroid Build Coastguard Worker 190*8d67ca89SAndroid Build Coastguard Worker cmp $4, %ecx 191*8d67ca89SAndroid Build Coastguard Worker jz L(0bytes) 192*8d67ca89SAndroid Build Coastguard Worker 193*8d67ca89SAndroid Build Coastguard Worker mov 4(%eax), %bl 194*8d67ca89SAndroid Build Coastguard Worker cmpb 4(%edx), %bl 195*8d67ca89SAndroid Build Coastguard Worker jne L(nonzero) 196*8d67ca89SAndroid Build Coastguard Worker 197*8d67ca89SAndroid Build Coastguard Worker cmp $5, %ecx 198*8d67ca89SAndroid Build Coastguard Worker jz L(0bytes) 199*8d67ca89SAndroid Build Coastguard Worker 200*8d67ca89SAndroid Build Coastguard Worker mov 5(%eax), %bl 201*8d67ca89SAndroid Build Coastguard Worker cmpb 5(%edx), %bl 202*8d67ca89SAndroid Build Coastguard Worker jne L(nonzero) 203*8d67ca89SAndroid Build Coastguard Worker 204*8d67ca89SAndroid Build Coastguard Worker cmp $6, %ecx 205*8d67ca89SAndroid Build Coastguard Worker jz L(0bytes) 206*8d67ca89SAndroid Build Coastguard Worker 207*8d67ca89SAndroid Build Coastguard Worker mov 6(%eax), %bl 208*8d67ca89SAndroid Build Coastguard Worker cmpb 6(%edx), %bl 209*8d67ca89SAndroid Build Coastguard Worker je L(0bytes) 210*8d67ca89SAndroid Build Coastguard Worker 211*8d67ca89SAndroid Build Coastguard WorkerL(nonzero): 212*8d67ca89SAndroid Build Coastguard Worker POP (%ebx) 213*8d67ca89SAndroid Build Coastguard Worker mov $1, %eax 214*8d67ca89SAndroid Build Coastguard Worker ja L(above) 215*8d67ca89SAndroid Build Coastguard Worker neg %eax 216*8d67ca89SAndroid Build Coastguard WorkerL(above): 217*8d67ca89SAndroid Build Coastguard Worker ret 218*8d67ca89SAndroid Build Coastguard Worker CFI_PUSH (%ebx) 219*8d67ca89SAndroid Build Coastguard Worker#endif 220*8d67ca89SAndroid Build Coastguard Worker 221*8d67ca89SAndroid Build Coastguard Worker .p2align 4 222*8d67ca89SAndroid Build Coastguard WorkerL(0bytes): 223*8d67ca89SAndroid Build Coastguard Worker POP (%ebx) 224*8d67ca89SAndroid Build Coastguard Worker xor %eax, %eax 225*8d67ca89SAndroid Build Coastguard Worker ret 226*8d67ca89SAndroid Build Coastguard Worker 227*8d67ca89SAndroid Build Coastguard Worker#ifdef USE_AS_WMEMCMP 228*8d67ca89SAndroid Build Coastguard Worker 229*8d67ca89SAndroid Build Coastguard Worker/* for wmemcmp, case N == 1 */ 230*8d67ca89SAndroid Build Coastguard Worker 231*8d67ca89SAndroid Build Coastguard Worker .p2align 4 232*8d67ca89SAndroid Build Coastguard WorkerL(less8bytes): 233*8d67ca89SAndroid Build Coastguard Worker mov (%eax), %ecx 234*8d67ca89SAndroid Build Coastguard Worker cmp (%edx), %ecx 235*8d67ca89SAndroid Build Coastguard Worker je L(return0) 236*8d67ca89SAndroid Build Coastguard Worker mov $1, %eax 237*8d67ca89SAndroid Build Coastguard Worker jg L(find_diff_bigger) 238*8d67ca89SAndroid Build Coastguard Worker neg %eax 239*8d67ca89SAndroid Build Coastguard Worker ret 240*8d67ca89SAndroid Build Coastguard Worker 241*8d67ca89SAndroid Build Coastguard Worker .p2align 4 242*8d67ca89SAndroid Build Coastguard WorkerL(find_diff_bigger): 243*8d67ca89SAndroid Build Coastguard Worker ret 244*8d67ca89SAndroid Build Coastguard Worker 245*8d67ca89SAndroid Build Coastguard Worker .p2align 4 246*8d67ca89SAndroid Build Coastguard WorkerL(return0): 247*8d67ca89SAndroid Build Coastguard Worker xor %eax, %eax 248*8d67ca89SAndroid Build Coastguard Worker ret 249*8d67ca89SAndroid Build Coastguard Worker#endif 250*8d67ca89SAndroid Build Coastguard Worker 251*8d67ca89SAndroid Build Coastguard Worker#ifndef USE_AS_WMEMCMP 252*8d67ca89SAndroid Build Coastguard Worker .p2align 4 253*8d67ca89SAndroid Build Coastguard WorkerL(less1bytes): 254*8d67ca89SAndroid Build Coastguard Worker jb L(0bytesend) 255*8d67ca89SAndroid Build Coastguard Worker movzbl (%eax), %eax 256*8d67ca89SAndroid Build Coastguard Worker movzbl (%edx), %edx 257*8d67ca89SAndroid Build Coastguard Worker sub %edx, %eax 258*8d67ca89SAndroid Build Coastguard Worker ret 259*8d67ca89SAndroid Build Coastguard Worker 260*8d67ca89SAndroid Build Coastguard Worker .p2align 4 261*8d67ca89SAndroid Build Coastguard WorkerL(0bytesend): 262*8d67ca89SAndroid Build Coastguard Worker xor %eax, %eax 263*8d67ca89SAndroid Build Coastguard Worker ret 264*8d67ca89SAndroid Build Coastguard Worker#endif 265*8d67ca89SAndroid Build Coastguard Worker .p2align 4 266*8d67ca89SAndroid Build Coastguard WorkerL(64bytesormore): 267*8d67ca89SAndroid Build Coastguard Worker PUSH (%ebx) 268*8d67ca89SAndroid Build Coastguard Worker mov %ecx, %ebx 269*8d67ca89SAndroid Build Coastguard Worker mov $64, %ecx 270*8d67ca89SAndroid Build Coastguard Worker sub $64, %ebx 271*8d67ca89SAndroid Build Coastguard WorkerL(64bytesormore_loop): 272*8d67ca89SAndroid Build Coastguard Worker movdqu (%eax), %xmm1 273*8d67ca89SAndroid Build Coastguard Worker movdqu (%edx), %xmm2 274*8d67ca89SAndroid Build Coastguard Worker pxor %xmm1, %xmm2 275*8d67ca89SAndroid Build Coastguard Worker ptest %xmm2, %xmm0 276*8d67ca89SAndroid Build Coastguard Worker jnc L(find_16diff) 277*8d67ca89SAndroid Build Coastguard Worker 278*8d67ca89SAndroid Build Coastguard Worker movdqu 16(%eax), %xmm1 279*8d67ca89SAndroid Build Coastguard Worker movdqu 16(%edx), %xmm2 280*8d67ca89SAndroid Build Coastguard Worker pxor %xmm1, %xmm2 281*8d67ca89SAndroid Build Coastguard Worker ptest %xmm2, %xmm0 282*8d67ca89SAndroid Build Coastguard Worker jnc L(find_32diff) 283*8d67ca89SAndroid Build Coastguard Worker 284*8d67ca89SAndroid Build Coastguard Worker movdqu 32(%eax), %xmm1 285*8d67ca89SAndroid Build Coastguard Worker movdqu 32(%edx), %xmm2 286*8d67ca89SAndroid Build Coastguard Worker pxor %xmm1, %xmm2 287*8d67ca89SAndroid Build Coastguard Worker ptest %xmm2, %xmm0 288*8d67ca89SAndroid Build Coastguard Worker jnc L(find_48diff) 289*8d67ca89SAndroid Build Coastguard Worker 290*8d67ca89SAndroid Build Coastguard Worker movdqu 48(%eax), %xmm1 291*8d67ca89SAndroid Build Coastguard Worker movdqu 48(%edx), %xmm2 292*8d67ca89SAndroid Build Coastguard Worker pxor %xmm1, %xmm2 293*8d67ca89SAndroid Build Coastguard Worker ptest %xmm2, %xmm0 294*8d67ca89SAndroid Build Coastguard Worker jnc L(find_64diff) 295*8d67ca89SAndroid Build Coastguard Worker add %ecx, %eax 296*8d67ca89SAndroid Build Coastguard Worker add %ecx, %edx 297*8d67ca89SAndroid Build Coastguard Worker sub %ecx, %ebx 298*8d67ca89SAndroid Build Coastguard Worker jae L(64bytesormore_loop) 299*8d67ca89SAndroid Build Coastguard Worker add %ebx, %ecx 300*8d67ca89SAndroid Build Coastguard Worker add %ecx, %edx 301*8d67ca89SAndroid Build Coastguard Worker add %ecx, %eax 302*8d67ca89SAndroid Build Coastguard Worker BRANCH_TO_JMPTBL_ENTRY(L(table_64bytes), %ecx, 4) 303*8d67ca89SAndroid Build Coastguard Worker 304*8d67ca89SAndroid Build Coastguard Worker#ifdef USE_AS_WMEMCMP 305*8d67ca89SAndroid Build Coastguard Worker 306*8d67ca89SAndroid Build Coastguard Worker/* Label needs only for table_64bytes filling */ 307*8d67ca89SAndroid Build Coastguard WorkerL(unreal_case): 308*8d67ca89SAndroid Build Coastguard Worker/* no code here */ 309*8d67ca89SAndroid Build Coastguard Worker 310*8d67ca89SAndroid Build Coastguard Worker#endif 311*8d67ca89SAndroid Build Coastguard Worker .p2align 4 312*8d67ca89SAndroid Build Coastguard WorkerL(find_16diff): 313*8d67ca89SAndroid Build Coastguard Worker sub $16, %ecx 314*8d67ca89SAndroid Build Coastguard WorkerL(find_32diff): 315*8d67ca89SAndroid Build Coastguard Worker sub $16, %ecx 316*8d67ca89SAndroid Build Coastguard WorkerL(find_48diff): 317*8d67ca89SAndroid Build Coastguard Worker sub $16, %ecx 318*8d67ca89SAndroid Build Coastguard WorkerL(find_64diff): 319*8d67ca89SAndroid Build Coastguard Worker add %ecx, %edx 320*8d67ca89SAndroid Build Coastguard Worker add %ecx, %eax 321*8d67ca89SAndroid Build Coastguard Worker 322*8d67ca89SAndroid Build Coastguard Worker#ifndef USE_AS_WMEMCMP 323*8d67ca89SAndroid Build Coastguard Worker .p2align 4 324*8d67ca89SAndroid Build Coastguard WorkerL(16bytes): 325*8d67ca89SAndroid Build Coastguard Worker mov -16(%eax), %ecx 326*8d67ca89SAndroid Build Coastguard Worker mov -16(%edx), %ebx 327*8d67ca89SAndroid Build Coastguard Worker cmp %ebx, %ecx 328*8d67ca89SAndroid Build Coastguard Worker jne L(find_diff) 329*8d67ca89SAndroid Build Coastguard WorkerL(12bytes): 330*8d67ca89SAndroid Build Coastguard Worker mov -12(%eax), %ecx 331*8d67ca89SAndroid Build Coastguard Worker mov -12(%edx), %ebx 332*8d67ca89SAndroid Build Coastguard Worker cmp %ebx, %ecx 333*8d67ca89SAndroid Build Coastguard Worker jne L(find_diff) 334*8d67ca89SAndroid Build Coastguard WorkerL(8bytes): 335*8d67ca89SAndroid Build Coastguard Worker mov -8(%eax), %ecx 336*8d67ca89SAndroid Build Coastguard Worker mov -8(%edx), %ebx 337*8d67ca89SAndroid Build Coastguard Worker cmp %ebx, %ecx 338*8d67ca89SAndroid Build Coastguard Worker jne L(find_diff) 339*8d67ca89SAndroid Build Coastguard WorkerL(4bytes): 340*8d67ca89SAndroid Build Coastguard Worker mov -4(%eax), %ecx 341*8d67ca89SAndroid Build Coastguard Worker mov -4(%edx), %ebx 342*8d67ca89SAndroid Build Coastguard Worker cmp %ebx, %ecx 343*8d67ca89SAndroid Build Coastguard Worker mov $0, %eax 344*8d67ca89SAndroid Build Coastguard Worker jne L(find_diff) 345*8d67ca89SAndroid Build Coastguard Worker RETURN 346*8d67ca89SAndroid Build Coastguard Worker#else 347*8d67ca89SAndroid Build Coastguard Worker .p2align 4 348*8d67ca89SAndroid Build Coastguard WorkerL(16bytes): 349*8d67ca89SAndroid Build Coastguard Worker mov -16(%eax), %ecx 350*8d67ca89SAndroid Build Coastguard Worker cmp -16(%edx), %ecx 351*8d67ca89SAndroid Build Coastguard Worker jne L(find_diff) 352*8d67ca89SAndroid Build Coastguard WorkerL(12bytes): 353*8d67ca89SAndroid Build Coastguard Worker mov -12(%eax), %ecx 354*8d67ca89SAndroid Build Coastguard Worker cmp -12(%edx), %ecx 355*8d67ca89SAndroid Build Coastguard Worker jne L(find_diff) 356*8d67ca89SAndroid Build Coastguard WorkerL(8bytes): 357*8d67ca89SAndroid Build Coastguard Worker mov -8(%eax), %ecx 358*8d67ca89SAndroid Build Coastguard Worker cmp -8(%edx), %ecx 359*8d67ca89SAndroid Build Coastguard Worker jne L(find_diff) 360*8d67ca89SAndroid Build Coastguard WorkerL(4bytes): 361*8d67ca89SAndroid Build Coastguard Worker mov -4(%eax), %ecx 362*8d67ca89SAndroid Build Coastguard Worker cmp -4(%edx), %ecx 363*8d67ca89SAndroid Build Coastguard Worker mov $0, %eax 364*8d67ca89SAndroid Build Coastguard Worker jne L(find_diff) 365*8d67ca89SAndroid Build Coastguard Worker RETURN 366*8d67ca89SAndroid Build Coastguard Worker#endif 367*8d67ca89SAndroid Build Coastguard Worker 368*8d67ca89SAndroid Build Coastguard Worker#ifndef USE_AS_WMEMCMP 369*8d67ca89SAndroid Build Coastguard Worker .p2align 4 370*8d67ca89SAndroid Build Coastguard WorkerL(49bytes): 371*8d67ca89SAndroid Build Coastguard Worker movdqu -49(%eax), %xmm1 372*8d67ca89SAndroid Build Coastguard Worker movdqu -49(%edx), %xmm2 373*8d67ca89SAndroid Build Coastguard Worker mov $-49, %ebx 374*8d67ca89SAndroid Build Coastguard Worker pxor %xmm1, %xmm2 375*8d67ca89SAndroid Build Coastguard Worker ptest %xmm2, %xmm0 376*8d67ca89SAndroid Build Coastguard Worker jnc L(less16bytes) 377*8d67ca89SAndroid Build Coastguard WorkerL(33bytes): 378*8d67ca89SAndroid Build Coastguard Worker movdqu -33(%eax), %xmm1 379*8d67ca89SAndroid Build Coastguard Worker movdqu -33(%edx), %xmm2 380*8d67ca89SAndroid Build Coastguard Worker mov $-33, %ebx 381*8d67ca89SAndroid Build Coastguard Worker pxor %xmm1, %xmm2 382*8d67ca89SAndroid Build Coastguard Worker ptest %xmm2, %xmm0 383*8d67ca89SAndroid Build Coastguard Worker jnc L(less16bytes) 384*8d67ca89SAndroid Build Coastguard WorkerL(17bytes): 385*8d67ca89SAndroid Build Coastguard Worker mov -17(%eax), %ecx 386*8d67ca89SAndroid Build Coastguard Worker mov -17(%edx), %ebx 387*8d67ca89SAndroid Build Coastguard Worker cmp %ebx, %ecx 388*8d67ca89SAndroid Build Coastguard Worker jne L(find_diff) 389*8d67ca89SAndroid Build Coastguard WorkerL(13bytes): 390*8d67ca89SAndroid Build Coastguard Worker mov -13(%eax), %ecx 391*8d67ca89SAndroid Build Coastguard Worker mov -13(%edx), %ebx 392*8d67ca89SAndroid Build Coastguard Worker cmp %ebx, %ecx 393*8d67ca89SAndroid Build Coastguard Worker jne L(find_diff) 394*8d67ca89SAndroid Build Coastguard WorkerL(9bytes): 395*8d67ca89SAndroid Build Coastguard Worker mov -9(%eax), %ecx 396*8d67ca89SAndroid Build Coastguard Worker mov -9(%edx), %ebx 397*8d67ca89SAndroid Build Coastguard Worker cmp %ebx, %ecx 398*8d67ca89SAndroid Build Coastguard Worker jne L(find_diff) 399*8d67ca89SAndroid Build Coastguard WorkerL(5bytes): 400*8d67ca89SAndroid Build Coastguard Worker mov -5(%eax), %ecx 401*8d67ca89SAndroid Build Coastguard Worker mov -5(%edx), %ebx 402*8d67ca89SAndroid Build Coastguard Worker cmp %ebx, %ecx 403*8d67ca89SAndroid Build Coastguard Worker jne L(find_diff) 404*8d67ca89SAndroid Build Coastguard Worker movzbl -1(%eax), %ecx 405*8d67ca89SAndroid Build Coastguard Worker cmp -1(%edx), %cl 406*8d67ca89SAndroid Build Coastguard Worker mov $0, %eax 407*8d67ca89SAndroid Build Coastguard Worker jne L(end) 408*8d67ca89SAndroid Build Coastguard Worker RETURN 409*8d67ca89SAndroid Build Coastguard Worker 410*8d67ca89SAndroid Build Coastguard Worker .p2align 4 411*8d67ca89SAndroid Build Coastguard WorkerL(50bytes): 412*8d67ca89SAndroid Build Coastguard Worker mov $-50, %ebx 413*8d67ca89SAndroid Build Coastguard Worker movdqu -50(%eax), %xmm1 414*8d67ca89SAndroid Build Coastguard Worker movdqu -50(%edx), %xmm2 415*8d67ca89SAndroid Build Coastguard Worker pxor %xmm1, %xmm2 416*8d67ca89SAndroid Build Coastguard Worker ptest %xmm2, %xmm0 417*8d67ca89SAndroid Build Coastguard Worker jnc L(less16bytes) 418*8d67ca89SAndroid Build Coastguard WorkerL(34bytes): 419*8d67ca89SAndroid Build Coastguard Worker mov $-34, %ebx 420*8d67ca89SAndroid Build Coastguard Worker movdqu -34(%eax), %xmm1 421*8d67ca89SAndroid Build Coastguard Worker movdqu -34(%edx), %xmm2 422*8d67ca89SAndroid Build Coastguard Worker pxor %xmm1, %xmm2 423*8d67ca89SAndroid Build Coastguard Worker ptest %xmm2, %xmm0 424*8d67ca89SAndroid Build Coastguard Worker jnc L(less16bytes) 425*8d67ca89SAndroid Build Coastguard WorkerL(18bytes): 426*8d67ca89SAndroid Build Coastguard Worker mov -18(%eax), %ecx 427*8d67ca89SAndroid Build Coastguard Worker mov -18(%edx), %ebx 428*8d67ca89SAndroid Build Coastguard Worker cmp %ebx, %ecx 429*8d67ca89SAndroid Build Coastguard Worker jne L(find_diff) 430*8d67ca89SAndroid Build Coastguard WorkerL(14bytes): 431*8d67ca89SAndroid Build Coastguard Worker mov -14(%eax), %ecx 432*8d67ca89SAndroid Build Coastguard Worker mov -14(%edx), %ebx 433*8d67ca89SAndroid Build Coastguard Worker cmp %ebx, %ecx 434*8d67ca89SAndroid Build Coastguard Worker jne L(find_diff) 435*8d67ca89SAndroid Build Coastguard WorkerL(10bytes): 436*8d67ca89SAndroid Build Coastguard Worker mov -10(%eax), %ecx 437*8d67ca89SAndroid Build Coastguard Worker mov -10(%edx), %ebx 438*8d67ca89SAndroid Build Coastguard Worker cmp %ebx, %ecx 439*8d67ca89SAndroid Build Coastguard Worker jne L(find_diff) 440*8d67ca89SAndroid Build Coastguard WorkerL(6bytes): 441*8d67ca89SAndroid Build Coastguard Worker mov -6(%eax), %ecx 442*8d67ca89SAndroid Build Coastguard Worker mov -6(%edx), %ebx 443*8d67ca89SAndroid Build Coastguard Worker cmp %ebx, %ecx 444*8d67ca89SAndroid Build Coastguard Worker jne L(find_diff) 445*8d67ca89SAndroid Build Coastguard WorkerL(2bytes): 446*8d67ca89SAndroid Build Coastguard Worker movzwl -2(%eax), %ecx 447*8d67ca89SAndroid Build Coastguard Worker movzwl -2(%edx), %ebx 448*8d67ca89SAndroid Build Coastguard Worker cmp %bl, %cl 449*8d67ca89SAndroid Build Coastguard Worker jne L(end) 450*8d67ca89SAndroid Build Coastguard Worker cmp %bh, %ch 451*8d67ca89SAndroid Build Coastguard Worker mov $0, %eax 452*8d67ca89SAndroid Build Coastguard Worker jne L(end) 453*8d67ca89SAndroid Build Coastguard Worker RETURN 454*8d67ca89SAndroid Build Coastguard Worker 455*8d67ca89SAndroid Build Coastguard Worker .p2align 4 456*8d67ca89SAndroid Build Coastguard WorkerL(51bytes): 457*8d67ca89SAndroid Build Coastguard Worker mov $-51, %ebx 458*8d67ca89SAndroid Build Coastguard Worker movdqu -51(%eax), %xmm1 459*8d67ca89SAndroid Build Coastguard Worker movdqu -51(%edx), %xmm2 460*8d67ca89SAndroid Build Coastguard Worker pxor %xmm1, %xmm2 461*8d67ca89SAndroid Build Coastguard Worker ptest %xmm2, %xmm0 462*8d67ca89SAndroid Build Coastguard Worker jnc L(less16bytes) 463*8d67ca89SAndroid Build Coastguard WorkerL(35bytes): 464*8d67ca89SAndroid Build Coastguard Worker mov $-35, %ebx 465*8d67ca89SAndroid Build Coastguard Worker movdqu -35(%eax), %xmm1 466*8d67ca89SAndroid Build Coastguard Worker movdqu -35(%edx), %xmm2 467*8d67ca89SAndroid Build Coastguard Worker pxor %xmm1, %xmm2 468*8d67ca89SAndroid Build Coastguard Worker ptest %xmm2, %xmm0 469*8d67ca89SAndroid Build Coastguard Worker jnc L(less16bytes) 470*8d67ca89SAndroid Build Coastguard WorkerL(19bytes): 471*8d67ca89SAndroid Build Coastguard Worker movl -19(%eax), %ecx 472*8d67ca89SAndroid Build Coastguard Worker movl -19(%edx), %ebx 473*8d67ca89SAndroid Build Coastguard Worker cmp %ebx, %ecx 474*8d67ca89SAndroid Build Coastguard Worker jne L(find_diff) 475*8d67ca89SAndroid Build Coastguard WorkerL(15bytes): 476*8d67ca89SAndroid Build Coastguard Worker movl -15(%eax), %ecx 477*8d67ca89SAndroid Build Coastguard Worker movl -15(%edx), %ebx 478*8d67ca89SAndroid Build Coastguard Worker cmp %ebx, %ecx 479*8d67ca89SAndroid Build Coastguard Worker jne L(find_diff) 480*8d67ca89SAndroid Build Coastguard WorkerL(11bytes): 481*8d67ca89SAndroid Build Coastguard Worker movl -11(%eax), %ecx 482*8d67ca89SAndroid Build Coastguard Worker movl -11(%edx), %ebx 483*8d67ca89SAndroid Build Coastguard Worker cmp %ebx, %ecx 484*8d67ca89SAndroid Build Coastguard Worker jne L(find_diff) 485*8d67ca89SAndroid Build Coastguard WorkerL(7bytes): 486*8d67ca89SAndroid Build Coastguard Worker movl -7(%eax), %ecx 487*8d67ca89SAndroid Build Coastguard Worker movl -7(%edx), %ebx 488*8d67ca89SAndroid Build Coastguard Worker cmp %ebx, %ecx 489*8d67ca89SAndroid Build Coastguard Worker jne L(find_diff) 490*8d67ca89SAndroid Build Coastguard WorkerL(3bytes): 491*8d67ca89SAndroid Build Coastguard Worker movzwl -3(%eax), %ecx 492*8d67ca89SAndroid Build Coastguard Worker movzwl -3(%edx), %ebx 493*8d67ca89SAndroid Build Coastguard Worker cmpb %bl, %cl 494*8d67ca89SAndroid Build Coastguard Worker jne L(end) 495*8d67ca89SAndroid Build Coastguard Worker cmp %bx, %cx 496*8d67ca89SAndroid Build Coastguard Worker jne L(end) 497*8d67ca89SAndroid Build Coastguard WorkerL(1bytes): 498*8d67ca89SAndroid Build Coastguard Worker movzbl -1(%eax), %eax 499*8d67ca89SAndroid Build Coastguard Worker cmpb -1(%edx), %al 500*8d67ca89SAndroid Build Coastguard Worker mov $0, %eax 501*8d67ca89SAndroid Build Coastguard Worker jne L(end) 502*8d67ca89SAndroid Build Coastguard Worker RETURN 503*8d67ca89SAndroid Build Coastguard Worker#endif 504*8d67ca89SAndroid Build Coastguard Worker .p2align 4 505*8d67ca89SAndroid Build Coastguard WorkerL(52bytes): 506*8d67ca89SAndroid Build Coastguard Worker movdqu -52(%eax), %xmm1 507*8d67ca89SAndroid Build Coastguard Worker movdqu -52(%edx), %xmm2 508*8d67ca89SAndroid Build Coastguard Worker mov $-52, %ebx 509*8d67ca89SAndroid Build Coastguard Worker pxor %xmm1, %xmm2 510*8d67ca89SAndroid Build Coastguard Worker ptest %xmm2, %xmm0 511*8d67ca89SAndroid Build Coastguard Worker jnc L(less16bytes) 512*8d67ca89SAndroid Build Coastguard WorkerL(36bytes): 513*8d67ca89SAndroid Build Coastguard Worker movdqu -36(%eax), %xmm1 514*8d67ca89SAndroid Build Coastguard Worker movdqu -36(%edx), %xmm2 515*8d67ca89SAndroid Build Coastguard Worker mov $-36, %ebx 516*8d67ca89SAndroid Build Coastguard Worker pxor %xmm1, %xmm2 517*8d67ca89SAndroid Build Coastguard Worker ptest %xmm2, %xmm0 518*8d67ca89SAndroid Build Coastguard Worker jnc L(less16bytes) 519*8d67ca89SAndroid Build Coastguard WorkerL(20bytes): 520*8d67ca89SAndroid Build Coastguard Worker movdqu -20(%eax), %xmm1 521*8d67ca89SAndroid Build Coastguard Worker movdqu -20(%edx), %xmm2 522*8d67ca89SAndroid Build Coastguard Worker mov $-20, %ebx 523*8d67ca89SAndroid Build Coastguard Worker pxor %xmm1, %xmm2 524*8d67ca89SAndroid Build Coastguard Worker ptest %xmm2, %xmm0 525*8d67ca89SAndroid Build Coastguard Worker jnc L(less16bytes) 526*8d67ca89SAndroid Build Coastguard Worker mov -4(%eax), %ecx 527*8d67ca89SAndroid Build Coastguard Worker#ifndef USE_AS_WMEMCMP 528*8d67ca89SAndroid Build Coastguard Worker mov -4(%edx), %ebx 529*8d67ca89SAndroid Build Coastguard Worker cmp %ebx, %ecx 530*8d67ca89SAndroid Build Coastguard Worker#else 531*8d67ca89SAndroid Build Coastguard Worker cmp -4(%edx), %ecx 532*8d67ca89SAndroid Build Coastguard Worker#endif 533*8d67ca89SAndroid Build Coastguard Worker mov $0, %eax 534*8d67ca89SAndroid Build Coastguard Worker jne L(find_diff) 535*8d67ca89SAndroid Build Coastguard Worker RETURN 536*8d67ca89SAndroid Build Coastguard Worker 537*8d67ca89SAndroid Build Coastguard Worker#ifndef USE_AS_WMEMCMP 538*8d67ca89SAndroid Build Coastguard Worker .p2align 4 539*8d67ca89SAndroid Build Coastguard WorkerL(53bytes): 540*8d67ca89SAndroid Build Coastguard Worker movdqu -53(%eax), %xmm1 541*8d67ca89SAndroid Build Coastguard Worker movdqu -53(%edx), %xmm2 542*8d67ca89SAndroid Build Coastguard Worker mov $-53, %ebx 543*8d67ca89SAndroid Build Coastguard Worker pxor %xmm1, %xmm2 544*8d67ca89SAndroid Build Coastguard Worker ptest %xmm2, %xmm0 545*8d67ca89SAndroid Build Coastguard Worker jnc L(less16bytes) 546*8d67ca89SAndroid Build Coastguard WorkerL(37bytes): 547*8d67ca89SAndroid Build Coastguard Worker mov $-37, %ebx 548*8d67ca89SAndroid Build Coastguard Worker movdqu -37(%eax), %xmm1 549*8d67ca89SAndroid Build Coastguard Worker movdqu -37(%edx), %xmm2 550*8d67ca89SAndroid Build Coastguard Worker pxor %xmm1, %xmm2 551*8d67ca89SAndroid Build Coastguard Worker ptest %xmm2, %xmm0 552*8d67ca89SAndroid Build Coastguard Worker jnc L(less16bytes) 553*8d67ca89SAndroid Build Coastguard WorkerL(21bytes): 554*8d67ca89SAndroid Build Coastguard Worker mov $-21, %ebx 555*8d67ca89SAndroid Build Coastguard Worker movdqu -21(%eax), %xmm1 556*8d67ca89SAndroid Build Coastguard Worker movdqu -21(%edx), %xmm2 557*8d67ca89SAndroid Build Coastguard Worker pxor %xmm1, %xmm2 558*8d67ca89SAndroid Build Coastguard Worker ptest %xmm2, %xmm0 559*8d67ca89SAndroid Build Coastguard Worker jnc L(less16bytes) 560*8d67ca89SAndroid Build Coastguard Worker mov -5(%eax), %ecx 561*8d67ca89SAndroid Build Coastguard Worker mov -5(%edx), %ebx 562*8d67ca89SAndroid Build Coastguard Worker cmp %ebx, %ecx 563*8d67ca89SAndroid Build Coastguard Worker jne L(find_diff) 564*8d67ca89SAndroid Build Coastguard Worker movzbl -1(%eax), %ecx 565*8d67ca89SAndroid Build Coastguard Worker cmp -1(%edx), %cl 566*8d67ca89SAndroid Build Coastguard Worker mov $0, %eax 567*8d67ca89SAndroid Build Coastguard Worker jne L(end) 568*8d67ca89SAndroid Build Coastguard Worker RETURN 569*8d67ca89SAndroid Build Coastguard Worker 570*8d67ca89SAndroid Build Coastguard Worker .p2align 4 571*8d67ca89SAndroid Build Coastguard WorkerL(54bytes): 572*8d67ca89SAndroid Build Coastguard Worker movdqu -54(%eax), %xmm1 573*8d67ca89SAndroid Build Coastguard Worker movdqu -54(%edx), %xmm2 574*8d67ca89SAndroid Build Coastguard Worker mov $-54, %ebx 575*8d67ca89SAndroid Build Coastguard Worker pxor %xmm1, %xmm2 576*8d67ca89SAndroid Build Coastguard Worker ptest %xmm2, %xmm0 577*8d67ca89SAndroid Build Coastguard Worker jnc L(less16bytes) 578*8d67ca89SAndroid Build Coastguard WorkerL(38bytes): 579*8d67ca89SAndroid Build Coastguard Worker mov $-38, %ebx 580*8d67ca89SAndroid Build Coastguard Worker movdqu -38(%eax), %xmm1 581*8d67ca89SAndroid Build Coastguard Worker movdqu -38(%edx), %xmm2 582*8d67ca89SAndroid Build Coastguard Worker pxor %xmm1, %xmm2 583*8d67ca89SAndroid Build Coastguard Worker ptest %xmm2, %xmm0 584*8d67ca89SAndroid Build Coastguard Worker jnc L(less16bytes) 585*8d67ca89SAndroid Build Coastguard WorkerL(22bytes): 586*8d67ca89SAndroid Build Coastguard Worker mov $-22, %ebx 587*8d67ca89SAndroid Build Coastguard Worker movdqu -22(%eax), %xmm1 588*8d67ca89SAndroid Build Coastguard Worker movdqu -22(%edx), %xmm2 589*8d67ca89SAndroid Build Coastguard Worker pxor %xmm1, %xmm2 590*8d67ca89SAndroid Build Coastguard Worker ptest %xmm2, %xmm0 591*8d67ca89SAndroid Build Coastguard Worker jnc L(less16bytes) 592*8d67ca89SAndroid Build Coastguard Worker 593*8d67ca89SAndroid Build Coastguard Worker mov -6(%eax), %ecx 594*8d67ca89SAndroid Build Coastguard Worker mov -6(%edx), %ebx 595*8d67ca89SAndroid Build Coastguard Worker cmp %ebx, %ecx 596*8d67ca89SAndroid Build Coastguard Worker jne L(find_diff) 597*8d67ca89SAndroid Build Coastguard Worker movzwl -2(%eax), %ecx 598*8d67ca89SAndroid Build Coastguard Worker movzwl -2(%edx), %ebx 599*8d67ca89SAndroid Build Coastguard Worker cmp %bl, %cl 600*8d67ca89SAndroid Build Coastguard Worker jne L(end) 601*8d67ca89SAndroid Build Coastguard Worker cmp %bh, %ch 602*8d67ca89SAndroid Build Coastguard Worker mov $0, %eax 603*8d67ca89SAndroid Build Coastguard Worker jne L(end) 604*8d67ca89SAndroid Build Coastguard Worker RETURN 605*8d67ca89SAndroid Build Coastguard Worker 606*8d67ca89SAndroid Build Coastguard Worker .p2align 4 607*8d67ca89SAndroid Build Coastguard WorkerL(55bytes): 608*8d67ca89SAndroid Build Coastguard Worker movdqu -55(%eax), %xmm1 609*8d67ca89SAndroid Build Coastguard Worker movdqu -55(%edx), %xmm2 610*8d67ca89SAndroid Build Coastguard Worker mov $-55, %ebx 611*8d67ca89SAndroid Build Coastguard Worker pxor %xmm1, %xmm2 612*8d67ca89SAndroid Build Coastguard Worker ptest %xmm2, %xmm0 613*8d67ca89SAndroid Build Coastguard Worker jnc L(less16bytes) 614*8d67ca89SAndroid Build Coastguard WorkerL(39bytes): 615*8d67ca89SAndroid Build Coastguard Worker mov $-39, %ebx 616*8d67ca89SAndroid Build Coastguard Worker movdqu -39(%eax), %xmm1 617*8d67ca89SAndroid Build Coastguard Worker movdqu -39(%edx), %xmm2 618*8d67ca89SAndroid Build Coastguard Worker pxor %xmm1, %xmm2 619*8d67ca89SAndroid Build Coastguard Worker ptest %xmm2, %xmm0 620*8d67ca89SAndroid Build Coastguard Worker jnc L(less16bytes) 621*8d67ca89SAndroid Build Coastguard WorkerL(23bytes): 622*8d67ca89SAndroid Build Coastguard Worker mov $-23, %ebx 623*8d67ca89SAndroid Build Coastguard Worker movdqu -23(%eax), %xmm1 624*8d67ca89SAndroid Build Coastguard Worker movdqu -23(%edx), %xmm2 625*8d67ca89SAndroid Build Coastguard Worker pxor %xmm1, %xmm2 626*8d67ca89SAndroid Build Coastguard Worker ptest %xmm2, %xmm0 627*8d67ca89SAndroid Build Coastguard Worker jnc L(less16bytes) 628*8d67ca89SAndroid Build Coastguard Worker movl -7(%eax), %ecx 629*8d67ca89SAndroid Build Coastguard Worker movl -7(%edx), %ebx 630*8d67ca89SAndroid Build Coastguard Worker cmp %ebx, %ecx 631*8d67ca89SAndroid Build Coastguard Worker jne L(find_diff) 632*8d67ca89SAndroid Build Coastguard Worker movzwl -3(%eax), %ecx 633*8d67ca89SAndroid Build Coastguard Worker movzwl -3(%edx), %ebx 634*8d67ca89SAndroid Build Coastguard Worker cmpb %bl, %cl 635*8d67ca89SAndroid Build Coastguard Worker jne L(end) 636*8d67ca89SAndroid Build Coastguard Worker cmp %bx, %cx 637*8d67ca89SAndroid Build Coastguard Worker jne L(end) 638*8d67ca89SAndroid Build Coastguard Worker movzbl -1(%eax), %eax 639*8d67ca89SAndroid Build Coastguard Worker cmpb -1(%edx), %al 640*8d67ca89SAndroid Build Coastguard Worker mov $0, %eax 641*8d67ca89SAndroid Build Coastguard Worker jne L(end) 642*8d67ca89SAndroid Build Coastguard Worker RETURN 643*8d67ca89SAndroid Build Coastguard Worker#endif 644*8d67ca89SAndroid Build Coastguard Worker .p2align 4 645*8d67ca89SAndroid Build Coastguard WorkerL(56bytes): 646*8d67ca89SAndroid Build Coastguard Worker movdqu -56(%eax), %xmm1 647*8d67ca89SAndroid Build Coastguard Worker movdqu -56(%edx), %xmm2 648*8d67ca89SAndroid Build Coastguard Worker mov $-56, %ebx 649*8d67ca89SAndroid Build Coastguard Worker pxor %xmm1, %xmm2 650*8d67ca89SAndroid Build Coastguard Worker ptest %xmm2, %xmm0 651*8d67ca89SAndroid Build Coastguard Worker jnc L(less16bytes) 652*8d67ca89SAndroid Build Coastguard WorkerL(40bytes): 653*8d67ca89SAndroid Build Coastguard Worker mov $-40, %ebx 654*8d67ca89SAndroid Build Coastguard Worker movdqu -40(%eax), %xmm1 655*8d67ca89SAndroid Build Coastguard Worker movdqu -40(%edx), %xmm2 656*8d67ca89SAndroid Build Coastguard Worker pxor %xmm1, %xmm2 657*8d67ca89SAndroid Build Coastguard Worker ptest %xmm2, %xmm0 658*8d67ca89SAndroid Build Coastguard Worker jnc L(less16bytes) 659*8d67ca89SAndroid Build Coastguard WorkerL(24bytes): 660*8d67ca89SAndroid Build Coastguard Worker mov $-24, %ebx 661*8d67ca89SAndroid Build Coastguard Worker movdqu -24(%eax), %xmm1 662*8d67ca89SAndroid Build Coastguard Worker movdqu -24(%edx), %xmm2 663*8d67ca89SAndroid Build Coastguard Worker pxor %xmm1, %xmm2 664*8d67ca89SAndroid Build Coastguard Worker ptest %xmm2, %xmm0 665*8d67ca89SAndroid Build Coastguard Worker jnc L(less16bytes) 666*8d67ca89SAndroid Build Coastguard Worker 667*8d67ca89SAndroid Build Coastguard Worker mov -8(%eax), %ecx 668*8d67ca89SAndroid Build Coastguard Worker#ifndef USE_AS_WMEMCMP 669*8d67ca89SAndroid Build Coastguard Worker mov -8(%edx), %ebx 670*8d67ca89SAndroid Build Coastguard Worker cmp %ebx, %ecx 671*8d67ca89SAndroid Build Coastguard Worker#else 672*8d67ca89SAndroid Build Coastguard Worker cmp -8(%edx), %ecx 673*8d67ca89SAndroid Build Coastguard Worker#endif 674*8d67ca89SAndroid Build Coastguard Worker jne L(find_diff) 675*8d67ca89SAndroid Build Coastguard Worker 676*8d67ca89SAndroid Build Coastguard Worker mov -4(%eax), %ecx 677*8d67ca89SAndroid Build Coastguard Worker#ifndef USE_AS_WMEMCMP 678*8d67ca89SAndroid Build Coastguard Worker mov -4(%edx), %ebx 679*8d67ca89SAndroid Build Coastguard Worker cmp %ebx, %ecx 680*8d67ca89SAndroid Build Coastguard Worker#else 681*8d67ca89SAndroid Build Coastguard Worker cmp -4(%edx), %ecx 682*8d67ca89SAndroid Build Coastguard Worker#endif 683*8d67ca89SAndroid Build Coastguard Worker mov $0, %eax 684*8d67ca89SAndroid Build Coastguard Worker jne L(find_diff) 685*8d67ca89SAndroid Build Coastguard Worker RETURN 686*8d67ca89SAndroid Build Coastguard Worker 687*8d67ca89SAndroid Build Coastguard Worker#ifndef USE_AS_WMEMCMP 688*8d67ca89SAndroid Build Coastguard Worker .p2align 4 689*8d67ca89SAndroid Build Coastguard WorkerL(57bytes): 690*8d67ca89SAndroid Build Coastguard Worker movdqu -57(%eax), %xmm1 691*8d67ca89SAndroid Build Coastguard Worker movdqu -57(%edx), %xmm2 692*8d67ca89SAndroid Build Coastguard Worker mov $-57, %ebx 693*8d67ca89SAndroid Build Coastguard Worker pxor %xmm1, %xmm2 694*8d67ca89SAndroid Build Coastguard Worker ptest %xmm2, %xmm0 695*8d67ca89SAndroid Build Coastguard Worker jnc L(less16bytes) 696*8d67ca89SAndroid Build Coastguard WorkerL(41bytes): 697*8d67ca89SAndroid Build Coastguard Worker mov $-41, %ebx 698*8d67ca89SAndroid Build Coastguard Worker movdqu -41(%eax), %xmm1 699*8d67ca89SAndroid Build Coastguard Worker movdqu -41(%edx), %xmm2 700*8d67ca89SAndroid Build Coastguard Worker pxor %xmm1, %xmm2 701*8d67ca89SAndroid Build Coastguard Worker ptest %xmm2, %xmm0 702*8d67ca89SAndroid Build Coastguard Worker jnc L(less16bytes) 703*8d67ca89SAndroid Build Coastguard WorkerL(25bytes): 704*8d67ca89SAndroid Build Coastguard Worker mov $-25, %ebx 705*8d67ca89SAndroid Build Coastguard Worker movdqu -25(%eax), %xmm1 706*8d67ca89SAndroid Build Coastguard Worker movdqu -25(%edx), %xmm2 707*8d67ca89SAndroid Build Coastguard Worker pxor %xmm1, %xmm2 708*8d67ca89SAndroid Build Coastguard Worker ptest %xmm2, %xmm0 709*8d67ca89SAndroid Build Coastguard Worker jnc L(less16bytes) 710*8d67ca89SAndroid Build Coastguard Worker mov -9(%eax), %ecx 711*8d67ca89SAndroid Build Coastguard Worker mov -9(%edx), %ebx 712*8d67ca89SAndroid Build Coastguard Worker cmp %ebx, %ecx 713*8d67ca89SAndroid Build Coastguard Worker jne L(find_diff) 714*8d67ca89SAndroid Build Coastguard Worker mov -5(%eax), %ecx 715*8d67ca89SAndroid Build Coastguard Worker mov -5(%edx), %ebx 716*8d67ca89SAndroid Build Coastguard Worker cmp %ebx, %ecx 717*8d67ca89SAndroid Build Coastguard Worker jne L(find_diff) 718*8d67ca89SAndroid Build Coastguard Worker movzbl -1(%eax), %ecx 719*8d67ca89SAndroid Build Coastguard Worker cmp -1(%edx), %cl 720*8d67ca89SAndroid Build Coastguard Worker mov $0, %eax 721*8d67ca89SAndroid Build Coastguard Worker jne L(end) 722*8d67ca89SAndroid Build Coastguard Worker RETURN 723*8d67ca89SAndroid Build Coastguard Worker 724*8d67ca89SAndroid Build Coastguard Worker .p2align 4 725*8d67ca89SAndroid Build Coastguard WorkerL(58bytes): 726*8d67ca89SAndroid Build Coastguard Worker movdqu -58(%eax), %xmm1 727*8d67ca89SAndroid Build Coastguard Worker movdqu -58(%edx), %xmm2 728*8d67ca89SAndroid Build Coastguard Worker mov $-58, %ebx 729*8d67ca89SAndroid Build Coastguard Worker pxor %xmm1, %xmm2 730*8d67ca89SAndroid Build Coastguard Worker ptest %xmm2, %xmm0 731*8d67ca89SAndroid Build Coastguard Worker jnc L(less16bytes) 732*8d67ca89SAndroid Build Coastguard WorkerL(42bytes): 733*8d67ca89SAndroid Build Coastguard Worker mov $-42, %ebx 734*8d67ca89SAndroid Build Coastguard Worker movdqu -42(%eax), %xmm1 735*8d67ca89SAndroid Build Coastguard Worker movdqu -42(%edx), %xmm2 736*8d67ca89SAndroid Build Coastguard Worker pxor %xmm1, %xmm2 737*8d67ca89SAndroid Build Coastguard Worker ptest %xmm2, %xmm0 738*8d67ca89SAndroid Build Coastguard Worker jnc L(less16bytes) 739*8d67ca89SAndroid Build Coastguard WorkerL(26bytes): 740*8d67ca89SAndroid Build Coastguard Worker mov $-26, %ebx 741*8d67ca89SAndroid Build Coastguard Worker movdqu -26(%eax), %xmm1 742*8d67ca89SAndroid Build Coastguard Worker movdqu -26(%edx), %xmm2 743*8d67ca89SAndroid Build Coastguard Worker pxor %xmm1, %xmm2 744*8d67ca89SAndroid Build Coastguard Worker ptest %xmm2, %xmm0 745*8d67ca89SAndroid Build Coastguard Worker jnc L(less16bytes) 746*8d67ca89SAndroid Build Coastguard Worker 747*8d67ca89SAndroid Build Coastguard Worker mov -10(%eax), %ecx 748*8d67ca89SAndroid Build Coastguard Worker mov -10(%edx), %ebx 749*8d67ca89SAndroid Build Coastguard Worker cmp %ebx, %ecx 750*8d67ca89SAndroid Build Coastguard Worker jne L(find_diff) 751*8d67ca89SAndroid Build Coastguard Worker 752*8d67ca89SAndroid Build Coastguard Worker mov -6(%eax), %ecx 753*8d67ca89SAndroid Build Coastguard Worker mov -6(%edx), %ebx 754*8d67ca89SAndroid Build Coastguard Worker cmp %ebx, %ecx 755*8d67ca89SAndroid Build Coastguard Worker jne L(find_diff) 756*8d67ca89SAndroid Build Coastguard Worker 757*8d67ca89SAndroid Build Coastguard Worker movzwl -2(%eax), %ecx 758*8d67ca89SAndroid Build Coastguard Worker movzwl -2(%edx), %ebx 759*8d67ca89SAndroid Build Coastguard Worker cmp %bl, %cl 760*8d67ca89SAndroid Build Coastguard Worker jne L(end) 761*8d67ca89SAndroid Build Coastguard Worker cmp %bh, %ch 762*8d67ca89SAndroid Build Coastguard Worker mov $0, %eax 763*8d67ca89SAndroid Build Coastguard Worker jne L(end) 764*8d67ca89SAndroid Build Coastguard Worker RETURN 765*8d67ca89SAndroid Build Coastguard Worker 766*8d67ca89SAndroid Build Coastguard Worker .p2align 4 767*8d67ca89SAndroid Build Coastguard WorkerL(59bytes): 768*8d67ca89SAndroid Build Coastguard Worker movdqu -59(%eax), %xmm1 769*8d67ca89SAndroid Build Coastguard Worker movdqu -59(%edx), %xmm2 770*8d67ca89SAndroid Build Coastguard Worker mov $-59, %ebx 771*8d67ca89SAndroid Build Coastguard Worker pxor %xmm1, %xmm2 772*8d67ca89SAndroid Build Coastguard Worker ptest %xmm2, %xmm0 773*8d67ca89SAndroid Build Coastguard Worker jnc L(less16bytes) 774*8d67ca89SAndroid Build Coastguard WorkerL(43bytes): 775*8d67ca89SAndroid Build Coastguard Worker mov $-43, %ebx 776*8d67ca89SAndroid Build Coastguard Worker movdqu -43(%eax), %xmm1 777*8d67ca89SAndroid Build Coastguard Worker movdqu -43(%edx), %xmm2 778*8d67ca89SAndroid Build Coastguard Worker pxor %xmm1, %xmm2 779*8d67ca89SAndroid Build Coastguard Worker ptest %xmm2, %xmm0 780*8d67ca89SAndroid Build Coastguard Worker jnc L(less16bytes) 781*8d67ca89SAndroid Build Coastguard WorkerL(27bytes): 782*8d67ca89SAndroid Build Coastguard Worker mov $-27, %ebx 783*8d67ca89SAndroid Build Coastguard Worker movdqu -27(%eax), %xmm1 784*8d67ca89SAndroid Build Coastguard Worker movdqu -27(%edx), %xmm2 785*8d67ca89SAndroid Build Coastguard Worker pxor %xmm1, %xmm2 786*8d67ca89SAndroid Build Coastguard Worker ptest %xmm2, %xmm0 787*8d67ca89SAndroid Build Coastguard Worker jnc L(less16bytes) 788*8d67ca89SAndroid Build Coastguard Worker movl -11(%eax), %ecx 789*8d67ca89SAndroid Build Coastguard Worker movl -11(%edx), %ebx 790*8d67ca89SAndroid Build Coastguard Worker cmp %ebx, %ecx 791*8d67ca89SAndroid Build Coastguard Worker jne L(find_diff) 792*8d67ca89SAndroid Build Coastguard Worker movl -7(%eax), %ecx 793*8d67ca89SAndroid Build Coastguard Worker movl -7(%edx), %ebx 794*8d67ca89SAndroid Build Coastguard Worker cmp %ebx, %ecx 795*8d67ca89SAndroid Build Coastguard Worker jne L(find_diff) 796*8d67ca89SAndroid Build Coastguard Worker movzwl -3(%eax), %ecx 797*8d67ca89SAndroid Build Coastguard Worker movzwl -3(%edx), %ebx 798*8d67ca89SAndroid Build Coastguard Worker cmpb %bl, %cl 799*8d67ca89SAndroid Build Coastguard Worker jne L(end) 800*8d67ca89SAndroid Build Coastguard Worker cmp %bx, %cx 801*8d67ca89SAndroid Build Coastguard Worker jne L(end) 802*8d67ca89SAndroid Build Coastguard Worker movzbl -1(%eax), %eax 803*8d67ca89SAndroid Build Coastguard Worker cmpb -1(%edx), %al 804*8d67ca89SAndroid Build Coastguard Worker mov $0, %eax 805*8d67ca89SAndroid Build Coastguard Worker jne L(end) 806*8d67ca89SAndroid Build Coastguard Worker RETURN 807*8d67ca89SAndroid Build Coastguard Worker#endif 808*8d67ca89SAndroid Build Coastguard Worker .p2align 4 809*8d67ca89SAndroid Build Coastguard WorkerL(60bytes): 810*8d67ca89SAndroid Build Coastguard Worker movdqu -60(%eax), %xmm1 811*8d67ca89SAndroid Build Coastguard Worker movdqu -60(%edx), %xmm2 812*8d67ca89SAndroid Build Coastguard Worker mov $-60, %ebx 813*8d67ca89SAndroid Build Coastguard Worker pxor %xmm1, %xmm2 814*8d67ca89SAndroid Build Coastguard Worker ptest %xmm2, %xmm0 815*8d67ca89SAndroid Build Coastguard Worker jnc L(less16bytes) 816*8d67ca89SAndroid Build Coastguard WorkerL(44bytes): 817*8d67ca89SAndroid Build Coastguard Worker mov $-44, %ebx 818*8d67ca89SAndroid Build Coastguard Worker movdqu -44(%eax), %xmm1 819*8d67ca89SAndroid Build Coastguard Worker movdqu -44(%edx), %xmm2 820*8d67ca89SAndroid Build Coastguard Worker pxor %xmm1, %xmm2 821*8d67ca89SAndroid Build Coastguard Worker ptest %xmm2, %xmm0 822*8d67ca89SAndroid Build Coastguard Worker jnc L(less16bytes) 823*8d67ca89SAndroid Build Coastguard WorkerL(28bytes): 824*8d67ca89SAndroid Build Coastguard Worker mov $-28, %ebx 825*8d67ca89SAndroid Build Coastguard Worker movdqu -28(%eax), %xmm1 826*8d67ca89SAndroid Build Coastguard Worker movdqu -28(%edx), %xmm2 827*8d67ca89SAndroid Build Coastguard Worker pxor %xmm1, %xmm2 828*8d67ca89SAndroid Build Coastguard Worker ptest %xmm2, %xmm0 829*8d67ca89SAndroid Build Coastguard Worker jnc L(less16bytes) 830*8d67ca89SAndroid Build Coastguard Worker 831*8d67ca89SAndroid Build Coastguard Worker mov -12(%eax), %ecx 832*8d67ca89SAndroid Build Coastguard Worker#ifndef USE_AS_WMEMCMP 833*8d67ca89SAndroid Build Coastguard Worker mov -12(%edx), %ebx 834*8d67ca89SAndroid Build Coastguard Worker cmp %ebx, %ecx 835*8d67ca89SAndroid Build Coastguard Worker#else 836*8d67ca89SAndroid Build Coastguard Worker cmp -12(%edx), %ecx 837*8d67ca89SAndroid Build Coastguard Worker#endif 838*8d67ca89SAndroid Build Coastguard Worker jne L(find_diff) 839*8d67ca89SAndroid Build Coastguard Worker 840*8d67ca89SAndroid Build Coastguard Worker mov -8(%eax), %ecx 841*8d67ca89SAndroid Build Coastguard Worker#ifndef USE_AS_WMEMCMP 842*8d67ca89SAndroid Build Coastguard Worker mov -8(%edx), %ebx 843*8d67ca89SAndroid Build Coastguard Worker cmp %ebx, %ecx 844*8d67ca89SAndroid Build Coastguard Worker#else 845*8d67ca89SAndroid Build Coastguard Worker cmp -8(%edx), %ecx 846*8d67ca89SAndroid Build Coastguard Worker#endif 847*8d67ca89SAndroid Build Coastguard Worker jne L(find_diff) 848*8d67ca89SAndroid Build Coastguard Worker 849*8d67ca89SAndroid Build Coastguard Worker mov -4(%eax), %ecx 850*8d67ca89SAndroid Build Coastguard Worker#ifndef USE_AS_WMEMCMP 851*8d67ca89SAndroid Build Coastguard Worker mov -4(%edx), %ebx 852*8d67ca89SAndroid Build Coastguard Worker cmp %ebx, %ecx 853*8d67ca89SAndroid Build Coastguard Worker#else 854*8d67ca89SAndroid Build Coastguard Worker cmp -4(%edx), %ecx 855*8d67ca89SAndroid Build Coastguard Worker#endif 856*8d67ca89SAndroid Build Coastguard Worker mov $0, %eax 857*8d67ca89SAndroid Build Coastguard Worker jne L(find_diff) 858*8d67ca89SAndroid Build Coastguard Worker RETURN 859*8d67ca89SAndroid Build Coastguard Worker 860*8d67ca89SAndroid Build Coastguard Worker#ifndef USE_AS_WMEMCMP 861*8d67ca89SAndroid Build Coastguard Worker .p2align 4 862*8d67ca89SAndroid Build Coastguard WorkerL(61bytes): 863*8d67ca89SAndroid Build Coastguard Worker movdqu -61(%eax), %xmm1 864*8d67ca89SAndroid Build Coastguard Worker movdqu -61(%edx), %xmm2 865*8d67ca89SAndroid Build Coastguard Worker mov $-61, %ebx 866*8d67ca89SAndroid Build Coastguard Worker pxor %xmm1, %xmm2 867*8d67ca89SAndroid Build Coastguard Worker ptest %xmm2, %xmm0 868*8d67ca89SAndroid Build Coastguard Worker jnc L(less16bytes) 869*8d67ca89SAndroid Build Coastguard WorkerL(45bytes): 870*8d67ca89SAndroid Build Coastguard Worker mov $-45, %ebx 871*8d67ca89SAndroid Build Coastguard Worker movdqu -45(%eax), %xmm1 872*8d67ca89SAndroid Build Coastguard Worker movdqu -45(%edx), %xmm2 873*8d67ca89SAndroid Build Coastguard Worker pxor %xmm1, %xmm2 874*8d67ca89SAndroid Build Coastguard Worker ptest %xmm2, %xmm0 875*8d67ca89SAndroid Build Coastguard Worker jnc L(less16bytes) 876*8d67ca89SAndroid Build Coastguard WorkerL(29bytes): 877*8d67ca89SAndroid Build Coastguard Worker mov $-29, %ebx 878*8d67ca89SAndroid Build Coastguard Worker movdqu -29(%eax), %xmm1 879*8d67ca89SAndroid Build Coastguard Worker movdqu -29(%edx), %xmm2 880*8d67ca89SAndroid Build Coastguard Worker pxor %xmm1, %xmm2 881*8d67ca89SAndroid Build Coastguard Worker ptest %xmm2, %xmm0 882*8d67ca89SAndroid Build Coastguard Worker jnc L(less16bytes) 883*8d67ca89SAndroid Build Coastguard Worker 884*8d67ca89SAndroid Build Coastguard Worker mov -13(%eax), %ecx 885*8d67ca89SAndroid Build Coastguard Worker mov -13(%edx), %ebx 886*8d67ca89SAndroid Build Coastguard Worker cmp %ebx, %ecx 887*8d67ca89SAndroid Build Coastguard Worker jne L(find_diff) 888*8d67ca89SAndroid Build Coastguard Worker 889*8d67ca89SAndroid Build Coastguard Worker mov -9(%eax), %ecx 890*8d67ca89SAndroid Build Coastguard Worker mov -9(%edx), %ebx 891*8d67ca89SAndroid Build Coastguard Worker cmp %ebx, %ecx 892*8d67ca89SAndroid Build Coastguard Worker jne L(find_diff) 893*8d67ca89SAndroid Build Coastguard Worker 894*8d67ca89SAndroid Build Coastguard Worker mov -5(%eax), %ecx 895*8d67ca89SAndroid Build Coastguard Worker mov -5(%edx), %ebx 896*8d67ca89SAndroid Build Coastguard Worker cmp %ebx, %ecx 897*8d67ca89SAndroid Build Coastguard Worker jne L(find_diff) 898*8d67ca89SAndroid Build Coastguard Worker movzbl -1(%eax), %ecx 899*8d67ca89SAndroid Build Coastguard Worker cmp -1(%edx), %cl 900*8d67ca89SAndroid Build Coastguard Worker mov $0, %eax 901*8d67ca89SAndroid Build Coastguard Worker jne L(end) 902*8d67ca89SAndroid Build Coastguard Worker RETURN 903*8d67ca89SAndroid Build Coastguard Worker 904*8d67ca89SAndroid Build Coastguard Worker .p2align 4 905*8d67ca89SAndroid Build Coastguard WorkerL(62bytes): 906*8d67ca89SAndroid Build Coastguard Worker movdqu -62(%eax), %xmm1 907*8d67ca89SAndroid Build Coastguard Worker movdqu -62(%edx), %xmm2 908*8d67ca89SAndroid Build Coastguard Worker mov $-62, %ebx 909*8d67ca89SAndroid Build Coastguard Worker pxor %xmm1, %xmm2 910*8d67ca89SAndroid Build Coastguard Worker ptest %xmm2, %xmm0 911*8d67ca89SAndroid Build Coastguard Worker jnc L(less16bytes) 912*8d67ca89SAndroid Build Coastguard WorkerL(46bytes): 913*8d67ca89SAndroid Build Coastguard Worker mov $-46, %ebx 914*8d67ca89SAndroid Build Coastguard Worker movdqu -46(%eax), %xmm1 915*8d67ca89SAndroid Build Coastguard Worker movdqu -46(%edx), %xmm2 916*8d67ca89SAndroid Build Coastguard Worker pxor %xmm1, %xmm2 917*8d67ca89SAndroid Build Coastguard Worker ptest %xmm2, %xmm0 918*8d67ca89SAndroid Build Coastguard Worker jnc L(less16bytes) 919*8d67ca89SAndroid Build Coastguard WorkerL(30bytes): 920*8d67ca89SAndroid Build Coastguard Worker mov $-30, %ebx 921*8d67ca89SAndroid Build Coastguard Worker movdqu -30(%eax), %xmm1 922*8d67ca89SAndroid Build Coastguard Worker movdqu -30(%edx), %xmm2 923*8d67ca89SAndroid Build Coastguard Worker pxor %xmm1, %xmm2 924*8d67ca89SAndroid Build Coastguard Worker ptest %xmm2, %xmm0 925*8d67ca89SAndroid Build Coastguard Worker jnc L(less16bytes) 926*8d67ca89SAndroid Build Coastguard Worker mov -14(%eax), %ecx 927*8d67ca89SAndroid Build Coastguard Worker mov -14(%edx), %ebx 928*8d67ca89SAndroid Build Coastguard Worker cmp %ebx, %ecx 929*8d67ca89SAndroid Build Coastguard Worker jne L(find_diff) 930*8d67ca89SAndroid Build Coastguard Worker mov -10(%eax), %ecx 931*8d67ca89SAndroid Build Coastguard Worker mov -10(%edx), %ebx 932*8d67ca89SAndroid Build Coastguard Worker cmp %ebx, %ecx 933*8d67ca89SAndroid Build Coastguard Worker jne L(find_diff) 934*8d67ca89SAndroid Build Coastguard Worker mov -6(%eax), %ecx 935*8d67ca89SAndroid Build Coastguard Worker mov -6(%edx), %ebx 936*8d67ca89SAndroid Build Coastguard Worker cmp %ebx, %ecx 937*8d67ca89SAndroid Build Coastguard Worker jne L(find_diff) 938*8d67ca89SAndroid Build Coastguard Worker movzwl -2(%eax), %ecx 939*8d67ca89SAndroid Build Coastguard Worker movzwl -2(%edx), %ebx 940*8d67ca89SAndroid Build Coastguard Worker cmp %bl, %cl 941*8d67ca89SAndroid Build Coastguard Worker jne L(end) 942*8d67ca89SAndroid Build Coastguard Worker cmp %bh, %ch 943*8d67ca89SAndroid Build Coastguard Worker mov $0, %eax 944*8d67ca89SAndroid Build Coastguard Worker jne L(end) 945*8d67ca89SAndroid Build Coastguard Worker RETURN 946*8d67ca89SAndroid Build Coastguard Worker 947*8d67ca89SAndroid Build Coastguard Worker .p2align 4 948*8d67ca89SAndroid Build Coastguard WorkerL(63bytes): 949*8d67ca89SAndroid Build Coastguard Worker movdqu -63(%eax), %xmm1 950*8d67ca89SAndroid Build Coastguard Worker movdqu -63(%edx), %xmm2 951*8d67ca89SAndroid Build Coastguard Worker mov $-63, %ebx 952*8d67ca89SAndroid Build Coastguard Worker pxor %xmm1, %xmm2 953*8d67ca89SAndroid Build Coastguard Worker ptest %xmm2, %xmm0 954*8d67ca89SAndroid Build Coastguard Worker jnc L(less16bytes) 955*8d67ca89SAndroid Build Coastguard WorkerL(47bytes): 956*8d67ca89SAndroid Build Coastguard Worker mov $-47, %ebx 957*8d67ca89SAndroid Build Coastguard Worker movdqu -47(%eax), %xmm1 958*8d67ca89SAndroid Build Coastguard Worker movdqu -47(%edx), %xmm2 959*8d67ca89SAndroid Build Coastguard Worker pxor %xmm1, %xmm2 960*8d67ca89SAndroid Build Coastguard Worker ptest %xmm2, %xmm0 961*8d67ca89SAndroid Build Coastguard Worker jnc L(less16bytes) 962*8d67ca89SAndroid Build Coastguard WorkerL(31bytes): 963*8d67ca89SAndroid Build Coastguard Worker mov $-31, %ebx 964*8d67ca89SAndroid Build Coastguard Worker movdqu -31(%eax), %xmm1 965*8d67ca89SAndroid Build Coastguard Worker movdqu -31(%edx), %xmm2 966*8d67ca89SAndroid Build Coastguard Worker pxor %xmm1, %xmm2 967*8d67ca89SAndroid Build Coastguard Worker ptest %xmm2, %xmm0 968*8d67ca89SAndroid Build Coastguard Worker jnc L(less16bytes) 969*8d67ca89SAndroid Build Coastguard Worker 970*8d67ca89SAndroid Build Coastguard Worker movl -15(%eax), %ecx 971*8d67ca89SAndroid Build Coastguard Worker movl -15(%edx), %ebx 972*8d67ca89SAndroid Build Coastguard Worker cmp %ebx, %ecx 973*8d67ca89SAndroid Build Coastguard Worker jne L(find_diff) 974*8d67ca89SAndroid Build Coastguard Worker movl -11(%eax), %ecx 975*8d67ca89SAndroid Build Coastguard Worker movl -11(%edx), %ebx 976*8d67ca89SAndroid Build Coastguard Worker cmp %ebx, %ecx 977*8d67ca89SAndroid Build Coastguard Worker jne L(find_diff) 978*8d67ca89SAndroid Build Coastguard Worker movl -7(%eax), %ecx 979*8d67ca89SAndroid Build Coastguard Worker movl -7(%edx), %ebx 980*8d67ca89SAndroid Build Coastguard Worker cmp %ebx, %ecx 981*8d67ca89SAndroid Build Coastguard Worker jne L(find_diff) 982*8d67ca89SAndroid Build Coastguard Worker movzwl -3(%eax), %ecx 983*8d67ca89SAndroid Build Coastguard Worker movzwl -3(%edx), %ebx 984*8d67ca89SAndroid Build Coastguard Worker cmpb %bl, %cl 985*8d67ca89SAndroid Build Coastguard Worker jne L(end) 986*8d67ca89SAndroid Build Coastguard Worker cmp %bx, %cx 987*8d67ca89SAndroid Build Coastguard Worker jne L(end) 988*8d67ca89SAndroid Build Coastguard Worker movzbl -1(%eax), %eax 989*8d67ca89SAndroid Build Coastguard Worker cmpb -1(%edx), %al 990*8d67ca89SAndroid Build Coastguard Worker mov $0, %eax 991*8d67ca89SAndroid Build Coastguard Worker jne L(end) 992*8d67ca89SAndroid Build Coastguard Worker RETURN 993*8d67ca89SAndroid Build Coastguard Worker#endif 994*8d67ca89SAndroid Build Coastguard Worker 995*8d67ca89SAndroid Build Coastguard Worker .p2align 4 996*8d67ca89SAndroid Build Coastguard WorkerL(64bytes): 997*8d67ca89SAndroid Build Coastguard Worker movdqu -64(%eax), %xmm1 998*8d67ca89SAndroid Build Coastguard Worker movdqu -64(%edx), %xmm2 999*8d67ca89SAndroid Build Coastguard Worker mov $-64, %ebx 1000*8d67ca89SAndroid Build Coastguard Worker pxor %xmm1, %xmm2 1001*8d67ca89SAndroid Build Coastguard Worker ptest %xmm2, %xmm0 1002*8d67ca89SAndroid Build Coastguard Worker jnc L(less16bytes) 1003*8d67ca89SAndroid Build Coastguard WorkerL(48bytes): 1004*8d67ca89SAndroid Build Coastguard Worker movdqu -48(%eax), %xmm1 1005*8d67ca89SAndroid Build Coastguard Worker movdqu -48(%edx), %xmm2 1006*8d67ca89SAndroid Build Coastguard Worker mov $-48, %ebx 1007*8d67ca89SAndroid Build Coastguard Worker pxor %xmm1, %xmm2 1008*8d67ca89SAndroid Build Coastguard Worker ptest %xmm2, %xmm0 1009*8d67ca89SAndroid Build Coastguard Worker jnc L(less16bytes) 1010*8d67ca89SAndroid Build Coastguard WorkerL(32bytes): 1011*8d67ca89SAndroid Build Coastguard Worker movdqu -32(%eax), %xmm1 1012*8d67ca89SAndroid Build Coastguard Worker movdqu -32(%edx), %xmm2 1013*8d67ca89SAndroid Build Coastguard Worker mov $-32, %ebx 1014*8d67ca89SAndroid Build Coastguard Worker pxor %xmm1, %xmm2 1015*8d67ca89SAndroid Build Coastguard Worker ptest %xmm2, %xmm0 1016*8d67ca89SAndroid Build Coastguard Worker jnc L(less16bytes) 1017*8d67ca89SAndroid Build Coastguard Worker 1018*8d67ca89SAndroid Build Coastguard Worker mov -16(%eax), %ecx 1019*8d67ca89SAndroid Build Coastguard Worker#ifndef USE_AS_WMEMCMP 1020*8d67ca89SAndroid Build Coastguard Worker mov -16(%edx), %ebx 1021*8d67ca89SAndroid Build Coastguard Worker cmp %ebx, %ecx 1022*8d67ca89SAndroid Build Coastguard Worker#else 1023*8d67ca89SAndroid Build Coastguard Worker cmp -16(%edx), %ecx 1024*8d67ca89SAndroid Build Coastguard Worker#endif 1025*8d67ca89SAndroid Build Coastguard Worker jne L(find_diff) 1026*8d67ca89SAndroid Build Coastguard Worker 1027*8d67ca89SAndroid Build Coastguard Worker mov -12(%eax), %ecx 1028*8d67ca89SAndroid Build Coastguard Worker#ifndef USE_AS_WMEMCMP 1029*8d67ca89SAndroid Build Coastguard Worker mov -12(%edx), %ebx 1030*8d67ca89SAndroid Build Coastguard Worker cmp %ebx, %ecx 1031*8d67ca89SAndroid Build Coastguard Worker#else 1032*8d67ca89SAndroid Build Coastguard Worker cmp -12(%edx), %ecx 1033*8d67ca89SAndroid Build Coastguard Worker#endif 1034*8d67ca89SAndroid Build Coastguard Worker jne L(find_diff) 1035*8d67ca89SAndroid Build Coastguard Worker 1036*8d67ca89SAndroid Build Coastguard Worker mov -8(%eax), %ecx 1037*8d67ca89SAndroid Build Coastguard Worker#ifndef USE_AS_WMEMCMP 1038*8d67ca89SAndroid Build Coastguard Worker mov -8(%edx), %ebx 1039*8d67ca89SAndroid Build Coastguard Worker cmp %ebx, %ecx 1040*8d67ca89SAndroid Build Coastguard Worker#else 1041*8d67ca89SAndroid Build Coastguard Worker cmp -8(%edx), %ecx 1042*8d67ca89SAndroid Build Coastguard Worker#endif 1043*8d67ca89SAndroid Build Coastguard Worker jne L(find_diff) 1044*8d67ca89SAndroid Build Coastguard Worker 1045*8d67ca89SAndroid Build Coastguard Worker mov -4(%eax), %ecx 1046*8d67ca89SAndroid Build Coastguard Worker#ifndef USE_AS_WMEMCMP 1047*8d67ca89SAndroid Build Coastguard Worker mov -4(%edx), %ebx 1048*8d67ca89SAndroid Build Coastguard Worker cmp %ebx, %ecx 1049*8d67ca89SAndroid Build Coastguard Worker#else 1050*8d67ca89SAndroid Build Coastguard Worker cmp -4(%edx), %ecx 1051*8d67ca89SAndroid Build Coastguard Worker#endif 1052*8d67ca89SAndroid Build Coastguard Worker mov $0, %eax 1053*8d67ca89SAndroid Build Coastguard Worker jne L(find_diff) 1054*8d67ca89SAndroid Build Coastguard Worker RETURN 1055*8d67ca89SAndroid Build Coastguard Worker 1056*8d67ca89SAndroid Build Coastguard Worker#ifndef USE_AS_WMEMCMP 1057*8d67ca89SAndroid Build Coastguard Worker .p2align 4 1058*8d67ca89SAndroid Build Coastguard WorkerL(less16bytes): 1059*8d67ca89SAndroid Build Coastguard Worker add %ebx, %eax 1060*8d67ca89SAndroid Build Coastguard Worker add %ebx, %edx 1061*8d67ca89SAndroid Build Coastguard Worker 1062*8d67ca89SAndroid Build Coastguard Worker mov (%eax), %ecx 1063*8d67ca89SAndroid Build Coastguard Worker mov (%edx), %ebx 1064*8d67ca89SAndroid Build Coastguard Worker cmp %ebx, %ecx 1065*8d67ca89SAndroid Build Coastguard Worker jne L(find_diff) 1066*8d67ca89SAndroid Build Coastguard Worker 1067*8d67ca89SAndroid Build Coastguard Worker mov 4(%eax), %ecx 1068*8d67ca89SAndroid Build Coastguard Worker mov 4(%edx), %ebx 1069*8d67ca89SAndroid Build Coastguard Worker cmp %ebx, %ecx 1070*8d67ca89SAndroid Build Coastguard Worker jne L(find_diff) 1071*8d67ca89SAndroid Build Coastguard Worker 1072*8d67ca89SAndroid Build Coastguard Worker mov 8(%eax), %ecx 1073*8d67ca89SAndroid Build Coastguard Worker mov 8(%edx), %ebx 1074*8d67ca89SAndroid Build Coastguard Worker cmp %ebx, %ecx 1075*8d67ca89SAndroid Build Coastguard Worker jne L(find_diff) 1076*8d67ca89SAndroid Build Coastguard Worker 1077*8d67ca89SAndroid Build Coastguard Worker mov 12(%eax), %ecx 1078*8d67ca89SAndroid Build Coastguard Worker mov 12(%edx), %ebx 1079*8d67ca89SAndroid Build Coastguard Worker cmp %ebx, %ecx 1080*8d67ca89SAndroid Build Coastguard Worker mov $0, %eax 1081*8d67ca89SAndroid Build Coastguard Worker jne L(find_diff) 1082*8d67ca89SAndroid Build Coastguard Worker RETURN 1083*8d67ca89SAndroid Build Coastguard Worker#else 1084*8d67ca89SAndroid Build Coastguard Worker .p2align 4 1085*8d67ca89SAndroid Build Coastguard WorkerL(less16bytes): 1086*8d67ca89SAndroid Build Coastguard Worker add %ebx, %eax 1087*8d67ca89SAndroid Build Coastguard Worker add %ebx, %edx 1088*8d67ca89SAndroid Build Coastguard Worker 1089*8d67ca89SAndroid Build Coastguard Worker mov (%eax), %ecx 1090*8d67ca89SAndroid Build Coastguard Worker cmp (%edx), %ecx 1091*8d67ca89SAndroid Build Coastguard Worker jne L(find_diff) 1092*8d67ca89SAndroid Build Coastguard Worker 1093*8d67ca89SAndroid Build Coastguard Worker mov 4(%eax), %ecx 1094*8d67ca89SAndroid Build Coastguard Worker cmp 4(%edx), %ecx 1095*8d67ca89SAndroid Build Coastguard Worker jne L(find_diff) 1096*8d67ca89SAndroid Build Coastguard Worker 1097*8d67ca89SAndroid Build Coastguard Worker mov 8(%eax), %ecx 1098*8d67ca89SAndroid Build Coastguard Worker cmp 8(%edx), %ecx 1099*8d67ca89SAndroid Build Coastguard Worker jne L(find_diff) 1100*8d67ca89SAndroid Build Coastguard Worker 1101*8d67ca89SAndroid Build Coastguard Worker mov 12(%eax), %ecx 1102*8d67ca89SAndroid Build Coastguard Worker cmp 12(%edx), %ecx 1103*8d67ca89SAndroid Build Coastguard Worker 1104*8d67ca89SAndroid Build Coastguard Worker mov $0, %eax 1105*8d67ca89SAndroid Build Coastguard Worker jne L(find_diff) 1106*8d67ca89SAndroid Build Coastguard Worker RETURN 1107*8d67ca89SAndroid Build Coastguard Worker#endif 1108*8d67ca89SAndroid Build Coastguard Worker 1109*8d67ca89SAndroid Build Coastguard Worker .p2align 4 1110*8d67ca89SAndroid Build Coastguard WorkerL(find_diff): 1111*8d67ca89SAndroid Build Coastguard Worker#ifndef USE_AS_WMEMCMP 1112*8d67ca89SAndroid Build Coastguard Worker cmpb %bl, %cl 1113*8d67ca89SAndroid Build Coastguard Worker jne L(end) 1114*8d67ca89SAndroid Build Coastguard Worker cmp %bx, %cx 1115*8d67ca89SAndroid Build Coastguard Worker jne L(end) 1116*8d67ca89SAndroid Build Coastguard Worker shr $16,%ecx 1117*8d67ca89SAndroid Build Coastguard Worker shr $16,%ebx 1118*8d67ca89SAndroid Build Coastguard Worker cmp %bl, %cl 1119*8d67ca89SAndroid Build Coastguard Worker jne L(end) 1120*8d67ca89SAndroid Build Coastguard Worker cmp %bx, %cx 1121*8d67ca89SAndroid Build Coastguard WorkerL(end): 1122*8d67ca89SAndroid Build Coastguard Worker POP (%ebx) 1123*8d67ca89SAndroid Build Coastguard Worker mov $1, %eax 1124*8d67ca89SAndroid Build Coastguard Worker ja L(bigger) 1125*8d67ca89SAndroid Build Coastguard Worker neg %eax 1126*8d67ca89SAndroid Build Coastguard WorkerL(bigger): 1127*8d67ca89SAndroid Build Coastguard Worker ret 1128*8d67ca89SAndroid Build Coastguard Worker#else 1129*8d67ca89SAndroid Build Coastguard Worker POP (%ebx) 1130*8d67ca89SAndroid Build Coastguard Worker mov $1, %eax 1131*8d67ca89SAndroid Build Coastguard Worker jg L(bigger) 1132*8d67ca89SAndroid Build Coastguard Worker neg %eax 1133*8d67ca89SAndroid Build Coastguard Worker ret 1134*8d67ca89SAndroid Build Coastguard Worker 1135*8d67ca89SAndroid Build Coastguard Worker .p2align 4 1136*8d67ca89SAndroid Build Coastguard WorkerL(bigger): 1137*8d67ca89SAndroid Build Coastguard Worker ret 1138*8d67ca89SAndroid Build Coastguard Worker#endif 1139*8d67ca89SAndroid Build Coastguard WorkerEND (MEMCMP) 1140*8d67ca89SAndroid Build Coastguard Worker 1141*8d67ca89SAndroid Build Coastguard Worker .section .rodata.sse4.2,"a",@progbits 1142*8d67ca89SAndroid Build Coastguard Worker .p2align 2 1143*8d67ca89SAndroid Build Coastguard Worker .type L(table_64bytes), @object 1144*8d67ca89SAndroid Build Coastguard Worker#ifndef USE_AS_WMEMCMP 1145*8d67ca89SAndroid Build Coastguard WorkerL(table_64bytes): 1146*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(0bytes), L(table_64bytes)) 1147*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(1bytes), L(table_64bytes)) 1148*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(2bytes), L(table_64bytes)) 1149*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(3bytes), L(table_64bytes)) 1150*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(4bytes), L(table_64bytes)) 1151*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(5bytes), L(table_64bytes)) 1152*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(6bytes), L(table_64bytes)) 1153*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(7bytes), L(table_64bytes)) 1154*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(8bytes), L(table_64bytes)) 1155*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(9bytes), L(table_64bytes)) 1156*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(10bytes), L(table_64bytes)) 1157*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(11bytes), L(table_64bytes)) 1158*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(12bytes), L(table_64bytes)) 1159*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(13bytes), L(table_64bytes)) 1160*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(14bytes), L(table_64bytes)) 1161*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(15bytes), L(table_64bytes)) 1162*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(16bytes), L(table_64bytes)) 1163*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(17bytes), L(table_64bytes)) 1164*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(18bytes), L(table_64bytes)) 1165*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(19bytes), L(table_64bytes)) 1166*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(20bytes), L(table_64bytes)) 1167*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(21bytes), L(table_64bytes)) 1168*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(22bytes), L(table_64bytes)) 1169*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(23bytes), L(table_64bytes)) 1170*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(24bytes), L(table_64bytes)) 1171*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(25bytes), L(table_64bytes)) 1172*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(26bytes), L(table_64bytes)) 1173*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(27bytes), L(table_64bytes)) 1174*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(28bytes), L(table_64bytes)) 1175*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(29bytes), L(table_64bytes)) 1176*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(30bytes), L(table_64bytes)) 1177*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(31bytes), L(table_64bytes)) 1178*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(32bytes), L(table_64bytes)) 1179*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(33bytes), L(table_64bytes)) 1180*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(34bytes), L(table_64bytes)) 1181*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(35bytes), L(table_64bytes)) 1182*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(36bytes), L(table_64bytes)) 1183*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(37bytes), L(table_64bytes)) 1184*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(38bytes), L(table_64bytes)) 1185*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(39bytes), L(table_64bytes)) 1186*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(40bytes), L(table_64bytes)) 1187*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(41bytes), L(table_64bytes)) 1188*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(42bytes), L(table_64bytes)) 1189*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(43bytes), L(table_64bytes)) 1190*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(44bytes), L(table_64bytes)) 1191*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(45bytes), L(table_64bytes)) 1192*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(46bytes), L(table_64bytes)) 1193*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(47bytes), L(table_64bytes)) 1194*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(48bytes), L(table_64bytes)) 1195*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(49bytes), L(table_64bytes)) 1196*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(50bytes), L(table_64bytes)) 1197*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(51bytes), L(table_64bytes)) 1198*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(52bytes), L(table_64bytes)) 1199*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(53bytes), L(table_64bytes)) 1200*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(54bytes), L(table_64bytes)) 1201*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(55bytes), L(table_64bytes)) 1202*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(56bytes), L(table_64bytes)) 1203*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(57bytes), L(table_64bytes)) 1204*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(58bytes), L(table_64bytes)) 1205*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(59bytes), L(table_64bytes)) 1206*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(60bytes), L(table_64bytes)) 1207*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(61bytes), L(table_64bytes)) 1208*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(62bytes), L(table_64bytes)) 1209*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(63bytes), L(table_64bytes)) 1210*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(64bytes), L(table_64bytes)) 1211*8d67ca89SAndroid Build Coastguard Worker#else 1212*8d67ca89SAndroid Build Coastguard WorkerL(table_64bytes): 1213*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(0bytes), L(table_64bytes)) 1214*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(unreal_case), L(table_64bytes)) 1215*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(unreal_case), L(table_64bytes)) 1216*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(unreal_case), L(table_64bytes)) 1217*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(4bytes), L(table_64bytes)) 1218*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(unreal_case), L(table_64bytes)) 1219*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(unreal_case), L(table_64bytes)) 1220*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(unreal_case), L(table_64bytes)) 1221*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(8bytes), L(table_64bytes)) 1222*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(unreal_case), L(table_64bytes)) 1223*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(unreal_case), L(table_64bytes)) 1224*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(unreal_case), L(table_64bytes)) 1225*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(12bytes), L(table_64bytes)) 1226*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(unreal_case), L(table_64bytes)) 1227*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(unreal_case), L(table_64bytes)) 1228*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(unreal_case), L(table_64bytes)) 1229*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(16bytes), L(table_64bytes)) 1230*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(unreal_case), L(table_64bytes)) 1231*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(unreal_case), L(table_64bytes)) 1232*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(unreal_case), L(table_64bytes)) 1233*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(20bytes), L(table_64bytes)) 1234*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(unreal_case), L(table_64bytes)) 1235*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(unreal_case), L(table_64bytes)) 1236*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(unreal_case), L(table_64bytes)) 1237*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(24bytes), L(table_64bytes)) 1238*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(unreal_case), L(table_64bytes)) 1239*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(unreal_case), L(table_64bytes)) 1240*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(unreal_case), L(table_64bytes)) 1241*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(28bytes), L(table_64bytes)) 1242*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(unreal_case), L(table_64bytes)) 1243*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(unreal_case), L(table_64bytes)) 1244*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(unreal_case), L(table_64bytes)) 1245*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(32bytes), L(table_64bytes)) 1246*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(unreal_case), L(table_64bytes)) 1247*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(unreal_case), L(table_64bytes)) 1248*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(unreal_case), L(table_64bytes)) 1249*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(36bytes), L(table_64bytes)) 1250*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(unreal_case), L(table_64bytes)) 1251*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(unreal_case), L(table_64bytes)) 1252*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(unreal_case), L(table_64bytes)) 1253*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(40bytes), L(table_64bytes)) 1254*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(unreal_case), L(table_64bytes)) 1255*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(unreal_case), L(table_64bytes)) 1256*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(unreal_case), L(table_64bytes)) 1257*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(44bytes), L(table_64bytes)) 1258*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(unreal_case), L(table_64bytes)) 1259*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(unreal_case), L(table_64bytes)) 1260*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(unreal_case), L(table_64bytes)) 1261*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(48bytes), L(table_64bytes)) 1262*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(unreal_case), L(table_64bytes)) 1263*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(unreal_case), L(table_64bytes)) 1264*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(unreal_case), L(table_64bytes)) 1265*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(52bytes), L(table_64bytes)) 1266*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(unreal_case), L(table_64bytes)) 1267*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(unreal_case), L(table_64bytes)) 1268*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(unreal_case), L(table_64bytes)) 1269*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(56bytes), L(table_64bytes)) 1270*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(unreal_case), L(table_64bytes)) 1271*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(unreal_case), L(table_64bytes)) 1272*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(unreal_case), L(table_64bytes)) 1273*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(60bytes), L(table_64bytes)) 1274*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(unreal_case), L(table_64bytes)) 1275*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(unreal_case), L(table_64bytes)) 1276*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(unreal_case), L(table_64bytes)) 1277*8d67ca89SAndroid Build Coastguard Worker .int JMPTBL (L(64bytes), L(table_64bytes)) 1278*8d67ca89SAndroid Build Coastguard Worker#endif 1279