Revert " [LoongArch][ISel] Check the number of sign bits in `PatGprGpr_32` (#107432)"
[llvm-project.git] / llvm / test / CodeGen / X86 / swift-async.ll
blob0017d2af858784058f1ddf20eed828de561a8c9a
1 ; RUN: llc -mtriple=x86_64-apple-macosx12.0 %s -o - | FileCheck %s
2 ; RUN: llc -mtriple=i686-apple-darwin %s -o - | FileCheck %s --check-prefix=CHECK-32
5 define void @simple(ptr swiftasync %ctx) "frame-pointer"="all" {
6 ; CHECK-LABEL: simple:
7 ; CHECK: btsq    $60, %rbp
8 ; CHECK: pushq   %rbp
9 ; CHECK: pushq   %r14
10 ; CHECK: leaq    8(%rsp), %rbp
11 ; CHECK: pushq
12 ; [...]
14 ; CHECK: addq    $16, %rsp
15 ; CHECK: popq    %rbp
16 ; CHECK: btrq    $60, %rbp
17 ; CHECK: retq
19 ; CHECK-32-LABEL: simple:
20 ; CHECK-32: movl 8(%ebp), [[TMP:%.*]]
21 ; CHECK-32: movl [[TMP]], {{.*}}(%ebp)
23   ret void
26 define void @more_csrs(ptr swiftasync %ctx) "frame-pointer"="all" {
27 ; CHECK-LABEL: more_csrs:
28 ; CHECK: btsq    $60, %rbp
29 ; CHECK: pushq   %rbp
30 ; CHECK: .cfi_offset %rbp, -16
31 ; CHECK: pushq   %r14
32 ; CHECK: leaq    8(%rsp), %rbp
33 ; CHECK: subq    $8, %rsp
34 ; CHECK: pushq   %r15
35 ; CHECK: .cfi_offset %r15, -40
37 ; [...]
39 ; CHECK: popq    %r15
40 ; CHECK: addq    $16, %rsp
41 ; CHECK: popq    %rbp
42 ; CHECK: btrq    $60, %rbp
43 ; CHECK: retq
44   call void asm sideeffect "", "~{r15}"()
45   ret void
48 define void @locals(ptr swiftasync %ctx) "frame-pointer"="all" {
49 ; CHECK-LABEL: locals:
50 ; CHECK: btsq    $60, %rbp
51 ; CHECK: pushq   %rbp
52 ; CHECK: .cfi_def_cfa_offset 16
53 ; CHECK: .cfi_offset %rbp, -16
54 ; CHECK: pushq   %r14
55 ; CHECK: leaq    8(%rsp), %rbp
56 ; CHECK: .cfi_def_cfa_register %rbp
57 ; CHECK: subq    $56, %rsp
59 ; CHECK: leaq    -48(%rbp), %rdi
60 ; CHECK: callq   _bar
62 ; CHECK: addq    $48, %rsp
63 ; CHECK: addq    $16, %rsp
64 ; CHECK: popq    %rbp
65 ; CHECK: btrq    $60, %rbp
66 ; CHECK: retq
68   %var = alloca i32, i32 10
69   call void @bar(ptr %var)
70   ret void
73 define void @use_input_context(ptr swiftasync %ctx, ptr %ptr) "frame-pointer"="all" {
74 ; CHECK-LABEL: use_input_context:
75 ; CHECK: movq    %r14, (%rdi)
77   store ptr %ctx, ptr %ptr
78   ret void
81 define ptr @context_in_func() "frame-pointer"="non-leaf" {
82 ; CHECK-LABEL: context_in_func:
83 ; CHECK: leaq    -8(%rbp), %rax
85 ; CHECK-32-LABEL: context_in_func
86 ; CHECK-32: movl %esp, %eax
88   %ptr = call ptr @llvm.swift.async.context.addr()
89   ret ptr %ptr
92 define 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]])
98   %ptr = call ptr @llvm.swift.async.context.addr()
99   store ptr %newctx, ptr %ptr
100   ret void
103 define void @simple_fp_elim(ptr swiftasync %ctx) "frame-pointer"="non-leaf" {
104 ; CHECK-LABEL: simple_fp_elim:
105 ; CHECK-NOT: btsq
107   ret void
110 declare void @bar(ptr)
111 declare ptr @llvm.swift.async.context.addr()