[llvm] c564ebb - [X86] combineEXTRACT_SUBVECTOR - move AVX1 ANDNP comment and fold back together. NFC.
Simon Pilgrim via llvm-commits
llvm-commits at lists.llvm.org
Tue Jun 17 00:55:24 PDT 2025
Author: Simon Pilgrim
Date: 2025-06-17T08:54:57+01:00
New Revision: c564ebba22ae9af315e08789c628810a3bbcf3df
URL: https://github.com/llvm/llvm-project/commit/c564ebba22ae9af315e08789c628810a3bbcf3df
DIFF: https://github.com/llvm/llvm-project/commit/c564ebba22ae9af315e08789c628810a3bbcf3df.diff
LOG: [X86] combineEXTRACT_SUBVECTOR - move AVX1 ANDNP comment and fold back together. NFC.
These appear to have been split by a merge at some point.
Added:
Modified:
llvm/lib/Target/X86/X86ISelLowering.cpp
Removed:
################################################################################
diff --git a/llvm/lib/Target/X86/X86ISelLowering.cpp b/llvm/lib/Target/X86/X86ISelLowering.cpp
index 290fad07be4f9..820b9c53a5089 100644
--- a/llvm/lib/Target/X86/X86ISelLowering.cpp
+++ b/llvm/lib/Target/X86/X86ISelLowering.cpp
@@ -59683,16 +59683,6 @@ static SDValue narrowExtractedVectorSelect(SDNode *Ext, const SDLoc &DL,
static SDValue combineEXTRACT_SUBVECTOR(SDNode *N, SelectionDAG &DAG,
TargetLowering::DAGCombinerInfo &DCI,
const X86Subtarget &Subtarget) {
- // For AVX1 only, if we are extracting from a 256-bit and+not (which will
- // eventually get combined/lowered into ANDNP) with a concatenated operand,
- // split the 'and' into 128-bit ops to avoid the concatenate and extract.
- // We let generic combining take over from there to simplify the
- // insert/extract and 'not'.
- // This pattern emerges during AVX1 legalization. We handle it before lowering
- // to avoid complications like splitting constant vector loads.
-
- // Capture the original wide type in the likely case that we need to bitcast
- // back to this type.
if (!N->getValueType(0).isSimple())
return SDValue();
@@ -59708,8 +59698,14 @@ static SDValue combineEXTRACT_SUBVECTOR(SDNode *N, SelectionDAG &DAG,
const TargetLowering &TLI = DAG.getTargetLoweringInfo();
SDLoc DL(N);
- if (Subtarget.hasAVX() && !Subtarget.hasAVX2() &&
- TLI.isTypeLegal(InVecVT) &&
+ // For AVX1 only, if we are extracting from a 256-bit and+not (which will
+ // eventually get combined/lowered into ANDNP) with a concatenated operand,
+ // split the 'and' into 128-bit ops to avoid the concatenate and extract.
+ // We let generic combining take over from there to simplify the
+ // insert/extract and 'not'.
+ // This pattern emerges during AVX1 legalization. We handle it before lowering
+ // to avoid complications like splitting constant vector loads.
+ if (Subtarget.hasAVX() && !Subtarget.hasAVX2() && TLI.isTypeLegal(InVecVT) &&
InSizeInBits == 256 && InVecBC.getOpcode() == ISD::AND) {
auto isConcatenatedNot = [](SDValue V) {
V = peekThroughBitcasts(V);
More information about the llvm-commits
mailing list