[3/15][Clang][RISCV][NFC] Clarify edge cases of RVVIntrinsic::getSupportedMaskedPolic...
authoreopXD <yueh.ting.chen@gmail.com>
Sat, 7 Jan 2023 08:17:08 +0000 (00:17 -0800)
committereopXD <yueh.ting.chen@gmail.com>
Tue, 24 Jan 2023 08:07:33 +0000 (00:07 -0800)
This is the 3rd 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: kito-cheng

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

clang/lib/Support/RISCVVIntrinsicUtils.cpp

index 93ade07..18b8ca5 100644 (file)
@@ -13,6 +13,7 @@
 #include "llvm/ADT/StringMap.h"
 #include "llvm/ADT/StringSet.h"
 #include "llvm/ADT/Twine.h"
+#include "llvm/Support/ErrorHandling.h"
 #include "llvm/Support/raw_ostream.h"
 #include <numeric>
 #include <optional>
@@ -992,16 +993,18 @@ RVVIntrinsic::getSupportedMaskedPolicies(bool HasTailPolicy,
                    Policy::PolicyType::Undisturbed), // TUMU
             Policy(Policy::PolicyType::Agnostic,
                    Policy::PolicyType::Undisturbed)}; // TAMU
-
-  if (HasTailPolicy)
+  if (HasTailPolicy && !HasMaskPolicy)
     return {Policy(Policy::PolicyType::Undisturbed,
                    Policy::PolicyType::Agnostic, true), // TUM
             Policy(Policy::PolicyType::Agnostic, Policy::PolicyType::Agnostic,
                    true)}; // TAM
-
-  return {
-      Policy(Policy::PolicyType::Omit, Policy::PolicyType::Agnostic),     // MA
-      Policy(Policy::PolicyType::Omit, Policy::PolicyType::Undisturbed)}; // MU
+  if (!HasTailPolicy && HasMaskPolicy)
+    return {
+        Policy(Policy::PolicyType::Omit, Policy::PolicyType::Agnostic), // MA
+        Policy(Policy::PolicyType::Omit,
+               Policy::PolicyType::Undisturbed)}; // MU
+  llvm_unreachable("An RVV instruction should not be without both tail policy "
+                   "and mask policy");
 }
 
 void RVVIntrinsic::updateNamesAndPolicy(bool IsMasked, bool HasPolicy,