Skip to content

Commit 91da13c

Browse files
trbauersys_zuul
authored andcommitted
Atomic subtract was emulated via negate and atomic_add.
But hardware suppports native atomic sub. Change-Id: I7667206704afef48bd1d60830e3c0c37b24a74dd
1 parent eeba0ea commit 91da13c

File tree

1 file changed

+5
-5
lines changed

1 file changed

+5
-5
lines changed

IGC/BiFModule/Implementation/atomics.cl

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -952,13 +952,13 @@ uint __builtin_spirv_OpAtomicISub_p0i32_i32_i32_i32( volatile __private uint *Po
952952

953953
uint __builtin_spirv_OpAtomicISub_p1i32_i32_i32_i32( volatile __global uint *Pointer, uint Scope, uint Semantics, uint Value )
954954
{
955-
atomic_operation_1op( __builtin_IB_atomic_add_global_i32, uint, (global int*)Pointer, Scope, Semantics, -as_int(Value) );
955+
atomic_operation_1op( __builtin_IB_atomic_sub_global_i32, uint, (global int*)Pointer, Scope, Semantics, Value );
956956
}
957957

958958

959959
uint __builtin_spirv_OpAtomicISub_p3i32_i32_i32_i32( volatile __local uint *Pointer, uint Scope, uint Semantics, uint Value )
960960
{
961-
atomic_operation_1op( __builtin_IB_atomic_add_local_i32, uint, (local int*)Pointer, Scope, Semantics, -as_int(Value) );
961+
atomic_operation_1op( __builtin_IB_atomic_sub_local_i32, uint, (local int*)Pointer, Scope, Semantics, Value );
962962
}
963963

964964
#if (__OPENCL_C_VERSION__ >= CL_VERSION_2_0)
@@ -967,11 +967,11 @@ uint __builtin_spirv_OpAtomicISub_p4i32_i32_i32_i32( volatile __generic uint *Po
967967
{
968968
if(__builtin_spirv_OpGenericCastToPtrExplicit_p3i8_p4i8_i32(__builtin_astype((Pointer), __generic void*), StorageWorkgroup))
969969
{
970-
atomic_operation_1op( __builtin_IB_atomic_add_local_i32, uint, (__local int*)Pointer, Scope, Semantics, -as_int(Value) );
970+
atomic_operation_1op( __builtin_IB_atomic_sub_local_i32, uint, (__local int*)Pointer, Scope, Semantics, Value );
971971
}
972972
else
973973
{
974-
atomic_operation_1op( __builtin_IB_atomic_add_global_i32, uint, (__global int*)Pointer, Scope, Semantics, -as_int(Value) );
974+
atomic_operation_1op( __builtin_IB_atomic_sub_global_i32, uint, (__global int*)Pointer, Scope, Semantics, Value );
975975
}
976976
}
977977

@@ -988,7 +988,7 @@ ulong __builtin_spirv_OpAtomicISub_p0i64_i32_i32_i64( volatile __private ulong *
988988

989989
ulong __builtin_spirv_OpAtomicISub_p1i64_i32_i32_i64( volatile __global ulong *Pointer, uint Scope, uint Semantics, ulong Value )
990990
{
991-
atomic_operation_1op( __builtin_IB_atomic_add_global_i64, ulong, (global long*)Pointer, Scope, Semantics, -as_long(Value) );
991+
atomic_operation_1op( __builtin_IB_atomic_sub_global_i64, ulong, (global long*)Pointer, Scope, Semantics, Value );
992992
}
993993

994994

0 commit comments

Comments
 (0)