From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pj1-x102f.google.com (mail-pj1-x102f.google.com [IPv6:2607:f8b0:4864:20::102f]) by sourceware.org (Postfix) with ESMTPS id 2F7893858C27 for ; Wed, 13 Jul 2022 00:05:56 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 2F7893858C27 Received: by mail-pj1-x102f.google.com with SMTP id x18-20020a17090a8a9200b001ef83b332f5so998275pjn.0 for ; Tue, 12 Jul 2022 17:05:56 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=dbbg5OQIFjsvXhmN6SMVdneDFGNpyGAORzi7TW/D2lk=; b=dTfRr6mQnSWQGCEmVnqOYu7UcYmDnPjQrKDltNPqHWJH1OqMxRtoQI9IDBDlSRvfoM IdK30uU5j/h7tkmincbx+BWBn2BlgAEbLkxgn6rR3gEZVy7TzCRZiEf4rrmHLy8C2Nf6 LZwUI++fRbrrTr5Tu7LgiL0tN+a+lTDiHHkJ28FCEMcK+/MVCX8eM8Ei6S696sWW4nBG hcZrjsiyk8I6pSeHtlBLH6fQjfc5rez3v+R8Dpplet2A9F+NyPJ+XMrIeM3luADXFJpz 0LcNw/p4WACrqTrsmspi7Toix9cAHOznappT63hYS+oFrBFgGTVQHnLrRvu8AsjBIARV BT5Q== X-Gm-Message-State: AJIora99SJ5X/RqVUB9qAJrBrSJ9dc3pWpGpXpHhOjdt9sOYPHGQqOFf JBIDpJ8G+6GxeT/fGWqdu27NQx2EeCuCOmVci+pmsoWS X-Google-Smtp-Source: AGRyM1sVH9Dle8VowzTdCU779WVApHuLLKIaDQiQ1+/Tr/pS+xaFtpG7038SxBy3kPCEjtYJ6QlN4XuW0GTEiwv1tb0= X-Received: by 2002:a17:90a:eacd:b0:1ef:84c2:418d with SMTP id ev13-20020a17090aeacd00b001ef84c2418dmr6990271pjb.101.1657670754675; Tue, 12 Jul 2022 17:05:54 -0700 (PDT) MIME-Version: 1.0 References: <20220712192808.335531-1-goldstein.w.n@gmail.com> <20220712192808.335531-3-goldstein.w.n@gmail.com> In-Reply-To: <20220712192808.335531-3-goldstein.w.n@gmail.com> From: "H.J. Lu" Date: Tue, 12 Jul 2022 17:05:18 -0700 Message-ID: Subject: Re: [PATCH v1 3/4] x86: Move wcscmp SSE2 implementation to multiarch/wcscmp-sse2.S To: Noah Goldstein Cc: GNU C Library , "Carlos O'Donell" Content-Type: text/plain; charset="UTF-8" X-Spam-Status: No, score=-3024.7 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, GIT_PATCH_0, KAM_SHORT, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 13 Jul 2022 00:06:02 -0000 On Tue, Jul 12, 2022 at 12:28 PM Noah Goldstein wrote: > > This commit doesn't affect libc.so.6, its just housekeeping to prepare > for adding explicit ISA level support. > > Tested build on x86_64 and x86_32 with/without multiarch. > --- > sysdeps/x86_64/multiarch/wcscmp-sse2.S | 936 ++++++++++++++++++++++++- > sysdeps/x86_64/wcscmp.S | 932 +----------------------- > 2 files changed, 934 insertions(+), 934 deletions(-) > > diff --git a/sysdeps/x86_64/multiarch/wcscmp-sse2.S b/sysdeps/x86_64/multiarch/wcscmp-sse2.S > index 72a19bd64d..6cb7d9faf9 100644 > --- a/sysdeps/x86_64/multiarch/wcscmp-sse2.S > +++ b/sysdeps/x86_64/multiarch/wcscmp-sse2.S > @@ -16,8 +16,936 @@ > License along with the GNU C Library; if not, see > . */ > > -#if IS_IN (libc) > -# define __wcscmp __wcscmp_sse2 > -#endif > +#define USE_AS_WCSCMP > +#define STRCMP_ISA _sse2 > +#include "strcmp-naming.h" > > -#include "../wcscmp.S" > +#include > + > +/* Note: wcscmp uses signed comparison, not unsighed as in strcmp function. */ > + > + .text > +ENTRY (STRCMP) > +/* > + * This implementation uses SSE to compare up to 16 bytes at a time. > +*/ > + mov %esi, %eax > + mov %edi, %edx > + pxor %xmm0, %xmm0 /* clear %xmm0 for null char checks */ > + mov %al, %ch > + mov %dl, %cl > + and $63, %eax /* rsi alignment in cache line */ > + and $63, %edx /* rdi alignment in cache line */ > + and $15, %cl > + jz L(continue_00) > + cmp $16, %edx > + jb L(continue_0) > + cmp $32, %edx > + jb L(continue_16) > + cmp $48, %edx > + jb L(continue_32) > + > +L(continue_48): > + and $15, %ch > + jz L(continue_48_00) > + cmp $16, %eax > + jb L(continue_0_48) > + cmp $32, %eax > + jb L(continue_16_48) > + cmp $48, %eax > + jb L(continue_32_48) > + > + .p2align 4 > +L(continue_48_48): > + mov (%rsi), %ecx > + cmp %ecx, (%rdi) > + jne L(nequal) > + test %ecx, %ecx > + jz L(equal) > + > + mov 4(%rsi), %ecx > + cmp %ecx, 4(%rdi) > + jne L(nequal) > + test %ecx, %ecx > + jz L(equal) > + > + mov 8(%rsi), %ecx > + cmp %ecx, 8(%rdi) > + jne L(nequal) > + test %ecx, %ecx > + jz L(equal) > + > + mov 12(%rsi), %ecx > + cmp %ecx, 12(%rdi) > + jne L(nequal) > + test %ecx, %ecx > + jz L(equal) > + > + movdqu 16(%rdi), %xmm1 > + movdqu 16(%rsi), %xmm2 > + pcmpeqd %xmm1, %xmm0 /* Any null double_word? */ > + pcmpeqd %xmm2, %xmm1 /* compare first 4 double_words for equality */ > + psubb %xmm0, %xmm1 /* packed sub of comparison results*/ > + pmovmskb %xmm1, %edx > + sub $0xffff, %edx /* if first 4 double_words are same, edx == 0xffff */ > + jnz L(less4_double_words_16) > + > + movdqu 32(%rdi), %xmm1 > + movdqu 32(%rsi), %xmm2 > + pcmpeqd %xmm1, %xmm0 /* Any null double_word? */ > + pcmpeqd %xmm2, %xmm1 /* compare first 4 double_words for equality */ > + psubb %xmm0, %xmm1 /* packed sub of comparison results*/ > + pmovmskb %xmm1, %edx > + sub $0xffff, %edx /* if first 4 double_words are same, edx == 0xffff */ > + jnz L(less4_double_words_32) > + > + movdqu 48(%rdi), %xmm1 > + movdqu 48(%rsi), %xmm2 > + pcmpeqd %xmm1, %xmm0 /* Any null double_word? */ > + pcmpeqd %xmm2, %xmm1 /* compare first 4 double_words for equality */ > + psubb %xmm0, %xmm1 /* packed sub of comparison results*/ > + pmovmskb %xmm1, %edx > + sub $0xffff, %edx /* if first 4 double_words are same, edx == 0xffff */ > + jnz L(less4_double_words_48) > + > + add $64, %rsi > + add $64, %rdi > + jmp L(continue_48_48) > + > +L(continue_0): > + and $15, %ch > + jz L(continue_0_00) > + cmp $16, %eax > + jb L(continue_0_0) > + cmp $32, %eax > + jb L(continue_0_16) > + cmp $48, %eax > + jb L(continue_0_32) > + > + .p2align 4 > +L(continue_0_48): > + mov (%rsi), %ecx > + cmp %ecx, (%rdi) > + jne L(nequal) > + test %ecx, %ecx > + jz L(equal) > + > + mov 4(%rsi), %ecx > + cmp %ecx, 4(%rdi) > + jne L(nequal) > + test %ecx, %ecx > + jz L(equal) > + > + mov 8(%rsi), %ecx > + cmp %ecx, 8(%rdi) > + jne L(nequal) > + test %ecx, %ecx > + jz L(equal) > + > + mov 12(%rsi), %ecx > + cmp %ecx, 12(%rdi) > + jne L(nequal) > + test %ecx, %ecx > + jz L(equal) > + > + movdqu 16(%rdi), %xmm1 > + movdqu 16(%rsi), %xmm2 > + pcmpeqd %xmm1, %xmm0 /* Any null double_word? */ > + pcmpeqd %xmm2, %xmm1 /* compare first 4 double_words for equality */ > + psubb %xmm0, %xmm1 /* packed sub of comparison results*/ > + pmovmskb %xmm1, %edx > + sub $0xffff, %edx /* if first 4 double_words are same, edx == 0xffff */ > + jnz L(less4_double_words_16) > + > + movdqu 32(%rdi), %xmm1 > + movdqu 32(%rsi), %xmm2 > + pcmpeqd %xmm1, %xmm0 /* Any null double_word? */ > + pcmpeqd %xmm2, %xmm1 /* compare first 4 double_words for equality */ > + psubb %xmm0, %xmm1 /* packed sub of comparison results*/ > + pmovmskb %xmm1, %edx > + sub $0xffff, %edx /* if first 4 double_words are same, edx == 0xffff */ > + jnz L(less4_double_words_32) > + > + mov 48(%rsi), %ecx > + cmp %ecx, 48(%rdi) > + jne L(nequal) > + test %ecx, %ecx > + jz L(equal) > + > + mov 52(%rsi), %ecx > + cmp %ecx, 52(%rdi) > + jne L(nequal) > + test %ecx, %ecx > + jz L(equal) > + > + mov 56(%rsi), %ecx > + cmp %ecx, 56(%rdi) > + jne L(nequal) > + test %ecx, %ecx > + jz L(equal) > + > + mov 60(%rsi), %ecx > + cmp %ecx, 60(%rdi) > + jne L(nequal) > + test %ecx, %ecx > + jz L(equal) > + > + add $64, %rsi > + add $64, %rdi > + jmp L(continue_0_48) > + > + .p2align 4 > +L(continue_00): > + and $15, %ch > + jz L(continue_00_00) > + cmp $16, %eax > + jb L(continue_00_0) > + cmp $32, %eax > + jb L(continue_00_16) > + cmp $48, %eax > + jb L(continue_00_32) > + > + .p2align 4 > +L(continue_00_48): > + pcmpeqd (%rdi), %xmm0 > + mov (%rdi), %eax > + pmovmskb %xmm0, %ecx > + test %ecx, %ecx > + jnz L(less4_double_words1) > + > + cmp (%rsi), %eax > + jne L(nequal) > + > + mov 4(%rdi), %eax > + cmp 4(%rsi), %eax > + jne L(nequal) > + > + mov 8(%rdi), %eax > + cmp 8(%rsi), %eax > + jne L(nequal) > + > + mov 12(%rdi), %eax > + cmp 12(%rsi), %eax > + jne L(nequal) > + > + movdqu 16(%rsi), %xmm2 > + pcmpeqd %xmm2, %xmm0 /* Any null double_word? */ > + pcmpeqd 16(%rdi), %xmm2 /* compare first 4 double_words for equality */ > + psubb %xmm0, %xmm2 /* packed sub of comparison results*/ > + pmovmskb %xmm2, %edx > + sub $0xffff, %edx /* if first 4 double_words are same, edx == 0xffff */ > + jnz L(less4_double_words_16) > + > + movdqu 32(%rsi), %xmm2 > + pcmpeqd %xmm2, %xmm0 /* Any null double_word? */ > + pcmpeqd 32(%rdi), %xmm2 /* compare first 4 double_words for equality */ > + psubb %xmm0, %xmm2 /* packed sub of comparison results*/ > + pmovmskb %xmm2, %edx > + sub $0xffff, %edx /* if first 4 double_words are same, edx == 0xffff */ > + jnz L(less4_double_words_32) > + > + movdqu 48(%rsi), %xmm2 > + pcmpeqd %xmm2, %xmm0 /* Any null double_word? */ > + pcmpeqd 48(%rdi), %xmm2 /* compare first 4 double_words for equality */ > + psubb %xmm0, %xmm2 /* packed sub of comparison results*/ > + pmovmskb %xmm2, %edx > + sub $0xffff, %edx /* if first 4 double_words are same, edx == 0xffff */ > + jnz L(less4_double_words_48) > + > + add $64, %rsi > + add $64, %rdi > + jmp L(continue_00_48) > + > + .p2align 4 > +L(continue_32): > + and $15, %ch > + jz L(continue_32_00) > + cmp $16, %eax > + jb L(continue_0_32) > + cmp $32, %eax > + jb L(continue_16_32) > + cmp $48, %eax > + jb L(continue_32_32) > + > + .p2align 4 > +L(continue_32_48): > + mov (%rsi), %ecx > + cmp %ecx, (%rdi) > + jne L(nequal) > + test %ecx, %ecx > + jz L(equal) > + > + mov 4(%rsi), %ecx > + cmp %ecx, 4(%rdi) > + jne L(nequal) > + test %ecx, %ecx > + jz L(equal) > + > + mov 8(%rsi), %ecx > + cmp %ecx, 8(%rdi) > + jne L(nequal) > + test %ecx, %ecx > + jz L(equal) > + > + mov 12(%rsi), %ecx > + cmp %ecx, 12(%rdi) > + jne L(nequal) > + test %ecx, %ecx > + jz L(equal) > + > + mov 16(%rsi), %ecx > + cmp %ecx, 16(%rdi) > + jne L(nequal) > + test %ecx, %ecx > + jz L(equal) > + > + mov 20(%rsi), %ecx > + cmp %ecx, 20(%rdi) > + jne L(nequal) > + test %ecx, %ecx > + jz L(equal) > + > + mov 24(%rsi), %ecx > + cmp %ecx, 24(%rdi) > + jne L(nequal) > + test %ecx, %ecx > + jz L(equal) > + > + mov 28(%rsi), %ecx > + cmp %ecx, 28(%rdi) > + jne L(nequal) > + test %ecx, %ecx > + jz L(equal) > + > + movdqu 32(%rdi), %xmm1 > + movdqu 32(%rsi), %xmm2 > + pcmpeqd %xmm1, %xmm0 /* Any null double_word? */ > + pcmpeqd %xmm2, %xmm1 /* compare first 4 double_words for equality */ > + psubb %xmm0, %xmm1 /* packed sub of comparison results*/ > + pmovmskb %xmm1, %edx > + sub $0xffff, %edx /* if first 4 double_words are same, edx == 0xffff */ > + jnz L(less4_double_words_32) > + > + movdqu 48(%rdi), %xmm1 > + movdqu 48(%rsi), %xmm2 > + pcmpeqd %xmm1, %xmm0 /* Any null double_word? */ > + pcmpeqd %xmm2, %xmm1 /* compare first 4 double_words for equality */ > + psubb %xmm0, %xmm1 /* packed sub of comparison results*/ > + pmovmskb %xmm1, %edx > + sub $0xffff, %edx /* if first 4 double_words are same, edx == 0xffff */ > + jnz L(less4_double_words_48) > + > + add $64, %rsi > + add $64, %rdi > + jmp L(continue_32_48) > + > + .p2align 4 > +L(continue_16): > + and $15, %ch > + jz L(continue_16_00) > + cmp $16, %eax > + jb L(continue_0_16) > + cmp $32, %eax > + jb L(continue_16_16) > + cmp $48, %eax > + jb L(continue_16_32) > + > + .p2align 4 > +L(continue_16_48): > + mov (%rsi), %ecx > + cmp %ecx, (%rdi) > + jne L(nequal) > + test %ecx, %ecx > + jz L(equal) > + > + mov 4(%rsi), %ecx > + cmp %ecx, 4(%rdi) > + jne L(nequal) > + test %ecx, %ecx > + jz L(equal) > + > + mov 8(%rsi), %ecx > + cmp %ecx, 8(%rdi) > + jne L(nequal) > + test %ecx, %ecx > + jz L(equal) > + > + mov 12(%rsi), %ecx > + cmp %ecx, 12(%rdi) > + jne L(nequal) > + test %ecx, %ecx > + jz L(equal) > + > + movdqu 16(%rdi), %xmm1 > + movdqu 16(%rsi), %xmm2 > + pcmpeqd %xmm1, %xmm0 /* Any null double_word? */ > + pcmpeqd %xmm2, %xmm1 /* compare first 4 double_words for equality */ > + psubb %xmm0, %xmm1 /* packed sub of comparison results*/ > + pmovmskb %xmm1, %edx > + sub $0xffff, %edx /* if first 4 double_words are same, edx == 0xffff */ > + jnz L(less4_double_words_16) > + > + mov 32(%rsi), %ecx > + cmp %ecx, 32(%rdi) > + jne L(nequal) > + test %ecx, %ecx > + jz L(equal) > + > + mov 36(%rsi), %ecx > + cmp %ecx, 36(%rdi) > + jne L(nequal) > + test %ecx, %ecx > + jz L(equal) > + > + mov 40(%rsi), %ecx > + cmp %ecx, 40(%rdi) > + jne L(nequal) > + test %ecx, %ecx > + jz L(equal) > + > + mov 44(%rsi), %ecx > + cmp %ecx, 44(%rdi) > + jne L(nequal) > + test %ecx, %ecx > + jz L(equal) > + > + movdqu 48(%rdi), %xmm1 > + movdqu 48(%rsi), %xmm2 > + pcmpeqd %xmm1, %xmm0 /* Any null double_word? */ > + pcmpeqd %xmm2, %xmm1 /* compare first 4 double_words for equality */ > + psubb %xmm0, %xmm1 /* packed sub of comparison results*/ > + pmovmskb %xmm1, %edx > + sub $0xffff, %edx /* if first 4 double_words are same, edx == 0xffff */ > + jnz L(less4_double_words_48) > + > + add $64, %rsi > + add $64, %rdi > + jmp L(continue_16_48) > + > + .p2align 4 > +L(continue_00_00): > + movdqa (%rdi), %xmm1 > + pcmpeqd %xmm1, %xmm0 /* Any null double_word? */ > + pcmpeqd (%rsi), %xmm1 /* compare first 4 double_words for equality */ > + psubb %xmm0, %xmm1 /* packed sub of comparison results*/ > + pmovmskb %xmm1, %edx > + sub $0xffff, %edx /* if first 4 double_words are same, edx == 0xffff */ > + jnz L(less4_double_words) > + > + movdqa 16(%rdi), %xmm3 > + pcmpeqd %xmm3, %xmm0 /* Any null double_word? */ > + pcmpeqd 16(%rsi), %xmm3 /* compare first 4 double_words for equality */ > + psubb %xmm0, %xmm3 /* packed sub of comparison results*/ > + pmovmskb %xmm3, %edx > + sub $0xffff, %edx /* if first 4 double_words are same, edx == 0xffff */ > + jnz L(less4_double_words_16) > + > + movdqa 32(%rdi), %xmm5 > + pcmpeqd %xmm5, %xmm0 /* Any null double_word? */ > + pcmpeqd 32(%rsi), %xmm5 /* compare first 4 double_words for equality */ > + psubb %xmm0, %xmm5 /* packed sub of comparison results*/ > + pmovmskb %xmm5, %edx > + sub $0xffff, %edx /* if first 4 double_words are same, edx == 0xffff */ > + jnz L(less4_double_words_32) > + > + movdqa 48(%rdi), %xmm1 > + pcmpeqd %xmm1, %xmm0 /* Any null double_word? */ > + pcmpeqd 48(%rsi), %xmm1 /* compare first 4 double_words for equality */ > + psubb %xmm0, %xmm1 /* packed sub of comparison results*/ > + pmovmskb %xmm1, %edx > + sub $0xffff, %edx /* if first 4 double_words are same, edx == 0xffff */ > + jnz L(less4_double_words_48) > + > + add $64, %rsi > + add $64, %rdi > + jmp L(continue_00_00) > + > + .p2align 4 > +L(continue_00_32): > + movdqu (%rsi), %xmm2 > + pcmpeqd %xmm2, %xmm0 /* Any null double_word? */ > + pcmpeqd (%rdi), %xmm2 /* compare first 4 double_words for equality */ > + psubb %xmm0, %xmm2 /* packed sub of comparison results*/ > + pmovmskb %xmm2, %edx > + sub $0xffff, %edx /* if first 4 double_words are same, edx == 0xffff */ > + jnz L(less4_double_words) > + > + add $16, %rsi > + add $16, %rdi > + jmp L(continue_00_48) > + > + .p2align 4 > +L(continue_00_16): > + movdqu (%rsi), %xmm2 > + pcmpeqd %xmm2, %xmm0 /* Any null double_word? */ > + pcmpeqd (%rdi), %xmm2 /* compare first 4 double_words for equality */ > + psubb %xmm0, %xmm2 /* packed sub of comparison results*/ > + pmovmskb %xmm2, %edx > + sub $0xffff, %edx /* if first 4 double_words are same, edx == 0xffff */ > + jnz L(less4_double_words) > + > + movdqu 16(%rsi), %xmm2 > + pcmpeqd %xmm2, %xmm0 /* Any null double_word? */ > + pcmpeqd 16(%rdi), %xmm2 /* compare first 4 double_words for equality */ > + psubb %xmm0, %xmm2 /* packed sub of comparison results*/ > + pmovmskb %xmm2, %edx > + sub $0xffff, %edx /* if first 4 double_words are same, edx == 0xffff */ > + jnz L(less4_double_words_16) > + > + add $32, %rsi > + add $32, %rdi > + jmp L(continue_00_48) > + > + .p2align 4 > +L(continue_00_0): > + movdqu (%rsi), %xmm2 > + pcmpeqd %xmm2, %xmm0 /* Any null double_word? */ > + pcmpeqd (%rdi), %xmm2 /* compare first 4 double_words for equality */ > + psubb %xmm0, %xmm2 /* packed sub of comparison results*/ > + pmovmskb %xmm2, %edx > + sub $0xffff, %edx /* if first 4 double_words are same, edx == 0xffff */ > + jnz L(less4_double_words) > + > + movdqu 16(%rsi), %xmm2 > + pcmpeqd %xmm2, %xmm0 /* Any null double_word? */ > + pcmpeqd 16(%rdi), %xmm2 /* compare first 4 double_words for equality */ > + psubb %xmm0, %xmm2 /* packed sub of comparison results*/ > + pmovmskb %xmm2, %edx > + sub $0xffff, %edx /* if first 4 double_words are same, edx == 0xffff */ > + jnz L(less4_double_words_16) > + > + movdqu 32(%rsi), %xmm2 > + pcmpeqd %xmm2, %xmm0 /* Any null double_word? */ > + pcmpeqd 32(%rdi), %xmm2 /* compare first 4 double_words for equality */ > + psubb %xmm0, %xmm2 /* packed sub of comparison results*/ > + pmovmskb %xmm2, %edx > + sub $0xffff, %edx /* if first 4 double_words are same, edx == 0xffff */ > + jnz L(less4_double_words_32) > + > + add $48, %rsi > + add $48, %rdi > + jmp L(continue_00_48) > + > + .p2align 4 > +L(continue_48_00): > + pcmpeqd (%rsi), %xmm0 > + mov (%rdi), %eax > + pmovmskb %xmm0, %ecx > + test %ecx, %ecx > + jnz L(less4_double_words1) > + > + cmp (%rsi), %eax > + jne L(nequal) > + > + mov 4(%rdi), %eax > + cmp 4(%rsi), %eax > + jne L(nequal) > + > + mov 8(%rdi), %eax > + cmp 8(%rsi), %eax > + jne L(nequal) > + > + mov 12(%rdi), %eax > + cmp 12(%rsi), %eax > + jne L(nequal) > + > + movdqu 16(%rdi), %xmm1 > + pcmpeqd %xmm1, %xmm0 /* Any null double_word? */ > + pcmpeqd 16(%rsi), %xmm1 /* compare first 4 double_words for equality */ > + psubb %xmm0, %xmm1 /* packed sub of comparison results*/ > + pmovmskb %xmm1, %edx > + sub $0xffff, %edx /* if first 4 double_words are same, edx == 0xffff */ > + jnz L(less4_double_words_16) > + > + movdqu 32(%rdi), %xmm1 > + pcmpeqd %xmm1, %xmm0 /* Any null double_word? */ > + pcmpeqd 32(%rsi), %xmm1 /* compare first 4 double_words for equality */ > + psubb %xmm0, %xmm1 /* packed sub of comparison results*/ > + pmovmskb %xmm1, %edx > + sub $0xffff, %edx /* if first 4 double_words are same, edx == 0xffff */ > + jnz L(less4_double_words_32) > + > + movdqu 48(%rdi), %xmm1 > + pcmpeqd %xmm1, %xmm0 /* Any null double_word? */ > + pcmpeqd 48(%rsi), %xmm1 /* compare first 4 double_words for equality */ > + psubb %xmm0, %xmm1 /* packed sub of comparison results*/ > + pmovmskb %xmm1, %edx > + sub $0xffff, %edx /* if first 4 double_words are same, edx == 0xffff */ > + jnz L(less4_double_words_48) > + > + add $64, %rsi > + add $64, %rdi > + jmp L(continue_48_00) > + > + .p2align 4 > +L(continue_32_00): > + movdqu (%rdi), %xmm1 > + pcmpeqd %xmm1, %xmm0 /* Any null double_word? */ > + pcmpeqd (%rsi), %xmm1 /* compare first 4 double_words for equality */ > + psubb %xmm0, %xmm1 /* packed sub of comparison results*/ > + pmovmskb %xmm1, %edx > + sub $0xffff, %edx /* if first 4 double_words are same, edx == 0xffff */ > + jnz L(less4_double_words) > + > + add $16, %rsi > + add $16, %rdi > + jmp L(continue_48_00) > + > + .p2align 4 > +L(continue_16_00): > + movdqu (%rdi), %xmm1 > + pcmpeqd %xmm1, %xmm0 /* Any null double_word? */ > + pcmpeqd (%rsi), %xmm1 /* compare first 4 double_words for equality */ > + psubb %xmm0, %xmm1 /* packed sub of comparison results*/ > + pmovmskb %xmm1, %edx > + sub $0xffff, %edx /* if first 4 double_words are same, edx == 0xffff */ > + jnz L(less4_double_words) > + > + movdqu 16(%rdi), %xmm1 > + pcmpeqd %xmm1, %xmm0 /* Any null double_word? */ > + pcmpeqd 16(%rsi), %xmm1 /* compare first 4 double_words for equality */ > + psubb %xmm0, %xmm1 /* packed sub of comparison results*/ > + pmovmskb %xmm1, %edx > + sub $0xffff, %edx /* if first 4 double_words are same, edx == 0xffff */ > + jnz L(less4_double_words_16) > + > + add $32, %rsi > + add $32, %rdi > + jmp L(continue_48_00) > + > + .p2align 4 > +L(continue_0_00): > + movdqu (%rdi), %xmm1 > + pcmpeqd %xmm1, %xmm0 /* Any null double_word? */ > + pcmpeqd (%rsi), %xmm1 /* compare first 4 double_words for equality */ > + psubb %xmm0, %xmm1 /* packed sub of comparison results*/ > + pmovmskb %xmm1, %edx > + sub $0xffff, %edx /* if first 4 double_words are same, edx == 0xffff */ > + jnz L(less4_double_words) > + > + movdqu 16(%rdi), %xmm1 > + pcmpeqd %xmm1, %xmm0 /* Any null double_word? */ > + pcmpeqd 16(%rsi), %xmm1 /* compare first 4 double_words for equality */ > + psubb %xmm0, %xmm1 /* packed sub of comparison results*/ > + pmovmskb %xmm1, %edx > + sub $0xffff, %edx /* if first 4 double_words are same, edx == 0xffff */ > + jnz L(less4_double_words_16) > + > + movdqu 32(%rdi), %xmm1 > + pcmpeqd %xmm1, %xmm0 /* Any null double_word? */ > + pcmpeqd 32(%rsi), %xmm1 /* compare first 4 double_words for equality */ > + psubb %xmm0, %xmm1 /* packed sub of comparison results*/ > + pmovmskb %xmm1, %edx > + sub $0xffff, %edx /* if first 4 double_words are same, edx == 0xffff */ > + jnz L(less4_double_words_32) > + > + add $48, %rsi > + add $48, %rdi > + jmp L(continue_48_00) > + > + .p2align 4 > +L(continue_32_32): > + movdqu (%rdi), %xmm1 > + movdqu (%rsi), %xmm2 > + pcmpeqd %xmm1, %xmm0 /* Any null double_word? */ > + pcmpeqd %xmm2, %xmm1 /* compare first 4 double_words for equality */ > + psubb %xmm0, %xmm1 /* packed sub of comparison results*/ > + pmovmskb %xmm1, %edx > + sub $0xffff, %edx /* if first 4 double_words are same, edx == 0xffff */ > + jnz L(less4_double_words) > + > + add $16, %rsi > + add $16, %rdi > + jmp L(continue_48_48) > + > + .p2align 4 > +L(continue_16_16): > + movdqu (%rdi), %xmm1 > + movdqu (%rsi), %xmm2 > + pcmpeqd %xmm1, %xmm0 /* Any null double_word? */ > + pcmpeqd %xmm2, %xmm1 /* compare first 4 double_words for equality */ > + psubb %xmm0, %xmm1 /* packed sub of comparison results*/ > + pmovmskb %xmm1, %edx > + sub $0xffff, %edx /* if first 4 double_words are same, edx == 0xffff */ > + jnz L(less4_double_words) > + > + movdqu 16(%rdi), %xmm3 > + movdqu 16(%rsi), %xmm4 > + pcmpeqd %xmm3, %xmm0 /* Any null double_word? */ > + pcmpeqd %xmm4, %xmm3 /* compare first 4 double_words for equality */ > + psubb %xmm0, %xmm3 /* packed sub of comparison results*/ > + pmovmskb %xmm3, %edx > + sub $0xffff, %edx /* if first 4 double_words are same, edx == 0xffff */ > + jnz L(less4_double_words_16) > + > + add $32, %rsi > + add $32, %rdi > + jmp L(continue_48_48) > + > + .p2align 4 > +L(continue_0_0): > + movdqu (%rdi), %xmm1 > + movdqu (%rsi), %xmm2 > + pcmpeqd %xmm1, %xmm0 /* Any null double_word? */ > + pcmpeqd %xmm2, %xmm1 /* compare first 4 double_words for equality */ > + psubb %xmm0, %xmm1 /* packed sub of comparison results*/ > + pmovmskb %xmm1, %edx > + sub $0xffff, %edx /* if first 4 double_words are same, edx == 0xffff */ > + jnz L(less4_double_words) > + > + movdqu 16(%rdi), %xmm3 > + movdqu 16(%rsi), %xmm4 > + pcmpeqd %xmm3, %xmm0 /* Any null double_word? */ > + pcmpeqd %xmm4, %xmm3 /* compare first 4 double_words for equality */ > + psubb %xmm0, %xmm3 /* packed sub of comparison results*/ > + pmovmskb %xmm3, %edx > + sub $0xffff, %edx /* if first 4 double_words are same, edx == 0xffff */ > + jnz L(less4_double_words_16) > + > + movdqu 32(%rdi), %xmm1 > + movdqu 32(%rsi), %xmm2 > + pcmpeqd %xmm1, %xmm0 /* Any null double_word? */ > + pcmpeqd %xmm2, %xmm1 /* compare first 4 double_words for equality */ > + psubb %xmm0, %xmm1 /* packed sub of comparison results*/ > + pmovmskb %xmm1, %edx > + sub $0xffff, %edx /* if first 4 double_words are same, edx == 0xffff */ > + jnz L(less4_double_words_32) > + > + add $48, %rsi > + add $48, %rdi > + jmp L(continue_48_48) > + > + .p2align 4 > +L(continue_0_16): > + movdqu (%rdi), %xmm1 > + movdqu (%rsi), %xmm2 > + pcmpeqd %xmm1, %xmm0 /* Any null double_word? */ > + pcmpeqd %xmm2, %xmm1 /* compare first 4 double_words for equality */ > + psubb %xmm0, %xmm1 /* packed sub of comparison results*/ > + pmovmskb %xmm1, %edx > + sub $0xffff, %edx /* if first 4 double_words are same, edx == 0xffff */ > + jnz L(less4_double_words) > + > + movdqu 16(%rdi), %xmm1 > + movdqu 16(%rsi), %xmm2 > + pcmpeqd %xmm1, %xmm0 /* Any null double_word? */ > + pcmpeqd %xmm2, %xmm1 /* compare first 4 double_words for equality */ > + psubb %xmm0, %xmm1 /* packed sub of comparison results*/ > + pmovmskb %xmm1, %edx > + sub $0xffff, %edx /* if first 4 double_words are same, edx == 0xffff */ > + jnz L(less4_double_words_16) > + > + add $32, %rsi > + add $32, %rdi > + jmp L(continue_32_48) > + > + .p2align 4 > +L(continue_0_32): > + movdqu (%rdi), %xmm1 > + movdqu (%rsi), %xmm2 > + pcmpeqd %xmm1, %xmm0 /* Any null double_word? */ > + pcmpeqd %xmm2, %xmm1 /* compare first 4 double_words for equality */ > + psubb %xmm0, %xmm1 /* packed sub of comparison results*/ > + pmovmskb %xmm1, %edx > + sub $0xffff, %edx /* if first 4 double_words are same, edx == 0xffff */ > + jnz L(less4_double_words) > + > + add $16, %rsi > + add $16, %rdi > + jmp L(continue_16_48) > + > + .p2align 4 > +L(continue_16_32): > + movdqu (%rdi), %xmm1 > + movdqu (%rsi), %xmm2 > + pcmpeqd %xmm1, %xmm0 /* Any null double_word? */ > + pcmpeqd %xmm2, %xmm1 /* compare first 4 double_words for equality */ > + psubb %xmm0, %xmm1 /* packed sub of comparison results*/ > + pmovmskb %xmm1, %edx > + sub $0xffff, %edx /* if first 4 double_words are same, edx == 0xffff */ > + jnz L(less4_double_words) > + > + add $16, %rsi > + add $16, %rdi > + jmp L(continue_32_48) > + > + .p2align 4 > +L(less4_double_words1): > + cmp (%rsi), %eax > + jne L(nequal) > + test %eax, %eax > + jz L(equal) > + > + mov 4(%rsi), %ecx > + cmp %ecx, 4(%rdi) > + jne L(nequal) > + test %ecx, %ecx > + jz L(equal) > + > + mov 8(%rsi), %ecx > + cmp %ecx, 8(%rdi) > + jne L(nequal) > + test %ecx, %ecx > + jz L(equal) > + > + mov 12(%rsi), %ecx > + cmp %ecx, 12(%rdi) > + jne L(nequal) > + xor %eax, %eax > + ret > + > + .p2align 4 > +L(less4_double_words): > + xor %eax, %eax > + test %dl, %dl > + jz L(next_two_double_words) > + and $15, %dl > + jz L(second_double_word) > + mov (%rdi), %eax > + cmp (%rsi), %eax > + jne L(nequal) > + ret > + > + .p2align 4 > +L(second_double_word): > + mov 4(%rdi), %eax > + cmp 4(%rsi), %eax > + jne L(nequal) > + ret > + > + .p2align 4 > +L(next_two_double_words): > + and $15, %dh > + jz L(fourth_double_word) > + mov 8(%rdi), %eax > + cmp 8(%rsi), %eax > + jne L(nequal) > + ret > + > + .p2align 4 > +L(fourth_double_word): > + mov 12(%rdi), %eax > + cmp 12(%rsi), %eax > + jne L(nequal) > + ret > + > + .p2align 4 > +L(less4_double_words_16): > + xor %eax, %eax > + test %dl, %dl > + jz L(next_two_double_words_16) > + and $15, %dl > + jz L(second_double_word_16) > + mov 16(%rdi), %eax > + cmp 16(%rsi), %eax > + jne L(nequal) > + ret > + > + .p2align 4 > +L(second_double_word_16): > + mov 20(%rdi), %eax > + cmp 20(%rsi), %eax > + jne L(nequal) > + ret > + > + .p2align 4 > +L(next_two_double_words_16): > + and $15, %dh > + jz L(fourth_double_word_16) > + mov 24(%rdi), %eax > + cmp 24(%rsi), %eax > + jne L(nequal) > + ret > + > + .p2align 4 > +L(fourth_double_word_16): > + mov 28(%rdi), %eax > + cmp 28(%rsi), %eax > + jne L(nequal) > + ret > + > + .p2align 4 > +L(less4_double_words_32): > + xor %eax, %eax > + test %dl, %dl > + jz L(next_two_double_words_32) > + and $15, %dl > + jz L(second_double_word_32) > + mov 32(%rdi), %eax > + cmp 32(%rsi), %eax > + jne L(nequal) > + ret > + > + .p2align 4 > +L(second_double_word_32): > + mov 36(%rdi), %eax > + cmp 36(%rsi), %eax > + jne L(nequal) > + ret > + > + .p2align 4 > +L(next_two_double_words_32): > + and $15, %dh > + jz L(fourth_double_word_32) > + mov 40(%rdi), %eax > + cmp 40(%rsi), %eax > + jne L(nequal) > + ret > + > + .p2align 4 > +L(fourth_double_word_32): > + mov 44(%rdi), %eax > + cmp 44(%rsi), %eax > + jne L(nequal) > + ret > + > + .p2align 4 > +L(less4_double_words_48): > + xor %eax, %eax > + test %dl, %dl > + jz L(next_two_double_words_48) > + and $15, %dl > + jz L(second_double_word_48) > + mov 48(%rdi), %eax > + cmp 48(%rsi), %eax > + jne L(nequal) > + ret > + > + .p2align 4 > +L(second_double_word_48): > + mov 52(%rdi), %eax > + cmp 52(%rsi), %eax > + jne L(nequal) > + ret > + > + .p2align 4 > +L(next_two_double_words_48): > + and $15, %dh > + jz L(fourth_double_word_48) > + mov 56(%rdi), %eax > + cmp 56(%rsi), %eax > + jne L(nequal) > + ret > + > + .p2align 4 > +L(fourth_double_word_48): > + mov 60(%rdi), %eax > + cmp 60(%rsi), %eax > + jne L(nequal) > + ret > + > + .p2align 4 > +L(nequal): > + mov $1, %eax > + jg L(nequal_bigger) > + neg %eax > + > +L(nequal_bigger): > + ret > + > + .p2align 4 > +L(equal): > + xor %rax, %rax > + ret > + > +END (STRCMP) > diff --git a/sysdeps/x86_64/wcscmp.S b/sysdeps/x86_64/wcscmp.S > index 5cb42f47b9..e04cdbf5fe 100644 > --- a/sysdeps/x86_64/wcscmp.S > +++ b/sysdeps/x86_64/wcscmp.S > @@ -16,936 +16,8 @@ > License along with the GNU C Library; if not, see > . */ > > -#include > +/* Symbol = __wcscmp. */ > > -/* Note: wcscmp uses signed comparison, not unsighed as in strcmp function. */ > - > - .text > -ENTRY (__wcscmp) > -/* > - * This implementation uses SSE to compare up to 16 bytes at a time. > -*/ > - mov %esi, %eax > - mov %edi, %edx > - pxor %xmm0, %xmm0 /* clear %xmm0 for null char checks */ > - mov %al, %ch > - mov %dl, %cl > - and $63, %eax /* rsi alignment in cache line */ > - and $63, %edx /* rdi alignment in cache line */ > - and $15, %cl > - jz L(continue_00) > - cmp $16, %edx > - jb L(continue_0) > - cmp $32, %edx > - jb L(continue_16) > - cmp $48, %edx > - jb L(continue_32) > - > -L(continue_48): > - and $15, %ch > - jz L(continue_48_00) > - cmp $16, %eax > - jb L(continue_0_48) > - cmp $32, %eax > - jb L(continue_16_48) > - cmp $48, %eax > - jb L(continue_32_48) > - > - .p2align 4 > -L(continue_48_48): > - mov (%rsi), %ecx > - cmp %ecx, (%rdi) > - jne L(nequal) > - test %ecx, %ecx > - jz L(equal) > - > - mov 4(%rsi), %ecx > - cmp %ecx, 4(%rdi) > - jne L(nequal) > - test %ecx, %ecx > - jz L(equal) > - > - mov 8(%rsi), %ecx > - cmp %ecx, 8(%rdi) > - jne L(nequal) > - test %ecx, %ecx > - jz L(equal) > - > - mov 12(%rsi), %ecx > - cmp %ecx, 12(%rdi) > - jne L(nequal) > - test %ecx, %ecx > - jz L(equal) > - > - movdqu 16(%rdi), %xmm1 > - movdqu 16(%rsi), %xmm2 > - pcmpeqd %xmm1, %xmm0 /* Any null double_word? */ > - pcmpeqd %xmm2, %xmm1 /* compare first 4 double_words for equality */ > - psubb %xmm0, %xmm1 /* packed sub of comparison results*/ > - pmovmskb %xmm1, %edx > - sub $0xffff, %edx /* if first 4 double_words are same, edx == 0xffff */ > - jnz L(less4_double_words_16) > - > - movdqu 32(%rdi), %xmm1 > - movdqu 32(%rsi), %xmm2 > - pcmpeqd %xmm1, %xmm0 /* Any null double_word? */ > - pcmpeqd %xmm2, %xmm1 /* compare first 4 double_words for equality */ > - psubb %xmm0, %xmm1 /* packed sub of comparison results*/ > - pmovmskb %xmm1, %edx > - sub $0xffff, %edx /* if first 4 double_words are same, edx == 0xffff */ > - jnz L(less4_double_words_32) > - > - movdqu 48(%rdi), %xmm1 > - movdqu 48(%rsi), %xmm2 > - pcmpeqd %xmm1, %xmm0 /* Any null double_word? */ > - pcmpeqd %xmm2, %xmm1 /* compare first 4 double_words for equality */ > - psubb %xmm0, %xmm1 /* packed sub of comparison results*/ > - pmovmskb %xmm1, %edx > - sub $0xffff, %edx /* if first 4 double_words are same, edx == 0xffff */ > - jnz L(less4_double_words_48) > - > - add $64, %rsi > - add $64, %rdi > - jmp L(continue_48_48) > - > -L(continue_0): > - and $15, %ch > - jz L(continue_0_00) > - cmp $16, %eax > - jb L(continue_0_0) > - cmp $32, %eax > - jb L(continue_0_16) > - cmp $48, %eax > - jb L(continue_0_32) > - > - .p2align 4 > -L(continue_0_48): > - mov (%rsi), %ecx > - cmp %ecx, (%rdi) > - jne L(nequal) > - test %ecx, %ecx > - jz L(equal) > - > - mov 4(%rsi), %ecx > - cmp %ecx, 4(%rdi) > - jne L(nequal) > - test %ecx, %ecx > - jz L(equal) > - > - mov 8(%rsi), %ecx > - cmp %ecx, 8(%rdi) > - jne L(nequal) > - test %ecx, %ecx > - jz L(equal) > - > - mov 12(%rsi), %ecx > - cmp %ecx, 12(%rdi) > - jne L(nequal) > - test %ecx, %ecx > - jz L(equal) > - > - movdqu 16(%rdi), %xmm1 > - movdqu 16(%rsi), %xmm2 > - pcmpeqd %xmm1, %xmm0 /* Any null double_word? */ > - pcmpeqd %xmm2, %xmm1 /* compare first 4 double_words for equality */ > - psubb %xmm0, %xmm1 /* packed sub of comparison results*/ > - pmovmskb %xmm1, %edx > - sub $0xffff, %edx /* if first 4 double_words are same, edx == 0xffff */ > - jnz L(less4_double_words_16) > - > - movdqu 32(%rdi), %xmm1 > - movdqu 32(%rsi), %xmm2 > - pcmpeqd %xmm1, %xmm0 /* Any null double_word? */ > - pcmpeqd %xmm2, %xmm1 /* compare first 4 double_words for equality */ > - psubb %xmm0, %xmm1 /* packed sub of comparison results*/ > - pmovmskb %xmm1, %edx > - sub $0xffff, %edx /* if first 4 double_words are same, edx == 0xffff */ > - jnz L(less4_double_words_32) > - > - mov 48(%rsi), %ecx > - cmp %ecx, 48(%rdi) > - jne L(nequal) > - test %ecx, %ecx > - jz L(equal) > - > - mov 52(%rsi), %ecx > - cmp %ecx, 52(%rdi) > - jne L(nequal) > - test %ecx, %ecx > - jz L(equal) > - > - mov 56(%rsi), %ecx > - cmp %ecx, 56(%rdi) > - jne L(nequal) > - test %ecx, %ecx > - jz L(equal) > - > - mov 60(%rsi), %ecx > - cmp %ecx, 60(%rdi) > - jne L(nequal) > - test %ecx, %ecx > - jz L(equal) > - > - add $64, %rsi > - add $64, %rdi > - jmp L(continue_0_48) > - > - .p2align 4 > -L(continue_00): > - and $15, %ch > - jz L(continue_00_00) > - cmp $16, %eax > - jb L(continue_00_0) > - cmp $32, %eax > - jb L(continue_00_16) > - cmp $48, %eax > - jb L(continue_00_32) > - > - .p2align 4 > -L(continue_00_48): > - pcmpeqd (%rdi), %xmm0 > - mov (%rdi), %eax > - pmovmskb %xmm0, %ecx > - test %ecx, %ecx > - jnz L(less4_double_words1) > - > - cmp (%rsi), %eax > - jne L(nequal) > - > - mov 4(%rdi), %eax > - cmp 4(%rsi), %eax > - jne L(nequal) > - > - mov 8(%rdi), %eax > - cmp 8(%rsi), %eax > - jne L(nequal) > - > - mov 12(%rdi), %eax > - cmp 12(%rsi), %eax > - jne L(nequal) > - > - movdqu 16(%rsi), %xmm2 > - pcmpeqd %xmm2, %xmm0 /* Any null double_word? */ > - pcmpeqd 16(%rdi), %xmm2 /* compare first 4 double_words for equality */ > - psubb %xmm0, %xmm2 /* packed sub of comparison results*/ > - pmovmskb %xmm2, %edx > - sub $0xffff, %edx /* if first 4 double_words are same, edx == 0xffff */ > - jnz L(less4_double_words_16) > - > - movdqu 32(%rsi), %xmm2 > - pcmpeqd %xmm2, %xmm0 /* Any null double_word? */ > - pcmpeqd 32(%rdi), %xmm2 /* compare first 4 double_words for equality */ > - psubb %xmm0, %xmm2 /* packed sub of comparison results*/ > - pmovmskb %xmm2, %edx > - sub $0xffff, %edx /* if first 4 double_words are same, edx == 0xffff */ > - jnz L(less4_double_words_32) > - > - movdqu 48(%rsi), %xmm2 > - pcmpeqd %xmm2, %xmm0 /* Any null double_word? */ > - pcmpeqd 48(%rdi), %xmm2 /* compare first 4 double_words for equality */ > - psubb %xmm0, %xmm2 /* packed sub of comparison results*/ > - pmovmskb %xmm2, %edx > - sub $0xffff, %edx /* if first 4 double_words are same, edx == 0xffff */ > - jnz L(less4_double_words_48) > - > - add $64, %rsi > - add $64, %rdi > - jmp L(continue_00_48) > - > - .p2align 4 > -L(continue_32): > - and $15, %ch > - jz L(continue_32_00) > - cmp $16, %eax > - jb L(continue_0_32) > - cmp $32, %eax > - jb L(continue_16_32) > - cmp $48, %eax > - jb L(continue_32_32) > - > - .p2align 4 > -L(continue_32_48): > - mov (%rsi), %ecx > - cmp %ecx, (%rdi) > - jne L(nequal) > - test %ecx, %ecx > - jz L(equal) > - > - mov 4(%rsi), %ecx > - cmp %ecx, 4(%rdi) > - jne L(nequal) > - test %ecx, %ecx > - jz L(equal) > - > - mov 8(%rsi), %ecx > - cmp %ecx, 8(%rdi) > - jne L(nequal) > - test %ecx, %ecx > - jz L(equal) > - > - mov 12(%rsi), %ecx > - cmp %ecx, 12(%rdi) > - jne L(nequal) > - test %ecx, %ecx > - jz L(equal) > - > - mov 16(%rsi), %ecx > - cmp %ecx, 16(%rdi) > - jne L(nequal) > - test %ecx, %ecx > - jz L(equal) > - > - mov 20(%rsi), %ecx > - cmp %ecx, 20(%rdi) > - jne L(nequal) > - test %ecx, %ecx > - jz L(equal) > - > - mov 24(%rsi), %ecx > - cmp %ecx, 24(%rdi) > - jne L(nequal) > - test %ecx, %ecx > - jz L(equal) > - > - mov 28(%rsi), %ecx > - cmp %ecx, 28(%rdi) > - jne L(nequal) > - test %ecx, %ecx > - jz L(equal) > - > - movdqu 32(%rdi), %xmm1 > - movdqu 32(%rsi), %xmm2 > - pcmpeqd %xmm1, %xmm0 /* Any null double_word? */ > - pcmpeqd %xmm2, %xmm1 /* compare first 4 double_words for equality */ > - psubb %xmm0, %xmm1 /* packed sub of comparison results*/ > - pmovmskb %xmm1, %edx > - sub $0xffff, %edx /* if first 4 double_words are same, edx == 0xffff */ > - jnz L(less4_double_words_32) > - > - movdqu 48(%rdi), %xmm1 > - movdqu 48(%rsi), %xmm2 > - pcmpeqd %xmm1, %xmm0 /* Any null double_word? */ > - pcmpeqd %xmm2, %xmm1 /* compare first 4 double_words for equality */ > - psubb %xmm0, %xmm1 /* packed sub of comparison results*/ > - pmovmskb %xmm1, %edx > - sub $0xffff, %edx /* if first 4 double_words are same, edx == 0xffff */ > - jnz L(less4_double_words_48) > - > - add $64, %rsi > - add $64, %rdi > - jmp L(continue_32_48) > - > - .p2align 4 > -L(continue_16): > - and $15, %ch > - jz L(continue_16_00) > - cmp $16, %eax > - jb L(continue_0_16) > - cmp $32, %eax > - jb L(continue_16_16) > - cmp $48, %eax > - jb L(continue_16_32) > - > - .p2align 4 > -L(continue_16_48): > - mov (%rsi), %ecx > - cmp %ecx, (%rdi) > - jne L(nequal) > - test %ecx, %ecx > - jz L(equal) > - > - mov 4(%rsi), %ecx > - cmp %ecx, 4(%rdi) > - jne L(nequal) > - test %ecx, %ecx > - jz L(equal) > - > - mov 8(%rsi), %ecx > - cmp %ecx, 8(%rdi) > - jne L(nequal) > - test %ecx, %ecx > - jz L(equal) > - > - mov 12(%rsi), %ecx > - cmp %ecx, 12(%rdi) > - jne L(nequal) > - test %ecx, %ecx > - jz L(equal) > - > - movdqu 16(%rdi), %xmm1 > - movdqu 16(%rsi), %xmm2 > - pcmpeqd %xmm1, %xmm0 /* Any null double_word? */ > - pcmpeqd %xmm2, %xmm1 /* compare first 4 double_words for equality */ > - psubb %xmm0, %xmm1 /* packed sub of comparison results*/ > - pmovmskb %xmm1, %edx > - sub $0xffff, %edx /* if first 4 double_words are same, edx == 0xffff */ > - jnz L(less4_double_words_16) > - > - mov 32(%rsi), %ecx > - cmp %ecx, 32(%rdi) > - jne L(nequal) > - test %ecx, %ecx > - jz L(equal) > - > - mov 36(%rsi), %ecx > - cmp %ecx, 36(%rdi) > - jne L(nequal) > - test %ecx, %ecx > - jz L(equal) > - > - mov 40(%rsi), %ecx > - cmp %ecx, 40(%rdi) > - jne L(nequal) > - test %ecx, %ecx > - jz L(equal) > - > - mov 44(%rsi), %ecx > - cmp %ecx, 44(%rdi) > - jne L(nequal) > - test %ecx, %ecx > - jz L(equal) > - > - movdqu 48(%rdi), %xmm1 > - movdqu 48(%rsi), %xmm2 > - pcmpeqd %xmm1, %xmm0 /* Any null double_word? */ > - pcmpeqd %xmm2, %xmm1 /* compare first 4 double_words for equality */ > - psubb %xmm0, %xmm1 /* packed sub of comparison results*/ > - pmovmskb %xmm1, %edx > - sub $0xffff, %edx /* if first 4 double_words are same, edx == 0xffff */ > - jnz L(less4_double_words_48) > - > - add $64, %rsi > - add $64, %rdi > - jmp L(continue_16_48) > - > - .p2align 4 > -L(continue_00_00): > - movdqa (%rdi), %xmm1 > - pcmpeqd %xmm1, %xmm0 /* Any null double_word? */ > - pcmpeqd (%rsi), %xmm1 /* compare first 4 double_words for equality */ > - psubb %xmm0, %xmm1 /* packed sub of comparison results*/ > - pmovmskb %xmm1, %edx > - sub $0xffff, %edx /* if first 4 double_words are same, edx == 0xffff */ > - jnz L(less4_double_words) > - > - movdqa 16(%rdi), %xmm3 > - pcmpeqd %xmm3, %xmm0 /* Any null double_word? */ > - pcmpeqd 16(%rsi), %xmm3 /* compare first 4 double_words for equality */ > - psubb %xmm0, %xmm3 /* packed sub of comparison results*/ > - pmovmskb %xmm3, %edx > - sub $0xffff, %edx /* if first 4 double_words are same, edx == 0xffff */ > - jnz L(less4_double_words_16) > - > - movdqa 32(%rdi), %xmm5 > - pcmpeqd %xmm5, %xmm0 /* Any null double_word? */ > - pcmpeqd 32(%rsi), %xmm5 /* compare first 4 double_words for equality */ > - psubb %xmm0, %xmm5 /* packed sub of comparison results*/ > - pmovmskb %xmm5, %edx > - sub $0xffff, %edx /* if first 4 double_words are same, edx == 0xffff */ > - jnz L(less4_double_words_32) > - > - movdqa 48(%rdi), %xmm1 > - pcmpeqd %xmm1, %xmm0 /* Any null double_word? */ > - pcmpeqd 48(%rsi), %xmm1 /* compare first 4 double_words for equality */ > - psubb %xmm0, %xmm1 /* packed sub of comparison results*/ > - pmovmskb %xmm1, %edx > - sub $0xffff, %edx /* if first 4 double_words are same, edx == 0xffff */ > - jnz L(less4_double_words_48) > - > - add $64, %rsi > - add $64, %rdi > - jmp L(continue_00_00) > - > - .p2align 4 > -L(continue_00_32): > - movdqu (%rsi), %xmm2 > - pcmpeqd %xmm2, %xmm0 /* Any null double_word? */ > - pcmpeqd (%rdi), %xmm2 /* compare first 4 double_words for equality */ > - psubb %xmm0, %xmm2 /* packed sub of comparison results*/ > - pmovmskb %xmm2, %edx > - sub $0xffff, %edx /* if first 4 double_words are same, edx == 0xffff */ > - jnz L(less4_double_words) > - > - add $16, %rsi > - add $16, %rdi > - jmp L(continue_00_48) > - > - .p2align 4 > -L(continue_00_16): > - movdqu (%rsi), %xmm2 > - pcmpeqd %xmm2, %xmm0 /* Any null double_word? */ > - pcmpeqd (%rdi), %xmm2 /* compare first 4 double_words for equality */ > - psubb %xmm0, %xmm2 /* packed sub of comparison results*/ > - pmovmskb %xmm2, %edx > - sub $0xffff, %edx /* if first 4 double_words are same, edx == 0xffff */ > - jnz L(less4_double_words) > - > - movdqu 16(%rsi), %xmm2 > - pcmpeqd %xmm2, %xmm0 /* Any null double_word? */ > - pcmpeqd 16(%rdi), %xmm2 /* compare first 4 double_words for equality */ > - psubb %xmm0, %xmm2 /* packed sub of comparison results*/ > - pmovmskb %xmm2, %edx > - sub $0xffff, %edx /* if first 4 double_words are same, edx == 0xffff */ > - jnz L(less4_double_words_16) > - > - add $32, %rsi > - add $32, %rdi > - jmp L(continue_00_48) > - > - .p2align 4 > -L(continue_00_0): > - movdqu (%rsi), %xmm2 > - pcmpeqd %xmm2, %xmm0 /* Any null double_word? */ > - pcmpeqd (%rdi), %xmm2 /* compare first 4 double_words for equality */ > - psubb %xmm0, %xmm2 /* packed sub of comparison results*/ > - pmovmskb %xmm2, %edx > - sub $0xffff, %edx /* if first 4 double_words are same, edx == 0xffff */ > - jnz L(less4_double_words) > - > - movdqu 16(%rsi), %xmm2 > - pcmpeqd %xmm2, %xmm0 /* Any null double_word? */ > - pcmpeqd 16(%rdi), %xmm2 /* compare first 4 double_words for equality */ > - psubb %xmm0, %xmm2 /* packed sub of comparison results*/ > - pmovmskb %xmm2, %edx > - sub $0xffff, %edx /* if first 4 double_words are same, edx == 0xffff */ > - jnz L(less4_double_words_16) > - > - movdqu 32(%rsi), %xmm2 > - pcmpeqd %xmm2, %xmm0 /* Any null double_word? */ > - pcmpeqd 32(%rdi), %xmm2 /* compare first 4 double_words for equality */ > - psubb %xmm0, %xmm2 /* packed sub of comparison results*/ > - pmovmskb %xmm2, %edx > - sub $0xffff, %edx /* if first 4 double_words are same, edx == 0xffff */ > - jnz L(less4_double_words_32) > - > - add $48, %rsi > - add $48, %rdi > - jmp L(continue_00_48) > - > - .p2align 4 > -L(continue_48_00): > - pcmpeqd (%rsi), %xmm0 > - mov (%rdi), %eax > - pmovmskb %xmm0, %ecx > - test %ecx, %ecx > - jnz L(less4_double_words1) > - > - cmp (%rsi), %eax > - jne L(nequal) > - > - mov 4(%rdi), %eax > - cmp 4(%rsi), %eax > - jne L(nequal) > - > - mov 8(%rdi), %eax > - cmp 8(%rsi), %eax > - jne L(nequal) > - > - mov 12(%rdi), %eax > - cmp 12(%rsi), %eax > - jne L(nequal) > - > - movdqu 16(%rdi), %xmm1 > - pcmpeqd %xmm1, %xmm0 /* Any null double_word? */ > - pcmpeqd 16(%rsi), %xmm1 /* compare first 4 double_words for equality */ > - psubb %xmm0, %xmm1 /* packed sub of comparison results*/ > - pmovmskb %xmm1, %edx > - sub $0xffff, %edx /* if first 4 double_words are same, edx == 0xffff */ > - jnz L(less4_double_words_16) > - > - movdqu 32(%rdi), %xmm1 > - pcmpeqd %xmm1, %xmm0 /* Any null double_word? */ > - pcmpeqd 32(%rsi), %xmm1 /* compare first 4 double_words for equality */ > - psubb %xmm0, %xmm1 /* packed sub of comparison results*/ > - pmovmskb %xmm1, %edx > - sub $0xffff, %edx /* if first 4 double_words are same, edx == 0xffff */ > - jnz L(less4_double_words_32) > - > - movdqu 48(%rdi), %xmm1 > - pcmpeqd %xmm1, %xmm0 /* Any null double_word? */ > - pcmpeqd 48(%rsi), %xmm1 /* compare first 4 double_words for equality */ > - psubb %xmm0, %xmm1 /* packed sub of comparison results*/ > - pmovmskb %xmm1, %edx > - sub $0xffff, %edx /* if first 4 double_words are same, edx == 0xffff */ > - jnz L(less4_double_words_48) > - > - add $64, %rsi > - add $64, %rdi > - jmp L(continue_48_00) > - > - .p2align 4 > -L(continue_32_00): > - movdqu (%rdi), %xmm1 > - pcmpeqd %xmm1, %xmm0 /* Any null double_word? */ > - pcmpeqd (%rsi), %xmm1 /* compare first 4 double_words for equality */ > - psubb %xmm0, %xmm1 /* packed sub of comparison results*/ > - pmovmskb %xmm1, %edx > - sub $0xffff, %edx /* if first 4 double_words are same, edx == 0xffff */ > - jnz L(less4_double_words) > - > - add $16, %rsi > - add $16, %rdi > - jmp L(continue_48_00) > - > - .p2align 4 > -L(continue_16_00): > - movdqu (%rdi), %xmm1 > - pcmpeqd %xmm1, %xmm0 /* Any null double_word? */ > - pcmpeqd (%rsi), %xmm1 /* compare first 4 double_words for equality */ > - psubb %xmm0, %xmm1 /* packed sub of comparison results*/ > - pmovmskb %xmm1, %edx > - sub $0xffff, %edx /* if first 4 double_words are same, edx == 0xffff */ > - jnz L(less4_double_words) > - > - movdqu 16(%rdi), %xmm1 > - pcmpeqd %xmm1, %xmm0 /* Any null double_word? */ > - pcmpeqd 16(%rsi), %xmm1 /* compare first 4 double_words for equality */ > - psubb %xmm0, %xmm1 /* packed sub of comparison results*/ > - pmovmskb %xmm1, %edx > - sub $0xffff, %edx /* if first 4 double_words are same, edx == 0xffff */ > - jnz L(less4_double_words_16) > - > - add $32, %rsi > - add $32, %rdi > - jmp L(continue_48_00) > - > - .p2align 4 > -L(continue_0_00): > - movdqu (%rdi), %xmm1 > - pcmpeqd %xmm1, %xmm0 /* Any null double_word? */ > - pcmpeqd (%rsi), %xmm1 /* compare first 4 double_words for equality */ > - psubb %xmm0, %xmm1 /* packed sub of comparison results*/ > - pmovmskb %xmm1, %edx > - sub $0xffff, %edx /* if first 4 double_words are same, edx == 0xffff */ > - jnz L(less4_double_words) > - > - movdqu 16(%rdi), %xmm1 > - pcmpeqd %xmm1, %xmm0 /* Any null double_word? */ > - pcmpeqd 16(%rsi), %xmm1 /* compare first 4 double_words for equality */ > - psubb %xmm0, %xmm1 /* packed sub of comparison results*/ > - pmovmskb %xmm1, %edx > - sub $0xffff, %edx /* if first 4 double_words are same, edx == 0xffff */ > - jnz L(less4_double_words_16) > - > - movdqu 32(%rdi), %xmm1 > - pcmpeqd %xmm1, %xmm0 /* Any null double_word? */ > - pcmpeqd 32(%rsi), %xmm1 /* compare first 4 double_words for equality */ > - psubb %xmm0, %xmm1 /* packed sub of comparison results*/ > - pmovmskb %xmm1, %edx > - sub $0xffff, %edx /* if first 4 double_words are same, edx == 0xffff */ > - jnz L(less4_double_words_32) > - > - add $48, %rsi > - add $48, %rdi > - jmp L(continue_48_00) > - > - .p2align 4 > -L(continue_32_32): > - movdqu (%rdi), %xmm1 > - movdqu (%rsi), %xmm2 > - pcmpeqd %xmm1, %xmm0 /* Any null double_word? */ > - pcmpeqd %xmm2, %xmm1 /* compare first 4 double_words for equality */ > - psubb %xmm0, %xmm1 /* packed sub of comparison results*/ > - pmovmskb %xmm1, %edx > - sub $0xffff, %edx /* if first 4 double_words are same, edx == 0xffff */ > - jnz L(less4_double_words) > - > - add $16, %rsi > - add $16, %rdi > - jmp L(continue_48_48) > - > - .p2align 4 > -L(continue_16_16): > - movdqu (%rdi), %xmm1 > - movdqu (%rsi), %xmm2 > - pcmpeqd %xmm1, %xmm0 /* Any null double_word? */ > - pcmpeqd %xmm2, %xmm1 /* compare first 4 double_words for equality */ > - psubb %xmm0, %xmm1 /* packed sub of comparison results*/ > - pmovmskb %xmm1, %edx > - sub $0xffff, %edx /* if first 4 double_words are same, edx == 0xffff */ > - jnz L(less4_double_words) > - > - movdqu 16(%rdi), %xmm3 > - movdqu 16(%rsi), %xmm4 > - pcmpeqd %xmm3, %xmm0 /* Any null double_word? */ > - pcmpeqd %xmm4, %xmm3 /* compare first 4 double_words for equality */ > - psubb %xmm0, %xmm3 /* packed sub of comparison results*/ > - pmovmskb %xmm3, %edx > - sub $0xffff, %edx /* if first 4 double_words are same, edx == 0xffff */ > - jnz L(less4_double_words_16) > - > - add $32, %rsi > - add $32, %rdi > - jmp L(continue_48_48) > - > - .p2align 4 > -L(continue_0_0): > - movdqu (%rdi), %xmm1 > - movdqu (%rsi), %xmm2 > - pcmpeqd %xmm1, %xmm0 /* Any null double_word? */ > - pcmpeqd %xmm2, %xmm1 /* compare first 4 double_words for equality */ > - psubb %xmm0, %xmm1 /* packed sub of comparison results*/ > - pmovmskb %xmm1, %edx > - sub $0xffff, %edx /* if first 4 double_words are same, edx == 0xffff */ > - jnz L(less4_double_words) > - > - movdqu 16(%rdi), %xmm3 > - movdqu 16(%rsi), %xmm4 > - pcmpeqd %xmm3, %xmm0 /* Any null double_word? */ > - pcmpeqd %xmm4, %xmm3 /* compare first 4 double_words for equality */ > - psubb %xmm0, %xmm3 /* packed sub of comparison results*/ > - pmovmskb %xmm3, %edx > - sub $0xffff, %edx /* if first 4 double_words are same, edx == 0xffff */ > - jnz L(less4_double_words_16) > - > - movdqu 32(%rdi), %xmm1 > - movdqu 32(%rsi), %xmm2 > - pcmpeqd %xmm1, %xmm0 /* Any null double_word? */ > - pcmpeqd %xmm2, %xmm1 /* compare first 4 double_words for equality */ > - psubb %xmm0, %xmm1 /* packed sub of comparison results*/ > - pmovmskb %xmm1, %edx > - sub $0xffff, %edx /* if first 4 double_words are same, edx == 0xffff */ > - jnz L(less4_double_words_32) > - > - add $48, %rsi > - add $48, %rdi > - jmp L(continue_48_48) > - > - .p2align 4 > -L(continue_0_16): > - movdqu (%rdi), %xmm1 > - movdqu (%rsi), %xmm2 > - pcmpeqd %xmm1, %xmm0 /* Any null double_word? */ > - pcmpeqd %xmm2, %xmm1 /* compare first 4 double_words for equality */ > - psubb %xmm0, %xmm1 /* packed sub of comparison results*/ > - pmovmskb %xmm1, %edx > - sub $0xffff, %edx /* if first 4 double_words are same, edx == 0xffff */ > - jnz L(less4_double_words) > - > - movdqu 16(%rdi), %xmm1 > - movdqu 16(%rsi), %xmm2 > - pcmpeqd %xmm1, %xmm0 /* Any null double_word? */ > - pcmpeqd %xmm2, %xmm1 /* compare first 4 double_words for equality */ > - psubb %xmm0, %xmm1 /* packed sub of comparison results*/ > - pmovmskb %xmm1, %edx > - sub $0xffff, %edx /* if first 4 double_words are same, edx == 0xffff */ > - jnz L(less4_double_words_16) > - > - add $32, %rsi > - add $32, %rdi > - jmp L(continue_32_48) > - > - .p2align 4 > -L(continue_0_32): > - movdqu (%rdi), %xmm1 > - movdqu (%rsi), %xmm2 > - pcmpeqd %xmm1, %xmm0 /* Any null double_word? */ > - pcmpeqd %xmm2, %xmm1 /* compare first 4 double_words for equality */ > - psubb %xmm0, %xmm1 /* packed sub of comparison results*/ > - pmovmskb %xmm1, %edx > - sub $0xffff, %edx /* if first 4 double_words are same, edx == 0xffff */ > - jnz L(less4_double_words) > - > - add $16, %rsi > - add $16, %rdi > - jmp L(continue_16_48) > - > - .p2align 4 > -L(continue_16_32): > - movdqu (%rdi), %xmm1 > - movdqu (%rsi), %xmm2 > - pcmpeqd %xmm1, %xmm0 /* Any null double_word? */ > - pcmpeqd %xmm2, %xmm1 /* compare first 4 double_words for equality */ > - psubb %xmm0, %xmm1 /* packed sub of comparison results*/ > - pmovmskb %xmm1, %edx > - sub $0xffff, %edx /* if first 4 double_words are same, edx == 0xffff */ > - jnz L(less4_double_words) > - > - add $16, %rsi > - add $16, %rdi > - jmp L(continue_32_48) > - > - .p2align 4 > -L(less4_double_words1): > - cmp (%rsi), %eax > - jne L(nequal) > - test %eax, %eax > - jz L(equal) > - > - mov 4(%rsi), %ecx > - cmp %ecx, 4(%rdi) > - jne L(nequal) > - test %ecx, %ecx > - jz L(equal) > - > - mov 8(%rsi), %ecx > - cmp %ecx, 8(%rdi) > - jne L(nequal) > - test %ecx, %ecx > - jz L(equal) > - > - mov 12(%rsi), %ecx > - cmp %ecx, 12(%rdi) > - jne L(nequal) > - xor %eax, %eax > - ret > - > - .p2align 4 > -L(less4_double_words): > - xor %eax, %eax > - test %dl, %dl > - jz L(next_two_double_words) > - and $15, %dl > - jz L(second_double_word) > - mov (%rdi), %eax > - cmp (%rsi), %eax > - jne L(nequal) > - ret > - > - .p2align 4 > -L(second_double_word): > - mov 4(%rdi), %eax > - cmp 4(%rsi), %eax > - jne L(nequal) > - ret > - > - .p2align 4 > -L(next_two_double_words): > - and $15, %dh > - jz L(fourth_double_word) > - mov 8(%rdi), %eax > - cmp 8(%rsi), %eax > - jne L(nequal) > - ret > - > - .p2align 4 > -L(fourth_double_word): > - mov 12(%rdi), %eax > - cmp 12(%rsi), %eax > - jne L(nequal) > - ret > - > - .p2align 4 > -L(less4_double_words_16): > - xor %eax, %eax > - test %dl, %dl > - jz L(next_two_double_words_16) > - and $15, %dl > - jz L(second_double_word_16) > - mov 16(%rdi), %eax > - cmp 16(%rsi), %eax > - jne L(nequal) > - ret > - > - .p2align 4 > -L(second_double_word_16): > - mov 20(%rdi), %eax > - cmp 20(%rsi), %eax > - jne L(nequal) > - ret > - > - .p2align 4 > -L(next_two_double_words_16): > - and $15, %dh > - jz L(fourth_double_word_16) > - mov 24(%rdi), %eax > - cmp 24(%rsi), %eax > - jne L(nequal) > - ret > - > - .p2align 4 > -L(fourth_double_word_16): > - mov 28(%rdi), %eax > - cmp 28(%rsi), %eax > - jne L(nequal) > - ret > - > - .p2align 4 > -L(less4_double_words_32): > - xor %eax, %eax > - test %dl, %dl > - jz L(next_two_double_words_32) > - and $15, %dl > - jz L(second_double_word_32) > - mov 32(%rdi), %eax > - cmp 32(%rsi), %eax > - jne L(nequal) > - ret > - > - .p2align 4 > -L(second_double_word_32): > - mov 36(%rdi), %eax > - cmp 36(%rsi), %eax > - jne L(nequal) > - ret > - > - .p2align 4 > -L(next_two_double_words_32): > - and $15, %dh > - jz L(fourth_double_word_32) > - mov 40(%rdi), %eax > - cmp 40(%rsi), %eax > - jne L(nequal) > - ret > - > - .p2align 4 > -L(fourth_double_word_32): > - mov 44(%rdi), %eax > - cmp 44(%rsi), %eax > - jne L(nequal) > - ret > - > - .p2align 4 > -L(less4_double_words_48): > - xor %eax, %eax > - test %dl, %dl > - jz L(next_two_double_words_48) > - and $15, %dl > - jz L(second_double_word_48) > - mov 48(%rdi), %eax > - cmp 48(%rsi), %eax > - jne L(nequal) > - ret > - > - .p2align 4 > -L(second_double_word_48): > - mov 52(%rdi), %eax > - cmp 52(%rsi), %eax > - jne L(nequal) > - ret > - > - .p2align 4 > -L(next_two_double_words_48): > - and $15, %dh > - jz L(fourth_double_word_48) > - mov 56(%rdi), %eax > - cmp 56(%rsi), %eax > - jne L(nequal) > - ret > - > - .p2align 4 > -L(fourth_double_word_48): > - mov 60(%rdi), %eax > - cmp 60(%rsi), %eax > - jne L(nequal) > - ret > - > - .p2align 4 > -L(nequal): > - mov $1, %eax > - jg L(nequal_bigger) > - neg %eax > - > -L(nequal_bigger): > - ret > - > - .p2align 4 > -L(equal): > - xor %rax, %rax > - ret > - > -END (__wcscmp) > -#ifndef __wcscmp > +#include "multiarch/wcscmp-sse2.S" > libc_hidden_def (__wcscmp) > weak_alias (__wcscmp, wcscmp) > -#endif > -- > 2.34.1 > LGTM. Thanks. -- H.J.