@@ -207,23 +207,23 @@ class VSSSched<int eew, string emul, bit forceMasked = 0> : SchedCommon<
207
207
class VSSSchedMC<int eew> : VSSSched<eew, "WorstCase", forceMasked=1>;
208
208
209
209
// Vector Indexed Loads and Stores
210
- class VLXSched<int dataEEW, string isOrdered, string dataEMUL, string idxEMUL,
210
+ class VLXSched<int dataEEW, bit isOrdered, string dataEMUL, string idxEMUL,
211
211
bit forceMasked = 0> : SchedCommon<
212
- [!cast<SchedWrite>("WriteVLD" # isOrdered # "X" # dataEEW # "_" # dataEMUL)],
213
- [ReadVLDX, !cast<SchedRead>("ReadVLD" # isOrdered # "XV_" # idxEMUL)],
212
+ [!cast<SchedWrite>("WriteVLD" # !if( isOrdered, "O", "U") # "X" # dataEEW # "_" # dataEMUL)],
213
+ [ReadVLDX, !cast<SchedRead>("ReadVLD" # !if( isOrdered, "O", "U") # "XV_" # idxEMUL)],
214
214
dataEMUL, dataEEW, forceMasked
215
215
>;
216
- class VLXSchedMC<int dataEEW, string isOrdered>:
216
+ class VLXSchedMC<int dataEEW, bit isOrdered>:
217
217
VLXSched<dataEEW, isOrdered, "WorstCase", "WorstCase", forceMasked=1>;
218
218
219
- class VSXSched<int dataEEW, string isOrdered, string dataEMUL, string idxEMUL,
219
+ class VSXSched<int dataEEW, bit isOrdered, string dataEMUL, string idxEMUL,
220
220
bit forceMasked = 0> : SchedCommon<
221
- [!cast<SchedWrite>("WriteVST" # isOrdered # "X" # dataEEW # "_" # dataEMUL)],
222
- [!cast<SchedRead>("ReadVST" # isOrdered #"X" # dataEEW # "_" # dataEMUL),
223
- ReadVSTX, !cast<SchedRead>("ReadVST" # isOrdered # "XV_" # idxEMUL)],
221
+ [!cast<SchedWrite>("WriteVST" # !if( isOrdered, "O", "U") # "X" # dataEEW # "_" # dataEMUL)],
222
+ [!cast<SchedRead>("ReadVST" # !if( isOrdered, "O", "U") #"X" # dataEEW # "_" # dataEMUL),
223
+ ReadVSTX, !cast<SchedRead>("ReadVST" # !if( isOrdered, "O", "U") # "XV_" # idxEMUL)],
224
224
dataEMUL, dataEEW, forceMasked
225
225
>;
226
- class VSXSchedMC<int dataEEW, string isOrdered>:
226
+ class VSXSchedMC<int dataEEW, bit isOrdered>:
227
227
VSXSched<dataEEW, isOrdered, "WorstCase", "WorstCase", forceMasked=1>;
228
228
229
229
// Unit-stride Fault-Only-First Loads
@@ -272,24 +272,24 @@ class VSSSEGSchedMC<int nf, int eew> : VSSSEGSched<nf, eew, "WorstCase",
272
272
forceMasked=1>;
273
273
274
274
// Indexed Segment Loads and Stores
275
- class VLXSEGSched<int nf, int eew, string isOrdered, string emul,
275
+ class VLXSEGSched<int nf, int eew, bit isOrdered, string emul,
276
276
bit forceMasked = 0> : SchedCommon<
277
- [!cast<SchedWrite>("WriteVL" #isOrdered #"XSEG" #nf #"e" #eew #"_" #emul)],
278
- [ReadVLDX, !cast<SchedRead>("ReadVLD" #isOrdered #"XV_" #emul)],
277
+ [!cast<SchedWrite>("WriteVL" #!if( isOrdered, "O", "U") #"XSEG" #nf #"e" #eew #"_" #emul)],
278
+ [ReadVLDX, !cast<SchedRead>("ReadVLD" #!if( isOrdered, "O", "U") #"XV_" #emul)],
279
279
emul, eew, forceMasked
280
280
>;
281
- class VLXSEGSchedMC<int nf, int eew, string isOrdered>:
281
+ class VLXSEGSchedMC<int nf, int eew, bit isOrdered>:
282
282
VLXSEGSched<nf, eew, isOrdered, "WorstCase", forceMasked=1>;
283
283
284
284
// Passes sew=0 instead of eew=0 since this pseudo does not follow MX_E form.
285
- class VSXSEGSched<int nf, int eew, string isOrdered, string emul,
285
+ class VSXSEGSched<int nf, int eew, bit isOrdered, string emul,
286
286
bit forceMasked = 0> : SchedCommon<
287
- [!cast<SchedWrite>("WriteVS" #isOrdered #"XSEG" #nf #"e" #eew #"_" #emul)],
288
- [!cast<SchedRead>("ReadVST" #isOrdered #"X" #eew #"_" #emul),
289
- ReadVSTX, !cast<SchedRead>("ReadVST" #isOrdered #"XV_" #emul)],
287
+ [!cast<SchedWrite>("WriteVS" #!if( isOrdered, "O", "U") #"XSEG" #nf #"e" #eew #"_" #emul)],
288
+ [!cast<SchedRead>("ReadVST" #!if( isOrdered, "O", "U") #"X" #eew #"_" #emul),
289
+ ReadVSTX, !cast<SchedRead>("ReadVST" #!if( isOrdered, "O", "U") #"XV_" #emul)],
290
290
emul, sew=0, forceMasked=forceMasked
291
291
>;
292
- class VSXSEGSchedMC<int nf, int eew, string isOrdered>:
292
+ class VSXSEGSchedMC<int nf, int eew, bit isOrdered>:
293
293
VSXSEGSched<nf, eew, isOrdered, "WorstCase", forceMasked=1>;
294
294
295
295
//===----------------------------------------------------------------------===//
@@ -539,17 +539,17 @@ multiclass VIndexLoadStore<list<int> EEWList> {
539
539
540
540
def VLUXEI # n # _V :
541
541
VIndexedLoad<MOPLDIndexedUnord, w, "vluxei" # n # ".v">,
542
- VLXSchedMC<n, "U" >;
542
+ VLXSchedMC<n, isOrdered=0 >;
543
543
def VLOXEI # n # _V :
544
544
VIndexedLoad<MOPLDIndexedOrder, w, "vloxei" # n # ".v">,
545
- VLXSchedMC<n, "O" >;
545
+ VLXSchedMC<n, isOrdered=1 >;
546
546
547
547
def VSUXEI # n # _V :
548
548
VIndexedStore<MOPSTIndexedUnord, w, "vsuxei" # n # ".v">,
549
- VSXSchedMC<n, "U" >;
549
+ VSXSchedMC<n, isOrdered=0 >;
550
550
def VSOXEI # n # _V :
551
551
VIndexedStore<MOPSTIndexedOrder, w, "vsoxei" # n # ".v">,
552
- VSXSchedMC<n, "O" >;
552
+ VSXSchedMC<n, isOrdered=1 >;
553
553
}
554
554
}
555
555
@@ -1742,19 +1742,19 @@ let Predicates = [HasVInstructions] in {
1742
1742
def VLUXSEG#nf#EI#eew#_V :
1743
1743
VIndexedSegmentLoad<!add(nf, -1), MOPLDIndexedUnord, w,
1744
1744
"vluxseg"#nf#"ei"#eew#".v">,
1745
- VLXSEGSchedMC<nf, eew, "U" >;
1745
+ VLXSEGSchedMC<nf, eew, isOrdered=0 >;
1746
1746
def VLOXSEG#nf#EI#eew#_V :
1747
1747
VIndexedSegmentLoad<!add(nf, -1), MOPLDIndexedOrder, w,
1748
1748
"vloxseg"#nf#"ei"#eew#".v">,
1749
- VLXSEGSchedMC<nf, eew, "O" >;
1749
+ VLXSEGSchedMC<nf, eew, isOrdered=1 >;
1750
1750
def VSUXSEG#nf#EI#eew#_V :
1751
1751
VIndexedSegmentStore<!add(nf, -1), MOPSTIndexedUnord, w,
1752
1752
"vsuxseg"#nf#"ei"#eew#".v">,
1753
- VSXSEGSchedMC<nf, eew, "U" >;
1753
+ VSXSEGSchedMC<nf, eew, isOrdered=0 >;
1754
1754
def VSOXSEG#nf#EI#eew#_V :
1755
1755
VIndexedSegmentStore<!add(nf, -1), MOPSTIndexedOrder, w,
1756
1756
"vsoxseg"#nf#"ei"#eew#".v">,
1757
- VSXSEGSchedMC<nf, eew, "O" >;
1757
+ VSXSEGSchedMC<nf, eew, isOrdered=1 >;
1758
1758
}
1759
1759
}
1760
1760
} // Predicates = [HasVInstructions]
@@ -1787,19 +1787,19 @@ let Predicates = [HasVInstructionsI64, IsRV64] in {
1787
1787
def VLUXSEG #nf #EI64_V
1788
1788
: VIndexedSegmentLoad<!add(nf, -1), MOPLDIndexedUnord, LSWidth64,
1789
1789
"vluxseg" #nf #"ei64.v">,
1790
- VLXSEGSchedMC<nf, 64, "U" >;
1790
+ VLXSEGSchedMC<nf, 64, isOrdered=0 >;
1791
1791
def VLOXSEG #nf #EI64_V
1792
1792
: VIndexedSegmentLoad<!add(nf, -1), MOPLDIndexedOrder, LSWidth64,
1793
1793
"vloxseg" #nf #"ei64.v">,
1794
- VLXSEGSchedMC<nf, 64, "O" >;
1794
+ VLXSEGSchedMC<nf, 64, isOrdered=1 >;
1795
1795
def VSUXSEG #nf #EI64_V
1796
1796
: VIndexedSegmentStore<!add(nf, -1), MOPSTIndexedUnord, LSWidth64,
1797
1797
"vsuxseg" #nf #"ei64.v">,
1798
- VSXSEGSchedMC<nf, 64, "U" >;
1798
+ VSXSEGSchedMC<nf, 64, isOrdered=0 >;
1799
1799
def VSOXSEG #nf #EI64_V
1800
1800
: VIndexedSegmentStore<!add(nf, -1), MOPSTIndexedOrder, LSWidth64,
1801
1801
"vsoxseg" #nf #"ei64.v">,
1802
- VSXSEGSchedMC<nf, 64, "O" >;
1802
+ VSXSEGSchedMC<nf, 64, isOrdered=1 >;
1803
1803
}
1804
1804
} // Predicates = [HasVInstructionsI64, IsRV64]
1805
1805
0 commit comments