Lines Matching full:mx
23 class SchedSEWSet<string mx, bit isF = 0, bit isWidening = 0> {
24 assert !or(!not(isF), !ne(mx, "MF8")), "LMUL shouldn't be MF8 for floating-point";
25 defvar t = !cond(!eq(mx, "M1"): [8, 16, 32, 64],
26 !eq(mx, "M2"): [8, 16, 32, 64],
27 !eq(mx, "M4"): [8, 16, 32, 64],
28 !eq(mx, "M8"): [8, 16, 32, 64],
29 !eq(mx, "MF2"): [8, 16, 32],
30 !eq(mx, "MF4"): [8, 16],
31 !eq(mx, "MF8"): [8]);
42 // MX list is sorted from smallest to largest
45 // Helper function to get the smallest SEW that can be used with LMUL mx
46 // Precondition: MxList is sorted in ascending LMUL order and SchedSEWSet<mx>
47 class SmallestSEW<string mx, bit isF = 0> {
48 int r = !head(SchedSEWSet<mx, isF>.val);
51 // Creates WriteRes for (name, mx, resources) tuple
53 string mx, bit IsWorstCase> {
54 def : WriteRes<!cast<SchedWrite>(name # "_" # mx), resources>;
59 string mx, int sew, bit IsWorstCase> {
60 def : WriteRes<!cast<SchedWrite>(name # "_" # mx # "_E" # sew), resources>;
65 // Define a SchedAlias for the SchedWrite associated with (name, mx) whose
76 string mx, bit IsWorstCase> {
77 defvar nameMX = name # "_" # mx;
122 foreach mx = MxList in {
123 def name # "_" # mx : SchedWrite;
128 foreach mx = MxList in {
129 def name # "_" # mx : SchedRead;
135 foreach mx = SchedMxList in {
136 if !exists<SchedWrite>(name # "_" # mx) then
137 def : WriteRes<!cast<SchedWrite>(name # "_" # mx), resources>;
144 foreach mx = SchedMxList in {
145 if !exists<SchedRead>(name # "_" # mx) then
146 def : ReadAdvance<!cast<SchedRead>(name # "_" # mx), val, writes>;
157 foreach mx = MxList in {
158 foreach sew = SchedSEWSet<mx, isF, isWidening>.val in
159 def name # "_" # mx # "_E" # sew : SchedWrite;
165 foreach mx = MxList in {
166 foreach sew = SchedSEWSet<mx, isF, isWidening>.val in
167 def name # "_" # mx # "_E" # sew : SchedRead;
175 foreach mx = MxList in {
176 foreach sew = SchedSEWSet<mx, isF, isWidening>.val in
177 if !exists<SchedWrite>(name # "_" # mx # "_E" # sew) then
178 def : WriteRes<!cast<SchedWrite>(name # "_" # mx # "_E" # sew), resources>;
186 foreach mx = MxList in {
187 foreach sew = SchedSEWSet<mx, isF, isWidening>.val in
188 if !exists<SchedRead>(name # "_" # mx # "_E" # sew) then
189 def : ReadAdvance<!cast<SchedRead>(name # "_" # mx # "_E" # sew), val, writes>;
204 !foreach(mx, MxList, !cast<SchedWrite>(name # "_" # mx))),
770 foreach mx = SchedMxList in {
771 def ReadVMergeOp_ # mx : SchedRead;
772 foreach sew = SchedSEWSet<mx>.val in
773 def ReadVMergeOp_ # mx # "_E" # sew : SchedRead;
1143 foreach mx = SchedMxList in {
1144 def : ReadAdvance<!cast<SchedRead>("ReadVMergeOp_" # mx), 0>;
1145 foreach sew = SchedSEWSet<mx>.val in
1146 def : ReadAdvance<!cast<SchedRead>("ReadVMergeOp_" # mx # "_E" # sew), 0>;