aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/Support/RISCVVIntrinsicUtils.cpp
diff options
context:
space:
mode:
authoreopXD <yueh.ting.chen@gmail.com>2023-01-07 00:17:08 -0800
committereopXD <yueh.ting.chen@gmail.com>2023-01-24 00:07:33 -0800
commit063802843c20a49cf53a1fd380565ebfe29ee83f (patch)
tree5957f2e5d230c3f5a29de6a8c90be38d3ff649b1 /clang/lib/Support/RISCVVIntrinsicUtils.cpp
parent74252fb115b42bab2c050086603c1385c8a2ffb6 (diff)
downloadllvm-063802843c20a49cf53a1fd380565ebfe29ee83f.zip
llvm-063802843c20a49cf53a1fd380565ebfe29ee83f.tar.gz
llvm-063802843c20a49cf53a1fd380565ebfe29ee83f.tar.bz2
[3/15][Clang][RISCV][NFC] Clarify edge cases of RVVIntrinsic::getSupportedMaskedPolicies for clarity
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
Diffstat (limited to 'clang/lib/Support/RISCVVIntrinsicUtils.cpp')
-rw-r--r--clang/lib/Support/RISCVVIntrinsicUtils.cpp15
1 files changed, 9 insertions, 6 deletions
diff --git a/clang/lib/Support/RISCVVIntrinsicUtils.cpp b/clang/lib/Support/RISCVVIntrinsicUtils.cpp
index 93ade07..18b8ca54 100644
--- a/clang/lib/Support/RISCVVIntrinsicUtils.cpp
+++ b/clang/lib/Support/RISCVVIntrinsicUtils.cpp
@@ -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,