[llvm] [RISCV] Remove policy and merge operand from unmasked vmsbf/vmsif/vmsof.m. (PR #94530)
Craig Topper via llvm-commits
llvm-commits at lists.llvm.org
Wed Jun 5 12:53:41 PDT 2024
https://github.com/topperc created https://github.com/llvm/llvm-project/pull/94530
These instructions always update the destination under a tail agnostic policy.
>From 89528d12e2c916b6b6f47f39252c0c10bfa11f2c Mon Sep 17 00:00:00 2001
From: Craig Topper <craig.topper at sifive.com>
Date: Wed, 5 Jun 2024 12:51:17 -0700
Subject: [PATCH] [RISCV] Remove policy and merge operand from unmasked
vmsbf/vmsif/vmsof.m.
These instructions always update the destination under a tail agnostic policy.
---
.../Target/RISCV/RISCVInstrInfoVPseudos.td | 21 ++++++++++++++++---
1 file changed, 18 insertions(+), 3 deletions(-)
diff --git a/llvm/lib/Target/RISCV/RISCVInstrInfoVPseudos.td b/llvm/lib/Target/RISCV/RISCVInstrInfoVPseudos.td
index 5fe5a7a5bd5cc..5db7cb4dc6180 100644
--- a/llvm/lib/Target/RISCV/RISCVInstrInfoVPseudos.td
+++ b/llvm/lib/Target/RISCV/RISCVInstrInfoVPseudos.td
@@ -1033,6 +1033,22 @@ class VPseudoUnaryNoMask<DAGOperand RetClass,
let HasVecPolicyOp = 1;
}
+class VPseudoUnaryNoMaskNoPolicy<DAGOperand RetClass,
+ DAGOperand OpClass,
+ string Constraint = "",
+ int TargetConstraintType = 1> :
+ Pseudo<(outs RetClass:$rd),
+ (ins OpClass:$rs2, AVL:$vl, ixlenimm:$sew), []>,
+ RISCVVPseudo {
+ let mayLoad = 0;
+ let mayStore = 0;
+ let hasSideEffects = 0;
+ let Constraints = Constraint;
+ let TargetOverlapConstraintType = TargetConstraintType;
+ let HasVLOp = 1;
+ let HasSEWOp = 1;
+}
+
class VPseudoUnaryNoMaskRoundingMode<DAGOperand RetClass,
DAGOperand OpClass,
string Constraint = "",
@@ -2056,7 +2072,7 @@ multiclass VPseudoVSFS_M {
foreach mti = AllMasks in {
defvar mx = mti.LMul.MX;
let VLMul = mti.LMul.value in {
- def "_M_" # mti.BX : VPseudoUnaryNoMask<VR, VR, constraint>,
+ def "_M_" # mti.BX : VPseudoUnaryNoMaskNoPolicy<VR, VR, constraint>,
SchedUnary<"WriteVMSFSV", "ReadVMSFSV", mx,
forceMergeOpRead=true>;
def "_M_" # mti.BX # "_MASK" : VPseudoUnaryMask<VR, VR, constraint>,
@@ -4078,9 +4094,8 @@ class VPatMaskUnaryNoMask<string intrinsic_name,
(mti.Mask VR:$rs2),
VLOpFrag)),
(!cast<Instruction>(inst#"_M_"#mti.BX)
- (mti.Mask (IMPLICIT_DEF)),
(mti.Mask VR:$rs2),
- GPR:$vl, mti.Log2SEW, TA_MA)>;
+ GPR:$vl, mti.Log2SEW)>;
class VPatMaskUnaryMask<string intrinsic_name,
string inst,
More information about the llvm-commits
mailing list