; RUN: llc -march=hexagon -O3 < %s | FileCheck %s ; This test checks if we custom lower extract_subvector. If we cannot ; custom lower extract_subvector this test makes the compiler crash. ; CHECK: vmem target triple = "hexagon-unknown--elf" ; Function Attrs: nounwind define void @__processed() #0 { entry: br label %"for matrix.s0.y" "for matrix.s0.y": ; preds = %"for matrix.s0.y", %entry br i1 undef, label %"produce processed", label %"for matrix.s0.y" "produce processed": ; preds = %"for matrix.s0.y" br i1 undef, label %"for processed.s0.ty.ty.preheader", label %"consume processed" "for processed.s0.ty.ty.preheader": ; preds = %"produce processed" br i1 undef, label %"for denoised.s0.y.preheader", label %"consume denoised" "for denoised.s0.y.preheader": ; preds = %"for processed.s0.ty.ty.preheader" unreachable "consume denoised": ; preds = %"for processed.s0.ty.ty.preheader" br i1 undef, label %"consume deinterleaved", label %if.then.i164 if.then.i164: ; preds = %"consume denoised" unreachable "consume deinterleaved": ; preds = %"consume denoised" %0 = tail call <64 x i32> @llvm.hexagon.V6.vshuffvdd.128B(<32 x i32> undef, <32 x i32> undef, i32 -2) %1 = bitcast <64 x i32> %0 to <128 x i16> %2 = shufflevector <128 x i16> %1, <128 x i16> undef, <64 x i32> store <64 x i16> %2, <64 x i16>* undef, align 128 unreachable "consume processed": ; preds = %"produce processed" ret void } ; Function Attrs: nounwind readnone 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" }