@@ -176,6 +176,62 @@ define <2 x float> @atomic_vec2_float_align(ptr %x) {
176176 ret <2 x float > %ret
177177}
178178
179+ define <2 x half > @atomic_vec2_half (ptr %x ) {
180+ ; CHECK3-LABEL: atomic_vec2_half:
181+ ; CHECK3: ## %bb.0:
182+ ; CHECK3-NEXT: movzwl (%rdi), %eax
183+ ; CHECK3-NEXT: movzwl 2(%rdi), %ecx
184+ ; CHECK3-NEXT: pinsrw $0, %eax, %xmm0
185+ ; CHECK3-NEXT: pinsrw $0, %ecx, %xmm1
186+ ; CHECK3-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]
187+ ; CHECK3-NEXT: retq
188+ ;
189+ ; CHECK0-LABEL: atomic_vec2_half:
190+ ; CHECK0: ## %bb.0:
191+ ; CHECK0-NEXT: movw (%rdi), %dx
192+ ; CHECK0-NEXT: movw 2(%rdi), %cx
193+ ; CHECK0-NEXT: ## implicit-def: $eax
194+ ; CHECK0-NEXT: movw %dx, %ax
195+ ; CHECK0-NEXT: ## implicit-def: $xmm0
196+ ; CHECK0-NEXT: pinsrw $0, %eax, %xmm0
197+ ; CHECK0-NEXT: ## implicit-def: $eax
198+ ; CHECK0-NEXT: movw %cx, %ax
199+ ; CHECK0-NEXT: ## implicit-def: $xmm1
200+ ; CHECK0-NEXT: pinsrw $0, %eax, %xmm1
201+ ; CHECK0-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]
202+ ; CHECK0-NEXT: retq
203+ %ret = load atomic <2 x half >, ptr %x acquire , align 4
204+ ret <2 x half > %ret
205+ }
206+
207+ define <2 x bfloat> @atomic_vec2_bfloat (ptr %x ) {
208+ ; CHECK3-LABEL: atomic_vec2_bfloat:
209+ ; CHECK3: ## %bb.0:
210+ ; CHECK3-NEXT: movzwl (%rdi), %eax
211+ ; CHECK3-NEXT: movzwl 2(%rdi), %ecx
212+ ; CHECK3-NEXT: pinsrw $0, %ecx, %xmm1
213+ ; CHECK3-NEXT: pinsrw $0, %eax, %xmm0
214+ ; CHECK3-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]
215+ ; CHECK3-NEXT: retq
216+ ;
217+ ; CHECK0-LABEL: atomic_vec2_bfloat:
218+ ; CHECK0: ## %bb.0:
219+ ; CHECK0-NEXT: movw (%rdi), %cx
220+ ; CHECK0-NEXT: movw 2(%rdi), %dx
221+ ; CHECK0-NEXT: ## implicit-def: $eax
222+ ; CHECK0-NEXT: movw %dx, %ax
223+ ; CHECK0-NEXT: ## implicit-def: $xmm1
224+ ; CHECK0-NEXT: pinsrw $0, %eax, %xmm1
225+ ; CHECK0-NEXT: ## implicit-def: $eax
226+ ; CHECK0-NEXT: movw %cx, %ax
227+ ; CHECK0-NEXT: ## implicit-def: $xmm0
228+ ; CHECK0-NEXT: pinsrw $0, %eax, %xmm0
229+ ; CHECK0-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]
230+ ; CHECK0-NEXT: retq
231+ %ret = load atomic <2 x bfloat>, ptr %x acquire , align 4
232+ ret <2 x bfloat> %ret
233+ }
234+
179235define <1 x ptr > @atomic_vec1_ptr (ptr %x ) nounwind {
180236; CHECK3-LABEL: atomic_vec1_ptr:
181237; CHECK3: ## %bb.0:
0 commit comments