@@ -194,6 +194,62 @@ define <2 x float> @atomic_vec2_float_align(ptr %x) {
194194 ret <2 x float > %ret
195195}
196196
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+
197253define <1 x ptr > @atomic_vec1_ptr (ptr %x ) nounwind {
198254; CHECK3-LABEL: atomic_vec1_ptr:
199255; CHECK3: ## %bb.0:
0 commit comments