@@ -710,12 +710,13 @@ foreach m = [1, 2, 4] in {
710710 }
711711}
712712
713- class VReg<list<ValueType> regTypes, dag regList, int Vlmul>
713+ class VReg<list<ValueType> regTypes, dag regList, int Vlmul, int nf = 1 >
714714 : RISCVRegisterClass<regTypes,
715715 64, // The maximum supported ELEN is 64.
716716 regList> {
717717 let IsVRegClass = 1;
718718 let VLMul = Vlmul;
719+ let NF = nf;
719720
720721 let Size = !mul(VLMul, NF, 64);
721722 let CopyCost = !mul(VLMul, NF);
@@ -799,17 +800,15 @@ class VTupRegList<int LMUL, int NF> {
799800
800801foreach m = LMULList in {
801802 foreach nf = NFList<m>.L in {
802- let NF = nf in {
803- def "VRN" # nf # "M" # m # "NoV0"
804- : VReg<VTupRegList<m, nf>.L,
805- (add !cast<RegisterTuples>("VN" # nf # "M" # m # "NoV0")),
806- m>;
807- def "VRN" # nf # "M" # m
808- : VReg<VTupRegList<m, nf>.L,
809- (add !cast<RegisterTuples>("VN" # nf # "M" # m # "NoV0"),
810- !cast<RegisterTuples>("VN" # nf # "M" # m # "V0")),
811- m>;
812- }
803+ def "VRN" # nf # "M" # m # "NoV0"
804+ : VReg<VTupRegList<m, nf>.L,
805+ (add !cast<RegisterTuples>("VN" # nf # "M" # m # "NoV0")),
806+ m, nf>;
807+ def "VRN" # nf # "M" # m
808+ : VReg<VTupRegList<m, nf>.L,
809+ (add !cast<RegisterTuples>("VN" # nf # "M" # m # "NoV0"),
810+ !cast<RegisterTuples>("VN" # nf # "M" # m # "V0")),
811+ m, nf>;
813812 }
814813}
815814
0 commit comments