[llvm] [AArch64] Lower fixed width bf16 fpround (PR #209411)

Paul Walker via llvm-commits llvm-commits at lists.llvm.org
Tue Jul 14 04:07:52 PDT 2026


================
@@ -27405,11 +27362,12 @@ static SDValue performSTORECombine(SDNode *N,
   // We purposefully don't care about legality of the nodes here as we know
   // they can be split down into something legal.
   if (DCI.isBeforeLegalizeOps() && Value.getOpcode() == ISD::FP_ROUND &&
-      Value.getNode()->hasOneUse() && ST->isUnindexed() &&
+      Value->hasOneUse() && ST->isUnindexed() &&
       Subtarget->useSVEForFixedLengthVectors() &&
       ValueVT.isFixedLengthVector() &&
       ValueVT.getFixedSizeInBits() >= Subtarget->getMinSVEVectorSizeInBits() &&
-      hasValidElementTypeForFPTruncStore(Value.getOperand(0).getValueType()))
+      hasValidElementTypeForFPTruncStore(Value.getOperand(0).getValueType()) &&
+      Value.getValueType().getScalarType() != MVT::bf16)
----------------
paulwalker-arm wrote:

Given the rational for `hasValidElementTypeForFPTruncStore` it makes sense for it to take both the pre and post trunc types now the latter is relevant.

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


More information about the llvm-commits mailing list