; RUN: llc -mtriple=hexagon -O3 -debug-only=isel 2>&1 -simplifycfg-require-and-preserve-domtree=1 < %s | FileCheck %s ; REQUIRES: asserts ; DAGCombiner converts the two vector stores to a double vector store, ; even if the double vector store is unaligned. This is not good. If it ; is unaligned, we should let the DAGCombiner know that it is slow via ; the allowsMisalignedAccess function in HexagonISelLowering. ; CHECK-NOT: store target triple = "hexagon-unknown--elf" ; Function Attrs: nounwind define void @__processed() #0 { entry: br label %"for demosaiced.s0.y.y" "for demosaiced.s0.y.y": ; preds = %"for demosaiced.s0.y.y", %entry %demosaiced.s0.y.y = phi i32 [ 0, %entry ], [ %0, %"for demosaiced.s0.y.y" ] %0 = add nuw nsw i32 %demosaiced.s0.y.y, 1 %1 = mul nuw nsw i32 %demosaiced.s0.y.y, 256 %2 = tail call <64 x i32> @llvm.hexagon.V6.vshuffvdd.128B(<32 x i32> undef, <32 x i32> undef, i32 -2) %3 = bitcast <64 x i32> %2 to <128 x i16> %4 = shufflevector <128 x i16> %3, <128 x i16> undef, <64 x i32> %5 = add nuw nsw i32 %1, 32896 %6 = getelementptr inbounds i16, ptr undef, i32 %5 store <64 x i16> %4, ptr %6, align 128 %7 = shufflevector <128 x i16> %3, <128 x i16> undef, <64 x i32> %8 = add nuw nsw i32 %1, 32960 %9 = getelementptr inbounds i16, ptr undef, i32 %8 store <64 x i16> %7, ptr %9, align 128 br i1 false, label %"consume demosaiced", label %"for demosaiced.s0.y.y" "consume demosaiced": ; preds = %"for demosaiced.s0.y.y" unreachable "consume processed": ; preds = %"produce processed" ret void } declare <64 x i32> @llvm.hexagon.V6.vshuffvdd.128B(<32 x i32>, <32 x i32>, i32) #1 attributes #0 = { nounwind "target-cpu"="hexagonv60" "target-features"="+hvx,+hvx-length128b" } attributes #1 = { nounwind readnone "target-cpu"="hexagonv60" "target-features"="+hvx,+hvx-length128b" }