brintos

brintos / llvm-project-archived public Read only

0
0
Text · 17.4 KiB · 1f7584b Raw
509 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 42; RUN: llc -o - -mtriple=arm64e-apple-macosx %s | FileCheck %s3 4target datalayout = "e-m:o-i64:64-i128:128-n32:64-S128"5 6; x16 is not available, shrink-wrapping cannot happen because7; StoreSwiftAsyncContext needs it.8define swifttailcc void @test_async_with_jumptable_x16_clobbered(ptr %src, ptr swiftasync %as) #0 {9; CHECK-LABEL: test_async_with_jumptable_x16_clobbered:10; CHECK:       ; %bb.0: ; %entry11; CHECK-NEXT:    orr x29, x29, #0x100000000000000012; CHECK-NEXT:    sub sp, sp, #3213; CHECK-NEXT:    stp x29, x30, [sp, #16] ; 16-byte Folded Spill14; CHECK-NEXT:    add x16, sp, #815; CHECK-NEXT:    movk x16, #49946, lsl #4816; CHECK-NEXT:    mov x17, x2217; CHECK-NEXT:    pacdb x17, x1618; CHECK-NEXT:    str x17, [sp, #8]19; CHECK-NEXT:    add x29, sp, #1620; CHECK-NEXT:    .cfi_def_cfa w29, 1621; CHECK-NEXT:    .cfi_offset w30, -822; CHECK-NEXT:    .cfi_offset w29, -1623; CHECK-NEXT:    mov x20, x2224; CHECK-NEXT:    mov x22, x025; CHECK-NEXT:    ; InlineAsm Start26; CHECK-NEXT:    ; InlineAsm End27; CHECK-NEXT:    ldr x8, [x0]28; CHECK-NEXT:    mov x0, x2029; CHECK-NEXT:    cbnz x8, LBB0_230; CHECK-NEXT:  ; %bb.1: ; %then.131; CHECK-NEXT:    str xzr, [x22]32; CHECK-NEXT:    mov x0, x2233; CHECK-NEXT:  LBB0_2: ; %exit34; CHECK-NEXT:    ; InlineAsm Start35; CHECK-NEXT:    ; InlineAsm End36; CHECK-NEXT:    bl _foo37; CHECK-NEXT:    mov x1, x038; CHECK-NEXT:    mov x0, x2039; CHECK-NEXT:    ldp x29, x30, [sp, #16] ; 16-byte Folded Reload40; CHECK-NEXT:    and x29, x29, #0xefffffffffffffff41; CHECK-NEXT:    add sp, sp, #3242; CHECK-NEXT:    br x143entry:44  %x16 = tail call i64 asm "", "={x16}"()45  %l = load i64, ptr %src, align 846  %c = icmp eq i64 %l, 047  br i1 %c, label %then.1, label %exit48 49then.1:50  store i64 0, ptr %src51  br label %exit52 53exit:54  %p = phi ptr [ %src, %then.1 ], [ %as, %entry ]55  tail call void asm sideeffect "", "{x16}"(i64 %x16)56  %r = call i64 @foo(ptr %p)57  %fn = inttoptr i64 %r to ptr58  musttail call swifttailcc void %fn(ptr swiftasync %src, ptr %as)59  ret void60}61 62; x17 is not available, shrink-wrapping cannot happen because63; StoreSwiftAsyncContext needs it.64define swifttailcc void @test_async_with_jumptable_x17_clobbered(ptr %src, ptr swiftasync %as) #0 {65; CHECK-LABEL: test_async_with_jumptable_x17_clobbered:66; CHECK:       ; %bb.0: ; %entry67; CHECK-NEXT:    orr x29, x29, #0x100000000000000068; CHECK-NEXT:    sub sp, sp, #3269; CHECK-NEXT:    stp x29, x30, [sp, #16] ; 16-byte Folded Spill70; CHECK-NEXT:    add x16, sp, #871; CHECK-NEXT:    movk x16, #49946, lsl #4872; CHECK-NEXT:    mov x17, x2273; CHECK-NEXT:    pacdb x17, x1674; CHECK-NEXT:    str x17, [sp, #8]75; CHECK-NEXT:    add x29, sp, #1676; CHECK-NEXT:    .cfi_def_cfa w29, 1677; CHECK-NEXT:    .cfi_offset w30, -878; CHECK-NEXT:    .cfi_offset w29, -1679; CHECK-NEXT:    mov x20, x2280; CHECK-NEXT:    mov x22, x081; CHECK-NEXT:    ; InlineAsm Start82; CHECK-NEXT:    ; InlineAsm End83; CHECK-NEXT:    ldr x8, [x0]84; CHECK-NEXT:    mov x0, x2085; CHECK-NEXT:    cbnz x8, LBB1_286; CHECK-NEXT:  ; %bb.1: ; %then.187; CHECK-NEXT:    str xzr, [x22]88; CHECK-NEXT:    mov x0, x2289; CHECK-NEXT:  LBB1_2: ; %exit90; CHECK-NEXT:    ; InlineAsm Start91; CHECK-NEXT:    ; InlineAsm End92; CHECK-NEXT:    bl _foo93; CHECK-NEXT:    mov x1, x094; CHECK-NEXT:    mov x0, x2095; CHECK-NEXT:    ldp x29, x30, [sp, #16] ; 16-byte Folded Reload96; CHECK-NEXT:    and x29, x29, #0xefffffffffffffff97; CHECK-NEXT:    add sp, sp, #3298; CHECK-NEXT:    br x199entry:100  %x17 = tail call i64 asm "", "={x17}"()101  %l = load i64, ptr %src, align 8102  %c = icmp eq i64 %l, 0103  br i1 %c, label %then.1, label %exit104 105then.1:106  store i64 0, ptr %src107  br label %exit108 109exit:110  %p = phi ptr [ %src, %then.1 ], [ %as, %entry ]111  tail call void asm sideeffect "", "{x17}"(i64 %x17)112  %r = call i64 @foo(ptr %p)113  %fn = inttoptr i64 %r to ptr114  musttail call swifttailcc void %fn(ptr swiftasync %src, ptr %as)115  ret void116}117 118define swifttailcc void @test_async_with_jumptable_x1_clobbered(ptr %src, ptr swiftasync %as) #0 {119; CHECK-LABEL: test_async_with_jumptable_x1_clobbered:120; CHECK:       ; %bb.0: ; %entry121; CHECK-NEXT:    mov x20, x22122; CHECK-NEXT:    mov x22, x0123; CHECK-NEXT:    ; InlineAsm Start124; CHECK-NEXT:    ; InlineAsm End125; CHECK-NEXT:    ldr x8, [x0]126; CHECK-NEXT:    mov x0, x20127; CHECK-NEXT:    cbnz x8, LBB2_2128; CHECK-NEXT:  ; %bb.1: ; %then.1129; CHECK-NEXT:    str xzr, [x22]130; CHECK-NEXT:    mov x0, x22131; CHECK-NEXT:  LBB2_2: ; %exit132; CHECK-NEXT:    orr x29, x29, #0x1000000000000000133; CHECK-NEXT:    sub sp, sp, #32134; CHECK-NEXT:    stp x29, x30, [sp, #16] ; 16-byte Folded Spill135; CHECK-NEXT:    add x16, sp, #8136; CHECK-NEXT:    movk x16, #49946, lsl #48137; CHECK-NEXT:    mov x17, x22138; CHECK-NEXT:    pacdb x17, x16139; CHECK-NEXT:    str x17, [sp, #8]140; CHECK-NEXT:    add x29, sp, #16141; CHECK-NEXT:    .cfi_def_cfa w29, 16142; CHECK-NEXT:    .cfi_offset w30, -8143; CHECK-NEXT:    .cfi_offset w29, -16144; CHECK-NEXT:    ; InlineAsm Start145; CHECK-NEXT:    ; InlineAsm End146; CHECK-NEXT:    bl _foo147; CHECK-NEXT:    mov x1, x0148; CHECK-NEXT:    mov x0, x20149; CHECK-NEXT:    ldp x29, x30, [sp, #16] ; 16-byte Folded Reload150; CHECK-NEXT:    and x29, x29, #0xefffffffffffffff151; CHECK-NEXT:    add sp, sp, #32152; CHECK-NEXT:    br x1153entry:154  %x1 = tail call i64 asm "", "={x1}"()155  %l = load i64, ptr %src, align 8156  %c = icmp eq i64 %l, 0157  br i1 %c, label %then.1, label %exit158 159then.1:160  store i64 0, ptr %src161  br label %exit162 163exit:164  %p = phi ptr [ %src, %then.1 ], [ %as, %entry ]165  tail call void asm sideeffect "", "{x1}"(i64 %x1)166  %r = call i64 @foo(ptr %p)167  %fn = inttoptr i64 %r to ptr168  musttail call swifttailcc void %fn(ptr swiftasync %src, ptr %as)169  ret void170}171 172define swifttailcc void @test_async_with_jumptable_x1_x9_clobbered(ptr %src, ptr swiftasync %as) #0 {173; CHECK-LABEL: test_async_with_jumptable_x1_x9_clobbered:174; CHECK:       ; %bb.0: ; %entry175; CHECK-NEXT:    mov x20, x22176; CHECK-NEXT:    mov x22, x0177; CHECK-NEXT:    ; InlineAsm Start178; CHECK-NEXT:    ; InlineAsm End179; CHECK-NEXT:    ; InlineAsm Start180; CHECK-NEXT:    ; InlineAsm End181; CHECK-NEXT:    ldr x8, [x0]182; CHECK-NEXT:    mov x0, x20183; CHECK-NEXT:    cbnz x8, LBB3_2184; CHECK-NEXT:  ; %bb.1: ; %then.1185; CHECK-NEXT:    str xzr, [x22]186; CHECK-NEXT:    mov x0, x22187; CHECK-NEXT:  LBB3_2: ; %exit188; CHECK-NEXT:    orr x29, x29, #0x1000000000000000189; CHECK-NEXT:    sub sp, sp, #32190; CHECK-NEXT:    stp x29, x30, [sp, #16] ; 16-byte Folded Spill191; CHECK-NEXT:    add x16, sp, #8192; CHECK-NEXT:    movk x16, #49946, lsl #48193; CHECK-NEXT:    mov x17, x22194; CHECK-NEXT:    pacdb x17, x16195; CHECK-NEXT:    str x17, [sp, #8]196; CHECK-NEXT:    add x29, sp, #16197; CHECK-NEXT:    .cfi_def_cfa w29, 16198; CHECK-NEXT:    .cfi_offset w30, -8199; CHECK-NEXT:    .cfi_offset w29, -16200; CHECK-NEXT:    ; InlineAsm Start201; CHECK-NEXT:    ; InlineAsm End202; CHECK-NEXT:    ; InlineAsm Start203; CHECK-NEXT:    ; InlineAsm End204; CHECK-NEXT:    bl _foo205; CHECK-NEXT:    mov x1, x0206; CHECK-NEXT:    mov x0, x20207; CHECK-NEXT:    ldp x29, x30, [sp, #16] ; 16-byte Folded Reload208; CHECK-NEXT:    and x29, x29, #0xefffffffffffffff209; CHECK-NEXT:    add sp, sp, #32210; CHECK-NEXT:    br x1211entry:212  %x1 = tail call i64 asm "", "={x1}"()213  %x9 = tail call i64 asm "", "={x9}"()214  %l = load i64, ptr %src, align 8215  %c = icmp eq i64 %l, 0216  br i1 %c, label %then.1, label %exit217 218then.1:219  store i64 0, ptr %src220  br label %exit221 222exit:223  %p = phi ptr [ %src, %then.1 ], [ %as, %entry ]224  tail call void asm sideeffect "", "{x1}"(i64 %x1)225  tail call void asm sideeffect "", "{x9}"(i64 %x9)226  %r = call i64 @foo(ptr %p)227  %fn = inttoptr i64 %r to ptr228  musttail call swifttailcc void %fn(ptr swiftasync %src, ptr %as)229  ret void230}231 232; There are 2 available scratch registers left, shrink-wrapping can happen.233define swifttailcc void @test_async_with_jumptable_2_available_regs_left(ptr %src, ptr swiftasync %as) #0 {234; CHECK-LABEL: test_async_with_jumptable_2_available_regs_left:235; CHECK:       ; %bb.0: ; %entry236; CHECK-NEXT:    mov x20, x22237; CHECK-NEXT:    mov x22, x0238; CHECK-NEXT:    ; InlineAsm Start239; CHECK-NEXT:    ; InlineAsm End240; CHECK-NEXT:    ; InlineAsm Start241; CHECK-NEXT:    ; InlineAsm End242; CHECK-NEXT:    ; InlineAsm Start243; CHECK-NEXT:    ; InlineAsm End244; CHECK-NEXT:    ; InlineAsm Start245; CHECK-NEXT:    ; InlineAsm End246; CHECK-NEXT:    ; InlineAsm Start247; CHECK-NEXT:    ; InlineAsm End248; CHECK-NEXT:    ; InlineAsm Start249; CHECK-NEXT:    ; InlineAsm End250; CHECK-NEXT:    ; InlineAsm Start251; CHECK-NEXT:    ; InlineAsm End252; CHECK-NEXT:    ; InlineAsm Start253; CHECK-NEXT:    ; InlineAsm End254; CHECK-NEXT:    ; InlineAsm Start255; CHECK-NEXT:    ; InlineAsm End256; CHECK-NEXT:    ; InlineAsm Start257; CHECK-NEXT:    ; InlineAsm End258; CHECK-NEXT:    ; InlineAsm Start259; CHECK-NEXT:    ; InlineAsm End260; CHECK-NEXT:    ; InlineAsm Start261; CHECK-NEXT:    ; InlineAsm End262; CHECK-NEXT:    ; InlineAsm Start263; CHECK-NEXT:    ; InlineAsm End264; CHECK-NEXT:    ; InlineAsm Start265; CHECK-NEXT:    ; InlineAsm End266; CHECK-NEXT:    mov x0, x20267; CHECK-NEXT:    ldr x10, [x22]268; CHECK-NEXT:    cbnz x10, LBB4_2269; CHECK-NEXT:  ; %bb.1: ; %then.1270; CHECK-NEXT:    str xzr, [x22]271; CHECK-NEXT:    mov x0, x22272; CHECK-NEXT:  LBB4_2: ; %exit273; CHECK-NEXT:    orr x29, x29, #0x1000000000000000274; CHECK-NEXT:    sub sp, sp, #32275; CHECK-NEXT:    stp x29, x30, [sp, #16] ; 16-byte Folded Spill276; CHECK-NEXT:    add x16, sp, #8277; CHECK-NEXT:    movk x16, #49946, lsl #48278; CHECK-NEXT:    mov x17, x22279; CHECK-NEXT:    pacdb x17, x16280; CHECK-NEXT:    str x17, [sp, #8]281; CHECK-NEXT:    add x29, sp, #16282; CHECK-NEXT:    .cfi_def_cfa w29, 16283; CHECK-NEXT:    .cfi_offset w30, -8284; CHECK-NEXT:    .cfi_offset w29, -16285; CHECK-NEXT:    ; InlineAsm Start286; CHECK-NEXT:    ; InlineAsm End287; CHECK-NEXT:    ; InlineAsm Start288; CHECK-NEXT:    ; InlineAsm End289; CHECK-NEXT:    ; InlineAsm Start290; CHECK-NEXT:    ; InlineAsm End291; CHECK-NEXT:    ; InlineAsm Start292; CHECK-NEXT:    ; InlineAsm End293; CHECK-NEXT:    ; InlineAsm Start294; CHECK-NEXT:    ; InlineAsm End295; CHECK-NEXT:    ; InlineAsm Start296; CHECK-NEXT:    ; InlineAsm End297; CHECK-NEXT:    ; InlineAsm Start298; CHECK-NEXT:    ; InlineAsm End299; CHECK-NEXT:    ; InlineAsm Start300; CHECK-NEXT:    ; InlineAsm End301; CHECK-NEXT:    ; InlineAsm Start302; CHECK-NEXT:    ; InlineAsm End303; CHECK-NEXT:    ; InlineAsm Start304; CHECK-NEXT:    ; InlineAsm End305; CHECK-NEXT:    ; InlineAsm Start306; CHECK-NEXT:    ; InlineAsm End307; CHECK-NEXT:    ; InlineAsm Start308; CHECK-NEXT:    ; InlineAsm End309; CHECK-NEXT:    ; InlineAsm Start310; CHECK-NEXT:    ; InlineAsm End311; CHECK-NEXT:    ; InlineAsm Start312; CHECK-NEXT:    ; InlineAsm End313; CHECK-NEXT:    bl _foo314; CHECK-NEXT:    mov x1, x0315; CHECK-NEXT:    mov x0, x20316; CHECK-NEXT:    ldp x29, x30, [sp, #16] ; 16-byte Folded Reload317; CHECK-NEXT:    and x29, x29, #0xefffffffffffffff318; CHECK-NEXT:    add sp, sp, #32319; CHECK-NEXT:    br x1320entry:321  %x1 = tail call i64 asm "", "={x1}"()322  %x2 = tail call i64 asm "", "={x2}"()323  %x3 = tail call i64 asm "", "={x3}"()324  %x4 = tail call i64 asm "", "={x4}"()325  %x5 = tail call i64 asm "", "={x5}"()326  %x6 = tail call i64 asm "", "={x6}"()327  %x7 = tail call i64 asm "", "={x7}"()328  %x8 = tail call i64 asm "", "={x8}"()329  %x9 = tail call i64 asm "", "={x9}"()330  %x11 = tail call i64 asm "", "={x11}"()331  %x12 = tail call i64 asm "", "={x12}"()332  %x13 = tail call i64 asm "", "={x13}"()333  %x14 = tail call i64 asm "", "={x14}"()334  %x15 = tail call i64 asm "", "={x15}"()335  %l = load i64, ptr %src, align 8336  %c = icmp eq i64 %l, 0337  br i1 %c, label %then.1, label %exit338 339then.1:340  store i64 0, ptr %src341  br label %exit342 343exit:344  %p = phi ptr [ %src, %then.1 ], [ %as, %entry ]345  tail call void asm sideeffect "", "{x1}"(i64 %x1)346  tail call void asm sideeffect "", "{x2}"(i64 %x2)347  tail call void asm sideeffect "", "{x3}"(i64 %x3)348  tail call void asm sideeffect "", "{x4}"(i64 %x4)349  tail call void asm sideeffect "", "{x5}"(i64 %x5)350  tail call void asm sideeffect "", "{x6}"(i64 %x6)351  tail call void asm sideeffect "", "{x7}"(i64 %x7)352  tail call void asm sideeffect "", "{x8}"(i64 %x8)353  tail call void asm sideeffect "", "{x9}"(i64 %x9)354  tail call void asm sideeffect "", "{x11}"(i64 %x11)355  tail call void asm sideeffect "", "{x12}"(i64 %x12)356  tail call void asm sideeffect "", "{x13}"(i64 %x13)357  tail call void asm sideeffect "", "{x14}"(i64 %x14)358  tail call void asm sideeffect "", "{x15}"(i64 %x15)359  %r = call i64 @foo(ptr %p)360  %fn = inttoptr i64 %r to ptr361  musttail call swifttailcc void %fn(ptr swiftasync %src, ptr %as)362  ret void363}364 365 366; There is only 1 available scratch registers left, shrink-wrapping cannot367; happen because StoreSwiftAsyncContext needs 2 free scratch registers.368define swifttailcc void @test_async_with_jumptable_1_available_reg_left(ptr %src, ptr swiftasync %as) #0 {369; CHECK-LABEL: test_async_with_jumptable_1_available_reg_left:370; CHECK:       ; %bb.0: ; %entry371; CHECK-NEXT:    orr x29, x29, #0x1000000000000000372; CHECK-NEXT:    sub sp, sp, #32373; CHECK-NEXT:    stp x29, x30, [sp, #16] ; 16-byte Folded Spill374; CHECK-NEXT:    add x16, sp, #8375; CHECK-NEXT:    movk x16, #49946, lsl #48376; CHECK-NEXT:    mov x17, x22377; CHECK-NEXT:    pacdb x17, x16378; CHECK-NEXT:    str x17, [sp, #8]379; CHECK-NEXT:    add x29, sp, #16380; CHECK-NEXT:    .cfi_def_cfa w29, 16381; CHECK-NEXT:    .cfi_offset w30, -8382; CHECK-NEXT:    .cfi_offset w29, -16383; CHECK-NEXT:    mov x20, x22384; CHECK-NEXT:    mov x22, x0385; CHECK-NEXT:    ; InlineAsm Start386; CHECK-NEXT:    ; InlineAsm End387; CHECK-NEXT:    ; InlineAsm Start388; CHECK-NEXT:    ; InlineAsm End389; CHECK-NEXT:    ; InlineAsm Start390; CHECK-NEXT:    ; InlineAsm End391; CHECK-NEXT:    ; InlineAsm Start392; CHECK-NEXT:    ; InlineAsm End393; CHECK-NEXT:    ; InlineAsm Start394; CHECK-NEXT:    ; InlineAsm End395; CHECK-NEXT:    ; InlineAsm Start396; CHECK-NEXT:    ; InlineAsm End397; CHECK-NEXT:    ; InlineAsm Start398; CHECK-NEXT:    ; InlineAsm End399; CHECK-NEXT:    ; InlineAsm Start400; CHECK-NEXT:    ; InlineAsm End401; CHECK-NEXT:    ; InlineAsm Start402; CHECK-NEXT:    ; InlineAsm End403; CHECK-NEXT:    ; InlineAsm Start404; CHECK-NEXT:    ; InlineAsm End405; CHECK-NEXT:    ; InlineAsm Start406; CHECK-NEXT:    ; InlineAsm End407; CHECK-NEXT:    ; InlineAsm Start408; CHECK-NEXT:    ; InlineAsm End409; CHECK-NEXT:    ; InlineAsm Start410; CHECK-NEXT:    ; InlineAsm End411; CHECK-NEXT:    ; InlineAsm Start412; CHECK-NEXT:    ; InlineAsm End413; CHECK-NEXT:    ; InlineAsm Start414; CHECK-NEXT:    ; InlineAsm End415; CHECK-NEXT:    mov x0, x20416; CHECK-NEXT:    ldr x10, [x22]417; CHECK-NEXT:    cbnz x10, LBB5_2418; CHECK-NEXT:  ; %bb.1: ; %then.1419; CHECK-NEXT:    str xzr, [x22]420; CHECK-NEXT:    mov x0, x22421; CHECK-NEXT:  LBB5_2: ; %exit422; CHECK-NEXT:    ; InlineAsm Start423; CHECK-NEXT:    ; InlineAsm End424; CHECK-NEXT:    ; InlineAsm Start425; CHECK-NEXT:    ; InlineAsm End426; CHECK-NEXT:    ; InlineAsm Start427; CHECK-NEXT:    ; InlineAsm End428; CHECK-NEXT:    ; InlineAsm Start429; CHECK-NEXT:    ; InlineAsm End430; CHECK-NEXT:    ; InlineAsm Start431; CHECK-NEXT:    ; InlineAsm End432; CHECK-NEXT:    ; InlineAsm Start433; CHECK-NEXT:    ; InlineAsm End434; CHECK-NEXT:    ; InlineAsm Start435; CHECK-NEXT:    ; InlineAsm End436; CHECK-NEXT:    ; InlineAsm Start437; CHECK-NEXT:    ; InlineAsm End438; CHECK-NEXT:    ; InlineAsm Start439; CHECK-NEXT:    ; InlineAsm End440; CHECK-NEXT:    ; InlineAsm Start441; CHECK-NEXT:    ; InlineAsm End442; CHECK-NEXT:    ; InlineAsm Start443; CHECK-NEXT:    ; InlineAsm End444; CHECK-NEXT:    ; InlineAsm Start445; CHECK-NEXT:    ; InlineAsm End446; CHECK-NEXT:    ; InlineAsm Start447; CHECK-NEXT:    ; InlineAsm End448; CHECK-NEXT:    ; InlineAsm Start449; CHECK-NEXT:    ; InlineAsm End450; CHECK-NEXT:    ; InlineAsm Start451; CHECK-NEXT:    ; InlineAsm End452; CHECK-NEXT:    bl _foo453; CHECK-NEXT:    mov x1, x0454; CHECK-NEXT:    mov x0, x20455; CHECK-NEXT:    ldp x29, x30, [sp, #16] ; 16-byte Folded Reload456; CHECK-NEXT:    and x29, x29, #0xefffffffffffffff457; CHECK-NEXT:    add sp, sp, #32458; CHECK-NEXT:    br x1459entry:460  %x1 = tail call i64 asm "", "={x1}"()461  %x2 = tail call i64 asm "", "={x2}"()462  %x3 = tail call i64 asm "", "={x3}"()463  %x4 = tail call i64 asm "", "={x4}"()464  %x5 = tail call i64 asm "", "={x5}"()465  %x6 = tail call i64 asm "", "={x6}"()466  %x7 = tail call i64 asm "", "={x7}"()467  %x8 = tail call i64 asm "", "={x8}"()468  %x9 = tail call i64 asm "", "={x9}"()469  %x11 = tail call i64 asm "", "={x11}"()470  %x12 = tail call i64 asm "", "={x12}"()471  %x13 = tail call i64 asm "", "={x13}"()472  %x14 = tail call i64 asm "", "={x14}"()473  %x15 = tail call i64 asm "", "={x15}"()474  %x16 = tail call i64 asm "", "={x16}"()475  %l = load i64, ptr %src, align 8476  %c = icmp eq i64 %l, 0477  br i1 %c, label %then.1, label %exit478 479then.1:480  store i64 0, ptr %src481  br label %exit482 483exit:484  %p = phi ptr [ %src, %then.1 ], [ %as, %entry ]485  tail call void asm sideeffect "", "{x1}"(i64 %x1)486  tail call void asm sideeffect "", "{x2}"(i64 %x2)487  tail call void asm sideeffect "", "{x3}"(i64 %x3)488  tail call void asm sideeffect "", "{x4}"(i64 %x4)489  tail call void asm sideeffect "", "{x5}"(i64 %x5)490  tail call void asm sideeffect "", "{x6}"(i64 %x6)491  tail call void asm sideeffect "", "{x7}"(i64 %x7)492  tail call void asm sideeffect "", "{x8}"(i64 %x8)493  tail call void asm sideeffect "", "{x9}"(i64 %x9)494  tail call void asm sideeffect "", "{x11}"(i64 %x11)495  tail call void asm sideeffect "", "{x12}"(i64 %x12)496  tail call void asm sideeffect "", "{x13}"(i64 %x13)497  tail call void asm sideeffect "", "{x14}"(i64 %x14)498  tail call void asm sideeffect "", "{x15}"(i64 %x15)499  tail call void asm sideeffect "", "{x16}"(i64 %x16)500  %r = call i64 @foo(ptr %p)501  %fn = inttoptr i64 %r to ptr502  musttail call swifttailcc void %fn(ptr swiftasync %src, ptr %as)503  ret void504}505 506declare i64 @foo(ptr)507 508attributes #0 = { "frame-pointer"="non-leaf" }509