; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5 ; RUN: llc < %s -mtriple=x86_64-- -mcpu=sandybridge | FileCheck %s define void @PR107423(<64 x i8> %arg, ptr %p0) { ; CHECK-LABEL: PR107423: ; CHECK: # %bb.0: ; CHECK-NEXT: vextractf128 $1, %ymm1, %xmm2 ; CHECK-NEXT: vpsllw $8, %xmm2, %xmm2 ; CHECK-NEXT: vpsllw $8, %xmm1, %xmm3 ; CHECK-NEXT: vpaddb %xmm0, %xmm2, %xmm4 ; CHECK-NEXT: vpaddb %xmm2, %xmm3, %xmm2 ; CHECK-NEXT: vextractf128 $1, %ymm0, %xmm3 ; CHECK-NEXT: vpaddb %xmm3, %xmm0, %xmm0 ; CHECK-NEXT: vpaddb %xmm1, %xmm3, %xmm1 ; CHECK-NEXT: vpsllw $8, %xmm1, %xmm1 ; CHECK-NEXT: vpaddb %xmm4, %xmm1, %xmm1 ; CHECK-NEXT: vpsllw $8, %xmm0, %xmm0 ; CHECK-NEXT: vpaddb %xmm2, %xmm0, %xmm0 ; CHECK-NEXT: vpxor %xmm2, %xmm2, %xmm2 ; CHECK-NEXT: vpaddb %xmm0, %xmm2, %xmm0 ; CHECK-NEXT: vpsllw $8, %xmm1, %xmm2 ; CHECK-NEXT: vpaddb %xmm1, %xmm2, %xmm1 ; CHECK-NEXT: vmovdqu %xmm0, (%rdi) ; CHECK-NEXT: vmovdqu %xmm1, 16(%rdi) ; CHECK-NEXT: vzeroupper ; CHECK-NEXT: retq %i3 = bitcast <64 x i8> %arg to <32 x i16> %i4 = shufflevector <32 x i16> %i3, <32 x i16> poison, <8 x i32> %i5 = shl <8 x i16> %i4, %i6 = bitcast <8 x i16> %i5 to <16 x i8> %i7 = shufflevector <64 x i8> %arg, <64 x i8> poison, <64 x i32> %i8 = shufflevector <64 x i8> %arg, <64 x i8> poison, <64 x i32> %i9 = shufflevector <64 x i8> %i7, <64 x i8> %i8, <64 x i32> %i10 = shufflevector <16 x i8> %i6, <16 x i8> poison, <64 x i32> %i11 = shufflevector <64 x i8> %i10, <64 x i8> %i9, <64 x i32> %i12 = bitcast <64 x i8> %i11 to <32 x i16> %i13 = shl <32 x i16> %i12, %i14 = bitcast <32 x i16> %i13 to <64 x i8> %i15 = shufflevector <64 x i8> %i14, <64 x i8> poison, <16 x i32> %i16 = shufflevector <64 x i8> %i11, <64 x i8> poison, <64 x i32> %i17 = shufflevector <16 x i8> %i6, <16 x i8> poison, <64 x i32> %i18 = shufflevector <64 x i8> %i16, <64 x i8> %i17, <64 x i32> %i19 = shufflevector <16 x i8> %i15, <16 x i8> poison, <64 x i32> %i20 = shufflevector <64 x i8> %i19, <64 x i8> %i18, <64 x i32> %i21 = add <64 x i8> %i20, %i11 %i22 = bitcast <64 x i8> %i21 to <32 x i16> %i23 = shl <32 x i16> %i22, %i24 = bitcast <32 x i16> %i23 to <64 x i8> %i25 = shufflevector <64 x i8> %i24, <64 x i8> poison, <16 x i32> %i26 = bitcast <32 x i16> %i23 to <64 x i8> %i28 = shufflevector <64 x i8> %i26, <64 x i8> poison, <16 x i32> %i32 = shufflevector <64 x i8> %i21, <64 x i8> poison, <64 x i32> %i33 = shufflevector <16 x i8> %i25, <16 x i8> poison, <64 x i32> %i34 = shufflevector <64 x i8> %i32, <64 x i8> %i33, <64 x i32> %i35 = shufflevector <16 x i8> %i28, <16 x i8> poison, <64 x i32> %i36 = shufflevector <64 x i8> %i35, <64 x i8> %i34, <64 x i32> %i37 = add <64 x i8> %i36, %i21 %i38 = bitcast <64 x i8> %i37 to <32 x i16> %i39 = shufflevector <32 x i16> %i38, <32 x i16> poison, <8 x i32> %i40 = shl <8 x i16> %i39, %i41 = bitcast <8 x i16> %i40 to <16 x i8> %i42 = shufflevector <16 x i8> %i41, <16 x i8> poison, <64 x i32> %i43 = shufflevector <64 x i8> %i42, <64 x i8> %i37, <64 x i32> %i44 = bitcast <64 x i8> %i43 to <32 x i16> %i45 = shufflevector <32 x i16> %i44, <32 x i16> poison, <8 x i32> %i46 = shl <8 x i16> %i45, %i47 = bitcast <8 x i16> %i46 to <16 x i8> %i48 = shufflevector <16 x i8> %i47, <16 x i8> poison, <64 x i32> %i49 = shufflevector <64 x i8> %i43, <64 x i8> %i48, <32 x i32> %i50 = shufflevector <64 x i8> %i37, <64 x i8> poison, <32 x i32> %i51 = add <32 x i8> %i49, %i50 store <32 x i8> %i51, ptr %p0, align 1 ret void }