]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
[committed] RISC-V: Add missing insn types to XiangShan Nanhu scheduler model
authorJeff Law <jlaw@ventanamicro.com>
Sun, 31 Mar 2024 16:51:17 +0000 (10:51 -0600)
committerJeff Law <jlaw@ventanamicro.com>
Sun, 31 Mar 2024 16:51:17 +0000 (10:51 -0600)
The test for the recently added XiangShan Nanhu microarchitecture is failing
because the scheduler description does not have entries for certain insn types.

I'm adding  branch, jalr, ret and sfb_alu to the scheduler description, that's
enough to get the trivial test to pass.  However, I strongly suspect running
any significant code through the compiler when scheduling for this
microarchitecture will trigger faults.

Basically we have checking now that will fault if we have an insn in the IL
without an associated type or if we have an insn in the IL that does not map to
an insn reservation in the scheduler model.  We were tripping the latter
assertion for one of those branch types.  My suspicion is many insn types
aren't handled by that DFA.

The branch insns were pretty obvious and easy to fix.  But someone with more
experience with the uarch needs to do an audit to ensure that all insn types
map to an insn reservation.

gcc/
* config/riscv/xiangshan.md (xiangshan_jump): Add branch, jalr, ret
and sfb_alu.

gcc/config/riscv/xiangshan.md

index 381c3ce1428335e9a56f2304804309f1e3694f58..76539d332b82e477f603bfd432ebd3ccfca20aaa 100644 (file)
@@ -70,7 +70,7 @@
 
 (define_insn_reservation "xiangshan_jump" 1
   (and (eq_attr "tune" "xiangshan")
-       (eq_attr "type" "jump,call,auipc,unknown"))
+       (eq_attr "type" "jump,call,auipc,unknown,branch,jalr,ret,sfb_alu"))
   "xs_jmp_rs")
 
 (define_insn_reservation "xiangshan_i2f" 3