Run DCE after a LoopFlatten test to reduce spurious output [nfc]
[llvm-project.git] / llvm / test / CodeGen / X86 / expand-call-rvmarker.mir
blob33069fc486a4648835b91a9caece6b3d7e636dc0
1 # RUN: llc -o - -run-pass=x86-pseudo -verify-machineinstrs %s | FileCheck %s
3 --- |
4   target datalayout = "e-m:o-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
5   target triple = "x86_64-apple-macosx11.0.0"
7   declare ptr @objc_retainAutoreleasedReturnValue(ptr)
8   declare ptr @objc_unsafeClaimAutoreleasedReturnValue(ptr)
9   declare ptr @fn()
11   define void @test_objc_retainAutoreleaseReturnedValue() {
12     ret void
13   }
15   define void @test_objc_unsafeClaimAutoreleasedReturnValue() {
16     ret void
17   }
19   define void @test_objc_unsafeClaimAutoreleasedReturnValue_2_args() {
20     ret void
21   }
23   define void @test_ret_void() {
24     ret void
25   }
27 ...
28 ---
29 # CHECK-LABEL: name: test_objc_retainAutoreleaseReturnedValue
30 # CHECK:      bb.0
31 # CHECK-NEXT:   frame-setup PUSH64r undef $rax, implicit-def $rsp, implicit $rsp
32 # CHECK-NEXT:   CFI_INSTRUCTION def_cfa_offset 16
33 # CHECK-NEXT:   BUNDLE
34 # CHECK-NEXT:     CALL64pcrel32 @fn, csr_64, implicit $rsp, implicit $ssp, implicit $rsp, implicit $ssp, implicit-def $rsp, implicit-def $ssp, implicit-def $rax
35 # CHECK-NEXT:     $rdi = MOV64rr internal $rax
36 # CHECK-NEXT:     CALL64pcrel32 @objc_retainAutoreleasedReturnValue, csr_64, implicit internal $rsp, implicit internal $ssp, implicit-def $rax
37 # CHECK-NEXT:   }
38 # CHECK-NEXT:   $rcx = frame-destroy POP64r implicit-def $rsp, implicit $rsp
39 # CHECK-NEXT:   RET64
42 name:            test_objc_retainAutoreleaseReturnedValue
43 alignment:       16
44 tracksRegLiveness: true
45 frameInfo:
46   stackSize:       8
47   offsetAdjustment: -8
48   maxAlignment:    1
49   adjustsStack:    true
50   hasCalls:        true
51   maxCallFrameSize: 0
52 machineFunctionInfo: {}
53 body:             |
54   bb.0 (%ir-block.0):
55     frame-setup PUSH64r undef $rax, implicit-def $rsp, implicit $rsp
56     CFI_INSTRUCTION def_cfa_offset 16
57     CALL64pcrel32_RVMARKER @objc_retainAutoreleasedReturnValue, @fn, csr_64, implicit $rsp, implicit $ssp, implicit-def $rsp, implicit-def $ssp, implicit-def $rax
58     $rcx = frame-destroy POP64r implicit-def $rsp, implicit $rsp
59     RET 0, $rax
61 ...
62 ---
63 # CHECK-LABEL: name: test_objc_unsafeClaimAutoreleasedReturnValue
64 # CHECK:      bb.0
65 # CHECK-NEXT:   frame-setup PUSH64r undef $rax, implicit-def $rsp, implicit $rsp
66 # CHECK-NEXT:   CFI_INSTRUCTION def_cfa_offset 16
67 # CHECK-NEXT:   BUNDLE
68 # CHECK-NEXT:     CALL64pcrel32 @fn, csr_64, implicit $rsp, implicit $ssp, implicit $rsp, implicit $ssp, implicit-def $rsp, implicit-def $ssp, implicit-def $rax
69 # CHECK-NEXT:     $rdi = MOV64rr internal $rax
70 # CHECK-NEXT:     CALL64pcrel32 @objc_unsafeClaimAutoreleasedReturnValue, csr_64, implicit internal $rsp, implicit internal $ssp, implicit-def $rax
71 # CHECK-NEXT:   }
72 # CHECK-NEXT:   $rcx = frame-destroy POP64r implicit-def $rsp, implicit $rsp
73 # CHECK-NEXT:   RET64
75 name:            test_objc_unsafeClaimAutoreleasedReturnValue
76 alignment:       16
77 tracksRegLiveness: true
78 frameInfo:
79   stackSize:       8
80   offsetAdjustment: -8
81   maxAlignment:    1
82   adjustsStack:    true
83   hasCalls:        true
84   maxCallFrameSize: 0
85 machineFunctionInfo: {}
86 body:             |
87   bb.0 (%ir-block.0):
88     frame-setup PUSH64r undef $rax, implicit-def $rsp, implicit $rsp
89     CFI_INSTRUCTION def_cfa_offset 16
90     CALL64pcrel32_RVMARKER @objc_unsafeClaimAutoreleasedReturnValue, @fn, csr_64, implicit $rsp, implicit $ssp, implicit-def $rsp, implicit-def $ssp, implicit-def $rax
91     $rcx = frame-destroy POP64r implicit-def $rsp, implicit $rsp
92     RET 0, $rax
94 ...
95 ---
96 # CHECK-LABEL: name: test_objc_unsafeClaimAutoreleasedReturnValue_2_args
97 # CHECK:      bb.0
98 # CHECK:        frame-setup PUSH64r undef $rax, implicit-def $rsp, implicit $rsp
99 # CHECK-NEXT:   $rax = MOV64rr $rdi
100 # CHECK-NEXT:   $rdi = MOV64rr killed $rdx
101 # CHECK-NEXT:   $rdx = MOV64rr killed $rax
102 # CHECK-NEXT:   BUNDLE
103 # CHECK-NEXT:     CALL64pcrel32 @fn, csr_64, implicit $rsp, implicit $ssp, implicit $rsp, implicit $ssp, implicit $rdi, implicit $rsi, implicit $rdx, implicit-def $rsp, implicit-def $ssp, implicit-def $rax
104 # CHECK-NEXT:     $rdi = MOV64rr internal $rax
105 # CHECK-NEXT:     CALL64pcrel32 @objc_retainAutoreleasedReturnValue, csr_64, implicit internal $rsp, implicit internal $ssp, implicit-def dead $rax
106 # CHECK-NEXT:  }
107 # CHECK-NEXT:   $rax = frame-destroy POP64r implicit-def $rsp, implicit $rsp
108 # CHECK-NEXT:   RET64
110 name:            test_objc_unsafeClaimAutoreleasedReturnValue_2_args
111 alignment:       16
112 tracksRegLiveness: true
113 frameInfo:
114   stackSize:       8
115   offsetAdjustment: -8
116   maxAlignment:    1
117   adjustsStack:    true
118   hasCalls:        true
119   maxCallFrameSize: 0
120 machineFunctionInfo: {}
121 body:             |
122   bb.0 (%ir-block.0):
123     liveins: $rdi, $rdx, $rsi
125     frame-setup PUSH64r undef $rax, implicit-def $rsp, implicit $rsp
126     $rax = MOV64rr $rdi
127     $rdi = MOV64rr killed $rdx
128     $rdx = MOV64rr killed $rax
129     CALL64pcrel32_RVMARKER @objc_retainAutoreleasedReturnValue, @fn, csr_64, implicit $rsp, implicit $ssp, implicit $rdi, implicit $rsi, implicit $rdx, implicit-def $rsp, implicit-def $ssp, implicit-def dead $rax
130     $rax = frame-destroy POP64r implicit-def $rsp, implicit $rsp
131     RET 0, $rax
134 # CHECK-LABEL: name: test_ret_void
135 # CHECK:      bb.0
136 # CHECK-NEXT:   frame-setup PUSH64r undef $rax, implicit-def $rsp, implicit $rsp
137 # CHECK-NEXT:   CFI_INSTRUCTION def_cfa_offset 16
138 # CHECK-NEXT:   BUNDLE
139 # CHECK-NEXT:     CALL64pcrel32 @fn, csr_64, implicit $rsp, implicit $ssp, implicit $rsp, implicit $ssp, implicit-def $rsp, implicit-def $ssp, implicit-def $rax
140 # CHECK-NEXT:     $rdi = MOV64rr internal $rax
141 # CHECK-NEXT:     CALL64pcrel32 @objc_retainAutoreleasedReturnValue, csr_64, implicit internal $rsp, implicit internal $ssp, implicit-def dead $rax
142 # CHECK-NEXT:  }
143 # CHECK-NEXT:   $rax = frame-destroy POP64r implicit-def $rsp, implicit $rsp
144 # CHECK-NEXT:   RET64
146 name:            test_ret_void
147 alignment:       16
148 tracksRegLiveness: true
149 frameInfo:
150   stackSize:       8
151   offsetAdjustment: -8
152   maxAlignment:    1
153   adjustsStack:    true
154   hasCalls:        true
155   maxCallFrameSize: 0
156 machineFunctionInfo: {}
157 body:             |
158   bb.0 (%ir-block.0):
159     frame-setup PUSH64r undef $rax, implicit-def $rsp, implicit $rsp
160     CFI_INSTRUCTION def_cfa_offset 16
161     CALL64pcrel32_RVMARKER @objc_retainAutoreleasedReturnValue, @fn, csr_64, implicit $rsp, implicit $ssp, implicit-def $rsp, implicit-def $ssp, implicit-def dead $rax
162     $rax = frame-destroy POP64r implicit-def $rsp, implicit $rsp
163     RET 0