@@ -561,17 +561,16 @@ def RISCVVIntrinsicsTable : GenericTable {
561
561
// unmasked variant. For all but compares, both the masked and
562
562
// unmasked variant have a passthru and policy operand. For compares,
563
563
// neither has a policy op, and only the masked version has a passthru.
564
- class RISCVMaskedPseudo<bits<4> MaskIdx, bit ActiveAffectsRes=false > {
564
+ class RISCVMaskedPseudo<bits<4> MaskIdx> {
565
565
Pseudo MaskedPseudo = !cast<Pseudo>(NAME);
566
566
Pseudo UnmaskedPseudo = !cast<Pseudo>(!subst("_MASK", "", NAME));
567
567
bits<4> MaskOpIdx = MaskIdx;
568
- bit ActiveElementsAffectResult = ActiveAffectsRes;
569
568
}
570
569
571
570
def RISCVMaskedPseudosTable : GenericTable {
572
571
let FilterClass = "RISCVMaskedPseudo";
573
572
let CppTypeName = "RISCVMaskedPseudoInfo";
574
- let Fields = ["MaskedPseudo", "UnmaskedPseudo", "MaskOpIdx", "ActiveElementsAffectResult" ];
573
+ let Fields = ["MaskedPseudo", "UnmaskedPseudo", "MaskOpIdx"];
575
574
let PrimaryKey = ["MaskedPseudo"];
576
575
let PrimaryKeyName = "getMaskedPseudoInfo";
577
576
}
@@ -2021,7 +2020,7 @@ multiclass VPseudoVSFS_M {
2021
2020
defvar constraint = "@earlyclobber $rd";
2022
2021
foreach mti = AllMasks in {
2023
2022
defvar mx = mti.LMul.MX;
2024
- let VLMul = mti.LMul.value in {
2023
+ let VLMul = mti.LMul.value, ActiveElementsAffectResult = true in {
2025
2024
def "_M_" # mti.BX : VPseudoUnaryNoMaskNoPolicy<VR, VR, constraint>,
2026
2025
SchedUnary<"WriteVMSFSV", "ReadVMSFSV", mx,
2027
2026
forceMergeOpRead=true>;
@@ -2060,12 +2059,12 @@ multiclass VPseudoVIOTA_M {
2060
2059
defvar constraint = "@earlyclobber $rd";
2061
2060
foreach m = MxList in {
2062
2061
defvar mx = m.MX;
2063
- let VLMul = m.value in {
2062
+ let VLMul = m.value, ActiveElementsAffectResult = 1 in {
2064
2063
def "_" # mx : VPseudoUnaryNoMask<m.vrclass, VR, constraint>,
2065
2064
SchedUnary<"WriteVIotaV", "ReadVIotaV", mx,
2066
2065
forceMergeOpRead=true>;
2067
2066
def "_" # mx # "_MASK" : VPseudoUnaryMask<m.vrclass, VR, constraint>,
2068
- RISCVMaskedPseudo<MaskIdx=2, ActiveAffectsRes=true >,
2067
+ RISCVMaskedPseudo<MaskIdx=2>,
2069
2068
SchedUnary<"WriteVIotaV", "ReadVIotaV", mx,
2070
2069
forceMergeOpRead=true>;
2071
2070
}
@@ -2076,7 +2075,7 @@ multiclass VPseudoVCPR_V {
2076
2075
foreach m = MxList in {
2077
2076
defvar mx = m.MX;
2078
2077
defvar sews = SchedSEWSet<mx>.val;
2079
- let VLMul = m.value in
2078
+ let VLMul = m.value, ActiveElementsAffectResult = true in
2080
2079
foreach e = sews in {
2081
2080
defvar suffix = "_" # m.MX # "_E" # e;
2082
2081
let SEW = e in
@@ -3158,11 +3157,11 @@ multiclass VPseudoTernaryWithTailPolicy<VReg RetClass,
3158
3157
DAGOperand Op2Class,
3159
3158
LMULInfo MInfo,
3160
3159
int sew> {
3161
- let VLMul = MInfo.value, SEW=sew in {
3160
+ let VLMul = MInfo.value, SEW=sew, ActiveElementsAffectResult = true in {
3162
3161
defvar mx = MInfo.MX;
3163
3162
def "_" # mx # "_E" # sew : VPseudoTernaryNoMaskWithPolicy<RetClass, Op1Class, Op2Class>;
3164
3163
def "_" # mx # "_E" # sew # "_MASK" : VPseudoTernaryMaskPolicy<RetClass, Op1Class, Op2Class>,
3165
- RISCVMaskedPseudo<MaskIdx=3, ActiveAffectsRes=true >;
3164
+ RISCVMaskedPseudo<MaskIdx=3>;
3166
3165
}
3167
3166
}
3168
3167
@@ -3171,15 +3170,15 @@ multiclass VPseudoTernaryWithTailPolicyRoundingMode<VReg RetClass,
3171
3170
DAGOperand Op2Class,
3172
3171
LMULInfo MInfo,
3173
3172
int sew> {
3174
- let VLMul = MInfo.value, SEW=sew in {
3173
+ let VLMul = MInfo.value, SEW=sew, ActiveElementsAffectResult = true in {
3175
3174
defvar mx = MInfo.MX;
3176
3175
def "_" # mx # "_E" # sew
3177
3176
: VPseudoTernaryNoMaskWithPolicyRoundingMode<RetClass, Op1Class,
3178
3177
Op2Class>;
3179
3178
def "_" # mx # "_E" # sew # "_MASK"
3180
3179
: VPseudoTernaryMaskPolicyRoundingMode<RetClass, Op1Class,
3181
3180
Op2Class>,
3182
- RISCVMaskedPseudo<MaskIdx=3, ActiveAffectsRes=true >;
3181
+ RISCVMaskedPseudo<MaskIdx=3>;
3183
3182
}
3184
3183
}
3185
3184
@@ -6712,14 +6711,14 @@ defm PseudoVMSET : VPseudoNullaryPseudoM<"VMXNOR">;
6712
6711
//===----------------------------------------------------------------------===//
6713
6712
// 15.2. Vector mask population count vcpop
6714
6713
//===----------------------------------------------------------------------===//
6715
- let IsSignExtendingOpW = 1 in
6714
+ let IsSignExtendingOpW = 1, ActiveElementsAffectResult = 1 in
6716
6715
defm PseudoVCPOP: VPseudoVPOP_M;
6717
6716
6718
6717
//===----------------------------------------------------------------------===//
6719
6718
// 15.3. vfirst find-first-set mask bit
6720
6719
//===----------------------------------------------------------------------===//
6721
6720
6722
- let IsSignExtendingOpW = 1 in
6721
+ let IsSignExtendingOpW = 1, ActiveElementsAffectResult = 1 in
6723
6722
defm PseudoVFIRST: VPseudoV1ST_M;
6724
6723
6725
6724
//===----------------------------------------------------------------------===//
0 commit comments