[llvm] [NFC][RISCV] Unify all zvfbfa vl patterns and sd node patterns (PR #171072)
Craig Topper via llvm-commits
llvm-commits at lists.llvm.org
Sun Dec 7 19:55:32 PST 2025
================
@@ -2526,20 +2555,37 @@ defm : VPatWConvertFP2IVL_V<any_riscv_vfcvt_rtz_x_f_vl, "PseudoVFWCVT_RTZ_X_F_V"
defm : VPatWConvertI2FPVL_V<any_riscv_uint_to_fp_vl, "PseudoVFWCVT_F_XU_V">;
defm : VPatWConvertI2FPVL_V<any_riscv_sint_to_fp_vl, "PseudoVFWCVT_F_X_V">;
-foreach fvtiToFWti = AllWidenableFloatVectors in {
+foreach fvtiToFWti = AllWidenableFloatAndBF16Vectors in {
defvar fvti = fvtiToFWti.Vti;
defvar fwti = fvtiToFWti.Wti;
// Define vfwcvt.f.f.v for f16 when Zvfhmin is enable.
- let Predicates = !listconcat(GetVTypeMinimalPredicates<fvti>.Predicates,
- GetVTypeMinimalPredicates<fwti>.Predicates) in
+ // Define vfwcvtbf16.f.f.v for bf16 when Zvfbfmin is enable.
+ let Predicates = !listconcat(GetVTypeMinimalPredicates<fwti>.Predicates,
+ !if(!eq(fvti.Scalar, bf16),
+ [HasStdExtZvfbfmin],
+ GetVTypeMinimalPredicates<fvti>.Predicates)) in {
def : Pat<(fwti.Vector (any_riscv_fpextend_vl
(fvti.Vector fvti.RegClass:$rs1),
(fvti.Mask VMV0:$vm),
VLOpFrag)),
- (!cast<Instruction>("PseudoVFWCVT_F_F_V_"#fvti.LMul.MX#"_E"#fvti.SEW#"_MASK")
+ (!cast<Instruction>("PseudoVFWCVT"#
+ !if(!eq(fvti.Scalar, bf16), "BF16", "")#
+ "_F_F_V_"#fvti.LMul.MX#"_E"#fvti.SEW#"_MASK")
(fwti.Vector (IMPLICIT_DEF)), fvti.RegClass:$rs1,
(fvti.Mask VMV0:$vm),
GPR:$vl, fvti.Log2SEW, TA_MA)>;
+
+ // Define vfwcvt.f.f.v for bf16 when Zvfbfa is enable.
----------------
topperc wrote:
```suggestion
// Define vfwcvt.f.f.v for bf16 when Zvfbfa is enabled.
```
https://github.com/llvm/llvm-project/pull/171072
More information about the llvm-commits
mailing list