From: Amaury Sechet Date: Sat, 2 Mar 2019 20:12:25 +0000 (+0000) Subject: Add test case for add to sub transformation. NFC X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=81458a6d244a261bee61d1d2ba030040c9227d9f;p=llvm Add test case for add to sub transformation. NFC git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@355277 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/test/Transforms/InstCombine/add.ll b/test/Transforms/InstCombine/add.ll index abf81a58c30..a6a305bd41b 100644 --- a/test/Transforms/InstCombine/add.ll +++ b/test/Transforms/InstCombine/add.ll @@ -947,3 +947,30 @@ define i32 @add_not_increment_commuted(i32 %A, i32 %B) { ret i32 %E } +; E = (A + ~B) + 1 = A - B +define i32 @add_to_sub(i32 %A, i32 %B) { +; CHECK-LABEL: @add_to_sub( +; CHECK-NEXT: [[C:%.*]] = xor i32 [[B:%.*]], -1 +; CHECK-NEXT: [[D:%.*]] = add i32 [[C]], [[A:%.*]] +; CHECK-NEXT: [[E:%.*]] = add i32 [[D]], 1 +; CHECK-NEXT: ret i32 [[E]] +; + %C = xor i32 %B, -1 + %D = add i32 %A, %C + %E = add i32 %D, 1 + ret i32 %E +} + +; E = (~B + A) + 1 = A - B +define i32 @add_to_sub2(i32 %A, i32 %B) { +; CHECK-LABEL: @add_to_sub2( +; CHECK-NEXT: [[C:%.*]] = xor i32 [[B:%.*]], -1 +; CHECK-NEXT: [[D:%.*]] = add i32 [[C]], [[A:%.*]] +; CHECK-NEXT: [[E:%.*]] = add i32 [[D]], 1 +; CHECK-NEXT: ret i32 [[E]] +; + %C = xor i32 %B, -1 + %D = add i32 %C, %A + %E = add i32 %D, 1 + ret i32 %E +}