mirror of
https://github.com/intel/llvm.git
synced 2026-01-16 05:32:28 +08:00
[libclc] Implement integer __clc_abs using __builtin_elementwise_abs (#164957)
Previous implementation was cmp, select and @llvm.smax sequence in LLVM IR. __CLC_GEN_U/__CLC_GEN_S is upstreamed from intel/llvm repo.
This commit is contained in:
@@ -23,6 +23,7 @@
|
||||
// to keep this file manageable.
|
||||
#define __CLC_GENSIZE 8
|
||||
#define __CLC_SCALAR_GENTYPE char
|
||||
#define __CLC_GEN_S
|
||||
|
||||
#define __CLC_GENTYPE char
|
||||
#define __CLC_U_GENTYPE uchar
|
||||
@@ -93,6 +94,8 @@
|
||||
|
||||
#undef __CLC_SCALAR_GENTYPE
|
||||
#define __CLC_SCALAR_GENTYPE uchar
|
||||
#undef __CLC_GEN_S
|
||||
#define __CLC_GEN_U
|
||||
|
||||
#define __CLC_GENTYPE uchar
|
||||
#define __CLC_U_GENTYPE uchar
|
||||
@@ -165,6 +168,8 @@
|
||||
#define __CLC_GENSIZE 16
|
||||
#undef __CLC_SCALAR_GENTYPE
|
||||
#define __CLC_SCALAR_GENTYPE short
|
||||
#undef __CLC_GEN_U
|
||||
#define __CLC_GEN_S
|
||||
|
||||
#define __CLC_GENTYPE short
|
||||
#define __CLC_U_GENTYPE ushort
|
||||
@@ -235,6 +240,8 @@
|
||||
|
||||
#undef __CLC_SCALAR_GENTYPE
|
||||
#define __CLC_SCALAR_GENTYPE ushort
|
||||
#undef __CLC_GEN_S
|
||||
#define __CLC_GEN_U
|
||||
|
||||
#define __CLC_GENTYPE ushort
|
||||
#define __CLC_U_GENTYPE ushort
|
||||
@@ -307,6 +314,8 @@
|
||||
#define __CLC_GENSIZE 32
|
||||
#undef __CLC_SCALAR_GENTYPE
|
||||
#define __CLC_SCALAR_GENTYPE int
|
||||
#undef __CLC_GEN_U
|
||||
#define __CLC_GEN_S
|
||||
|
||||
#define __CLC_GENTYPE int
|
||||
#define __CLC_U_GENTYPE uint
|
||||
@@ -377,6 +386,8 @@
|
||||
|
||||
#undef __CLC_SCALAR_GENTYPE
|
||||
#define __CLC_SCALAR_GENTYPE uint
|
||||
#undef __CLC_GEN_S
|
||||
#define __CLC_GEN_U
|
||||
|
||||
#define __CLC_GENTYPE uint
|
||||
#define __CLC_U_GENTYPE uint
|
||||
@@ -449,6 +460,8 @@
|
||||
#define __CLC_GENSIZE 64
|
||||
#undef __CLC_SCALAR_GENTYPE
|
||||
#define __CLC_SCALAR_GENTYPE long
|
||||
#undef __CLC_GEN_U
|
||||
#define __CLC_GEN_S
|
||||
|
||||
#define __CLC_GENTYPE long
|
||||
#define __CLC_U_GENTYPE ulong
|
||||
@@ -519,6 +532,8 @@
|
||||
|
||||
#undef __CLC_SCALAR_GENTYPE
|
||||
#define __CLC_SCALAR_GENTYPE ulong
|
||||
#undef __CLC_GEN_S
|
||||
#define __CLC_GEN_U
|
||||
|
||||
#define __CLC_GENTYPE ulong
|
||||
#define __CLC_U_GENTYPE ulong
|
||||
@@ -588,6 +603,8 @@
|
||||
#undef __CLC_S_GENTYPE
|
||||
#undef __CLC_VECSIZE_OR_1
|
||||
|
||||
#undef __CLC_GEN_U
|
||||
|
||||
#undef __CLC_GENSIZE
|
||||
#undef __CLC_SCALAR_GENTYPE
|
||||
#undef __CLC_BODY
|
||||
|
||||
@@ -6,7 +6,14 @@
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#ifdef __CLC_GEN_S
|
||||
|
||||
_CLC_OVERLOAD _CLC_DEF __CLC_U_GENTYPE __clc_abs(__CLC_GENTYPE x) {
|
||||
return __builtin_astype((__CLC_GENTYPE)(x > (__CLC_GENTYPE)(0) ? x : -x),
|
||||
__CLC_U_GENTYPE);
|
||||
return __builtin_astype(__builtin_elementwise_abs(x), __CLC_U_GENTYPE);
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
_CLC_OVERLOAD _CLC_DEF __CLC_U_GENTYPE __clc_abs(__CLC_GENTYPE x) { return x; }
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user