@@ -374,6 +374,74 @@ define <2 x float> @atomic_vec2_float_align(ptr %x) {
374
374
ret <2 x float > %ret
375
375
}
376
376
377
+ define <2 x half > @atomic_vec2_half (ptr %x ) {
378
+ ; CHECK-O3-LABEL: atomic_vec2_half:
379
+ ; CHECK-O3: # %bb.0:
380
+ ; CHECK-O3-NEXT: movss {{.*#+}} xmm0 = mem[0],zero,zero,zero
381
+ ; CHECK-O3-NEXT: retq
382
+ ;
383
+ ; CHECK-SSE-O3-LABEL: atomic_vec2_half:
384
+ ; CHECK-SSE-O3: # %bb.0:
385
+ ; CHECK-SSE-O3-NEXT: movss {{.*#+}} xmm0 = mem[0],zero,zero,zero
386
+ ; CHECK-SSE-O3-NEXT: retq
387
+ ;
388
+ ; CHECK-AVX-O3-LABEL: atomic_vec2_half:
389
+ ; CHECK-AVX-O3: # %bb.0:
390
+ ; CHECK-AVX-O3-NEXT: movss {{.*#+}} xmm0 = mem[0],zero,zero,zero
391
+ ; CHECK-AVX-O3-NEXT: retq
392
+ ;
393
+ ; CHECK-O0-LABEL: atomic_vec2_half:
394
+ ; CHECK-O0: # %bb.0:
395
+ ; CHECK-O0-NEXT: movd {{.*#+}} xmm0 = mem[0],zero,zero,zero
396
+ ; CHECK-O0-NEXT: retq
397
+ ;
398
+ ; CHECK-SSE-O0-LABEL: atomic_vec2_half:
399
+ ; CHECK-SSE-O0: # %bb.0:
400
+ ; CHECK-SSE-O0-NEXT: movd {{.*#+}} xmm0 = mem[0],zero,zero,zero
401
+ ; CHECK-SSE-O0-NEXT: retq
402
+ ;
403
+ ; CHECK-AVX-O0-LABEL: atomic_vec2_half:
404
+ ; CHECK-AVX-O0: # %bb.0:
405
+ ; CHECK-AVX-O0-NEXT: movd {{.*#+}} xmm0 = mem[0],zero,zero,zero
406
+ ; CHECK-AVX-O0-NEXT: retq
407
+ %ret = load atomic <2 x half >, ptr %x acquire , align 4
408
+ ret <2 x half > %ret
409
+ }
410
+
411
+ define <2 x bfloat> @atomic_vec2_bfloat (ptr %x ) {
412
+ ; CHECK-O3-LABEL: atomic_vec2_bfloat:
413
+ ; CHECK-O3: # %bb.0:
414
+ ; CHECK-O3-NEXT: movss {{.*#+}} xmm0 = mem[0],zero,zero,zero
415
+ ; CHECK-O3-NEXT: retq
416
+ ;
417
+ ; CHECK-SSE-O3-LABEL: atomic_vec2_bfloat:
418
+ ; CHECK-SSE-O3: # %bb.0:
419
+ ; CHECK-SSE-O3-NEXT: movss {{.*#+}} xmm0 = mem[0],zero,zero,zero
420
+ ; CHECK-SSE-O3-NEXT: retq
421
+ ;
422
+ ; CHECK-AVX-O3-LABEL: atomic_vec2_bfloat:
423
+ ; CHECK-AVX-O3: # %bb.0:
424
+ ; CHECK-AVX-O3-NEXT: movss {{.*#+}} xmm0 = mem[0],zero,zero,zero
425
+ ; CHECK-AVX-O3-NEXT: retq
426
+ ;
427
+ ; CHECK-O0-LABEL: atomic_vec2_bfloat:
428
+ ; CHECK-O0: # %bb.0:
429
+ ; CHECK-O0-NEXT: movd {{.*#+}} xmm0 = mem[0],zero,zero,zero
430
+ ; CHECK-O0-NEXT: retq
431
+ ;
432
+ ; CHECK-SSE-O0-LABEL: atomic_vec2_bfloat:
433
+ ; CHECK-SSE-O0: # %bb.0:
434
+ ; CHECK-SSE-O0-NEXT: movd {{.*#+}} xmm0 = mem[0],zero,zero,zero
435
+ ; CHECK-SSE-O0-NEXT: retq
436
+ ;
437
+ ; CHECK-AVX-O0-LABEL: atomic_vec2_bfloat:
438
+ ; CHECK-AVX-O0: # %bb.0:
439
+ ; CHECK-AVX-O0-NEXT: movd {{.*#+}} xmm0 = mem[0],zero,zero,zero
440
+ ; CHECK-AVX-O0-NEXT: retq
441
+ %ret = load atomic <2 x bfloat>, ptr %x acquire , align 4
442
+ ret <2 x bfloat> %ret
443
+ }
444
+
377
445
define <1 x ptr > @atomic_vec1_ptr (ptr %x ) nounwind {
378
446
; CHECK-O3-LABEL: atomic_vec1_ptr:
379
447
; CHECK-O3: # %bb.0:
@@ -835,6 +903,24 @@ define <4 x i16> @atomic_vec4_i16(ptr %x) nounwind {
835
903
ret <4 x i16 > %ret
836
904
}
837
905
906
+ define <4 x half > @atomic_vec4_half (ptr %x ) nounwind {
907
+ ; CHECK-LABEL: atomic_vec4_half:
908
+ ; CHECK: # %bb.0:
909
+ ; CHECK-NEXT: movq (%rdi), %xmm0
910
+ ; CHECK-NEXT: retq
911
+ %ret = load atomic <4 x half >, ptr %x acquire , align 8
912
+ ret <4 x half > %ret
913
+ }
914
+
915
+ define <4 x bfloat> @atomic_vec4_bfloat (ptr %x ) nounwind {
916
+ ; CHECK-LABEL: atomic_vec4_bfloat:
917
+ ; CHECK: # %bb.0:
918
+ ; CHECK-NEXT: movq (%rdi), %xmm0
919
+ ; CHECK-NEXT: retq
920
+ %ret = load atomic <4 x bfloat>, ptr %x acquire , align 8
921
+ ret <4 x bfloat> %ret
922
+ }
923
+
838
924
define <4 x float > @atomic_vec4_float_align (ptr %x ) nounwind {
839
925
; CHECK-O3-LABEL: atomic_vec4_float_align:
840
926
; CHECK-O3: # %bb.0:
0 commit comments