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