112 lines · plain
1; RUN: llc -mtriple=x86_64-apple-macosx12.0 %s -o - | FileCheck %s2; RUN: llc -mtriple=i686-apple-darwin %s -o - | FileCheck %s --check-prefix=CHECK-323 4 5define void @simple(ptr swiftasync %ctx) "frame-pointer"="all" {6; CHECK-LABEL: simple:7; CHECK: btsq $60, %rbp8; CHECK: pushq %rbp9; CHECK: pushq %r1410; CHECK: leaq 8(%rsp), %rbp11; CHECK: pushq12; [...]13 14; CHECK: addq $16, %rsp15; CHECK: popq %rbp16; CHECK: btrq $60, %rbp17; CHECK: retq18 19; CHECK-32-LABEL: simple:20; CHECK-32: movl 8(%ebp), [[TMP:%.*]]21; CHECK-32: movl [[TMP]], {{.*}}(%ebp)22 23 ret void24}25 26define void @more_csrs(ptr swiftasync %ctx) "frame-pointer"="all" {27; CHECK-LABEL: more_csrs:28; CHECK: btsq $60, %rbp29; CHECK: pushq %rbp30; CHECK: .cfi_offset %rbp, -1631; CHECK: pushq %r1432; CHECK: leaq 8(%rsp), %rbp33; CHECK: subq $8, %rsp34; CHECK: pushq %r1535; CHECK: .cfi_offset %r15, -4036 37; [...]38 39; CHECK: popq %r1540; CHECK: addq $16, %rsp41; CHECK: popq %rbp42; CHECK: btrq $60, %rbp43; CHECK: retq44 call void asm sideeffect "", "~{r15}"()45 ret void46}47 48define void @locals(ptr swiftasync %ctx) "frame-pointer"="all" {49; CHECK-LABEL: locals:50; CHECK: btsq $60, %rbp51; CHECK: pushq %rbp52; CHECK: .cfi_def_cfa_offset 1653; CHECK: .cfi_offset %rbp, -1654; CHECK: pushq %r1455; CHECK: leaq 8(%rsp), %rbp56; CHECK: .cfi_def_cfa_register %rbp57; CHECK: subq $56, %rsp58 59; CHECK: leaq -48(%rbp), %rdi60; CHECK: callq _bar61 62; CHECK: addq $48, %rsp63; CHECK: addq $16, %rsp64; CHECK: popq %rbp65; CHECK: btrq $60, %rbp66; CHECK: retq67 68 %var = alloca i32, i32 1069 call void @bar(ptr %var)70 ret void71}72 73define void @use_input_context(ptr swiftasync %ctx, ptr %ptr) "frame-pointer"="all" {74; CHECK-LABEL: use_input_context:75; CHECK: movq %r14, (%rdi)76 77 store ptr %ctx, ptr %ptr78 ret void79}80 81define ptr @context_in_func() "frame-pointer"="non-leaf" {82; CHECK-LABEL: context_in_func:83; CHECK: leaq -8(%rbp), %rax84 85; CHECK-32-LABEL: context_in_func86; CHECK-32: movl %esp, %eax87 88 %ptr = call ptr @llvm.swift.async.context.addr()89 ret ptr %ptr90}91 92define void @write_frame_context(ptr swiftasync %ctx, ptr %newctx) "frame-pointer"="non-leaf" {93; CHECK-LABEL: write_frame_context:94; CHECK: movq %rbp, [[TMP:%.*]]95; CHECK: subq $8, [[TMP]]96; CHECK: movq %rdi, ([[TMP]])97 98 %ptr = call ptr @llvm.swift.async.context.addr()99 store ptr %newctx, ptr %ptr100 ret void101}102 103define void @simple_fp_elim(ptr swiftasync %ctx) "frame-pointer"="non-leaf" {104; CHECK-LABEL: simple_fp_elim:105; CHECK-NOT: btsq106 107 ret void108}109 110declare void @bar(ptr)111declare ptr @llvm.swift.async.context.addr()112