[llvm] 91ab832 - [X86] combineConcatVectorOps - pull out repeated getConstantOperandAPInt calls for the same EXTRACT_SUBVECTOR indices. NFC.
Simon Pilgrim via llvm-commits
llvm-commits at lists.llvm.org
Thu Jun 5 05:00:28 PDT 2025
Author: Simon Pilgrim
Date: 2025-06-05T12:50:32+01:00
New Revision: 91ab8320db977a143320d8afb96ea2de3b6df938
URL: https://github.com/llvm/llvm-project/commit/91ab8320db977a143320d8afb96ea2de3b6df938
DIFF: https://github.com/llvm/llvm-project/commit/91ab8320db977a143320d8afb96ea2de3b6df938.diff
LOG: [X86] combineConcatVectorOps - pull out repeated getConstantOperandAPInt calls for the same EXTRACT_SUBVECTOR indices. NFC.
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 552f19f341c8d..5005c5559c59c 100644
--- a/llvm/lib/Target/X86/X86ISelLowering.cpp
+++ b/llvm/lib/Target/X86/X86ISelLowering.cpp
@@ -58475,12 +58475,13 @@ static SDValue combineConcatVectorOps(const SDLoc &DL, MVT VT,
EVT SrcVT1 = Src1.getOperand(0).getValueType();
unsigned NumSrcElts0 = SrcVT0.getVectorNumElements();
unsigned NumSrcElts1 = SrcVT1.getVectorNumElements();
+ const APInt &SrcIdx0 = Src0.getConstantOperandAPInt(1);
+ const APInt &SrcIdx1 = Src1.getConstantOperandAPInt(1);
// concat(extract_subvector(v0), extract_subvector(v1)) -> vperm2x128.
// Only concat of subvector high halves which vperm2x128 is best at.
if (VT.is256BitVector() && SrcVT0.is256BitVector() &&
- SrcVT1.is256BitVector() &&
- Src0.getConstantOperandAPInt(1) == (NumSrcElts0 / 2) &&
- Src1.getConstantOperandAPInt(1) == (NumSrcElts1 / 2)) {
+ SrcVT1.is256BitVector() && SrcIdx0 == (NumSrcElts0 / 2) &&
+ SrcIdx1 == (NumSrcElts1 / 2)) {
return DAG.getNode(X86ISD::VPERM2X128, DL, VT,
DAG.getBitcast(VT, Src0.getOperand(0)),
DAG.getBitcast(VT, Src1.getOperand(0)),
@@ -58491,10 +58492,8 @@ static SDValue combineConcatVectorOps(const SDLoc &DL, MVT VT,
// --> extract_subvector(x,lo)
unsigned NumSubElts0 = Src0.getValueType().getVectorNumElements();
if (Src0.getOperand(0) == Src1.getOperand(0) &&
- (Src0.getConstantOperandAPInt(1) == 0 ||
- Src0.getConstantOperandAPInt(1) == (NumSrcElts0 / 2)) &&
- Src1.getConstantOperandAPInt(1) ==
- (Src0.getConstantOperandAPInt(1) + NumSubElts0)) {
+ (SrcIdx0 == 0 || SrcIdx0 == (NumSrcElts0 / 2)) &&
+ SrcIdx1 == (SrcIdx0 + NumSubElts0)) {
return DAG.getBitcast(VT,
extractSubVector(Src0.getOperand(0),
Src0.getConstantOperandVal(1),
More information about the llvm-commits
mailing list