; NOTE: Assertions have been autogenerated by utils/update_test_checks.py ; RUN: opt -mtriple=x86_64-unknown-linux-gnu -mattr=+avx10.1 -passes=slp-vectorizer -S -slp-revec < %s | FileCheck %s define void @test(ptr %in) { ; CHECK-LABEL: @test( ; CHECK-NEXT: entry: ; CHECK-NEXT: [[TMP0:%.*]] = getelementptr i8, ptr [[IN:%.*]], i64 32 ; CHECK-NEXT: [[TMP1:%.*]] = getelementptr i8, ptr [[IN]], i64 64 ; CHECK-NEXT: [[TMP2:%.*]] = call <32 x i16> @llvm.masked.load.v32i16.p0(ptr [[TMP1]], i32 2, <32 x i1> , <32 x i16> poison) ; CHECK-NEXT: [[TMP3:%.*]] = shufflevector <32 x i16> [[TMP2]], <32 x i16> poison, <16 x i32> ; CHECK-NEXT: [[TMP7:%.*]] = or <16 x i16> zeroinitializer, [[TMP3]] ; CHECK-NEXT: store <16 x i16> [[TMP7]], ptr [[TMP0]], align 2 ; CHECK-NEXT: ret void ; entry: %0 = getelementptr i8, ptr %in, i64 112 %wide.load = load <8 x i16>, ptr %0, align 2 %1 = sext <8 x i16> %wide.load to <8 x i32> %2 = getelementptr i8, ptr %in, i64 48 %3 = or <8 x i32> zeroinitializer, %1 %4 = getelementptr i8, ptr %in, i64 32 %5 = getelementptr i8, ptr %in, i64 64 %wide.load155 = load <8 x i16>, ptr %5, align 2 %6 = sext <8 x i16> %wide.load155 to <8 x i32> %7 = or <8 x i32> zeroinitializer, %6 %8 = trunc <8 x i32> %3 to <8 x i16> store <8 x i16> %8, ptr %2, align 2 %9 = trunc <8 x i32> %7 to <8 x i16> store <8 x i16> %9, ptr %4, align 2 ret void }