[llvm] r311985 - [InstCombine] Uncomment two test cases that were commented out with a TODO about them not optimizing.
Craig Topper via llvm-commits
llvm-commits at lists.llvm.org
Tue Aug 29 00:08:40 PDT 2017
Author: ctopper
Date: Tue Aug 29 00:08:39 2017
New Revision: 311985
URL: http://llvm.org/viewvc/llvm-project?rev=311985&view=rev
Log:
[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?
Modified:
llvm/trunk/test/Transforms/InstCombine/compare-signs.ll
Modified: llvm/trunk/test/Transforms/InstCombine/compare-signs.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/InstCombine/compare-signs.ll?rev=311985&r1=311984&r2=311985&view=diff
==============================================================================
--- llvm/trunk/test/Transforms/InstCombine/compare-signs.ll (original)
+++ llvm/trunk/test/Transforms/InstCombine/compare-signs.ll Tue Aug 29 00:08:39 2017
@@ -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(
More information about the llvm-commits
mailing list