]> granicus.if.org Git - llvm/commitdiff
[InstCombine] Uncomment two test cases that were commented out with a TODO about...
authorCraig Topper <craig.topper@intel.com>
Tue, 29 Aug 2017 07:08:39 +0000 (07:08 +0000)
committerCraig Topper <craig.topper@intel.com>
Tue, 29 Aug 2017 07:08:39 +0000 (07:08 +0000)
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

index 78ca1403063101e33c657a047182317dbbf50323..fd59b8471f6c8c82f088a3f5d967bd80713675bf 100644 (file)
@@ -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(