[llvm] 10847f6 - [SLP]Add a test for the bug in `getVectorElementSize()`, NFC.
Alexey Bataev via llvm-commits
llvm-commits at lists.llvm.org
Wed Mar 31 11:41:30 PDT 2021
Author: Alexey Bataev
Date: 2021-03-31T11:40:44-07:00
New Revision: 10847f6217b159e01b72a34eb366a543ca612aa6
URL: https://github.com/llvm/llvm-project/commit/10847f6217b159e01b72a34eb366a543ca612aa6
DIFF: https://github.com/llvm/llvm-project/commit/10847f6217b159e01b72a34eb366a543ca612aa6.diff
LOG: [SLP]Add a test for the bug in `getVectorElementSize()`, NFC.
Added:
llvm/test/Transforms/SLPVectorizer/X86/inst_size_bug.ll
Modified:
Removed:
################################################################################
diff --git a/llvm/test/Transforms/SLPVectorizer/X86/inst_size_bug.ll b/llvm/test/Transforms/SLPVectorizer/X86/inst_size_bug.ll
new file mode 100644
index 0000000000000..54724df7ee786
--- /dev/null
+++ b/llvm/test/Transforms/SLPVectorizer/X86/inst_size_bug.ll
@@ -0,0 +1,51 @@
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
+; RUN: opt < %s -slp-vectorizer -S -mtriple=x86_64-unknown-linux-gnu -mattr=+avx2 -slp-max-reg-size=128 | FileCheck %s
+
+define void @inst_size(i64* %a, <2 x i64> %b) {
+; CHECK-LABEL: @inst_size(
+; CHECK-NEXT: entry:
+; CHECK-NEXT: [[VAL:%.*]] = extractelement <2 x i64> [[B:%.*]], i32 0
+; CHECK-NEXT: [[TMPL1:%.*]] = load i64, i64* [[A:%.*]], align 4
+; CHECK-NEXT: [[PTR2:%.*]] = getelementptr inbounds i64, i64* [[A]], i64 1
+; CHECK-NEXT: [[TMPL2:%.*]] = load i64, i64* [[PTR2]], align 4
+; CHECK-NEXT: [[PTR3:%.*]] = getelementptr inbounds i64, i64* [[A]], i64 2
+; CHECK-NEXT: [[TMPL3:%.*]] = load i64, i64* [[PTR3]], align 4
+; CHECK-NEXT: [[PTR4:%.*]] = getelementptr inbounds i64, i64* [[A]], i64 3
+; CHECK-NEXT: [[TMPL4:%.*]] = load i64, i64* [[PTR4]], align 4
+; CHECK-NEXT: [[T41:%.*]] = icmp sgt i64 0, [[VAL]]
+; CHECK-NEXT: [[T42:%.*]] = icmp sgt i64 0, [[TMPL1]]
+; CHECK-NEXT: [[T43:%.*]] = icmp sgt i64 0, [[TMPL2]]
+; CHECK-NEXT: [[T44:%.*]] = icmp sgt i64 0, [[TMPL3]]
+; CHECK-NEXT: [[T45:%.*]] = icmp sgt i64 0, [[TMPL4]]
+; CHECK-NEXT: br label [[BLOCK:%.*]]
+; CHECK: block:
+; CHECK-NEXT: [[PHI1:%.*]] = phi i1 [ [[T41]], [[ENTRY:%.*]] ]
+; CHECK-NEXT: [[PHI2:%.*]] = phi i1 [ [[T42]], [[ENTRY]] ]
+; CHECK-NEXT: [[PHI3:%.*]] = phi i1 [ [[T43]], [[ENTRY]] ]
+; CHECK-NEXT: [[PHI4:%.*]] = phi i1 [ [[T44]], [[ENTRY]] ]
+; CHECK-NEXT: [[PHI5:%.*]] = phi i1 [ [[T45]], [[ENTRY]] ]
+; CHECK-NEXT: ret void
+;
+entry:
+ %val = extractelement <2 x i64> %b, i32 0
+ %tmpl1 = load i64, i64* %a, align 4
+ %ptr2 = getelementptr inbounds i64, i64* %a, i64 1
+ %tmpl2 = load i64, i64* %ptr2, align 4
+ %ptr3 = getelementptr inbounds i64, i64* %a, i64 2
+ %tmpl3 = load i64, i64* %ptr3, align 4
+ %ptr4 = getelementptr inbounds i64, i64* %a, i64 3
+ %tmpl4 = load i64, i64* %ptr4, align 4
+ %t41 = icmp sgt i64 0, %val
+ %t42 = icmp sgt i64 0, %tmpl1
+ %t43 = icmp sgt i64 0, %tmpl2
+ %t44 = icmp sgt i64 0, %tmpl3
+ %t45 = icmp sgt i64 0, %tmpl4
+ br label %block
+block:
+ %phi1 = phi i1 [ %t41, %entry]
+ %phi2 = phi i1 [ %t42, %entry]
+ %phi3 = phi i1 [ %t43, %entry]
+ %phi4 = phi i1 [ %t44, %entry]
+ %phi5 = phi i1 [ %t45, %entry]
+ ret void
+}
More information about the llvm-commits
mailing list