OLD | NEW |
(Empty) | |
| 1 ; Simple test for phi nodes. |
| 2 |
| 3 ; RUN: llvm-as < %s | pnacl-freeze | pnacl-bccompress --remove-abbreviations \ |
| 4 ; RUN: | pnacl-bcdis | FileCheck %s |
| 5 |
| 6 |
| 7 |
| 8 ; Test phi node introduced by branch merge. |
| 9 define void @PhiBranchMerge() { |
| 10 |
| 11 |
| 12 b0: |
| 13 br i1 0, label %b1, label %b2 |
| 14 |
| 15 ; CHECK: | | %b0: |
| 16 ; CHECK-NEXT: {{.*}}| 3: <11, 1, 2, 1> | br i1 %c1, label %b1,
label %b2; |
| 17 |
| 18 b1: |
| 19 %v0 = add i32 1, 1 |
| 20 %v1 = sub i32 1, 1 |
| 21 br label %b3 |
| 22 |
| 23 ; CHECK-NEXT: | | %b1: |
| 24 ; CHECK-NEXT: {{.*}}| 3: <2, 2, 2, 0> | %v0 = add i32 %c0, %c0
; |
| 25 ; CHECK-NEXT: {{.*}}| 3: <2, 3, 3, 1> | %v1 = sub i32 %c0, %c0
; |
| 26 ; CHECK-NEXT: {{.*}}| 3: <11, 3> | br label %b3; |
| 27 |
| 28 b2: |
| 29 %v2 = mul i32 1, 1 |
| 30 %v3 = udiv i32 1, 1 |
| 31 br label %b3 |
| 32 |
| 33 ; CHECK-NEXT: | | %b2: |
| 34 ; CHECK-NEXT: {{.*}}| 3: <2, 4, 4, 2> | %v2 = mul i32 %c0, %c0
; |
| 35 ; CHECK-NEXT: {{.*}}| 3: <2, 5, 5, 3> | %v3 = udiv i32 %c0, %c
0; |
| 36 ; CHECK-NEXT: {{.*}}| 3: <11, 3> | br label %b3; |
| 37 |
| 38 b3: |
| 39 %v4 = phi i32 [ %v0, %b1 ], [ %v2, %b2 ] |
| 40 %v5 = phi i32 [ %v1, %b1 ], [ %v3, %b2 ] |
| 41 ret void |
| 42 |
| 43 ; CHECK-NEXT: | | %b3: |
| 44 ; CHECK-NEXT: {{.*}}| 3: <16, 0, 8, 1, 4, 2> | %v4 = phi i32 [%v0, %b
1], |
| 45 ; CHECK-NEXT: {{.*}}| | [%v2, %b2]; |
| 46 ; CHECK-NEXT: {{.*}}| 3: <16, 0, 8, 1, 4, 2> | %v5 = phi i32 [%v1, %b
1], |
| 47 ; CHECK-NEXT: | | [%v3, %b2]; |
| 48 ; CHECK-NEXT: {{.*}}| 3: <10> | ret void; |
| 49 |
| 50 } |
| 51 |
| 52 |
| 53 |
| 54 ; Test phi node introduced by loop. |
| 55 define void @PhiLoopCarried(i32 %p0) { |
| 56 |
| 57 b0: |
| 58 %v0 = add i32 %p0, 1 |
| 59 br label %b1 |
| 60 |
| 61 ; CHECK: | | %b0: |
| 62 ; CHECK-NEXT: {{.*}}| 3: <2, 2, 1, 0> | %v0 = add i32 %p0, %c0
; |
| 63 ; CHECK-NEXT: {{.*}}| 3: <11, 1> | br label %b1; |
| 64 |
| 65 b1: |
| 66 %v1 = phi i32 [%v0, %b0], [%v2, %b1] |
| 67 %v2 = add i32 %v1, 1 |
| 68 br label %b1 |
| 69 |
| 70 ; CHECK-NEXT: | | %b1: |
| 71 ; CHECK-NEXT: {{.*}}| 3: <43, 6, 0> | declare i32 %v2; |
| 72 ; CHECK-NEXT: {{.*}}| 3: <16, 0, 2, 0, 3, 1> | %v1 = phi i32 [%v0, %b
0], |
| 73 ; CHECK-NEXT: | | [%v2, %b1]; |
| 74 ; CHECK-NEXT: {{.*}}| 3: <2, 1, 3, 0> | %v2 = add i32 %v1, %c0
; |
| 75 ; CHECK-NEXT: {{.*}}| 3: <11, 1> | br label %b1; |
| 76 |
| 77 } |
OLD | NEW |