[NFC][RemoveDIs] Prefer iterators over inst-pointers in InstCombine
[llvm-project.git] / llvm / test / CodeGen / AArch64 / Atomics / aarch64_be-atomic-store-v8_1a.ll
blob6a51222e31092106045a4dc8a810e69a6965df11
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|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_be -mattr=+v8.1a -O0 | FileCheck %s --check-prefixes=CHECK,-O0
4 ; RUN: llc %s -o - -verify-machineinstrs -mtriple=aarch64_be -mattr=+v8.1a -O1 | FileCheck %s --check-prefixes=CHECK,-O1
6 define dso_local void @store_atomic_i8_aligned_unordered(i8 %value, ptr %ptr) {
7 ; CHECK-LABEL: store_atomic_i8_aligned_unordered:
8 ; CHECK:    strb w0, [x1]
9     store atomic i8 %value, ptr %ptr unordered, align 1
10     ret void
13 define dso_local void @store_atomic_i8_aligned_monotonic(i8 %value, ptr %ptr) {
14 ; CHECK-LABEL: store_atomic_i8_aligned_monotonic:
15 ; CHECK:    strb w0, [x1]
16     store atomic i8 %value, ptr %ptr monotonic, align 1
17     ret void
20 define dso_local void @store_atomic_i8_aligned_release(i8 %value, ptr %ptr) {
21 ; CHECK-LABEL: store_atomic_i8_aligned_release:
22 ; CHECK:    stlrb w0, [x1]
23     store atomic i8 %value, ptr %ptr release, align 1
24     ret void
27 define dso_local void @store_atomic_i8_aligned_seq_cst(i8 %value, ptr %ptr) {
28 ; CHECK-LABEL: store_atomic_i8_aligned_seq_cst:
29 ; CHECK:    stlrb w0, [x1]
30     store atomic i8 %value, ptr %ptr seq_cst, align 1
31     ret void
34 define dso_local void @store_atomic_i16_aligned_unordered(i16 %value, ptr %ptr) {
35 ; CHECK-LABEL: store_atomic_i16_aligned_unordered:
36 ; CHECK:    strh w0, [x1]
37     store atomic i16 %value, ptr %ptr unordered, align 2
38     ret void
41 define dso_local void @store_atomic_i16_aligned_monotonic(i16 %value, ptr %ptr) {
42 ; CHECK-LABEL: store_atomic_i16_aligned_monotonic:
43 ; CHECK:    strh w0, [x1]
44     store atomic i16 %value, ptr %ptr monotonic, align 2
45     ret void
48 define dso_local void @store_atomic_i16_aligned_release(i16 %value, ptr %ptr) {
49 ; CHECK-LABEL: store_atomic_i16_aligned_release:
50 ; CHECK:    stlrh w0, [x1]
51     store atomic i16 %value, ptr %ptr release, align 2
52     ret void
55 define dso_local void @store_atomic_i16_aligned_seq_cst(i16 %value, ptr %ptr) {
56 ; CHECK-LABEL: store_atomic_i16_aligned_seq_cst:
57 ; CHECK:    stlrh w0, [x1]
58     store atomic i16 %value, ptr %ptr seq_cst, align 2
59     ret void
62 define dso_local void @store_atomic_i32_aligned_unordered(i32 %value, ptr %ptr) {
63 ; CHECK-LABEL: store_atomic_i32_aligned_unordered:
64 ; CHECK:    str w0, [x1]
65     store atomic i32 %value, ptr %ptr unordered, align 4
66     ret void
69 define dso_local void @store_atomic_i32_aligned_monotonic(i32 %value, ptr %ptr) {
70 ; CHECK-LABEL: store_atomic_i32_aligned_monotonic:
71 ; CHECK:    str w0, [x1]
72     store atomic i32 %value, ptr %ptr monotonic, align 4
73     ret void
76 define dso_local void @store_atomic_i32_aligned_release(i32 %value, ptr %ptr) {
77 ; CHECK-LABEL: store_atomic_i32_aligned_release:
78 ; CHECK:    stlr w0, [x1]
79     store atomic i32 %value, ptr %ptr release, align 4
80     ret void
83 define dso_local void @store_atomic_i32_aligned_seq_cst(i32 %value, ptr %ptr) {
84 ; CHECK-LABEL: store_atomic_i32_aligned_seq_cst:
85 ; CHECK:    stlr w0, [x1]
86     store atomic i32 %value, ptr %ptr seq_cst, align 4
87     ret void
90 define dso_local void @store_atomic_i64_aligned_unordered(i64 %value, ptr %ptr) {
91 ; CHECK-LABEL: store_atomic_i64_aligned_unordered:
92 ; CHECK:    str x0, [x1]
93     store atomic i64 %value, ptr %ptr unordered, align 8
94     ret void
97 define dso_local void @store_atomic_i64_aligned_monotonic(i64 %value, ptr %ptr) {
98 ; CHECK-LABEL: store_atomic_i64_aligned_monotonic:
99 ; CHECK:    str x0, [x1]
100     store atomic i64 %value, ptr %ptr monotonic, align 8
101     ret void
104 define dso_local void @store_atomic_i64_aligned_release(i64 %value, ptr %ptr) {
105 ; CHECK-LABEL: store_atomic_i64_aligned_release:
106 ; CHECK:    stlr x0, [x1]
107     store atomic i64 %value, ptr %ptr release, align 8
108     ret void
111 define dso_local void @store_atomic_i64_aligned_seq_cst(i64 %value, ptr %ptr) {
112 ; CHECK-LABEL: store_atomic_i64_aligned_seq_cst:
113 ; CHECK:    stlr x0, [x1]
114     store atomic i64 %value, ptr %ptr seq_cst, align 8
115     ret void
118 define dso_local void @store_atomic_i128_aligned_unordered(i128 %value, ptr %ptr) {
119 ; -O0-LABEL: store_atomic_i128_aligned_unordered:
120 ; -O0:    casp x0, x1, x2, x3, [x8]
121 ; -O0:    subs x11, x9, x11
122 ; -O0:    ccmp x8, x10, #0, eq
124 ; -O1-LABEL: store_atomic_i128_aligned_unordered:
125 ; -O1:    ldp x4, x5, [x2]
126 ; -O1:    casp x6, x7, x0, x1, [x2]
127 ; -O1:    cmp x6, x4
128 ; -O1:    ccmp x7, x5, #0, eq
129     store atomic i128 %value, ptr %ptr unordered, align 16
130     ret void
133 define dso_local void @store_atomic_i128_aligned_monotonic(i128 %value, ptr %ptr) {
134 ; -O0-LABEL: store_atomic_i128_aligned_monotonic:
135 ; -O0:    casp x0, x1, x2, x3, [x8]
136 ; -O0:    subs x11, x9, x11
137 ; -O0:    ccmp x8, x10, #0, eq
139 ; -O1-LABEL: store_atomic_i128_aligned_monotonic:
140 ; -O1:    ldp x4, x5, [x2]
141 ; -O1:    casp x6, x7, x0, x1, [x2]
142 ; -O1:    cmp x6, x4
143 ; -O1:    ccmp x7, x5, #0, eq
144     store atomic i128 %value, ptr %ptr monotonic, align 16
145     ret void
148 define dso_local void @store_atomic_i128_aligned_release(i128 %value, ptr %ptr) {
149 ; -O0-LABEL: store_atomic_i128_aligned_release:
150 ; -O0:    caspl x0, x1, x2, x3, [x8]
151 ; -O0:    subs x11, x9, x11
152 ; -O0:    ccmp x8, x10, #0, eq
154 ; -O1-LABEL: store_atomic_i128_aligned_release:
155 ; -O1:    ldp x4, x5, [x2]
156 ; -O1:    caspl x6, x7, x0, x1, [x2]
157 ; -O1:    cmp x6, x4
158 ; -O1:    ccmp x7, x5, #0, eq
159     store atomic i128 %value, ptr %ptr release, align 16
160     ret void
163 define dso_local void @store_atomic_i128_aligned_seq_cst(i128 %value, ptr %ptr) {
164 ; -O0-LABEL: store_atomic_i128_aligned_seq_cst:
165 ; -O0:    caspal x0, x1, x2, x3, [x8]
166 ; -O0:    subs x11, x9, x11
167 ; -O0:    ccmp x8, x10, #0, eq
169 ; -O1-LABEL: store_atomic_i128_aligned_seq_cst:
170 ; -O1:    ldp x4, x5, [x2]
171 ; -O1:    caspal x6, x7, x0, x1, [x2]
172 ; -O1:    cmp x6, x4
173 ; -O1:    ccmp x7, x5, #0, eq
174     store atomic i128 %value, ptr %ptr seq_cst, align 16
175     ret void
178 define dso_local void @store_atomic_i8_unaligned_unordered(i8 %value, ptr %ptr) {
179 ; CHECK-LABEL: store_atomic_i8_unaligned_unordered:
180 ; CHECK:    strb w0, [x1]
181     store atomic i8 %value, ptr %ptr unordered, align 1
182     ret void
185 define dso_local void @store_atomic_i8_unaligned_monotonic(i8 %value, ptr %ptr) {
186 ; CHECK-LABEL: store_atomic_i8_unaligned_monotonic:
187 ; CHECK:    strb w0, [x1]
188     store atomic i8 %value, ptr %ptr monotonic, align 1
189     ret void
192 define dso_local void @store_atomic_i8_unaligned_release(i8 %value, ptr %ptr) {
193 ; CHECK-LABEL: store_atomic_i8_unaligned_release:
194 ; CHECK:    stlrb w0, [x1]
195     store atomic i8 %value, ptr %ptr release, align 1
196     ret void
199 define dso_local void @store_atomic_i8_unaligned_seq_cst(i8 %value, ptr %ptr) {
200 ; CHECK-LABEL: store_atomic_i8_unaligned_seq_cst:
201 ; CHECK:    stlrb w0, [x1]
202     store atomic i8 %value, ptr %ptr seq_cst, align 1
203     ret void
206 define dso_local void @store_atomic_i16_unaligned_unordered(i16 %value, ptr %ptr) {
207 ; CHECK-LABEL: store_atomic_i16_unaligned_unordered:
208 ; CHECK:    bl __atomic_store
209     store atomic i16 %value, ptr %ptr unordered, align 1
210     ret void
213 define dso_local void @store_atomic_i16_unaligned_monotonic(i16 %value, ptr %ptr) {
214 ; CHECK-LABEL: store_atomic_i16_unaligned_monotonic:
215 ; CHECK:    bl __atomic_store
216     store atomic i16 %value, ptr %ptr monotonic, align 1
217     ret void
220 define dso_local void @store_atomic_i16_unaligned_release(i16 %value, ptr %ptr) {
221 ; CHECK-LABEL: store_atomic_i16_unaligned_release:
222 ; CHECK:    bl __atomic_store
223     store atomic i16 %value, ptr %ptr release, align 1
224     ret void
227 define dso_local void @store_atomic_i16_unaligned_seq_cst(i16 %value, ptr %ptr) {
228 ; CHECK-LABEL: store_atomic_i16_unaligned_seq_cst:
229 ; CHECK:    bl __atomic_store
230     store atomic i16 %value, ptr %ptr seq_cst, align 1
231     ret void
234 define dso_local void @store_atomic_i32_unaligned_unordered(i32 %value, ptr %ptr) {
235 ; CHECK-LABEL: store_atomic_i32_unaligned_unordered:
236 ; CHECK:    bl __atomic_store
237     store atomic i32 %value, ptr %ptr unordered, align 1
238     ret void
241 define dso_local void @store_atomic_i32_unaligned_monotonic(i32 %value, ptr %ptr) {
242 ; CHECK-LABEL: store_atomic_i32_unaligned_monotonic:
243 ; CHECK:    bl __atomic_store
244     store atomic i32 %value, ptr %ptr monotonic, align 1
245     ret void
248 define dso_local void @store_atomic_i32_unaligned_release(i32 %value, ptr %ptr) {
249 ; CHECK-LABEL: store_atomic_i32_unaligned_release:
250 ; CHECK:    bl __atomic_store
251     store atomic i32 %value, ptr %ptr release, align 1
252     ret void
255 define dso_local void @store_atomic_i32_unaligned_seq_cst(i32 %value, ptr %ptr) {
256 ; CHECK-LABEL: store_atomic_i32_unaligned_seq_cst:
257 ; CHECK:    bl __atomic_store
258     store atomic i32 %value, ptr %ptr seq_cst, align 1
259     ret void
262 define dso_local void @store_atomic_i64_unaligned_unordered(i64 %value, ptr %ptr) {
263 ; CHECK-LABEL: store_atomic_i64_unaligned_unordered:
264 ; CHECK:    bl __atomic_store
265     store atomic i64 %value, ptr %ptr unordered, align 1
266     ret void
269 define dso_local void @store_atomic_i64_unaligned_monotonic(i64 %value, ptr %ptr) {
270 ; CHECK-LABEL: store_atomic_i64_unaligned_monotonic:
271 ; CHECK:    bl __atomic_store
272     store atomic i64 %value, ptr %ptr monotonic, align 1
273     ret void
276 define dso_local void @store_atomic_i64_unaligned_release(i64 %value, ptr %ptr) {
277 ; CHECK-LABEL: store_atomic_i64_unaligned_release:
278 ; CHECK:    bl __atomic_store
279     store atomic i64 %value, ptr %ptr release, align 1
280     ret void
283 define dso_local void @store_atomic_i64_unaligned_seq_cst(i64 %value, ptr %ptr) {
284 ; CHECK-LABEL: store_atomic_i64_unaligned_seq_cst:
285 ; CHECK:    bl __atomic_store
286     store atomic i64 %value, ptr %ptr seq_cst, align 1
287     ret void
290 define dso_local void @store_atomic_i128_unaligned_unordered(i128 %value, ptr %ptr) {
291 ; CHECK-LABEL: store_atomic_i128_unaligned_unordered:
292 ; CHECK:    bl __atomic_store
293     store atomic i128 %value, ptr %ptr unordered, align 1
294     ret void
297 define dso_local void @store_atomic_i128_unaligned_monotonic(i128 %value, ptr %ptr) {
298 ; CHECK-LABEL: store_atomic_i128_unaligned_monotonic:
299 ; CHECK:    bl __atomic_store
300     store atomic i128 %value, ptr %ptr monotonic, align 1
301     ret void
304 define dso_local void @store_atomic_i128_unaligned_release(i128 %value, ptr %ptr) {
305 ; CHECK-LABEL: store_atomic_i128_unaligned_release:
306 ; CHECK:    bl __atomic_store
307     store atomic i128 %value, ptr %ptr release, align 1
308     ret void
311 define dso_local void @store_atomic_i128_unaligned_seq_cst(i128 %value, ptr %ptr) {
312 ; CHECK-LABEL: store_atomic_i128_unaligned_seq_cst:
313 ; CHECK:    bl __atomic_store
314     store atomic i128 %value, ptr %ptr seq_cst, align 1
315     ret void