diff options
| author | David Majnemer <david.majnemer@gmail.com> | 2013-05-02 02:44:23 +0000 | 
|---|---|---|
| committer | David Majnemer <david.majnemer@gmail.com> | 2013-05-02 02:44:23 +0000 | 
| commit | a18dfe6b96af2d2e9ac95c306b711fa6a504b6cc (patch) | |
| tree | 11c82739780b577537f4cd1e6b0c0399d6ab2d25 /llvm/test/Transforms | |
| parent | f85a76f477fdf7473a26579450d15a6ae77baec6 (diff) | |
| download | bcm5719-llvm-a18dfe6b96af2d2e9ac95c306b711fa6a504b6cc.tar.gz bcm5719-llvm-a18dfe6b96af2d2e9ac95c306b711fa6a504b6cc.zip | |
Add a test for the foldSelectICmpAndOr fix committed in r180779.
This tests a case where C1 and C2 were the same but X and Y were different
widths.
llvm-svn: 180907
Diffstat (limited to 'llvm/test/Transforms')
| -rw-r--r-- | llvm/test/Transforms/InstCombine/select.ll | 13 | 
1 files changed, 13 insertions, 0 deletions
| diff --git a/llvm/test/Transforms/InstCombine/select.ll b/llvm/test/Transforms/InstCombine/select.ll index 08487a3696d..c72a6f7c49c 100644 --- a/llvm/test/Transforms/InstCombine/select.ll +++ b/llvm/test/Transforms/InstCombine/select.ll @@ -915,6 +915,19 @@ define i32 @select_icmp_eq_and_4096_0_or_4096(i32 %x, i32 %y) {    ret i32 %select  } +; CHECK: @select_icmp_eq_0_and_1_or_1 +; CHECK-NEXT: [[AND:%[a-z0-9]+]] = and i64 %x, 1 +; CHECK-NEXT: [[ZEXT:%[a-z0-9]+]] = trunc i64 [[AND]] to i32 +; CHECK-NEXT: [[OR:%[a-z0-9]+]] = or i32 [[XOR]], %y +; CHECK-NEXT: ret i32 [[OR]] +define i32 @select_icmp_eq_0_and_1_or_1(i64 %x, i32 %y) { +  %and = and i64 %x, 1 +  %cmp = icmp eq i64 %and, 0 +  %or = or i32 %y, 1 +  %select = select i1 %cmp, i32 %y, i32 %or +  ret i32 %select +} +  ; CHECK: @select_icmp_ne_0_and_4096_or_32  ; CHECK-NEXT: [[LSHR:%[a-z0-9]+]] = lshr i32 %x, 7  ; CHECK-NEXT: [[AND:%[a-z0-9]+]] = and i32 [[LSHR]], 32 | 

