Brendon Cahoon | 59d9973 | 2019-01-23 03:26:10 +0000 | [diff] [blame] | 1 | ; RUN: llc -disable-lsr -march=hexagon -enable-pipeliner \ |
| 2 | ; RUN: -debug-only=pipeliner < %s 2>&1 > /dev/null | FileCheck %s |
| 3 | ; REQUIRES: asserts |
| 4 | ; |
| 5 | ; Test that checks if the II set by pragma was taken by pipeliner. |
| 6 | |
| 7 | ; CHECK: MII = 2 MAX_II = 2 |
| 8 | |
| 9 | ; Function Attrs: nounwind |
| 10 | define void @f0(i32* nocapture %a0, i32 %a1) #0 { |
| 11 | b0: |
| 12 | %v0 = icmp sgt i32 %a1, 1 |
| 13 | br i1 %v0, label %b1, label %b4 |
| 14 | |
| 15 | b1: ; preds = %b0 |
| 16 | %v1 = load i32, i32* %a0, align 4 |
| 17 | %v2 = add i32 %v1, 10 |
| 18 | %v3 = getelementptr i32, i32* %a0, i32 1 |
| 19 | %v4 = add i32 %a1, -1 |
| 20 | br label %b2 |
| 21 | |
| 22 | b2: ; preds = %b2, %b1 |
| 23 | %v5 = phi i32 [ %v12, %b2 ], [ %v4, %b1 ] |
| 24 | %v6 = phi i32* [ %v11, %b2 ], [ %v3, %b1 ] |
| 25 | %v7 = phi i32 [ %v10, %b2 ], [ %v2, %b1 ] |
| 26 | store i32 %v7, i32* %v6, align 4 |
| 27 | %v8 = add i32 %v7, 10 |
| 28 | %v9 = getelementptr i32, i32* %v6, i32 -1 |
| 29 | store i32 %v8, i32* %v9, align 4 |
| 30 | %v10 = add i32 %v7, 10 |
| 31 | %v11 = getelementptr i32, i32* %v6, i32 1 |
| 32 | %v12 = add i32 %v5, -1 |
| 33 | %v13 = icmp eq i32 %v12, 0 |
| 34 | br i1 %v13, label %b3, label %b2 |
| 35 | |
| 36 | b3: ; preds = %b2 |
| 37 | br label %b4 , !llvm.loop !2 |
| 38 | |
| 39 | b4: ; preds = %b3, %b0 |
| 40 | ret void |
| 41 | } |
| 42 | |
| 43 | attributes #0 = { nounwind } |
| 44 | |
| 45 | !0 = !{i32 1, !"wchar_size", i32 4} |
| 46 | !1 = !{!2, !2, i64 0} |
| 47 | !2 = distinct !{!2, !3} |
| 48 | !3 = !{!"llvm.loop.pipeline.initiationinterval", i32 2} |
| 49 | |