[llvm] f11568b - Revert "[RISCV][TTI] Recognize CONCAT_VECTORS if a shufflevector mask is multiple insert subvector. (#110457)"

Philip Reames via llvm-commits llvm-commits at lists.llvm.org
Mon Oct 7 11:32:21 PDT 2024


Author: Philip Reames
Date: 2024-10-07T11:31:57-07:00
New Revision: f11568bcb026e0f54d270bda6f161b9fb1e42f39

URL: https://github.com/llvm/llvm-project/commit/f11568bcb026e0f54d270bda6f161b9fb1e42f39
DIFF: https://github.com/llvm/llvm-project/commit/f11568bcb026e0f54d270bda6f161b9fb1e42f39.diff

LOG: Revert "[RISCV][TTI] Recognize CONCAT_VECTORS if a shufflevector mask is multiple insert subvector. (#110457)"

This reverts commit 554eaec63908ed20c35c8cc85304a3d44a63c634.  Change was not approved when landed.

Added: 
    

Modified: 
    llvm/lib/Target/RISCV/RISCVTargetTransformInfo.cpp
    llvm/lib/Target/RISCV/RISCVTargetTransformInfo.h
    llvm/test/Transforms/SLPVectorizer/RISCV/remarks-insert-into-small-vector.ll
    llvm/test/Transforms/SLPVectorizer/RISCV/revec-getGatherCost.ll

Removed: 
    llvm/test/Analysis/CostModel/RISCV/fixed-vector-insert-subvector.ll


################################################################################
diff  --git a/llvm/lib/Target/RISCV/RISCVTargetTransformInfo.cpp b/llvm/lib/Target/RISCV/RISCVTargetTransformInfo.cpp
index 1e5321a9ace41b..a61461681f79ed 100644
--- a/llvm/lib/Target/RISCV/RISCVTargetTransformInfo.cpp
+++ b/llvm/lib/Target/RISCV/RISCVTargetTransformInfo.cpp
@@ -343,49 +343,6 @@ RISCVTTIImpl::getConstantPoolLoadCost(Type *Ty,  TTI::TargetCostKind CostKind) {
                              /*AddressSpace=*/0, CostKind);
 }
 
-InstructionCost
-RISCVTTIImpl::isMultipleInsertSubvector(VectorType *Tp, ArrayRef<int> Mask,
-                                        TTI::TargetCostKind CostKind) {
-  if (!isa<FixedVectorType>(Tp))
-    return InstructionCost::getInvalid();
-  std::pair<InstructionCost, MVT> LT = getTypeLegalizationCost(Tp);
-  if (LT.second.getScalarSizeInBits() == 1)
-    return InstructionCost::getInvalid();
-  // Try to guess SubTp.
-  for (unsigned SubVecSize = 1, E = Mask.size(); SubVecSize < E;
-       SubVecSize <<= 1) {
-    if (E % SubVecSize != 0)
-      continue;
-    SmallVector<int> RepeatedPattern(createSequentialMask(0, SubVecSize, 0));
-    bool Skip = false;
-    for (unsigned I = 0; I != E; I += SubVecSize)
-      if (!Mask.slice(I, SubVecSize).equals(RepeatedPattern)) {
-        Skip = true;
-        break;
-      }
-    if (Skip)
-      continue;
-    InstructionCost Cost = 0;
-    unsigned NumSlides = Log2_32(E / SubVecSize);
-    // The cost of extraction from a subvector is 0 if the index is 0.
-    for (unsigned I = 0; I != NumSlides; ++I) {
-      unsigned InsertIndex = SubVecSize * (1 << I);
-      FixedVectorType *SubTp = FixedVectorType::get(
-          cast<FixedVectorType>(Tp)->getElementType(), InsertIndex);
-      FixedVectorType *DesTp =
-          FixedVectorType::getDoubleElementsVectorType(SubTp);
-      std::pair<InstructionCost, MVT> DesLT = getTypeLegalizationCost(DesTp);
-      // Add the cost of whole vector register move because the destination
-      // vector register group for vslideup cannot overlap the source.
-      Cost += DesLT.first * TLI->getLMULCost(DesLT.second);
-      Cost += getShuffleCost(TTI::SK_InsertSubvector, DesTp, {}, CostKind,
-                             InsertIndex, SubTp);
-    }
-    return Cost;
-  }
-  return InstructionCost::getInvalid();
-}
-
 static VectorType *getVRGatherIndexType(MVT DataVT, const RISCVSubtarget &ST,
                                         LLVMContext &C) {
   assert((DataVT.getScalarSizeInBits() != 8 ||
@@ -437,10 +394,6 @@ InstructionCost RISCVTTIImpl::getShuffleCost(TTI::ShuffleKind Kind,
                                                         LT.second, CostKind);
           }
         }
-        if (InstructionCost Cost =
-                isMultipleInsertSubvector(Tp, Mask, CostKind);
-            Cost.isValid())
-          return Cost;
       }
       // vrgather + cost of generating the mask constant.
       // We model this for an unknown mask with a single vrgather.

diff  --git a/llvm/lib/Target/RISCV/RISCVTargetTransformInfo.h b/llvm/lib/Target/RISCV/RISCVTargetTransformInfo.h
index 9d6317baabc658..65bbd905508557 100644
--- a/llvm/lib/Target/RISCV/RISCVTargetTransformInfo.h
+++ b/llvm/lib/Target/RISCV/RISCVTargetTransformInfo.h
@@ -55,12 +55,6 @@ class RISCVTTIImpl : public BasicTTIImplBase<RISCVTTIImpl> {
   /// type.
   InstructionCost getConstantPoolLoadCost(Type *Ty,
                                           TTI::TargetCostKind CostKind);
-
-  /// Return the cost if a shufflevector can be consist of multiple vslideup.
-  /// Otherwise, return InstructionCost::getInvalid().
-  InstructionCost isMultipleInsertSubvector(VectorType *Tp, ArrayRef<int> Mask,
-                                            TTI::TargetCostKind CostKind);
-
 public:
   explicit RISCVTTIImpl(const RISCVTargetMachine *TM, const Function &F)
       : BaseT(TM, F.getDataLayout()), ST(TM->getSubtargetImpl(F)),

diff  --git a/llvm/test/Analysis/CostModel/RISCV/fixed-vector-insert-subvector.ll b/llvm/test/Analysis/CostModel/RISCV/fixed-vector-insert-subvector.ll
deleted file mode 100644
index 47a2af92aee950..00000000000000
--- a/llvm/test/Analysis/CostModel/RISCV/fixed-vector-insert-subvector.ll
+++ /dev/null
@@ -1,18 +0,0 @@
-; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py
-; RUN: opt < %s -passes="print<cost-model>" 2>&1 -disable-output -S -mtriple=riscv64 -mattr=+v | FileCheck %s
-
-define void @test() {
-; CHECK-LABEL: 'test'
-; CHECK-NEXT:  Cost Model: Found an estimated cost of 8 for instruction: %0 = shufflevector <8 x float> poison, <8 x float> poison, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
-; CHECK-NEXT:  Cost Model: Found an estimated cost of 6 for instruction: %1 = shufflevector <4 x i16> poison, <4 x i16> poison, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3>
-; CHECK-NEXT:  Cost Model: Found an estimated cost of 4 for instruction: %2 = shufflevector <4 x float> poison, <4 x float> poison, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3>
-; CHECK-NEXT:  Cost Model: Found an estimated cost of 4 for instruction: %3 = shufflevector <2 x i1> poison, <2 x i1> poison, <4 x i32> <i32 0, i32 1, i32 0, i32 1>
-; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: ret void
-;
-entry:
-  %0 = shufflevector <8 x float> poison, <8 x float> poison, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
-  %1 = shufflevector <4 x i16> poison, <4 x i16> poison, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3>
-  %2 = shufflevector <4 x float> poison, <4 x float> poison, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3>
-  %3 = shufflevector <2 x i1> poison, <2 x i1> poison, <4 x i32> <i32 0, i32 1, i32 0, i32 1>
-  ret void
-}

diff  --git a/llvm/test/Transforms/SLPVectorizer/RISCV/remarks-insert-into-small-vector.ll b/llvm/test/Transforms/SLPVectorizer/RISCV/remarks-insert-into-small-vector.ll
index 23a9a654c96f9e..bb806be15c71ca 100644
--- a/llvm/test/Transforms/SLPVectorizer/RISCV/remarks-insert-into-small-vector.ll
+++ b/llvm/test/Transforms/SLPVectorizer/RISCV/remarks-insert-into-small-vector.ll
@@ -8,7 +8,7 @@
 ; YAML-NEXT:  Function:        test
 ; YAML-NEXT:  Args:
 ; YAML-NEXT:  - String:          'Stores SLP vectorized with cost '
-; YAML-NEXT:  - Cost:            '0'
+; YAML-NEXT:  - Cost:            '2'
 ; YAML-NEXT:  - String:          ' and with tree size '
 ; YAML-NEXT:  - TreeSize:        '7'
 

diff  --git a/llvm/test/Transforms/SLPVectorizer/RISCV/revec-getGatherCost.ll b/llvm/test/Transforms/SLPVectorizer/RISCV/revec-getGatherCost.ll
index a0cb52a853b7e6..995cd7cfbc880b 100644
--- a/llvm/test/Transforms/SLPVectorizer/RISCV/revec-getGatherCost.ll
+++ b/llvm/test/Transforms/SLPVectorizer/RISCV/revec-getGatherCost.ll
@@ -8,7 +8,7 @@
 ; YAML: Function:        test1
 ; YAML: Args:
 ; YAML:   - String:          'Stores SLP vectorized with cost '
-; YAML:   - Cost:            '4'
+; YAML:   - Cost:            '6'
 ; YAML:   - String:          ' and with tree size '
 ; YAML:   - TreeSize:        '5'
 
@@ -47,7 +47,7 @@ declare <4 x float> @llvm.fmuladd.v4f32(<4 x float>, <4 x float>, <4 x float>)
 ; YAML: Function:        test2
 ; YAML: Args:
 ; YAML:   - String:          'Stores SLP vectorized with cost '
-; YAML:   - Cost:            '12'
+; YAML:   - Cost:            '16'
 ; YAML:   - String:          ' and with tree size '
 ; YAML:   - TreeSize:        '5'
 


        


More information about the llvm-commits mailing list