@@ -176,6 +176,62 @@ define <2 x float> @atomic_vec2_float_align(ptr %x) {
176
176
ret <2 x float > %ret
177
177
}
178
178
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
+
179
235
define <1 x ptr > @atomic_vec1_ptr (ptr %x ) nounwind {
180
236
; CHECK3-LABEL: atomic_vec1_ptr:
181
237
; CHECK3: ## %bb.0:
0 commit comments