Skip to content

Commit 2a3aaee

Browse files
authored
[SYCL] Add simple abs(int) to imf libdevice (#9116)
This PR aims to add a simple "int32_t abs(int32_t)" to imf libdevice. The request is from DL framework developers. --------- Signed-off-by: jinge90 <ge.jin@intel.com>
1 parent dfe6e4e commit 2a3aaee

File tree

5 files changed

+13
-0
lines changed

5 files changed

+13
-0
lines changed

libdevice/device_imf.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
#include "imf_bf16.hpp"
1414
#include "imf_half.hpp"
1515
#include <cstddef>
16+
#include <cstdint>
1617
#include <limits>
1718
#include <type_traits>
1819
#ifdef __LIBDEVICE_IMF_ENABLED__

libdevice/imf/imf_inline_fp32.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,10 @@ DEVICE_EXTERN_C_INLINE float __devicelib_imf_fminf(float a, float b) {
131131
return __fmin(a, b);
132132
}
133133

134+
DEVICE_EXTERN_C_INLINE int32_t __devicelib_imf_abs(int32_t x) {
135+
return (x >= 0) ? x : -x;
136+
}
137+
134138
DEVICE_EXTERN_C_INLINE float __devicelib_imf_fabsf(float x) {
135139
return __fabs(x);
136140
}

libdevice/imf_wrapper.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -543,6 +543,12 @@ float __devicelib_imf_invf(float);
543543
DEVICE_EXTERN_C_INLINE
544544
float __imf_invf(float x) { return __devicelib_imf_invf(x); }
545545

546+
DEVICE_EXTERN_C_INLINE
547+
int32_t __devicelib_imf_abs(int32_t);
548+
549+
DEVICE_EXTERN_C_INLINE
550+
int32_t __imf_abs(int32_t x) { return __devicelib_imf_abs(x); }
551+
546552
DEVICE_EXTERN_C_INLINE
547553
float __devicelib_imf_fabsf(float);
548554

llvm/tools/sycl-post-link/SYCLDeviceLibReqMask.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -201,6 +201,7 @@ SYCLDeviceLibFuncMap SDLMap = {
201201
{"__devicelib_imf_fmaf", DeviceLibExt::cl_intel_devicelib_imf},
202202
{"__devicelib_imf_floorf", DeviceLibExt::cl_intel_devicelib_imf},
203203
{"__devicelib_imf_ceilf", DeviceLibExt::cl_intel_devicelib_imf},
204+
{"__devicelib_imf_abs", DeviceLibExt::cl_intel_devicelib_imf},
204205
{"__devicelib_imf_fabsf", DeviceLibExt::cl_intel_devicelib_imf},
205206
{"__devicelib_imf_truncf", DeviceLibExt::cl_intel_devicelib_imf},
206207
{"__devicelib_imf_rintf", DeviceLibExt::cl_intel_devicelib_imf},

sycl/include/sycl/builtins.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2707,6 +2707,7 @@ extern __DPCPP_SYCL_EXTERNAL long long int __imf_mul64hi(long long int x,
27072707
long long int y);
27082708
extern __DPCPP_SYCL_EXTERNAL unsigned long long int
27092709
__imf_umul64hi(unsigned long long int x, unsigned long long int y);
2710+
extern __DPCPP_SYCL_EXTERNAL int __imf_abs(int x);
27102711
extern __DPCPP_SYCL_EXTERNAL float __imf_saturatef(float x);
27112712
extern __DPCPP_SYCL_EXTERNAL float __imf_fmaf(float x, float y, float z);
27122713
extern __DPCPP_SYCL_EXTERNAL float __imf_fabsf(float x);

0 commit comments

Comments
 (0)