xref: /llvm-project/compiler-rt/test/orc/TestCases/Darwin/arm64/trivial-objc-methods.S (revision 22267f6f8c183653ff81c62d7d0b0abb4a6eeeef)
1// RUN: %clang -c -o %t %s
2// RUN: %llvm_jitlink -preload libobjc.A.dylib %t
3//
4// REQUIRES: jit-compatible-osx-swift-runtime
5//
6// Test that Objective-C class and instance methods work.
7
8	.section	__TEXT,__text,regular,pure_instructions
9	.build_version macos, 12, 0	sdk_version 12, 0
10	.p2align	2                               ; -- Begin function +[ZeroGen classZero]
11"+[ZeroGen classZero]":                 ; @"\01+[ZeroGen classZero]"
12	.cfi_startproc
13; %bb.0:
14	sub	sp, sp, #16                     ; =16
15	.cfi_def_cfa_offset 16
16	str	x0, [sp, #8]
17	str	x1, [sp]
18	mov	w0, #0
19	add	sp, sp, #16                     ; =16
20	ret
21	.cfi_endproc
22                                        ; -- End function
23	.p2align	2                               ; -- Begin function -[ZeroGen objZero]
24"-[ZeroGen objZero]":                   ; @"\01-[ZeroGen objZero]"
25	.cfi_startproc
26; %bb.0:
27	sub	sp, sp, #16                     ; =16
28	.cfi_def_cfa_offset 16
29	str	x0, [sp, #8]
30	str	x1, [sp]
31	mov	w0, #0
32	add	sp, sp, #16                     ; =16
33	ret
34	.cfi_endproc
35                                        ; -- End function
36	.globl	_main                           ; -- Begin function main
37	.p2align	2
38_main:                                  ; @main
39	.cfi_startproc
40; %bb.0:
41	sub	sp, sp, #48                     ; =48
42	stp	x29, x30, [sp, #32]             ; 16-byte Folded Spill
43	add	x29, sp, #32                    ; =32
44	.cfi_def_cfa w29, 16
45	.cfi_offset w30, -8
46	.cfi_offset w29, -16
47	stur	wzr, [x29, #-4]
48	adrp	x8, _OBJC_CLASSLIST_REFERENCES_$_@PAGE
49	str	x8, [sp, #8]                    ; 8-byte Folded Spill
50	ldr	x0, [x8, _OBJC_CLASSLIST_REFERENCES_$_@PAGEOFF]
51	bl	_objc_alloc_init
52	ldr	x8, [sp, #8]                    ; 8-byte Folded Reload
53	str	x0, [sp, #16]
54	ldr	x0, [x8, _OBJC_CLASSLIST_REFERENCES_$_@PAGEOFF]
55	adrp	x8, _OBJC_SELECTOR_REFERENCES_@PAGE
56	ldr	x1, [x8, _OBJC_SELECTOR_REFERENCES_@PAGEOFF]
57	bl	_objc_msgSend
58	cbz	w0, LBB2_2
59; %bb.1:
60	mov	w8, #1
61	stur	w8, [x29, #-4]
62	b	LBB2_5
63LBB2_2:
64	ldr	x0, [sp, #16]
65	adrp	x8, _OBJC_SELECTOR_REFERENCES_.2@PAGE
66	ldr	x1, [x8, _OBJC_SELECTOR_REFERENCES_.2@PAGEOFF]
67	bl	_objc_msgSend
68	cbz	w0, LBB2_4
69; %bb.3:
70	mov	w8, #1
71	stur	w8, [x29, #-4]
72	b	LBB2_5
73LBB2_4:
74	stur	wzr, [x29, #-4]
75LBB2_5:
76	ldur	w0, [x29, #-4]
77	ldp	x29, x30, [sp, #32]             ; 16-byte Folded Reload
78	add	sp, sp, #48                     ; =48
79	ret
80	.cfi_endproc
81                                        ; -- End function
82	.section	__TEXT,__objc_classname,cstring_literals
83l_OBJC_CLASS_NAME_:                     ; @OBJC_CLASS_NAME_
84	.asciz	"ZeroGen"
85
86	.section	__TEXT,__objc_methname,cstring_literals
87l_OBJC_METH_VAR_NAME_:                  ; @OBJC_METH_VAR_NAME_
88	.asciz	"classZero"
89
90	.section	__TEXT,__objc_methtype,cstring_literals
91l_OBJC_METH_VAR_TYPE_:                  ; @OBJC_METH_VAR_TYPE_
92	.asciz	"i16@0:8"
93
94	.section	__DATA,__objc_const
95	.p2align	3                               ; @"_OBJC_$_CLASS_METHODS_ZeroGen"
96__OBJC_$_CLASS_METHODS_ZeroGen:
97	.long	24                              ; 0x18
98	.long	1                               ; 0x1
99	.quad	l_OBJC_METH_VAR_NAME_
100	.quad	l_OBJC_METH_VAR_TYPE_
101	.quad	"+[ZeroGen classZero]"
102
103	.p2align	3                               ; @"_OBJC_METACLASS_RO_$_ZeroGen"
104__OBJC_METACLASS_RO_$_ZeroGen:
105	.long	1                               ; 0x1
106	.long	40                              ; 0x28
107	.long	40                              ; 0x28
108	.space	4
109	.quad	0
110	.quad	l_OBJC_CLASS_NAME_
111	.quad	__OBJC_$_CLASS_METHODS_ZeroGen
112	.quad	0
113	.quad	0
114	.quad	0
115	.quad	0
116
117	.section	__DATA,__objc_data
118	.globl	_OBJC_METACLASS_$_ZeroGen       ; @"OBJC_METACLASS_$_ZeroGen"
119	.p2align	3
120_OBJC_METACLASS_$_ZeroGen:
121	.quad	_OBJC_METACLASS_$_NSObject
122	.quad	_OBJC_METACLASS_$_NSObject
123	.quad	__objc_empty_cache
124	.quad	0
125	.quad	__OBJC_METACLASS_RO_$_ZeroGen
126
127	.section	__TEXT,__objc_methname,cstring_literals
128l_OBJC_METH_VAR_NAME_.1:                ; @OBJC_METH_VAR_NAME_.1
129	.asciz	"objZero"
130
131	.section	__DATA,__objc_const
132	.p2align	3                               ; @"_OBJC_$_INSTANCE_METHODS_ZeroGen"
133__OBJC_$_INSTANCE_METHODS_ZeroGen:
134	.long	24                              ; 0x18
135	.long	1                               ; 0x1
136	.quad	l_OBJC_METH_VAR_NAME_.1
137	.quad	l_OBJC_METH_VAR_TYPE_
138	.quad	"-[ZeroGen objZero]"
139
140	.p2align	3                               ; @"_OBJC_CLASS_RO_$_ZeroGen"
141__OBJC_CLASS_RO_$_ZeroGen:
142	.long	0                               ; 0x0
143	.long	8                               ; 0x8
144	.long	8                               ; 0x8
145	.space	4
146	.quad	0
147	.quad	l_OBJC_CLASS_NAME_
148	.quad	__OBJC_$_INSTANCE_METHODS_ZeroGen
149	.quad	0
150	.quad	0
151	.quad	0
152	.quad	0
153
154	.section	__DATA,__objc_data
155	.globl	_OBJC_CLASS_$_ZeroGen           ; @"OBJC_CLASS_$_ZeroGen"
156	.p2align	3
157_OBJC_CLASS_$_ZeroGen:
158	.quad	_OBJC_METACLASS_$_ZeroGen
159	.quad	_OBJC_CLASS_$_NSObject
160	.quad	__objc_empty_cache
161	.quad	0
162	.quad	__OBJC_CLASS_RO_$_ZeroGen
163
164	.section	__DATA,__objc_classrefs,regular,no_dead_strip
165	.p2align	3                               ; @"OBJC_CLASSLIST_REFERENCES_$_"
166_OBJC_CLASSLIST_REFERENCES_$_:
167	.quad	_OBJC_CLASS_$_ZeroGen
168
169	.section	__DATA,__objc_selrefs,literal_pointers,no_dead_strip
170	.p2align	3                               ; @OBJC_SELECTOR_REFERENCES_
171_OBJC_SELECTOR_REFERENCES_:
172	.quad	l_OBJC_METH_VAR_NAME_
173
174	.p2align	3                               ; @OBJC_SELECTOR_REFERENCES_.2
175_OBJC_SELECTOR_REFERENCES_.2:
176	.quad	l_OBJC_METH_VAR_NAME_.1
177
178	.section	__DATA,__objc_classlist,regular,no_dead_strip
179	.p2align	3                               ; @"OBJC_LABEL_CLASS_$"
180l_OBJC_LABEL_CLASS_$:
181	.quad	_OBJC_CLASS_$_ZeroGen
182
183	.section	__DATA,__objc_imageinfo,regular,no_dead_strip
184L_OBJC_IMAGE_INFO:
185	.long	0
186	.long	64
187
188.subsections_via_symbols
189