|
3 | 3 |
|
4 | 4 | target datalayout = "n8:16:32:64"
|
5 | 5 |
|
6 |
| -; FIXME: This is a miscompile. |
7 | 6 | ; The udiv should not get hoisted into the preheader (past a conditional).
|
8 | 7 | define i32 @test(i1 %c, i32 %arg1, i32 %arg2) {
|
9 | 8 | ; CHECK-LABEL: define i32 @test(
|
10 | 9 | ; CHECK-SAME: i1 [[C:%.*]], i32 [[ARG1:%.*]], i32 [[ARG2:%.*]]) {
|
11 | 10 | ; CHECK-NEXT: entry:
|
12 |
| -; CHECK-NEXT: [[TMP0:%.*]] = udiv i32 [[ARG1]], [[ARG2]] |
13 | 11 | ; CHECK-NEXT: br label [[LOOP:%.*]]
|
14 | 12 | ; CHECK: loop:
|
15 |
| -; CHECK-NEXT: [[INDVARS_IV:%.*]] = phi i32 [ [[INDVARS_IV_NEXT:%.*]], [[LOOP_LATCH:%.*]] ], [ [[TMP0]], [[ENTRY:%.*]] ] |
| 13 | +; CHECK-NEXT: [[PHI:%.*]] = phi i32 [ [[ADD9:%.*]], [[LOOP_LATCH:%.*]] ], [ 0, [[ENTRY:%.*]] ] |
16 | 14 | ; CHECK-NEXT: br i1 [[C]], label [[IF:%.*]], label [[LOOP_LATCH]]
|
17 | 15 | ; CHECK: if:
|
| 16 | +; CHECK-NEXT: [[UDIV:%.*]] = udiv i32 [[ARG1]], [[ARG2]] |
| 17 | +; CHECK-NEXT: [[ADD:%.*]] = add i32 [[UDIV]], [[PHI]] |
| 18 | +; CHECK-NEXT: [[ZEXT:%.*]] = zext i32 [[ADD]] to i64 |
18 | 19 | ; CHECK-NEXT: br label [[LOOP2:%.*]]
|
19 | 20 | ; CHECK: loop2:
|
20 | 21 | ; CHECK-NEXT: [[PHI6:%.*]] = phi i64 [ [[ADD7:%.*]], [[LOOP2]] ], [ 0, [[IF]] ]
|
21 | 22 | ; CHECK-NEXT: [[ADD7]] = add nuw nsw i64 [[PHI6]], 1
|
22 |
| -; CHECK-NEXT: [[TMP1:%.*]] = zext i32 [[INDVARS_IV]] to i64 |
23 |
| -; CHECK-NEXT: [[TMP2:%.*]] = add nuw nsw i64 [[TMP1]], 1 |
24 |
| -; CHECK-NEXT: [[EXITCOND:%.*]] = icmp ne i64 [[ADD7]], [[TMP2]] |
25 |
| -; CHECK-NEXT: br i1 [[EXITCOND]], label [[LOOP2]], label [[LOOP_LATCH_LOOPEXIT:%.*]] |
| 23 | +; CHECK-NEXT: [[ICMP:%.*]] = icmp ult i64 [[PHI6]], [[ZEXT]] |
| 24 | +; CHECK-NEXT: br i1 [[ICMP]], label [[LOOP2]], label [[LOOP_LATCH_LOOPEXIT:%.*]] |
26 | 25 | ; CHECK: loop.latch.loopexit:
|
27 | 26 | ; CHECK-NEXT: br label [[LOOP_LATCH]]
|
28 | 27 | ; CHECK: loop.latch:
|
29 |
| -; CHECK-NEXT: [[INDVARS_IV_NEXT]] = add i32 [[INDVARS_IV]], 1 |
| 28 | +; CHECK-NEXT: [[ADD9]] = add i32 [[PHI]], 1 |
30 | 29 | ; CHECK-NEXT: br label [[LOOP]]
|
31 | 30 | ;
|
32 | 31 | entry:
|
|
0 commit comments