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

            Bug ID: 114516
           Summary: RISC-V: TSVC2 s315 has spill with dynamic lmul
           Product: gcc
           Version: unknown
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: target
          Assignee: unassigned at gcc dot gnu.org
          Reporter: deminhan at gcc dot gnu.org
  Target Milestone: ---

-march=rv64gcv_zba_zbb -mabi=lp64d -mrvv-max-lmul=dynamic -O3

typedef float real_t;
__attribute__((aligned(64))) real_t a[32000];
real_t s315()
{
    for (int i = 0; i < 32000; i++)
        a[i] = (i * 7) % 32000;
    real_t x, chksum;
    int index;
    for (int nl = 0; nl < 256; nl++) {
        x = a[0];
        index = 0;
        for (int i = 0; i < 32000; ++i) {
            if (a[i] > x) {
                x = a[i];
                index = i;
            }
        }
        chksum = x + (real_t) index;
    }
    return index + x + 1;
}

M8 is selected and has register spill.
.LFB0:
        .cfi_startproc
        li      a2,274878464
        vsetvli a1,zero,e32,m8,ta,ma
        addiw   a2,a2,-557
        vmv.v.x v8,a2
        csrr    t0,vlenb
        slli    t1,t0,3
        li      a4,32768
        addiw   a4,a4,-768
        sub     sp,sp,t1
        .cfi_escape 0xf,0x9,0x72,0,0x92,0xa2,0x38,0,0x40,0x1e,0x22
        vs8r.v  v8,0(sp)
        vmv.v.x v8,a4
        li      a3,32768
        lui     a4,%hi(a)
        vmv8r.v v0,v8
        vid.v   v16
        addi    a6,a4,%lo(a)
        addi    a3,a3,-768
        addi    a4,a4,%lo(a)
.L2:
        vsetvli a5,a3,e8,m2,ta,ma
        vsetvli a2,zero,e32,m8,ta,ma
        vmv.v.i v8,7
        vsetvli zero,a5,e32,m8,ta,ma
        sub     a3,a3,a5
        vmul.vv v24,v16,v8
        vl8re32.v       v8,0(sp)
        vmulh.vv        v8,v24,v8
        vsra.vi v8,v8,11
        vnmsub.vv       v8,v0,v24
        vsetvli a2,zero,e32,m8,ta,ma
        vmv.v.x v24,a5
        vsetvli zero,a5,e32,m8,ta,ma
        vfcvt.f.x.v     v8,v8
        vsetvli a2,zero,e32,m8,ta,ma
        vadd.vv v16,v16,v24
        vsetvli zero,a5,e32,m8,ta,ma
        vse32.v v8,0(a4)
        sh2add  a4,a5,a4
        bne     a3,zero,.L2
        flw     fa3,0(a6)
        li      a3,32768
        addi    a3,a3,-768
        li      a0,256

Reply via email to