[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