From a540c13df1290b643724a00f26a67c1636633c10 Mon Sep 17 00:00:00 2001 From: Craig Topper Date: Tue, 29 Aug 2017 07:08:39 +0000 Subject: [PATCH] [InstCombine] Uncomment two test cases that were commented out with a TODO about them not optimizing. If we can't see the current code how will we ever know if they get fixed or even what the problem is? git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@311985 91177308-0d34-0410-b5e6-96231b3b80d8 --- test/Transforms/InstCombine/compare-signs.ll | 44 +++++++++++++------- 1 file changed, 28 insertions(+), 16 deletions(-) diff --git a/test/Transforms/InstCombine/compare-signs.ll b/test/Transforms/InstCombine/compare-signs.ll index 78ca1403063..fd59b8471f6 100644 --- a/test/Transforms/InstCombine/compare-signs.ll +++ b/test/Transforms/InstCombine/compare-signs.ll @@ -3,24 +3,36 @@ ; PR5438 ; TODO: This should also optimize down. -;define i32 @test1(i32 %a, i32 %b) nounwind readnone { -;entry: -; %0 = icmp sgt i32 %a, -1 -; %1 = icmp slt i32 %b, 0 -; %2 = xor i1 %1, %0 -; %3 = zext i1 %2 to i32 -; ret i32 %3 -;} +define i32 @test1(i32 %a, i32 %b) nounwind readnone { +; CHECK-LABEL: @test1( +; CHECK-NEXT: [[T0:%.*]] = icmp sgt i32 [[A:%.*]], -1 +; CHECK-NEXT: [[T1:%.*]] = icmp slt i32 [[B:%.*]], 0 +; CHECK-NEXT: [[T2:%.*]] = xor i1 [[T1]], [[T0]] +; CHECK-NEXT: [[T3:%.*]] = zext i1 [[T2]] to i32 +; CHECK-NEXT: ret i32 [[T3]] +; + %t0 = icmp sgt i32 %a, -1 + %t1 = icmp slt i32 %b, 0 + %t2 = xor i1 %t1, %t0 + %t3 = zext i1 %t2 to i32 + ret i32 %t3 +} ; TODO: This optimizes partially but not all the way. -;define i32 @test2(i32 %a, i32 %b) nounwind readnone { -;entry: -; %0 = and i32 %a, 8 -; %1 = and i32 %b, 8 -; %2 = icmp eq i32 %0, %1 -; %3 = zext i1 %2 to i32 -; ret i32 %3 -;} +define i32 @test2(i32 %a, i32 %b) nounwind readnone { +; CHECK-LABEL: @test2( +; CHECK-NEXT: [[TMP1:%.*]] = xor i32 [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: [[TMP2:%.*]] = lshr i32 [[TMP1]], 3 +; CHECK-NEXT: [[DOTLOBIT:%.*]] = and i32 [[TMP2]], 1 +; CHECK-NEXT: [[TMP3:%.*]] = xor i32 [[DOTLOBIT]], 1 +; CHECK-NEXT: ret i32 [[TMP3]] +; + %t0 = and i32 %a, 8 + %t1 = and i32 %b, 8 + %t2 = icmp eq i32 %t0, %t1 + %t3 = zext i1 %t2 to i32 + ret i32 %t3 +} define i32 @test3(i32 %a, i32 %b) nounwind readnone { ; CHECK-LABEL: @test3( -- 2.50.1