[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