diff --git a/llvm/lib/Target/RISCV/RISCVScheduleV.td b/llvm/lib/Target/RISCV/RISCVScheduleV.td index ad3d4cdcbfdf68..faf690ae46fd5e 100644 --- a/llvm/lib/Target/RISCV/RISCVScheduleV.td +++ b/llvm/lib/Target/RISCV/RISCVScheduleV.td @@ -45,12 +45,29 @@ multiclass LMULReadAdvanceImpl.value>; +// ``` +class LMULSchedWriteListImpl names, list MxList> { + list value = !foldl([], + !foreach(name, names, + !foreach(mx, MxList, !cast(name # "_" # mx))), + all, writes, !listconcat(all, writes)); +} + multiclass LMULSchedWrites : LMULSchedWritesImpl; multiclass LMULSchedReads : LMULSchedReadsImpl; multiclass LMULWriteRes resources> : LMULWriteResImpl; multiclass LMULReadAdvance writes = []> : LMULReadAdvanceImpl; +class LMULSchedWriteList names> : LMULSchedWriteListImpl; multiclass LMULSchedWritesW : LMULSchedWritesImpl; multiclass LMULSchedReadsW : LMULSchedReadsImpl; @@ -58,6 +75,7 @@ multiclass LMULWriteResW resources> : LMULWriteResImpl; multiclass LMULReadAdvanceW writes = []> : LMULReadAdvanceImpl; +class LMULSchedWriteListW names> : LMULSchedWriteListImpl; multiclass LMULSchedWritesFW : LMULSchedWritesImpl; multiclass LMULSchedReadsFW : LMULSchedReadsImpl; @@ -65,10 +83,12 @@ multiclass LMULWriteResFW resources> : LMULWriteResImpl; multiclass LMULReadAdvanceFW writes = []> : LMULReadAdvanceImpl; +class LMULSchedWriteListFW names> : LMULSchedWriteListImpl; multiclass LMULSchedWritesFWRed : LMULSchedWritesImpl; multiclass LMULWriteResFWRed resources> : LMULWriteResImpl; +class LMULSchedWriteListFWRed names> : LMULSchedWriteListImpl; // 3.6 Vector Byte Length vlenb