diff --git a/clang/include/clang/Support/RISCVVIntrinsicUtils.h b/clang/include/clang/Support/RISCVVIntrinsicUtils.h --- a/clang/include/clang/Support/RISCVVIntrinsicUtils.h +++ b/clang/include/clang/Support/RISCVVIntrinsicUtils.h @@ -130,11 +130,11 @@ } bool isMAPolicy() const { - return MaskPolicy == Agnostic && TailPolicy == Omit; + return MaskPolicy == Agnostic; } bool isMUPolicy() const { - return MaskPolicy == Undisturbed && TailPolicy == Omit; + return MaskPolicy == Undisturbed; } bool isUnspecified() const { return IsUnspecified; } diff --git a/clang/lib/Support/RISCVVIntrinsicUtils.cpp b/clang/lib/Support/RISCVVIntrinsicUtils.cpp --- a/clang/lib/Support/RISCVVIntrinsicUtils.cpp +++ b/clang/lib/Support/RISCVVIntrinsicUtils.cpp @@ -917,9 +917,6 @@ PolicyScheme DefaultScheme, Policy PolicyAttrs) { SmallVector NewPrototype(Prototype.begin(), Prototype.end()); - // Update PolicyAttrs if need (TA or TAMA) for compute builtin types. - if (PolicyAttrs.isMAPolicy()) - PolicyAttrs.TailPolicy = Policy::PolicyType::Agnostic; // TAMA bool HasPassthruOp = DefaultScheme == PolicyScheme::HasPassthruOperand; if (IsMasked) { // If HasMaskedOffOperand, insert result type as first input operand if @@ -996,8 +993,8 @@ Policy::PolicyType::Agnostic)}; // TAM if (!HasTailPolicy && HasMaskPolicy) return { - Policy(Policy::PolicyType::Omit, Policy::PolicyType::Agnostic), // MA - Policy(Policy::PolicyType::Omit, + Policy(Policy::PolicyType::Agnostic, Policy::PolicyType::Agnostic), // MA + Policy(Policy::PolicyType::Agnostic, Policy::PolicyType::Undisturbed)}; // MU llvm_unreachable("An RVV instruction should not be without both tail policy " "and mask policy"); @@ -1036,6 +1033,10 @@ appendPolicySuffix("_tum"); else if (PolicyAttrs.isTAMAPolicy() && !HasMaskPolicy) appendPolicySuffix("_tam"); + else if (PolicyAttrs.isMUPolicy() && !HasTailPolicy) + appendPolicySuffix("_mu"); + else if (PolicyAttrs.isMAPolicy() && !HasTailPolicy) + appendPolicySuffix("_ma"); else if (PolicyAttrs.isTUMUPolicy()) appendPolicySuffix("_tumu"); else if (PolicyAttrs.isTAMUPolicy()) @@ -1048,13 +1049,7 @@ appendPolicySuffix("_tu"); else if (PolicyAttrs.isTAPolicy() && !IsMasked) appendPolicySuffix("_ta"); - else if (PolicyAttrs.isMUPolicy() && !HasTailPolicy) { - appendPolicySuffix("_mu"); - PolicyAttrs.TailPolicy = Policy::PolicyType::Agnostic; - } else if (PolicyAttrs.isMAPolicy() && !HasTailPolicy) { - appendPolicySuffix("_ma"); - PolicyAttrs.TailPolicy = Policy::PolicyType::Agnostic; - } else + else llvm_unreachable("Unhandled policy condition"); } }