[PATCH] D153848: [RISCV] Apply promotion for f16 vector ops when only have zvfhmin.

Craig Topper via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue Jun 27 10:21:24 PDT 2023


craig.topper added inline comments.


================
Comment at: llvm/lib/Target/RISCV/RISCVISelLowering.cpp:1078
+          // TODO: could split the f16 vector into two vectors and do promotion.
+          if (!useRVVForFixedLengthVectorVT(F32VecVT))
+            continue;
----------------
Use isTypeLegal?


================
Comment at: llvm/lib/Target/RISCV/RISCVISelLowering.cpp:4623
+    }
+    auto [LoOperand, HiOperand] = DAG.SplitVector(Op.getOperand(j), DL);
+    LoOperands[j] = LoOperand;
----------------
Does `std::tie(LoOperands[j], HiOperands[j]) =` work?


================
Comment at: llvm/lib/Target/RISCV/RISCVISelLowering.cpp:4801
   case ISD::IS_FPCLASS:
+
     return LowerIS_FPCLASS(Op, DAG);
----------------
Drop this change


================
Comment at: llvm/lib/Target/RISCV/RISCVISelLowering.cpp:5264
   case ISD::FADD:
+    if (Op.getValueType() == MVT::nxv32f16 &&
+        (Subtarget.hasVInstructionsF16Minimal() &&
----------------
Can we make a new function in place of `lowerToScalableOp` that does this check so we don't repeat it so many times.


================
Comment at: llvm/lib/Target/RISCV/RISCVISelLowering.cpp:5418
   case ISD::VP_FADD:
+    if (Op.getValueType() == MVT::nxv32f16 &&
+        (Subtarget.hasVInstructionsF16Minimal() &&
----------------
Can we make a new function in place of `lowerVPOp` that encapsulates this check?


================
Comment at: llvm/lib/Target/RISCV/RISCVISelLowering.cpp:12869
+      return V;
+    // Don't combine to fp16 for zvfhmin.
+    if (N->getValueType(0).isScalableVector() &&
----------------
Can this be moved into performVFMADD_VLCombine?


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D153848/new/

https://reviews.llvm.org/D153848



More information about the llvm-commits mailing list