From: Simon Pilgrim Date: Fri, 30 Sep 2022 10:07:46 +0000 (+0100) Subject: [SLP][X86] Add test case for crash reported on D134605 X-Git-Tag: upstream/17.0.6~32004 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=19782a46f809c2343d225f7c5448132a9a4888e6;p=platform%2Fupstream%2Fllvm.git [SLP][X86] Add test case for crash reported on D134605 --- diff --git a/llvm/test/Transforms/SLPVectorizer/X86/scalarization-overhead.ll b/llvm/test/Transforms/SLPVectorizer/X86/scalarization-overhead.ll new file mode 100644 index 0000000..69bb319 --- /dev/null +++ b/llvm/test/Transforms/SLPVectorizer/X86/scalarization-overhead.ll @@ -0,0 +1,45 @@ +; NOTE: Assertions have been autogenerated by utils/update_test_checks.py +; RUN: opt -mtriple=x86_64-- -slp-vectorizer -S < %s | FileCheck %s + +; Crash Test case reported on D134605 + +define i16 @D134605() { +; CHECK-LABEL: @D134605( +; CHECK-NEXT: entry: +; CHECK-NEXT: [[TMP0:%.*]] = load <4 x i16>, ptr poison, align 1 +; CHECK-NEXT: [[SHUFFLE:%.*]] = shufflevector <4 x i16> [[TMP0]], <4 x i16> poison, <8 x i32> +; CHECK-NEXT: [[TMP1:%.*]] = extractelement <8 x i16> [[SHUFFLE]], i32 6 +; CHECK-NEXT: [[REASS_ADD:%.*]] = add i16 poison, [[TMP1]] +; CHECK-NEXT: [[TMP2:%.*]] = call i16 @llvm.vector.reduce.add.v8i16(<8 x i16> [[SHUFFLE]]) +; CHECK-NEXT: [[OP_RDX:%.*]] = add i16 [[TMP2]], poison +; CHECK-NEXT: [[OP_RDX1:%.*]] = add i16 [[OP_RDX]], poison +; CHECK-NEXT: [[REASS_MUL24:%.*]] = shl i16 [[OP_RDX1]], 2 +; CHECK-NEXT: [[CALL:%.*]] = call i16 @check_i16(i16 noundef 1, i16 noundef [[REASS_MUL24]], i16 noundef 5120) +; CHECK-NEXT: unreachable +; +entry: + %arrayidx81 = getelementptr inbounds [32 x i16], ptr poison, i16 0, i16 3 + %0 = load i16, ptr %arrayidx81, align 1 + %1 = load i16, ptr poison, align 1 + %arrayidx101 = getelementptr inbounds [32 x i16], ptr poison, i16 0, i16 1 + %2 = load i16, ptr %arrayidx101, align 1 + %arrayidx107 = getelementptr inbounds [32 x i16], ptr poison, i16 0, i16 2 + %3 = load i16, ptr %arrayidx107, align 1 + %reass.add = add i16 poison, %0 + %add116 = add i16 %1, %0 + %add122 = add i16 %add116, %2 + %add124 = add i16 %add122, %3 + %add125 = add i16 %add124, poison + %factor2531 = add i16 %3, %add125 + %add14332 = add i16 %factor2531, %2 + %add14933 = add i16 %add14332, %1 + %add15534 = add i16 %add14933, %0 + %add15935 = add i16 %add15534, poison + %reass.mul24 = shl i16 %add15935, 2 + %call = call i16 @check_i16(i16 noundef 1, i16 noundef %reass.mul24, i16 noundef 5120) + unreachable +} + +declare i16 @check_i16(i16, i16, i16) + +