diff options
Diffstat (limited to 'libclc/generic/lib/math/copysign.cl')
| -rw-r--r-- | libclc/generic/lib/math/copysign.cl | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/libclc/generic/lib/math/copysign.cl b/libclc/generic/lib/math/copysign.cl index 4e0c51b0937..df65e9d7fec 100644 --- a/libclc/generic/lib/math/copysign.cl +++ b/libclc/generic/lib/math/copysign.cl @@ -10,3 +10,18 @@ _CLC_DEFINE_BINARY_BUILTIN(float, copysign, __builtin_copysignf, float, float) _CLC_DEFINE_BINARY_BUILTIN(double, copysign, __builtin_copysign, double, double) #endif + +#ifdef cl_khr_fp16 + +#pragma OPENCL EXTENSION cl_khr_fp16 : enable + +_CLC_DEF _CLC_OVERLOAD half copysign(half x, half y) +{ + ushort sign_x = as_ushort(x) & 0x8000u; + ushort unsigned_y = as_ushort(y) & 0x7ffffu; + + return as_half((ushort)(sign_x | unsigned_y)); +} +_CLC_BINARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, half, copysign, half, half) + +#endif |

