[PATCH 12/12] RISC-V: Size optimized versions: Replace add with addi

Kito Cheng kito.cheng@gmail.com
Wed Apr 9 07:21:02 GMT 2025


LGTM

On Wed, Apr 9, 2025 at 2:56 PM m fally <marlene.fally@gmail.com> wrote:
>
> Replace add instructions with addi where applicable in
> the size optimized versions of memmove(), memset(), memcpy(),
> and strcmp(). This change does not affect the functions themselves
> and is only done to improve syntactic accuracy.
>
> Reviewed-by: Christian Herber <christian.herber@oss.nxp.com>
> Signed-off-by: m fally <marlene.fally@gmail.com>
> ---
>  newlib/libc/machine/riscv/memcpy-asm.S | 6 +++---
>  newlib/libc/machine/riscv/memmove.S    | 2 +-
>  newlib/libc/machine/riscv/memset.S     | 4 ++--
>  newlib/libc/machine/riscv/strcmp.S     | 4 ++--
>  4 files changed, 8 insertions(+), 8 deletions(-)
>
> diff --git a/newlib/libc/machine/riscv/memcpy-asm.S b/newlib/libc/machine/riscv/memcpy-asm.S
> index e9fe381d9..2771285f9 100644
> --- a/newlib/libc/machine/riscv/memcpy-asm.S
> +++ b/newlib/libc/machine/riscv/memcpy-asm.S
> @@ -20,9 +20,9 @@ memcpy:
>  1:
>    lbu a4, 0(a1)
>    sb a4, 0(a3)
> -  add   a2, a2, -1
> -  add   a3, a3, 1
> -  add   a1, a1, 1
> +  addi   a2, a2, -1
> +  addi   a3, a3, 1
> +  addi   a1, a1, 1
>    bnez a2, 1b
>
>  2:
> diff --git a/newlib/libc/machine/riscv/memmove.S b/newlib/libc/machine/riscv/memmove.S
> index 6ecad9ad6..061472ca2 100644
> --- a/newlib/libc/machine/riscv/memmove.S
> +++ b/newlib/libc/machine/riscv/memmove.S
> @@ -29,7 +29,7 @@ memmove:
>    add   a1, a1, a3
>  .Lcopy:
>    lbu a5, 0(a1)
> -  add   a2, a2, -1             /* copy bytes as long as a2 (= the number of bytes to be copied) > 0. the increment is done here to relax the RAW dependency between load and store */
> +  addi   a2, a2, -1            /* copy bytes as long as a2 (= the number of bytes to be copied) > 0. the increment is done here to relax the RAW dependency between load and store */
>    sb a5, 0(a4)
>    bnez a2, .Lincrement
>
> diff --git a/newlib/libc/machine/riscv/memset.S b/newlib/libc/machine/riscv/memset.S
> index 943835dc5..3d207e7eb 100644
> --- a/newlib/libc/machine/riscv/memset.S
> +++ b/newlib/libc/machine/riscv/memset.S
> @@ -19,8 +19,8 @@ memset:
>
>  .Lset:
>    sb a1, 0(a3)
> -  add   a2, a2, -1
> -  add   a3, a3, 1
> +  addi   a2, a2, -1
> +  addi   a3, a3, 1
>    bnez a2, .Lset
>
>  .Ldone:
> diff --git a/newlib/libc/machine/riscv/strcmp.S b/newlib/libc/machine/riscv/strcmp.S
> index b49569db5..2b2447df5 100644
> --- a/newlib/libc/machine/riscv/strcmp.S
> +++ b/newlib/libc/machine/riscv/strcmp.S
> @@ -19,8 +19,8 @@ strcmp:
>  1:
>    lbu   a2, 0(a0)
>    lbu   a3, 0(a1)
> -  add   a0, a0, 1
> -  add   a1, a1, 1
> +  addi   a0, a0, 1
> +  addi   a1, a1, 1
>    bne   a2, a3, 2f
>    bnez  a2, 1b
>
> --
> 2.49.0
>


More information about the Newlib mailing list