[llvm] 60f3703 - [RISCV] Factor out multiclass definitions for V scheduling info [nfc]
Philip Reames via llvm-commits
llvm-commits at lists.llvm.org
Tue Feb 28 08:59:29 PST 2023
Author: Philip Reames
Date: 2023-02-28T08:58:56-08:00
New Revision: 60f3703d1bc3c6178214786845eca653aa9fcac1
URL: https://github.com/llvm/llvm-project/commit/60f3703d1bc3c6178214786845eca653aa9fcac1
DIFF: https://github.com/llvm/llvm-project/commit/60f3703d1bc3c6178214786845eca653aa9fcac1.diff
LOG: [RISCV] Factor out multiclass definitions for V scheduling info [nfc]
Factoring out a shared multiclass imply makes it easier to see that all of these do the same thing, just on different lists. It also makes it easier to see differences - such as we don't define read related pieces for FWRed.
Differential Revision: https://reviews.llvm.org/D144899
Added:
Modified:
llvm/lib/Target/RISCV/RISCVScheduleV.td
Removed:
################################################################################
diff --git a/llvm/lib/Target/RISCV/RISCVScheduleV.td b/llvm/lib/Target/RISCV/RISCVScheduleV.td
index c7d63707f8854..3d6e3470f058d 100644
--- a/llvm/lib/Target/RISCV/RISCVScheduleV.td
+++ b/llvm/lib/Target/RISCV/RISCVScheduleV.td
@@ -17,110 +17,58 @@ defvar SchedMxListFW = ["UpperBound", "MF4", "MF2", "M1", "M2", "M4"];
// Used for widening floating-point Reduction as it doesn't contain MF8.
defvar SchedMxListFWRed = ["UpperBound", "MF4", "MF2", "M1", "M2", "M4", "M8"];
-// Creates SchedWrite for each (name, LMUL) pair for LMUL in SchedMxList
-multiclass LMULSchedWrites<string name> {
- foreach mx = SchedMxList in {
- def name # "_" # mx : SchedWrite;
- }
-}
-
-// Creates SchedWrite for each (name, LMUL) pair for LMUL in SchedMxListW
-multiclass LMULSchedWritesW<string name> {
- foreach mx = SchedMxListW in {
- def name # "_" # mx : SchedWrite;
- }
-}
-
-// Creates SchedWrite for each (name, LMUL) pair for LMUL in SchedMxListFW
-multiclass LMULSchedWritesFW<string name> {
- foreach mx = SchedMxListFW in {
- def name # "_" # mx : SchedWrite;
- }
-}
+// Define multiclasses to define SchedWrite, SchedRead, WriteRes, and
+// ReadAdvance for each (name, LMUL) pair for each LMUL in each of the
+// SchedMxList variants above.
-// Creates SchedWrite for each (name, LMUL) pair for LMUL in SchedMxListFWRed
-multiclass LMULSchedWritesFWRed<string name> {
- foreach mx = SchedMxListFWRed in {
+multiclass LMULSchedWritesImpl<string name, list<string> MxList> {
+ foreach mx = MxList in {
def name # "_" # mx : SchedWrite;
}
}
-
-// Creates SchedRead for each (name, LMUL) pair for LMUL in SchedMxList
-multiclass LMULSchedReads<string name> {
- foreach mx = SchedMxList in {
- def name # "_" # mx : SchedRead;
- }
-}
-
-// Creates SchedRead for each (name, LMUL) pair for LMUL in SchedMxListW
-multiclass LMULSchedReadsW<string name> {
- foreach mx = SchedMxListW in {
- def name # "_" # mx : SchedRead;
- }
-}
-
-// Creates SchedRead for each (name, LMUL) pair for LMUL in SchedMxListFW
-multiclass LMULSchedReadsFW<string name> {
- foreach mx = SchedMxListFW in {
+multiclass LMULSchedReadsImpl<string name, list<string> MxList> {
+ foreach mx = MxList in {
def name # "_" # mx : SchedRead;
}
}
-
-// Creates WriteRes for each (name, LMUL, resources) tuple for LMUL
-// in SchedMxList
-multiclass LMULWriteRes<string name, list<ProcResourceKind> resources> {
- foreach mx = SchedMxList in {
- def : WriteRes<!cast<SchedWrite>(name # "_" # mx), resources>;
- }
-}
-
-// Creates WriteRes for each (name, LMUL, resources) tuple for LMUL
-// in SchedMxListW
-multiclass LMULWriteResW<string name, list<ProcResourceKind> resources> {
- foreach mx = SchedMxListW in {
- def : WriteRes<!cast<SchedWrite>(name # "_" # mx), resources>;
- }
-}
-
-// Creates WriteRes for each (name, LMUL, resources) tuple for LMUL
-// in SchedMxListFW
-multiclass LMULWriteResFW<string name, list<ProcResourceKind> resources> {
- foreach mx = SchedMxListFW in {
- def : WriteRes<!cast<SchedWrite>(name # "_" # mx), resources>;
- }
-}
-
-// Creates WriteRes for each (name, LMUL, resources) tuple for LMUL
-// in SchedMxListFWRed
-multiclass LMULWriteResFWRed<string name, list<ProcResourceKind> resources> {
- foreach mx = SchedMxListFWRed in {
+multiclass LMULWriteResImpl<string name, list<string> MxList,
+ list<ProcResourceKind> resources> {
+ foreach mx = MxList in {
def : WriteRes<!cast<SchedWrite>(name # "_" # mx), resources>;
}
}
-
-// Creates ReadAdvance for each (name, LMUL, val) tuple for LMUL
-// in SchedMxList
-multiclass LMULReadAdvance<string name, int val, list<SchedWrite> writes = []> {
- foreach mx = SchedMxList in {
+multiclass LMULReadAdvanceImpl<string name, list<string> MxList, int val,
+ list<SchedWrite> writes = []> {
+ foreach mx = MxList in {
def : ReadAdvance<!cast<SchedRead>(name # "_" # mx), val, writes>;
}
}
-// Creates ReadAdvance for each (name, LMUL, val) tuple for LMUL
-// in SchedMxListW
-multiclass LMULReadAdvanceW<string name, int val, list<SchedWrite> writes = []> {
- foreach mx = SchedMxListW in {
- def : ReadAdvance<!cast<SchedRead>(name # "_" # mx), val, writes>;
- }
-}
+multiclass LMULSchedWrites<string name> : LMULSchedWritesImpl<name, SchedMxList>;
+multiclass LMULSchedReads<string name> : LMULSchedReadsImpl<name, SchedMxList>;
+multiclass LMULWriteRes<string name, list<ProcResourceKind> resources>
+ : LMULWriteResImpl<name, SchedMxList, resources>;
+multiclass LMULReadAdvance<string name, int val, list<SchedWrite> writes = []>
+ : LMULReadAdvanceImpl<name, SchedMxList, val, writes>;
+
+multiclass LMULSchedWritesW<string name> : LMULSchedWritesImpl<name, SchedMxListW>;
+multiclass LMULSchedReadsW<string name> : LMULSchedReadsImpl<name, SchedMxListW>;
+multiclass LMULWriteResW<string name, list<ProcResourceKind> resources>
+ : LMULWriteResImpl<name, SchedMxListW, resources>;
+multiclass LMULReadAdvanceW<string name, int val, list<SchedWrite> writes = []>
+ : LMULReadAdvanceImpl<name, SchedMxListW, val, writes>;
+
+multiclass LMULSchedWritesFW<string name> : LMULSchedWritesImpl<name, SchedMxListFW>;
+multiclass LMULSchedReadsFW<string name> : LMULSchedReadsImpl<name, SchedMxListFW>;
+multiclass LMULWriteResFW<string name, list<ProcResourceKind> resources>
+ : LMULWriteResImpl<name, SchedMxListFW, resources>;
+multiclass LMULReadAdvanceFW<string name, int val, list<SchedWrite> writes = []>
+ : LMULReadAdvanceImpl<name, SchedMxListFW, val, writes>;
+
+multiclass LMULSchedWritesFWRed<string name> : LMULSchedWritesImpl<name, SchedMxListFWRed>;
+multiclass LMULWriteResFWRed<string name, list<ProcResourceKind> resources>
+ : LMULWriteResImpl<name, SchedMxListFWRed, resources>;
-// Creates ReadAdvance for each (name, LMUL, val) tuple for LMUL
-// in SchedMxListFW
-multiclass LMULReadAdvanceFW<string name, int val, list<SchedWrite> writes = []> {
- foreach mx = SchedMxListFW in {
- def : ReadAdvance<!cast<SchedRead>(name # "_" # mx), val, writes>;
- }
-}
// 3.6 Vector Byte Length vlenb
def WriteRdVLENB : SchedWrite;
More information about the llvm-commits
mailing list