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

--- Comment #1 from JuzheZhong <juzhe.zhong at rivai dot ai> ---
Oh. I see.

with -fno-vect-cost-model, it can SLP now:

https://godbolt.org/z/q5se4sd9x

foo:
        beq     a3,zero,.L8
        csrr    a6,vlenb
        srli    a4,a6,3
        slli    a3,a3,1
        neg     t1,a4
        vsetvli a5,zero,e64,m1,ta,ma
        vmv.v.i v2,1
        vid.v   v0
        vand.vi v0,v0,1
        vmseq.vi        v0,v0,1
        vmerge.vim      v2,v2,2,v0
.L3:
        minu    a5,a3,a4
        vsetvli zero,a5,e64,m1,ta,ma
        mv      a7,a3
        vle64.v v1,0(a2)
        vsll.vi v1,v1,3
        vluxei64.v      v1,(a1),v1
        vadd.vv v1,v1,v2
        vse64.v v1,0(a0)
        add     a2,a2,a6
        add     a0,a0,a6
        add     a3,a3,t1
        bgtu    a7,a4,.L3
.L8:
        ret

It's odd.... I think SLP should always preferrable choice.

Reply via email to