Loading llvm/test/Transforms/SLPVectorizer/X86/tiny-tree.ll +43 −0 Original line number Diff line number Diff line Loading @@ -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 } Loading
llvm/test/Transforms/SLPVectorizer/X86/tiny-tree.ll +43 −0 Original line number Diff line number Diff line Loading @@ -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 }