https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116033
Bug ID: 116033 Summary: [14/15] RISC-V: -march=rv64gv_xtheadmemidx generates illegal vse8.v insn Product: gcc Version: 15.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: target Assignee: unassigned at gcc dot gnu.org Reporter: patrick at rivosinc dot com Target Milestone: --- Testcase: char arr_3[20][20]; void init() { for (int i_0 = 0; i_0 < 20; ++i_0) for (int i_1 = 0; i_0 < 20; ++i_0) for (int i_1 = 0; i_1 < 20; ++i_0) for (int i_1 = 0; i_1 < 20; ++i_1) arr_3[i_0][i_1] = i_1; } Command: > /scratch/tc-testing/tc-compiler-fuzz-trunk/build-gcv/bin/riscv64-unknown-linux-gnu-gcc > -march=rv64gv_xtheadmemidx -mabi=lp64d driver.c -c -O3 /scratch/tmp/cc4KI0Jh.s: Assembler messages: /scratch/tmp/cc4KI0Jh.s:27: Error: illegal operands `vse8.v v1,(a5),10,1' /scratch/tmp/cc4KI0Jh.s:28: Error: illegal operands `vse8.v v5,(a1),10,1' /scratch/tmp/cc4KI0Jh.s:29: Error: illegal operands `vse8.v v4,(a2),10,1' /scratch/tmp/cc4KI0Jh.s:30: Error: illegal operands `vse8.v v3,(a3),10,1' /scratch/tmp/cc4KI0Jh.s:31: Error: illegal operands `vse8.v v2,(a4),10,1' Generated asm: init: vsetivli zero,4,e8,mf4,ta,ma vid.v v1 lui a5,%hi(.LANCHOR0) vadd.vi v5,v1,4 vadd.vi v4,v1,8 vadd.vi v3,v1,12 addi a5,a5,%lo(.LANCHOR0) li a4,16 vadd.vx v2,v1,a4 addi a1,a5,4 addi a2,a5,8 addi a3,a5,12 addi a4,a5,16 .L2: vse8.v v1,(a5),10,1 vse8.v v5,(a1),10,1 vse8.v v4,(a2),10,1 vse8.v v3,(a3),10,1 vse8.v v2,(a4),10,1 j .L2 arr_3: .zero 400 Godbolt: https://godbolt.org/z/qGqxrTr3K Using -march=rv64gcv generates the expected syntax of vse8.v v1,(a5): https://godbolt.org/z/4Pda4fc6E Found via fuzzer.