; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 2
; RUN: llc -mtriple aarch64-unknown-windows -swift-async-fp=never -aarch64-enable-sink-fold=true -filetype asm -o - %s | FileCheck %s

; ModuleID = '_Concurrency.ll'
source_filename = "_Concurrency.ll"
target datalayout = "e-m:w-p:64:64-i32:32-i64:64-i128:128-n32:64-S128"
target triple = "aarch64-unknown-windows-msvc19.32.31302"

%swift.context = type { ptr, ptr }

; Function Attrs: argmemonly nofree nosync nounwind willreturn
declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #0

; NOTE: we do not see the canonical windows frame setup due to the `nounwind`
; attribtue on the function.

; Function Attrs: nounwind
define hidden swifttailcc void @"$ss23withCheckedContinuation8function_xSS_yScCyxs5NeverOGXEtYalFTQ0_"(ptr nocapture readonly %0) #1 {
; CHECK-LABEL: $ss23withCheckedContinuation8function_xSS_yScCyxs5NeverOGXEtYalFTQ0_:
; CHECK:       // %bb.0: // %entryresume.0
; CHECK-NEXT:    sub sp, sp, #48
; CHECK-NEXT:    stp x30, x29, [sp, #24] // 16-byte Folded Spill
; CHECK-NEXT:    add x29, sp, #24
; CHECK-NEXT:    str x19, [sp, #40] // 8-byte Folded Spill
; CHECK-NEXT:    adrp x19, __imp_swift_task_dealloc
; CHECK-NEXT:    str xzr, [sp, #16]
; CHECK-NEXT:    ldr x8, [x0]
; CHECK-NEXT:    stur x8, [x29, #-8]
; CHECK-NEXT:    ldr x20, [x0]
; CHECK-NEXT:    ldp x22, x0, [x8, #16]
; CHECK-NEXT:    stur x20, [x29, #-8]
; CHECK-NEXT:    ldr x19, [x19, :lo12:__imp_swift_task_dealloc]
; CHECK-NEXT:    blr x19
; CHECK-NEXT:    mov x0, x22
; CHECK-NEXT:    blr x19
; CHECK-NEXT:    ldp x30, x29, [sp, #24] // 16-byte Folded Reload
; CHECK-NEXT:    mov x0, x20
; CHECK-NEXT:    ldr x1, [x20, #8]
; CHECK-NEXT:    ldr x19, [sp, #40] // 8-byte Folded Reload
; CHECK-NEXT:    add sp, sp, #48
; CHECK-NEXT:    br x1
entryresume.0:
  %1 = load ptr, ptr %0, align 8
  %2 = tail call ptr @llvm.swift.async.context.addr() #4
  store ptr %1, ptr %2, align 8
  %async.ctx.frameptr1 = getelementptr inbounds i8, ptr %1, i64 16
  %.reload.addr4 = getelementptr inbounds i8, ptr %1, i64 24
  %.reload5 = load ptr, ptr %.reload.addr4, align 8
  %.reload = load ptr, ptr %async.ctx.frameptr1, align 8
  %3 = load ptr, ptr %0, align 8
  store ptr %3, ptr %2, align 8
  tail call swiftcc void @swift_task_dealloc(ptr %.reload5) #4
  tail call void @llvm.lifetime.end.p0(i64 -1, ptr %.reload5)
  tail call swiftcc void @swift_task_dealloc(ptr %.reload) #4
  %4 = getelementptr inbounds i8, ptr %3, i64 8
  %5 = load ptr, ptr %4, align 8
  musttail call swifttailcc void %5(ptr %3) #4
  ret void
}


; Function Attrs: nounwind readnone
declare ptr @llvm.swift.async.context.addr() #2

; Function Attrs: argmemonly nounwind
declare dllimport swiftcc void @swift_task_dealloc(ptr) local_unnamed_addr #3

attributes #0 = { argmemonly nofree nosync nounwind willreturn }
attributes #1 = { nounwind "frame-pointer"="none" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="generic" "target-features"="+neon" }
attributes #2 = { nounwind readnone }
attributes #3 = { argmemonly nounwind }
attributes #4 = { nounwind }

