1 ; RUN: llc -O2 -march=hexagon < %s | FileCheck %s
5 target triple = "hexagon"
7 %s.0 = type <{ i8, %s.1 }>
8 %s.1 = type { [16 x i32] }
10 ; Function Attrs: nounwind
11 define i32 @f0(i32 %a0, %s.0* nocapture %a1) #0 {
13 %v0 = icmp sgt i32 %a0, 0
14 br i1 %v0, label %b1, label %b10
20 br i1 %v0, label %b3, label %b10
25 b4: ; preds = %b4, %b1
26 %v1 = phi i32 [ %v6, %b4 ], [ 0, %b1 ]
27 %v2 = phi i32 [ %v5, %b4 ], [ 0, %b1 ]
28 %v3 = getelementptr inbounds %s.0, %s.0* %a1, i32 0, i32 1, i32 0, i32 %v1
29 %v4 = load i32, i32* %v3, align 1, !tbaa !0
30 %v5 = add nsw i32 %v4, %v2
31 %v6 = add nsw i32 %v1, 1
32 %v7 = icmp eq i32 %v6, %a0
33 br i1 %v7, label %b2, label %b4
36 br i1 %v0, label %b6, label %b10
41 b7: ; preds = %b7, %b3
42 %v8 = phi i32 [ %v13, %b7 ], [ 0, %b3 ]
43 %v9 = phi i32 [ %v12, %b7 ], [ %v5, %b3 ]
44 %v10 = getelementptr inbounds %s.0, %s.0* %a1, i32 0, i32 1, i32 0, i32 %v8
45 %v11 = load i32, i32* %v10, align 1, !tbaa !0
46 %v12 = add nsw i32 %v11, %v9
47 %v13 = add nsw i32 %v8, 1
48 %v14 = icmp eq i32 %v13, %a0
49 br i1 %v14, label %b5, label %b7
51 b8: ; preds = %b8, %b6
52 %v15 = phi i32 [ %v17, %b8 ], [ 0, %b6 ]
53 %v16 = getelementptr inbounds %s.0, %s.0* %a1, i32 0, i32 1, i32 0, i32 %v15
54 store i32 %a0, i32* %v16, align 1, !tbaa !0
55 %v17 = add nsw i32 %v15, 1
56 %v18 = icmp eq i32 %v17, %a0
57 br i1 %v18, label %b9, label %b8
62 b10: ; preds = %b9, %b5, %b2, %b0
63 %v19 = phi i32 [ %v12, %b5 ], [ %v5, %b2 ], [ 0, %b0 ], [ %v12, %b9 ]
67 attributes #0 = { nounwind }
71 !2 = !{!"omnipotent char", !3}
72 !3 = !{!"Simple C/C++ TBAA"}