[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