Skip to content

Commit b954462

Browse files
committed
[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.
1 parent bd6568c commit b954462

File tree

2 files changed

+4
-22
lines changed

2 files changed

+4
-22
lines changed

llvm/lib/Target/RISCV/RISCVInstrInfoVSDPatterns.td

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1472,26 +1472,6 @@ foreach fvtiToFWti = AllWidenableBFloatToFloatVectors in {
14721472
fvti.AVL, fvti.Log2SEW, TA_MA)>;
14731473
}
14741474

1475-
//===----------------------------------------------------------------------===//
1476-
// Vector Splats
1477-
//===----------------------------------------------------------------------===//
1478-
1479-
foreach fvti = !listconcat(AllFloatVectors, AllBFloatVectors) in {
1480-
let Predicates = !listconcat(GetVTypePredicates<GetFpVTypeInfo<fvti>.Vti>.Predicates,
1481-
GetVTypeScalarPredicates<fvti>.Predicates) in
1482-
def : Pat<(fvti.Vector (riscv_vfmv_v_f_vl undef, fvti.ScalarRegClass:$rs1, srcvalue)),
1483-
(!cast<Instruction>("PseudoVFMV_V_"#fvti.ScalarSuffix#"_"#fvti.LMul.MX)
1484-
(fvti.Vector (IMPLICIT_DEF)),
1485-
(fvti.Scalar fvti.ScalarRegClass:$rs1),
1486-
fvti.AVL, fvti.Log2SEW, TA_MA)>;
1487-
defvar ivti = GetIntVTypeInfo<fvti>.Vti;
1488-
let Predicates = GetVTypePredicates<ivti>.Predicates in
1489-
def : Pat<(fvti.Vector (SplatFPOp (fvti.Scalar fpimm0))),
1490-
(!cast<Instruction>("PseudoVMV_V_I_"#fvti.LMul.MX)
1491-
(fvti.Vector (IMPLICIT_DEF)),
1492-
0, fvti.AVL, fvti.Log2SEW, TA_MA)>;
1493-
}
1494-
14951475
//===----------------------------------------------------------------------===//
14961476
// Vector Element Extracts
14971477
//===----------------------------------------------------------------------===//

llvm/lib/Target/RISCV/RISCVInstrInfoVVLPatterns.td

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2654,8 +2654,8 @@ foreach fvti = !listconcat(AllFloatVectors, AllBFloatVectors) in {
26542654
}
26552655

26562656
foreach fvti = AllFloatVectors in {
2657-
let Predicates = !listconcat(GetVTypePredicates<fvti>.Predicates,
2658-
GetVTypeScalarPredicates<fvti>.Predicates) in {
2657+
defvar ivti = GetIntVTypeInfo<fvti>.Vti;
2658+
let Predicates = GetVTypePredicates<ivti>.Predicates in {
26592659
// 13.16. Vector Floating-Point Move Instruction
26602660
// If we're splatting fpimm0, use vmv.v.x vd, x0.
26612661
def : Pat<(fvti.Vector (riscv_vfmv_v_f_vl
@@ -2666,7 +2666,9 @@ foreach fvti = AllFloatVectors in {
26662666
fvti.Vector:$passthru, (fvti.Scalar (SelectFPImm (XLenVT GPR:$imm))), VLOpFrag)),
26672667
(!cast<Instruction>("PseudoVMV_V_X_"#fvti.LMul.MX)
26682668
$passthru, GPR:$imm, GPR:$vl, fvti.Log2SEW, TU_MU)>;
2669+
}
26692670

2671+
let Predicates = GetVTypePredicates<fvti>.Predicates in {
26702672
def : Pat<(fvti.Vector (riscv_vfmv_v_f_vl
26712673
fvti.Vector:$passthru, (fvti.Scalar fvti.ScalarRegClass:$rs2), VLOpFrag)),
26722674
(!cast<Instruction>("PseudoVFMV_V_" # fvti.ScalarSuffix # "_" #

0 commit comments

Comments
 (0)