1; RUN: llc -march=hexagon < %s | FileCheck %s 2 3; During lowering, a BUILD_VECTOR of undef values was created. This was 4; not properly handled by buildHvxVectorReg, which tried to generate a 5; splat, but had no source value. 6; 7; Check that this compiles successfully. 8; CHECK: vsplat 9 10target datalayout = "e-m:e-p:32:32:32-a:0-n16:32-i64:64:64-i32:32:32-i16:16:16-i1:8:8-f32:32:32-f64:64:64-v32:32:32-v64:64:64-v512:512:512-v1024:1024:1024-v2048:2048:2048" 11target triple = "hexagon" 12 13@g0 = global <32 x i8> zeroinitializer 14 15define void @fred(i8* %a0) #0 { 16b0: 17 %v1 = load i8, i8* %a0, align 1 18 %v2 = insertelement <32 x i8> undef, i8 %v1, i32 31 19 %v3 = zext <32 x i8> %v2 to <32 x i16> 20 %v4 = add nuw nsw <32 x i16> %v3, zeroinitializer 21 %v5 = add nuw nsw <32 x i16> %v4, zeroinitializer 22 %v6 = add nuw nsw <32 x i16> %v5, zeroinitializer 23 %v7 = add nuw nsw <32 x i16> %v6, zeroinitializer 24 %v8 = add nuw nsw <32 x i16> %v7, zeroinitializer 25 %v9 = add nuw nsw <32 x i16> %v8, zeroinitializer 26 %v10 = add <32 x i16> %v9, zeroinitializer 27 %v11 = add <32 x i16> %v10, zeroinitializer 28 %v12 = add <32 x i16> %v11, zeroinitializer 29 %v13 = add <32 x i16> %v12, zeroinitializer 30 %v14 = add <32 x i16> %v13, zeroinitializer 31 %v15 = add <32 x i16> %v14, zeroinitializer 32 %v16 = add <32 x i16> %v15, zeroinitializer 33 %v17 = add <32 x i16> %v16, zeroinitializer 34 %v18 = add <32 x i16> %v17, zeroinitializer 35 %v19 = lshr <32 x i16> %v18, <i16 4, i16 4, i16 4, i16 4, i16 4, i16 4, i16 4, i16 4, i16 4, i16 4, i16 4, i16 4, i16 4, i16 4, i16 4, i16 4, i16 4, i16 4, i16 4, i16 4, i16 4, i16 4, i16 4, i16 4, i16 4, i16 4, i16 4, i16 4, i16 4, i16 4, i16 4, i16 4> 36 %v20 = trunc <32 x i16> %v19 to <32 x i8> 37 store <32 x i8> %v20, <32 x i8>* @g0, align 1 38 ret void 39} 40 41attributes #0 = { norecurse nounwind "target-cpu"="hexagonv60" "target-features"="+hvx-length64b,+hvxv60" } 42