diff options
-rw-r--r-- | llvm/test/Transforms/InstSimplify/select.ll | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/llvm/test/Transforms/InstSimplify/select.ll b/llvm/test/Transforms/InstSimplify/select.ll index a449b38d02d..2f19d841f8c 100644 --- a/llvm/test/Transforms/InstSimplify/select.ll +++ b/llvm/test/Transforms/InstSimplify/select.ll @@ -131,6 +131,20 @@ define i32 @select_icmp_and_8_eq_0_or_8(i32 %x) { ret i32 %or.x } +; PR28466: https://llvm.org/bugs/show_bug.cgi?id=28466 +; InstSimplify needs to recognize variations of this pattern. + +define i32 @select_icmp_and_8_ne_0_or_128(i32 %x) { +; CHECK-LABEL: @select_icmp_and_8_ne_0_or_128( +; CHECK-NEXT: ret i32 %x +; + %and = and i32 %x, 128 + %cmp = icmp eq i32 %and, 0 + %or = or i32 %x, 128 + %or.x = select i1 %cmp, i32 %x, i32 %or + ret i32 %or.x +} + define i32 @select_icmp_and_8_ne_0_and_not_8(i32 %x) { ; CHECK-LABEL: @select_icmp_and_8_ne_0_and_not_8( ; CHECK-NEXT: [[AND1:%.*]] = and i32 %x, -9 |