89 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 52; RUN: llc < %s -mtriple=aarch64 | FileCheck %s3 4; When consuming profile data we sometimes flip a branch to improve runtime5; performance. If we are optimizing for size, we avoid changing the branch to6; improve outlining and ICF.7 8define i8 @foo_optsize(i32 %v4) optsize {9; CHECK-LABEL: foo_optsize:10; CHECK: // %bb.0: // %entry11; CHECK-NEXT: cbz wzr, .LBB0_212; CHECK-NEXT: .LBB0_1:13; CHECK-NEXT: mov w0, wzr14; CHECK-NEXT: ret15; CHECK-NEXT: .LBB0_2: // %b116; CHECK-NEXT: cbnz w0, .LBB0_417; CHECK-NEXT: .LBB0_3: // %b218; CHECK-NEXT: mov w0, #1 // =0x119; CHECK-NEXT: ret20; CHECK-NEXT: .LBB0_4: // %b121; CHECK-NEXT: cmp w0, #122; CHECK-NEXT: b.ne .LBB0_123; CHECK-NEXT: // %bb.5: // %b324; CHECK-NEXT: cbz wzr, .LBB0_125; CHECK-NEXT: b .LBB0_326entry:27 %v2 = icmp eq i32 0, 028 br i1 %v2, label %b1, label %b429 30b1:31 switch i32 %v4, label %b4 [32 i32 1, label %b333 i32 0, label %b234 ], !prof !035 36b2:37 br label %b438 39b3:40 %v3 = icmp eq i32 0, 041 br i1 %v3, label %b4, label %b242 43b4:44 %v16 = phi i8 [ 1, %b2 ], [ 0, %entry ], [ 0, %b3 ], [ 0, %b1 ]45 ret i8 %v1646}47 48define i8 @foo_optspeed(i32 %v4) {49; CHECK-LABEL: foo_optspeed:50; CHECK: // %bb.0: // %entry51; CHECK-NEXT: cbz wzr, .LBB1_252; CHECK-NEXT: .LBB1_1:53; CHECK-NEXT: mov w0, wzr54; CHECK-NEXT: ret55; CHECK-NEXT: .LBB1_2: // %b156; CHECK-NEXT: cbnz w0, .LBB1_457; CHECK-NEXT: .LBB1_3: // %b258; CHECK-NEXT: mov w0, #1 // =0x159; CHECK-NEXT: ret60; CHECK-NEXT: .LBB1_4: // %b161; CHECK-NEXT: cmp w0, #162; CHECK-NEXT: b.ne .LBB1_163; CHECK-NEXT: // %bb.5: // %b364; CHECK-NEXT: cbnz wzr, .LBB1_365; CHECK-NEXT: b .LBB1_166entry:67 %v2 = icmp eq i32 0, 068 br i1 %v2, label %b1, label %b469 70b1:71 switch i32 %v4, label %b4 [72 i32 1, label %b373 i32 0, label %b274 ], !prof !075 76b2:77 br label %b478 79b3:80 %v3 = icmp eq i32 0, 081 br i1 %v3, label %b4, label %b282 83b4:84 %v16 = phi i8 [ 1, %b2 ], [ 0, %entry ], [ 0, %b3 ], [ 0, %b1 ]85 ret i8 %v1686}87 88!0 = !{!"branch_weights", i32 5, i32 5, i32 100}89