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 @@ -97,13 +97,13 @@ enum PolicyType { Undisturbed, Agnostic, - Omit, // No policy required. }; PolicyType TailPolicy = Agnostic; PolicyType MaskPolicy = Undisturbed; Policy() : IsUnspecified(true) {} - Policy(PolicyType _TailPolicy, PolicyType _MaskPolicy) - : TailPolicy(_TailPolicy), MaskPolicy(_MaskPolicy) {} + Policy(PolicyType TailPolicy) : TailPolicy(TailPolicy) {} + Policy(PolicyType TailPolicy, PolicyType MaskPolicy) + : TailPolicy(TailPolicy), MaskPolicy(MaskPolicy) {} bool isTAMAPolicy() const { return TailPolicy == Agnostic && MaskPolicy == Agnostic; 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 @@ -969,9 +969,8 @@ } llvm::SmallVector RVVIntrinsic::getSupportedUnMaskedPolicies() { - return { - Policy(Policy::PolicyType::Undisturbed, Policy::PolicyType::Omit), // TU - Policy(Policy::PolicyType::Agnostic, Policy::PolicyType::Omit)}; // TA + return {Policy(Policy::PolicyType::Undisturbed), // TU + Policy(Policy::PolicyType::Agnostic)}; // TA } llvm::SmallVector @@ -1029,28 +1028,33 @@ BuiltinName += "_ta"; } } else { - if (PolicyAttrs.isTUMAPolicy() && !HasMaskPolicy) - 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()) - appendPolicySuffix("_tamu"); - else if (PolicyAttrs.isTUMAPolicy()) - appendPolicySuffix("_tuma"); - else if (PolicyAttrs.isTAMAPolicy()) - appendPolicySuffix("_tama"); - else if (PolicyAttrs.isTUPolicy() && !IsMasked) - appendPolicySuffix("_tu"); - else if (PolicyAttrs.isTAPolicy() && !IsMasked) - appendPolicySuffix("_ta"); - else - llvm_unreachable("Unhandled policy condition"); + if (IsMasked) { + if (PolicyAttrs.isTUMAPolicy() && !HasMaskPolicy) + 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()) + appendPolicySuffix("_tamu"); + else if (PolicyAttrs.isTUMAPolicy()) + appendPolicySuffix("_tuma"); + else if (PolicyAttrs.isTAMAPolicy()) + appendPolicySuffix("_tama"); + else + llvm_unreachable("Unhandled policy condition"); + } else { + if (PolicyAttrs.isTUPolicy()) + appendPolicySuffix("_tu"); + else if (PolicyAttrs.isTAPolicy()) + appendPolicySuffix("_ta"); + else + llvm_unreachable("Unhandled policy condition"); + } } }