[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