[PATCH] LoongArch: vDSO: vgetrandom-chacha: Make use of the t8 register

Xi Ruoyao posted 1 patch 9 months, 3 weeks ago
arch/loongarch/vdso/vgetrandom-chacha.S | 13 +++----------
1 file changed, 3 insertions(+), 10 deletions(-)
[PATCH] LoongArch: vDSO: vgetrandom-chacha: Make use of the t8 register
Posted by Xi Ruoyao 9 months, 3 weeks ago
So we don't need to reuse a register and rematerialize a constant.  I
couldn't count :(.

Signed-off-by: Xi Ruoyao <xry111@xry111.site>
---

Tested with vdso_test_getrandom and vdso_test_chacha.

 arch/loongarch/vdso/vgetrandom-chacha.S | 13 +++----------
 1 file changed, 3 insertions(+), 10 deletions(-)

diff --git a/arch/loongarch/vdso/vgetrandom-chacha.S b/arch/loongarch/vdso/vgetrandom-chacha.S
index c2733e6c3a8d..c4dd2bab8825 100644
--- a/arch/loongarch/vdso/vgetrandom-chacha.S
+++ b/arch/loongarch/vdso/vgetrandom-chacha.S
@@ -58,9 +58,7 @@ SYM_FUNC_START(__arch_chacha20_blocks_nostack)
 #define copy0		t5
 #define copy1		t6
 #define copy2		t7
-
-/* Reuse i as copy3 */
-#define copy3		i
+#define copy3		t8
 
 /* Packs to be used with OP_4REG */
 #define line0		state0, state1, state2, state3
@@ -99,6 +97,7 @@ SYM_FUNC_START(__arch_chacha20_blocks_nostack)
 	li.w		copy0, 0x61707865
 	li.w		copy1, 0x3320646e
 	li.w		copy2, 0x79622d32
+	li.w		copy3, 0x6b206574
 
 	ld.w		cnt_lo, counter, 0
 	ld.w		cnt_hi, counter, 4
@@ -108,7 +107,7 @@ SYM_FUNC_START(__arch_chacha20_blocks_nostack)
 	move		state0, copy0
 	move		state1, copy1
 	move		state2, copy2
-	li.w		state3, 0x6b206574
+	move		state3, copy3
 
 	/* state[4,5,..,11] = key */
 	ld.w		state4, key, 0
@@ -167,12 +166,6 @@ SYM_FUNC_START(__arch_chacha20_blocks_nostack)
 	addi.w		i, i, -1
 	bnez		i, .Lpermute
 
-	/*
-	 * copy[3] = "expa", materialize it here because copy[3] shares the
-	 * same register with i which just became dead.
-	 */
-	li.w		copy3, 0x6b206574
-
 	/* output[0,1,2,3] = copy[0,1,2,3] + state[0,1,2,3] */
 	OP_4REG	add.w	line0, copy
 	st.w		state0, output, 0
-- 
2.48.1
Re: [PATCH] LoongArch: vDSO: vgetrandom-chacha: Make use of the t8 register
Posted by Huacai Chen 9 months, 3 weeks ago
Applied, thanks.

Huacai

On Fri, Feb 21, 2025 at 7:34 PM Xi Ruoyao <xry111@xry111.site> wrote:
>
> So we don't need to reuse a register and rematerialize a constant.  I
> couldn't count :(.
>
> Signed-off-by: Xi Ruoyao <xry111@xry111.site>
> ---
>
> Tested with vdso_test_getrandom and vdso_test_chacha.
>
>  arch/loongarch/vdso/vgetrandom-chacha.S | 13 +++----------
>  1 file changed, 3 insertions(+), 10 deletions(-)
>
> diff --git a/arch/loongarch/vdso/vgetrandom-chacha.S b/arch/loongarch/vdso/vgetrandom-chacha.S
> index c2733e6c3a8d..c4dd2bab8825 100644
> --- a/arch/loongarch/vdso/vgetrandom-chacha.S
> +++ b/arch/loongarch/vdso/vgetrandom-chacha.S
> @@ -58,9 +58,7 @@ SYM_FUNC_START(__arch_chacha20_blocks_nostack)
>  #define copy0          t5
>  #define copy1          t6
>  #define copy2          t7
> -
> -/* Reuse i as copy3 */
> -#define copy3          i
> +#define copy3          t8
>
>  /* Packs to be used with OP_4REG */
>  #define line0          state0, state1, state2, state3
> @@ -99,6 +97,7 @@ SYM_FUNC_START(__arch_chacha20_blocks_nostack)
>         li.w            copy0, 0x61707865
>         li.w            copy1, 0x3320646e
>         li.w            copy2, 0x79622d32
> +       li.w            copy3, 0x6b206574
>
>         ld.w            cnt_lo, counter, 0
>         ld.w            cnt_hi, counter, 4
> @@ -108,7 +107,7 @@ SYM_FUNC_START(__arch_chacha20_blocks_nostack)
>         move            state0, copy0
>         move            state1, copy1
>         move            state2, copy2
> -       li.w            state3, 0x6b206574
> +       move            state3, copy3
>
>         /* state[4,5,..,11] = key */
>         ld.w            state4, key, 0
> @@ -167,12 +166,6 @@ SYM_FUNC_START(__arch_chacha20_blocks_nostack)
>         addi.w          i, i, -1
>         bnez            i, .Lpermute
>
> -       /*
> -        * copy[3] = "expa", materialize it here because copy[3] shares the
> -        * same register with i which just became dead.
> -        */
> -       li.w            copy3, 0x6b206574
> -
>         /* output[0,1,2,3] = copy[0,1,2,3] + state[0,1,2,3] */
>         OP_4REG add.w   line0, copy
>         st.w            state0, output, 0
> --
> 2.48.1
>