|
5 | 5 | define void @test_simple(i32* %p, i32 %a, i32 %b) {
|
6 | 6 | ; CHECK-LABEL: @test_simple(
|
7 | 7 | ; CHECK-NEXT: entry:
|
8 |
| -; CHECK-NEXT: [[X1:%.*]] = icmp ne i32 [[A:%.*]], 0 |
9 |
| -; CHECK-NEXT: [[X2:%.*]] = icmp eq i32 [[B:%.*]], 0 |
10 |
| -; CHECK-NEXT: [[TMP0:%.*]] = xor i1 [[X2]], true |
11 |
| -; CHECK-NEXT: [[TMP1:%.*]] = or i1 [[X1]], [[TMP0]] |
12 |
| -; CHECK-NEXT: br i1 [[TMP1]], label [[TMP2:%.*]], label [[TMP3:%.*]] |
| 8 | +; CHECK-NEXT: [[TMP0:%.*]] = or i32 [[B:%.*]], [[A:%.*]] |
| 9 | +; CHECK-NEXT: [[TMP1:%.*]] = icmp eq i32 [[TMP0]], 0 |
| 10 | +; CHECK-NEXT: br i1 [[TMP1]], label [[TMP3:%.*]], label [[TMP2:%.*]] |
13 | 11 | ; CHECK: 2:
|
14 |
| -; CHECK-NEXT: [[NOT_X2:%.*]] = xor i1 [[X2]], true |
15 |
| -; CHECK-NEXT: [[SPEC_SELECT:%.*]] = zext i1 [[NOT_X2]] to i32 |
| 12 | +; CHECK-NEXT: [[X2:%.*]] = icmp ne i32 [[B]], 0 |
| 13 | +; CHECK-NEXT: [[SPEC_SELECT:%.*]] = zext i1 [[X2]] to i32 |
16 | 14 | ; CHECK-NEXT: store i32 [[SPEC_SELECT]], i32* [[P:%.*]], align 4
|
17 | 15 | ; CHECK-NEXT: br label [[TMP3]]
|
18 | 16 | ; CHECK: 3:
|
@@ -78,21 +76,20 @@ define void @test_recursive(i32* %p, i32 %a, i32 %b, i32 %c, i32 %d) {
|
78 | 76 | ; CHECK-LABEL: @test_recursive(
|
79 | 77 | ; CHECK-NEXT: entry:
|
80 | 78 | ; CHECK-NEXT: [[TMP0:%.*]] = or i32 [[B:%.*]], [[A:%.*]]
|
81 |
| -; CHECK-NEXT: [[X4:%.*]] = icmp eq i32 [[D:%.*]], 0 |
82 | 79 | ; CHECK-NEXT: [[TMP1:%.*]] = or i32 [[TMP0]], [[C:%.*]]
|
83 |
| -; CHECK-NEXT: [[TMP2:%.*]] = icmp ne i32 [[TMP1]], 0 |
84 |
| -; CHECK-NEXT: [[TMP3:%.*]] = xor i1 [[X4]], true |
85 |
| -; CHECK-NEXT: [[TMP4:%.*]] = or i1 [[TMP2]], [[TMP3]] |
86 |
| -; CHECK-NEXT: br i1 [[TMP4]], label [[TMP5:%.*]], label [[TMP6:%.*]] |
87 |
| -; CHECK: 5: |
| 80 | +; CHECK-NEXT: [[TMP2:%.*]] = or i32 [[TMP1]], [[D:%.*]] |
| 81 | +; CHECK-NEXT: [[TMP3:%.*]] = icmp eq i32 [[TMP2]], 0 |
| 82 | +; CHECK-NEXT: br i1 [[TMP3]], label [[TMP5:%.*]], label [[TMP4:%.*]] |
| 83 | +; CHECK: 4: |
| 84 | +; CHECK-NEXT: [[X4:%.*]] = icmp eq i32 [[D]], 0 |
88 | 85 | ; CHECK-NEXT: [[X3:%.*]] = icmp eq i32 [[C]], 0
|
89 | 86 | ; CHECK-NEXT: [[X2:%.*]] = icmp ne i32 [[B]], 0
|
90 | 87 | ; CHECK-NEXT: [[SPEC_SELECT:%.*]] = zext i1 [[X2]] to i32
|
91 | 88 | ; CHECK-NEXT: [[SPEC_SELECT1:%.*]] = select i1 [[X3]], i32 [[SPEC_SELECT]], i32 2
|
92 | 89 | ; CHECK-NEXT: [[SPEC_SELECT2:%.*]] = select i1 [[X4]], i32 [[SPEC_SELECT1]], i32 3
|
93 | 90 | ; CHECK-NEXT: store i32 [[SPEC_SELECT2]], i32* [[P:%.*]], align 4
|
94 |
| -; CHECK-NEXT: br label [[TMP6]] |
95 |
| -; CHECK: 6: |
| 91 | +; CHECK-NEXT: br label [[TMP5]] |
| 92 | +; CHECK: 5: |
96 | 93 | ; CHECK-NEXT: ret void
|
97 | 94 | ;
|
98 | 95 | entry:
|
@@ -383,14 +380,12 @@ define void @test_outer_if(i32* %p, i32 %a, i32 %b, i32 %c) {
|
383 | 380 | ; CHECK-NEXT: [[X3:%.*]] = icmp eq i32 [[C:%.*]], 0
|
384 | 381 | ; CHECK-NEXT: br i1 [[X3]], label [[END:%.*]], label [[CONTINUE:%.*]]
|
385 | 382 | ; CHECK: continue:
|
386 |
| -; CHECK-NEXT: [[X1:%.*]] = icmp ne i32 [[A:%.*]], 0 |
387 |
| -; CHECK-NEXT: [[X2:%.*]] = icmp eq i32 [[B:%.*]], 0 |
388 |
| -; CHECK-NEXT: [[TMP0:%.*]] = xor i1 [[X2]], true |
389 |
| -; CHECK-NEXT: [[TMP1:%.*]] = or i1 [[X1]], [[TMP0]] |
390 |
| -; CHECK-NEXT: br i1 [[TMP1]], label [[TMP2:%.*]], label [[END]] |
| 383 | +; CHECK-NEXT: [[TMP0:%.*]] = or i32 [[B:%.*]], [[A:%.*]] |
| 384 | +; CHECK-NEXT: [[TMP1:%.*]] = icmp eq i32 [[TMP0]], 0 |
| 385 | +; CHECK-NEXT: br i1 [[TMP1]], label [[END]], label [[TMP2:%.*]] |
391 | 386 | ; CHECK: 2:
|
392 |
| -; CHECK-NEXT: [[NOT_X2:%.*]] = xor i1 [[X2]], true |
393 |
| -; CHECK-NEXT: [[SPEC_SELECT:%.*]] = zext i1 [[NOT_X2]] to i32 |
| 387 | +; CHECK-NEXT: [[X2:%.*]] = icmp ne i32 [[B]], 0 |
| 388 | +; CHECK-NEXT: [[SPEC_SELECT:%.*]] = zext i1 [[X2]] to i32 |
394 | 389 | ; CHECK-NEXT: store i32 [[SPEC_SELECT]], i32* [[P:%.*]], align 4
|
395 | 390 | ; CHECK-NEXT: br label [[END]]
|
396 | 391 | ; CHECK: end:
|
|
0 commit comments