From 27cfb46c45f672e1cba377380f5caf70ec98d51c Mon Sep 17 00:00:00 2001 From: Sanjay Patel Date: Tue, 16 May 2017 20:09:32 +0000 Subject: [PATCH] [InstCombine] auto-generate better checks; NFC git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@303203 91177308-0d34-0410-b5e6-96231b3b80d8 --- test/Transforms/InstCombine/canonicalize_branch.ll | 95 +++++++++++++--------- 1 file changed, 55 insertions(+), 40 deletions(-) diff --git a/test/Transforms/InstCombine/canonicalize_branch.ll b/test/Transforms/InstCombine/canonicalize_branch.ll index 29fd51a39ab..44a7b86d830 100644 --- a/test/Transforms/InstCombine/canonicalize_branch.ll +++ b/test/Transforms/InstCombine/canonicalize_branch.ll @@ -1,69 +1,84 @@ +; NOTE: Assertions have been autogenerated by utils/update_test_checks.py ; RUN: opt < %s -instcombine -S | FileCheck %s ; Test an already canonical branch to make sure we don't flip those. -define i32 @test0(i32 %X, i32 %Y) { - %C = icmp eq i32 %X, %Y - br i1 %C, label %T, label %F, !prof !0 - -; CHECK-LABEL: @test0( -; CHECK: %C = icmp eq i32 %X, %Y -; CHECK: br i1 %C, label %T, label %F - +define i32 @eq(i32 %X, i32 %Y) { +; CHECK-LABEL: @eq( +; CHECK-NEXT: [[C:%.*]] = icmp eq i32 [[X:%.*]], [[Y:%.*]] +; CHECK-NEXT: br i1 [[C]], label [[T:%.*]], label [[F:%.*]], !prof !0 +; CHECK: T: +; CHECK-NEXT: ret i32 12 +; CHECK: F: +; CHECK-NEXT: ret i32 123 +; + %C = icmp eq i32 %X, %Y + br i1 %C, label %T, label %F, !prof !0 T: - ret i32 12 + ret i32 12 F: - ret i32 123 + ret i32 123 } -define i32 @test1(i32 %X, i32 %Y) { - %C = icmp ne i32 %X, %Y - br i1 %C, label %T, label %F, !prof !1 - -; CHECK-LABEL: @test1( -; CHECK: %C = icmp eq i32 %X, %Y -; CHECK: br i1 %C, label %F, label %T - +define i32 @ne(i32 %X, i32 %Y) { +; CHECK-LABEL: @ne( +; CHECK-NEXT: [[C:%.*]] = icmp eq i32 [[X:%.*]], [[Y:%.*]] +; CHECK-NEXT: br i1 [[C]], label [[F:%.*]], label [[T:%.*]], !prof !1 +; CHECK: T: +; CHECK-NEXT: ret i32 12 +; CHECK: F: +; CHECK-NEXT: ret i32 123 +; + %C = icmp ne i32 %X, %Y + br i1 %C, label %T, label %F, !prof !1 T: - ret i32 12 + ret i32 12 F: - ret i32 123 + ret i32 123 } -define i32 @test2(i32 %X, i32 %Y) { - %C = icmp ule i32 %X, %Y - br i1 %C, label %T, label %F, !prof !2 - -; CHECK-LABEL: @test2( -; CHECK: %C = icmp ugt i32 %X, %Y -; CHECK: br i1 %C, label %F, label %T - +define i32 @ule(i32 %X, i32 %Y) { +; CHECK-LABEL: @ule( +; CHECK-NEXT: [[C:%.*]] = icmp ugt i32 [[X:%.*]], [[Y:%.*]] +; CHECK-NEXT: br i1 [[C]], label [[F:%.*]], label [[T:%.*]], !prof !2 +; CHECK: T: +; CHECK-NEXT: ret i32 12 +; CHECK: F: +; CHECK-NEXT: ret i32 123 +; + %C = icmp ule i32 %X, %Y + br i1 %C, label %T, label %F, !prof !2 T: - ret i32 12 + ret i32 12 F: - ret i32 123 + ret i32 123 } -define i32 @test3(i32 %X, i32 %Y) { - %C = icmp uge i32 %X, %Y - br i1 %C, label %T, label %F, !prof !3 - -; CHECK-LABEL: @test3( -; CHECK: %C = icmp ult i32 %X, %Y -; CHECK: br i1 %C, label %F, label %T - +define i32 @uge(i32 %X, i32 %Y) { +; CHECK-LABEL: @uge( +; CHECK-NEXT: [[C:%.*]] = icmp ult i32 [[X:%.*]], [[Y:%.*]] +; CHECK-NEXT: br i1 [[C]], label [[F:%.*]], label [[T:%.*]], !prof !3 +; CHECK: T: +; CHECK-NEXT: ret i32 12 +; CHECK: F: +; CHECK-NEXT: ret i32 123 +; + %C = icmp uge i32 %X, %Y + br i1 %C, label %T, label %F, !prof !3 T: - ret i32 12 + ret i32 12 F: - ret i32 123 + ret i32 123 } !0 = !{!"branch_weights", i32 1, i32 2} !1 = !{!"branch_weights", i32 3, i32 4} !2 = !{!"branch_weights", i32 5, i32 6} !3 = !{!"branch_weights", i32 7, i32 8} + ; Base case shouldn't change. ; CHECK: !0 = {{.*}} i32 1, i32 2} ; Ensure that the branch metadata is reversed to match the reversals above. ; CHECK: !1 = {{.*}} i32 4, i32 3} ; CHECK: !2 = {{.*}} i32 6, i32 5} ; CHECK: !3 = {{.*}} i32 8, i32 7} + -- 2.11.0