diff options
Diffstat (limited to 'test/Transforms/InstCombine/udiv-simplify.ll')
| -rw-r--r-- | test/Transforms/InstCombine/udiv-simplify.ll | 39 |
1 files changed, 30 insertions, 9 deletions
diff --git a/test/Transforms/InstCombine/udiv-simplify.ll b/test/Transforms/InstCombine/udiv-simplify.ll index 6f43fee92a6a..1794e26d389d 100644 --- a/test/Transforms/InstCombine/udiv-simplify.ll +++ b/test/Transforms/InstCombine/udiv-simplify.ll @@ -25,10 +25,10 @@ define i64 @test2(i32 %x) nounwind { define i64 @test1_PR2274(i32 %x, i32 %g) nounwind { ; CHECK-LABEL: @test1_PR2274( -; CHECK-NEXT: [[Y:%.*]] = lshr i32 %x, 30 -; CHECK-NEXT: [[R:%.*]] = udiv i32 [[Y]], %g -; CHECK-NEXT: [[Z1:%.*]] = zext i32 [[R]] to i64 -; CHECK-NEXT: ret i64 [[Z1]] +; CHECK-NEXT: [[Y:%.*]] = lshr i32 [[X:%.*]], 30 +; CHECK-NEXT: [[R:%.*]] = udiv i32 [[Y]], [[G:%.*]] +; CHECK-NEXT: [[TMP1:%.*]] = zext i32 [[R]] to i64 +; CHECK-NEXT: ret i64 [[TMP1]] ; %y = lshr i32 %x, 30 %r = udiv i32 %y, %g @@ -37,10 +37,10 @@ define i64 @test1_PR2274(i32 %x, i32 %g) nounwind { } define i64 @test2_PR2274(i32 %x, i32 %v) nounwind { ; CHECK-LABEL: @test2_PR2274( -; CHECK-NEXT: [[Y:%.*]] = lshr i32 %x, 31 -; CHECK-NEXT: [[R:%.*]] = udiv i32 [[Y]], %v -; CHECK-NEXT: [[Z1:%.*]] = zext i32 [[R]] to i64 -; CHECK-NEXT: ret i64 [[Z1]] +; CHECK-NEXT: [[Y:%.*]] = lshr i32 [[X:%.*]], 31 +; CHECK-NEXT: [[R:%.*]] = udiv i32 [[Y]], [[V:%.*]] +; CHECK-NEXT: [[TMP1:%.*]] = zext i32 [[R]] to i64 +; CHECK-NEXT: ret i64 [[TMP1]] ; %y = lshr i32 %x, 31 %r = udiv i32 %y, %v @@ -54,7 +54,7 @@ define i64 @test2_PR2274(i32 %x, i32 %v) nounwind { define i32 @PR30366(i1 %a) { ; CHECK-LABEL: @PR30366( -; CHECK-NEXT: [[Z:%.*]] = zext i1 %a to i32 +; CHECK-NEXT: [[Z:%.*]] = zext i1 [[A:%.*]] to i32 ; CHECK-NEXT: [[D:%.*]] = lshr i32 [[Z]], zext (i16 ptrtoint ([1 x i16]* @b to i16) to i32) ; CHECK-NEXT: ret i32 [[D]] ; @@ -62,3 +62,24 @@ define i32 @PR30366(i1 %a) { %d = udiv i32 %z, zext (i16 shl (i16 1, i16 ptrtoint ([1 x i16]* @b to i16)) to i32) ret i32 %d } + +; OSS-Fuzz #4857 +; https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=4857 +define i177 @ossfuzz_4857(i177 %X, i177 %Y) { +; CHECK-LABEL: @ossfuzz_4857( +; CHECK-NEXT: store i1 false, i1* undef, align 1 +; CHECK-NEXT: ret i177 0 +; + %B5 = udiv i177 %Y, -1 + %B4 = add i177 %B5, -1 + %B2 = add i177 %B4, -1 + %B6 = mul i177 %B5, %B2 + %B3 = add i177 %B2, %B2 + %B9 = xor i177 %B4, %B3 + %B13 = ashr i177 %Y, %B2 + %B22 = add i177 %B9, %B13 + %B1 = udiv i177 %B5, %B6 + %C9 = icmp ult i177 %Y, %B22 + store i1 %C9, i1* undef + ret i177 %B1 +} |
