Author: eopXD
Date: 2023-01-24T01:08:58-08:00
New Revision: ecbf5db88d285f72fbd0126be9c20f790d603b23

URL: 
https://github.com/llvm/llvm-project/commit/ecbf5db88d285f72fbd0126be9c20f790d603b23
DIFF: 
https://github.com/llvm/llvm-project/commit/ecbf5db88d285f72fbd0126be9c20f790d603b23.diff

LOG: [6/15][Clang][RISCV][NFC] Instructions with a mask destination register is 
always tail agnostic

The logic under `computeBuiltinTypes` is an amendment to setting Policy as
`Omit`. The tail policy should be set to agnostic for those intrinsics that
has `HasTailPolicy = false`, which are the intrinsics with a mask destination
register.

This is the 6th commit of a patch-set that aims to change the default policy
for RVV intrinsics from TAMU to TAMA.

Please refer to the cover letter in the 1st commit (D141573) for an
overview.

Reviewed By: craig.topper, kito-cheng

Differential Revision: https://reviews.llvm.org/D141756

Added: 
    

Modified: 
    clang/include/clang/Support/RISCVVIntrinsicUtils.h
    clang/lib/Support/RISCVVIntrinsicUtils.cpp

Removed: 
    


################################################################################
diff  --git a/clang/include/clang/Support/RISCVVIntrinsicUtils.h 
b/clang/include/clang/Support/RISCVVIntrinsicUtils.h
index dc5323062ed4..e64bab60cad2 100644
--- a/clang/include/clang/Support/RISCVVIntrinsicUtils.h
+++ b/clang/include/clang/Support/RISCVVIntrinsicUtils.h
@@ -134,13 +134,9 @@ struct Policy {
     return TailPolicy == Undisturbed && MaskPolicy == Omit;
   }
 
-  bool isMAPolicy() const {
-    return MaskPolicy == Agnostic && TailPolicy == Omit;
-  }
+  bool isMAPolicy() const { return MaskPolicy == Agnostic; }
 
-  bool isMUPolicy() const {
-    return MaskPolicy == Undisturbed && TailPolicy == Omit;
-  }
+  bool isMUPolicy() const { return MaskPolicy == Undisturbed; }
 
   bool hasTailPolicy() const { return HasTailPolicy; }
 

diff  --git a/clang/lib/Support/RISCVVIntrinsicUtils.cpp 
b/clang/lib/Support/RISCVVIntrinsicUtils.cpp
index 280fd3f8669a..e93c5533d916 100644
--- a/clang/lib/Support/RISCVVIntrinsicUtils.cpp
+++ b/clang/lib/Support/RISCVVIntrinsicUtils.cpp
@@ -915,9 +915,6 @@ llvm::SmallVector<PrototypeDescriptor> 
RVVIntrinsic::computeBuiltinTypes(
     PolicyScheme DefaultScheme, Policy PolicyAttrs) {
   SmallVector<PrototypeDescriptor> 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
@@ -998,10 +995,11 @@ RVVIntrinsic::getSupportedMaskedPolicies(bool 
HasTailPolicy,
             Policy(Policy::PolicyType::Agnostic, Policy::PolicyType::Agnostic,
                    HasTailPolicy, HasMaskPolicy)}; // TAM
   if (!HasTailPolicy && HasMaskPolicy)
-    return {Policy(Policy::PolicyType::Omit, Policy::PolicyType::Agnostic,
+    return {Policy(Policy::PolicyType::Agnostic, Policy::PolicyType::Agnostic,
                    HasTailPolicy, HasMaskPolicy), // MA
-            Policy(Policy::PolicyType::Omit, Policy::PolicyType::Undisturbed,
-                   HasTailPolicy, HasMaskPolicy)}; // MU
+            Policy(Policy::PolicyType::Agnostic,
+                   Policy::PolicyType::Undisturbed, HasTailPolicy,
+                   HasMaskPolicy)}; // MU
   llvm_unreachable("An RVV instruction should not be without both tail policy "
                    "and mask policy");
 }
@@ -1040,6 +1038,10 @@ void RVVIntrinsic::updateNamesAndPolicy(bool IsMasked, 
bool HasPolicy,
       appendPolicySuffix("_tum");
     else if (PolicyAttrs.isTAMAPolicy() && !PolicyAttrs.hasMaskPolicy())
       appendPolicySuffix("_tam");
+    else if (PolicyAttrs.isMUPolicy() && !PolicyAttrs.hasTailPolicy())
+      appendPolicySuffix("_mu");
+    else if (PolicyAttrs.isMAPolicy() && !PolicyAttrs.hasTailPolicy())
+      appendPolicySuffix("_ma");
     else if (PolicyAttrs.isTUMUPolicy())
       appendPolicySuffix("_tumu");
     else if (PolicyAttrs.isTAMUPolicy())
@@ -1052,13 +1054,7 @@ void RVVIntrinsic::updateNamesAndPolicy(bool IsMasked, 
bool HasPolicy,
       appendPolicySuffix("_tu");
     else if (PolicyAttrs.isTAPolicy() && !IsMasked)
       appendPolicySuffix("_ta");
-    else if (PolicyAttrs.isMUPolicy() && !PolicyAttrs.hasTailPolicy()) {
-      appendPolicySuffix("_mu");
-      PolicyAttrs.TailPolicy = Policy::PolicyType::Agnostic;
-    } else if (PolicyAttrs.isMAPolicy() && !PolicyAttrs.hasTailPolicy()) {
-      appendPolicySuffix("_ma");
-      PolicyAttrs.TailPolicy = Policy::PolicyType::Agnostic;
-    } else
+    else
       llvm_unreachable("Unhandled policy condition");
   }
 }


        
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to