https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111720

--- Comment #4 from JuzheZhong <juzhe.zhong at rivai dot ai> ---
I found this is not because VLS modes.

with --param=riscv-autovec-preference=fixed-vlmax

disabling VLS modes also see unnecessary load/store:

fn:
        lui     a5,%hi(.LANCHOR0)
        addi    sp,sp,-32
        addi    a5,a5,%lo(.LANCHOR0)
        vl2re64.v       v8,0(a5)   ----- ??? unnecessary
        li      a4,32
        vs2r.v  v8,0(sp)            ----- ??? unnecessary
        vsetvli zero,a4,e8,m1,ta,ma
        vle8.v  v0,0(sp)
        vand.vi v0,v0,1
        addi    sp,sp,32
        jr      ra

The optimized tree is reasonable, but after the "expand" stage, the redundant
load and store are produced.

Reply via email to