[llvm] r358118 - [X86] X86ScheduleBdVer2: use !listsplat operator to cleanup loadres calculation

Roman Lebedev via llvm-commits llvm-commits at lists.llvm.org
Wed Apr 10 11:26:42 PDT 2019


Author: lebedevri
Date: Wed Apr 10 11:26:42 2019
New Revision: 358118

URL: http://llvm.org/viewvc/llvm-project?rev=358118&view=rev
Log:
[X86] X86ScheduleBdVer2: use !listsplat operator to cleanup loadres calculation

The problem is that one can't concatenate an empty list
(implied all-ones) with non-empty list here. The result
will be the non-empty list, and it won't match the length
of the ExePorts list.

The problems begin when LoadRes != 1 here,
which is the case in PdWriteResYMMPair,
and more importantly i think it will be the case for PdWriteResExPair.

Modified:
    llvm/trunk/lib/Target/X86/X86ScheduleBdVer2.td

Modified: llvm/trunk/lib/Target/X86/X86ScheduleBdVer2.td
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86ScheduleBdVer2.td?rev=358118&r1=358117&r2=358118&view=diff
==============================================================================
--- llvm/trunk/lib/Target/X86/X86ScheduleBdVer2.td (original)
+++ llvm/trunk/lib/Target/X86/X86ScheduleBdVer2.td Wed Apr 10 11:26:42 2019
@@ -208,7 +208,10 @@ multiclass __pdWriteResPair<X86FoldableS
                     !add(Lat, LoadLat),
                     !if(!and(!empty(Res), !eq(LoadRes, 1)),
                       [],
-                      !listconcat([LoadRes], Res)),
+                      !listconcat([LoadRes],
+                        !if(!empty(Res),
+                          !listsplat(1, !size(ExePorts)),
+                          Res))),
                     !add(UOps, LoadUOps)>;
 }
 
@@ -230,7 +233,7 @@ multiclass PdWriteResXMMPair<X86Foldable
 
 multiclass PdWriteResYMMPair<X86FoldableSchedWrite SchedRW,
                              list<ProcResourceKind> ExePorts, int Lat,
-                             list<int> Res, int UOps = 2,
+                             list<int> Res = [], int UOps = 2,
                              int LoadUOps = 0> {
   defm : __pdWriteResPair<SchedRW, ExePorts, Lat, Res, UOps,
                            /*LoadLat*/5, /*LoadRes*/2, LoadUOps>;
@@ -723,7 +726,7 @@ defm : X86WriteResPairUnsupported<WriteF
 
 defm : PdWriteResXMMPair<WriteFMA,          [PdFPU, PdFPFMA], 5>;
 defm : PdWriteResXMMPair<WriteFMAX,         [PdFPU, PdFPFMA], 5>;
-defm : PdWriteResYMMPair<WriteFMAY,         [PdFPU, PdFPFMA], 5,   [1, 1]>;
+defm : PdWriteResYMMPair<WriteFMAY,         [PdFPU, PdFPFMA], 5>;
 defm : X86WriteResPairUnsupported<WriteFMAZ>;
 
 
@@ -1037,7 +1040,7 @@ defm : PdWriteResXMMPair<WritePHMINPOS,
 
 defm : PdWriteResXMMPair<WriteShuffle,       [PdFPU01, PdFPMAL], 2>;
 defm : PdWriteResXMMPair<WriteShuffleX,      [PdFPU01, PdFPMAL], 2>;
-defm : PdWriteResYMMPair<WriteShuffleY,      [PdFPU01, PdFPMAL], 2,   [1, 1]>;
+defm : PdWriteResYMMPair<WriteShuffleY,      [PdFPU01, PdFPMAL], 2>;
 defm : X86WriteResPairUnsupported<WriteShuffleZ>;
 
 defm : PdWriteResXMMPair<WriteVarShuffle,    [PdFPU01, PdFPMAL], 3, [1, 4]>;




More information about the llvm-commits mailing list