58 lines · plain
1; RUN: llc -mtriple=hexagon < %s | FileCheck %s2 3; Check that the vsplat instruction is generated4; CHECK: r[[V:[0-9]+]] = #167525; CHECK: vsplat(r[[V]])6 7target 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"8target triple = "hexagon"9; Function Attrs: nofree norecurse nounwind writeonly10define dso_local i32 @foo(ptr nocapture %0, i32 %1) local_unnamed_addr #0 {11 %3 = icmp sgt i32 %1, 012 br i1 %3, label %4, label %2213 144: ; preds = %215 %5 = icmp ult i32 %1, 12816 br i1 %5, label %6, label %917 186: ; preds = %20, %419 %7 = phi ptr [ %0, %4 ], [ %11, %20 ]20 %8 = phi i32 [ 0, %4 ], [ %10, %20 ]21 br label %2322 239: ; preds = %424 %10 = and i32 %1, -12825 %11 = getelementptr half, ptr %0, i32 %1026 br label %1227 2812: ; preds = %12, %929 %13 = phi i32 [ 0, %9 ], [ %18, %12 ]30 %14 = getelementptr half, ptr %0, i32 %1331 %15 = bitcast ptr %14 to ptr32 store <64 x half> <half 0xH4170, half 0xH4170, half 0xH4170, half 0xH4170, half 0xH4170, half 0xH4170, half 0xH4170, half 0xH4170, half 0xH4170, half 0xH4170, half 0xH4170, half 0xH4170, half 0xH4170, half 0xH4170, half 0xH4170, half 0xH4170, half 0xH4170, half 0xH4170, half 0xH4170, half 0xH4170, half 0xH4170, half 0xH4170, half 0xH4170, half 0xH4170, half 0xH4170, half 0xH4170, half 0xH4170, half 0xH4170, half 0xH4170, half 0xH4170, half 0xH4170, half 0xH4170, half 0xH4170, half 0xH4170, half 0xH4170, half 0xH4170, half 0xH4170, half 0xH4170, half 0xH4170, half 0xH4170, half 0xH4170, half 0xH4170, half 0xH4170, half 0xH4170, half 0xH4170, half 0xH4170, half 0xH4170, half 0xH4170, half 0xH4170, half 0xH4170, half 0xH4170, half 0xH4170, half 0xH4170, half 0xH4170, half 0xH4170, half 0xH4170, half 0xH4170, half 0xH4170, half 0xH4170, half 0xH4170, half 0xH4170, half 0xH4170, half 0xH4170, half 0xH4170>, ptr %15, align 233 %16 = getelementptr half, ptr %14, i32 6434 %17 = bitcast ptr %16 to ptr35 store <64 x half> <half 0xH4170, half 0xH4170, half 0xH4170, half 0xH4170, half 0xH4170, half 0xH4170, half 0xH4170, half 0xH4170, half 0xH4170, half 0xH4170, half 0xH4170, half 0xH4170, half 0xH4170, half 0xH4170, half 0xH4170, half 0xH4170, half 0xH4170, half 0xH4170, half 0xH4170, half 0xH4170, half 0xH4170, half 0xH4170, half 0xH4170, half 0xH4170, half 0xH4170, half 0xH4170, half 0xH4170, half 0xH4170, half 0xH4170, half 0xH4170, half 0xH4170, half 0xH4170, half 0xH4170, half 0xH4170, half 0xH4170, half 0xH4170, half 0xH4170, half 0xH4170, half 0xH4170, half 0xH4170, half 0xH4170, half 0xH4170, half 0xH4170, half 0xH4170, half 0xH4170, half 0xH4170, half 0xH4170, half 0xH4170, half 0xH4170, half 0xH4170, half 0xH4170, half 0xH4170, half 0xH4170, half 0xH4170, half 0xH4170, half 0xH4170, half 0xH4170, half 0xH4170, half 0xH4170, half 0xH4170, half 0xH4170, half 0xH4170, half 0xH4170, half 0xH4170>, ptr %17, align 236 %18 = add i32 %13, 12837 %19 = icmp eq i32 %18, %1038 br i1 %19, label %20, label %1239 4020: ; preds = %1241 %21 = icmp eq i32 %10, %142 br i1 %21, label %22, label %643 4422: ; preds = %23, %20, %245 ret i32 046 4723: ; preds = %23, %648 %24 = phi ptr [ %28, %23 ], [ %7, %6 ]49 %25 = phi i32 [ %26, %23 ], [ %8, %6 ]50 store half 0xH4170, ptr %24, align 251 %26 = add nuw nsw i32 %25, 152 %27 = icmp eq i32 %26, %153 %28 = getelementptr half, ptr %24, i32 154 br i1 %27, label %22, label %2355}56 57attributes #0 = { nofree norecurse nounwind writeonly "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "frame-pointer"="all" "less-precise-fpmad"="false" "min-legal-vector-width"="0" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="hexagonv69" "target-features"="+hvx-length128b,+hvxv69,+v69,-long-calls" "unsafe-fp-math"="false" "use-soft-float"="false" }58