[InstCombine] Signed saturation patterns
[llvm-complete.git] / test / CodeGen / Hexagon / bug17386.ll
blob416770cb03c7b8762cd46de0f83cab9c7020a670
1 ; RUN: llc -march=hexagon -O2 < %s
2 ; REQUIRES: asserts
4 target triple = "hexagon"
6 ; Function Attrs: nounwind
7 define void @f0(i8* %a0, ...) #0 {
8 b0:
9   br i1 undef, label %b1, label %b2
11 b1:                                               ; preds = %b0
12   unreachable
14 b2:                                               ; preds = %b2, %b0
15   br i1 undef, label %b2, label %b3
17 b3:                                               ; preds = %b2
18   br i1 undef, label %b4, label %b5
20 b4:                                               ; preds = %b3
21   br label %b5
23 b5:                                               ; preds = %b4, %b3
24   br label %b6
26 b6:                                               ; preds = %b12, %b5
27   br i1 undef, label %b9, label %b7
29 b7:                                               ; preds = %b6
30   %v0 = load i8, i8* undef, align 1, !tbaa !0
31   %v1 = zext i8 %v0 to i32
32   br i1 undef, label %b9, label %b8
34 b8:                                               ; preds = %b7
35   br i1 undef, label %b9, label %b10
37 b9:                                               ; preds = %b8, %b7, %b6
38   br label %b10
40 b10:                                              ; preds = %b9, %b8
41   %v2 = phi i32 [ undef, %b9 ], [ %v1, %b8 ]
42   %v3 = icmp eq i32 %v2, 37
43   %v4 = sext i1 %v3 to i32
44   %v5 = icmp slt i32 0, 1
45   br i1 %v5, label %b12, label %b11
47 b11:                                              ; preds = %b10
48   unreachable
50 b12:                                              ; preds = %b10
51   br i1 undef, label %b13, label %b6
53 b13:                                              ; preds = %b12
54   br label %b14
56 b14:                                              ; preds = %b15, %b13
57   br i1 undef, label %b16, label %b15
59 b15:                                              ; preds = %b14
60   br i1 undef, label %b14, label %b16
62 b16:                                              ; preds = %b15, %b14
63   br label %b17
65 b17:                                              ; preds = %b18, %b16
66   %v6 = phi i8* [ undef, %b16 ], [ %v7, %b18 ]
67   %v7 = getelementptr inbounds i8, i8* %v6, i32 1
68   %v8 = load i8, i8* %v7, align 1, !tbaa !0
69   br label %b18
71 b18:                                              ; preds = %b19, %b17
72   %v9 = phi i32 [ 5, %b17 ], [ %v11, %b19 ]
73   %v10 = icmp eq i8 undef, %v8
74   br i1 %v10, label %b17, label %b19
76 b19:                                              ; preds = %b18
77   %v11 = add i32 %v9, -1
78   %v12 = icmp eq i32 %v11, 0
79   br i1 %v12, label %b20, label %b18
81 b20:                                              ; preds = %b19
82   unreachable
85 attributes #0 = { nounwind }
87 !0 = !{!1, !1, i64 0}
88 !1 = !{!"omnipotent char", !2, i64 0}
89 !2 = !{!"Simple C/C++ TBAA"}