64 lines · plain
1; RUN: llc -mtriple arm64-apple-ios -filetype asm -o - %s -swift-async-fp always | FileCheck %s -check-prefix CHECK-IOS-ALWAYS2; RUN: llc -mtriple arm64-apple-ios -filetype asm -o - %s -swift-async-fp never | FileCheck %s -check-prefix CHECK-IOS-NEVER3; RUN: llc -mtriple arm64-apple-ios -filetype asm -o - %s -swift-async-fp auto | FileCheck %s -check-prefix CHECK-IOS-AUTO4; RUN: llc -mtriple arm64_32-apple-watchos -filetype asm -o - %s -swift-async-fp always | FileCheck %s -check-prefix CHECK-WATCHOS-ALWAYS5; RUN: llc -mtriple arm64_32-apple-watchos -filetype asm -o - %s -swift-async-fp never | FileCheck %s -check-prefix CHECK-WATCHOS-NEVER6; RUN: llc -mtriple arm64_32-apple-watchos -filetype asm -o - %s -swift-async-fp auto | FileCheck %s -check-prefix CHECK-WATCHOS-AUTO7 8declare ptr @llvm.swift.async.context.addr()9 10define swifttailcc void @f(ptr swiftasync %ctx) {11 %1 = load ptr, ptr %ctx, align 812 %2 = tail call ptr @llvm.swift.async.context.addr()13 store ptr %1, ptr %2, align 814 ret void15}16 17; CHECK-IOS-NEVER: sub sp, sp, #3218; CHECK-IOS-NEVER: stp x29, x30, [sp, #16]19; ...20; CHECK-IOS-NEVER: ldp x29, x30, [sp, #16]21; CHECK-IOS-NEVER: add sp, sp, #3222 23; CHECK-IOS-ALWAYS: orr x29, x29, #0x100000000000000024; CHECK-IOS-ALWAYS: sub sp, sp, #3225; CHECK-IOS-ALWAYS: stp x29, x30, [sp, #16]26; ...27; CHECK-IOS-ALWAYS: ldp x29, x30, [sp, #16]28; CHECK-IOS-ALWAYS: and x29, x29, #0xefffffffffffffff29; CHECK-IOS-ALWAYS: add sp, sp, #3230 31; CHECK-IOS-AUTO: adrp x16, _swift_async_extendedFramePointerFlags@GOTPAGE32; CHECK-IOS-AUTO: ldr x16, [x16, _swift_async_extendedFramePointerFlags@GOTPAGEOFF]33; CHECK-IOS-AUTO: orr x29, x29, x1634; CHECK-IOS-AUTO: sub sp, sp, #3235; CHECK-IOS-AUTO: stp x29, x30, [sp, #16]36; ...37; CHECK-IOS-AUTO: ldp x29, x30, [sp, #16]38; CHECK-IOS-AUTO: and x29, x29, #0xefffffffffffffff39; CHECK-IOS-AUTO: add sp, sp, #3240 41; CHECK-WATCHOS-NEVER: sub sp, sp, #3242; CHECK-WATCHOS-NEVER: stp x29, x30, [sp, #16]43; ...44; CHECK-WATCHOS-NEVER: ldp x29, x30, [sp, #16]45; CHECK-WATCHOS-NEVER: add sp, sp, #3246 47; CHECK-WATCHOS-ALWAYS: orr x29, x29, #0x100000000000000048; CHECK-WATCHOS-ALWAYS: sub sp, sp, #3249; CHECK-WATCHOS-ALWAYS: stp x29, x30, [sp, #16]50; ...51; CHECK-WATCHOS-ALWAYS: ldp x29, x30, [sp, #16]52; CHECK-WATCHOS-ALWAYS: and x29, x29, #0xefffffffffffffff53; CHECK-WATCHOS-ALWAYS: add sp, sp, #3254 55; CHECK-WATCHOS-AUTO: adrp x16, _swift_async_extendedFramePointerFlags@GOTPAGE56; CHECK-WATCHOS-AUTO: ldr w16, [x16, _swift_async_extendedFramePointerFlags@GOTPAGEOFF]57; CHECK-WATCHOS-AUTO: orr x29, x29, x16, lsl #3258; CHECK-WATCHOS-AUTO: sub sp, sp, #3259; CHECK-WATCHOS-AUTO: stp x29, x30, [sp, #16]60; ...61; CHECK-WATCHOS-AUTO: ldp x29, x30, [sp, #16]62; CHECK-WATCHOS-AUTO: and x29, x29, #0xefffffffffffffff63; CHECK-WATCHOS-AUTO: add sp, sp, #3264