[llvm] r180907 - Add a test for the foldSelectICmpAndOr fix committed in r180779.

David Majnemer david.majnemer at gmail.com
Wed May 1 19:44:24 PDT 2013


Author: majnemer
Date: Wed May  1 21:44:23 2013
New Revision: 180907

URL: http://llvm.org/viewvc/llvm-project?rev=180907&view=rev
Log:
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.

Modified:
    llvm/trunk/test/Transforms/InstCombine/select.ll

Modified: llvm/trunk/test/Transforms/InstCombine/select.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/InstCombine/select.ll?rev=180907&r1=180906&r2=180907&view=diff
==============================================================================
--- llvm/trunk/test/Transforms/InstCombine/select.ll (original)
+++ llvm/trunk/test/Transforms/InstCombine/select.ll Wed May  1 21:44:23 2013
@@ -915,6 +915,19 @@ define i32 @select_icmp_eq_and_4096_0_or
   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





More information about the llvm-commits mailing list