[llvm] [RISCV] Remove SEW operand for load/store and SEW-aware pseudos (PR #90396)
Michael Maitland via llvm-commits
llvm-commits at lists.llvm.org
Mon Apr 29 08:52:59 PDT 2024
================
@@ -171,14 +180,29 @@ static inline bool hasRoundModeOp(uint64_t TSFlags) {
/// \returns true if this instruction uses vxrm
static inline bool usesVXRM(uint64_t TSFlags) { return TSFlags & UsesVXRMMask; }
+/// \returns true if this instruction has implicit SEW value.
+static inline bool hasImplicitSEW(uint64_t TSFlags) {
+ return TSFlags & HasImplictSEWMask;
+}
+
+/// \returns the VSEW for the instruction.
+static inline VSEW getVSEW(uint64_t TSFlags) {
+ return static_cast<VSEW>((TSFlags & VSEWMask) >> VSEWShift);
+}
+
+/// \returns true if there is a SEW value for the instruction.
+static inline bool hasSEW(uint64_t TSFlags) {
+ return hasSEWOp(TSFlags) || hasImplicitSEW(TSFlags);
+}
+
static inline unsigned getVLOpNum(const MCInstrDesc &Desc) {
const uint64_t TSFlags = Desc.TSFlags;
- // This method is only called if we expect to have a VL operand, and all
- // instructions with VL also have SEW.
- assert(hasSEWOp(TSFlags) && hasVLOp(TSFlags));
- unsigned Offset = 2;
+ // This method is only called if we expect to have a VL operand.
+ assert(hasVLOp(TSFlags));
+ // Some instructions don't have SEW operand.
+ unsigned Offset = 1 + hasSEWOp(TSFlags);
----------------
michaelmaitland wrote:
I think `hasSEWOp` returns `bool.` Is it correct to add `unsigned + bool`?
https://github.com/llvm/llvm-project/pull/90396
More information about the llvm-commits
mailing list