[NFC][RemoveDIs] Prefer iterators over inst-pointers in InstCombine
[llvm-project.git] / llvm / test / CodeGen / AArch64 / Atomics / aarch64-atomic-store-rcpc3.ll
blob8e1ae1d0a754c242c5245aabe29589839cdf5f7a
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 -mattr=+lse2,+rcpc3 -O0 | FileCheck %s --check-prefixes=CHECK,-O0
4 ; RUN: llc %s -o - -verify-machineinstrs -mtriple=aarch64 -mattr=+lse2,+rcpc3 -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 ; CHECK-LABEL: store_atomic_i128_aligned_unordered:
120 ; CHECK:    stp x0, x1, [x2]
121     store atomic i128 %value, ptr %ptr unordered, align 16
122     ret void
125 define dso_local void @store_atomic_i128_aligned_monotonic(i128 %value, ptr %ptr) {
126 ; CHECK-LABEL: store_atomic_i128_aligned_monotonic:
127 ; CHECK:    stp x0, x1, [x2]
128     store atomic i128 %value, ptr %ptr monotonic, align 16
129     ret void
132 define dso_local void @store_atomic_i128_aligned_release(i128 %value, ptr %ptr) {
133 ; CHECK-LABEL: store_atomic_i128_aligned_release:
134 ; CHECK:    stilp x0, x1, [x2]
135     store atomic i128 %value, ptr %ptr release, align 16
136     ret void
139 define dso_local void @store_atomic_i128_aligned_seq_cst(i128 %value, ptr %ptr) {
140 ; CHECK-LABEL: store_atomic_i128_aligned_seq_cst:
141 ; CHECK:    dmb ish
142 ; CHECK:    stp x0, x1, [x2]
143 ; CHECK:    dmb ish
144     store atomic i128 %value, ptr %ptr seq_cst, align 16
145     ret void
148 define dso_local void @store_atomic_i8_unaligned_unordered(i8 %value, ptr %ptr) {
149 ; CHECK-LABEL: store_atomic_i8_unaligned_unordered:
150 ; CHECK:    strb w0, [x1]
151     store atomic i8 %value, ptr %ptr unordered, align 1
152     ret void
155 define dso_local void @store_atomic_i8_unaligned_monotonic(i8 %value, ptr %ptr) {
156 ; CHECK-LABEL: store_atomic_i8_unaligned_monotonic:
157 ; CHECK:    strb w0, [x1]
158     store atomic i8 %value, ptr %ptr monotonic, align 1
159     ret void
162 define dso_local void @store_atomic_i8_unaligned_release(i8 %value, ptr %ptr) {
163 ; CHECK-LABEL: store_atomic_i8_unaligned_release:
164 ; CHECK:    stlrb w0, [x1]
165     store atomic i8 %value, ptr %ptr release, align 1
166     ret void
169 define dso_local void @store_atomic_i8_unaligned_seq_cst(i8 %value, ptr %ptr) {
170 ; CHECK-LABEL: store_atomic_i8_unaligned_seq_cst:
171 ; CHECK:    stlrb w0, [x1]
172     store atomic i8 %value, ptr %ptr seq_cst, align 1
173     ret void
176 define dso_local void @store_atomic_i16_unaligned_unordered(i16 %value, ptr %ptr) {
177 ; CHECK-LABEL: store_atomic_i16_unaligned_unordered:
178 ; CHECK:    bl __atomic_store
179     store atomic i16 %value, ptr %ptr unordered, align 1
180     ret void
183 define dso_local void @store_atomic_i16_unaligned_monotonic(i16 %value, ptr %ptr) {
184 ; CHECK-LABEL: store_atomic_i16_unaligned_monotonic:
185 ; CHECK:    bl __atomic_store
186     store atomic i16 %value, ptr %ptr monotonic, align 1
187     ret void
190 define dso_local void @store_atomic_i16_unaligned_release(i16 %value, ptr %ptr) {
191 ; CHECK-LABEL: store_atomic_i16_unaligned_release:
192 ; CHECK:    bl __atomic_store
193     store atomic i16 %value, ptr %ptr release, align 1
194     ret void
197 define dso_local void @store_atomic_i16_unaligned_seq_cst(i16 %value, ptr %ptr) {
198 ; CHECK-LABEL: store_atomic_i16_unaligned_seq_cst:
199 ; CHECK:    bl __atomic_store
200     store atomic i16 %value, ptr %ptr seq_cst, align 1
201     ret void
204 define dso_local void @store_atomic_i32_unaligned_unordered(i32 %value, ptr %ptr) {
205 ; CHECK-LABEL: store_atomic_i32_unaligned_unordered:
206 ; CHECK:    bl __atomic_store
207     store atomic i32 %value, ptr %ptr unordered, align 1
208     ret void
211 define dso_local void @store_atomic_i32_unaligned_monotonic(i32 %value, ptr %ptr) {
212 ; CHECK-LABEL: store_atomic_i32_unaligned_monotonic:
213 ; CHECK:    bl __atomic_store
214     store atomic i32 %value, ptr %ptr monotonic, align 1
215     ret void
218 define dso_local void @store_atomic_i32_unaligned_release(i32 %value, ptr %ptr) {
219 ; CHECK-LABEL: store_atomic_i32_unaligned_release:
220 ; CHECK:    bl __atomic_store
221     store atomic i32 %value, ptr %ptr release, align 1
222     ret void
225 define dso_local void @store_atomic_i32_unaligned_seq_cst(i32 %value, ptr %ptr) {
226 ; CHECK-LABEL: store_atomic_i32_unaligned_seq_cst:
227 ; CHECK:    bl __atomic_store
228     store atomic i32 %value, ptr %ptr seq_cst, align 1
229     ret void
232 define dso_local void @store_atomic_i64_unaligned_unordered(i64 %value, ptr %ptr) {
233 ; CHECK-LABEL: store_atomic_i64_unaligned_unordered:
234 ; CHECK:    bl __atomic_store
235     store atomic i64 %value, ptr %ptr unordered, align 1
236     ret void
239 define dso_local void @store_atomic_i64_unaligned_monotonic(i64 %value, ptr %ptr) {
240 ; CHECK-LABEL: store_atomic_i64_unaligned_monotonic:
241 ; CHECK:    bl __atomic_store
242     store atomic i64 %value, ptr %ptr monotonic, align 1
243     ret void
246 define dso_local void @store_atomic_i64_unaligned_release(i64 %value, ptr %ptr) {
247 ; CHECK-LABEL: store_atomic_i64_unaligned_release:
248 ; CHECK:    bl __atomic_store
249     store atomic i64 %value, ptr %ptr release, align 1
250     ret void
253 define dso_local void @store_atomic_i64_unaligned_seq_cst(i64 %value, ptr %ptr) {
254 ; CHECK-LABEL: store_atomic_i64_unaligned_seq_cst:
255 ; CHECK:    bl __atomic_store
256     store atomic i64 %value, ptr %ptr seq_cst, align 1
257     ret void
260 define dso_local void @store_atomic_i128_unaligned_unordered(i128 %value, ptr %ptr) {
261 ; CHECK-LABEL: store_atomic_i128_unaligned_unordered:
262 ; CHECK:    bl __atomic_store
263     store atomic i128 %value, ptr %ptr unordered, align 1
264     ret void
267 define dso_local void @store_atomic_i128_unaligned_monotonic(i128 %value, ptr %ptr) {
268 ; CHECK-LABEL: store_atomic_i128_unaligned_monotonic:
269 ; CHECK:    bl __atomic_store
270     store atomic i128 %value, ptr %ptr monotonic, align 1
271     ret void
274 define dso_local void @store_atomic_i128_unaligned_release(i128 %value, ptr %ptr) {
275 ; CHECK-LABEL: store_atomic_i128_unaligned_release:
276 ; CHECK:    bl __atomic_store
277     store atomic i128 %value, ptr %ptr release, align 1
278     ret void
281 define dso_local void @store_atomic_i128_unaligned_seq_cst(i128 %value, ptr %ptr) {
282 ; CHECK-LABEL: store_atomic_i128_unaligned_seq_cst:
283 ; CHECK:    bl __atomic_store
284     store atomic i128 %value, ptr %ptr seq_cst, align 1
285     ret void
287 ;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:
288 ; -O0: {{.*}}
289 ; -O1: {{.*}}