[llvm] b954462 - [RISCV] Remove partially duplicate riscv_vfmv_v_f_vl patterns.
Craig Topper via llvm-commits
llvm-commits at lists.llvm.org
Thu Jun 13 22:11:21 PDT 2024
Author: Craig Topper
Date: 2024-06-13T22:09:23-07:00
New Revision: b95446286bddc521fa92012fdb60fe0d24c63346
URL: https://github.com/llvm/llvm-project/commit/b95446286bddc521fa92012fdb60fe0d24c63346
DIFF: https://github.com/llvm/llvm-project/commit/b95446286bddc521fa92012fdb60fe0d24c63346.diff
LOG: [RISCV] Remove partially duplicate riscv_vfmv_v_f_vl patterns.
We had specific patterns for riscv_vfmv_v_f_vl in both RISCVInstrInfoVVLPatterns.td
and RISCVInstrInfoVSDPatterns.td.
The RISCVInstrInfoVSDPatterns.td patterns could only match if the
RISCVInstrInfoVVLPatterns.td failed. As far as I can tell this
would only happen if the predicate didn't match. Tweak the predicate
so the RISCVInstrInfoVVLPatterns.td can match in more cases.
Added:
Modified:
llvm/lib/Target/RISCV/RISCVInstrInfoVSDPatterns.td
llvm/lib/Target/RISCV/RISCVInstrInfoVVLPatterns.td
Removed:
################################################################################
diff --git a/llvm/lib/Target/RISCV/RISCVInstrInfoVSDPatterns.td b/llvm/lib/Target/RISCV/RISCVInstrInfoVSDPatterns.td
index 497c4aadf7535..9042fe610a39f 100644
--- a/llvm/lib/Target/RISCV/RISCVInstrInfoVSDPatterns.td
+++ b/llvm/lib/Target/RISCV/RISCVInstrInfoVSDPatterns.td
@@ -1472,26 +1472,6 @@ foreach fvtiToFWti = AllWidenableBFloatToFloatVectors in {
fvti.AVL, fvti.Log2SEW, TA_MA)>;
}
-//===----------------------------------------------------------------------===//
-// Vector Splats
-//===----------------------------------------------------------------------===//
-
-foreach fvti = !listconcat(AllFloatVectors, AllBFloatVectors) in {
- let Predicates = !listconcat(GetVTypePredicates<GetFpVTypeInfo<fvti>.Vti>.Predicates,
- GetVTypeScalarPredicates<fvti>.Predicates) in
- def : Pat<(fvti.Vector (riscv_vfmv_v_f_vl undef, fvti.ScalarRegClass:$rs1, srcvalue)),
- (!cast<Instruction>("PseudoVFMV_V_"#fvti.ScalarSuffix#"_"#fvti.LMul.MX)
- (fvti.Vector (IMPLICIT_DEF)),
- (fvti.Scalar fvti.ScalarRegClass:$rs1),
- fvti.AVL, fvti.Log2SEW, TA_MA)>;
- defvar ivti = GetIntVTypeInfo<fvti>.Vti;
- let Predicates = GetVTypePredicates<ivti>.Predicates in
- def : Pat<(fvti.Vector (SplatFPOp (fvti.Scalar fpimm0))),
- (!cast<Instruction>("PseudoVMV_V_I_"#fvti.LMul.MX)
- (fvti.Vector (IMPLICIT_DEF)),
- 0, fvti.AVL, fvti.Log2SEW, TA_MA)>;
-}
-
//===----------------------------------------------------------------------===//
// Vector Element Extracts
//===----------------------------------------------------------------------===//
diff --git a/llvm/lib/Target/RISCV/RISCVInstrInfoVVLPatterns.td b/llvm/lib/Target/RISCV/RISCVInstrInfoVVLPatterns.td
index 9fff89d3092b3..440b8963dfe3f 100644
--- a/llvm/lib/Target/RISCV/RISCVInstrInfoVVLPatterns.td
+++ b/llvm/lib/Target/RISCV/RISCVInstrInfoVVLPatterns.td
@@ -2654,8 +2654,8 @@ foreach fvti = !listconcat(AllFloatVectors, AllBFloatVectors) in {
}
foreach fvti = AllFloatVectors in {
- let Predicates = !listconcat(GetVTypePredicates<fvti>.Predicates,
- GetVTypeScalarPredicates<fvti>.Predicates) in {
+ defvar ivti = GetIntVTypeInfo<fvti>.Vti;
+ let Predicates = GetVTypePredicates<ivti>.Predicates in {
// 13.16. Vector Floating-Point Move Instruction
// If we're splatting fpimm0, use vmv.v.x vd, x0.
def : Pat<(fvti.Vector (riscv_vfmv_v_f_vl
@@ -2666,7 +2666,9 @@ foreach fvti = AllFloatVectors in {
fvti.Vector:$passthru, (fvti.Scalar (SelectFPImm (XLenVT GPR:$imm))), VLOpFrag)),
(!cast<Instruction>("PseudoVMV_V_X_"#fvti.LMul.MX)
$passthru, GPR:$imm, GPR:$vl, fvti.Log2SEW, TU_MU)>;
+ }
+ let Predicates = GetVTypePredicates<fvti>.Predicates in {
def : Pat<(fvti.Vector (riscv_vfmv_v_f_vl
fvti.Vector:$passthru, (fvti.Scalar fvti.ScalarRegClass:$rs2), VLOpFrag)),
(!cast<Instruction>("PseudoVFMV_V_" # fvti.ScalarSuffix # "_" #
More information about the llvm-commits
mailing list