https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114506
Bug ID: 114506
Summary: RISC-V: expect M8 but M4 generated 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: ---
we expect M8 when using following code and options, but M4 generated.
-march=rv64gcv_zba_zbb_zvl256b -mabi=lp64d -mrvv-max-lmul=dynamic -O3
float a[32000],b[32000],c[32000],d[32000];
float aa[256][256],bb[256][256],cc[256][256];
void s2275()
{
for (int i = 0; i < 256; i++) {
for (int j = 0; j < 256; j++) {
aa[j][i] = aa[j][i] + bb[j][i] * cc[j][i];
}
a[i] = b[i] + c[i] * d[i];
}
}
generated asm:
.L2:
vsetvli a4,s0,e32,m4,ta,ma
slli t4,a4,2
li a5,0
.L3:
add a3,a7,a5
add a1,a0,a5
add a2,a6,a5
vle32.v v4,0(a3)
vle32.v v8,0(a1)
vle32.v v12,0(a2)
add a3,t1,a5
addi a5,a5,1024
vfmadd.vv v4,v12,v8
vse32.v v4,0(a3)
bne a5,t3,.L3
vle32.v v8,0(t6)
vle32.v v4,0(t0)
vle32.v v12,0(t2)
sub s0,s0,a4
add a0,a0,t4
add a6,a6,t4
add a7,a7,t4
add t1,t1,t4
vfmadd.vv v4,v12,v8
add t6,t6,t4
add t0,t0,t4
add t2,t2,t4
vse32.v v4,0(t5)
add t5,t5,t4
bne s0,zero,.L2