[llvm] 5e4c34a - [SLP][NFC]Add a test with incorrect length and cost for repeated matching node
Alexey Bataev via llvm-commits
llvm-commits at lists.llvm.org
Mon Jan 20 14:20:10 PST 2025
Author: Alexey Bataev
Date: 2025-01-20T14:17:15-08:00
New Revision: 5e4c34a9b67d9ce15d14f83bcea96ccb69de1eae
URL: https://github.com/llvm/llvm-project/commit/5e4c34a9b67d9ce15d14f83bcea96ccb69de1eae
DIFF: https://github.com/llvm/llvm-project/commit/5e4c34a9b67d9ce15d14f83bcea96ccb69de1eae.diff
LOG: [SLP][NFC]Add a test with incorrect length and cost for repeated matching node
Added:
llvm/test/Transforms/SLPVectorizer/X86/multi-node-reuse-in-bv.ll
Modified:
Removed:
################################################################################
diff --git a/llvm/test/Transforms/SLPVectorizer/X86/multi-node-reuse-in-bv.ll b/llvm/test/Transforms/SLPVectorizer/X86/multi-node-reuse-in-bv.ll
new file mode 100644
index 00000000000000..34606feade5d35
--- /dev/null
+++ b/llvm/test/Transforms/SLPVectorizer/X86/multi-node-reuse-in-bv.ll
@@ -0,0 +1,105 @@
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 5
+; RUN: opt -S --passes=slp-vectorizer -mtriple=x86_64-unknown-linux-gnu -mattr=+avx2 -pass-remarks-output=%t < %s | FileCheck %s
+; RUN: FileCheck --input-file=%t --check-prefix=YAML %s
+
+; YAML-LABEL: --- !Passed
+; YAML-NEXT: Pass: slp-vectorizer
+; YAML-NEXT: Name: VectorizedHorizontalReduction
+; YAML-NEXT: Function: test
+; YAML-NEXT: Args:
+; YAML-NEXT: - String: 'Vectorized horizontal reduction with cost '
+; YAML-NEXT: - Cost: '-38'
+; YAML-NEXT: - String: ' and with tree size '
+; YAML-NEXT: - TreeSize: '7'
+; YAML-NEXT: ...
+
+define i64 @test() {
+; CHECK-LABEL: define i64 @test(
+; CHECK-SAME: ) #[[ATTR0:[0-9]+]] {
+; CHECK-NEXT: [[ENTRY:.*:]]
+; CHECK-NEXT: [[TMP0:%.*]] = insertelement <32 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 undef, i32 0, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 undef, i32 undef, i32 undef, i32 undef, i32 0, i32 0, i32 0, i32 0>, i32 0, i32 6
+; CHECK-NEXT: [[TMP1:%.*]] = call <32 x i32> @llvm.vector.insert.v32i32.v8i32(<32 x i32> [[TMP0]], <8 x i32> zeroinitializer, i64 8)
+; CHECK-NEXT: [[TMP2:%.*]] = call <32 x i32> @llvm.vector.insert.v32i32.v4i32(<32 x i32> [[TMP1]], <4 x i32> <i32 0, i32 0, i32 0, i32 1>, i64 24)
+; CHECK-NEXT: [[TMP3:%.*]] = sub <32 x i32> zeroinitializer, [[TMP2]]
+; CHECK-NEXT: [[TMP4:%.*]] = call i32 @llvm.vector.reduce.add.v32i32(<32 x i32> [[TMP3]])
+; CHECK-NEXT: [[OP_RDX:%.*]] = add i32 [[TMP4]], 0
+; CHECK-NEXT: [[RES:%.*]] = sext i32 [[OP_RDX]] to i64
+; CHECK-NEXT: ret i64 [[RES]]
+;
+entry:
+ %.neg15 = sub i32 0, 0
+ %0 = trunc i64 1 to i32
+ %.neg.1 = sub i32 0, 0
+ %.neg15.1 = sub i32 0, %0
+ %.neg16.1 = add i32 %.neg.1, %.neg15.1
+ %1 = add i32 %.neg16.1, %.neg15
+ %2 = trunc i64 0 to i32
+ %.neg.2 = sub i32 0, %0
+ %.neg15.2 = sub i32 0, %2
+ %.neg16.2 = add i32 %.neg.2, %.neg15.2
+ %3 = add i32 %.neg16.2, %1
+ %4 = trunc i64 0 to i32
+ %.neg.3 = sub i32 0, %2
+ %.neg15.3 = sub i32 0, %4
+ %.neg16.3 = add i32 %.neg.3, %.neg15.3
+ %5 = add i32 %.neg16.3, %3
+ %6 = trunc i64 0 to i32
+ %.neg.4 = sub i32 0, %4
+ %.neg15.4 = sub i32 0, %6
+ %.neg16.4 = add i32 %.neg.4, %.neg15.4
+ %7 = add i32 %.neg16.4, %5
+ %.neg.5 = sub i32 0, %6
+ %.neg15.5 = sub i32 0, 0
+ %.neg16.5 = add i32 %.neg.5, %.neg15.5
+ %8 = add i32 %.neg16.5, %7
+ %.neg15.6 = sub i32 0, 0
+ %.neg16.6 = add i32 0, %.neg15.6
+ %9 = add i32 %.neg16.6, %8
+ %.neg.7 = sub i32 0, 0
+ %.neg15.7 = sub i32 0, 0
+ %.neg16.7 = add i32 %.neg.7, %.neg15.7
+ %10 = add i32 %.neg16.7, %9
+ %11 = trunc i64 0 to i32
+ %.neg.8 = sub i32 0, 0
+ %.neg15.8 = sub i32 0, %11
+ %.neg16.8 = add i32 %.neg.8, %.neg15.8
+ %12 = add i32 %.neg16.8, %10
+ %13 = trunc i64 0 to i32
+ %.neg.9 = sub i32 0, %11
+ %.neg15.9 = sub i32 0, %13
+ %.neg16.9 = add i32 %.neg.9, %.neg15.9
+ %14 = add i32 %.neg16.9, %12
+ %15 = trunc i64 0 to i32
+ %.neg.10 = sub i32 0, %13
+ %.neg15.10 = sub i32 0, %15
+ %.neg16.10 = add i32 %.neg.10, %.neg15.10
+ %16 = add i32 %.neg16.10, %14
+ %17 = trunc i64 0 to i32
+ %.neg.11 = sub i32 0, %15
+ %.neg15.11 = sub i32 0, %17
+ %.neg16.11 = add i32 %.neg.11, %.neg15.11
+ %18 = add i32 %.neg16.11, %16
+ %19 = trunc i64 0 to i32
+ %.neg.12 = sub i32 0, %17
+ %.neg15.12 = sub i32 0, %19
+ %.neg16.12 = add i32 %.neg.12, %.neg15.12
+ %20 = add i32 %.neg16.12, %18
+ %.neg.13 = sub i32 0, %19
+ %.neg15.13 = sub i32 0, 0
+ %.neg16.13 = add i32 %.neg.13, %.neg15.13
+ %21 = add i32 %.neg16.13, %20
+ %.neg.14 = sub i32 0, 0
+ %.neg15.14 = sub i32 0, 0
+ %.neg16.14 = add i32 %.neg.14, %.neg15.14
+ %22 = add i32 %.neg16.14, %21
+ %.neg.15 = sub i32 0, 0
+ %.neg15.15 = sub i32 0, 0
+ %.neg16.15 = add i32 %.neg.15, %.neg15.15
+ %23 = add i32 %.neg16.15, %22
+ %.neg.16 = sub i32 0, 0
+ %.neg15.16 = sub i32 0, 0
+ %.neg16.16 = add i32 %.neg.16, %.neg15.16
+ %24 = add i32 %.neg16.16, %23
+ %res = sext i32 %24 to i64
+ ret i64 %res
+}
More information about the llvm-commits
mailing list