diff options
Diffstat (limited to 'llvm/test/Transforms/InstCombine/udiv-simplify.ll')
-rw-r--r-- | llvm/test/Transforms/InstCombine/udiv-simplify.ll | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/llvm/test/Transforms/InstCombine/udiv-simplify.ll b/llvm/test/Transforms/InstCombine/udiv-simplify.ll index 1794e26d389..8fd604b819e 100644 --- a/llvm/test/Transforms/InstCombine/udiv-simplify.ll +++ b/llvm/test/Transforms/InstCombine/udiv-simplify.ll @@ -83,3 +83,24 @@ define i177 @ossfuzz_4857(i177 %X, i177 %Y) { store i1 %C9, i1* undef ret i177 %B1 } + +define i32 @udiv_demanded(i32 %a) { +; CHECK-LABEL: @udiv_demanded( +; CHECK-NEXT: [[U:%.*]] = udiv i32 [[A:%.*]], 12 +; CHECK-NEXT: ret i32 [[U]] +; + %o = or i32 %a, 3 + %u = udiv i32 %o, 12 + ret i32 %u +} + +define i32 @udiv_exact_demanded(i32 %a) { +; CHECK-LABEL: @udiv_exact_demanded( +; CHECK-NEXT: [[O:%.*]] = and i32 [[A:%.*]], -3 +; CHECK-NEXT: [[U:%.*]] = udiv exact i32 [[O]], 12 +; CHECK-NEXT: ret i32 [[U]] +; + %o = and i32 %a, -3 + %u = udiv exact i32 %o, 12 + ret i32 %u +} |