Commit 446e11fa authored by Alexey Bataev's avatar Alexey Bataev
Browse files

[SLP][NFC]Add a test for tiny tree with stores and with not

same/alternate instructions.
parent 1a3b3301
Loading
Loading
Loading
Loading
+43 −0
Original line number Diff line number Diff line
@@ -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
}