[llvm] f858929 - [NFCI][X86] Mark Znver3 scheduling model as complete

Roman Lebedev via llvm-commits llvm-commits at lists.llvm.org
Sat May 8 15:07:32 PDT 2021


Author: Roman Lebedev
Date: 2021-05-09T01:07:07+03:00
New Revision: f8589292084b41fc70da93fb1e23bb576bd1f8f3

URL: https://github.com/llvm/llvm-project/commit/f8589292084b41fc70da93fb1e23bb576bd1f8f3
DIFF: https://github.com/llvm/llvm-project/commit/f8589292084b41fc70da93fb1e23bb576bd1f8f3.diff

LOG: [NFCI][X86] Mark Znver3 scheduling model as complete

To the best of my knowledge, all instructions are modelled,
and have reasonable values to them; flipping the switch
doesn't cause any diff for MCA tests, so either we're good,
or we have test coverage gaps.

I'm not really sure why no other X86 sched model is marked as complete.

Added: 
    

Modified: 
    llvm/lib/Target/X86/X86ScheduleZnver3.td

Removed: 
    


################################################################################
diff  --git a/llvm/lib/Target/X86/X86ScheduleZnver3.td b/llvm/lib/Target/X86/X86ScheduleZnver3.td
index 8f3d8de9917e..4f75150bd2a8 100644
--- a/llvm/lib/Target/X86/X86ScheduleZnver3.td
+++ b/llvm/lib/Target/X86/X86ScheduleZnver3.td
@@ -61,7 +61,7 @@ def Znver3Model : SchedMachineModel {
   // We haven't catered all instructions.
   // So, we reset the value of this variable so as to
   // say that the model is incomplete.
-  let CompleteModel = 0;
+  let CompleteModel = 1;
 }
 
 let SchedModel = Znver3Model in {
@@ -506,6 +506,9 @@ defm : Zn3WriteResInt<WriteStore, [Zn3AGU012, Zn3Store], Znver3Model.StoreLatenc
 defm : Zn3WriteResInt<WriteStoreNT, [Zn3AGU012, Zn3Store], Znver3Model.StoreLatency, [1, 2], 1>;
 defm : Zn3WriteResInt<WriteMove, [Zn3ALU0123], 1, [4], 1>;
 
+// Treat misc copies as a move.
+def : InstRW<[WriteMove], (instrs COPY)>;
+
 def Zn3WriteMOVBE16rm : SchedWriteRes<[Zn3AGU012, Zn3Load, Zn3ALU0123]> {
   let Latency = Znver3Model.LoadLatency;
   let ResourceCycles = [1, 1, 4];


        


More information about the llvm-commits mailing list