@@ -146,6 +146,64 @@ define <1 x i64> @atomic_vec1_i64_align(ptr %x) nounwind {
146
146
ret <1 x i64 > %ret
147
147
}
148
148
149
+ define <2 x i8 > @atomic_vec2_i8 (ptr %x ) {
150
+ ; CHECK3-LABEL: atomic_vec2_i8:
151
+ ; CHECK3: ## %bb.0:
152
+ ; CHECK3-NEXT: movss {{.*#+}} xmm0 = mem[0],zero,zero,zero
153
+ ; CHECK3-NEXT: retq
154
+ ;
155
+ ; CHECK0-LABEL: atomic_vec2_i8:
156
+ ; CHECK0: ## %bb.0:
157
+ ; CHECK0-NEXT: movw (%rdi), %cx
158
+ ; CHECK0-NEXT: ## implicit-def: $eax
159
+ ; CHECK0-NEXT: movw %cx, %ax
160
+ ; CHECK0-NEXT: movd %eax, %xmm0
161
+ ; CHECK0-NEXT: retq
162
+ %ret = load atomic <2 x i8 >, ptr %x acquire , align 4
163
+ ret <2 x i8 > %ret
164
+ }
165
+
166
+ define <2 x i16 > @atomic_vec2_i16 (ptr %x ) {
167
+ ; CHECK3-LABEL: atomic_vec2_i16:
168
+ ; CHECK3: ## %bb.0:
169
+ ; CHECK3-NEXT: movss {{.*#+}} xmm0 = mem[0],zero,zero,zero
170
+ ; CHECK3-NEXT: retq
171
+ ;
172
+ ; CHECK0-LABEL: atomic_vec2_i16:
173
+ ; CHECK0: ## %bb.0:
174
+ ; CHECK0-NEXT: movd {{.*#+}} xmm0 = mem[0],zero,zero,zero
175
+ ; CHECK0-NEXT: retq
176
+ %ret = load atomic <2 x i16 >, ptr %x acquire , align 4
177
+ ret <2 x i16 > %ret
178
+ }
179
+
180
+ define <2 x ptr addrspace (270 )> @atomic_vec2_ptr270 (ptr %x ) {
181
+ ; CHECK-LABEL: atomic_vec2_ptr270:
182
+ ; CHECK: ## %bb.0:
183
+ ; CHECK-NEXT: movq (%rdi), %xmm0
184
+ ; CHECK-NEXT: retq
185
+ %ret = load atomic <2 x ptr addrspace (270 )>, ptr %x acquire , align 8
186
+ ret <2 x ptr addrspace (270 )> %ret
187
+ }
188
+
189
+ define <2 x i32 > @atomic_vec2_i32_align (ptr %x ) {
190
+ ; CHECK-LABEL: atomic_vec2_i32_align:
191
+ ; CHECK: ## %bb.0:
192
+ ; CHECK-NEXT: movq (%rdi), %xmm0
193
+ ; CHECK-NEXT: retq
194
+ %ret = load atomic <2 x i32 >, ptr %x acquire , align 8
195
+ ret <2 x i32 > %ret
196
+ }
197
+
198
+ define <2 x float > @atomic_vec2_float_align (ptr %x ) {
199
+ ; CHECK-LABEL: atomic_vec2_float_align:
200
+ ; CHECK: ## %bb.0:
201
+ ; CHECK-NEXT: movq (%rdi), %xmm0
202
+ ; CHECK-NEXT: retq
203
+ %ret = load atomic <2 x float >, ptr %x acquire , align 8
204
+ ret <2 x float > %ret
205
+ }
206
+
149
207
define <1 x ptr > @atomic_vec1_ptr (ptr %x ) nounwind {
150
208
; CHECK3-LABEL: atomic_vec1_ptr:
151
209
; CHECK3: ## %bb.0:
@@ -295,6 +353,29 @@ define <2 x i32> @atomic_vec2_i32(ptr %x) nounwind {
295
353
ret <2 x i32 > %ret
296
354
}
297
355
356
+ define <4 x i8 > @atomic_vec4_i8 (ptr %x ) nounwind {
357
+ ; CHECK3-LABEL: atomic_vec4_i8:
358
+ ; CHECK3: ## %bb.0:
359
+ ; CHECK3-NEXT: movss {{.*#+}} xmm0 = mem[0],zero,zero,zero
360
+ ; CHECK3-NEXT: retq
361
+ ;
362
+ ; CHECK0-LABEL: atomic_vec4_i8:
363
+ ; CHECK0: ## %bb.0:
364
+ ; CHECK0-NEXT: movd {{.*#+}} xmm0 = mem[0],zero,zero,zero
365
+ ; CHECK0-NEXT: retq
366
+ %ret = load atomic <4 x i8 >, ptr %x acquire , align 4
367
+ ret <4 x i8 > %ret
368
+ }
369
+
370
+ define <4 x i16 > @atomic_vec4_i16 (ptr %x ) nounwind {
371
+ ; CHECK-LABEL: atomic_vec4_i16:
372
+ ; CHECK: ## %bb.0:
373
+ ; CHECK-NEXT: movq (%rdi), %xmm0
374
+ ; CHECK-NEXT: retq
375
+ %ret = load atomic <4 x i16 >, ptr %x acquire , align 8
376
+ ret <4 x i16 > %ret
377
+ }
378
+
298
379
define <4 x float > @atomic_vec4_float_align (ptr %x ) nounwind {
299
380
; CHECK-LABEL: atomic_vec4_float_align:
300
381
; CHECK: ## %bb.0:
0 commit comments