[llvm] [X86][AVX] Match v4f64 blend from shuffle of scalar values. (PR #135753)
Simon Pilgrim via llvm-commits
llvm-commits at lists.llvm.org
Sat Apr 26 03:54:03 PDT 2025
================
@@ -8743,6 +8745,43 @@ static SDValue lowerBuildVectorToBitOp(BuildVectorSDNode *Op, const SDLoc &DL,
return LowerShift(Res, Subtarget, DAG);
}
+/// Attempt to lower a BUILD_VECTOR of scalar values to a shuffle of splats
+/// representing a blend.
+static SDValue lowerBuildVectorAsBlend(BuildVectorSDNode *BVOp, SDLoc const &DL,
+ X86Subtarget const &Subtarget,
+ SelectionDAG &DAG) {
+ MVT VT = BVOp->getSimpleValueType(0u);
+ auto const NumElems = VT.getVectorNumElements();
+
+ if (Subtarget.hasAVX() && VT == MVT::v4f64) {
----------------
RKSimon wrote:
to avoid the AVX1 'var' regression below we're going to need something along the lines of:
```
if (Subtarget.hasAVX2() || isShuffleFoldableLoad(Op0) || isShuffleFoldableLoad(Op1))
```
(we shouldn't need the AVX check as v4f64 is only legal on AVX+ targets)
https://github.com/llvm/llvm-project/pull/135753
More information about the llvm-commits
mailing list