From: Sanjay Patel Date: Wed, 20 Jul 2016 17:58:20 +0000 (+0000) Subject: minimize tests and auto-generate checks X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=c0812702f8c10bb196588707b9180cc413d3da60;p=platform%2Fupstream%2Fllvm.git minimize tests and auto-generate checks llvm-svn: 276147 --- diff --git a/llvm/test/Transforms/InstCombine/sign-test-and-or.ll b/llvm/test/Transforms/InstCombine/sign-test-and-or.ll index aa23d93..1920a80 100644 --- a/llvm/test/Transforms/InstCombine/sign-test-and-or.ll +++ b/llvm/test/Transforms/InstCombine/sign-test-and-or.ll @@ -1,94 +1,68 @@ +; NOTE: Assertions have been autogenerated by utils/update_test_checks.py ; RUN: opt -S -instcombine < %s | FileCheck %s declare void @foo() -define void @test1(i32 %a, i32 %b) nounwind { +define i1 @test1(i32 %a, i32 %b) { +; CHECK-LABEL: @test1( +; CHECK-NEXT: [[TMP1:%.*]] = or i32 %a, %b +; CHECK-NEXT: [[TMP2:%.*]] = icmp slt i32 [[TMP1]], 0 +; CHECK-NEXT: ret i1 [[TMP2]] +; %1 = icmp slt i32 %a, 0 %2 = icmp slt i32 %b, 0 %or.cond = or i1 %1, %2 - br i1 %or.cond, label %if.then, label %if.end - -; CHECK-LABEL: @test1( -; CHECK-NEXT: %1 = or i32 %a, %b -; CHECK-NEXT: %2 = icmp slt i32 %1, 0 -; CHECK-NEXT: br - -if.then: - tail call void @foo() nounwind - ret void - -if.end: - ret void + ret i1 %or.cond } -define void @test2(i32 %a, i32 %b) nounwind { +define i1 @test2(i32 %a, i32 %b) { +; CHECK-LABEL: @test2( +; CHECK-NEXT: [[TMP1:%.*]] = and i32 %a, %b +; CHECK-NEXT: [[TMP2:%.*]] = icmp sgt i32 [[TMP1]], -1 +; CHECK-NEXT: ret i1 [[TMP2]] +; %1 = icmp sgt i32 %a, -1 %2 = icmp sgt i32 %b, -1 %or.cond = or i1 %1, %2 - br i1 %or.cond, label %if.then, label %if.end - -; CHECK-LABEL: @test2( -; CHECK-NEXT: %1 = and i32 %a, %b -; CHECK-NEXT: %2 = icmp sgt i32 %1, -1 -; CHECK-NEXT: br - -if.then: - tail call void @foo() nounwind - ret void - -if.end: - ret void + ret i1 %or.cond } -define void @test3(i32 %a, i32 %b) nounwind { +define i1 @test3(i32 %a, i32 %b) { +; CHECK-LABEL: @test3( +; CHECK-NEXT: [[TMP1:%.*]] = and i32 %a, %b +; CHECK-NEXT: [[TMP2:%.*]] = icmp slt i32 [[TMP1]], 0 +; CHECK-NEXT: ret i1 [[TMP2]] +; %1 = icmp slt i32 %a, 0 %2 = icmp slt i32 %b, 0 %or.cond = and i1 %1, %2 - br i1 %or.cond, label %if.then, label %if.end - -; CHECK-LABEL: @test3( -; CHECK-NEXT: %1 = and i32 %a, %b -; CHECK-NEXT: %2 = icmp slt i32 %1, 0 -; CHECK-NEXT: br - -if.then: - tail call void @foo() nounwind - ret void - -if.end: - ret void + ret i1 %or.cond } -define void @test4(i32 %a, i32 %b) nounwind { +define i1 @test4(i32 %a, i32 %b) { +; CHECK-LABEL: @test4( +; CHECK-NEXT: [[TMP1:%.*]] = or i32 %a, %b +; CHECK-NEXT: [[TMP2:%.*]] = icmp sgt i32 [[TMP1]], -1 +; CHECK-NEXT: ret i1 [[TMP2]] +; %1 = icmp sgt i32 %a, -1 %2 = icmp sgt i32 %b, -1 %or.cond = and i1 %1, %2 - br i1 %or.cond, label %if.then, label %if.end - -; CHECK-LABEL: @test4( -; CHECK-NEXT: %1 = or i32 %a, %b -; CHECK-NEXT: %2 = icmp sgt i32 %1, -1 -; CHECK-NEXT: br - -if.then: - tail call void @foo() nounwind - ret void - -if.end: - ret void + ret i1 %or.cond } -define void @test5(i32 %a) nounwind { +define void @test5(i32 %a) { +; CHECK-LABEL: @test5( +; CHECK-NEXT: [[TMP1:%.*]] = and i32 %a, -2013265920 +; CHECK-NEXT: [[TMP2:%.*]] = icmp eq i32 [[TMP1]], 0 +; CHECK-NEXT: br i1 [[TMP2]], label %if.then, label %if.end +; %and = and i32 %a, 134217728 %1 = icmp eq i32 %and, 0 %2 = icmp sgt i32 %a, -1 %or.cond = and i1 %1, %2 br i1 %or.cond, label %if.then, label %if.end -; CHECK-LABEL: @test5( -; CHECK-NEXT: %1 = and i32 %a, -2013265920 -; CHECK-NEXT: %2 = icmp eq i32 %1, 0 -; CHECK-NEXT: br i1 %2, label %if.then, label %if.end if.then: tail call void @foo() nounwind @@ -98,17 +72,18 @@ if.end: ret void } -define void @test6(i32 %a) nounwind { +define void @test6(i32 %a) { +; CHECK-LABEL: @test6( +; CHECK-NEXT: [[TMP1:%.*]] = and i32 %a, -2013265920 +; CHECK-NEXT: [[TMP2:%.*]] = icmp eq i32 [[TMP1]], 0 +; CHECK-NEXT: br i1 [[TMP2]], label %if.then, label %if.end +; %1 = icmp sgt i32 %a, -1 %and = and i32 %a, 134217728 %2 = icmp eq i32 %and, 0 %or.cond = and i1 %1, %2 br i1 %or.cond, label %if.then, label %if.end -; CHECK-LABEL: @test6( -; CHECK-NEXT: %1 = and i32 %a, -2013265920 -; CHECK-NEXT: %2 = icmp eq i32 %1, 0 -; CHECK-NEXT: br i1 %2, label %if.then, label %if.end if.then: tail call void @foo() nounwind @@ -118,17 +93,18 @@ if.end: ret void } -define void @test7(i32 %a) nounwind { +define void @test7(i32 %a) { +; CHECK-LABEL: @test7( +; CHECK-NEXT: [[TMP1:%.*]] = and i32 %a, -2013265920 +; CHECK-NEXT: [[TMP2:%.*]] = icmp eq i32 [[TMP1]], 0 +; CHECK-NEXT: br i1 [[TMP2]], label %if.end, label %if.then +; %and = and i32 %a, 134217728 %1 = icmp ne i32 %and, 0 %2 = icmp slt i32 %a, 0 %or.cond = or i1 %1, %2 br i1 %or.cond, label %if.then, label %if.end -; CHECK-LABEL: @test7( -; CHECK-NEXT: %1 = and i32 %a, -2013265920 -; CHECK-NEXT: %2 = icmp eq i32 %1, 0 -; CHECK-NEXT: br i1 %2, label %if.end, label %if.the if.then: tail call void @foo() nounwind @@ -138,80 +114,60 @@ if.end: ret void } -define void @test8(i32 %a) nounwind { +define void @test8(i32 %a) { +; CHECK-LABEL: @test8( +; CHECK-NEXT: [[TMP1:%.*]] = and i32 %a, -2013265920 +; CHECK-NEXT: [[TMP2:%.*]] = icmp eq i32 [[TMP1]], 0 +; CHECK-NEXT: br i1 [[TMP2]], label %if.end, label %if.then +; %1 = icmp slt i32 %a, 0 %and = and i32 %a, 134217728 %2 = icmp ne i32 %and, 0 %or.cond = or i1 %1, %2 br i1 %or.cond, label %if.then, label %if.end -; CHECK-LABEL: @test8( -; CHECK-NEXT: %1 = and i32 %a, -2013265920 -; CHECK-NEXT: %2 = icmp eq i32 %1, 0 -; CHECK-NEXT: br i1 %2, label %if.end, label %if.the if.then: - tail call void @foo() nounwind + tail call void @foo() ret void if.end: ret void } -define void @test9(i32 %a) nounwind { +define i1 @test9(i32 %a) { +; CHECK-LABEL: @test9( +; CHECK-NEXT: [[TMP1:%.*]] = and i32 %a, -1073741824 +; CHECK-NEXT: [[TMP2:%.*]] = icmp eq i32 [[TMP1]], 1073741824 +; CHECK-NEXT: ret i1 [[TMP2]] +; %1 = and i32 %a, 1073741824 %2 = icmp ne i32 %1, 0 %3 = icmp sgt i32 %a, -1 %or.cond = and i1 %2, %3 - br i1 %or.cond, label %if.then, label %if.end - -; CHECK-LABEL: @test9( -; CHECK-NEXT: %1 = and i32 %a, -1073741824 -; CHECK-NEXT: %2 = icmp eq i32 %1, 1073741824 -; CHECK-NEXT: br i1 %2, label %if.then, label %if.end - -if.then: - tail call void @foo() nounwind - ret void - -if.end: - ret void + ret i1 %or.cond } -define void @test10(i32 %a) nounwind { +define i1 @test10(i32 %a) { +; CHECK-LABEL: @test10( +; CHECK-NEXT: [[TMP1:%.*]] = icmp ult i32 %a, 2 +; CHECK-NEXT: ret i1 [[TMP1]] +; %1 = and i32 %a, 2 %2 = icmp eq i32 %1, 0 %3 = icmp ult i32 %a, 4 %or.cond = and i1 %2, %3 - br i1 %or.cond, label %if.then, label %if.end - -; CHECK-LABEL: @test10( -; CHECK-NEXT: %1 = icmp ult i32 %a, 2 -; CHECK-NEXT: br i1 %1, label %if.then, label %if.end - -if.then: - tail call void @foo() nounwind - ret void - -if.end: - ret void + ret i1 %or.cond } -define void @test11(i32 %a) nounwind { +define i1 @test11(i32 %a) { +; CHECK-LABEL: @test11( +; CHECK-NEXT: [[TMP1:%.*]] = icmp ugt i32 %a, 1 +; CHECK-NEXT: ret i1 [[TMP1]] +; %1 = and i32 %a, 2 %2 = icmp ne i32 %1, 0 %3 = icmp ugt i32 %a, 3 %or.cond = or i1 %2, %3 - br i1 %or.cond, label %if.then, label %if.end - -; CHECK-LABEL: @test11( -; CHECK-NEXT: %1 = icmp ugt i32 %a, 1 -; CHECK-NEXT: br i1 %1, label %if.then, label %if.end - -if.then: - tail call void @foo() nounwind - ret void - -if.end: - ret void + ret i1 %or.cond }