diff options
author | Florian Hahn <flo@fhahn.com> | 2022-01-08 15:43:30 +0000 |
---|---|---|
committer | Florian Hahn <flo@fhahn.com> | 2022-01-08 15:44:23 +0000 |
commit | 9153c273851ba3952d698808acba5214c697eb45 (patch) | |
tree | f899991fb0dab35e20c6b8cbb757e220e93587a6 | |
parent | daa5e263129803179333862ffb760fef9f05be27 (diff) | |
download | llvm-9153c273851ba3952d698808acba5214c697eb45.tar.gz |
[LoopUnroll] Make test more robust by removing undef.
Replace a uses of undef in the tests. The undef causes runtime checks
to be trivially fold/removeable, which does defeat the purpose of the test.
-rw-r--r-- | llvm/test/Transforms/LoopUnroll/runtime-loop-multiexit-dom-verify.ll | 31 |
1 files changed, 16 insertions, 15 deletions
diff --git a/llvm/test/Transforms/LoopUnroll/runtime-loop-multiexit-dom-verify.ll b/llvm/test/Transforms/LoopUnroll/runtime-loop-multiexit-dom-verify.ll index d8ad6fe3a831..2c63d9269359 100644 --- a/llvm/test/Transforms/LoopUnroll/runtime-loop-multiexit-dom-verify.ll +++ b/llvm/test/Transforms/LoopUnroll/runtime-loop-multiexit-dom-verify.ll @@ -649,28 +649,29 @@ otherexitB: ; preds = %innerH ; Blocks reachable from exits (not_zero44) have the IDom as the block within the loop (Header). ; Update the IDom to the preheader. -define void @test6() { +define void @test6(i64 %start) { ; CHECK-LABEL: @test6( ; CHECK-NEXT: entry: -; CHECK-NEXT: [[SMAX:%.*]] = call i64 @llvm.smax.i64(i64 undef, i64 616) -; CHECK-NEXT: [[TMP0:%.*]] = add i64 [[SMAX]], -1 -; CHECK-NEXT: [[TMP1:%.*]] = sub i64 [[TMP0]], undef -; CHECK-NEXT: [[TMP2:%.*]] = lshr i64 [[TMP1]], 1 -; CHECK-NEXT: [[TMP3:%.*]] = add nuw i64 [[TMP2]], 1 -; CHECK-NEXT: [[XTRAITER:%.*]] = and i64 [[TMP3]], 3 +; CHECK-NEXT: [[TMP0:%.*]] = add i64 [[START:%.*]], 2 +; CHECK-NEXT: [[SMAX:%.*]] = call i64 @llvm.smax.i64(i64 [[TMP0]], i64 616) +; CHECK-NEXT: [[TMP1:%.*]] = add i64 [[SMAX]], -1 +; CHECK-NEXT: [[TMP2:%.*]] = sub i64 [[TMP1]], [[START]] +; CHECK-NEXT: [[TMP3:%.*]] = lshr i64 [[TMP2]], 1 +; CHECK-NEXT: [[TMP4:%.*]] = add nuw i64 [[TMP3]], 1 +; CHECK-NEXT: [[XTRAITER:%.*]] = and i64 [[TMP4]], 3 ; CHECK-NEXT: [[LCMP_MOD:%.*]] = icmp ne i64 [[XTRAITER]], 0 ; CHECK-NEXT: br i1 [[LCMP_MOD]], label [[HEADER_PROL_PREHEADER:%.*]], label [[HEADER_PROL_LOOPEXIT:%.*]] ; CHECK: header.prol.preheader: ; CHECK-NEXT: br label [[HEADER_PROL:%.*]] ; CHECK: header.prol: -; CHECK-NEXT: [[INDVARS_IV_PROL:%.*]] = phi i64 [ undef, [[HEADER_PROL_PREHEADER]] ], [ [[INDVARS_IV_NEXT_PROL:%.*]], [[LATCH_PROL:%.*]] ] +; CHECK-NEXT: [[INDVARS_IV_PROL:%.*]] = phi i64 [ [[START]], [[HEADER_PROL_PREHEADER]] ], [ [[INDVARS_IV_NEXT_PROL:%.*]], [[LATCH_PROL:%.*]] ] ; CHECK-NEXT: [[PROL_ITER:%.*]] = phi i64 [ 0, [[HEADER_PROL_PREHEADER]] ], [ [[PROL_ITER_NEXT:%.*]], [[LATCH_PROL]] ] ; CHECK-NEXT: [[IV_I32_PROL:%.*]] = trunc i64 [[INDVARS_IV_PROL]] to i32 ; CHECK-NEXT: [[C1_PROL:%.*]] = call i1 @unknown(i32 [[IV_I32_PROL]]) ; CHECK-NEXT: br i1 [[C1_PROL]], label [[LATCH_PROL]], label [[OTHEREXIT_LOOPEXIT1:%.*]] ; CHECK: latch.prol: ; CHECK-NEXT: [[INDVARS_IV_NEXT_PROL]] = add nsw i64 [[INDVARS_IV_PROL]], 2 -; CHECK-NEXT: [[TMP4:%.*]] = icmp slt i64 [[INDVARS_IV_NEXT_PROL]], 616 +; CHECK-NEXT: [[TMP5:%.*]] = icmp slt i64 [[INDVARS_IV_NEXT_PROL]], 616 ; CHECK-NEXT: [[PROL_ITER_NEXT]] = add i64 [[PROL_ITER]], 1 ; CHECK-NEXT: [[PROL_ITER_CMP:%.*]] = icmp ne i64 [[PROL_ITER_NEXT]], [[XTRAITER]] ; CHECK-NEXT: br i1 [[PROL_ITER_CMP]], label [[HEADER_PROL]], label [[HEADER_PROL_LOOPEXIT_UNR_LCSSA:%.*]], !llvm.loop [[LOOP9:![0-9]+]] @@ -678,9 +679,9 @@ define void @test6() { ; CHECK-NEXT: [[INDVARS_IV_UNR_PH:%.*]] = phi i64 [ [[INDVARS_IV_NEXT_PROL]], [[LATCH_PROL]] ] ; CHECK-NEXT: br label [[HEADER_PROL_LOOPEXIT]] ; CHECK: header.prol.loopexit: -; CHECK-NEXT: [[INDVARS_IV_UNR:%.*]] = phi i64 [ undef, [[ENTRY:%.*]] ], [ [[INDVARS_IV_UNR_PH]], [[HEADER_PROL_LOOPEXIT_UNR_LCSSA]] ] -; CHECK-NEXT: [[TMP5:%.*]] = icmp ult i64 [[TMP2]], 3 -; CHECK-NEXT: br i1 [[TMP5]], label [[LATCHEXIT:%.*]], label [[ENTRY_NEW:%.*]] +; CHECK-NEXT: [[INDVARS_IV_UNR:%.*]] = phi i64 [ [[START]], [[ENTRY:%.*]] ], [ [[INDVARS_IV_UNR_PH]], [[HEADER_PROL_LOOPEXIT_UNR_LCSSA]] ] +; CHECK-NEXT: [[TMP6:%.*]] = icmp ult i64 [[TMP3]], 3 +; CHECK-NEXT: br i1 [[TMP6]], label [[LATCHEXIT:%.*]], label [[ENTRY_NEW:%.*]] ; CHECK: entry.new: ; CHECK-NEXT: br label [[HEADER:%.*]] ; CHECK: header: @@ -705,8 +706,8 @@ define void @test6() { ; CHECK-NEXT: br i1 [[C1_3]], label [[LATCH_3]], label [[OTHEREXIT_LOOPEXIT]] ; CHECK: latch.3: ; CHECK-NEXT: [[INDVARS_IV_NEXT_3]] = add nsw i64 [[INDVARS_IV_NEXT_2]], 2 -; CHECK-NEXT: [[TMP6:%.*]] = icmp slt i64 [[INDVARS_IV_NEXT_3]], 616 -; CHECK-NEXT: br i1 [[TMP6]], label [[HEADER]], label [[LATCHEXIT_UNR_LCSSA:%.*]], !llvm.loop [[LOOP10:![0-9]+]] +; CHECK-NEXT: [[TMP7:%.*]] = icmp slt i64 [[INDVARS_IV_NEXT_3]], 616 +; CHECK-NEXT: br i1 [[TMP7]], label [[HEADER]], label [[LATCHEXIT_UNR_LCSSA:%.*]], !llvm.loop [[LOOP10:![0-9]+]] ; CHECK: latchexit.unr-lcssa: ; CHECK-NEXT: br label [[LATCHEXIT]] ; CHECK: latchexit: @@ -728,7 +729,7 @@ entry: br label %header header: ; preds = %latch, %entry - %indvars.iv = phi i64 [ undef, %entry ], [ %indvars.iv.next, %latch ] + %indvars.iv = phi i64 [ %start, %entry ], [ %indvars.iv.next, %latch ] %iv.i32 = trunc i64 %indvars.iv to i32 %c1 = call i1 @unknown(i32 %iv.i32) br i1 %c1, label %latch, label %otherexit |