152 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=aarch64-linux %s -o - | FileCheck %s3 4define i32 @f0(i32 %x) #0 {5; CHECK-LABEL: f0:6; CHECK: // %bb.0: // %entry7; CHECK-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill8; CHECK-NEXT: .cfi_def_cfa_offset 169; CHECK-NEXT: .cfi_offset w30, -1610; CHECK-NEXT: .cfi_remember_state11; CHECK-NEXT: cbz w0, .LBB0_512; CHECK-NEXT: // %bb.1: // %entry13; CHECK-NEXT: cmp w0, #214; CHECK-NEXT: b.eq .LBB0_415; CHECK-NEXT: // %bb.2: // %entry16; CHECK-NEXT: cmp w0, #117; CHECK-NEXT: b.ne .LBB0_618; CHECK-NEXT: // %bb.3: // %if.then219; CHECK-NEXT: bl g120; CHECK-NEXT: add w0, w0, #121; CHECK-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload22; CHECK-NEXT: .cfi_def_cfa_offset 023; CHECK-NEXT: .cfi_restore w3024; CHECK-NEXT: ret25; CHECK-NEXT: .LBB0_4: // %if.then526; CHECK-NEXT: .cfi_restore_state27; CHECK-NEXT: .cfi_remember_state28; CHECK-NEXT: bl g029; CHECK-NEXT: mov w8, #1 // =0x130; CHECK-NEXT: sub w0, w8, w031; CHECK-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload32; CHECK-NEXT: .cfi_def_cfa_offset 033; CHECK-NEXT: .cfi_restore w3034; CHECK-NEXT: ret35; CHECK-NEXT: .LBB0_5:36; CHECK-NEXT: .cfi_restore_state37; CHECK-NEXT: .cfi_remember_state38; CHECK-NEXT: mov w0, #1 // =0x139; CHECK-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload40; CHECK-NEXT: .cfi_def_cfa_offset 041; CHECK-NEXT: .cfi_restore w3042; CHECK-NEXT: ret43; CHECK-NEXT: .LBB0_6: // %if.end744; CHECK-NEXT: .cfi_restore_state45; CHECK-NEXT: mov w0, wzr46; CHECK-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload47; CHECK-NEXT: .cfi_def_cfa_offset 048; CHECK-NEXT: .cfi_restore w3049; CHECK-NEXT: ret50entry:51 switch i32 %x, label %if.end7 [52 i32 0, label %return53 i32 1, label %if.then254 i32 2, label %if.then555 ]56 57if.then2:58 %call = tail call i32 @g1(i32 1)59 %add = add nsw i32 %call, 160 br label %return61 62if.then5:63 %call6 = tail call i32 @g0(i32 2)64 %sub = sub nsw i32 1, %call665 br label %return66 67if.end7:68 br label %return69 70return:71 %retval.0 = phi i32 [ %add, %if.then2 ], [ %sub, %if.then5 ], [ 0, %if.end7 ], [ 1, %entry ]72 ret i32 %retval.073}74 75declare i32 @g1(i32)76 77declare i32 @g0(i32)78 79define i32 @f1(i32 %x) #0 {80; CHECK-LABEL: f1:81; CHECK: // %bb.0: // %entry82; CHECK-NEXT: cbz w0, .LBB1_283; CHECK-NEXT: // %bb.1: // %if.end84; CHECK-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill85; CHECK-NEXT: .cfi_def_cfa_offset 1686; CHECK-NEXT: .cfi_offset w30, -1687; CHECK-NEXT: bl g088; CHECK-NEXT: add w0, w0, #189; CHECK-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload90; CHECK-NEXT: .cfi_def_cfa_offset 091; CHECK-NEXT: .cfi_restore w3092; CHECK-NEXT: .LBB1_2: // %return93; CHECK-NEXT: ret94entry:95 %cmp = icmp eq i32 %x, 096 br i1 %cmp, label %return, label %if.end97 98if.end:99 %call = tail call i32 @g0(i32 %x)100 %add = add nsw i32 %call, 1101 br label %return102 103return:104 %retval.0 = phi i32 [ %add, %if.end ], [ 0, %entry ]105 ret i32 %retval.0106}107 108define i32 @f2(i32 %x) #0 {109; CHECK-LABEL: f2:110; CHECK: // %bb.0: // %entry111; CHECK-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill112; CHECK-NEXT: .cfi_def_cfa_offset 16113; CHECK-NEXT: .cfi_offset w30, -16114; CHECK-NEXT: .cfi_remember_state115; CHECK-NEXT: cbz w0, .LBB2_2116; CHECK-NEXT: // %bb.1: // %if.end117; CHECK-NEXT: bl g1118; CHECK-NEXT: mov w8, #1 // =0x1119; CHECK-NEXT: sub w0, w8, w0120; CHECK-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload121; CHECK-NEXT: .cfi_def_cfa_offset 0122; CHECK-NEXT: .cfi_restore w30123; CHECK-NEXT: ret124; CHECK-NEXT: .LBB2_2: // %if.then125; CHECK-NEXT: .cfi_restore_state126; CHECK-NEXT: bl g0127; CHECK-NEXT: add w0, w0, #1128; CHECK-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload129; CHECK-NEXT: .cfi_def_cfa_offset 0130; CHECK-NEXT: .cfi_restore w30131; CHECK-NEXT: ret132entry:133 %cmp = icmp eq i32 %x, 0134 br i1 %cmp, label %if.then, label %if.end135 136if.then:137 %call = tail call i32 @g0(i32 0)138 %add = add nsw i32 %call, 1139 br label %return140 141if.end:142 %call1 = tail call i32 @g1(i32 %x)143 %sub = sub nsw i32 1, %call1144 br label %return145 146return:147 %retval.0 = phi i32 [ %add, %if.then ], [ %sub, %if.end ]148 ret i32 %retval.0149}150 151attributes #0 = { uwtable }152