On Wed, 2025-01-22 at 12:00 +0800, Lulu Cheng wrote:

> > 
> > Currently, command fusion can only be done in the following situations:
> > 
> > bstrpick.d rd, rs, 31, 0 + alsl.d rd1,rj,rk,shamt and "rd = rj"
> I learned from my colleagues that to do command fusion, we need to meet 
> rd! =rs.

Hmm but with a toy example:

.p2align 5
.globl main

main:
        li.d $a0, 115
        li.d $a1, 514

        li.d $t1, 1000000

1:
.rept 1000
#ifdef AVOID_RD_EQUAL_RS
        move $t0, $a0
#define SRC t0
#else
#define SRC a0
#endif
        bstrpick.d $a0, $SRC, 31, 0
        alsl.d $a0, $a0, $a1, 2
.endr
        addi.d $t1, $t1, -1
        bnez $t1, 1b

        ret

-DAVOID_RD_EQUAL_RS actually makes the program slower (on LA464)...  So
I don't think it's really beneficial to deliberate insert a move.

-- 
Xi Ruoyao <xry...@xry111.site>
School of Aerospace Science and Technology, Xidian University

Reply via email to