From 7905731e096815d8d890e36809187dfab199e732 Mon Sep 17 00:00:00 2001 From: Sanjay Patel Date: Thu, 18 May 2017 22:47:57 +0000 Subject: [PATCH] [InstCombine] add more tests for xor-of-icmps; NFC git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@303387 91177308-0d34-0410-b5e6-96231b3b80d8 --- test/Transforms/InstCombine/set.ll | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/test/Transforms/InstCombine/set.ll b/test/Transforms/InstCombine/set.ll index 443f17a5300..db2b4c3558e 100644 --- a/test/Transforms/InstCombine/set.ll +++ b/test/Transforms/InstCombine/set.ll @@ -175,6 +175,36 @@ define i1 @xor_of_icmps(i64 %a) { ret i1 %xor } +; FIXME: This is also equivalent to the previous test. + +define i1 @xor_of_icmps_commute(i64 %a) { +; CHECK-LABEL: @xor_of_icmps_commute( +; CHECK-NEXT: [[B:%.*]] = icmp sgt i64 %a, 0 +; CHECK-NEXT: [[C:%.*]] = icmp eq i64 %a, 1 +; CHECK-NEXT: [[XOR:%.*]] = xor i1 [[B]], [[C]] +; CHECK-NEXT: ret i1 [[XOR]] +; + %b = icmp sgt i64 %a, 0 + %c = icmp eq i64 %a, 1 + %xor = xor i1 %b, %c + ret i1 %xor +} + +; FIXME: This is (a != 5). + +define i1 @xor_of_icmps_folds_more(i64 %a) { +; CHECK-LABEL: @xor_of_icmps_folds_more( +; CHECK-NEXT: [[B:%.*]] = icmp sgt i64 %a, 4 +; CHECK-NEXT: [[C:%.*]] = icmp slt i64 %a, 6 +; CHECK-NEXT: [[XOR:%.*]] = xor i1 [[B]], [[C]] +; CHECK-NEXT: ret i1 [[XOR]] +; + %b = icmp sgt i64 %a, 4 + %c = icmp slt i64 %a, 6 + %xor = xor i1 %b, %c + ret i1 %xor +} + ; https://bugs.llvm.org/show_bug.cgi?id=2844 define i32 @PR2844(i32 %x) { -- 2.11.0