diff options
| author | Amaury Sechet <deadalnix@gmail.com> | 2019-03-02 20:12:25 +0000 | 
|---|---|---|
| committer | Amaury Sechet <deadalnix@gmail.com> | 2019-03-02 20:12:25 +0000 | 
| commit | 315d0bbb9c065d0def8d66a69b6fcd94a870d28a (patch) | |
| tree | e11652a3d32fdb833ee6885e8fb773779e5e5a58 | |
| parent | e52b84ef8e0afa2f4257ac69d1d29cb56d095477 (diff) | |
| download | bcm5719-llvm-315d0bbb9c065d0def8d66a69b6fcd94a870d28a.tar.gz bcm5719-llvm-315d0bbb9c065d0def8d66a69b6fcd94a870d28a.zip  | |
Add test case for add to sub transformation. NFC
llvm-svn: 355277
| -rw-r--r-- | llvm/test/Transforms/InstCombine/add.ll | 27 | 
1 files changed, 27 insertions, 0 deletions
diff --git a/llvm/test/Transforms/InstCombine/add.ll b/llvm/test/Transforms/InstCombine/add.ll index abf81a58c30..a6a305bd41b 100644 --- a/llvm/test/Transforms/InstCombine/add.ll +++ b/llvm/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 +}  | 

