Mercurial > hg > CbC > CbC_llvm
diff test/Transforms/InstCombine/sub.ll @ 83:60c9769439b8 LLVM3.7
LLVM 3.7
author | Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp> |
---|---|
date | Wed, 18 Feb 2015 14:55:36 +0900 |
parents | 54457678186b |
children | afa8332a0e37 |
line wrap: on
line diff
--- a/test/Transforms/InstCombine/sub.ll Mon Sep 08 22:07:30 2014 +0900 +++ b/test/Transforms/InstCombine/sub.ll Wed Feb 18 14:55:36 2015 +0900 @@ -142,8 +142,9 @@ %D = srem i32 %B, %C ret i32 %D ; CHECK-LABEL: @test15( -; CHECK: %D = srem i32 %B, %A -; CHECK: ret i32 %D +; CHECK: %[[sub:.*]] = sub i32 0, %A +; CHECK-NEXT: %[[rem:.*]] = srem i32 %B, %[[sub]] +; CHECK: ret i32 %[[rem]] } define i32 @test16(i32 %A) { @@ -529,3 +530,23 @@ ; CHECK-NEXT: [[ADD:%.*]] = add nsw i32 %x, -32768 ; CHECK: ret i32 [[ADD]] } + +define i32 @test45(i32 %x, i32 %y) { + %or = or i32 %x, %y + %xor = xor i32 %x, %y + %sub = sub i32 %or, %xor + ret i32 %sub +; CHECK-LABEL: @test45( +; CHECK-NEXT: %sub = and i32 %x, %y +; CHECK: ret i32 %sub +} + +define i32 @test46(i32 %x, i32 %y) { + %or = or i32 %x, %y + %sub = sub i32 %or, %x + ret i32 %sub +; CHECK-LABEL: @test46( +; CHECK-NEXT: %x.not = xor i32 %x, -1 +; CHECK-NEXT: %sub = and i32 %y, %x.not +; CHECK: ret i32 %sub +}