@@ -358,15 +358,14 @@ multiclass VPseudoSiFiveVQMACCDOD<string Constraint = ""> {
358
358
multiclass VPseudoSiFiveVQMACCQOQ<string Constraint = ""> {
359
359
foreach i = [0, 1, 2, 3] in
360
360
let VLMul = MxListVF4[i].value in
361
- defm NAME : VPseudoSiFiveVMACC<MxListVF8 [i].MX, MxListVF8[i].vrclass,
361
+ defm NAME : VPseudoSiFiveVMACC<MxListVF4 [i].MX, MxListVF8[i].vrclass,
362
362
MxListVF4[i].vrclass, Constraint>;
363
363
}
364
364
365
365
multiclass VPseudoSiFiveVFWMACC<string Constraint = ""> {
366
- foreach i = [0, 1, 2, 3, 4] in
367
- let VLMul = MxListVF2[i].value in
368
- defm NAME : VPseudoSiFiveVMACC<MxListVF4[i].MX, MxListFW[i].wvrclass,
369
- MxListFW[i].vrclass, Constraint>;
366
+ foreach m = MxListVF2 in
367
+ let VLMul = m.value in
368
+ defm NAME : VPseudoSiFiveVMACC<m.MX, m.wvrclass, m.vrclass, Constraint>;
370
369
}
371
370
372
371
multiclass VPseudoSiFiveVFNRCLIP<string Constraint = "@earlyclobber $rd"> {
@@ -561,15 +560,17 @@ class GetFTypeInfo<int Sew> {
561
560
}
562
561
563
562
multiclass VPatVMACC<string intrinsic, string instruction, string kind,
564
- list<VTypeInfoToWide> info_pairs, ValueType vec_m1> {
563
+ list<VTypeInfoToWide> info_pairs, ValueType vec_m1,
564
+ bit lmul_follows_vd = 0> {
565
565
foreach pair = info_pairs in {
566
566
defvar VdInfo = pair.Wti;
567
567
defvar Vs2Info = pair.Vti;
568
+ defvar LMul = !if(!eq(lmul_follows_vd, 1), VdInfo.LMul, Vs2Info.LMul);
568
569
let Predicates = [HasVInstructions] in
569
570
def : VPatTernaryNoMaskWithPolicy<"int_riscv_sf_" # intrinsic,
570
571
"Pseudo" # instruction, kind, VdInfo.Vector,
571
572
vec_m1, Vs2Info.Vector,
572
- Vs2Info.Log2SEW, VdInfo. LMul,
573
+ Vs2Info.Log2SEW, LMul,
573
574
VdInfo.RegClass, VR, Vs2Info.RegClass>;
574
575
}
575
576
}
@@ -589,7 +590,7 @@ defset list<VTypeInfoToWide> VQMACCQOQInfoPairs = {
589
590
}
590
591
591
592
multiclass VPatVQMACCDOD<string intrinsic, string instruction, string kind>
592
- : VPatVMACC<intrinsic, instruction, kind, VQMACCDODInfoPairs, vint8m1_t>;
593
+ : VPatVMACC<intrinsic, instruction, kind, VQMACCDODInfoPairs, vint8m1_t, 1 >;
593
594
594
595
multiclass VPatVQMACCQOQ<string intrinsic, string instruction, string kind>
595
596
: VPatVMACC<intrinsic, instruction, kind, VQMACCQOQInfoPairs, vint8m1_t>;
0 commit comments