1*8d67ca89SAndroid Build Coastguard Worker/* 2*8d67ca89SAndroid Build Coastguard WorkerCopyright (c) 2011, Intel Corporation 3*8d67ca89SAndroid Build Coastguard WorkerAll rights reserved. 4*8d67ca89SAndroid Build Coastguard Worker 5*8d67ca89SAndroid Build Coastguard WorkerRedistribution and use in source and binary forms, with or without 6*8d67ca89SAndroid Build Coastguard Workermodification, are permitted provided that the following conditions are met: 7*8d67ca89SAndroid Build Coastguard Worker 8*8d67ca89SAndroid Build Coastguard Worker * Redistributions of source code must retain the above copyright notice, 9*8d67ca89SAndroid Build Coastguard Worker * this list of conditions and the following disclaimer. 10*8d67ca89SAndroid Build Coastguard Worker 11*8d67ca89SAndroid Build Coastguard Worker * Redistributions in binary form must reproduce the above copyright notice, 12*8d67ca89SAndroid Build Coastguard Worker * this list of conditions and the following disclaimer in the documentation 13*8d67ca89SAndroid Build Coastguard Worker * and/or other materials provided with the distribution. 14*8d67ca89SAndroid Build Coastguard Worker 15*8d67ca89SAndroid Build Coastguard Worker * Neither the name of Intel Corporation nor the names of its contributors 16*8d67ca89SAndroid Build Coastguard Worker * may be used to endorse or promote products derived from this software 17*8d67ca89SAndroid Build Coastguard Worker * without specific prior written permission. 18*8d67ca89SAndroid Build Coastguard Worker 19*8d67ca89SAndroid Build Coastguard WorkerTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 20*8d67ca89SAndroid Build Coastguard WorkerANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 21*8d67ca89SAndroid Build Coastguard WorkerWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 22*8d67ca89SAndroid Build Coastguard WorkerDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR 23*8d67ca89SAndroid Build Coastguard WorkerANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 24*8d67ca89SAndroid Build Coastguard Worker(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 25*8d67ca89SAndroid Build Coastguard WorkerLOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON 26*8d67ca89SAndroid Build Coastguard WorkerANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 27*8d67ca89SAndroid Build Coastguard Worker(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 28*8d67ca89SAndroid Build Coastguard WorkerSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 29*8d67ca89SAndroid Build Coastguard Worker*/ 30*8d67ca89SAndroid Build Coastguard Worker 31*8d67ca89SAndroid Build Coastguard Worker#ifndef L 32*8d67ca89SAndroid Build Coastguard Worker# define L(label) .L##label 33*8d67ca89SAndroid Build Coastguard Worker#endif 34*8d67ca89SAndroid Build Coastguard Worker 35*8d67ca89SAndroid Build Coastguard Worker#ifndef cfi_startproc 36*8d67ca89SAndroid Build Coastguard Worker# define cfi_startproc .cfi_startproc 37*8d67ca89SAndroid Build Coastguard Worker#endif 38*8d67ca89SAndroid Build Coastguard Worker 39*8d67ca89SAndroid Build Coastguard Worker#ifndef cfi_endproc 40*8d67ca89SAndroid Build Coastguard Worker# define cfi_endproc .cfi_endproc 41*8d67ca89SAndroid Build Coastguard Worker#endif 42*8d67ca89SAndroid Build Coastguard Worker 43*8d67ca89SAndroid Build Coastguard Worker#ifndef cfi_rel_offset 44*8d67ca89SAndroid Build Coastguard Worker# define cfi_rel_offset(reg, off) .cfi_rel_offset reg, off 45*8d67ca89SAndroid Build Coastguard Worker#endif 46*8d67ca89SAndroid Build Coastguard Worker 47*8d67ca89SAndroid Build Coastguard Worker#ifndef cfi_restore 48*8d67ca89SAndroid Build Coastguard Worker# define cfi_restore(reg) .cfi_restore reg 49*8d67ca89SAndroid Build Coastguard Worker#endif 50*8d67ca89SAndroid Build Coastguard Worker 51*8d67ca89SAndroid Build Coastguard Worker#ifndef cfi_adjust_cfa_offset 52*8d67ca89SAndroid Build Coastguard Worker# define cfi_adjust_cfa_offset(off) .cfi_adjust_cfa_offset off 53*8d67ca89SAndroid Build Coastguard Worker#endif 54*8d67ca89SAndroid Build Coastguard Worker 55*8d67ca89SAndroid Build Coastguard Worker#ifndef cfi_remember_state 56*8d67ca89SAndroid Build Coastguard Worker# define cfi_remember_state .cfi_remember_state 57*8d67ca89SAndroid Build Coastguard Worker#endif 58*8d67ca89SAndroid Build Coastguard Worker 59*8d67ca89SAndroid Build Coastguard Worker#ifndef cfi_restore_state 60*8d67ca89SAndroid Build Coastguard Worker# define cfi_restore_state .cfi_restore_state 61*8d67ca89SAndroid Build Coastguard Worker#endif 62*8d67ca89SAndroid Build Coastguard Worker 63*8d67ca89SAndroid Build Coastguard Worker#ifndef ENTRY 64*8d67ca89SAndroid Build Coastguard Worker# define ENTRY(name) \ 65*8d67ca89SAndroid Build Coastguard Worker .type name, @function; \ 66*8d67ca89SAndroid Build Coastguard Worker .globl name; \ 67*8d67ca89SAndroid Build Coastguard Worker .p2align 4; \ 68*8d67ca89SAndroid Build Coastguard Workername: \ 69*8d67ca89SAndroid Build Coastguard Worker cfi_startproc 70*8d67ca89SAndroid Build Coastguard Worker#endif 71*8d67ca89SAndroid Build Coastguard Worker 72*8d67ca89SAndroid Build Coastguard Worker#ifndef END 73*8d67ca89SAndroid Build Coastguard Worker# define END(name) \ 74*8d67ca89SAndroid Build Coastguard Worker cfi_endproc; \ 75*8d67ca89SAndroid Build Coastguard Worker .size name, .-name 76*8d67ca89SAndroid Build Coastguard Worker#endif 77*8d67ca89SAndroid Build Coastguard Worker 78*8d67ca89SAndroid Build Coastguard Worker#define CFI_PUSH(REG) \ 79*8d67ca89SAndroid Build Coastguard Worker cfi_adjust_cfa_offset (4); \ 80*8d67ca89SAndroid Build Coastguard Worker cfi_rel_offset (REG, 0) 81*8d67ca89SAndroid Build Coastguard Worker 82*8d67ca89SAndroid Build Coastguard Worker#define CFI_POP(REG) \ 83*8d67ca89SAndroid Build Coastguard Worker cfi_adjust_cfa_offset (-4); \ 84*8d67ca89SAndroid Build Coastguard Worker cfi_restore (REG) 85*8d67ca89SAndroid Build Coastguard Worker 86*8d67ca89SAndroid Build Coastguard Worker#define PUSH(REG) pushl REG; CFI_PUSH (REG) 87*8d67ca89SAndroid Build Coastguard Worker#define POP(REG) popl REG; CFI_POP (REG) 88*8d67ca89SAndroid Build Coastguard Worker 89*8d67ca89SAndroid Build Coastguard Worker#ifndef STRCAT 90*8d67ca89SAndroid Build Coastguard Worker# define STRCAT strcat 91*8d67ca89SAndroid Build Coastguard Worker#endif 92*8d67ca89SAndroid Build Coastguard Worker 93*8d67ca89SAndroid Build Coastguard Worker#define PARMS 4 94*8d67ca89SAndroid Build Coastguard Worker#define STR1 PARMS+4 95*8d67ca89SAndroid Build Coastguard Worker#define STR2 STR1+4 96*8d67ca89SAndroid Build Coastguard Worker 97*8d67ca89SAndroid Build Coastguard Worker#ifdef USE_AS_STRNCAT 98*8d67ca89SAndroid Build Coastguard Worker# define LEN STR2+8 99*8d67ca89SAndroid Build Coastguard Worker#endif 100*8d67ca89SAndroid Build Coastguard Worker 101*8d67ca89SAndroid Build Coastguard Worker#define USE_AS_STRCAT 102*8d67ca89SAndroid Build Coastguard Worker 103*8d67ca89SAndroid Build Coastguard Worker .section .text.ssse3,"ax",@progbits 104*8d67ca89SAndroid Build Coastguard WorkerENTRY (STRCAT) 105*8d67ca89SAndroid Build Coastguard Worker PUSH (%edi) 106*8d67ca89SAndroid Build Coastguard Worker mov STR1(%esp), %edi 107*8d67ca89SAndroid Build Coastguard Worker mov %edi, %edx 108*8d67ca89SAndroid Build Coastguard Worker 109*8d67ca89SAndroid Build Coastguard Worker#define RETURN jmp L(StrcpyAtom) 110*8d67ca89SAndroid Build Coastguard Worker#include "sse2-strlen-atom.S" 111*8d67ca89SAndroid Build Coastguard Worker 112*8d67ca89SAndroid Build Coastguard WorkerL(StrcpyAtom): 113*8d67ca89SAndroid Build Coastguard Worker mov STR2(%esp), %ecx 114*8d67ca89SAndroid Build Coastguard Worker lea (%edi, %eax), %edx 115*8d67ca89SAndroid Build Coastguard Worker#ifdef USE_AS_STRNCAT 116*8d67ca89SAndroid Build Coastguard Worker PUSH (%ebx) 117*8d67ca89SAndroid Build Coastguard Worker mov LEN(%esp), %ebx 118*8d67ca89SAndroid Build Coastguard Worker test %ebx, %ebx 119*8d67ca89SAndroid Build Coastguard Worker jz L(StrncatExit0) 120*8d67ca89SAndroid Build Coastguard Worker cmp $8, %ebx 121*8d67ca89SAndroid Build Coastguard Worker jbe L(StrncpyExit8Bytes) 122*8d67ca89SAndroid Build Coastguard Worker#endif 123*8d67ca89SAndroid Build Coastguard Worker cmpb $0, (%ecx) 124*8d67ca89SAndroid Build Coastguard Worker jz L(Exit1) 125*8d67ca89SAndroid Build Coastguard Worker cmpb $0, 1(%ecx) 126*8d67ca89SAndroid Build Coastguard Worker jz L(Exit2) 127*8d67ca89SAndroid Build Coastguard Worker cmpb $0, 2(%ecx) 128*8d67ca89SAndroid Build Coastguard Worker jz L(Exit3) 129*8d67ca89SAndroid Build Coastguard Worker cmpb $0, 3(%ecx) 130*8d67ca89SAndroid Build Coastguard Worker jz L(Exit4) 131*8d67ca89SAndroid Build Coastguard Worker cmpb $0, 4(%ecx) 132*8d67ca89SAndroid Build Coastguard Worker jz L(Exit5) 133*8d67ca89SAndroid Build Coastguard Worker cmpb $0, 5(%ecx) 134*8d67ca89SAndroid Build Coastguard Worker jz L(Exit6) 135*8d67ca89SAndroid Build Coastguard Worker cmpb $0, 6(%ecx) 136*8d67ca89SAndroid Build Coastguard Worker jz L(Exit7) 137*8d67ca89SAndroid Build Coastguard Worker cmpb $0, 7(%ecx) 138*8d67ca89SAndroid Build Coastguard Worker jz L(Exit8) 139*8d67ca89SAndroid Build Coastguard Worker cmpb $0, 8(%ecx) 140*8d67ca89SAndroid Build Coastguard Worker jz L(Exit9) 141*8d67ca89SAndroid Build Coastguard Worker#ifdef USE_AS_STRNCAT 142*8d67ca89SAndroid Build Coastguard Worker cmp $16, %ebx 143*8d67ca89SAndroid Build Coastguard Worker jb L(StrncpyExit15Bytes) 144*8d67ca89SAndroid Build Coastguard Worker#endif 145*8d67ca89SAndroid Build Coastguard Worker cmpb $0, 9(%ecx) 146*8d67ca89SAndroid Build Coastguard Worker jz L(Exit10) 147*8d67ca89SAndroid Build Coastguard Worker cmpb $0, 10(%ecx) 148*8d67ca89SAndroid Build Coastguard Worker jz L(Exit11) 149*8d67ca89SAndroid Build Coastguard Worker cmpb $0, 11(%ecx) 150*8d67ca89SAndroid Build Coastguard Worker jz L(Exit12) 151*8d67ca89SAndroid Build Coastguard Worker cmpb $0, 12(%ecx) 152*8d67ca89SAndroid Build Coastguard Worker jz L(Exit13) 153*8d67ca89SAndroid Build Coastguard Worker cmpb $0, 13(%ecx) 154*8d67ca89SAndroid Build Coastguard Worker jz L(Exit14) 155*8d67ca89SAndroid Build Coastguard Worker cmpb $0, 14(%ecx) 156*8d67ca89SAndroid Build Coastguard Worker jz L(Exit15) 157*8d67ca89SAndroid Build Coastguard Worker cmpb $0, 15(%ecx) 158*8d67ca89SAndroid Build Coastguard Worker jz L(Exit16) 159*8d67ca89SAndroid Build Coastguard Worker#ifdef USE_AS_STRNCAT 160*8d67ca89SAndroid Build Coastguard Worker cmp $16, %ebx 161*8d67ca89SAndroid Build Coastguard Worker je L(StrncatExit16) 162*8d67ca89SAndroid Build Coastguard Worker 163*8d67ca89SAndroid Build Coastguard Worker# define RETURN1 POP (%ebx); POP (%edi); ret; \ 164*8d67ca89SAndroid Build Coastguard Worker CFI_PUSH (%ebx); CFI_PUSH (%edi) 165*8d67ca89SAndroid Build Coastguard Worker# define USE_AS_STRNCPY 166*8d67ca89SAndroid Build Coastguard Worker#else 167*8d67ca89SAndroid Build Coastguard Worker# define RETURN1 POP(%edi); ret; CFI_PUSH(%edi) 168*8d67ca89SAndroid Build Coastguard Worker#endif 169*8d67ca89SAndroid Build Coastguard Worker#include "ssse3-strcpy-atom.S" 170*8d67ca89SAndroid Build Coastguard Worker 171*8d67ca89SAndroid Build Coastguard Worker .p2align 4 172*8d67ca89SAndroid Build Coastguard WorkerL(CopyFrom1To16Bytes): 173*8d67ca89SAndroid Build Coastguard Worker add %esi, %edx 174*8d67ca89SAndroid Build Coastguard Worker add %esi, %ecx 175*8d67ca89SAndroid Build Coastguard Worker 176*8d67ca89SAndroid Build Coastguard Worker POP (%esi) 177*8d67ca89SAndroid Build Coastguard Worker test %al, %al 178*8d67ca89SAndroid Build Coastguard Worker jz L(ExitHigh) 179*8d67ca89SAndroid Build Coastguard Worker test $0x01, %al 180*8d67ca89SAndroid Build Coastguard Worker jnz L(Exit1) 181*8d67ca89SAndroid Build Coastguard Worker test $0x02, %al 182*8d67ca89SAndroid Build Coastguard Worker jnz L(Exit2) 183*8d67ca89SAndroid Build Coastguard Worker test $0x04, %al 184*8d67ca89SAndroid Build Coastguard Worker jnz L(Exit3) 185*8d67ca89SAndroid Build Coastguard Worker test $0x08, %al 186*8d67ca89SAndroid Build Coastguard Worker jnz L(Exit4) 187*8d67ca89SAndroid Build Coastguard Worker test $0x10, %al 188*8d67ca89SAndroid Build Coastguard Worker jnz L(Exit5) 189*8d67ca89SAndroid Build Coastguard Worker test $0x20, %al 190*8d67ca89SAndroid Build Coastguard Worker jnz L(Exit6) 191*8d67ca89SAndroid Build Coastguard Worker test $0x40, %al 192*8d67ca89SAndroid Build Coastguard Worker jnz L(Exit7) 193*8d67ca89SAndroid Build Coastguard Worker movlpd (%ecx), %xmm0 194*8d67ca89SAndroid Build Coastguard Worker movlpd %xmm0, (%edx) 195*8d67ca89SAndroid Build Coastguard Worker movl %edi, %eax 196*8d67ca89SAndroid Build Coastguard Worker RETURN1 197*8d67ca89SAndroid Build Coastguard Worker 198*8d67ca89SAndroid Build Coastguard Worker .p2align 4 199*8d67ca89SAndroid Build Coastguard WorkerL(ExitHigh): 200*8d67ca89SAndroid Build Coastguard Worker test $0x01, %ah 201*8d67ca89SAndroid Build Coastguard Worker jnz L(Exit9) 202*8d67ca89SAndroid Build Coastguard Worker test $0x02, %ah 203*8d67ca89SAndroid Build Coastguard Worker jnz L(Exit10) 204*8d67ca89SAndroid Build Coastguard Worker test $0x04, %ah 205*8d67ca89SAndroid Build Coastguard Worker jnz L(Exit11) 206*8d67ca89SAndroid Build Coastguard Worker test $0x08, %ah 207*8d67ca89SAndroid Build Coastguard Worker jnz L(Exit12) 208*8d67ca89SAndroid Build Coastguard Worker test $0x10, %ah 209*8d67ca89SAndroid Build Coastguard Worker jnz L(Exit13) 210*8d67ca89SAndroid Build Coastguard Worker test $0x20, %ah 211*8d67ca89SAndroid Build Coastguard Worker jnz L(Exit14) 212*8d67ca89SAndroid Build Coastguard Worker test $0x40, %ah 213*8d67ca89SAndroid Build Coastguard Worker jnz L(Exit15) 214*8d67ca89SAndroid Build Coastguard Worker movlpd (%ecx), %xmm0 215*8d67ca89SAndroid Build Coastguard Worker movlpd 8(%ecx), %xmm1 216*8d67ca89SAndroid Build Coastguard Worker movlpd %xmm0, (%edx) 217*8d67ca89SAndroid Build Coastguard Worker movlpd %xmm1, 8(%edx) 218*8d67ca89SAndroid Build Coastguard Worker movl %edi, %eax 219*8d67ca89SAndroid Build Coastguard Worker RETURN1 220*8d67ca89SAndroid Build Coastguard Worker 221*8d67ca89SAndroid Build Coastguard Worker .p2align 4 222*8d67ca89SAndroid Build Coastguard WorkerL(StrncatExit1): 223*8d67ca89SAndroid Build Coastguard Worker movb %bh, 1(%edx) 224*8d67ca89SAndroid Build Coastguard WorkerL(Exit1): 225*8d67ca89SAndroid Build Coastguard Worker movb (%ecx), %al 226*8d67ca89SAndroid Build Coastguard Worker movb %al, (%edx) 227*8d67ca89SAndroid Build Coastguard Worker movl %edi, %eax 228*8d67ca89SAndroid Build Coastguard Worker RETURN1 229*8d67ca89SAndroid Build Coastguard Worker 230*8d67ca89SAndroid Build Coastguard Worker .p2align 4 231*8d67ca89SAndroid Build Coastguard WorkerL(StrncatExit2): 232*8d67ca89SAndroid Build Coastguard Worker movb %bh, 2(%edx) 233*8d67ca89SAndroid Build Coastguard WorkerL(Exit2): 234*8d67ca89SAndroid Build Coastguard Worker movw (%ecx), %ax 235*8d67ca89SAndroid Build Coastguard Worker movw %ax, (%edx) 236*8d67ca89SAndroid Build Coastguard Worker movl %edi, %eax 237*8d67ca89SAndroid Build Coastguard Worker RETURN1 238*8d67ca89SAndroid Build Coastguard Worker 239*8d67ca89SAndroid Build Coastguard Worker .p2align 4 240*8d67ca89SAndroid Build Coastguard WorkerL(StrncatExit3): 241*8d67ca89SAndroid Build Coastguard Worker movb %bh, 3(%edx) 242*8d67ca89SAndroid Build Coastguard WorkerL(Exit3): 243*8d67ca89SAndroid Build Coastguard Worker movw (%ecx), %ax 244*8d67ca89SAndroid Build Coastguard Worker movw %ax, (%edx) 245*8d67ca89SAndroid Build Coastguard Worker movb 2(%ecx), %al 246*8d67ca89SAndroid Build Coastguard Worker movb %al, 2(%edx) 247*8d67ca89SAndroid Build Coastguard Worker movl %edi, %eax 248*8d67ca89SAndroid Build Coastguard Worker RETURN1 249*8d67ca89SAndroid Build Coastguard Worker 250*8d67ca89SAndroid Build Coastguard Worker .p2align 4 251*8d67ca89SAndroid Build Coastguard WorkerL(StrncatExit4): 252*8d67ca89SAndroid Build Coastguard Worker movb %bh, 4(%edx) 253*8d67ca89SAndroid Build Coastguard WorkerL(Exit4): 254*8d67ca89SAndroid Build Coastguard Worker movl (%ecx), %eax 255*8d67ca89SAndroid Build Coastguard Worker movl %eax, (%edx) 256*8d67ca89SAndroid Build Coastguard Worker movl %edi, %eax 257*8d67ca89SAndroid Build Coastguard Worker RETURN1 258*8d67ca89SAndroid Build Coastguard Worker 259*8d67ca89SAndroid Build Coastguard Worker .p2align 4 260*8d67ca89SAndroid Build Coastguard WorkerL(StrncatExit5): 261*8d67ca89SAndroid Build Coastguard Worker movb %bh, 5(%edx) 262*8d67ca89SAndroid Build Coastguard WorkerL(Exit5): 263*8d67ca89SAndroid Build Coastguard Worker movl (%ecx), %eax 264*8d67ca89SAndroid Build Coastguard Worker movl %eax, (%edx) 265*8d67ca89SAndroid Build Coastguard Worker movb 4(%ecx), %al 266*8d67ca89SAndroid Build Coastguard Worker movb %al, 4(%edx) 267*8d67ca89SAndroid Build Coastguard Worker movl %edi, %eax 268*8d67ca89SAndroid Build Coastguard Worker RETURN1 269*8d67ca89SAndroid Build Coastguard Worker 270*8d67ca89SAndroid Build Coastguard Worker .p2align 4 271*8d67ca89SAndroid Build Coastguard WorkerL(StrncatExit6): 272*8d67ca89SAndroid Build Coastguard Worker movb %bh, 6(%edx) 273*8d67ca89SAndroid Build Coastguard WorkerL(Exit6): 274*8d67ca89SAndroid Build Coastguard Worker movl (%ecx), %eax 275*8d67ca89SAndroid Build Coastguard Worker movl %eax, (%edx) 276*8d67ca89SAndroid Build Coastguard Worker movw 4(%ecx), %ax 277*8d67ca89SAndroid Build Coastguard Worker movw %ax, 4(%edx) 278*8d67ca89SAndroid Build Coastguard Worker movl %edi, %eax 279*8d67ca89SAndroid Build Coastguard Worker RETURN1 280*8d67ca89SAndroid Build Coastguard Worker 281*8d67ca89SAndroid Build Coastguard Worker .p2align 4 282*8d67ca89SAndroid Build Coastguard WorkerL(StrncatExit7): 283*8d67ca89SAndroid Build Coastguard Worker movb %bh, 7(%edx) 284*8d67ca89SAndroid Build Coastguard WorkerL(Exit7): 285*8d67ca89SAndroid Build Coastguard Worker movl (%ecx), %eax 286*8d67ca89SAndroid Build Coastguard Worker movl %eax, (%edx) 287*8d67ca89SAndroid Build Coastguard Worker movl 3(%ecx), %eax 288*8d67ca89SAndroid Build Coastguard Worker movl %eax, 3(%edx) 289*8d67ca89SAndroid Build Coastguard Worker movl %edi, %eax 290*8d67ca89SAndroid Build Coastguard Worker RETURN1 291*8d67ca89SAndroid Build Coastguard Worker 292*8d67ca89SAndroid Build Coastguard Worker .p2align 4 293*8d67ca89SAndroid Build Coastguard WorkerL(StrncatExit8): 294*8d67ca89SAndroid Build Coastguard Worker movb %bh, 8(%edx) 295*8d67ca89SAndroid Build Coastguard WorkerL(Exit8): 296*8d67ca89SAndroid Build Coastguard Worker movlpd (%ecx), %xmm0 297*8d67ca89SAndroid Build Coastguard Worker movlpd %xmm0, (%edx) 298*8d67ca89SAndroid Build Coastguard Worker movl %edi, %eax 299*8d67ca89SAndroid Build Coastguard Worker RETURN1 300*8d67ca89SAndroid Build Coastguard Worker 301*8d67ca89SAndroid Build Coastguard Worker .p2align 4 302*8d67ca89SAndroid Build Coastguard WorkerL(StrncatExit9): 303*8d67ca89SAndroid Build Coastguard Worker movb %bh, 9(%edx) 304*8d67ca89SAndroid Build Coastguard WorkerL(Exit9): 305*8d67ca89SAndroid Build Coastguard Worker movlpd (%ecx), %xmm0 306*8d67ca89SAndroid Build Coastguard Worker movlpd %xmm0, (%edx) 307*8d67ca89SAndroid Build Coastguard Worker movb 8(%ecx), %al 308*8d67ca89SAndroid Build Coastguard Worker movb %al, 8(%edx) 309*8d67ca89SAndroid Build Coastguard Worker movl %edi, %eax 310*8d67ca89SAndroid Build Coastguard Worker RETURN1 311*8d67ca89SAndroid Build Coastguard Worker 312*8d67ca89SAndroid Build Coastguard Worker .p2align 4 313*8d67ca89SAndroid Build Coastguard WorkerL(StrncatExit10): 314*8d67ca89SAndroid Build Coastguard Worker movb %bh, 10(%edx) 315*8d67ca89SAndroid Build Coastguard WorkerL(Exit10): 316*8d67ca89SAndroid Build Coastguard Worker movlpd (%ecx), %xmm0 317*8d67ca89SAndroid Build Coastguard Worker movlpd %xmm0, (%edx) 318*8d67ca89SAndroid Build Coastguard Worker movw 8(%ecx), %ax 319*8d67ca89SAndroid Build Coastguard Worker movw %ax, 8(%edx) 320*8d67ca89SAndroid Build Coastguard Worker movl %edi, %eax 321*8d67ca89SAndroid Build Coastguard Worker RETURN1 322*8d67ca89SAndroid Build Coastguard Worker 323*8d67ca89SAndroid Build Coastguard Worker .p2align 4 324*8d67ca89SAndroid Build Coastguard WorkerL(StrncatExit11): 325*8d67ca89SAndroid Build Coastguard Worker movb %bh, 11(%edx) 326*8d67ca89SAndroid Build Coastguard WorkerL(Exit11): 327*8d67ca89SAndroid Build Coastguard Worker movlpd (%ecx), %xmm0 328*8d67ca89SAndroid Build Coastguard Worker movlpd %xmm0, (%edx) 329*8d67ca89SAndroid Build Coastguard Worker movl 7(%ecx), %eax 330*8d67ca89SAndroid Build Coastguard Worker movl %eax, 7(%edx) 331*8d67ca89SAndroid Build Coastguard Worker movl %edi, %eax 332*8d67ca89SAndroid Build Coastguard Worker RETURN1 333*8d67ca89SAndroid Build Coastguard Worker 334*8d67ca89SAndroid Build Coastguard Worker .p2align 4 335*8d67ca89SAndroid Build Coastguard WorkerL(StrncatExit12): 336*8d67ca89SAndroid Build Coastguard Worker movb %bh, 12(%edx) 337*8d67ca89SAndroid Build Coastguard WorkerL(Exit12): 338*8d67ca89SAndroid Build Coastguard Worker movlpd (%ecx), %xmm0 339*8d67ca89SAndroid Build Coastguard Worker movlpd %xmm0, (%edx) 340*8d67ca89SAndroid Build Coastguard Worker movl 8(%ecx), %eax 341*8d67ca89SAndroid Build Coastguard Worker movl %eax, 8(%edx) 342*8d67ca89SAndroid Build Coastguard Worker movl %edi, %eax 343*8d67ca89SAndroid Build Coastguard Worker RETURN1 344*8d67ca89SAndroid Build Coastguard Worker 345*8d67ca89SAndroid Build Coastguard Worker .p2align 4 346*8d67ca89SAndroid Build Coastguard WorkerL(StrncatExit13): 347*8d67ca89SAndroid Build Coastguard Worker movb %bh, 13(%edx) 348*8d67ca89SAndroid Build Coastguard WorkerL(Exit13): 349*8d67ca89SAndroid Build Coastguard Worker movlpd (%ecx), %xmm0 350*8d67ca89SAndroid Build Coastguard Worker movlpd %xmm0, (%edx) 351*8d67ca89SAndroid Build Coastguard Worker movlpd 5(%ecx), %xmm0 352*8d67ca89SAndroid Build Coastguard Worker movlpd %xmm0, 5(%edx) 353*8d67ca89SAndroid Build Coastguard Worker movl %edi, %eax 354*8d67ca89SAndroid Build Coastguard Worker RETURN1 355*8d67ca89SAndroid Build Coastguard Worker 356*8d67ca89SAndroid Build Coastguard Worker .p2align 4 357*8d67ca89SAndroid Build Coastguard WorkerL(StrncatExit14): 358*8d67ca89SAndroid Build Coastguard Worker movb %bh, 14(%edx) 359*8d67ca89SAndroid Build Coastguard WorkerL(Exit14): 360*8d67ca89SAndroid Build Coastguard Worker movlpd (%ecx), %xmm0 361*8d67ca89SAndroid Build Coastguard Worker movlpd %xmm0, (%edx) 362*8d67ca89SAndroid Build Coastguard Worker movlpd 6(%ecx), %xmm0 363*8d67ca89SAndroid Build Coastguard Worker movlpd %xmm0, 6(%edx) 364*8d67ca89SAndroid Build Coastguard Worker movl %edi, %eax 365*8d67ca89SAndroid Build Coastguard Worker RETURN1 366*8d67ca89SAndroid Build Coastguard Worker 367*8d67ca89SAndroid Build Coastguard Worker .p2align 4 368*8d67ca89SAndroid Build Coastguard WorkerL(StrncatExit15): 369*8d67ca89SAndroid Build Coastguard Worker movb %bh, 15(%edx) 370*8d67ca89SAndroid Build Coastguard WorkerL(Exit15): 371*8d67ca89SAndroid Build Coastguard Worker movlpd (%ecx), %xmm0 372*8d67ca89SAndroid Build Coastguard Worker movlpd %xmm0, (%edx) 373*8d67ca89SAndroid Build Coastguard Worker movlpd 7(%ecx), %xmm0 374*8d67ca89SAndroid Build Coastguard Worker movlpd %xmm0, 7(%edx) 375*8d67ca89SAndroid Build Coastguard Worker movl %edi, %eax 376*8d67ca89SAndroid Build Coastguard Worker RETURN1 377*8d67ca89SAndroid Build Coastguard Worker 378*8d67ca89SAndroid Build Coastguard Worker .p2align 4 379*8d67ca89SAndroid Build Coastguard WorkerL(StrncatExit16): 380*8d67ca89SAndroid Build Coastguard Worker movb %bh, 16(%edx) 381*8d67ca89SAndroid Build Coastguard WorkerL(Exit16): 382*8d67ca89SAndroid Build Coastguard Worker movlpd (%ecx), %xmm0 383*8d67ca89SAndroid Build Coastguard Worker movlpd 8(%ecx), %xmm1 384*8d67ca89SAndroid Build Coastguard Worker movlpd %xmm0, (%edx) 385*8d67ca89SAndroid Build Coastguard Worker movlpd %xmm1, 8(%edx) 386*8d67ca89SAndroid Build Coastguard Worker movl %edi, %eax 387*8d67ca89SAndroid Build Coastguard Worker RETURN1 388*8d67ca89SAndroid Build Coastguard Worker 389*8d67ca89SAndroid Build Coastguard Worker#ifdef USE_AS_STRNCPY 390*8d67ca89SAndroid Build Coastguard Worker 391*8d67ca89SAndroid Build Coastguard Worker CFI_PUSH(%esi) 392*8d67ca89SAndroid Build Coastguard Worker 393*8d67ca89SAndroid Build Coastguard Worker .p2align 4 394*8d67ca89SAndroid Build Coastguard WorkerL(CopyFrom1To16BytesCase2): 395*8d67ca89SAndroid Build Coastguard Worker add $16, %ebx 396*8d67ca89SAndroid Build Coastguard Worker add %esi, %ecx 397*8d67ca89SAndroid Build Coastguard Worker lea (%esi, %edx), %esi 398*8d67ca89SAndroid Build Coastguard Worker lea -9(%ebx), %edx 399*8d67ca89SAndroid Build Coastguard Worker and $1<<7, %dh 400*8d67ca89SAndroid Build Coastguard Worker or %al, %dh 401*8d67ca89SAndroid Build Coastguard Worker lea (%esi), %edx 402*8d67ca89SAndroid Build Coastguard Worker POP (%esi) 403*8d67ca89SAndroid Build Coastguard Worker jz L(ExitHighCase2) 404*8d67ca89SAndroid Build Coastguard Worker 405*8d67ca89SAndroid Build Coastguard Worker test $0x01, %al 406*8d67ca89SAndroid Build Coastguard Worker jnz L(Exit1) 407*8d67ca89SAndroid Build Coastguard Worker cmp $1, %ebx 408*8d67ca89SAndroid Build Coastguard Worker je L(StrncatExit1) 409*8d67ca89SAndroid Build Coastguard Worker test $0x02, %al 410*8d67ca89SAndroid Build Coastguard Worker jnz L(Exit2) 411*8d67ca89SAndroid Build Coastguard Worker cmp $2, %ebx 412*8d67ca89SAndroid Build Coastguard Worker je L(StrncatExit2) 413*8d67ca89SAndroid Build Coastguard Worker test $0x04, %al 414*8d67ca89SAndroid Build Coastguard Worker jnz L(Exit3) 415*8d67ca89SAndroid Build Coastguard Worker cmp $3, %ebx 416*8d67ca89SAndroid Build Coastguard Worker je L(StrncatExit3) 417*8d67ca89SAndroid Build Coastguard Worker test $0x08, %al 418*8d67ca89SAndroid Build Coastguard Worker jnz L(Exit4) 419*8d67ca89SAndroid Build Coastguard Worker cmp $4, %ebx 420*8d67ca89SAndroid Build Coastguard Worker je L(StrncatExit4) 421*8d67ca89SAndroid Build Coastguard Worker test $0x10, %al 422*8d67ca89SAndroid Build Coastguard Worker jnz L(Exit5) 423*8d67ca89SAndroid Build Coastguard Worker cmp $5, %ebx 424*8d67ca89SAndroid Build Coastguard Worker je L(StrncatExit5) 425*8d67ca89SAndroid Build Coastguard Worker test $0x20, %al 426*8d67ca89SAndroid Build Coastguard Worker jnz L(Exit6) 427*8d67ca89SAndroid Build Coastguard Worker cmp $6, %ebx 428*8d67ca89SAndroid Build Coastguard Worker je L(StrncatExit6) 429*8d67ca89SAndroid Build Coastguard Worker test $0x40, %al 430*8d67ca89SAndroid Build Coastguard Worker jnz L(Exit7) 431*8d67ca89SAndroid Build Coastguard Worker cmp $7, %ebx 432*8d67ca89SAndroid Build Coastguard Worker je L(StrncatExit7) 433*8d67ca89SAndroid Build Coastguard Worker movlpd (%ecx), %xmm0 434*8d67ca89SAndroid Build Coastguard Worker movlpd %xmm0, (%edx) 435*8d67ca89SAndroid Build Coastguard Worker lea 7(%edx), %eax 436*8d67ca89SAndroid Build Coastguard Worker cmpb $1, (%eax) 437*8d67ca89SAndroid Build Coastguard Worker sbb $-1, %eax 438*8d67ca89SAndroid Build Coastguard Worker xor %cl, %cl 439*8d67ca89SAndroid Build Coastguard Worker movb %cl, (%eax) 440*8d67ca89SAndroid Build Coastguard Worker movl %edi, %eax 441*8d67ca89SAndroid Build Coastguard Worker RETURN1 442*8d67ca89SAndroid Build Coastguard Worker 443*8d67ca89SAndroid Build Coastguard Worker .p2align 4 444*8d67ca89SAndroid Build Coastguard WorkerL(ExitHighCase2): 445*8d67ca89SAndroid Build Coastguard Worker test $0x01, %ah 446*8d67ca89SAndroid Build Coastguard Worker jnz L(Exit9) 447*8d67ca89SAndroid Build Coastguard Worker cmp $9, %ebx 448*8d67ca89SAndroid Build Coastguard Worker je L(StrncatExit9) 449*8d67ca89SAndroid Build Coastguard Worker test $0x02, %ah 450*8d67ca89SAndroid Build Coastguard Worker jnz L(Exit10) 451*8d67ca89SAndroid Build Coastguard Worker cmp $10, %ebx 452*8d67ca89SAndroid Build Coastguard Worker je L(StrncatExit10) 453*8d67ca89SAndroid Build Coastguard Worker test $0x04, %ah 454*8d67ca89SAndroid Build Coastguard Worker jnz L(Exit11) 455*8d67ca89SAndroid Build Coastguard Worker cmp $11, %ebx 456*8d67ca89SAndroid Build Coastguard Worker je L(StrncatExit11) 457*8d67ca89SAndroid Build Coastguard Worker test $0x8, %ah 458*8d67ca89SAndroid Build Coastguard Worker jnz L(Exit12) 459*8d67ca89SAndroid Build Coastguard Worker cmp $12, %ebx 460*8d67ca89SAndroid Build Coastguard Worker je L(StrncatExit12) 461*8d67ca89SAndroid Build Coastguard Worker test $0x10, %ah 462*8d67ca89SAndroid Build Coastguard Worker jnz L(Exit13) 463*8d67ca89SAndroid Build Coastguard Worker cmp $13, %ebx 464*8d67ca89SAndroid Build Coastguard Worker je L(StrncatExit13) 465*8d67ca89SAndroid Build Coastguard Worker test $0x20, %ah 466*8d67ca89SAndroid Build Coastguard Worker jnz L(Exit14) 467*8d67ca89SAndroid Build Coastguard Worker cmp $14, %ebx 468*8d67ca89SAndroid Build Coastguard Worker je L(StrncatExit14) 469*8d67ca89SAndroid Build Coastguard Worker test $0x40, %ah 470*8d67ca89SAndroid Build Coastguard Worker jnz L(Exit15) 471*8d67ca89SAndroid Build Coastguard Worker cmp $15, %ebx 472*8d67ca89SAndroid Build Coastguard Worker je L(StrncatExit15) 473*8d67ca89SAndroid Build Coastguard Worker movlpd (%ecx), %xmm0 474*8d67ca89SAndroid Build Coastguard Worker movlpd %xmm0, (%edx) 475*8d67ca89SAndroid Build Coastguard Worker movlpd 8(%ecx), %xmm1 476*8d67ca89SAndroid Build Coastguard Worker movlpd %xmm1, 8(%edx) 477*8d67ca89SAndroid Build Coastguard Worker movl %edi, %eax 478*8d67ca89SAndroid Build Coastguard Worker RETURN1 479*8d67ca89SAndroid Build Coastguard Worker 480*8d67ca89SAndroid Build Coastguard Worker CFI_PUSH(%esi) 481*8d67ca89SAndroid Build Coastguard Worker 482*8d67ca89SAndroid Build Coastguard WorkerL(CopyFrom1To16BytesCase2OrCase3): 483*8d67ca89SAndroid Build Coastguard Worker test %eax, %eax 484*8d67ca89SAndroid Build Coastguard Worker jnz L(CopyFrom1To16BytesCase2) 485*8d67ca89SAndroid Build Coastguard Worker 486*8d67ca89SAndroid Build Coastguard Worker .p2align 4 487*8d67ca89SAndroid Build Coastguard WorkerL(CopyFrom1To16BytesCase3): 488*8d67ca89SAndroid Build Coastguard Worker add $16, %ebx 489*8d67ca89SAndroid Build Coastguard Worker add %esi, %edx 490*8d67ca89SAndroid Build Coastguard Worker add %esi, %ecx 491*8d67ca89SAndroid Build Coastguard Worker 492*8d67ca89SAndroid Build Coastguard Worker POP (%esi) 493*8d67ca89SAndroid Build Coastguard Worker 494*8d67ca89SAndroid Build Coastguard Worker cmp $8, %ebx 495*8d67ca89SAndroid Build Coastguard Worker ja L(ExitHighCase3) 496*8d67ca89SAndroid Build Coastguard Worker cmp $1, %ebx 497*8d67ca89SAndroid Build Coastguard Worker je L(StrncatExit1) 498*8d67ca89SAndroid Build Coastguard Worker cmp $2, %ebx 499*8d67ca89SAndroid Build Coastguard Worker je L(StrncatExit2) 500*8d67ca89SAndroid Build Coastguard Worker cmp $3, %ebx 501*8d67ca89SAndroid Build Coastguard Worker je L(StrncatExit3) 502*8d67ca89SAndroid Build Coastguard Worker cmp $4, %ebx 503*8d67ca89SAndroid Build Coastguard Worker je L(StrncatExit4) 504*8d67ca89SAndroid Build Coastguard Worker cmp $5, %ebx 505*8d67ca89SAndroid Build Coastguard Worker je L(StrncatExit5) 506*8d67ca89SAndroid Build Coastguard Worker cmp $6, %ebx 507*8d67ca89SAndroid Build Coastguard Worker je L(StrncatExit6) 508*8d67ca89SAndroid Build Coastguard Worker cmp $7, %ebx 509*8d67ca89SAndroid Build Coastguard Worker je L(StrncatExit7) 510*8d67ca89SAndroid Build Coastguard Worker movlpd (%ecx), %xmm0 511*8d67ca89SAndroid Build Coastguard Worker movlpd %xmm0, (%edx) 512*8d67ca89SAndroid Build Coastguard Worker movb %bh, 8(%edx) 513*8d67ca89SAndroid Build Coastguard Worker movl %edi, %eax 514*8d67ca89SAndroid Build Coastguard Worker RETURN1 515*8d67ca89SAndroid Build Coastguard Worker 516*8d67ca89SAndroid Build Coastguard Worker .p2align 4 517*8d67ca89SAndroid Build Coastguard WorkerL(ExitHighCase3): 518*8d67ca89SAndroid Build Coastguard Worker cmp $9, %ebx 519*8d67ca89SAndroid Build Coastguard Worker je L(StrncatExit9) 520*8d67ca89SAndroid Build Coastguard Worker cmp $10, %ebx 521*8d67ca89SAndroid Build Coastguard Worker je L(StrncatExit10) 522*8d67ca89SAndroid Build Coastguard Worker cmp $11, %ebx 523*8d67ca89SAndroid Build Coastguard Worker je L(StrncatExit11) 524*8d67ca89SAndroid Build Coastguard Worker cmp $12, %ebx 525*8d67ca89SAndroid Build Coastguard Worker je L(StrncatExit12) 526*8d67ca89SAndroid Build Coastguard Worker cmp $13, %ebx 527*8d67ca89SAndroid Build Coastguard Worker je L(StrncatExit13) 528*8d67ca89SAndroid Build Coastguard Worker cmp $14, %ebx 529*8d67ca89SAndroid Build Coastguard Worker je L(StrncatExit14) 530*8d67ca89SAndroid Build Coastguard Worker cmp $15, %ebx 531*8d67ca89SAndroid Build Coastguard Worker je L(StrncatExit15) 532*8d67ca89SAndroid Build Coastguard Worker movlpd (%ecx), %xmm0 533*8d67ca89SAndroid Build Coastguard Worker movlpd %xmm0, (%edx) 534*8d67ca89SAndroid Build Coastguard Worker movlpd 8(%ecx), %xmm1 535*8d67ca89SAndroid Build Coastguard Worker movlpd %xmm1, 8(%edx) 536*8d67ca89SAndroid Build Coastguard Worker movb %bh, 16(%edx) 537*8d67ca89SAndroid Build Coastguard Worker movl %edi, %eax 538*8d67ca89SAndroid Build Coastguard Worker RETURN1 539*8d67ca89SAndroid Build Coastguard Worker 540*8d67ca89SAndroid Build Coastguard Worker .p2align 4 541*8d67ca89SAndroid Build Coastguard WorkerL(StrncatExit0): 542*8d67ca89SAndroid Build Coastguard Worker movl %edi, %eax 543*8d67ca89SAndroid Build Coastguard Worker RETURN1 544*8d67ca89SAndroid Build Coastguard Worker 545*8d67ca89SAndroid Build Coastguard Worker .p2align 4 546*8d67ca89SAndroid Build Coastguard WorkerL(StrncpyExit15Bytes): 547*8d67ca89SAndroid Build Coastguard Worker cmp $9, %ebx 548*8d67ca89SAndroid Build Coastguard Worker je L(StrncatExit9) 549*8d67ca89SAndroid Build Coastguard Worker cmpb $0, 9(%ecx) 550*8d67ca89SAndroid Build Coastguard Worker jz L(Exit10) 551*8d67ca89SAndroid Build Coastguard Worker cmp $10, %ebx 552*8d67ca89SAndroid Build Coastguard Worker je L(StrncatExit10) 553*8d67ca89SAndroid Build Coastguard Worker cmpb $0, 10(%ecx) 554*8d67ca89SAndroid Build Coastguard Worker jz L(Exit11) 555*8d67ca89SAndroid Build Coastguard Worker cmp $11, %ebx 556*8d67ca89SAndroid Build Coastguard Worker je L(StrncatExit11) 557*8d67ca89SAndroid Build Coastguard Worker cmpb $0, 11(%ecx) 558*8d67ca89SAndroid Build Coastguard Worker jz L(Exit12) 559*8d67ca89SAndroid Build Coastguard Worker cmp $12, %ebx 560*8d67ca89SAndroid Build Coastguard Worker je L(StrncatExit12) 561*8d67ca89SAndroid Build Coastguard Worker cmpb $0, 12(%ecx) 562*8d67ca89SAndroid Build Coastguard Worker jz L(Exit13) 563*8d67ca89SAndroid Build Coastguard Worker cmp $13, %ebx 564*8d67ca89SAndroid Build Coastguard Worker je L(StrncatExit13) 565*8d67ca89SAndroid Build Coastguard Worker cmpb $0, 13(%ecx) 566*8d67ca89SAndroid Build Coastguard Worker jz L(Exit14) 567*8d67ca89SAndroid Build Coastguard Worker cmp $14, %ebx 568*8d67ca89SAndroid Build Coastguard Worker je L(StrncatExit14) 569*8d67ca89SAndroid Build Coastguard Worker movlpd (%ecx), %xmm0 570*8d67ca89SAndroid Build Coastguard Worker movlpd %xmm0, (%edx) 571*8d67ca89SAndroid Build Coastguard Worker movlpd 7(%ecx), %xmm0 572*8d67ca89SAndroid Build Coastguard Worker movlpd %xmm0, 7(%edx) 573*8d67ca89SAndroid Build Coastguard Worker lea 14(%edx), %eax 574*8d67ca89SAndroid Build Coastguard Worker cmpb $1, (%eax) 575*8d67ca89SAndroid Build Coastguard Worker sbb $-1, %eax 576*8d67ca89SAndroid Build Coastguard Worker movb %bh, (%eax) 577*8d67ca89SAndroid Build Coastguard Worker movl %edi, %eax 578*8d67ca89SAndroid Build Coastguard Worker RETURN1 579*8d67ca89SAndroid Build Coastguard Worker 580*8d67ca89SAndroid Build Coastguard Worker .p2align 4 581*8d67ca89SAndroid Build Coastguard WorkerL(StrncpyExit8Bytes): 582*8d67ca89SAndroid Build Coastguard Worker cmpb $0, (%ecx) 583*8d67ca89SAndroid Build Coastguard Worker jz L(Exit1) 584*8d67ca89SAndroid Build Coastguard Worker cmp $1, %ebx 585*8d67ca89SAndroid Build Coastguard Worker je L(StrncatExit1) 586*8d67ca89SAndroid Build Coastguard Worker cmpb $0, 1(%ecx) 587*8d67ca89SAndroid Build Coastguard Worker jz L(Exit2) 588*8d67ca89SAndroid Build Coastguard Worker cmp $2, %ebx 589*8d67ca89SAndroid Build Coastguard Worker je L(StrncatExit2) 590*8d67ca89SAndroid Build Coastguard Worker cmpb $0, 2(%ecx) 591*8d67ca89SAndroid Build Coastguard Worker jz L(Exit3) 592*8d67ca89SAndroid Build Coastguard Worker cmp $3, %ebx 593*8d67ca89SAndroid Build Coastguard Worker je L(StrncatExit3) 594*8d67ca89SAndroid Build Coastguard Worker cmpb $0, 3(%ecx) 595*8d67ca89SAndroid Build Coastguard Worker jz L(Exit4) 596*8d67ca89SAndroid Build Coastguard Worker cmp $4, %ebx 597*8d67ca89SAndroid Build Coastguard Worker je L(StrncatExit4) 598*8d67ca89SAndroid Build Coastguard Worker cmpb $0, 4(%ecx) 599*8d67ca89SAndroid Build Coastguard Worker jz L(Exit5) 600*8d67ca89SAndroid Build Coastguard Worker cmp $5, %ebx 601*8d67ca89SAndroid Build Coastguard Worker je L(StrncatExit5) 602*8d67ca89SAndroid Build Coastguard Worker cmpb $0, 5(%ecx) 603*8d67ca89SAndroid Build Coastguard Worker jz L(Exit6) 604*8d67ca89SAndroid Build Coastguard Worker cmp $6, %ebx 605*8d67ca89SAndroid Build Coastguard Worker je L(StrncatExit6) 606*8d67ca89SAndroid Build Coastguard Worker cmpb $0, 6(%ecx) 607*8d67ca89SAndroid Build Coastguard Worker jz L(Exit7) 608*8d67ca89SAndroid Build Coastguard Worker cmp $7, %ebx 609*8d67ca89SAndroid Build Coastguard Worker je L(StrncatExit7) 610*8d67ca89SAndroid Build Coastguard Worker movlpd (%ecx), %xmm0 611*8d67ca89SAndroid Build Coastguard Worker movlpd %xmm0, (%edx) 612*8d67ca89SAndroid Build Coastguard Worker lea 7(%edx), %eax 613*8d67ca89SAndroid Build Coastguard Worker cmpb $1, (%eax) 614*8d67ca89SAndroid Build Coastguard Worker sbb $-1, %eax 615*8d67ca89SAndroid Build Coastguard Worker movb %bh, (%eax) 616*8d67ca89SAndroid Build Coastguard Worker movl %edi, %eax 617*8d67ca89SAndroid Build Coastguard Worker RETURN1 618*8d67ca89SAndroid Build Coastguard Worker 619*8d67ca89SAndroid Build Coastguard Worker#endif 620*8d67ca89SAndroid Build Coastguard WorkerEND (STRCAT_ssse3) 621