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