[llvm] [RISCV] Treat bf16->f32 as separate ExtKind in combineOp_VLToVWOp_VL. (PR #144653)

Luke Lau via llvm-commits llvm-commits at lists.llvm.org
Thu Jun 19 15:43:13 PDT 2025


================
@@ -16628,17 +16630,17 @@ struct NodeExtensionHelper {
     EnforceOneUse = false;
   }
 
-  bool isSupportedFPExtend(SDNode *Root, MVT NarrowEltVT,
-                           const RISCVSubtarget &Subtarget) {
+  bool isSupportedFPExtend(MVT NarrowEltVT, const RISCVSubtarget &Subtarget) {
+    if (NarrowEltVT == MVT::f32)
+      return true;
     // Any f16 extension will need zvfh
-    if (NarrowEltVT == MVT::f16 && !Subtarget.hasVInstructionsF16())
-      return false;
-    // The only bf16 extension we can do is vfmadd_vl -> vfwmadd_vl with
-    // zvfbfwma
-    if (NarrowEltVT == MVT::bf16 && (!Subtarget.hasStdExtZvfbfwma() ||
-                                     Root->getOpcode() != RISCVISD::VFMADD_VL))
-      return false;
-    return true;
+    if (NarrowEltVT == MVT::f16 && Subtarget.hasVInstructionsF16())
+      return true;
+    return false;
----------------
lukel97 wrote:

Nit, merge into `return NarrowEltVT == MVT::f32 || (NarrowEltVT == MVT::f16 && Subtarget.hasVInstructionsF16())`?

https://github.com/llvm/llvm-project/pull/144653


More information about the llvm-commits mailing list