; RUN: llc -march=hexagon -O3 -debug-only=isel 2>&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, i16* undef, i32 %5 %7 = bitcast i16* %6 to <64 x i16>* store <64 x i16> %4, <64 x i16>* %7, align 128 %8 = shufflevector <128 x i16> %3, <128 x i16> undef, <64 x i32> %9 = add nuw nsw i32 %1, 32960 %10 = getelementptr inbounds i16, i16* undef, i32 %9 %11 = bitcast i16* %10 to <64 x i16>* store <64 x i16> %8, <64 x i16>* %11, 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" }