@@ -194,6 +194,62 @@ define <2 x float> @atomic_vec2_float_align(ptr %x) {
194
194
ret <2 x float > %ret
195
195
}
196
196
197
+ define <2 x half > @atomic_vec2_half (ptr %x ) {
198
+ ; CHECK3-LABEL: atomic_vec2_half:
199
+ ; CHECK3: ## %bb.0:
200
+ ; CHECK3-NEXT: movzwl (%rdi), %eax
201
+ ; CHECK3-NEXT: movzwl 2(%rdi), %ecx
202
+ ; CHECK3-NEXT: pinsrw $0, %eax, %xmm0
203
+ ; CHECK3-NEXT: pinsrw $0, %ecx, %xmm1
204
+ ; CHECK3-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]
205
+ ; CHECK3-NEXT: retq
206
+ ;
207
+ ; CHECK0-LABEL: atomic_vec2_half:
208
+ ; CHECK0: ## %bb.0:
209
+ ; CHECK0-NEXT: movw (%rdi), %dx
210
+ ; CHECK0-NEXT: movw 2(%rdi), %cx
211
+ ; CHECK0-NEXT: ## implicit-def: $eax
212
+ ; CHECK0-NEXT: movw %dx, %ax
213
+ ; CHECK0-NEXT: ## implicit-def: $xmm0
214
+ ; CHECK0-NEXT: pinsrw $0, %eax, %xmm0
215
+ ; CHECK0-NEXT: ## implicit-def: $eax
216
+ ; CHECK0-NEXT: movw %cx, %ax
217
+ ; CHECK0-NEXT: ## implicit-def: $xmm1
218
+ ; CHECK0-NEXT: pinsrw $0, %eax, %xmm1
219
+ ; CHECK0-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]
220
+ ; CHECK0-NEXT: retq
221
+ %ret = load atomic <2 x half >, ptr %x acquire , align 4
222
+ ret <2 x half > %ret
223
+ }
224
+
225
+ define <2 x bfloat> @atomic_vec2_bfloat (ptr %x ) {
226
+ ; CHECK3-LABEL: atomic_vec2_bfloat:
227
+ ; CHECK3: ## %bb.0:
228
+ ; CHECK3-NEXT: movzwl (%rdi), %eax
229
+ ; CHECK3-NEXT: movzwl 2(%rdi), %ecx
230
+ ; CHECK3-NEXT: pinsrw $0, %ecx, %xmm1
231
+ ; CHECK3-NEXT: pinsrw $0, %eax, %xmm0
232
+ ; CHECK3-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]
233
+ ; CHECK3-NEXT: retq
234
+ ;
235
+ ; CHECK0-LABEL: atomic_vec2_bfloat:
236
+ ; CHECK0: ## %bb.0:
237
+ ; CHECK0-NEXT: movw (%rdi), %cx
238
+ ; CHECK0-NEXT: movw 2(%rdi), %dx
239
+ ; CHECK0-NEXT: ## implicit-def: $eax
240
+ ; CHECK0-NEXT: movw %dx, %ax
241
+ ; CHECK0-NEXT: ## implicit-def: $xmm1
242
+ ; CHECK0-NEXT: pinsrw $0, %eax, %xmm1
243
+ ; CHECK0-NEXT: ## implicit-def: $eax
244
+ ; CHECK0-NEXT: movw %cx, %ax
245
+ ; CHECK0-NEXT: ## implicit-def: $xmm0
246
+ ; CHECK0-NEXT: pinsrw $0, %eax, %xmm0
247
+ ; CHECK0-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]
248
+ ; CHECK0-NEXT: retq
249
+ %ret = load atomic <2 x bfloat>, ptr %x acquire , align 4
250
+ ret <2 x bfloat> %ret
251
+ }
252
+
197
253
define <1 x ptr > @atomic_vec1_ptr (ptr %x ) nounwind {
198
254
; CHECK3-LABEL: atomic_vec1_ptr:
199
255
; CHECK3: ## %bb.0:
0 commit comments