llvm/llvm/test/CodeGen/AArch64/aarch64-dup-ext-vectortype-crash.ll

; RUN: llc < %s -mtriple aarch64-none-linux-gnu | FileCheck %s

; This test covers a case where extended value types can't be converted to
; vector types, resulting in a crash. We don't care about the specific output
; here, only that this case no longer causes said crash.
; See https://reviews.llvm.org/D91255#2484399 for context
define <8 x i16> @extend_i7_v8i16(i7 %src, <8 x i8> %b) {
; CHECK-LABEL: extend_i7_v8i16:
entry:
    %in = sext i7 %src to i16
    %ext.b = sext <8 x i8> %b to <8 x i16>
    %broadcast.splatinsert = insertelement <8 x i16> undef, i16 %in, i16 0
    %broadcast.splat = shufflevector <8 x i16> %broadcast.splatinsert, <8 x i16> undef, <8 x i32> zeroinitializer
    %out = mul nsw <8 x i16> %broadcast.splat, %ext.b
    ret <8 x i16> %out
}