[llvm] 446e11f - [SLP][NFC]Add a test for tiny tree with stores and with not

Alexey Bataev via llvm-commits llvm-commits at lists.llvm.org
Wed Sep 15 08:07:37 PDT 2021


Author: Alexey Bataev
Date: 2021-09-15T08:07:01-07:00
New Revision: 446e11fa2943b1c82aaf588f0df4985259fe1be2

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

LOG: [SLP][NFC]Add a test for tiny tree with stores and with not
same/alternate instructions.

Added: 
    

Modified: 
    llvm/test/Transforms/SLPVectorizer/X86/tiny-tree.ll

Removed: 
    


################################################################################
diff  --git a/llvm/test/Transforms/SLPVectorizer/X86/tiny-tree.ll b/llvm/test/Transforms/SLPVectorizer/X86/tiny-tree.ll
index d827ea2bc8cb..2a31f825fd29 100644
--- a/llvm/test/Transforms/SLPVectorizer/X86/tiny-tree.ll
+++ b/llvm/test/Transforms/SLPVectorizer/X86/tiny-tree.ll
@@ -307,3 +307,46 @@ define void @tiny_vector_gather(i32 *%a, i32 *%v1, i32 *%v2) {
   store i32 %2, i32* %ptr7, align 4
   ret void
 }
+
+define void @tiny_vector_gather_
diff _opcode(i16 *%a, i16 *%v1) {
+; CHECK-LABEL: @tiny_vector_gather_
diff _opcode(
+; CHECK-NEXT:    [[TMP1:%.*]] = load i16, i16* [[V1:%.*]], align 4
+; CHECK-NEXT:    [[TMP2:%.*]] = trunc i64 undef to i16
+; CHECK-NEXT:    [[PTR0:%.*]] = getelementptr inbounds i16, i16* [[A:%.*]], i64 0
+; CHECK-NEXT:    store i16 [[TMP1]], i16* [[PTR0]], align 16
+; CHECK-NEXT:    [[PTR1:%.*]] = getelementptr inbounds i16, i16* [[A]], i64 1
+; CHECK-NEXT:    store i16 [[TMP2]], i16* [[PTR1]], align 4
+; CHECK-NEXT:    [[PTR2:%.*]] = getelementptr inbounds i16, i16* [[A]], i64 2
+; CHECK-NEXT:    store i16 [[TMP1]], i16* [[PTR2]], align 8
+; CHECK-NEXT:    [[PTR3:%.*]] = getelementptr inbounds i16, i16* [[A]], i64 3
+; CHECK-NEXT:    store i16 [[TMP2]], i16* [[PTR3]], align 4
+; CHECK-NEXT:    [[PTR4:%.*]] = getelementptr inbounds i16, i16* [[A]], i64 4
+; CHECK-NEXT:    store i16 [[TMP1]], i16* [[PTR4]], align 16
+; CHECK-NEXT:    [[PTR5:%.*]] = getelementptr inbounds i16, i16* [[A]], i64 5
+; CHECK-NEXT:    store i16 [[TMP2]], i16* [[PTR5]], align 4
+; CHECK-NEXT:    [[PTR6:%.*]] = getelementptr inbounds i16, i16* [[A]], i64 6
+; CHECK-NEXT:    store i16 [[TMP1]], i16* [[PTR6]], align 8
+; CHECK-NEXT:    [[PTR7:%.*]] = getelementptr inbounds i16, i16* [[A]], i64 7
+; CHECK-NEXT:    store i16 [[TMP2]], i16* [[PTR7]], align 4
+; CHECK-NEXT:    ret void
+;
+  %1 = load i16, i16* %v1, align 4
+  %2 = trunc i64 undef to i16
+  %ptr0 = getelementptr inbounds i16, i16* %a, i64 0
+  store i16 %1, i16* %ptr0, align 16
+  %ptr1 = getelementptr inbounds i16, i16* %a, i64 1
+  store i16 %2, i16* %ptr1, align 4
+  %ptr2 = getelementptr inbounds i16, i16* %a, i64 2
+  store i16 %1, i16* %ptr2, align 8
+  %ptr3 = getelementptr inbounds i16, i16* %a, i64 3
+  store i16 %2, i16* %ptr3, align 4
+  %ptr4 = getelementptr inbounds i16, i16* %a, i64 4
+  store i16 %1, i16* %ptr4, align 16
+  %ptr5 = getelementptr inbounds i16, i16* %a, i64 5
+  store i16 %2, i16* %ptr5, align 4
+  %ptr6 = getelementptr inbounds i16, i16* %a, i64 6
+  store i16 %1, i16* %ptr6, align 8
+  %ptr7 = getelementptr inbounds i16, i16* %a, i64 7
+  store i16 %2, i16* %ptr7, align 4
+  ret void
+}


        


More information about the llvm-commits mailing list