[llvm] a411bc1 - Revert "[SLP]Fix a crash when insert subvector is out of range."

Fangrui Song via llvm-commits llvm-commits at lists.llvm.org
Wed Jun 22 23:16:37 PDT 2022


Author: Fangrui Song
Date: 2022-06-22T23:16:25-07:00
New Revision: a411bc11d6086a67b625b54d56ae62b61ba95166

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

LOG: Revert "[SLP]Fix a crash when insert subvector is out of range."

This reverts commit f1ee2738b3d70fea803ac1f3401c2fc9f61e514a.

Revert due to the revert of a dependent commit `[SLP]Improve shuffles cost estimation where possible.`

Added: 
    

Modified: 
    llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp

Removed: 
    llvm/test/Transforms/SLPVectorizer/AArch64/buildvector-vectorize.ll


################################################################################
diff  --git a/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp b/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
index 631dbb35f4509..03b164cca0c47 100644
--- a/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
+++ b/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
@@ -6168,16 +6168,6 @@ InstructionCost BoUpSLP::getEntryCost(const TreeEntry *E,
           PowerOf2Ceil(OffsetEnd - OffsetBeg + 1),
           ((OffsetEnd - OffsetBeg + VecScalarsSz) / VecScalarsSz) *
               VecScalarsSz);
-      bool IsWholeSubvector =
-          OffsetBeg == Offset && ((OffsetEnd + 1) % VecScalarsSz == 0);
-      // Check if we can safely insert a subvector. If it is not possible, just
-      // generate a whole-sized vector and shuffle the source vector and the new
-      // subvector.
-      if (OffsetBeg + InsertVecSz > VecSz) {
-        // Align OffsetBeg to generate correct mask.
-        OffsetBeg = alignDown(OffsetBeg, VecSz, Offset);
-        InsertVecSz = VecSz;
-      }
 
       APInt DemandedElts = APInt::getZero(NumElts);
       // TODO: Add support for Instruction::InsertValue.
@@ -6221,7 +6211,7 @@ InstructionCost BoUpSLP::getEntryCost(const TreeEntry *E,
       // TODO: Implement the analysis of the FirstInsert->getOperand(0)
       // subvector of ActualVecTy.
       if (!isUndefVector(FirstInsert->getOperand(0)) && NumScalars != NumElts &&
-          !IsWholeSubvector) {
+          (Offset != OffsetBeg || (OffsetEnd + 1) % VecScalarsSz != 0)) {
         if (InsertVecSz != VecSz) {
           auto *ActualVecTy =
               FixedVectorType::get(SrcVecTy->getElementType(), VecSz);

diff  --git a/llvm/test/Transforms/SLPVectorizer/AArch64/buildvector-vectorize.ll b/llvm/test/Transforms/SLPVectorizer/AArch64/buildvector-vectorize.ll
deleted file mode 100644
index 30658b6066652..0000000000000
--- a/llvm/test/Transforms/SLPVectorizer/AArch64/buildvector-vectorize.ll
+++ /dev/null
@@ -1,21 +0,0 @@
-; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
-; RUN: opt -slp-vectorizer -S -mtriple=aarch64 < %s | FileCheck %s
-
-define void @test(ptr %p) {
-; CHECK-LABEL: @test(
-; CHECK-NEXT:  entry:
-; CHECK-NEXT:    [[INC:%.*]] = getelementptr inbounds i16, ptr [[P:%.*]], i64 1
-; CHECK-NEXT:    [[TMP0:%.*]] = load i16, ptr [[INC]], align 4
-; CHECK-NEXT:    [[TMP1:%.*]] = load i16, ptr [[P]], align 2
-; CHECK-NEXT:    [[TMP2:%.*]] = insertelement <8 x i16> zeroinitializer, i16 [[TMP0]], i32 5
-; CHECK-NEXT:    [[TMP3:%.*]] = insertelement <8 x i16> [[TMP2]], i16 [[TMP1]], i32 7
-; CHECK-NEXT:    ret void
-;
-entry:
-  %inc = getelementptr inbounds i16, ptr %p, i64 1
-  %0 = load i16, ptr %inc, align 4
-  %1 = load i16, ptr %p, align 2
-  %2 = insertelement <8 x i16> zeroinitializer, i16 %0, i32 5
-  %3 = insertelement <8 x i16> %2, i16 %1, i32 7
-  ret void
-}


        


More information about the llvm-commits mailing list