@@ -13640,6 +13640,118 @@ uintptr_t __ovld atomic_fetch_sub_explicit(volatile __local atomic_uintptr_t *ob
13640
13640
// The functionality added by cl_ext_float_atomics extension
13641
13641
#if defined(cl_ext_float_atomics)
13642
13642
13643
+ #if defined(__opencl_c_ext_fp16_global_atomic_load_store)
13644
+ void __ovld atomic_store(volatile __global atomic_half *object, half operand);
13645
+ void __ovld atomic_store_explicit(volatile __global atomic_half *object,
13646
+ half operand, memory_order order);
13647
+ void __ovld atomic_store_explicit(volatile __global atomic_half *object,
13648
+ half operand, memory_order order,
13649
+ memory_scope scope);
13650
+ half __ovld atomic_load(volatile __global atomic_half *object);
13651
+ half __ovld atomic_load_explicit(volatile __global atomic_half *object,
13652
+ memory_order order);
13653
+ half __ovld atomic_load_explicit(volatile __global atomic_half *object,
13654
+ memory_order order, memory_scope scope);
13655
+ half __ovld atomic_exchange(volatile __global atomic_half *object,
13656
+ half operand);
13657
+ half __ovld atomic_exchange_explicit(volatile __global atomic_half *object,
13658
+ half operand, memory_order order);
13659
+ half __ovld atomic_exchange_explicit(volatile __global atomic_half *object,
13660
+ half operand, memory_order order,
13661
+ memory_scope scope);
13662
+ #endif // defined(__opencl_c_ext_fp16_global_atomic_load_store)
13663
+
13664
+ #if defined(__opencl_c_ext_fp16_local_atomic_load_store)
13665
+ void __ovld atomic_store(volatile __local atomic_half *object, half operand);
13666
+ void __ovld atomic_store_explicit(volatile __local atomic_half *object,
13667
+ half operand, memory_order order);
13668
+ void __ovld atomic_store_explicit(volatile __local atomic_half *object,
13669
+ half operand, memory_order order,
13670
+ memory_scope scope);
13671
+ half __ovld atomic_load(volatile __local atomic_half *object);
13672
+ half __ovld atomic_load_explicit(volatile __local atomic_half *object,
13673
+ memory_order order);
13674
+ half __ovld atomic_load_explicit(volatile __local atomic_half *object,
13675
+ memory_order order, memory_scope scope);
13676
+ half __ovld atomic_exchange(volatile __local atomic_half *object, half operand);
13677
+ half __ovld atomic_exchange_explicit(volatile __local atomic_half *object,
13678
+ half operand, memory_order order);
13679
+ half __ovld atomic_exchange_explicit(volatile __local atomic_half *object,
13680
+ half operand, memory_order order,
13681
+ memory_scope scope);
13682
+ #endif // defined(__opencl_c_ext_fp16_local_atomic_load_store)
13683
+
13684
+ #if defined(__opencl_c_ext_fp16_global_atomic_load_store) && \
13685
+ defined(__opencl_c_ext_fp16_local_atomic_load_store)
13686
+ void __ovld atomic_store(volatile atomic_half *object, half operand);
13687
+ void __ovld atomic_store_explicit(volatile atomic_half *object, half operand,
13688
+ memory_order order);
13689
+ void __ovld atomic_store_explicit(volatile atomic_half *object, half operand,
13690
+ memory_order order, memory_scope scope);
13691
+ half __ovld atomic_load(volatile atomic_half *object);
13692
+ half __ovld atomic_load_explicit(volatile atomic_half *object,
13693
+ memory_order order);
13694
+ half __ovld atomic_load_explicit(volatile atomic_half *object,
13695
+ memory_order order, memory_scope scope);
13696
+ half __ovld atomic_exchange(volatile atomic_half *object, half operand);
13697
+ half __ovld atomic_exchange_explicit(volatile atomic_half *object, half operand,
13698
+ memory_order order);
13699
+ half __ovld atomic_exchange_explicit(volatile atomic_half *object, half operand,
13700
+ memory_order order, memory_scope scope);
13701
+ #endif // defined(__opencl_c_ext_fp16_global_atomic_load_store) &&
13702
+ // defined(__opencl_c_ext_fp16_local_atomic_load_store)
13703
+
13704
+ #if defined(__opencl_c_ext_fp16_global_atomic_min_max)
13705
+ half __ovld atomic_fetch_min(volatile __global atomic_half *object,
13706
+ half operand);
13707
+ half __ovld atomic_fetch_max(volatile __global atomic_half *object,
13708
+ half operand);
13709
+ half __ovld atomic_fetch_min_explicit(volatile __global atomic_half *object,
13710
+ half operand, memory_order order);
13711
+ half __ovld atomic_fetch_max_explicit(volatile __global atomic_half *object,
13712
+ half operand, memory_order order);
13713
+ half __ovld atomic_fetch_min_explicit(volatile __global atomic_half *object,
13714
+ half operand, memory_order order,
13715
+ memory_scope scope);
13716
+ half __ovld atomic_fetch_max_explicit(volatile __global atomic_half *object,
13717
+ half operand, memory_order order,
13718
+ memory_scope scope);
13719
+ #endif // defined(__opencl_c_ext_fp16_global_atomic_min_max)
13720
+
13721
+ #if defined(__opencl_c_ext_fp16_local_atomic_min_max)
13722
+ half __ovld atomic_fetch_min(volatile __local atomic_half *object,
13723
+ half operand);
13724
+ half __ovld atomic_fetch_max(volatile __local atomic_half *object,
13725
+ half operand);
13726
+ half __ovld atomic_fetch_min_explicit(volatile __local atomic_half *object,
13727
+ half operand, memory_order order);
13728
+ half __ovld atomic_fetch_max_explicit(volatile __local atomic_half *object,
13729
+ half operand, memory_order order);
13730
+ half __ovld atomic_fetch_min_explicit(volatile __local atomic_half *object,
13731
+ half operand, memory_order order,
13732
+ memory_scope scope);
13733
+ half __ovld atomic_fetch_max_explicit(volatile __local atomic_half *object,
13734
+ half operand, memory_order order,
13735
+ memory_scope scope);
13736
+ #endif // defined(__opencl_c_ext_fp16_local_atomic_min_max)
13737
+
13738
+ #if defined(__opencl_c_ext_fp16_global_atomic_min_max) && \
13739
+ defined(__opencl_c_ext_fp16_local_atomic_min_max)
13740
+ half __ovld atomic_fetch_min(volatile atomic_half *object, half operand);
13741
+ half __ovld atomic_fetch_max(volatile atomic_half *object, half operand);
13742
+ half __ovld atomic_fetch_min_explicit(volatile atomic_half *object,
13743
+ half operand, memory_order order);
13744
+ half __ovld atomic_fetch_max_explicit(volatile atomic_half *object,
13745
+ half operand, memory_order order);
13746
+ half __ovld atomic_fetch_min_explicit(volatile atomic_half *object,
13747
+ half operand, memory_order order,
13748
+ memory_scope scope);
13749
+ half __ovld atomic_fetch_max_explicit(volatile atomic_half *object,
13750
+ half operand, memory_order order,
13751
+ memory_scope scope);
13752
+ #endif // defined(__opencl_c_ext_fp16_global_atomic_min_max) && \
13753
+ defined(__opencl_c_ext_fp16_local_atomic_min_max)
13754
+
13643
13755
#if defined(__opencl_c_ext_fp32_global_atomic_min_max)
13644
13756
float __ovld atomic_fetch_min(volatile __global atomic_float *object,
13645
13757
float operand);
@@ -13742,6 +13854,57 @@ double __ovld atomic_fetch_max_explicit(volatile atomic_double *object,
13742
13854
#endif // defined(__opencl_c_ext_fp64_global_atomic_min_max) && \
13743
13855
defined(__opencl_c_ext_fp64_local_atomic_min_max)
13744
13856
13857
+ #if defined(__opencl_c_ext_fp16_global_atomic_add)
13858
+ half __ovld atomic_fetch_add(volatile __global atomic_half *object,
13859
+ half operand);
13860
+ half __ovld atomic_fetch_sub(volatile __global atomic_half *object,
13861
+ half operand);
13862
+ half __ovld atomic_fetch_add_explicit(volatile __global atomic_half *object,
13863
+ half operand, memory_order order);
13864
+ half __ovld atomic_fetch_sub_explicit(volatile __global atomic_half *object,
13865
+ half operand, memory_order order);
13866
+ half __ovld atomic_fetch_add_explicit(volatile __global atomic_half *object,
13867
+ half operand, memory_order order,
13868
+ memory_scope scope);
13869
+ half __ovld atomic_fetch_sub_explicit(volatile __global atomic_half *object,
13870
+ half operand, memory_order order,
13871
+ memory_scope scope);
13872
+ #endif // defined(__opencl_c_ext_fp16_global_atomic_add)
13873
+
13874
+ #if defined(__opencl_c_ext_fp16_local_atomic_add)
13875
+ half __ovld atomic_fetch_add(volatile __local atomic_half *object,
13876
+ half operand);
13877
+ half __ovld atomic_fetch_sub(volatile __local atomic_half *object,
13878
+ half operand);
13879
+ half __ovld atomic_fetch_add_explicit(volatile __local atomic_half *object,
13880
+ half operand, memory_order order);
13881
+ half __ovld atomic_fetch_sub_explicit(volatile __local atomic_half *object,
13882
+ half operand, memory_order order);
13883
+ half __ovld atomic_fetch_add_explicit(volatile __local atomic_half *object,
13884
+ half operand, memory_order order,
13885
+ memory_scope scope);
13886
+ half __ovld atomic_fetch_sub_explicit(volatile __local atomic_half *object,
13887
+ half operand, memory_order order,
13888
+ memory_scope scope);
13889
+ #endif // defined(__opencl_c_ext_fp16_local_atomic_add)
13890
+
13891
+ #if defined(__opencl_c_ext_fp16_global_atomic_add) && \
13892
+ defined(__opencl_c_ext_fp16_local_atomic_add)
13893
+ half __ovld atomic_fetch_add(volatile atomic_half *object, half operand);
13894
+ half __ovld atomic_fetch_sub(volatile atomic_half *object, half operand);
13895
+ half __ovld atomic_fetch_add_explicit(volatile atomic_half *object,
13896
+ half operand, memory_order order);
13897
+ half __ovld atomic_fetch_sub_explicit(volatile atomic_half *object,
13898
+ half operand, memory_order order);
13899
+ half __ovld atomic_fetch_add_explicit(volatile atomic_half *object,
13900
+ half operand, memory_order order,
13901
+ memory_scope scope);
13902
+ half __ovld atomic_fetch_sub_explicit(volatile atomic_half *object,
13903
+ half operand, memory_order order,
13904
+ memory_scope scope);
13905
+ #endif // defined(__opencl_c_ext_fp16_global_atomic_add) && \
13906
+ defined(__opencl_c_ext_fp16_local_atomic_add)
13907
+
13745
13908
#if defined(__opencl_c_ext_fp32_global_atomic_add)
13746
13909
float __ovld atomic_fetch_add(volatile __global atomic_float *object,
13747
13910
float operand);
0 commit comments