[PATCH] D68685: [RISCV] Scheduler description for Rocket Core

Javed Absar via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Oct 16 00:23:31 PDT 2019


javed.absar added a comment.

Is there a forwarding mechanism in  Rocket? If so, that can be added to make the model more accurate.



================
Comment at: llvm/lib/Target/RISCV/RISCVSchedRocket32.td:73
+
+// 32-bit divides have worse case latency of 34 cycle
+def : WriteRes<WriteIDiv, [Rocket32UnitIMul]> { let Latency = 34; }
----------------
I guess its input dependent. Probably better to take average case 17.
Is 'Rocket32UnitIMul]' intentional (i.e. Div using Mul instead of UnitDiv) ? 
 If DIV is not pipelined then please put ResourceCycle = ... , as well. 


================
Comment at: llvm/lib/Target/RISCV/RISCVSchedRocket64.td:1
+//==- RISCVSchedRocket.td - Rocket Scheduling Definitions -*- tablegen -*-=//
+//
----------------
lenary wrote:
> This should match the filename.
What are the main differences in terms of schedule between Rocket63 and . Looks like to me that a lot of code can be factored out into a common td


================
Comment at: llvm/lib/Target/RISCV/RISCVSchedRocket64.td:92
+
+def : WriteRes<WriteLDB, [Rocket64UnitMem]> { let Latency = 3; }
+def : WriteRes<WriteLDH, [Rocket64UnitMem]> { let Latency = 3; }
----------------
You could use let Latency = 2 in {  ... } to avoid repeating


Repository:
  rL LLVM

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D68685/new/

https://reviews.llvm.org/D68685





More information about the llvm-commits mailing list