1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --filter-out "\b(sp)\b" --filter "^\s*(ld[^r]|st[^r]|swp|cas|bl|add|and|eor|orn|orr|sub|mvn|sxt|cmp|ccmp|csel|dmb)"
2 ; The base test file was generated by ./llvm/test/CodeGen/AArch64/Atomics/generate-tests.py
3 ; RUN: llc %s -o - -verify-machineinstrs -mtriple=aarch64 -mattr=+v8.1a -O0 | FileCheck %s --check-prefixes=CHECK,-O0
4 ; RUN: llc %s -o - -verify-machineinstrs -mtriple=aarch64 -mattr=+v8.1a -O1 | FileCheck %s --check-prefixes=CHECK,-O1
6 define dso_local i8 @cmpxchg_i8_aligned_monotonic_monotonic(i8 %expected, i8 %new, ptr %ptr) {
7 ; CHECK-LABEL: cmpxchg_i8_aligned_monotonic_monotonic:
8 ; CHECK: casb w0, w1, [x2]
9 %pair = cmpxchg ptr %ptr, i8 %expected, i8 %new monotonic monotonic, align 1
10 %r = extractvalue { i8, i1 } %pair, 0
14 define dso_local i8 @cmpxchg_i8_aligned_monotonic_monotonic_weak(i8 %expected, i8 %new, ptr %ptr) {
15 ; CHECK-LABEL: cmpxchg_i8_aligned_monotonic_monotonic_weak:
16 ; CHECK: casb w0, w1, [x2]
17 %pair = cmpxchg weak ptr %ptr, i8 %expected, i8 %new monotonic monotonic, align 1
18 %r = extractvalue { i8, i1 } %pair, 0
22 define dso_local i8 @cmpxchg_i8_aligned_monotonic_acquire(i8 %expected, i8 %new, ptr %ptr) {
23 ; CHECK-LABEL: cmpxchg_i8_aligned_monotonic_acquire:
24 ; CHECK: casab w0, w1, [x2]
25 %pair = cmpxchg ptr %ptr, i8 %expected, i8 %new monotonic acquire, align 1
26 %r = extractvalue { i8, i1 } %pair, 0
30 define dso_local i8 @cmpxchg_i8_aligned_monotonic_acquire_weak(i8 %expected, i8 %new, ptr %ptr) {
31 ; CHECK-LABEL: cmpxchg_i8_aligned_monotonic_acquire_weak:
32 ; CHECK: casab w0, w1, [x2]
33 %pair = cmpxchg weak ptr %ptr, i8 %expected, i8 %new monotonic acquire, align 1
34 %r = extractvalue { i8, i1 } %pair, 0
38 define dso_local i8 @cmpxchg_i8_aligned_monotonic_seq_cst(i8 %expected, i8 %new, ptr %ptr) {
39 ; CHECK-LABEL: cmpxchg_i8_aligned_monotonic_seq_cst:
40 ; CHECK: casalb w0, w1, [x2]
41 %pair = cmpxchg ptr %ptr, i8 %expected, i8 %new monotonic seq_cst, align 1
42 %r = extractvalue { i8, i1 } %pair, 0
46 define dso_local i8 @cmpxchg_i8_aligned_monotonic_seq_cst_weak(i8 %expected, i8 %new, ptr %ptr) {
47 ; CHECK-LABEL: cmpxchg_i8_aligned_monotonic_seq_cst_weak:
48 ; CHECK: casalb w0, w1, [x2]
49 %pair = cmpxchg weak ptr %ptr, i8 %expected, i8 %new monotonic seq_cst, align 1
50 %r = extractvalue { i8, i1 } %pair, 0
54 define dso_local i8 @cmpxchg_i8_aligned_acquire_monotonic(i8 %expected, i8 %new, ptr %ptr) {
55 ; CHECK-LABEL: cmpxchg_i8_aligned_acquire_monotonic:
56 ; CHECK: casab w0, w1, [x2]
57 %pair = cmpxchg ptr %ptr, i8 %expected, i8 %new acquire monotonic, align 1
58 %r = extractvalue { i8, i1 } %pair, 0
62 define dso_local i8 @cmpxchg_i8_aligned_acquire_monotonic_weak(i8 %expected, i8 %new, ptr %ptr) {
63 ; CHECK-LABEL: cmpxchg_i8_aligned_acquire_monotonic_weak:
64 ; CHECK: casab w0, w1, [x2]
65 %pair = cmpxchg weak ptr %ptr, i8 %expected, i8 %new acquire monotonic, align 1
66 %r = extractvalue { i8, i1 } %pair, 0
70 define dso_local i8 @cmpxchg_i8_aligned_acquire_acquire(i8 %expected, i8 %new, ptr %ptr) {
71 ; CHECK-LABEL: cmpxchg_i8_aligned_acquire_acquire:
72 ; CHECK: casab w0, w1, [x2]
73 %pair = cmpxchg ptr %ptr, i8 %expected, i8 %new acquire acquire, align 1
74 %r = extractvalue { i8, i1 } %pair, 0
78 define dso_local i8 @cmpxchg_i8_aligned_acquire_acquire_weak(i8 %expected, i8 %new, ptr %ptr) {
79 ; CHECK-LABEL: cmpxchg_i8_aligned_acquire_acquire_weak:
80 ; CHECK: casab w0, w1, [x2]
81 %pair = cmpxchg weak ptr %ptr, i8 %expected, i8 %new acquire acquire, align 1
82 %r = extractvalue { i8, i1 } %pair, 0
86 define dso_local i8 @cmpxchg_i8_aligned_acquire_seq_cst(i8 %expected, i8 %new, ptr %ptr) {
87 ; CHECK-LABEL: cmpxchg_i8_aligned_acquire_seq_cst:
88 ; CHECK: casalb w0, w1, [x2]
89 %pair = cmpxchg ptr %ptr, i8 %expected, i8 %new acquire seq_cst, align 1
90 %r = extractvalue { i8, i1 } %pair, 0
94 define dso_local i8 @cmpxchg_i8_aligned_acquire_seq_cst_weak(i8 %expected, i8 %new, ptr %ptr) {
95 ; CHECK-LABEL: cmpxchg_i8_aligned_acquire_seq_cst_weak:
96 ; CHECK: casalb w0, w1, [x2]
97 %pair = cmpxchg weak ptr %ptr, i8 %expected, i8 %new acquire seq_cst, align 1
98 %r = extractvalue { i8, i1 } %pair, 0
102 define dso_local i8 @cmpxchg_i8_aligned_release_monotonic(i8 %expected, i8 %new, ptr %ptr) {
103 ; CHECK-LABEL: cmpxchg_i8_aligned_release_monotonic:
104 ; CHECK: caslb w0, w1, [x2]
105 %pair = cmpxchg ptr %ptr, i8 %expected, i8 %new release monotonic, align 1
106 %r = extractvalue { i8, i1 } %pair, 0
110 define dso_local i8 @cmpxchg_i8_aligned_release_monotonic_weak(i8 %expected, i8 %new, ptr %ptr) {
111 ; CHECK-LABEL: cmpxchg_i8_aligned_release_monotonic_weak:
112 ; CHECK: caslb w0, w1, [x2]
113 %pair = cmpxchg weak ptr %ptr, i8 %expected, i8 %new release monotonic, align 1
114 %r = extractvalue { i8, i1 } %pair, 0
118 define dso_local i8 @cmpxchg_i8_aligned_release_acquire(i8 %expected, i8 %new, ptr %ptr) {
119 ; CHECK-LABEL: cmpxchg_i8_aligned_release_acquire:
120 ; CHECK: casalb w0, w1, [x2]
121 %pair = cmpxchg ptr %ptr, i8 %expected, i8 %new release acquire, align 1
122 %r = extractvalue { i8, i1 } %pair, 0
126 define dso_local i8 @cmpxchg_i8_aligned_release_acquire_weak(i8 %expected, i8 %new, ptr %ptr) {
127 ; CHECK-LABEL: cmpxchg_i8_aligned_release_acquire_weak:
128 ; CHECK: casalb w0, w1, [x2]
129 %pair = cmpxchg weak ptr %ptr, i8 %expected, i8 %new release acquire, align 1
130 %r = extractvalue { i8, i1 } %pair, 0
134 define dso_local i8 @cmpxchg_i8_aligned_release_seq_cst(i8 %expected, i8 %new, ptr %ptr) {
135 ; CHECK-LABEL: cmpxchg_i8_aligned_release_seq_cst:
136 ; CHECK: casalb w0, w1, [x2]
137 %pair = cmpxchg ptr %ptr, i8 %expected, i8 %new release seq_cst, align 1
138 %r = extractvalue { i8, i1 } %pair, 0
142 define dso_local i8 @cmpxchg_i8_aligned_release_seq_cst_weak(i8 %expected, i8 %new, ptr %ptr) {
143 ; CHECK-LABEL: cmpxchg_i8_aligned_release_seq_cst_weak:
144 ; CHECK: casalb w0, w1, [x2]
145 %pair = cmpxchg weak ptr %ptr, i8 %expected, i8 %new release seq_cst, align 1
146 %r = extractvalue { i8, i1 } %pair, 0
150 define dso_local i8 @cmpxchg_i8_aligned_acq_rel_monotonic(i8 %expected, i8 %new, ptr %ptr) {
151 ; CHECK-LABEL: cmpxchg_i8_aligned_acq_rel_monotonic:
152 ; CHECK: casalb w0, w1, [x2]
153 %pair = cmpxchg ptr %ptr, i8 %expected, i8 %new acq_rel monotonic, align 1
154 %r = extractvalue { i8, i1 } %pair, 0
158 define dso_local i8 @cmpxchg_i8_aligned_acq_rel_monotonic_weak(i8 %expected, i8 %new, ptr %ptr) {
159 ; CHECK-LABEL: cmpxchg_i8_aligned_acq_rel_monotonic_weak:
160 ; CHECK: casalb w0, w1, [x2]
161 %pair = cmpxchg weak ptr %ptr, i8 %expected, i8 %new acq_rel monotonic, align 1
162 %r = extractvalue { i8, i1 } %pair, 0
166 define dso_local i8 @cmpxchg_i8_aligned_acq_rel_acquire(i8 %expected, i8 %new, ptr %ptr) {
167 ; CHECK-LABEL: cmpxchg_i8_aligned_acq_rel_acquire:
168 ; CHECK: casalb w0, w1, [x2]
169 %pair = cmpxchg ptr %ptr, i8 %expected, i8 %new acq_rel acquire, align 1
170 %r = extractvalue { i8, i1 } %pair, 0
174 define dso_local i8 @cmpxchg_i8_aligned_acq_rel_acquire_weak(i8 %expected, i8 %new, ptr %ptr) {
175 ; CHECK-LABEL: cmpxchg_i8_aligned_acq_rel_acquire_weak:
176 ; CHECK: casalb w0, w1, [x2]
177 %pair = cmpxchg weak ptr %ptr, i8 %expected, i8 %new acq_rel acquire, align 1
178 %r = extractvalue { i8, i1 } %pair, 0
182 define dso_local i8 @cmpxchg_i8_aligned_acq_rel_seq_cst(i8 %expected, i8 %new, ptr %ptr) {
183 ; CHECK-LABEL: cmpxchg_i8_aligned_acq_rel_seq_cst:
184 ; CHECK: casalb w0, w1, [x2]
185 %pair = cmpxchg ptr %ptr, i8 %expected, i8 %new acq_rel seq_cst, align 1
186 %r = extractvalue { i8, i1 } %pair, 0
190 define dso_local i8 @cmpxchg_i8_aligned_acq_rel_seq_cst_weak(i8 %expected, i8 %new, ptr %ptr) {
191 ; CHECK-LABEL: cmpxchg_i8_aligned_acq_rel_seq_cst_weak:
192 ; CHECK: casalb w0, w1, [x2]
193 %pair = cmpxchg weak ptr %ptr, i8 %expected, i8 %new acq_rel seq_cst, align 1
194 %r = extractvalue { i8, i1 } %pair, 0
198 define dso_local i8 @cmpxchg_i8_aligned_seq_cst_monotonic(i8 %expected, i8 %new, ptr %ptr) {
199 ; CHECK-LABEL: cmpxchg_i8_aligned_seq_cst_monotonic:
200 ; CHECK: casalb w0, w1, [x2]
201 %pair = cmpxchg ptr %ptr, i8 %expected, i8 %new seq_cst monotonic, align 1
202 %r = extractvalue { i8, i1 } %pair, 0
206 define dso_local i8 @cmpxchg_i8_aligned_seq_cst_monotonic_weak(i8 %expected, i8 %new, ptr %ptr) {
207 ; CHECK-LABEL: cmpxchg_i8_aligned_seq_cst_monotonic_weak:
208 ; CHECK: casalb w0, w1, [x2]
209 %pair = cmpxchg weak ptr %ptr, i8 %expected, i8 %new seq_cst monotonic, align 1
210 %r = extractvalue { i8, i1 } %pair, 0
214 define dso_local i8 @cmpxchg_i8_aligned_seq_cst_acquire(i8 %expected, i8 %new, ptr %ptr) {
215 ; CHECK-LABEL: cmpxchg_i8_aligned_seq_cst_acquire:
216 ; CHECK: casalb w0, w1, [x2]
217 %pair = cmpxchg ptr %ptr, i8 %expected, i8 %new seq_cst acquire, align 1
218 %r = extractvalue { i8, i1 } %pair, 0
222 define dso_local i8 @cmpxchg_i8_aligned_seq_cst_acquire_weak(i8 %expected, i8 %new, ptr %ptr) {
223 ; CHECK-LABEL: cmpxchg_i8_aligned_seq_cst_acquire_weak:
224 ; CHECK: casalb w0, w1, [x2]
225 %pair = cmpxchg weak ptr %ptr, i8 %expected, i8 %new seq_cst acquire, align 1
226 %r = extractvalue { i8, i1 } %pair, 0
230 define dso_local i8 @cmpxchg_i8_aligned_seq_cst_seq_cst(i8 %expected, i8 %new, ptr %ptr) {
231 ; CHECK-LABEL: cmpxchg_i8_aligned_seq_cst_seq_cst:
232 ; CHECK: casalb w0, w1, [x2]
233 %pair = cmpxchg ptr %ptr, i8 %expected, i8 %new seq_cst seq_cst, align 1
234 %r = extractvalue { i8, i1 } %pair, 0
238 define dso_local i8 @cmpxchg_i8_aligned_seq_cst_seq_cst_weak(i8 %expected, i8 %new, ptr %ptr) {
239 ; CHECK-LABEL: cmpxchg_i8_aligned_seq_cst_seq_cst_weak:
240 ; CHECK: casalb w0, w1, [x2]
241 %pair = cmpxchg weak ptr %ptr, i8 %expected, i8 %new seq_cst seq_cst, align 1
242 %r = extractvalue { i8, i1 } %pair, 0
246 define dso_local i16 @cmpxchg_i16_aligned_monotonic_monotonic(i16 %expected, i16 %new, ptr %ptr) {
247 ; CHECK-LABEL: cmpxchg_i16_aligned_monotonic_monotonic:
248 ; CHECK: cash w0, w1, [x2]
249 %pair = cmpxchg ptr %ptr, i16 %expected, i16 %new monotonic monotonic, align 2
250 %r = extractvalue { i16, i1 } %pair, 0
254 define dso_local i16 @cmpxchg_i16_aligned_monotonic_monotonic_weak(i16 %expected, i16 %new, ptr %ptr) {
255 ; CHECK-LABEL: cmpxchg_i16_aligned_monotonic_monotonic_weak:
256 ; CHECK: cash w0, w1, [x2]
257 %pair = cmpxchg weak ptr %ptr, i16 %expected, i16 %new monotonic monotonic, align 2
258 %r = extractvalue { i16, i1 } %pair, 0
262 define dso_local i16 @cmpxchg_i16_aligned_monotonic_acquire(i16 %expected, i16 %new, ptr %ptr) {
263 ; CHECK-LABEL: cmpxchg_i16_aligned_monotonic_acquire:
264 ; CHECK: casah w0, w1, [x2]
265 %pair = cmpxchg ptr %ptr, i16 %expected, i16 %new monotonic acquire, align 2
266 %r = extractvalue { i16, i1 } %pair, 0
270 define dso_local i16 @cmpxchg_i16_aligned_monotonic_acquire_weak(i16 %expected, i16 %new, ptr %ptr) {
271 ; CHECK-LABEL: cmpxchg_i16_aligned_monotonic_acquire_weak:
272 ; CHECK: casah w0, w1, [x2]
273 %pair = cmpxchg weak ptr %ptr, i16 %expected, i16 %new monotonic acquire, align 2
274 %r = extractvalue { i16, i1 } %pair, 0
278 define dso_local i16 @cmpxchg_i16_aligned_monotonic_seq_cst(i16 %expected, i16 %new, ptr %ptr) {
279 ; CHECK-LABEL: cmpxchg_i16_aligned_monotonic_seq_cst:
280 ; CHECK: casalh w0, w1, [x2]
281 %pair = cmpxchg ptr %ptr, i16 %expected, i16 %new monotonic seq_cst, align 2
282 %r = extractvalue { i16, i1 } %pair, 0
286 define dso_local i16 @cmpxchg_i16_aligned_monotonic_seq_cst_weak(i16 %expected, i16 %new, ptr %ptr) {
287 ; CHECK-LABEL: cmpxchg_i16_aligned_monotonic_seq_cst_weak:
288 ; CHECK: casalh w0, w1, [x2]
289 %pair = cmpxchg weak ptr %ptr, i16 %expected, i16 %new monotonic seq_cst, align 2
290 %r = extractvalue { i16, i1 } %pair, 0
294 define dso_local i16 @cmpxchg_i16_aligned_acquire_monotonic(i16 %expected, i16 %new, ptr %ptr) {
295 ; CHECK-LABEL: cmpxchg_i16_aligned_acquire_monotonic:
296 ; CHECK: casah w0, w1, [x2]
297 %pair = cmpxchg ptr %ptr, i16 %expected, i16 %new acquire monotonic, align 2
298 %r = extractvalue { i16, i1 } %pair, 0
302 define dso_local i16 @cmpxchg_i16_aligned_acquire_monotonic_weak(i16 %expected, i16 %new, ptr %ptr) {
303 ; CHECK-LABEL: cmpxchg_i16_aligned_acquire_monotonic_weak:
304 ; CHECK: casah w0, w1, [x2]
305 %pair = cmpxchg weak ptr %ptr, i16 %expected, i16 %new acquire monotonic, align 2
306 %r = extractvalue { i16, i1 } %pair, 0
310 define dso_local i16 @cmpxchg_i16_aligned_acquire_acquire(i16 %expected, i16 %new, ptr %ptr) {
311 ; CHECK-LABEL: cmpxchg_i16_aligned_acquire_acquire:
312 ; CHECK: casah w0, w1, [x2]
313 %pair = cmpxchg ptr %ptr, i16 %expected, i16 %new acquire acquire, align 2
314 %r = extractvalue { i16, i1 } %pair, 0
318 define dso_local i16 @cmpxchg_i16_aligned_acquire_acquire_weak(i16 %expected, i16 %new, ptr %ptr) {
319 ; CHECK-LABEL: cmpxchg_i16_aligned_acquire_acquire_weak:
320 ; CHECK: casah w0, w1, [x2]
321 %pair = cmpxchg weak ptr %ptr, i16 %expected, i16 %new acquire acquire, align 2
322 %r = extractvalue { i16, i1 } %pair, 0
326 define dso_local i16 @cmpxchg_i16_aligned_acquire_seq_cst(i16 %expected, i16 %new, ptr %ptr) {
327 ; CHECK-LABEL: cmpxchg_i16_aligned_acquire_seq_cst:
328 ; CHECK: casalh w0, w1, [x2]
329 %pair = cmpxchg ptr %ptr, i16 %expected, i16 %new acquire seq_cst, align 2
330 %r = extractvalue { i16, i1 } %pair, 0
334 define dso_local i16 @cmpxchg_i16_aligned_acquire_seq_cst_weak(i16 %expected, i16 %new, ptr %ptr) {
335 ; CHECK-LABEL: cmpxchg_i16_aligned_acquire_seq_cst_weak:
336 ; CHECK: casalh w0, w1, [x2]
337 %pair = cmpxchg weak ptr %ptr, i16 %expected, i16 %new acquire seq_cst, align 2
338 %r = extractvalue { i16, i1 } %pair, 0
342 define dso_local i16 @cmpxchg_i16_aligned_release_monotonic(i16 %expected, i16 %new, ptr %ptr) {
343 ; CHECK-LABEL: cmpxchg_i16_aligned_release_monotonic:
344 ; CHECK: caslh w0, w1, [x2]
345 %pair = cmpxchg ptr %ptr, i16 %expected, i16 %new release monotonic, align 2
346 %r = extractvalue { i16, i1 } %pair, 0
350 define dso_local i16 @cmpxchg_i16_aligned_release_monotonic_weak(i16 %expected, i16 %new, ptr %ptr) {
351 ; CHECK-LABEL: cmpxchg_i16_aligned_release_monotonic_weak:
352 ; CHECK: caslh w0, w1, [x2]
353 %pair = cmpxchg weak ptr %ptr, i16 %expected, i16 %new release monotonic, align 2
354 %r = extractvalue { i16, i1 } %pair, 0
358 define dso_local i16 @cmpxchg_i16_aligned_release_acquire(i16 %expected, i16 %new, ptr %ptr) {
359 ; CHECK-LABEL: cmpxchg_i16_aligned_release_acquire:
360 ; CHECK: casalh w0, w1, [x2]
361 %pair = cmpxchg ptr %ptr, i16 %expected, i16 %new release acquire, align 2
362 %r = extractvalue { i16, i1 } %pair, 0
366 define dso_local i16 @cmpxchg_i16_aligned_release_acquire_weak(i16 %expected, i16 %new, ptr %ptr) {
367 ; CHECK-LABEL: cmpxchg_i16_aligned_release_acquire_weak:
368 ; CHECK: casalh w0, w1, [x2]
369 %pair = cmpxchg weak ptr %ptr, i16 %expected, i16 %new release acquire, align 2
370 %r = extractvalue { i16, i1 } %pair, 0
374 define dso_local i16 @cmpxchg_i16_aligned_release_seq_cst(i16 %expected, i16 %new, ptr %ptr) {
375 ; CHECK-LABEL: cmpxchg_i16_aligned_release_seq_cst:
376 ; CHECK: casalh w0, w1, [x2]
377 %pair = cmpxchg ptr %ptr, i16 %expected, i16 %new release seq_cst, align 2
378 %r = extractvalue { i16, i1 } %pair, 0
382 define dso_local i16 @cmpxchg_i16_aligned_release_seq_cst_weak(i16 %expected, i16 %new, ptr %ptr) {
383 ; CHECK-LABEL: cmpxchg_i16_aligned_release_seq_cst_weak:
384 ; CHECK: casalh w0, w1, [x2]
385 %pair = cmpxchg weak ptr %ptr, i16 %expected, i16 %new release seq_cst, align 2
386 %r = extractvalue { i16, i1 } %pair, 0
390 define dso_local i16 @cmpxchg_i16_aligned_acq_rel_monotonic(i16 %expected, i16 %new, ptr %ptr) {
391 ; CHECK-LABEL: cmpxchg_i16_aligned_acq_rel_monotonic:
392 ; CHECK: casalh w0, w1, [x2]
393 %pair = cmpxchg ptr %ptr, i16 %expected, i16 %new acq_rel monotonic, align 2
394 %r = extractvalue { i16, i1 } %pair, 0
398 define dso_local i16 @cmpxchg_i16_aligned_acq_rel_monotonic_weak(i16 %expected, i16 %new, ptr %ptr) {
399 ; CHECK-LABEL: cmpxchg_i16_aligned_acq_rel_monotonic_weak:
400 ; CHECK: casalh w0, w1, [x2]
401 %pair = cmpxchg weak ptr %ptr, i16 %expected, i16 %new acq_rel monotonic, align 2
402 %r = extractvalue { i16, i1 } %pair, 0
406 define dso_local i16 @cmpxchg_i16_aligned_acq_rel_acquire(i16 %expected, i16 %new, ptr %ptr) {
407 ; CHECK-LABEL: cmpxchg_i16_aligned_acq_rel_acquire:
408 ; CHECK: casalh w0, w1, [x2]
409 %pair = cmpxchg ptr %ptr, i16 %expected, i16 %new acq_rel acquire, align 2
410 %r = extractvalue { i16, i1 } %pair, 0
414 define dso_local i16 @cmpxchg_i16_aligned_acq_rel_acquire_weak(i16 %expected, i16 %new, ptr %ptr) {
415 ; CHECK-LABEL: cmpxchg_i16_aligned_acq_rel_acquire_weak:
416 ; CHECK: casalh w0, w1, [x2]
417 %pair = cmpxchg weak ptr %ptr, i16 %expected, i16 %new acq_rel acquire, align 2
418 %r = extractvalue { i16, i1 } %pair, 0
422 define dso_local i16 @cmpxchg_i16_aligned_acq_rel_seq_cst(i16 %expected, i16 %new, ptr %ptr) {
423 ; CHECK-LABEL: cmpxchg_i16_aligned_acq_rel_seq_cst:
424 ; CHECK: casalh w0, w1, [x2]
425 %pair = cmpxchg ptr %ptr, i16 %expected, i16 %new acq_rel seq_cst, align 2
426 %r = extractvalue { i16, i1 } %pair, 0
430 define dso_local i16 @cmpxchg_i16_aligned_acq_rel_seq_cst_weak(i16 %expected, i16 %new, ptr %ptr) {
431 ; CHECK-LABEL: cmpxchg_i16_aligned_acq_rel_seq_cst_weak:
432 ; CHECK: casalh w0, w1, [x2]
433 %pair = cmpxchg weak ptr %ptr, i16 %expected, i16 %new acq_rel seq_cst, align 2
434 %r = extractvalue { i16, i1 } %pair, 0
438 define dso_local i16 @cmpxchg_i16_aligned_seq_cst_monotonic(i16 %expected, i16 %new, ptr %ptr) {
439 ; CHECK-LABEL: cmpxchg_i16_aligned_seq_cst_monotonic:
440 ; CHECK: casalh w0, w1, [x2]
441 %pair = cmpxchg ptr %ptr, i16 %expected, i16 %new seq_cst monotonic, align 2
442 %r = extractvalue { i16, i1 } %pair, 0
446 define dso_local i16 @cmpxchg_i16_aligned_seq_cst_monotonic_weak(i16 %expected, i16 %new, ptr %ptr) {
447 ; CHECK-LABEL: cmpxchg_i16_aligned_seq_cst_monotonic_weak:
448 ; CHECK: casalh w0, w1, [x2]
449 %pair = cmpxchg weak ptr %ptr, i16 %expected, i16 %new seq_cst monotonic, align 2
450 %r = extractvalue { i16, i1 } %pair, 0
454 define dso_local i16 @cmpxchg_i16_aligned_seq_cst_acquire(i16 %expected, i16 %new, ptr %ptr) {
455 ; CHECK-LABEL: cmpxchg_i16_aligned_seq_cst_acquire:
456 ; CHECK: casalh w0, w1, [x2]
457 %pair = cmpxchg ptr %ptr, i16 %expected, i16 %new seq_cst acquire, align 2
458 %r = extractvalue { i16, i1 } %pair, 0
462 define dso_local i16 @cmpxchg_i16_aligned_seq_cst_acquire_weak(i16 %expected, i16 %new, ptr %ptr) {
463 ; CHECK-LABEL: cmpxchg_i16_aligned_seq_cst_acquire_weak:
464 ; CHECK: casalh w0, w1, [x2]
465 %pair = cmpxchg weak ptr %ptr, i16 %expected, i16 %new seq_cst acquire, align 2
466 %r = extractvalue { i16, i1 } %pair, 0
470 define dso_local i16 @cmpxchg_i16_aligned_seq_cst_seq_cst(i16 %expected, i16 %new, ptr %ptr) {
471 ; CHECK-LABEL: cmpxchg_i16_aligned_seq_cst_seq_cst:
472 ; CHECK: casalh w0, w1, [x2]
473 %pair = cmpxchg ptr %ptr, i16 %expected, i16 %new seq_cst seq_cst, align 2
474 %r = extractvalue { i16, i1 } %pair, 0
478 define dso_local i16 @cmpxchg_i16_aligned_seq_cst_seq_cst_weak(i16 %expected, i16 %new, ptr %ptr) {
479 ; CHECK-LABEL: cmpxchg_i16_aligned_seq_cst_seq_cst_weak:
480 ; CHECK: casalh w0, w1, [x2]
481 %pair = cmpxchg weak ptr %ptr, i16 %expected, i16 %new seq_cst seq_cst, align 2
482 %r = extractvalue { i16, i1 } %pair, 0
486 define dso_local i32 @cmpxchg_i32_aligned_monotonic_monotonic(i32 %expected, i32 %new, ptr %ptr) {
487 ; CHECK-LABEL: cmpxchg_i32_aligned_monotonic_monotonic:
488 ; CHECK: cas w0, w1, [x2]
489 %pair = cmpxchg ptr %ptr, i32 %expected, i32 %new monotonic monotonic, align 4
490 %r = extractvalue { i32, i1 } %pair, 0
494 define dso_local i32 @cmpxchg_i32_aligned_monotonic_monotonic_weak(i32 %expected, i32 %new, ptr %ptr) {
495 ; CHECK-LABEL: cmpxchg_i32_aligned_monotonic_monotonic_weak:
496 ; CHECK: cas w0, w1, [x2]
497 %pair = cmpxchg weak ptr %ptr, i32 %expected, i32 %new monotonic monotonic, align 4
498 %r = extractvalue { i32, i1 } %pair, 0
502 define dso_local i32 @cmpxchg_i32_aligned_monotonic_acquire(i32 %expected, i32 %new, ptr %ptr) {
503 ; CHECK-LABEL: cmpxchg_i32_aligned_monotonic_acquire:
504 ; CHECK: casa w0, w1, [x2]
505 %pair = cmpxchg ptr %ptr, i32 %expected, i32 %new monotonic acquire, align 4
506 %r = extractvalue { i32, i1 } %pair, 0
510 define dso_local i32 @cmpxchg_i32_aligned_monotonic_acquire_weak(i32 %expected, i32 %new, ptr %ptr) {
511 ; CHECK-LABEL: cmpxchg_i32_aligned_monotonic_acquire_weak:
512 ; CHECK: casa w0, w1, [x2]
513 %pair = cmpxchg weak ptr %ptr, i32 %expected, i32 %new monotonic acquire, align 4
514 %r = extractvalue { i32, i1 } %pair, 0
518 define dso_local i32 @cmpxchg_i32_aligned_monotonic_seq_cst(i32 %expected, i32 %new, ptr %ptr) {
519 ; CHECK-LABEL: cmpxchg_i32_aligned_monotonic_seq_cst:
520 ; CHECK: casal w0, w1, [x2]
521 %pair = cmpxchg ptr %ptr, i32 %expected, i32 %new monotonic seq_cst, align 4
522 %r = extractvalue { i32, i1 } %pair, 0
526 define dso_local i32 @cmpxchg_i32_aligned_monotonic_seq_cst_weak(i32 %expected, i32 %new, ptr %ptr) {
527 ; CHECK-LABEL: cmpxchg_i32_aligned_monotonic_seq_cst_weak:
528 ; CHECK: casal w0, w1, [x2]
529 %pair = cmpxchg weak ptr %ptr, i32 %expected, i32 %new monotonic seq_cst, align 4
530 %r = extractvalue { i32, i1 } %pair, 0
534 define dso_local i32 @cmpxchg_i32_aligned_acquire_monotonic(i32 %expected, i32 %new, ptr %ptr) {
535 ; CHECK-LABEL: cmpxchg_i32_aligned_acquire_monotonic:
536 ; CHECK: casa w0, w1, [x2]
537 %pair = cmpxchg ptr %ptr, i32 %expected, i32 %new acquire monotonic, align 4
538 %r = extractvalue { i32, i1 } %pair, 0
542 define dso_local i32 @cmpxchg_i32_aligned_acquire_monotonic_weak(i32 %expected, i32 %new, ptr %ptr) {
543 ; CHECK-LABEL: cmpxchg_i32_aligned_acquire_monotonic_weak:
544 ; CHECK: casa w0, w1, [x2]
545 %pair = cmpxchg weak ptr %ptr, i32 %expected, i32 %new acquire monotonic, align 4
546 %r = extractvalue { i32, i1 } %pair, 0
550 define dso_local i32 @cmpxchg_i32_aligned_acquire_acquire(i32 %expected, i32 %new, ptr %ptr) {
551 ; CHECK-LABEL: cmpxchg_i32_aligned_acquire_acquire:
552 ; CHECK: casa w0, w1, [x2]
553 %pair = cmpxchg ptr %ptr, i32 %expected, i32 %new acquire acquire, align 4
554 %r = extractvalue { i32, i1 } %pair, 0
558 define dso_local i32 @cmpxchg_i32_aligned_acquire_acquire_weak(i32 %expected, i32 %new, ptr %ptr) {
559 ; CHECK-LABEL: cmpxchg_i32_aligned_acquire_acquire_weak:
560 ; CHECK: casa w0, w1, [x2]
561 %pair = cmpxchg weak ptr %ptr, i32 %expected, i32 %new acquire acquire, align 4
562 %r = extractvalue { i32, i1 } %pair, 0
566 define dso_local i32 @cmpxchg_i32_aligned_acquire_seq_cst(i32 %expected, i32 %new, ptr %ptr) {
567 ; CHECK-LABEL: cmpxchg_i32_aligned_acquire_seq_cst:
568 ; CHECK: casal w0, w1, [x2]
569 %pair = cmpxchg ptr %ptr, i32 %expected, i32 %new acquire seq_cst, align 4
570 %r = extractvalue { i32, i1 } %pair, 0
574 define dso_local i32 @cmpxchg_i32_aligned_acquire_seq_cst_weak(i32 %expected, i32 %new, ptr %ptr) {
575 ; CHECK-LABEL: cmpxchg_i32_aligned_acquire_seq_cst_weak:
576 ; CHECK: casal w0, w1, [x2]
577 %pair = cmpxchg weak ptr %ptr, i32 %expected, i32 %new acquire seq_cst, align 4
578 %r = extractvalue { i32, i1 } %pair, 0
582 define dso_local i32 @cmpxchg_i32_aligned_release_monotonic(i32 %expected, i32 %new, ptr %ptr) {
583 ; CHECK-LABEL: cmpxchg_i32_aligned_release_monotonic:
584 ; CHECK: casl w0, w1, [x2]
585 %pair = cmpxchg ptr %ptr, i32 %expected, i32 %new release monotonic, align 4
586 %r = extractvalue { i32, i1 } %pair, 0
590 define dso_local i32 @cmpxchg_i32_aligned_release_monotonic_weak(i32 %expected, i32 %new, ptr %ptr) {
591 ; CHECK-LABEL: cmpxchg_i32_aligned_release_monotonic_weak:
592 ; CHECK: casl w0, w1, [x2]
593 %pair = cmpxchg weak ptr %ptr, i32 %expected, i32 %new release monotonic, align 4
594 %r = extractvalue { i32, i1 } %pair, 0
598 define dso_local i32 @cmpxchg_i32_aligned_release_acquire(i32 %expected, i32 %new, ptr %ptr) {
599 ; CHECK-LABEL: cmpxchg_i32_aligned_release_acquire:
600 ; CHECK: casal w0, w1, [x2]
601 %pair = cmpxchg ptr %ptr, i32 %expected, i32 %new release acquire, align 4
602 %r = extractvalue { i32, i1 } %pair, 0
606 define dso_local i32 @cmpxchg_i32_aligned_release_acquire_weak(i32 %expected, i32 %new, ptr %ptr) {
607 ; CHECK-LABEL: cmpxchg_i32_aligned_release_acquire_weak:
608 ; CHECK: casal w0, w1, [x2]
609 %pair = cmpxchg weak ptr %ptr, i32 %expected, i32 %new release acquire, align 4
610 %r = extractvalue { i32, i1 } %pair, 0
614 define dso_local i32 @cmpxchg_i32_aligned_release_seq_cst(i32 %expected, i32 %new, ptr %ptr) {
615 ; CHECK-LABEL: cmpxchg_i32_aligned_release_seq_cst:
616 ; CHECK: casal w0, w1, [x2]
617 %pair = cmpxchg ptr %ptr, i32 %expected, i32 %new release seq_cst, align 4
618 %r = extractvalue { i32, i1 } %pair, 0
622 define dso_local i32 @cmpxchg_i32_aligned_release_seq_cst_weak(i32 %expected, i32 %new, ptr %ptr) {
623 ; CHECK-LABEL: cmpxchg_i32_aligned_release_seq_cst_weak:
624 ; CHECK: casal w0, w1, [x2]
625 %pair = cmpxchg weak ptr %ptr, i32 %expected, i32 %new release seq_cst, align 4
626 %r = extractvalue { i32, i1 } %pair, 0
630 define dso_local i32 @cmpxchg_i32_aligned_acq_rel_monotonic(i32 %expected, i32 %new, ptr %ptr) {
631 ; CHECK-LABEL: cmpxchg_i32_aligned_acq_rel_monotonic:
632 ; CHECK: casal w0, w1, [x2]
633 %pair = cmpxchg ptr %ptr, i32 %expected, i32 %new acq_rel monotonic, align 4
634 %r = extractvalue { i32, i1 } %pair, 0
638 define dso_local i32 @cmpxchg_i32_aligned_acq_rel_monotonic_weak(i32 %expected, i32 %new, ptr %ptr) {
639 ; CHECK-LABEL: cmpxchg_i32_aligned_acq_rel_monotonic_weak:
640 ; CHECK: casal w0, w1, [x2]
641 %pair = cmpxchg weak ptr %ptr, i32 %expected, i32 %new acq_rel monotonic, align 4
642 %r = extractvalue { i32, i1 } %pair, 0
646 define dso_local i32 @cmpxchg_i32_aligned_acq_rel_acquire(i32 %expected, i32 %new, ptr %ptr) {
647 ; CHECK-LABEL: cmpxchg_i32_aligned_acq_rel_acquire:
648 ; CHECK: casal w0, w1, [x2]
649 %pair = cmpxchg ptr %ptr, i32 %expected, i32 %new acq_rel acquire, align 4
650 %r = extractvalue { i32, i1 } %pair, 0
654 define dso_local i32 @cmpxchg_i32_aligned_acq_rel_acquire_weak(i32 %expected, i32 %new, ptr %ptr) {
655 ; CHECK-LABEL: cmpxchg_i32_aligned_acq_rel_acquire_weak:
656 ; CHECK: casal w0, w1, [x2]
657 %pair = cmpxchg weak ptr %ptr, i32 %expected, i32 %new acq_rel acquire, align 4
658 %r = extractvalue { i32, i1 } %pair, 0
662 define dso_local i32 @cmpxchg_i32_aligned_acq_rel_seq_cst(i32 %expected, i32 %new, ptr %ptr) {
663 ; CHECK-LABEL: cmpxchg_i32_aligned_acq_rel_seq_cst:
664 ; CHECK: casal w0, w1, [x2]
665 %pair = cmpxchg ptr %ptr, i32 %expected, i32 %new acq_rel seq_cst, align 4
666 %r = extractvalue { i32, i1 } %pair, 0
670 define dso_local i32 @cmpxchg_i32_aligned_acq_rel_seq_cst_weak(i32 %expected, i32 %new, ptr %ptr) {
671 ; CHECK-LABEL: cmpxchg_i32_aligned_acq_rel_seq_cst_weak:
672 ; CHECK: casal w0, w1, [x2]
673 %pair = cmpxchg weak ptr %ptr, i32 %expected, i32 %new acq_rel seq_cst, align 4
674 %r = extractvalue { i32, i1 } %pair, 0
678 define dso_local i32 @cmpxchg_i32_aligned_seq_cst_monotonic(i32 %expected, i32 %new, ptr %ptr) {
679 ; CHECK-LABEL: cmpxchg_i32_aligned_seq_cst_monotonic:
680 ; CHECK: casal w0, w1, [x2]
681 %pair = cmpxchg ptr %ptr, i32 %expected, i32 %new seq_cst monotonic, align 4
682 %r = extractvalue { i32, i1 } %pair, 0
686 define dso_local i32 @cmpxchg_i32_aligned_seq_cst_monotonic_weak(i32 %expected, i32 %new, ptr %ptr) {
687 ; CHECK-LABEL: cmpxchg_i32_aligned_seq_cst_monotonic_weak:
688 ; CHECK: casal w0, w1, [x2]
689 %pair = cmpxchg weak ptr %ptr, i32 %expected, i32 %new seq_cst monotonic, align 4
690 %r = extractvalue { i32, i1 } %pair, 0
694 define dso_local i32 @cmpxchg_i32_aligned_seq_cst_acquire(i32 %expected, i32 %new, ptr %ptr) {
695 ; CHECK-LABEL: cmpxchg_i32_aligned_seq_cst_acquire:
696 ; CHECK: casal w0, w1, [x2]
697 %pair = cmpxchg ptr %ptr, i32 %expected, i32 %new seq_cst acquire, align 4
698 %r = extractvalue { i32, i1 } %pair, 0
702 define dso_local i32 @cmpxchg_i32_aligned_seq_cst_acquire_weak(i32 %expected, i32 %new, ptr %ptr) {
703 ; CHECK-LABEL: cmpxchg_i32_aligned_seq_cst_acquire_weak:
704 ; CHECK: casal w0, w1, [x2]
705 %pair = cmpxchg weak ptr %ptr, i32 %expected, i32 %new seq_cst acquire, align 4
706 %r = extractvalue { i32, i1 } %pair, 0
710 define dso_local i32 @cmpxchg_i32_aligned_seq_cst_seq_cst(i32 %expected, i32 %new, ptr %ptr) {
711 ; CHECK-LABEL: cmpxchg_i32_aligned_seq_cst_seq_cst:
712 ; CHECK: casal w0, w1, [x2]
713 %pair = cmpxchg ptr %ptr, i32 %expected, i32 %new seq_cst seq_cst, align 4
714 %r = extractvalue { i32, i1 } %pair, 0
718 define dso_local i32 @cmpxchg_i32_aligned_seq_cst_seq_cst_weak(i32 %expected, i32 %new, ptr %ptr) {
719 ; CHECK-LABEL: cmpxchg_i32_aligned_seq_cst_seq_cst_weak:
720 ; CHECK: casal w0, w1, [x2]
721 %pair = cmpxchg weak ptr %ptr, i32 %expected, i32 %new seq_cst seq_cst, align 4
722 %r = extractvalue { i32, i1 } %pair, 0
726 define dso_local i64 @cmpxchg_i64_aligned_monotonic_monotonic(i64 %expected, i64 %new, ptr %ptr) {
727 ; CHECK-LABEL: cmpxchg_i64_aligned_monotonic_monotonic:
728 ; CHECK: cas x0, x1, [x2]
729 %pair = cmpxchg ptr %ptr, i64 %expected, i64 %new monotonic monotonic, align 8
730 %r = extractvalue { i64, i1 } %pair, 0
734 define dso_local i64 @cmpxchg_i64_aligned_monotonic_monotonic_weak(i64 %expected, i64 %new, ptr %ptr) {
735 ; CHECK-LABEL: cmpxchg_i64_aligned_monotonic_monotonic_weak:
736 ; CHECK: cas x0, x1, [x2]
737 %pair = cmpxchg weak ptr %ptr, i64 %expected, i64 %new monotonic monotonic, align 8
738 %r = extractvalue { i64, i1 } %pair, 0
742 define dso_local i64 @cmpxchg_i64_aligned_monotonic_acquire(i64 %expected, i64 %new, ptr %ptr) {
743 ; CHECK-LABEL: cmpxchg_i64_aligned_monotonic_acquire:
744 ; CHECK: casa x0, x1, [x2]
745 %pair = cmpxchg ptr %ptr, i64 %expected, i64 %new monotonic acquire, align 8
746 %r = extractvalue { i64, i1 } %pair, 0
750 define dso_local i64 @cmpxchg_i64_aligned_monotonic_acquire_weak(i64 %expected, i64 %new, ptr %ptr) {
751 ; CHECK-LABEL: cmpxchg_i64_aligned_monotonic_acquire_weak:
752 ; CHECK: casa x0, x1, [x2]
753 %pair = cmpxchg weak ptr %ptr, i64 %expected, i64 %new monotonic acquire, align 8
754 %r = extractvalue { i64, i1 } %pair, 0
758 define dso_local i64 @cmpxchg_i64_aligned_monotonic_seq_cst(i64 %expected, i64 %new, ptr %ptr) {
759 ; CHECK-LABEL: cmpxchg_i64_aligned_monotonic_seq_cst:
760 ; CHECK: casal x0, x1, [x2]
761 %pair = cmpxchg ptr %ptr, i64 %expected, i64 %new monotonic seq_cst, align 8
762 %r = extractvalue { i64, i1 } %pair, 0
766 define dso_local i64 @cmpxchg_i64_aligned_monotonic_seq_cst_weak(i64 %expected, i64 %new, ptr %ptr) {
767 ; CHECK-LABEL: cmpxchg_i64_aligned_monotonic_seq_cst_weak:
768 ; CHECK: casal x0, x1, [x2]
769 %pair = cmpxchg weak ptr %ptr, i64 %expected, i64 %new monotonic seq_cst, align 8
770 %r = extractvalue { i64, i1 } %pair, 0
774 define dso_local i64 @cmpxchg_i64_aligned_acquire_monotonic(i64 %expected, i64 %new, ptr %ptr) {
775 ; CHECK-LABEL: cmpxchg_i64_aligned_acquire_monotonic:
776 ; CHECK: casa x0, x1, [x2]
777 %pair = cmpxchg ptr %ptr, i64 %expected, i64 %new acquire monotonic, align 8
778 %r = extractvalue { i64, i1 } %pair, 0
782 define dso_local i64 @cmpxchg_i64_aligned_acquire_monotonic_weak(i64 %expected, i64 %new, ptr %ptr) {
783 ; CHECK-LABEL: cmpxchg_i64_aligned_acquire_monotonic_weak:
784 ; CHECK: casa x0, x1, [x2]
785 %pair = cmpxchg weak ptr %ptr, i64 %expected, i64 %new acquire monotonic, align 8
786 %r = extractvalue { i64, i1 } %pair, 0
790 define dso_local i64 @cmpxchg_i64_aligned_acquire_acquire(i64 %expected, i64 %new, ptr %ptr) {
791 ; CHECK-LABEL: cmpxchg_i64_aligned_acquire_acquire:
792 ; CHECK: casa x0, x1, [x2]
793 %pair = cmpxchg ptr %ptr, i64 %expected, i64 %new acquire acquire, align 8
794 %r = extractvalue { i64, i1 } %pair, 0
798 define dso_local i64 @cmpxchg_i64_aligned_acquire_acquire_weak(i64 %expected, i64 %new, ptr %ptr) {
799 ; CHECK-LABEL: cmpxchg_i64_aligned_acquire_acquire_weak:
800 ; CHECK: casa x0, x1, [x2]
801 %pair = cmpxchg weak ptr %ptr, i64 %expected, i64 %new acquire acquire, align 8
802 %r = extractvalue { i64, i1 } %pair, 0
806 define dso_local i64 @cmpxchg_i64_aligned_acquire_seq_cst(i64 %expected, i64 %new, ptr %ptr) {
807 ; CHECK-LABEL: cmpxchg_i64_aligned_acquire_seq_cst:
808 ; CHECK: casal x0, x1, [x2]
809 %pair = cmpxchg ptr %ptr, i64 %expected, i64 %new acquire seq_cst, align 8
810 %r = extractvalue { i64, i1 } %pair, 0
814 define dso_local i64 @cmpxchg_i64_aligned_acquire_seq_cst_weak(i64 %expected, i64 %new, ptr %ptr) {
815 ; CHECK-LABEL: cmpxchg_i64_aligned_acquire_seq_cst_weak:
816 ; CHECK: casal x0, x1, [x2]
817 %pair = cmpxchg weak ptr %ptr, i64 %expected, i64 %new acquire seq_cst, align 8
818 %r = extractvalue { i64, i1 } %pair, 0
822 define dso_local i64 @cmpxchg_i64_aligned_release_monotonic(i64 %expected, i64 %new, ptr %ptr) {
823 ; CHECK-LABEL: cmpxchg_i64_aligned_release_monotonic:
824 ; CHECK: casl x0, x1, [x2]
825 %pair = cmpxchg ptr %ptr, i64 %expected, i64 %new release monotonic, align 8
826 %r = extractvalue { i64, i1 } %pair, 0
830 define dso_local i64 @cmpxchg_i64_aligned_release_monotonic_weak(i64 %expected, i64 %new, ptr %ptr) {
831 ; CHECK-LABEL: cmpxchg_i64_aligned_release_monotonic_weak:
832 ; CHECK: casl x0, x1, [x2]
833 %pair = cmpxchg weak ptr %ptr, i64 %expected, i64 %new release monotonic, align 8
834 %r = extractvalue { i64, i1 } %pair, 0
838 define dso_local i64 @cmpxchg_i64_aligned_release_acquire(i64 %expected, i64 %new, ptr %ptr) {
839 ; CHECK-LABEL: cmpxchg_i64_aligned_release_acquire:
840 ; CHECK: casal x0, x1, [x2]
841 %pair = cmpxchg ptr %ptr, i64 %expected, i64 %new release acquire, align 8
842 %r = extractvalue { i64, i1 } %pair, 0
846 define dso_local i64 @cmpxchg_i64_aligned_release_acquire_weak(i64 %expected, i64 %new, ptr %ptr) {
847 ; CHECK-LABEL: cmpxchg_i64_aligned_release_acquire_weak:
848 ; CHECK: casal x0, x1, [x2]
849 %pair = cmpxchg weak ptr %ptr, i64 %expected, i64 %new release acquire, align 8
850 %r = extractvalue { i64, i1 } %pair, 0
854 define dso_local i64 @cmpxchg_i64_aligned_release_seq_cst(i64 %expected, i64 %new, ptr %ptr) {
855 ; CHECK-LABEL: cmpxchg_i64_aligned_release_seq_cst:
856 ; CHECK: casal x0, x1, [x2]
857 %pair = cmpxchg ptr %ptr, i64 %expected, i64 %new release seq_cst, align 8
858 %r = extractvalue { i64, i1 } %pair, 0
862 define dso_local i64 @cmpxchg_i64_aligned_release_seq_cst_weak(i64 %expected, i64 %new, ptr %ptr) {
863 ; CHECK-LABEL: cmpxchg_i64_aligned_release_seq_cst_weak:
864 ; CHECK: casal x0, x1, [x2]
865 %pair = cmpxchg weak ptr %ptr, i64 %expected, i64 %new release seq_cst, align 8
866 %r = extractvalue { i64, i1 } %pair, 0
870 define dso_local i64 @cmpxchg_i64_aligned_acq_rel_monotonic(i64 %expected, i64 %new, ptr %ptr) {
871 ; CHECK-LABEL: cmpxchg_i64_aligned_acq_rel_monotonic:
872 ; CHECK: casal x0, x1, [x2]
873 %pair = cmpxchg ptr %ptr, i64 %expected, i64 %new acq_rel monotonic, align 8
874 %r = extractvalue { i64, i1 } %pair, 0
878 define dso_local i64 @cmpxchg_i64_aligned_acq_rel_monotonic_weak(i64 %expected, i64 %new, ptr %ptr) {
879 ; CHECK-LABEL: cmpxchg_i64_aligned_acq_rel_monotonic_weak:
880 ; CHECK: casal x0, x1, [x2]
881 %pair = cmpxchg weak ptr %ptr, i64 %expected, i64 %new acq_rel monotonic, align 8
882 %r = extractvalue { i64, i1 } %pair, 0
886 define dso_local i64 @cmpxchg_i64_aligned_acq_rel_acquire(i64 %expected, i64 %new, ptr %ptr) {
887 ; CHECK-LABEL: cmpxchg_i64_aligned_acq_rel_acquire:
888 ; CHECK: casal x0, x1, [x2]
889 %pair = cmpxchg ptr %ptr, i64 %expected, i64 %new acq_rel acquire, align 8
890 %r = extractvalue { i64, i1 } %pair, 0
894 define dso_local i64 @cmpxchg_i64_aligned_acq_rel_acquire_weak(i64 %expected, i64 %new, ptr %ptr) {
895 ; CHECK-LABEL: cmpxchg_i64_aligned_acq_rel_acquire_weak:
896 ; CHECK: casal x0, x1, [x2]
897 %pair = cmpxchg weak ptr %ptr, i64 %expected, i64 %new acq_rel acquire, align 8
898 %r = extractvalue { i64, i1 } %pair, 0
902 define dso_local i64 @cmpxchg_i64_aligned_acq_rel_seq_cst(i64 %expected, i64 %new, ptr %ptr) {
903 ; CHECK-LABEL: cmpxchg_i64_aligned_acq_rel_seq_cst:
904 ; CHECK: casal x0, x1, [x2]
905 %pair = cmpxchg ptr %ptr, i64 %expected, i64 %new acq_rel seq_cst, align 8
906 %r = extractvalue { i64, i1 } %pair, 0
910 define dso_local i64 @cmpxchg_i64_aligned_acq_rel_seq_cst_weak(i64 %expected, i64 %new, ptr %ptr) {
911 ; CHECK-LABEL: cmpxchg_i64_aligned_acq_rel_seq_cst_weak:
912 ; CHECK: casal x0, x1, [x2]
913 %pair = cmpxchg weak ptr %ptr, i64 %expected, i64 %new acq_rel seq_cst, align 8
914 %r = extractvalue { i64, i1 } %pair, 0
918 define dso_local i64 @cmpxchg_i64_aligned_seq_cst_monotonic(i64 %expected, i64 %new, ptr %ptr) {
919 ; CHECK-LABEL: cmpxchg_i64_aligned_seq_cst_monotonic:
920 ; CHECK: casal x0, x1, [x2]
921 %pair = cmpxchg ptr %ptr, i64 %expected, i64 %new seq_cst monotonic, align 8
922 %r = extractvalue { i64, i1 } %pair, 0
926 define dso_local i64 @cmpxchg_i64_aligned_seq_cst_monotonic_weak(i64 %expected, i64 %new, ptr %ptr) {
927 ; CHECK-LABEL: cmpxchg_i64_aligned_seq_cst_monotonic_weak:
928 ; CHECK: casal x0, x1, [x2]
929 %pair = cmpxchg weak ptr %ptr, i64 %expected, i64 %new seq_cst monotonic, align 8
930 %r = extractvalue { i64, i1 } %pair, 0
934 define dso_local i64 @cmpxchg_i64_aligned_seq_cst_acquire(i64 %expected, i64 %new, ptr %ptr) {
935 ; CHECK-LABEL: cmpxchg_i64_aligned_seq_cst_acquire:
936 ; CHECK: casal x0, x1, [x2]
937 %pair = cmpxchg ptr %ptr, i64 %expected, i64 %new seq_cst acquire, align 8
938 %r = extractvalue { i64, i1 } %pair, 0
942 define dso_local i64 @cmpxchg_i64_aligned_seq_cst_acquire_weak(i64 %expected, i64 %new, ptr %ptr) {
943 ; CHECK-LABEL: cmpxchg_i64_aligned_seq_cst_acquire_weak:
944 ; CHECK: casal x0, x1, [x2]
945 %pair = cmpxchg weak ptr %ptr, i64 %expected, i64 %new seq_cst acquire, align 8
946 %r = extractvalue { i64, i1 } %pair, 0
950 define dso_local i64 @cmpxchg_i64_aligned_seq_cst_seq_cst(i64 %expected, i64 %new, ptr %ptr) {
951 ; CHECK-LABEL: cmpxchg_i64_aligned_seq_cst_seq_cst:
952 ; CHECK: casal x0, x1, [x2]
953 %pair = cmpxchg ptr %ptr, i64 %expected, i64 %new seq_cst seq_cst, align 8
954 %r = extractvalue { i64, i1 } %pair, 0
958 define dso_local i64 @cmpxchg_i64_aligned_seq_cst_seq_cst_weak(i64 %expected, i64 %new, ptr %ptr) {
959 ; CHECK-LABEL: cmpxchg_i64_aligned_seq_cst_seq_cst_weak:
960 ; CHECK: casal x0, x1, [x2]
961 %pair = cmpxchg weak ptr %ptr, i64 %expected, i64 %new seq_cst seq_cst, align 8
962 %r = extractvalue { i64, i1 } %pair, 0
966 define dso_local i128 @cmpxchg_i128_aligned_monotonic_monotonic(i128 %expected, i128 %new, ptr %ptr) {
967 ; -O0-LABEL: cmpxchg_i128_aligned_monotonic_monotonic:
968 ; -O0: casp x2, x3, x0, x1, [x4]
970 ; -O1-LABEL: cmpxchg_i128_aligned_monotonic_monotonic:
971 ; -O1: casp x0, x1, x2, x3, [x4]
972 %pair = cmpxchg ptr %ptr, i128 %expected, i128 %new monotonic monotonic, align 16
973 %r = extractvalue { i128, i1 } %pair, 0
977 define dso_local i128 @cmpxchg_i128_aligned_monotonic_monotonic_weak(i128 %expected, i128 %new, ptr %ptr) {
978 ; -O0-LABEL: cmpxchg_i128_aligned_monotonic_monotonic_weak:
979 ; -O0: casp x2, x3, x0, x1, [x4]
981 ; -O1-LABEL: cmpxchg_i128_aligned_monotonic_monotonic_weak:
982 ; -O1: casp x0, x1, x2, x3, [x4]
983 %pair = cmpxchg weak ptr %ptr, i128 %expected, i128 %new monotonic monotonic, align 16
984 %r = extractvalue { i128, i1 } %pair, 0
988 define dso_local i128 @cmpxchg_i128_aligned_monotonic_acquire(i128 %expected, i128 %new, ptr %ptr) {
989 ; -O0-LABEL: cmpxchg_i128_aligned_monotonic_acquire:
990 ; -O0: caspa x2, x3, x0, x1, [x4]
992 ; -O1-LABEL: cmpxchg_i128_aligned_monotonic_acquire:
993 ; -O1: caspa x0, x1, x2, x3, [x4]
994 %pair = cmpxchg ptr %ptr, i128 %expected, i128 %new monotonic acquire, align 16
995 %r = extractvalue { i128, i1 } %pair, 0
999 define dso_local i128 @cmpxchg_i128_aligned_monotonic_acquire_weak(i128 %expected, i128 %new, ptr %ptr) {
1000 ; -O0-LABEL: cmpxchg_i128_aligned_monotonic_acquire_weak:
1001 ; -O0: caspa x2, x3, x0, x1, [x4]
1003 ; -O1-LABEL: cmpxchg_i128_aligned_monotonic_acquire_weak:
1004 ; -O1: caspa x0, x1, x2, x3, [x4]
1005 %pair = cmpxchg weak ptr %ptr, i128 %expected, i128 %new monotonic acquire, align 16
1006 %r = extractvalue { i128, i1 } %pair, 0
1010 define dso_local i128 @cmpxchg_i128_aligned_monotonic_seq_cst(i128 %expected, i128 %new, ptr %ptr) {
1011 ; -O0-LABEL: cmpxchg_i128_aligned_monotonic_seq_cst:
1012 ; -O0: caspal x2, x3, x0, x1, [x4]
1014 ; -O1-LABEL: cmpxchg_i128_aligned_monotonic_seq_cst:
1015 ; -O1: caspal x0, x1, x2, x3, [x4]
1016 %pair = cmpxchg ptr %ptr, i128 %expected, i128 %new monotonic seq_cst, align 16
1017 %r = extractvalue { i128, i1 } %pair, 0
1021 define dso_local i128 @cmpxchg_i128_aligned_monotonic_seq_cst_weak(i128 %expected, i128 %new, ptr %ptr) {
1022 ; -O0-LABEL: cmpxchg_i128_aligned_monotonic_seq_cst_weak:
1023 ; -O0: caspal x2, x3, x0, x1, [x4]
1025 ; -O1-LABEL: cmpxchg_i128_aligned_monotonic_seq_cst_weak:
1026 ; -O1: caspal x0, x1, x2, x3, [x4]
1027 %pair = cmpxchg weak ptr %ptr, i128 %expected, i128 %new monotonic seq_cst, align 16
1028 %r = extractvalue { i128, i1 } %pair, 0
1032 define dso_local i128 @cmpxchg_i128_aligned_acquire_monotonic(i128 %expected, i128 %new, ptr %ptr) {
1033 ; -O0-LABEL: cmpxchg_i128_aligned_acquire_monotonic:
1034 ; -O0: caspa x2, x3, x0, x1, [x4]
1036 ; -O1-LABEL: cmpxchg_i128_aligned_acquire_monotonic:
1037 ; -O1: caspa x0, x1, x2, x3, [x4]
1038 %pair = cmpxchg ptr %ptr, i128 %expected, i128 %new acquire monotonic, align 16
1039 %r = extractvalue { i128, i1 } %pair, 0
1043 define dso_local i128 @cmpxchg_i128_aligned_acquire_monotonic_weak(i128 %expected, i128 %new, ptr %ptr) {
1044 ; -O0-LABEL: cmpxchg_i128_aligned_acquire_monotonic_weak:
1045 ; -O0: caspa x2, x3, x0, x1, [x4]
1047 ; -O1-LABEL: cmpxchg_i128_aligned_acquire_monotonic_weak:
1048 ; -O1: caspa x0, x1, x2, x3, [x4]
1049 %pair = cmpxchg weak ptr %ptr, i128 %expected, i128 %new acquire monotonic, align 16
1050 %r = extractvalue { i128, i1 } %pair, 0
1054 define dso_local i128 @cmpxchg_i128_aligned_acquire_acquire(i128 %expected, i128 %new, ptr %ptr) {
1055 ; -O0-LABEL: cmpxchg_i128_aligned_acquire_acquire:
1056 ; -O0: caspa x2, x3, x0, x1, [x4]
1058 ; -O1-LABEL: cmpxchg_i128_aligned_acquire_acquire:
1059 ; -O1: caspa x0, x1, x2, x3, [x4]
1060 %pair = cmpxchg ptr %ptr, i128 %expected, i128 %new acquire acquire, align 16
1061 %r = extractvalue { i128, i1 } %pair, 0
1065 define dso_local i128 @cmpxchg_i128_aligned_acquire_acquire_weak(i128 %expected, i128 %new, ptr %ptr) {
1066 ; -O0-LABEL: cmpxchg_i128_aligned_acquire_acquire_weak:
1067 ; -O0: caspa x2, x3, x0, x1, [x4]
1069 ; -O1-LABEL: cmpxchg_i128_aligned_acquire_acquire_weak:
1070 ; -O1: caspa x0, x1, x2, x3, [x4]
1071 %pair = cmpxchg weak ptr %ptr, i128 %expected, i128 %new acquire acquire, align 16
1072 %r = extractvalue { i128, i1 } %pair, 0
1076 define dso_local i128 @cmpxchg_i128_aligned_acquire_seq_cst(i128 %expected, i128 %new, ptr %ptr) {
1077 ; -O0-LABEL: cmpxchg_i128_aligned_acquire_seq_cst:
1078 ; -O0: caspal x2, x3, x0, x1, [x4]
1080 ; -O1-LABEL: cmpxchg_i128_aligned_acquire_seq_cst:
1081 ; -O1: caspal x0, x1, x2, x3, [x4]
1082 %pair = cmpxchg ptr %ptr, i128 %expected, i128 %new acquire seq_cst, align 16
1083 %r = extractvalue { i128, i1 } %pair, 0
1087 define dso_local i128 @cmpxchg_i128_aligned_acquire_seq_cst_weak(i128 %expected, i128 %new, ptr %ptr) {
1088 ; -O0-LABEL: cmpxchg_i128_aligned_acquire_seq_cst_weak:
1089 ; -O0: caspal x2, x3, x0, x1, [x4]
1091 ; -O1-LABEL: cmpxchg_i128_aligned_acquire_seq_cst_weak:
1092 ; -O1: caspal x0, x1, x2, x3, [x4]
1093 %pair = cmpxchg weak ptr %ptr, i128 %expected, i128 %new acquire seq_cst, align 16
1094 %r = extractvalue { i128, i1 } %pair, 0
1098 define dso_local i128 @cmpxchg_i128_aligned_release_monotonic(i128 %expected, i128 %new, ptr %ptr) {
1099 ; -O0-LABEL: cmpxchg_i128_aligned_release_monotonic:
1100 ; -O0: caspl x2, x3, x0, x1, [x4]
1102 ; -O1-LABEL: cmpxchg_i128_aligned_release_monotonic:
1103 ; -O1: caspl x0, x1, x2, x3, [x4]
1104 %pair = cmpxchg ptr %ptr, i128 %expected, i128 %new release monotonic, align 16
1105 %r = extractvalue { i128, i1 } %pair, 0
1109 define dso_local i128 @cmpxchg_i128_aligned_release_monotonic_weak(i128 %expected, i128 %new, ptr %ptr) {
1110 ; -O0-LABEL: cmpxchg_i128_aligned_release_monotonic_weak:
1111 ; -O0: caspl x2, x3, x0, x1, [x4]
1113 ; -O1-LABEL: cmpxchg_i128_aligned_release_monotonic_weak:
1114 ; -O1: caspl x0, x1, x2, x3, [x4]
1115 %pair = cmpxchg weak ptr %ptr, i128 %expected, i128 %new release monotonic, align 16
1116 %r = extractvalue { i128, i1 } %pair, 0
1120 define dso_local i128 @cmpxchg_i128_aligned_release_acquire(i128 %expected, i128 %new, ptr %ptr) {
1121 ; -O0-LABEL: cmpxchg_i128_aligned_release_acquire:
1122 ; -O0: caspal x2, x3, x0, x1, [x4]
1124 ; -O1-LABEL: cmpxchg_i128_aligned_release_acquire:
1125 ; -O1: caspal x0, x1, x2, x3, [x4]
1126 %pair = cmpxchg ptr %ptr, i128 %expected, i128 %new release acquire, align 16
1127 %r = extractvalue { i128, i1 } %pair, 0
1131 define dso_local i128 @cmpxchg_i128_aligned_release_acquire_weak(i128 %expected, i128 %new, ptr %ptr) {
1132 ; -O0-LABEL: cmpxchg_i128_aligned_release_acquire_weak:
1133 ; -O0: caspal x2, x3, x0, x1, [x4]
1135 ; -O1-LABEL: cmpxchg_i128_aligned_release_acquire_weak:
1136 ; -O1: caspal x0, x1, x2, x3, [x4]
1137 %pair = cmpxchg weak ptr %ptr, i128 %expected, i128 %new release acquire, align 16
1138 %r = extractvalue { i128, i1 } %pair, 0
1142 define dso_local i128 @cmpxchg_i128_aligned_release_seq_cst(i128 %expected, i128 %new, ptr %ptr) {
1143 ; -O0-LABEL: cmpxchg_i128_aligned_release_seq_cst:
1144 ; -O0: caspal x2, x3, x0, x1, [x4]
1146 ; -O1-LABEL: cmpxchg_i128_aligned_release_seq_cst:
1147 ; -O1: caspal x0, x1, x2, x3, [x4]
1148 %pair = cmpxchg ptr %ptr, i128 %expected, i128 %new release seq_cst, align 16
1149 %r = extractvalue { i128, i1 } %pair, 0
1153 define dso_local i128 @cmpxchg_i128_aligned_release_seq_cst_weak(i128 %expected, i128 %new, ptr %ptr) {
1154 ; -O0-LABEL: cmpxchg_i128_aligned_release_seq_cst_weak:
1155 ; -O0: caspal x2, x3, x0, x1, [x4]
1157 ; -O1-LABEL: cmpxchg_i128_aligned_release_seq_cst_weak:
1158 ; -O1: caspal x0, x1, x2, x3, [x4]
1159 %pair = cmpxchg weak ptr %ptr, i128 %expected, i128 %new release seq_cst, align 16
1160 %r = extractvalue { i128, i1 } %pair, 0
1164 define dso_local i128 @cmpxchg_i128_aligned_acq_rel_monotonic(i128 %expected, i128 %new, ptr %ptr) {
1165 ; -O0-LABEL: cmpxchg_i128_aligned_acq_rel_monotonic:
1166 ; -O0: caspal x2, x3, x0, x1, [x4]
1168 ; -O1-LABEL: cmpxchg_i128_aligned_acq_rel_monotonic:
1169 ; -O1: caspal x0, x1, x2, x3, [x4]
1170 %pair = cmpxchg ptr %ptr, i128 %expected, i128 %new acq_rel monotonic, align 16
1171 %r = extractvalue { i128, i1 } %pair, 0
1175 define dso_local i128 @cmpxchg_i128_aligned_acq_rel_monotonic_weak(i128 %expected, i128 %new, ptr %ptr) {
1176 ; -O0-LABEL: cmpxchg_i128_aligned_acq_rel_monotonic_weak:
1177 ; -O0: caspal x2, x3, x0, x1, [x4]
1179 ; -O1-LABEL: cmpxchg_i128_aligned_acq_rel_monotonic_weak:
1180 ; -O1: caspal x0, x1, x2, x3, [x4]
1181 %pair = cmpxchg weak ptr %ptr, i128 %expected, i128 %new acq_rel monotonic, align 16
1182 %r = extractvalue { i128, i1 } %pair, 0
1186 define dso_local i128 @cmpxchg_i128_aligned_acq_rel_acquire(i128 %expected, i128 %new, ptr %ptr) {
1187 ; -O0-LABEL: cmpxchg_i128_aligned_acq_rel_acquire:
1188 ; -O0: caspal x2, x3, x0, x1, [x4]
1190 ; -O1-LABEL: cmpxchg_i128_aligned_acq_rel_acquire:
1191 ; -O1: caspal x0, x1, x2, x3, [x4]
1192 %pair = cmpxchg ptr %ptr, i128 %expected, i128 %new acq_rel acquire, align 16
1193 %r = extractvalue { i128, i1 } %pair, 0
1197 define dso_local i128 @cmpxchg_i128_aligned_acq_rel_acquire_weak(i128 %expected, i128 %new, ptr %ptr) {
1198 ; -O0-LABEL: cmpxchg_i128_aligned_acq_rel_acquire_weak:
1199 ; -O0: caspal x2, x3, x0, x1, [x4]
1201 ; -O1-LABEL: cmpxchg_i128_aligned_acq_rel_acquire_weak:
1202 ; -O1: caspal x0, x1, x2, x3, [x4]
1203 %pair = cmpxchg weak ptr %ptr, i128 %expected, i128 %new acq_rel acquire, align 16
1204 %r = extractvalue { i128, i1 } %pair, 0
1208 define dso_local i128 @cmpxchg_i128_aligned_acq_rel_seq_cst(i128 %expected, i128 %new, ptr %ptr) {
1209 ; -O0-LABEL: cmpxchg_i128_aligned_acq_rel_seq_cst:
1210 ; -O0: caspal x2, x3, x0, x1, [x4]
1212 ; -O1-LABEL: cmpxchg_i128_aligned_acq_rel_seq_cst:
1213 ; -O1: caspal x0, x1, x2, x3, [x4]
1214 %pair = cmpxchg ptr %ptr, i128 %expected, i128 %new acq_rel seq_cst, align 16
1215 %r = extractvalue { i128, i1 } %pair, 0
1219 define dso_local i128 @cmpxchg_i128_aligned_acq_rel_seq_cst_weak(i128 %expected, i128 %new, ptr %ptr) {
1220 ; -O0-LABEL: cmpxchg_i128_aligned_acq_rel_seq_cst_weak:
1221 ; -O0: caspal x2, x3, x0, x1, [x4]
1223 ; -O1-LABEL: cmpxchg_i128_aligned_acq_rel_seq_cst_weak:
1224 ; -O1: caspal x0, x1, x2, x3, [x4]
1225 %pair = cmpxchg weak ptr %ptr, i128 %expected, i128 %new acq_rel seq_cst, align 16
1226 %r = extractvalue { i128, i1 } %pair, 0
1230 define dso_local i128 @cmpxchg_i128_aligned_seq_cst_monotonic(i128 %expected, i128 %new, ptr %ptr) {
1231 ; -O0-LABEL: cmpxchg_i128_aligned_seq_cst_monotonic:
1232 ; -O0: caspal x2, x3, x0, x1, [x4]
1234 ; -O1-LABEL: cmpxchg_i128_aligned_seq_cst_monotonic:
1235 ; -O1: caspal x0, x1, x2, x3, [x4]
1236 %pair = cmpxchg ptr %ptr, i128 %expected, i128 %new seq_cst monotonic, align 16
1237 %r = extractvalue { i128, i1 } %pair, 0
1241 define dso_local i128 @cmpxchg_i128_aligned_seq_cst_monotonic_weak(i128 %expected, i128 %new, ptr %ptr) {
1242 ; -O0-LABEL: cmpxchg_i128_aligned_seq_cst_monotonic_weak:
1243 ; -O0: caspal x2, x3, x0, x1, [x4]
1245 ; -O1-LABEL: cmpxchg_i128_aligned_seq_cst_monotonic_weak:
1246 ; -O1: caspal x0, x1, x2, x3, [x4]
1247 %pair = cmpxchg weak ptr %ptr, i128 %expected, i128 %new seq_cst monotonic, align 16
1248 %r = extractvalue { i128, i1 } %pair, 0
1252 define dso_local i128 @cmpxchg_i128_aligned_seq_cst_acquire(i128 %expected, i128 %new, ptr %ptr) {
1253 ; -O0-LABEL: cmpxchg_i128_aligned_seq_cst_acquire:
1254 ; -O0: caspal x2, x3, x0, x1, [x4]
1256 ; -O1-LABEL: cmpxchg_i128_aligned_seq_cst_acquire:
1257 ; -O1: caspal x0, x1, x2, x3, [x4]
1258 %pair = cmpxchg ptr %ptr, i128 %expected, i128 %new seq_cst acquire, align 16
1259 %r = extractvalue { i128, i1 } %pair, 0
1263 define dso_local i128 @cmpxchg_i128_aligned_seq_cst_acquire_weak(i128 %expected, i128 %new, ptr %ptr) {
1264 ; -O0-LABEL: cmpxchg_i128_aligned_seq_cst_acquire_weak:
1265 ; -O0: caspal x2, x3, x0, x1, [x4]
1267 ; -O1-LABEL: cmpxchg_i128_aligned_seq_cst_acquire_weak:
1268 ; -O1: caspal x0, x1, x2, x3, [x4]
1269 %pair = cmpxchg weak ptr %ptr, i128 %expected, i128 %new seq_cst acquire, align 16
1270 %r = extractvalue { i128, i1 } %pair, 0
1274 define dso_local i128 @cmpxchg_i128_aligned_seq_cst_seq_cst(i128 %expected, i128 %new, ptr %ptr) {
1275 ; -O0-LABEL: cmpxchg_i128_aligned_seq_cst_seq_cst:
1276 ; -O0: caspal x2, x3, x0, x1, [x4]
1278 ; -O1-LABEL: cmpxchg_i128_aligned_seq_cst_seq_cst:
1279 ; -O1: caspal x0, x1, x2, x3, [x4]
1280 %pair = cmpxchg ptr %ptr, i128 %expected, i128 %new seq_cst seq_cst, align 16
1281 %r = extractvalue { i128, i1 } %pair, 0
1285 define dso_local i128 @cmpxchg_i128_aligned_seq_cst_seq_cst_weak(i128 %expected, i128 %new, ptr %ptr) {
1286 ; -O0-LABEL: cmpxchg_i128_aligned_seq_cst_seq_cst_weak:
1287 ; -O0: caspal x2, x3, x0, x1, [x4]
1289 ; -O1-LABEL: cmpxchg_i128_aligned_seq_cst_seq_cst_weak:
1290 ; -O1: caspal x0, x1, x2, x3, [x4]
1291 %pair = cmpxchg weak ptr %ptr, i128 %expected, i128 %new seq_cst seq_cst, align 16
1292 %r = extractvalue { i128, i1 } %pair, 0
1296 define dso_local i8 @cmpxchg_i8_unaligned_monotonic_monotonic(i8 %expected, i8 %new, ptr %ptr) {
1297 ; CHECK-LABEL: cmpxchg_i8_unaligned_monotonic_monotonic:
1298 ; CHECK: casb w0, w1, [x2]
1299 %pair = cmpxchg ptr %ptr, i8 %expected, i8 %new monotonic monotonic, align 1
1300 %r = extractvalue { i8, i1 } %pair, 0
1304 define dso_local i8 @cmpxchg_i8_unaligned_monotonic_monotonic_weak(i8 %expected, i8 %new, ptr %ptr) {
1305 ; CHECK-LABEL: cmpxchg_i8_unaligned_monotonic_monotonic_weak:
1306 ; CHECK: casb w0, w1, [x2]
1307 %pair = cmpxchg weak ptr %ptr, i8 %expected, i8 %new monotonic monotonic, align 1
1308 %r = extractvalue { i8, i1 } %pair, 0
1312 define dso_local i8 @cmpxchg_i8_unaligned_monotonic_acquire(i8 %expected, i8 %new, ptr %ptr) {
1313 ; CHECK-LABEL: cmpxchg_i8_unaligned_monotonic_acquire:
1314 ; CHECK: casab w0, w1, [x2]
1315 %pair = cmpxchg ptr %ptr, i8 %expected, i8 %new monotonic acquire, align 1
1316 %r = extractvalue { i8, i1 } %pair, 0
1320 define dso_local i8 @cmpxchg_i8_unaligned_monotonic_acquire_weak(i8 %expected, i8 %new, ptr %ptr) {
1321 ; CHECK-LABEL: cmpxchg_i8_unaligned_monotonic_acquire_weak:
1322 ; CHECK: casab w0, w1, [x2]
1323 %pair = cmpxchg weak ptr %ptr, i8 %expected, i8 %new monotonic acquire, align 1
1324 %r = extractvalue { i8, i1 } %pair, 0
1328 define dso_local i8 @cmpxchg_i8_unaligned_monotonic_seq_cst(i8 %expected, i8 %new, ptr %ptr) {
1329 ; CHECK-LABEL: cmpxchg_i8_unaligned_monotonic_seq_cst:
1330 ; CHECK: casalb w0, w1, [x2]
1331 %pair = cmpxchg ptr %ptr, i8 %expected, i8 %new monotonic seq_cst, align 1
1332 %r = extractvalue { i8, i1 } %pair, 0
1336 define dso_local i8 @cmpxchg_i8_unaligned_monotonic_seq_cst_weak(i8 %expected, i8 %new, ptr %ptr) {
1337 ; CHECK-LABEL: cmpxchg_i8_unaligned_monotonic_seq_cst_weak:
1338 ; CHECK: casalb w0, w1, [x2]
1339 %pair = cmpxchg weak ptr %ptr, i8 %expected, i8 %new monotonic seq_cst, align 1
1340 %r = extractvalue { i8, i1 } %pair, 0
1344 define dso_local i8 @cmpxchg_i8_unaligned_acquire_monotonic(i8 %expected, i8 %new, ptr %ptr) {
1345 ; CHECK-LABEL: cmpxchg_i8_unaligned_acquire_monotonic:
1346 ; CHECK: casab w0, w1, [x2]
1347 %pair = cmpxchg ptr %ptr, i8 %expected, i8 %new acquire monotonic, align 1
1348 %r = extractvalue { i8, i1 } %pair, 0
1352 define dso_local i8 @cmpxchg_i8_unaligned_acquire_monotonic_weak(i8 %expected, i8 %new, ptr %ptr) {
1353 ; CHECK-LABEL: cmpxchg_i8_unaligned_acquire_monotonic_weak:
1354 ; CHECK: casab w0, w1, [x2]
1355 %pair = cmpxchg weak ptr %ptr, i8 %expected, i8 %new acquire monotonic, align 1
1356 %r = extractvalue { i8, i1 } %pair, 0
1360 define dso_local i8 @cmpxchg_i8_unaligned_acquire_acquire(i8 %expected, i8 %new, ptr %ptr) {
1361 ; CHECK-LABEL: cmpxchg_i8_unaligned_acquire_acquire:
1362 ; CHECK: casab w0, w1, [x2]
1363 %pair = cmpxchg ptr %ptr, i8 %expected, i8 %new acquire acquire, align 1
1364 %r = extractvalue { i8, i1 } %pair, 0
1368 define dso_local i8 @cmpxchg_i8_unaligned_acquire_acquire_weak(i8 %expected, i8 %new, ptr %ptr) {
1369 ; CHECK-LABEL: cmpxchg_i8_unaligned_acquire_acquire_weak:
1370 ; CHECK: casab w0, w1, [x2]
1371 %pair = cmpxchg weak ptr %ptr, i8 %expected, i8 %new acquire acquire, align 1
1372 %r = extractvalue { i8, i1 } %pair, 0
1376 define dso_local i8 @cmpxchg_i8_unaligned_acquire_seq_cst(i8 %expected, i8 %new, ptr %ptr) {
1377 ; CHECK-LABEL: cmpxchg_i8_unaligned_acquire_seq_cst:
1378 ; CHECK: casalb w0, w1, [x2]
1379 %pair = cmpxchg ptr %ptr, i8 %expected, i8 %new acquire seq_cst, align 1
1380 %r = extractvalue { i8, i1 } %pair, 0
1384 define dso_local i8 @cmpxchg_i8_unaligned_acquire_seq_cst_weak(i8 %expected, i8 %new, ptr %ptr) {
1385 ; CHECK-LABEL: cmpxchg_i8_unaligned_acquire_seq_cst_weak:
1386 ; CHECK: casalb w0, w1, [x2]
1387 %pair = cmpxchg weak ptr %ptr, i8 %expected, i8 %new acquire seq_cst, align 1
1388 %r = extractvalue { i8, i1 } %pair, 0
1392 define dso_local i8 @cmpxchg_i8_unaligned_release_monotonic(i8 %expected, i8 %new, ptr %ptr) {
1393 ; CHECK-LABEL: cmpxchg_i8_unaligned_release_monotonic:
1394 ; CHECK: caslb w0, w1, [x2]
1395 %pair = cmpxchg ptr %ptr, i8 %expected, i8 %new release monotonic, align 1
1396 %r = extractvalue { i8, i1 } %pair, 0
1400 define dso_local i8 @cmpxchg_i8_unaligned_release_monotonic_weak(i8 %expected, i8 %new, ptr %ptr) {
1401 ; CHECK-LABEL: cmpxchg_i8_unaligned_release_monotonic_weak:
1402 ; CHECK: caslb w0, w1, [x2]
1403 %pair = cmpxchg weak ptr %ptr, i8 %expected, i8 %new release monotonic, align 1
1404 %r = extractvalue { i8, i1 } %pair, 0
1408 define dso_local i8 @cmpxchg_i8_unaligned_release_acquire(i8 %expected, i8 %new, ptr %ptr) {
1409 ; CHECK-LABEL: cmpxchg_i8_unaligned_release_acquire:
1410 ; CHECK: casalb w0, w1, [x2]
1411 %pair = cmpxchg ptr %ptr, i8 %expected, i8 %new release acquire, align 1
1412 %r = extractvalue { i8, i1 } %pair, 0
1416 define dso_local i8 @cmpxchg_i8_unaligned_release_acquire_weak(i8 %expected, i8 %new, ptr %ptr) {
1417 ; CHECK-LABEL: cmpxchg_i8_unaligned_release_acquire_weak:
1418 ; CHECK: casalb w0, w1, [x2]
1419 %pair = cmpxchg weak ptr %ptr, i8 %expected, i8 %new release acquire, align 1
1420 %r = extractvalue { i8, i1 } %pair, 0
1424 define dso_local i8 @cmpxchg_i8_unaligned_release_seq_cst(i8 %expected, i8 %new, ptr %ptr) {
1425 ; CHECK-LABEL: cmpxchg_i8_unaligned_release_seq_cst:
1426 ; CHECK: casalb w0, w1, [x2]
1427 %pair = cmpxchg ptr %ptr, i8 %expected, i8 %new release seq_cst, align 1
1428 %r = extractvalue { i8, i1 } %pair, 0
1432 define dso_local i8 @cmpxchg_i8_unaligned_release_seq_cst_weak(i8 %expected, i8 %new, ptr %ptr) {
1433 ; CHECK-LABEL: cmpxchg_i8_unaligned_release_seq_cst_weak:
1434 ; CHECK: casalb w0, w1, [x2]
1435 %pair = cmpxchg weak ptr %ptr, i8 %expected, i8 %new release seq_cst, align 1
1436 %r = extractvalue { i8, i1 } %pair, 0
1440 define dso_local i8 @cmpxchg_i8_unaligned_acq_rel_monotonic(i8 %expected, i8 %new, ptr %ptr) {
1441 ; CHECK-LABEL: cmpxchg_i8_unaligned_acq_rel_monotonic:
1442 ; CHECK: casalb w0, w1, [x2]
1443 %pair = cmpxchg ptr %ptr, i8 %expected, i8 %new acq_rel monotonic, align 1
1444 %r = extractvalue { i8, i1 } %pair, 0
1448 define dso_local i8 @cmpxchg_i8_unaligned_acq_rel_monotonic_weak(i8 %expected, i8 %new, ptr %ptr) {
1449 ; CHECK-LABEL: cmpxchg_i8_unaligned_acq_rel_monotonic_weak:
1450 ; CHECK: casalb w0, w1, [x2]
1451 %pair = cmpxchg weak ptr %ptr, i8 %expected, i8 %new acq_rel monotonic, align 1
1452 %r = extractvalue { i8, i1 } %pair, 0
1456 define dso_local i8 @cmpxchg_i8_unaligned_acq_rel_acquire(i8 %expected, i8 %new, ptr %ptr) {
1457 ; CHECK-LABEL: cmpxchg_i8_unaligned_acq_rel_acquire:
1458 ; CHECK: casalb w0, w1, [x2]
1459 %pair = cmpxchg ptr %ptr, i8 %expected, i8 %new acq_rel acquire, align 1
1460 %r = extractvalue { i8, i1 } %pair, 0
1464 define dso_local i8 @cmpxchg_i8_unaligned_acq_rel_acquire_weak(i8 %expected, i8 %new, ptr %ptr) {
1465 ; CHECK-LABEL: cmpxchg_i8_unaligned_acq_rel_acquire_weak:
1466 ; CHECK: casalb w0, w1, [x2]
1467 %pair = cmpxchg weak ptr %ptr, i8 %expected, i8 %new acq_rel acquire, align 1
1468 %r = extractvalue { i8, i1 } %pair, 0
1472 define dso_local i8 @cmpxchg_i8_unaligned_acq_rel_seq_cst(i8 %expected, i8 %new, ptr %ptr) {
1473 ; CHECK-LABEL: cmpxchg_i8_unaligned_acq_rel_seq_cst:
1474 ; CHECK: casalb w0, w1, [x2]
1475 %pair = cmpxchg ptr %ptr, i8 %expected, i8 %new acq_rel seq_cst, align 1
1476 %r = extractvalue { i8, i1 } %pair, 0
1480 define dso_local i8 @cmpxchg_i8_unaligned_acq_rel_seq_cst_weak(i8 %expected, i8 %new, ptr %ptr) {
1481 ; CHECK-LABEL: cmpxchg_i8_unaligned_acq_rel_seq_cst_weak:
1482 ; CHECK: casalb w0, w1, [x2]
1483 %pair = cmpxchg weak ptr %ptr, i8 %expected, i8 %new acq_rel seq_cst, align 1
1484 %r = extractvalue { i8, i1 } %pair, 0
1488 define dso_local i8 @cmpxchg_i8_unaligned_seq_cst_monotonic(i8 %expected, i8 %new, ptr %ptr) {
1489 ; CHECK-LABEL: cmpxchg_i8_unaligned_seq_cst_monotonic:
1490 ; CHECK: casalb w0, w1, [x2]
1491 %pair = cmpxchg ptr %ptr, i8 %expected, i8 %new seq_cst monotonic, align 1
1492 %r = extractvalue { i8, i1 } %pair, 0
1496 define dso_local i8 @cmpxchg_i8_unaligned_seq_cst_monotonic_weak(i8 %expected, i8 %new, ptr %ptr) {
1497 ; CHECK-LABEL: cmpxchg_i8_unaligned_seq_cst_monotonic_weak:
1498 ; CHECK: casalb w0, w1, [x2]
1499 %pair = cmpxchg weak ptr %ptr, i8 %expected, i8 %new seq_cst monotonic, align 1
1500 %r = extractvalue { i8, i1 } %pair, 0
1504 define dso_local i8 @cmpxchg_i8_unaligned_seq_cst_acquire(i8 %expected, i8 %new, ptr %ptr) {
1505 ; CHECK-LABEL: cmpxchg_i8_unaligned_seq_cst_acquire:
1506 ; CHECK: casalb w0, w1, [x2]
1507 %pair = cmpxchg ptr %ptr, i8 %expected, i8 %new seq_cst acquire, align 1
1508 %r = extractvalue { i8, i1 } %pair, 0
1512 define dso_local i8 @cmpxchg_i8_unaligned_seq_cst_acquire_weak(i8 %expected, i8 %new, ptr %ptr) {
1513 ; CHECK-LABEL: cmpxchg_i8_unaligned_seq_cst_acquire_weak:
1514 ; CHECK: casalb w0, w1, [x2]
1515 %pair = cmpxchg weak ptr %ptr, i8 %expected, i8 %new seq_cst acquire, align 1
1516 %r = extractvalue { i8, i1 } %pair, 0
1520 define dso_local i8 @cmpxchg_i8_unaligned_seq_cst_seq_cst(i8 %expected, i8 %new, ptr %ptr) {
1521 ; CHECK-LABEL: cmpxchg_i8_unaligned_seq_cst_seq_cst:
1522 ; CHECK: casalb w0, w1, [x2]
1523 %pair = cmpxchg ptr %ptr, i8 %expected, i8 %new seq_cst seq_cst, align 1
1524 %r = extractvalue { i8, i1 } %pair, 0
1528 define dso_local i8 @cmpxchg_i8_unaligned_seq_cst_seq_cst_weak(i8 %expected, i8 %new, ptr %ptr) {
1529 ; CHECK-LABEL: cmpxchg_i8_unaligned_seq_cst_seq_cst_weak:
1530 ; CHECK: casalb w0, w1, [x2]
1531 %pair = cmpxchg weak ptr %ptr, i8 %expected, i8 %new seq_cst seq_cst, align 1
1532 %r = extractvalue { i8, i1 } %pair, 0
1536 define dso_local i16 @cmpxchg_i16_unaligned_monotonic_monotonic(i16 %expected, i16 %new, ptr %ptr) {
1537 ; CHECK-LABEL: cmpxchg_i16_unaligned_monotonic_monotonic:
1538 ; CHECK: bl __atomic_compare_exchange
1539 %pair = cmpxchg ptr %ptr, i16 %expected, i16 %new monotonic monotonic, align 1
1540 %r = extractvalue { i16, i1 } %pair, 0
1544 define dso_local i16 @cmpxchg_i16_unaligned_monotonic_monotonic_weak(i16 %expected, i16 %new, ptr %ptr) {
1545 ; CHECK-LABEL: cmpxchg_i16_unaligned_monotonic_monotonic_weak:
1546 ; CHECK: bl __atomic_compare_exchange
1547 %pair = cmpxchg weak ptr %ptr, i16 %expected, i16 %new monotonic monotonic, align 1
1548 %r = extractvalue { i16, i1 } %pair, 0
1552 define dso_local i16 @cmpxchg_i16_unaligned_monotonic_acquire(i16 %expected, i16 %new, ptr %ptr) {
1553 ; CHECK-LABEL: cmpxchg_i16_unaligned_monotonic_acquire:
1554 ; CHECK: bl __atomic_compare_exchange
1555 %pair = cmpxchg ptr %ptr, i16 %expected, i16 %new monotonic acquire, align 1
1556 %r = extractvalue { i16, i1 } %pair, 0
1560 define dso_local i16 @cmpxchg_i16_unaligned_monotonic_acquire_weak(i16 %expected, i16 %new, ptr %ptr) {
1561 ; CHECK-LABEL: cmpxchg_i16_unaligned_monotonic_acquire_weak:
1562 ; CHECK: bl __atomic_compare_exchange
1563 %pair = cmpxchg weak ptr %ptr, i16 %expected, i16 %new monotonic acquire, align 1
1564 %r = extractvalue { i16, i1 } %pair, 0
1568 define dso_local i16 @cmpxchg_i16_unaligned_monotonic_seq_cst(i16 %expected, i16 %new, ptr %ptr) {
1569 ; CHECK-LABEL: cmpxchg_i16_unaligned_monotonic_seq_cst:
1570 ; CHECK: bl __atomic_compare_exchange
1571 %pair = cmpxchg ptr %ptr, i16 %expected, i16 %new monotonic seq_cst, align 1
1572 %r = extractvalue { i16, i1 } %pair, 0
1576 define dso_local i16 @cmpxchg_i16_unaligned_monotonic_seq_cst_weak(i16 %expected, i16 %new, ptr %ptr) {
1577 ; CHECK-LABEL: cmpxchg_i16_unaligned_monotonic_seq_cst_weak:
1578 ; CHECK: bl __atomic_compare_exchange
1579 %pair = cmpxchg weak ptr %ptr, i16 %expected, i16 %new monotonic seq_cst, align 1
1580 %r = extractvalue { i16, i1 } %pair, 0
1584 define dso_local i16 @cmpxchg_i16_unaligned_acquire_monotonic(i16 %expected, i16 %new, ptr %ptr) {
1585 ; CHECK-LABEL: cmpxchg_i16_unaligned_acquire_monotonic:
1586 ; CHECK: bl __atomic_compare_exchange
1587 %pair = cmpxchg ptr %ptr, i16 %expected, i16 %new acquire monotonic, align 1
1588 %r = extractvalue { i16, i1 } %pair, 0
1592 define dso_local i16 @cmpxchg_i16_unaligned_acquire_monotonic_weak(i16 %expected, i16 %new, ptr %ptr) {
1593 ; CHECK-LABEL: cmpxchg_i16_unaligned_acquire_monotonic_weak:
1594 ; CHECK: bl __atomic_compare_exchange
1595 %pair = cmpxchg weak ptr %ptr, i16 %expected, i16 %new acquire monotonic, align 1
1596 %r = extractvalue { i16, i1 } %pair, 0
1600 define dso_local i16 @cmpxchg_i16_unaligned_acquire_acquire(i16 %expected, i16 %new, ptr %ptr) {
1601 ; CHECK-LABEL: cmpxchg_i16_unaligned_acquire_acquire:
1602 ; CHECK: bl __atomic_compare_exchange
1603 %pair = cmpxchg ptr %ptr, i16 %expected, i16 %new acquire acquire, align 1
1604 %r = extractvalue { i16, i1 } %pair, 0
1608 define dso_local i16 @cmpxchg_i16_unaligned_acquire_acquire_weak(i16 %expected, i16 %new, ptr %ptr) {
1609 ; CHECK-LABEL: cmpxchg_i16_unaligned_acquire_acquire_weak:
1610 ; CHECK: bl __atomic_compare_exchange
1611 %pair = cmpxchg weak ptr %ptr, i16 %expected, i16 %new acquire acquire, align 1
1612 %r = extractvalue { i16, i1 } %pair, 0
1616 define dso_local i16 @cmpxchg_i16_unaligned_acquire_seq_cst(i16 %expected, i16 %new, ptr %ptr) {
1617 ; CHECK-LABEL: cmpxchg_i16_unaligned_acquire_seq_cst:
1618 ; CHECK: bl __atomic_compare_exchange
1619 %pair = cmpxchg ptr %ptr, i16 %expected, i16 %new acquire seq_cst, align 1
1620 %r = extractvalue { i16, i1 } %pair, 0
1624 define dso_local i16 @cmpxchg_i16_unaligned_acquire_seq_cst_weak(i16 %expected, i16 %new, ptr %ptr) {
1625 ; CHECK-LABEL: cmpxchg_i16_unaligned_acquire_seq_cst_weak:
1626 ; CHECK: bl __atomic_compare_exchange
1627 %pair = cmpxchg weak ptr %ptr, i16 %expected, i16 %new acquire seq_cst, align 1
1628 %r = extractvalue { i16, i1 } %pair, 0
1632 define dso_local i16 @cmpxchg_i16_unaligned_release_monotonic(i16 %expected, i16 %new, ptr %ptr) {
1633 ; CHECK-LABEL: cmpxchg_i16_unaligned_release_monotonic:
1634 ; CHECK: bl __atomic_compare_exchange
1635 %pair = cmpxchg ptr %ptr, i16 %expected, i16 %new release monotonic, align 1
1636 %r = extractvalue { i16, i1 } %pair, 0
1640 define dso_local i16 @cmpxchg_i16_unaligned_release_monotonic_weak(i16 %expected, i16 %new, ptr %ptr) {
1641 ; CHECK-LABEL: cmpxchg_i16_unaligned_release_monotonic_weak:
1642 ; CHECK: bl __atomic_compare_exchange
1643 %pair = cmpxchg weak ptr %ptr, i16 %expected, i16 %new release monotonic, align 1
1644 %r = extractvalue { i16, i1 } %pair, 0
1648 define dso_local i16 @cmpxchg_i16_unaligned_release_acquire(i16 %expected, i16 %new, ptr %ptr) {
1649 ; CHECK-LABEL: cmpxchg_i16_unaligned_release_acquire:
1650 ; CHECK: bl __atomic_compare_exchange
1651 %pair = cmpxchg ptr %ptr, i16 %expected, i16 %new release acquire, align 1
1652 %r = extractvalue { i16, i1 } %pair, 0
1656 define dso_local i16 @cmpxchg_i16_unaligned_release_acquire_weak(i16 %expected, i16 %new, ptr %ptr) {
1657 ; CHECK-LABEL: cmpxchg_i16_unaligned_release_acquire_weak:
1658 ; CHECK: bl __atomic_compare_exchange
1659 %pair = cmpxchg weak ptr %ptr, i16 %expected, i16 %new release acquire, align 1
1660 %r = extractvalue { i16, i1 } %pair, 0
1664 define dso_local i16 @cmpxchg_i16_unaligned_release_seq_cst(i16 %expected, i16 %new, ptr %ptr) {
1665 ; CHECK-LABEL: cmpxchg_i16_unaligned_release_seq_cst:
1666 ; CHECK: bl __atomic_compare_exchange
1667 %pair = cmpxchg ptr %ptr, i16 %expected, i16 %new release seq_cst, align 1
1668 %r = extractvalue { i16, i1 } %pair, 0
1672 define dso_local i16 @cmpxchg_i16_unaligned_release_seq_cst_weak(i16 %expected, i16 %new, ptr %ptr) {
1673 ; CHECK-LABEL: cmpxchg_i16_unaligned_release_seq_cst_weak:
1674 ; CHECK: bl __atomic_compare_exchange
1675 %pair = cmpxchg weak ptr %ptr, i16 %expected, i16 %new release seq_cst, align 1
1676 %r = extractvalue { i16, i1 } %pair, 0
1680 define dso_local i16 @cmpxchg_i16_unaligned_acq_rel_monotonic(i16 %expected, i16 %new, ptr %ptr) {
1681 ; CHECK-LABEL: cmpxchg_i16_unaligned_acq_rel_monotonic:
1682 ; CHECK: bl __atomic_compare_exchange
1683 %pair = cmpxchg ptr %ptr, i16 %expected, i16 %new acq_rel monotonic, align 1
1684 %r = extractvalue { i16, i1 } %pair, 0
1688 define dso_local i16 @cmpxchg_i16_unaligned_acq_rel_monotonic_weak(i16 %expected, i16 %new, ptr %ptr) {
1689 ; CHECK-LABEL: cmpxchg_i16_unaligned_acq_rel_monotonic_weak:
1690 ; CHECK: bl __atomic_compare_exchange
1691 %pair = cmpxchg weak ptr %ptr, i16 %expected, i16 %new acq_rel monotonic, align 1
1692 %r = extractvalue { i16, i1 } %pair, 0
1696 define dso_local i16 @cmpxchg_i16_unaligned_acq_rel_acquire(i16 %expected, i16 %new, ptr %ptr) {
1697 ; CHECK-LABEL: cmpxchg_i16_unaligned_acq_rel_acquire:
1698 ; CHECK: bl __atomic_compare_exchange
1699 %pair = cmpxchg ptr %ptr, i16 %expected, i16 %new acq_rel acquire, align 1
1700 %r = extractvalue { i16, i1 } %pair, 0
1704 define dso_local i16 @cmpxchg_i16_unaligned_acq_rel_acquire_weak(i16 %expected, i16 %new, ptr %ptr) {
1705 ; CHECK-LABEL: cmpxchg_i16_unaligned_acq_rel_acquire_weak:
1706 ; CHECK: bl __atomic_compare_exchange
1707 %pair = cmpxchg weak ptr %ptr, i16 %expected, i16 %new acq_rel acquire, align 1
1708 %r = extractvalue { i16, i1 } %pair, 0
1712 define dso_local i16 @cmpxchg_i16_unaligned_acq_rel_seq_cst(i16 %expected, i16 %new, ptr %ptr) {
1713 ; CHECK-LABEL: cmpxchg_i16_unaligned_acq_rel_seq_cst:
1714 ; CHECK: bl __atomic_compare_exchange
1715 %pair = cmpxchg ptr %ptr, i16 %expected, i16 %new acq_rel seq_cst, align 1
1716 %r = extractvalue { i16, i1 } %pair, 0
1720 define dso_local i16 @cmpxchg_i16_unaligned_acq_rel_seq_cst_weak(i16 %expected, i16 %new, ptr %ptr) {
1721 ; CHECK-LABEL: cmpxchg_i16_unaligned_acq_rel_seq_cst_weak:
1722 ; CHECK: bl __atomic_compare_exchange
1723 %pair = cmpxchg weak ptr %ptr, i16 %expected, i16 %new acq_rel seq_cst, align 1
1724 %r = extractvalue { i16, i1 } %pair, 0
1728 define dso_local i16 @cmpxchg_i16_unaligned_seq_cst_monotonic(i16 %expected, i16 %new, ptr %ptr) {
1729 ; CHECK-LABEL: cmpxchg_i16_unaligned_seq_cst_monotonic:
1730 ; CHECK: bl __atomic_compare_exchange
1731 %pair = cmpxchg ptr %ptr, i16 %expected, i16 %new seq_cst monotonic, align 1
1732 %r = extractvalue { i16, i1 } %pair, 0
1736 define dso_local i16 @cmpxchg_i16_unaligned_seq_cst_monotonic_weak(i16 %expected, i16 %new, ptr %ptr) {
1737 ; CHECK-LABEL: cmpxchg_i16_unaligned_seq_cst_monotonic_weak:
1738 ; CHECK: bl __atomic_compare_exchange
1739 %pair = cmpxchg weak ptr %ptr, i16 %expected, i16 %new seq_cst monotonic, align 1
1740 %r = extractvalue { i16, i1 } %pair, 0
1744 define dso_local i16 @cmpxchg_i16_unaligned_seq_cst_acquire(i16 %expected, i16 %new, ptr %ptr) {
1745 ; CHECK-LABEL: cmpxchg_i16_unaligned_seq_cst_acquire:
1746 ; CHECK: bl __atomic_compare_exchange
1747 %pair = cmpxchg ptr %ptr, i16 %expected, i16 %new seq_cst acquire, align 1
1748 %r = extractvalue { i16, i1 } %pair, 0
1752 define dso_local i16 @cmpxchg_i16_unaligned_seq_cst_acquire_weak(i16 %expected, i16 %new, ptr %ptr) {
1753 ; CHECK-LABEL: cmpxchg_i16_unaligned_seq_cst_acquire_weak:
1754 ; CHECK: bl __atomic_compare_exchange
1755 %pair = cmpxchg weak ptr %ptr, i16 %expected, i16 %new seq_cst acquire, align 1
1756 %r = extractvalue { i16, i1 } %pair, 0
1760 define dso_local i16 @cmpxchg_i16_unaligned_seq_cst_seq_cst(i16 %expected, i16 %new, ptr %ptr) {
1761 ; CHECK-LABEL: cmpxchg_i16_unaligned_seq_cst_seq_cst:
1762 ; CHECK: bl __atomic_compare_exchange
1763 %pair = cmpxchg ptr %ptr, i16 %expected, i16 %new seq_cst seq_cst, align 1
1764 %r = extractvalue { i16, i1 } %pair, 0
1768 define dso_local i16 @cmpxchg_i16_unaligned_seq_cst_seq_cst_weak(i16 %expected, i16 %new, ptr %ptr) {
1769 ; CHECK-LABEL: cmpxchg_i16_unaligned_seq_cst_seq_cst_weak:
1770 ; CHECK: bl __atomic_compare_exchange
1771 %pair = cmpxchg weak ptr %ptr, i16 %expected, i16 %new seq_cst seq_cst, align 1
1772 %r = extractvalue { i16, i1 } %pair, 0
1776 define dso_local i32 @cmpxchg_i32_unaligned_monotonic_monotonic(i32 %expected, i32 %new, ptr %ptr) {
1777 ; CHECK-LABEL: cmpxchg_i32_unaligned_monotonic_monotonic:
1778 ; CHECK: bl __atomic_compare_exchange
1779 %pair = cmpxchg ptr %ptr, i32 %expected, i32 %new monotonic monotonic, align 1
1780 %r = extractvalue { i32, i1 } %pair, 0
1784 define dso_local i32 @cmpxchg_i32_unaligned_monotonic_monotonic_weak(i32 %expected, i32 %new, ptr %ptr) {
1785 ; CHECK-LABEL: cmpxchg_i32_unaligned_monotonic_monotonic_weak:
1786 ; CHECK: bl __atomic_compare_exchange
1787 %pair = cmpxchg weak ptr %ptr, i32 %expected, i32 %new monotonic monotonic, align 1
1788 %r = extractvalue { i32, i1 } %pair, 0
1792 define dso_local i32 @cmpxchg_i32_unaligned_monotonic_acquire(i32 %expected, i32 %new, ptr %ptr) {
1793 ; CHECK-LABEL: cmpxchg_i32_unaligned_monotonic_acquire:
1794 ; CHECK: bl __atomic_compare_exchange
1795 %pair = cmpxchg ptr %ptr, i32 %expected, i32 %new monotonic acquire, align 1
1796 %r = extractvalue { i32, i1 } %pair, 0
1800 define dso_local i32 @cmpxchg_i32_unaligned_monotonic_acquire_weak(i32 %expected, i32 %new, ptr %ptr) {
1801 ; CHECK-LABEL: cmpxchg_i32_unaligned_monotonic_acquire_weak:
1802 ; CHECK: bl __atomic_compare_exchange
1803 %pair = cmpxchg weak ptr %ptr, i32 %expected, i32 %new monotonic acquire, align 1
1804 %r = extractvalue { i32, i1 } %pair, 0
1808 define dso_local i32 @cmpxchg_i32_unaligned_monotonic_seq_cst(i32 %expected, i32 %new, ptr %ptr) {
1809 ; CHECK-LABEL: cmpxchg_i32_unaligned_monotonic_seq_cst:
1810 ; CHECK: bl __atomic_compare_exchange
1811 %pair = cmpxchg ptr %ptr, i32 %expected, i32 %new monotonic seq_cst, align 1
1812 %r = extractvalue { i32, i1 } %pair, 0
1816 define dso_local i32 @cmpxchg_i32_unaligned_monotonic_seq_cst_weak(i32 %expected, i32 %new, ptr %ptr) {
1817 ; CHECK-LABEL: cmpxchg_i32_unaligned_monotonic_seq_cst_weak:
1818 ; CHECK: bl __atomic_compare_exchange
1819 %pair = cmpxchg weak ptr %ptr, i32 %expected, i32 %new monotonic seq_cst, align 1
1820 %r = extractvalue { i32, i1 } %pair, 0
1824 define dso_local i32 @cmpxchg_i32_unaligned_acquire_monotonic(i32 %expected, i32 %new, ptr %ptr) {
1825 ; CHECK-LABEL: cmpxchg_i32_unaligned_acquire_monotonic:
1826 ; CHECK: bl __atomic_compare_exchange
1827 %pair = cmpxchg ptr %ptr, i32 %expected, i32 %new acquire monotonic, align 1
1828 %r = extractvalue { i32, i1 } %pair, 0
1832 define dso_local i32 @cmpxchg_i32_unaligned_acquire_monotonic_weak(i32 %expected, i32 %new, ptr %ptr) {
1833 ; CHECK-LABEL: cmpxchg_i32_unaligned_acquire_monotonic_weak:
1834 ; CHECK: bl __atomic_compare_exchange
1835 %pair = cmpxchg weak ptr %ptr, i32 %expected, i32 %new acquire monotonic, align 1
1836 %r = extractvalue { i32, i1 } %pair, 0
1840 define dso_local i32 @cmpxchg_i32_unaligned_acquire_acquire(i32 %expected, i32 %new, ptr %ptr) {
1841 ; CHECK-LABEL: cmpxchg_i32_unaligned_acquire_acquire:
1842 ; CHECK: bl __atomic_compare_exchange
1843 %pair = cmpxchg ptr %ptr, i32 %expected, i32 %new acquire acquire, align 1
1844 %r = extractvalue { i32, i1 } %pair, 0
1848 define dso_local i32 @cmpxchg_i32_unaligned_acquire_acquire_weak(i32 %expected, i32 %new, ptr %ptr) {
1849 ; CHECK-LABEL: cmpxchg_i32_unaligned_acquire_acquire_weak:
1850 ; CHECK: bl __atomic_compare_exchange
1851 %pair = cmpxchg weak ptr %ptr, i32 %expected, i32 %new acquire acquire, align 1
1852 %r = extractvalue { i32, i1 } %pair, 0
1856 define dso_local i32 @cmpxchg_i32_unaligned_acquire_seq_cst(i32 %expected, i32 %new, ptr %ptr) {
1857 ; CHECK-LABEL: cmpxchg_i32_unaligned_acquire_seq_cst:
1858 ; CHECK: bl __atomic_compare_exchange
1859 %pair = cmpxchg ptr %ptr, i32 %expected, i32 %new acquire seq_cst, align 1
1860 %r = extractvalue { i32, i1 } %pair, 0
1864 define dso_local i32 @cmpxchg_i32_unaligned_acquire_seq_cst_weak(i32 %expected, i32 %new, ptr %ptr) {
1865 ; CHECK-LABEL: cmpxchg_i32_unaligned_acquire_seq_cst_weak:
1866 ; CHECK: bl __atomic_compare_exchange
1867 %pair = cmpxchg weak ptr %ptr, i32 %expected, i32 %new acquire seq_cst, align 1
1868 %r = extractvalue { i32, i1 } %pair, 0
1872 define dso_local i32 @cmpxchg_i32_unaligned_release_monotonic(i32 %expected, i32 %new, ptr %ptr) {
1873 ; CHECK-LABEL: cmpxchg_i32_unaligned_release_monotonic:
1874 ; CHECK: bl __atomic_compare_exchange
1875 %pair = cmpxchg ptr %ptr, i32 %expected, i32 %new release monotonic, align 1
1876 %r = extractvalue { i32, i1 } %pair, 0
1880 define dso_local i32 @cmpxchg_i32_unaligned_release_monotonic_weak(i32 %expected, i32 %new, ptr %ptr) {
1881 ; CHECK-LABEL: cmpxchg_i32_unaligned_release_monotonic_weak:
1882 ; CHECK: bl __atomic_compare_exchange
1883 %pair = cmpxchg weak ptr %ptr, i32 %expected, i32 %new release monotonic, align 1
1884 %r = extractvalue { i32, i1 } %pair, 0
1888 define dso_local i32 @cmpxchg_i32_unaligned_release_acquire(i32 %expected, i32 %new, ptr %ptr) {
1889 ; CHECK-LABEL: cmpxchg_i32_unaligned_release_acquire:
1890 ; CHECK: bl __atomic_compare_exchange
1891 %pair = cmpxchg ptr %ptr, i32 %expected, i32 %new release acquire, align 1
1892 %r = extractvalue { i32, i1 } %pair, 0
1896 define dso_local i32 @cmpxchg_i32_unaligned_release_acquire_weak(i32 %expected, i32 %new, ptr %ptr) {
1897 ; CHECK-LABEL: cmpxchg_i32_unaligned_release_acquire_weak:
1898 ; CHECK: bl __atomic_compare_exchange
1899 %pair = cmpxchg weak ptr %ptr, i32 %expected, i32 %new release acquire, align 1
1900 %r = extractvalue { i32, i1 } %pair, 0
1904 define dso_local i32 @cmpxchg_i32_unaligned_release_seq_cst(i32 %expected, i32 %new, ptr %ptr) {
1905 ; CHECK-LABEL: cmpxchg_i32_unaligned_release_seq_cst:
1906 ; CHECK: bl __atomic_compare_exchange
1907 %pair = cmpxchg ptr %ptr, i32 %expected, i32 %new release seq_cst, align 1
1908 %r = extractvalue { i32, i1 } %pair, 0
1912 define dso_local i32 @cmpxchg_i32_unaligned_release_seq_cst_weak(i32 %expected, i32 %new, ptr %ptr) {
1913 ; CHECK-LABEL: cmpxchg_i32_unaligned_release_seq_cst_weak:
1914 ; CHECK: bl __atomic_compare_exchange
1915 %pair = cmpxchg weak ptr %ptr, i32 %expected, i32 %new release seq_cst, align 1
1916 %r = extractvalue { i32, i1 } %pair, 0
1920 define dso_local i32 @cmpxchg_i32_unaligned_acq_rel_monotonic(i32 %expected, i32 %new, ptr %ptr) {
1921 ; CHECK-LABEL: cmpxchg_i32_unaligned_acq_rel_monotonic:
1922 ; CHECK: bl __atomic_compare_exchange
1923 %pair = cmpxchg ptr %ptr, i32 %expected, i32 %new acq_rel monotonic, align 1
1924 %r = extractvalue { i32, i1 } %pair, 0
1928 define dso_local i32 @cmpxchg_i32_unaligned_acq_rel_monotonic_weak(i32 %expected, i32 %new, ptr %ptr) {
1929 ; CHECK-LABEL: cmpxchg_i32_unaligned_acq_rel_monotonic_weak:
1930 ; CHECK: bl __atomic_compare_exchange
1931 %pair = cmpxchg weak ptr %ptr, i32 %expected, i32 %new acq_rel monotonic, align 1
1932 %r = extractvalue { i32, i1 } %pair, 0
1936 define dso_local i32 @cmpxchg_i32_unaligned_acq_rel_acquire(i32 %expected, i32 %new, ptr %ptr) {
1937 ; CHECK-LABEL: cmpxchg_i32_unaligned_acq_rel_acquire:
1938 ; CHECK: bl __atomic_compare_exchange
1939 %pair = cmpxchg ptr %ptr, i32 %expected, i32 %new acq_rel acquire, align 1
1940 %r = extractvalue { i32, i1 } %pair, 0
1944 define dso_local i32 @cmpxchg_i32_unaligned_acq_rel_acquire_weak(i32 %expected, i32 %new, ptr %ptr) {
1945 ; CHECK-LABEL: cmpxchg_i32_unaligned_acq_rel_acquire_weak:
1946 ; CHECK: bl __atomic_compare_exchange
1947 %pair = cmpxchg weak ptr %ptr, i32 %expected, i32 %new acq_rel acquire, align 1
1948 %r = extractvalue { i32, i1 } %pair, 0
1952 define dso_local i32 @cmpxchg_i32_unaligned_acq_rel_seq_cst(i32 %expected, i32 %new, ptr %ptr) {
1953 ; CHECK-LABEL: cmpxchg_i32_unaligned_acq_rel_seq_cst:
1954 ; CHECK: bl __atomic_compare_exchange
1955 %pair = cmpxchg ptr %ptr, i32 %expected, i32 %new acq_rel seq_cst, align 1
1956 %r = extractvalue { i32, i1 } %pair, 0
1960 define dso_local i32 @cmpxchg_i32_unaligned_acq_rel_seq_cst_weak(i32 %expected, i32 %new, ptr %ptr) {
1961 ; CHECK-LABEL: cmpxchg_i32_unaligned_acq_rel_seq_cst_weak:
1962 ; CHECK: bl __atomic_compare_exchange
1963 %pair = cmpxchg weak ptr %ptr, i32 %expected, i32 %new acq_rel seq_cst, align 1
1964 %r = extractvalue { i32, i1 } %pair, 0
1968 define dso_local i32 @cmpxchg_i32_unaligned_seq_cst_monotonic(i32 %expected, i32 %new, ptr %ptr) {
1969 ; CHECK-LABEL: cmpxchg_i32_unaligned_seq_cst_monotonic:
1970 ; CHECK: bl __atomic_compare_exchange
1971 %pair = cmpxchg ptr %ptr, i32 %expected, i32 %new seq_cst monotonic, align 1
1972 %r = extractvalue { i32, i1 } %pair, 0
1976 define dso_local i32 @cmpxchg_i32_unaligned_seq_cst_monotonic_weak(i32 %expected, i32 %new, ptr %ptr) {
1977 ; CHECK-LABEL: cmpxchg_i32_unaligned_seq_cst_monotonic_weak:
1978 ; CHECK: bl __atomic_compare_exchange
1979 %pair = cmpxchg weak ptr %ptr, i32 %expected, i32 %new seq_cst monotonic, align 1
1980 %r = extractvalue { i32, i1 } %pair, 0
1984 define dso_local i32 @cmpxchg_i32_unaligned_seq_cst_acquire(i32 %expected, i32 %new, ptr %ptr) {
1985 ; CHECK-LABEL: cmpxchg_i32_unaligned_seq_cst_acquire:
1986 ; CHECK: bl __atomic_compare_exchange
1987 %pair = cmpxchg ptr %ptr, i32 %expected, i32 %new seq_cst acquire, align 1
1988 %r = extractvalue { i32, i1 } %pair, 0
1992 define dso_local i32 @cmpxchg_i32_unaligned_seq_cst_acquire_weak(i32 %expected, i32 %new, ptr %ptr) {
1993 ; CHECK-LABEL: cmpxchg_i32_unaligned_seq_cst_acquire_weak:
1994 ; CHECK: bl __atomic_compare_exchange
1995 %pair = cmpxchg weak ptr %ptr, i32 %expected, i32 %new seq_cst acquire, align 1
1996 %r = extractvalue { i32, i1 } %pair, 0
2000 define dso_local i32 @cmpxchg_i32_unaligned_seq_cst_seq_cst(i32 %expected, i32 %new, ptr %ptr) {
2001 ; CHECK-LABEL: cmpxchg_i32_unaligned_seq_cst_seq_cst:
2002 ; CHECK: bl __atomic_compare_exchange
2003 %pair = cmpxchg ptr %ptr, i32 %expected, i32 %new seq_cst seq_cst, align 1
2004 %r = extractvalue { i32, i1 } %pair, 0
2008 define dso_local i32 @cmpxchg_i32_unaligned_seq_cst_seq_cst_weak(i32 %expected, i32 %new, ptr %ptr) {
2009 ; CHECK-LABEL: cmpxchg_i32_unaligned_seq_cst_seq_cst_weak:
2010 ; CHECK: bl __atomic_compare_exchange
2011 %pair = cmpxchg weak ptr %ptr, i32 %expected, i32 %new seq_cst seq_cst, align 1
2012 %r = extractvalue { i32, i1 } %pair, 0
2016 define dso_local i64 @cmpxchg_i64_unaligned_monotonic_monotonic(i64 %expected, i64 %new, ptr %ptr) {
2017 ; CHECK-LABEL: cmpxchg_i64_unaligned_monotonic_monotonic:
2018 ; CHECK: bl __atomic_compare_exchange
2019 %pair = cmpxchg ptr %ptr, i64 %expected, i64 %new monotonic monotonic, align 1
2020 %r = extractvalue { i64, i1 } %pair, 0
2024 define dso_local i64 @cmpxchg_i64_unaligned_monotonic_monotonic_weak(i64 %expected, i64 %new, ptr %ptr) {
2025 ; CHECK-LABEL: cmpxchg_i64_unaligned_monotonic_monotonic_weak:
2026 ; CHECK: bl __atomic_compare_exchange
2027 %pair = cmpxchg weak ptr %ptr, i64 %expected, i64 %new monotonic monotonic, align 1
2028 %r = extractvalue { i64, i1 } %pair, 0
2032 define dso_local i64 @cmpxchg_i64_unaligned_monotonic_acquire(i64 %expected, i64 %new, ptr %ptr) {
2033 ; CHECK-LABEL: cmpxchg_i64_unaligned_monotonic_acquire:
2034 ; CHECK: bl __atomic_compare_exchange
2035 %pair = cmpxchg ptr %ptr, i64 %expected, i64 %new monotonic acquire, align 1
2036 %r = extractvalue { i64, i1 } %pair, 0
2040 define dso_local i64 @cmpxchg_i64_unaligned_monotonic_acquire_weak(i64 %expected, i64 %new, ptr %ptr) {
2041 ; CHECK-LABEL: cmpxchg_i64_unaligned_monotonic_acquire_weak:
2042 ; CHECK: bl __atomic_compare_exchange
2043 %pair = cmpxchg weak ptr %ptr, i64 %expected, i64 %new monotonic acquire, align 1
2044 %r = extractvalue { i64, i1 } %pair, 0
2048 define dso_local i64 @cmpxchg_i64_unaligned_monotonic_seq_cst(i64 %expected, i64 %new, ptr %ptr) {
2049 ; CHECK-LABEL: cmpxchg_i64_unaligned_monotonic_seq_cst:
2050 ; CHECK: bl __atomic_compare_exchange
2051 %pair = cmpxchg ptr %ptr, i64 %expected, i64 %new monotonic seq_cst, align 1
2052 %r = extractvalue { i64, i1 } %pair, 0
2056 define dso_local i64 @cmpxchg_i64_unaligned_monotonic_seq_cst_weak(i64 %expected, i64 %new, ptr %ptr) {
2057 ; CHECK-LABEL: cmpxchg_i64_unaligned_monotonic_seq_cst_weak:
2058 ; CHECK: bl __atomic_compare_exchange
2059 %pair = cmpxchg weak ptr %ptr, i64 %expected, i64 %new monotonic seq_cst, align 1
2060 %r = extractvalue { i64, i1 } %pair, 0
2064 define dso_local i64 @cmpxchg_i64_unaligned_acquire_monotonic(i64 %expected, i64 %new, ptr %ptr) {
2065 ; CHECK-LABEL: cmpxchg_i64_unaligned_acquire_monotonic:
2066 ; CHECK: bl __atomic_compare_exchange
2067 %pair = cmpxchg ptr %ptr, i64 %expected, i64 %new acquire monotonic, align 1
2068 %r = extractvalue { i64, i1 } %pair, 0
2072 define dso_local i64 @cmpxchg_i64_unaligned_acquire_monotonic_weak(i64 %expected, i64 %new, ptr %ptr) {
2073 ; CHECK-LABEL: cmpxchg_i64_unaligned_acquire_monotonic_weak:
2074 ; CHECK: bl __atomic_compare_exchange
2075 %pair = cmpxchg weak ptr %ptr, i64 %expected, i64 %new acquire monotonic, align 1
2076 %r = extractvalue { i64, i1 } %pair, 0
2080 define dso_local i64 @cmpxchg_i64_unaligned_acquire_acquire(i64 %expected, i64 %new, ptr %ptr) {
2081 ; CHECK-LABEL: cmpxchg_i64_unaligned_acquire_acquire:
2082 ; CHECK: bl __atomic_compare_exchange
2083 %pair = cmpxchg ptr %ptr, i64 %expected, i64 %new acquire acquire, align 1
2084 %r = extractvalue { i64, i1 } %pair, 0
2088 define dso_local i64 @cmpxchg_i64_unaligned_acquire_acquire_weak(i64 %expected, i64 %new, ptr %ptr) {
2089 ; CHECK-LABEL: cmpxchg_i64_unaligned_acquire_acquire_weak:
2090 ; CHECK: bl __atomic_compare_exchange
2091 %pair = cmpxchg weak ptr %ptr, i64 %expected, i64 %new acquire acquire, align 1
2092 %r = extractvalue { i64, i1 } %pair, 0
2096 define dso_local i64 @cmpxchg_i64_unaligned_acquire_seq_cst(i64 %expected, i64 %new, ptr %ptr) {
2097 ; CHECK-LABEL: cmpxchg_i64_unaligned_acquire_seq_cst:
2098 ; CHECK: bl __atomic_compare_exchange
2099 %pair = cmpxchg ptr %ptr, i64 %expected, i64 %new acquire seq_cst, align 1
2100 %r = extractvalue { i64, i1 } %pair, 0
2104 define dso_local i64 @cmpxchg_i64_unaligned_acquire_seq_cst_weak(i64 %expected, i64 %new, ptr %ptr) {
2105 ; CHECK-LABEL: cmpxchg_i64_unaligned_acquire_seq_cst_weak:
2106 ; CHECK: bl __atomic_compare_exchange
2107 %pair = cmpxchg weak ptr %ptr, i64 %expected, i64 %new acquire seq_cst, align 1
2108 %r = extractvalue { i64, i1 } %pair, 0
2112 define dso_local i64 @cmpxchg_i64_unaligned_release_monotonic(i64 %expected, i64 %new, ptr %ptr) {
2113 ; CHECK-LABEL: cmpxchg_i64_unaligned_release_monotonic:
2114 ; CHECK: bl __atomic_compare_exchange
2115 %pair = cmpxchg ptr %ptr, i64 %expected, i64 %new release monotonic, align 1
2116 %r = extractvalue { i64, i1 } %pair, 0
2120 define dso_local i64 @cmpxchg_i64_unaligned_release_monotonic_weak(i64 %expected, i64 %new, ptr %ptr) {
2121 ; CHECK-LABEL: cmpxchg_i64_unaligned_release_monotonic_weak:
2122 ; CHECK: bl __atomic_compare_exchange
2123 %pair = cmpxchg weak ptr %ptr, i64 %expected, i64 %new release monotonic, align 1
2124 %r = extractvalue { i64, i1 } %pair, 0
2128 define dso_local i64 @cmpxchg_i64_unaligned_release_acquire(i64 %expected, i64 %new, ptr %ptr) {
2129 ; CHECK-LABEL: cmpxchg_i64_unaligned_release_acquire:
2130 ; CHECK: bl __atomic_compare_exchange
2131 %pair = cmpxchg ptr %ptr, i64 %expected, i64 %new release acquire, align 1
2132 %r = extractvalue { i64, i1 } %pair, 0
2136 define dso_local i64 @cmpxchg_i64_unaligned_release_acquire_weak(i64 %expected, i64 %new, ptr %ptr) {
2137 ; CHECK-LABEL: cmpxchg_i64_unaligned_release_acquire_weak:
2138 ; CHECK: bl __atomic_compare_exchange
2139 %pair = cmpxchg weak ptr %ptr, i64 %expected, i64 %new release acquire, align 1
2140 %r = extractvalue { i64, i1 } %pair, 0
2144 define dso_local i64 @cmpxchg_i64_unaligned_release_seq_cst(i64 %expected, i64 %new, ptr %ptr) {
2145 ; CHECK-LABEL: cmpxchg_i64_unaligned_release_seq_cst:
2146 ; CHECK: bl __atomic_compare_exchange
2147 %pair = cmpxchg ptr %ptr, i64 %expected, i64 %new release seq_cst, align 1
2148 %r = extractvalue { i64, i1 } %pair, 0
2152 define dso_local i64 @cmpxchg_i64_unaligned_release_seq_cst_weak(i64 %expected, i64 %new, ptr %ptr) {
2153 ; CHECK-LABEL: cmpxchg_i64_unaligned_release_seq_cst_weak:
2154 ; CHECK: bl __atomic_compare_exchange
2155 %pair = cmpxchg weak ptr %ptr, i64 %expected, i64 %new release seq_cst, align 1
2156 %r = extractvalue { i64, i1 } %pair, 0
2160 define dso_local i64 @cmpxchg_i64_unaligned_acq_rel_monotonic(i64 %expected, i64 %new, ptr %ptr) {
2161 ; CHECK-LABEL: cmpxchg_i64_unaligned_acq_rel_monotonic:
2162 ; CHECK: bl __atomic_compare_exchange
2163 %pair = cmpxchg ptr %ptr, i64 %expected, i64 %new acq_rel monotonic, align 1
2164 %r = extractvalue { i64, i1 } %pair, 0
2168 define dso_local i64 @cmpxchg_i64_unaligned_acq_rel_monotonic_weak(i64 %expected, i64 %new, ptr %ptr) {
2169 ; CHECK-LABEL: cmpxchg_i64_unaligned_acq_rel_monotonic_weak:
2170 ; CHECK: bl __atomic_compare_exchange
2171 %pair = cmpxchg weak ptr %ptr, i64 %expected, i64 %new acq_rel monotonic, align 1
2172 %r = extractvalue { i64, i1 } %pair, 0
2176 define dso_local i64 @cmpxchg_i64_unaligned_acq_rel_acquire(i64 %expected, i64 %new, ptr %ptr) {
2177 ; CHECK-LABEL: cmpxchg_i64_unaligned_acq_rel_acquire:
2178 ; CHECK: bl __atomic_compare_exchange
2179 %pair = cmpxchg ptr %ptr, i64 %expected, i64 %new acq_rel acquire, align 1
2180 %r = extractvalue { i64, i1 } %pair, 0
2184 define dso_local i64 @cmpxchg_i64_unaligned_acq_rel_acquire_weak(i64 %expected, i64 %new, ptr %ptr) {
2185 ; CHECK-LABEL: cmpxchg_i64_unaligned_acq_rel_acquire_weak:
2186 ; CHECK: bl __atomic_compare_exchange
2187 %pair = cmpxchg weak ptr %ptr, i64 %expected, i64 %new acq_rel acquire, align 1
2188 %r = extractvalue { i64, i1 } %pair, 0
2192 define dso_local i64 @cmpxchg_i64_unaligned_acq_rel_seq_cst(i64 %expected, i64 %new, ptr %ptr) {
2193 ; CHECK-LABEL: cmpxchg_i64_unaligned_acq_rel_seq_cst:
2194 ; CHECK: bl __atomic_compare_exchange
2195 %pair = cmpxchg ptr %ptr, i64 %expected, i64 %new acq_rel seq_cst, align 1
2196 %r = extractvalue { i64, i1 } %pair, 0
2200 define dso_local i64 @cmpxchg_i64_unaligned_acq_rel_seq_cst_weak(i64 %expected, i64 %new, ptr %ptr) {
2201 ; CHECK-LABEL: cmpxchg_i64_unaligned_acq_rel_seq_cst_weak:
2202 ; CHECK: bl __atomic_compare_exchange
2203 %pair = cmpxchg weak ptr %ptr, i64 %expected, i64 %new acq_rel seq_cst, align 1
2204 %r = extractvalue { i64, i1 } %pair, 0
2208 define dso_local i64 @cmpxchg_i64_unaligned_seq_cst_monotonic(i64 %expected, i64 %new, ptr %ptr) {
2209 ; CHECK-LABEL: cmpxchg_i64_unaligned_seq_cst_monotonic:
2210 ; CHECK: bl __atomic_compare_exchange
2211 %pair = cmpxchg ptr %ptr, i64 %expected, i64 %new seq_cst monotonic, align 1
2212 %r = extractvalue { i64, i1 } %pair, 0
2216 define dso_local i64 @cmpxchg_i64_unaligned_seq_cst_monotonic_weak(i64 %expected, i64 %new, ptr %ptr) {
2217 ; CHECK-LABEL: cmpxchg_i64_unaligned_seq_cst_monotonic_weak:
2218 ; CHECK: bl __atomic_compare_exchange
2219 %pair = cmpxchg weak ptr %ptr, i64 %expected, i64 %new seq_cst monotonic, align 1
2220 %r = extractvalue { i64, i1 } %pair, 0
2224 define dso_local i64 @cmpxchg_i64_unaligned_seq_cst_acquire(i64 %expected, i64 %new, ptr %ptr) {
2225 ; CHECK-LABEL: cmpxchg_i64_unaligned_seq_cst_acquire:
2226 ; CHECK: bl __atomic_compare_exchange
2227 %pair = cmpxchg ptr %ptr, i64 %expected, i64 %new seq_cst acquire, align 1
2228 %r = extractvalue { i64, i1 } %pair, 0
2232 define dso_local i64 @cmpxchg_i64_unaligned_seq_cst_acquire_weak(i64 %expected, i64 %new, ptr %ptr) {
2233 ; CHECK-LABEL: cmpxchg_i64_unaligned_seq_cst_acquire_weak:
2234 ; CHECK: bl __atomic_compare_exchange
2235 %pair = cmpxchg weak ptr %ptr, i64 %expected, i64 %new seq_cst acquire, align 1
2236 %r = extractvalue { i64, i1 } %pair, 0
2240 define dso_local i64 @cmpxchg_i64_unaligned_seq_cst_seq_cst(i64 %expected, i64 %new, ptr %ptr) {
2241 ; CHECK-LABEL: cmpxchg_i64_unaligned_seq_cst_seq_cst:
2242 ; CHECK: bl __atomic_compare_exchange
2243 %pair = cmpxchg ptr %ptr, i64 %expected, i64 %new seq_cst seq_cst, align 1
2244 %r = extractvalue { i64, i1 } %pair, 0
2248 define dso_local i64 @cmpxchg_i64_unaligned_seq_cst_seq_cst_weak(i64 %expected, i64 %new, ptr %ptr) {
2249 ; CHECK-LABEL: cmpxchg_i64_unaligned_seq_cst_seq_cst_weak:
2250 ; CHECK: bl __atomic_compare_exchange
2251 %pair = cmpxchg weak ptr %ptr, i64 %expected, i64 %new seq_cst seq_cst, align 1
2252 %r = extractvalue { i64, i1 } %pair, 0
2256 define dso_local i128 @cmpxchg_i128_unaligned_monotonic_monotonic(i128 %expected, i128 %new, ptr %ptr) {
2257 ; CHECK-LABEL: cmpxchg_i128_unaligned_monotonic_monotonic:
2258 ; CHECK: bl __atomic_compare_exchange
2259 %pair = cmpxchg ptr %ptr, i128 %expected, i128 %new monotonic monotonic, align 1
2260 %r = extractvalue { i128, i1 } %pair, 0
2264 define dso_local i128 @cmpxchg_i128_unaligned_monotonic_monotonic_weak(i128 %expected, i128 %new, ptr %ptr) {
2265 ; CHECK-LABEL: cmpxchg_i128_unaligned_monotonic_monotonic_weak:
2266 ; CHECK: bl __atomic_compare_exchange
2267 %pair = cmpxchg weak ptr %ptr, i128 %expected, i128 %new monotonic monotonic, align 1
2268 %r = extractvalue { i128, i1 } %pair, 0
2272 define dso_local i128 @cmpxchg_i128_unaligned_monotonic_acquire(i128 %expected, i128 %new, ptr %ptr) {
2273 ; CHECK-LABEL: cmpxchg_i128_unaligned_monotonic_acquire:
2274 ; CHECK: bl __atomic_compare_exchange
2275 %pair = cmpxchg ptr %ptr, i128 %expected, i128 %new monotonic acquire, align 1
2276 %r = extractvalue { i128, i1 } %pair, 0
2280 define dso_local i128 @cmpxchg_i128_unaligned_monotonic_acquire_weak(i128 %expected, i128 %new, ptr %ptr) {
2281 ; CHECK-LABEL: cmpxchg_i128_unaligned_monotonic_acquire_weak:
2282 ; CHECK: bl __atomic_compare_exchange
2283 %pair = cmpxchg weak ptr %ptr, i128 %expected, i128 %new monotonic acquire, align 1
2284 %r = extractvalue { i128, i1 } %pair, 0
2288 define dso_local i128 @cmpxchg_i128_unaligned_monotonic_seq_cst(i128 %expected, i128 %new, ptr %ptr) {
2289 ; CHECK-LABEL: cmpxchg_i128_unaligned_monotonic_seq_cst:
2290 ; CHECK: bl __atomic_compare_exchange
2291 %pair = cmpxchg ptr %ptr, i128 %expected, i128 %new monotonic seq_cst, align 1
2292 %r = extractvalue { i128, i1 } %pair, 0
2296 define dso_local i128 @cmpxchg_i128_unaligned_monotonic_seq_cst_weak(i128 %expected, i128 %new, ptr %ptr) {
2297 ; CHECK-LABEL: cmpxchg_i128_unaligned_monotonic_seq_cst_weak:
2298 ; CHECK: bl __atomic_compare_exchange
2299 %pair = cmpxchg weak ptr %ptr, i128 %expected, i128 %new monotonic seq_cst, align 1
2300 %r = extractvalue { i128, i1 } %pair, 0
2304 define dso_local i128 @cmpxchg_i128_unaligned_acquire_monotonic(i128 %expected, i128 %new, ptr %ptr) {
2305 ; CHECK-LABEL: cmpxchg_i128_unaligned_acquire_monotonic:
2306 ; CHECK: bl __atomic_compare_exchange
2307 %pair = cmpxchg ptr %ptr, i128 %expected, i128 %new acquire monotonic, align 1
2308 %r = extractvalue { i128, i1 } %pair, 0
2312 define dso_local i128 @cmpxchg_i128_unaligned_acquire_monotonic_weak(i128 %expected, i128 %new, ptr %ptr) {
2313 ; CHECK-LABEL: cmpxchg_i128_unaligned_acquire_monotonic_weak:
2314 ; CHECK: bl __atomic_compare_exchange
2315 %pair = cmpxchg weak ptr %ptr, i128 %expected, i128 %new acquire monotonic, align 1
2316 %r = extractvalue { i128, i1 } %pair, 0
2320 define dso_local i128 @cmpxchg_i128_unaligned_acquire_acquire(i128 %expected, i128 %new, ptr %ptr) {
2321 ; CHECK-LABEL: cmpxchg_i128_unaligned_acquire_acquire:
2322 ; CHECK: bl __atomic_compare_exchange
2323 %pair = cmpxchg ptr %ptr, i128 %expected, i128 %new acquire acquire, align 1
2324 %r = extractvalue { i128, i1 } %pair, 0
2328 define dso_local i128 @cmpxchg_i128_unaligned_acquire_acquire_weak(i128 %expected, i128 %new, ptr %ptr) {
2329 ; CHECK-LABEL: cmpxchg_i128_unaligned_acquire_acquire_weak:
2330 ; CHECK: bl __atomic_compare_exchange
2331 %pair = cmpxchg weak ptr %ptr, i128 %expected, i128 %new acquire acquire, align 1
2332 %r = extractvalue { i128, i1 } %pair, 0
2336 define dso_local i128 @cmpxchg_i128_unaligned_acquire_seq_cst(i128 %expected, i128 %new, ptr %ptr) {
2337 ; CHECK-LABEL: cmpxchg_i128_unaligned_acquire_seq_cst:
2338 ; CHECK: bl __atomic_compare_exchange
2339 %pair = cmpxchg ptr %ptr, i128 %expected, i128 %new acquire seq_cst, align 1
2340 %r = extractvalue { i128, i1 } %pair, 0
2344 define dso_local i128 @cmpxchg_i128_unaligned_acquire_seq_cst_weak(i128 %expected, i128 %new, ptr %ptr) {
2345 ; CHECK-LABEL: cmpxchg_i128_unaligned_acquire_seq_cst_weak:
2346 ; CHECK: bl __atomic_compare_exchange
2347 %pair = cmpxchg weak ptr %ptr, i128 %expected, i128 %new acquire seq_cst, align 1
2348 %r = extractvalue { i128, i1 } %pair, 0
2352 define dso_local i128 @cmpxchg_i128_unaligned_release_monotonic(i128 %expected, i128 %new, ptr %ptr) {
2353 ; CHECK-LABEL: cmpxchg_i128_unaligned_release_monotonic:
2354 ; CHECK: bl __atomic_compare_exchange
2355 %pair = cmpxchg ptr %ptr, i128 %expected, i128 %new release monotonic, align 1
2356 %r = extractvalue { i128, i1 } %pair, 0
2360 define dso_local i128 @cmpxchg_i128_unaligned_release_monotonic_weak(i128 %expected, i128 %new, ptr %ptr) {
2361 ; CHECK-LABEL: cmpxchg_i128_unaligned_release_monotonic_weak:
2362 ; CHECK: bl __atomic_compare_exchange
2363 %pair = cmpxchg weak ptr %ptr, i128 %expected, i128 %new release monotonic, align 1
2364 %r = extractvalue { i128, i1 } %pair, 0
2368 define dso_local i128 @cmpxchg_i128_unaligned_release_acquire(i128 %expected, i128 %new, ptr %ptr) {
2369 ; CHECK-LABEL: cmpxchg_i128_unaligned_release_acquire:
2370 ; CHECK: bl __atomic_compare_exchange
2371 %pair = cmpxchg ptr %ptr, i128 %expected, i128 %new release acquire, align 1
2372 %r = extractvalue { i128, i1 } %pair, 0
2376 define dso_local i128 @cmpxchg_i128_unaligned_release_acquire_weak(i128 %expected, i128 %new, ptr %ptr) {
2377 ; CHECK-LABEL: cmpxchg_i128_unaligned_release_acquire_weak:
2378 ; CHECK: bl __atomic_compare_exchange
2379 %pair = cmpxchg weak ptr %ptr, i128 %expected, i128 %new release acquire, align 1
2380 %r = extractvalue { i128, i1 } %pair, 0
2384 define dso_local i128 @cmpxchg_i128_unaligned_release_seq_cst(i128 %expected, i128 %new, ptr %ptr) {
2385 ; CHECK-LABEL: cmpxchg_i128_unaligned_release_seq_cst:
2386 ; CHECK: bl __atomic_compare_exchange
2387 %pair = cmpxchg ptr %ptr, i128 %expected, i128 %new release seq_cst, align 1
2388 %r = extractvalue { i128, i1 } %pair, 0
2392 define dso_local i128 @cmpxchg_i128_unaligned_release_seq_cst_weak(i128 %expected, i128 %new, ptr %ptr) {
2393 ; CHECK-LABEL: cmpxchg_i128_unaligned_release_seq_cst_weak:
2394 ; CHECK: bl __atomic_compare_exchange
2395 %pair = cmpxchg weak ptr %ptr, i128 %expected, i128 %new release seq_cst, align 1
2396 %r = extractvalue { i128, i1 } %pair, 0
2400 define dso_local i128 @cmpxchg_i128_unaligned_acq_rel_monotonic(i128 %expected, i128 %new, ptr %ptr) {
2401 ; CHECK-LABEL: cmpxchg_i128_unaligned_acq_rel_monotonic:
2402 ; CHECK: bl __atomic_compare_exchange
2403 %pair = cmpxchg ptr %ptr, i128 %expected, i128 %new acq_rel monotonic, align 1
2404 %r = extractvalue { i128, i1 } %pair, 0
2408 define dso_local i128 @cmpxchg_i128_unaligned_acq_rel_monotonic_weak(i128 %expected, i128 %new, ptr %ptr) {
2409 ; CHECK-LABEL: cmpxchg_i128_unaligned_acq_rel_monotonic_weak:
2410 ; CHECK: bl __atomic_compare_exchange
2411 %pair = cmpxchg weak ptr %ptr, i128 %expected, i128 %new acq_rel monotonic, align 1
2412 %r = extractvalue { i128, i1 } %pair, 0
2416 define dso_local i128 @cmpxchg_i128_unaligned_acq_rel_acquire(i128 %expected, i128 %new, ptr %ptr) {
2417 ; CHECK-LABEL: cmpxchg_i128_unaligned_acq_rel_acquire:
2418 ; CHECK: bl __atomic_compare_exchange
2419 %pair = cmpxchg ptr %ptr, i128 %expected, i128 %new acq_rel acquire, align 1
2420 %r = extractvalue { i128, i1 } %pair, 0
2424 define dso_local i128 @cmpxchg_i128_unaligned_acq_rel_acquire_weak(i128 %expected, i128 %new, ptr %ptr) {
2425 ; CHECK-LABEL: cmpxchg_i128_unaligned_acq_rel_acquire_weak:
2426 ; CHECK: bl __atomic_compare_exchange
2427 %pair = cmpxchg weak ptr %ptr, i128 %expected, i128 %new acq_rel acquire, align 1
2428 %r = extractvalue { i128, i1 } %pair, 0
2432 define dso_local i128 @cmpxchg_i128_unaligned_acq_rel_seq_cst(i128 %expected, i128 %new, ptr %ptr) {
2433 ; CHECK-LABEL: cmpxchg_i128_unaligned_acq_rel_seq_cst:
2434 ; CHECK: bl __atomic_compare_exchange
2435 %pair = cmpxchg ptr %ptr, i128 %expected, i128 %new acq_rel seq_cst, align 1
2436 %r = extractvalue { i128, i1 } %pair, 0
2440 define dso_local i128 @cmpxchg_i128_unaligned_acq_rel_seq_cst_weak(i128 %expected, i128 %new, ptr %ptr) {
2441 ; CHECK-LABEL: cmpxchg_i128_unaligned_acq_rel_seq_cst_weak:
2442 ; CHECK: bl __atomic_compare_exchange
2443 %pair = cmpxchg weak ptr %ptr, i128 %expected, i128 %new acq_rel seq_cst, align 1
2444 %r = extractvalue { i128, i1 } %pair, 0
2448 define dso_local i128 @cmpxchg_i128_unaligned_seq_cst_monotonic(i128 %expected, i128 %new, ptr %ptr) {
2449 ; CHECK-LABEL: cmpxchg_i128_unaligned_seq_cst_monotonic:
2450 ; CHECK: bl __atomic_compare_exchange
2451 %pair = cmpxchg ptr %ptr, i128 %expected, i128 %new seq_cst monotonic, align 1
2452 %r = extractvalue { i128, i1 } %pair, 0
2456 define dso_local i128 @cmpxchg_i128_unaligned_seq_cst_monotonic_weak(i128 %expected, i128 %new, ptr %ptr) {
2457 ; CHECK-LABEL: cmpxchg_i128_unaligned_seq_cst_monotonic_weak:
2458 ; CHECK: bl __atomic_compare_exchange
2459 %pair = cmpxchg weak ptr %ptr, i128 %expected, i128 %new seq_cst monotonic, align 1
2460 %r = extractvalue { i128, i1 } %pair, 0
2464 define dso_local i128 @cmpxchg_i128_unaligned_seq_cst_acquire(i128 %expected, i128 %new, ptr %ptr) {
2465 ; CHECK-LABEL: cmpxchg_i128_unaligned_seq_cst_acquire:
2466 ; CHECK: bl __atomic_compare_exchange
2467 %pair = cmpxchg ptr %ptr, i128 %expected, i128 %new seq_cst acquire, align 1
2468 %r = extractvalue { i128, i1 } %pair, 0
2472 define dso_local i128 @cmpxchg_i128_unaligned_seq_cst_acquire_weak(i128 %expected, i128 %new, ptr %ptr) {
2473 ; CHECK-LABEL: cmpxchg_i128_unaligned_seq_cst_acquire_weak:
2474 ; CHECK: bl __atomic_compare_exchange
2475 %pair = cmpxchg weak ptr %ptr, i128 %expected, i128 %new seq_cst acquire, align 1
2476 %r = extractvalue { i128, i1 } %pair, 0
2480 define dso_local i128 @cmpxchg_i128_unaligned_seq_cst_seq_cst(i128 %expected, i128 %new, ptr %ptr) {
2481 ; CHECK-LABEL: cmpxchg_i128_unaligned_seq_cst_seq_cst:
2482 ; CHECK: bl __atomic_compare_exchange
2483 %pair = cmpxchg ptr %ptr, i128 %expected, i128 %new seq_cst seq_cst, align 1
2484 %r = extractvalue { i128, i1 } %pair, 0
2488 define dso_local i128 @cmpxchg_i128_unaligned_seq_cst_seq_cst_weak(i128 %expected, i128 %new, ptr %ptr) {
2489 ; CHECK-LABEL: cmpxchg_i128_unaligned_seq_cst_seq_cst_weak:
2490 ; CHECK: bl __atomic_compare_exchange
2491 %pair = cmpxchg weak ptr %ptr, i128 %expected, i128 %new seq_cst seq_cst, align 1
2492 %r = extractvalue { i128, i1 } %pair, 0