Lines Matching refs:atomic
6 ; Check transforms involving atomic operations
10 ; CHECK: %x = load atomic i32, i32* %p seq_cst, align 4
12 %x = load atomic i32, i32* %p seq_cst, align 4
40 ; Forwarding from a stronger ordered atomic is fine
43 ; CHECK: %x = load atomic i32, i32* %p seq_cst, align 4
45 %x = load atomic i32, i32* %p seq_cst, align 4
46 %y = load atomic i32, i32* %p unordered, align 4
51 ; Forwarding from a non-atomic is not. (The earlier load
52 ; could in priciple be promoted to atomic and then forwarded,
53 ; but we can't just drop the atomic from the load.)
56 ; CHECK: %x = load atomic i32, i32* %p unordered, align 4
57 %x = load atomic i32, i32* %p unordered, align 4
63 ; Forwarding atomic to atomic is fine
66 ; CHECK: %x = load atomic i32, i32* %p unordered, align 4
68 %x = load atomic i32, i32* %p unordered, align 4
69 %y = load atomic i32, i32* %p unordered, align 4
77 ; CHECK: %x = load atomic i32, i32* %p seq_cst, align 4
78 ; CHECK: %y = load atomic i32, i32* %p monotonic, align 4
79 %x = load atomic i32, i32* %p seq_cst, align 4
80 %y = load atomic i32, i32* %p monotonic, align 4
88 ; CHECK: %x = load atomic i32, i32* %p seq_cst, align 4
89 ; CHECK: %y = load atomic i32, i32* %p acquire, align 4
90 %x = load atomic i32, i32* %p seq_cst, align 4
91 %y = load atomic i32, i32* %p acquire, align 4
101 %x = load atomic i32, i32* null unordered, align 4
108 ; CHECK: load atomic i32, i32* null monotonic
109 %x = load atomic i32, i32* null monotonic, align 4
116 ; CHECK: load atomic i32, i32* null seq_cst
117 %x = load atomic i32, i32* null seq_cst, align 4
125 ; CHECK: store atomic i32 undef, i32* null
126 store atomic i32 0, i32* null unordered, align 4
133 ; CHECK: store atomic i32 0, i32* null monotonic
134 store atomic i32 0, i32* null monotonic, align 4
141 ; CHECK: store atomic i32 0, i32* null seq_cst
142 store atomic i32 0, i32* null seq_cst, align 4
151 ; CHECK: load atomic i32, i32* @a unordered, align 4
152 ; CHECK: load atomic i32, i32* @b unordered, align 4
154 %x = load atomic i32, i32* %addr unordered, align 4
161 ; CHECK: load atomic i32, i32* %addr monotonic, align 4
163 %x = load atomic i32, i32* %addr monotonic, align 4
170 ; CHECK: load atomic i32, i32* %addr seq_cst, align 4
172 %x = load atomic i32, i32* %addr seq_cst, align 4
179 ; CHECK: store atomic i32 [[PHI]], i32* @a unordered, align 4
183 store atomic i32 1, i32* @a unordered, align 4
186 store atomic i32 2, i32* @a unordered, align 4
200 store atomic i32 1, i32* @a monotonic, align 4
203 store atomic i32 2, i32* @a monotonic, align 4
214 ; CHECK: load atomic i32, i32* [[A:%.*]] unordered, align 4
215 ; CHECK: store atomic i32 [[B:%.*]], i32* [[C:%.*]] unordered, align 4
216 %x = load atomic float, float* %p unordered, align 4
218 store atomic float %x, float* %p unordered, align 4
225 ; CHECK: load atomic float, float* %p seq_cst, align 4
226 ; CHECK: store atomic float %x, float* %p seq_cst, align 4
227 %x = load atomic float, float* %p seq_cst, align 4
229 store atomic float %x, float* %p seq_cst, align 4
235 ; CHECK: store atomic i8* %v, i8** [[D:%.*]] unordered, align 4
237 store atomic i32* %cast, i32** %p unordered, align 4
243 ; CHECK: store atomic i32* %cast, i32** %p monotonic, align 4
245 store atomic i32* %cast, i32** %p monotonic, align 4
265 ; CHECK: store atomic i64 %l1, i64* %2 seq_cst, align 8
267 store atomic i8* %l, i8** %p2 seq_cst, align 8