Revert " [LoongArch][ISel] Check the number of sign bits in `PatGprGpr_32` (#107432)"
[llvm-project.git] / llvm / test / CodeGen / Hexagon / autohvx / hfsplat.ll
blob78ea32cc104031cbc58d9227a72a36a70c10f4e0
1 ; RUN: llc -mtriple=hexagon < %s | FileCheck %s
3 ; Check that the vsplat instruction is generated
4 ; CHECK: r[[V:[0-9]+]] = #16752
5 ; CHECK: vsplat(r[[V]])
7 target 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"
8 target triple = "hexagon"
9 ; Function Attrs: nofree norecurse nounwind writeonly
10 define dso_local i32 @foo(ptr nocapture %0, i32 %1) local_unnamed_addr #0 {
11   %3 = icmp sgt i32 %1, 0
12   br i1 %3, label %4, label %22
14 4:                                                ; preds = %2
15   %5 = icmp ult i32 %1, 128
16   br i1 %5, label %6, label %9
18 6:                                                ; preds = %20, %4
19   %7 = phi ptr [ %0, %4 ], [ %11, %20 ]
20   %8 = phi i32 [ 0, %4 ], [ %10, %20 ]
21   br label %23
23 9:                                                ; preds = %4
24   %10 = and i32 %1, -128
25   %11 = getelementptr half, ptr %0, i32 %10
26   br label %12
28 12:                                               ; preds = %12, %9
29   %13 = phi i32 [ 0, %9 ], [ %18, %12 ]
30   %14 = getelementptr half, ptr %0, i32 %13
31   %15 = bitcast ptr %14 to ptr
32   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 2
33   %16 = getelementptr half, ptr %14, i32 64
34   %17 = bitcast ptr %16 to ptr
35   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 2
36   %18 = add i32 %13, 128
37   %19 = icmp eq i32 %18, %10
38   br i1 %19, label %20, label %12
40 20:                                               ; preds = %12
41   %21 = icmp eq i32 %10, %1
42   br i1 %21, label %22, label %6
44 22:                                               ; preds = %23, %20, %2
45   ret i32 0
47 23:                                               ; preds = %23, %6
48   %24 = phi ptr [ %28, %23 ], [ %7, %6 ]
49   %25 = phi i32 [ %26, %23 ], [ %8, %6 ]
50   store half 0xH4170, ptr %24, align 2
51   %26 = add nuw nsw i32 %25, 1
52   %27 = icmp eq i32 %26, %1
53   %28 = getelementptr half, ptr %24, i32 1
54   br i1 %27, label %22, label %23
57 attributes #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" }