2
2
; RUN: llc -O1 < %s | FileCheck %s --check-prefixes=CHECK,CHECK-OPT,DEFCM
3
3
; RUN: llc -O2 < %s | FileCheck %s --check-prefixes=CHECK,CHECK-OPT,DEFCM
4
4
; RUN: llc -O3 < %s | FileCheck %s --check-prefixes=CHECK,CHECK-OPT,DEFCM
5
- ; RUN: llc -O1 -code-model=large < %s | FileCheck %s --check-prefixes=CHECK,CHECK-OPT, LARGE
5
+ ; RUN: llc -O1 -code-model=large < %s | FileCheck %s --check-prefixes=CHECK,LARGE
6
6
7
7
target triple = "aarch64-unknown-linux-gnu"
8
8
@@ -14,41 +14,108 @@ define i64 @multiple() !pcsections !0 {
14
14
; CHECK: .Lfunc_begin0:
15
15
; CHECK: // %bb.0: // %entry
16
16
; CHECK: .Lpcsection0:
17
+ ; --
18
+ ; LARGE-NEXT: movz
19
+ ; LARGE: .Lpcsection1:
20
+ ; LARGE-NEXT: movk
21
+ ; LARGE: .Lpcsection2:
22
+ ; LARGE-NEXT: movk
23
+ ; LARGE: .Lpcsection3:
24
+ ; LARGE-NEXT: movk
25
+ ; LARGE: .Lpcsection4:
26
+ ; --
17
27
; CHECK-NEXT: ldr
18
28
; CHECK-NEXT: ret
19
29
; CHECK: .section section_no_aux,"awo",@progbits,.text
20
- ; CHECK-NEXT: .Lpcsection_base0:
30
+ ; --
31
+ ; DEFCM-NEXT: .Lpcsection_base0:
21
32
; DEFCM-NEXT: .word .Lfunc_begin0-.Lpcsection_base0
22
- ; LARGE-NEXT: .xword .Lfunc_begin0-.Lpcsection_base0
23
- ; CHECK-NEXT: .word .Lfunc_end0-.Lfunc_begin0
24
- ; CHECK-NEXT: .section section_aux_42,"awo",@progbits,.text
25
- ; CHECK-NEXT: .Lpcsection_base1:
33
+ ; DEFCM-NEXT: .word .Lfunc_end0-.Lfunc_begin0
34
+ ; DEFCM-NEXT: .section section_aux_42,"awo",@progbits,.text
35
+ ; DEFCM-NEXT: .Lpcsection_base1:
26
36
; DEFCM-NEXT: .word .Lpcsection0-.Lpcsection_base1
27
- ; LARGE-NEXT: .xword .Lpcsection0-.Lpcsection_base1
28
- ; CHECK-NEXT: .word 42
29
- ; CHECK-NEXT: .section section_aux_21264,"awo",@progbits,.text
30
- ; CHECK-NEXT: .Lpcsection_base2:
37
+ ; DEFCM-NEXT: .word 42
38
+ ; DEFCM-NEXT: .section section_aux_21264,"awo",@progbits,.text
39
+ ; DEFCM-NEXT: .Lpcsection_base2:
31
40
; DEFCM-NEXT: .word .Lpcsection0-.Lpcsection_base2
32
- ; LARGE-NEXT: .xword .Lpcsection0-.Lpcsection_base2
33
- ; CHECK-NEXT: .word 21264
34
- ; CHECK-NEXT: .text
41
+ ; DEFCM-NEXT: .word 21264
42
+ ; --
43
+ ; LARGE-NEXT: .Lpcsection_base0:
44
+ ; LARGE-NEXT: .xword .Lfunc_begin0-.Lpcsection_base0
45
+ ; LARGE-NEXT: .word .Lfunc_end0-.Lfunc_begin0
46
+ ; LARGE-NEXT: .section section_aux_42,"awo",@progbits,.text
47
+ ; LARGE-NEXT: .Lpcsection_base1:
48
+ ; LARGE-NEXT: .xword .Lpcsection0-.Lpcsection_base1
49
+ ; LARGE-NEXT: .Lpcsection_base2:
50
+ ; LARGE-NEXT: .xword .Lpcsection1-.Lpcsection_base2
51
+ ; LARGE-NEXT: .Lpcsection_base3:
52
+ ; LARGE-NEXT: .xword .Lpcsection2-.Lpcsection_base3
53
+ ; LARGE-NEXT: .Lpcsection_base4:
54
+ ; LARGE-NEXT: .xword .Lpcsection3-.Lpcsection_base4
55
+ ; LARGE-NEXT: .Lpcsection_base5:
56
+ ; LARGE-NEXT: .xword .Lpcsection4-.Lpcsection_base5
57
+ ; LARGE-NEXT: .word 42
58
+ ; LARGE-NEXT: .section section_aux_21264,"awo",@progbits,.text
59
+ ; LARGE-NEXT: .Lpcsection_base6:
60
+ ; LARGE-NEXT: .xword .Lpcsection0-.Lpcsection_base6
61
+ ; LARGE-NEXT: .Lpcsection_base7:
62
+ ; LARGE-NEXT: .xword .Lpcsection1-.Lpcsection_base7
63
+ ; LARGE-NEXT: .Lpcsection_base8:
64
+ ; LARGE-NEXT: .xword .Lpcsection2-.Lpcsection_base8
65
+ ; LARGE-NEXT: .Lpcsection_base9:
66
+ ; LARGE-NEXT: .xword .Lpcsection3-.Lpcsection_base9
67
+ ; LARGE-NEXT: .Lpcsection_base10:
68
+ ; LARGE-NEXT: .xword .Lpcsection4-.Lpcsection_base10
69
+ ; LARGE-NEXT: .word 21264
70
+ ; --
71
+ ; CHECK-NEXT: .text
35
72
entry:
36
73
%0 = load i64 , ptr @bar , align 8 , !pcsections !1
37
74
ret i64 %0
38
75
}
39
76
40
77
define i64 @test_simple_atomic () {
41
78
; CHECK-LABEL: test_simple_atomic:
42
- ; CHECK: .Lpcsection1:
43
- ; CHECK-NEXT: ldr
44
- ; CHECK-NOT: .Lpcsection2
45
- ; CHECK: ldr
79
+ ; --
80
+ ; DEFCM: .Lpcsection1:
81
+ ; DEFCM-NEXT: ldr
82
+ ; DEFCM-NOT: .Lpcsection2
83
+ ; DEFCM: ldr
84
+ ; --
85
+ ; LARGE: .Lpcsection5:
86
+ ; LARGE-NEXT: movz
87
+ ; LARGE-NEXT: movz
88
+ ; LARGE: .Lpcsection6:
89
+ ; LARGE-NEXT: movk
90
+ ; LARGE-NEXT: movk
91
+ ; LARGE: .Lpcsection7:
92
+ ; LARGE-NEXT: movk
93
+ ; LARGE-NEXT: movk
94
+ ; LARGE: .Lpcsection8:
95
+ ; LARGE-NEXT: movk
96
+ ; LARGE-NEXT: movk
97
+ ; LARGE: .Lpcsection9:
98
+ ; LARGE-NEXT: ldr
99
+ ; LARGE-NEXT: ldr
100
+ ; --
46
101
; CHECK: add
47
102
; CHECK-NEXT: ret
48
103
; CHECK: .section section_no_aux,"awo",@progbits,.text
49
- ; CHECK-NEXT: .Lpcsection_base3:
104
+ ; --
105
+ ; DEFCM-NEXT: .Lpcsection_base3:
50
106
; DEFCM-NEXT: .word .Lpcsection1-.Lpcsection_base3
51
- ; LARGE-NEXT: .xword .Lpcsection1-.Lpcsection_base3
107
+ ; --
108
+ ; LARGE-NEXT: .Lpcsection_base11:
109
+ ; LARGE-NEXT: .xword .Lpcsection5-.Lpcsection_base11
110
+ ; LARGE-NEXT: .Lpcsection_base12:
111
+ ; LARGE-NEXT: .xword .Lpcsection6-.Lpcsection_base12
112
+ ; LARGE-NEXT: .Lpcsection_base13:
113
+ ; LARGE-NEXT: .xword .Lpcsection7-.Lpcsection_base13
114
+ ; LARGE-NEXT: .Lpcsection_base14:
115
+ ; LARGE-NEXT: .xword .Lpcsection8-.Lpcsection_base14
116
+ ; LARGE-NEXT: .Lpcsection_base15:
117
+ ; LARGE-NEXT: .xword .Lpcsection9-.Lpcsection_base15
118
+ ; --
52
119
; CHECK-NEXT: .text
53
120
entry:
54
121
%0 = load atomic i64 , ptr @foo monotonic , align 8 , !pcsections !0
@@ -84,23 +151,78 @@ define i64 @test_complex_atomic() {
84
151
; CHECK-UNOPT: .Lpcsection13:
85
152
; CHECK-UNOPT-NEXT: b
86
153
; ---
154
+ ; LARGE: .Lpcsection10:
155
+ ; LARGE-NEXT: movz
156
+ ; LARGE-NEXT: .Lpcsection11:
157
+ ; LARGE-NEXT: movk
158
+ ; LARGE-NEXT: .Lpcsection12:
159
+ ; LARGE-NEXT: movk
160
+ ; LARGE-NEXT: .Lpcsection13:
161
+ ; LARGE-NEXT: movk
162
+ ; LARGE: .Lpcsection14:
163
+ ; LARGE-NEXT: ldxr
164
+ ; LARGE-NEXT: .Lpcsection15:
165
+ ; LARGE-NEXT: add
166
+ ; LARGE-NEXT: .Lpcsection16:
167
+ ; LARGE-NEXT: stxr
168
+ ; LARGE-NEXT: .Lpcsection17:
169
+ ; LARGE-NEXT: cbnz
170
+ ; ---
87
171
; CHECK-NOT: .Lpcsection
88
172
; CHECK: ldr
89
173
; CHECK: ret
90
174
; CHECK: .section section_no_aux,"awo",@progbits,.text
91
- ; CHECK-NEXT: .Lpcsection_base4:
92
- ; DEFCM-NEXT: .word .Lpcsection2-.Lpcsection_base4
93
- ; LARGE-NEXT: .xword .Lpcsection2-.Lpcsection_base4
94
- ; CHECK-NEXT: .Lpcsection_base5:
95
- ; DEFCM-NEXT: .word .Lpcsection3-.Lpcsection_base5
96
- ; LARGE-NEXT: .xword .Lpcsection3-.Lpcsection_base5
97
- ; CHECK-NEXT: .Lpcsection_base6:
98
- ; DEFCM-NEXT: .word .Lpcsection4-.Lpcsection_base6
99
- ; LARGE-NEXT: .xword .Lpcsection4-.Lpcsection_base6
100
- ; CHECK-NEXT: .Lpcsection_base7:
101
- ; DEFCM-NEXT: .word .Lpcsection5-.Lpcsection_base7
102
- ; LARGE-NEXT: .xword .Lpcsection5-.Lpcsection_base7
103
- ; CHECK-UNOPT: .word .Lpcsection13-.Lpcsection_base15
175
+ ; ---
176
+ ; CHECK-OPT-NEXT: .Lpcsection_base4:
177
+ ; CHECK-OPT-NEXT: .word .Lpcsection2-.Lpcsection_base4
178
+ ; CHECK-OPT-NEXT: .Lpcsection_base5:
179
+ ; CHECK-OPT-NEXT: .word .Lpcsection3-.Lpcsection_base5
180
+ ; CHECK-OPT-NEXT: .Lpcsection_base6:
181
+ ; CHECK-OPT-NEXT: .word .Lpcsection4-.Lpcsection_base6
182
+ ; CHECK-OPT-NEXT: .Lpcsection_base7:
183
+ ; CHECK-OPT-NEXT: .word .Lpcsection5-.Lpcsection_base7
184
+ ; ---
185
+ ; CHECK-UNOPT-NEXT: .Lpcsection_base4:
186
+ ; CHECK-UNOPT-NEXT: .word .Lpcsection2-.Lpcsection_base4
187
+ ; CHECK-UNOPT-NEXT: .Lpcsection_base5:
188
+ ; CHECK-UNOPT-NEXT: .word .Lpcsection3-.Lpcsection_base5
189
+ ; CHECK-UNOPT-NEXT: .Lpcsection_base6:
190
+ ; CHECK-UNOPT-NEXT: .word .Lpcsection4-.Lpcsection_base6
191
+ ; CHECK-UNOPT-NEXT: .Lpcsection_base7:
192
+ ; CHECK-UNOPT-NEXT: .word .Lpcsection5-.Lpcsection_base7
193
+ ; CHECK-UNOPT-NEXT: .Lpcsection_base8:
194
+ ; CHECK-UNOPT-NEXT: .word .Lpcsection6-.Lpcsection_base8
195
+ ; CHECK-UNOPT-NEXT: .Lpcsection_base9:
196
+ ; CHECK-UNOPT-NEXT: .word .Lpcsection7-.Lpcsection_base9
197
+ ; CHECK-UNOPT-NEXT: .Lpcsection_base10:
198
+ ; CHECK-UNOPT-NEXT: .word .Lpcsection8-.Lpcsection_base10
199
+ ; CHECK-UNOPT-NEXT: .Lpcsection_base11:
200
+ ; CHECK-UNOPT-NEXT: .word .Lpcsection9-.Lpcsection_base11
201
+ ; CHECK-UNOPT-NEXT: .Lpcsection_base12:
202
+ ; CHECK-UNOPT-NEXT: .word .Lpcsection10-.Lpcsection_base12
203
+ ; CHECK-UNOPT-NEXT: .Lpcsection_base13:
204
+ ; CHECK-UNOPT-NEXT: .word .Lpcsection11-.Lpcsection_base13
205
+ ; CHECK-UNOPT-NEXT: .Lpcsection_base14:
206
+ ; CHECK-UNOPT-NEXT: .word .Lpcsection12-.Lpcsection_base14
207
+ ; CHECK-UNOPT-NEXT: .Lpcsection_base15:
208
+ ; CHECK-UNOPT-NEXT: .word .Lpcsection13-.Lpcsection_base15
209
+ ; ---
210
+ ; LARGE-NEXT: .Lpcsection_base16:
211
+ ; LARGE-NEXT: .xword .Lpcsection10-.Lpcsection_base16
212
+ ; LARGE-NEXT: .Lpcsection_base17:
213
+ ; LARGE-NEXT: .xword .Lpcsection11-.Lpcsection_base17
214
+ ; LARGE-NEXT: .Lpcsection_base18:
215
+ ; LARGE-NEXT: .xword .Lpcsection12-.Lpcsection_base18
216
+ ; LARGE-NEXT: .Lpcsection_base19:
217
+ ; LARGE-NEXT: .xword .Lpcsection13-.Lpcsection_base19
218
+ ; LARGE-NEXT: .Lpcsection_base20:
219
+ ; LARGE-NEXT: .xword .Lpcsection14-.Lpcsection_base20
220
+ ; LARGE-NEXT: .Lpcsection_base21:
221
+ ; LARGE-NEXT: .xword .Lpcsection15-.Lpcsection_base21
222
+ ; LARGE-NEXT: .Lpcsection_base22:
223
+ ; LARGE-NEXT: .xword .Lpcsection16-.Lpcsection_base22
224
+ ; LARGE-NEXT: .Lpcsection_base23:
225
+ ; LARGE-NEXT: .xword .Lpcsection17-.Lpcsection_base23
104
226
; CHECK-NEXT: .text
105
227
entry:
106
228
%0 = atomicrmw add ptr @foo , i64 1 monotonic , align 8 , !pcsections !0
0 commit comments