From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on gnuweeb.org X-Spam-Level: X-Spam-Status: No, score=-1.2 required=5.0 tests=ALL_TRUSTED,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,URIBL_BLOCKED, URIBL_DBL_BLOCKED_OPENDNS autolearn=ham autolearn_force=no version=3.4.6 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gnuweeb.org; s=default; t=1693634884; bh=KGXS6wf0NXvMG0rOmMY/SungdUqyUjqt8ehUNcjdL/4=; h=References:In-Reply-To:From:Date:Subject:To:Cc; b=TxzBHOucnIOiHBDt3B+ERMB3siqF3s5aUGhJvxsgqj8TSFtc7eL2+C/d4/9HTj+4/ ch+7AeQfsd71t4x3xsADrcwyaCVYfFzTyHoq+GUqqtpHfvvIa+QDwss8OQqCfwIxYu i6cIysPhIhYfKam/dB0q4c/GQn+yEHk4VYiL50akKt7w11RyuB5dgYOVaYQWCWMyk0 D1prex5FbhYou+akNAFGD5QKZHCpHeD19VjyO/HUe3MMusBsf6OD2+kRz9i5n+Iryb giW+za5ZmUS4DenRMOaMXV0KCjoC3fA850+xcJA+H5s4tvI0url3t2NM6rySTsMRe0 Ks2kLVZlcde0w== Received: from mail-lf1-f52.google.com (mail-lf1-f52.google.com [209.85.167.52]) by gnuweeb.org (Postfix) with ESMTPSA id F383A24B3B5 for ; Sat, 2 Sep 2023 13:08:03 +0700 (WIB) Received: by mail-lf1-f52.google.com with SMTP id 2adb3069b0e04-4ff8cf11b90so4796489e87.1 for ; Fri, 01 Sep 2023 23:08:03 -0700 (PDT) X-Gm-Message-State: AOJu0Yzl5d0p2ddAzivRuLgnVYgTwNZUYRgaX47AN4bfxpj0Gu+GQsUz gK0lIMRwgvtfiUnbk/K2QSlOcdGKoOaiCPR9wik= X-Google-Smtp-Source: AGHT+IHwdYAwiETgdVehokm0E3YRSYOKGsHwXP9tp1jBiGz/WCIJNAIsrHnuiC8BVPFRuuMFkEdVcxndR7yHM2qO6RI= X-Received: by 2002:a05:6512:3b26:b0:500:b2f6:592 with SMTP id f38-20020a0565123b2600b00500b2f60592mr3268630lfv.50.1693634881845; Fri, 01 Sep 2023 23:08:01 -0700 (PDT) MIME-Version: 1.0 References: <20230902055045.2138405-1-ammarfaizi2@gnuweeb.org> <20230902055045.2138405-2-ammarfaizi2@gnuweeb.org> In-Reply-To: <20230902055045.2138405-2-ammarfaizi2@gnuweeb.org> From: Alviro Iskandar Setiawan Date: Sat, 2 Sep 2023 13:07:50 +0700 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [RFC PATCH v2 1/4] tools/nolibc: x86-64: Use `rep movsb` for `memcpy()` and `memmove()` To: Ammar Faizi Cc: Willy Tarreau , =?UTF-8?Q?Thomas_Wei=C3=9Fschuh?= , David Laight , Nicholas Rosenberg , Michael William Jonathan , "GNU/Weeb Mailing List" , Linux Kernel Mailing List Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable List-Id: On Sat, Sep 2, 2023 at 12:51=E2=80=AFPM Ammar Faizi wrote: > +__asm__ ( > +".section .text.nolibc_memmove\n" > +".weak memmove\n" > +"memmove:\n" > + "movq %rdx, %rcx\n" > + "movq %rdi, %rdx\n" > + "movq %rdi, %rax\n" > + "subq %rsi, %rdx\n" > + "cmpq %rcx, %rdx\n" > + "jnb .Lforward_copy\n" > + "leaq -1(%rdi, %rcx, 1), %rdi\n" > + "leaq -1(%rsi, %rcx, 1), %rsi\n" > + "std\n" > + "rep movsb\n" > + "cld\n" > + "retq\n" > +".Lforward_copy:\n" > + "rep movsb\n" > + "retq\n" > + > +".section .text.nolibc_memcpy\n" > +".weak memcpy\n" > +"memcpy:\n" > + "movq %rdi, %rax\n" > + "movq %rdx, %rcx\n" > + "rep movsb\n" > + "retq\n" > +); Btw, sir, this can be simplified more by merging the forward copy path, only using two "rep movsb" for both memmove() and memcpy() should be enough? ``` __asm__ ( ".section .text.nolibc_memmove_memcpy\n" ".weak memmove\n" ".weak memcpy\n" "memmove:\n" "movq %rdx, %rcx\n" "movq %rdi, %rdx\n" "movq %rdi, %rax\n" "subq %rsi, %rdx\n" "cmpq %rcx, %rdx\n" "jnb __nolibc_forward_copy\n" "leaq -1(%rdi, %rcx, 1), %rdi\n" "leaq -1(%rsi, %rcx, 1), %rsi\n" "std\n" "rep movsb\n" "cld\n" "retq\n" "memcpy:\n" "movq %rdi, %rax\n" "movq %rdx, %rcx\n" "__nolibc_forward_copy:\n" "rep movsb\n" "retq\n" ); ``` Thought? -- Viro