Skip to content

[libclc] Move several integer functions to CLC library #116786

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Jan 29, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion libclc/amdgcn/lib/SOURCES
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
cl_khr_int64_extended_atomics/minmax_helpers.ll
integer/popcount.cl
math/fmax.cl
math/fmin.cl
math/ldexp.cl
Expand Down
6 changes: 0 additions & 6 deletions libclc/amdgcn/lib/integer/popcount.cl

This file was deleted.

17 changes: 0 additions & 17 deletions libclc/amdgcn/lib/integer/popcount.inc

This file was deleted.

12 changes: 12 additions & 0 deletions libclc/clc/include/clc/integer/clc_clz.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
#ifndef __CLC_INTEGER_CLC_CLZ_H__
#define __CLC_INTEGER_CLC_CLZ_H__

#define __CLC_FUNCTION __clc_clz
#define __CLC_BODY <clc/shared/unary_decl.inc>

#include <clc/integer/gentype.inc>

#undef __CLC_BODY
#undef __CLC_FUNCTION

#endif // __CLC_INTEGER_CLC_CLZ_H__
12 changes: 12 additions & 0 deletions libclc/clc/include/clc/integer/clc_hadd.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
#ifndef __CLC_INTEGER_CLC_HADD_H__
#define __CLC_INTEGER_CLC_HADD_H__

#define __CLC_FUNCTION __clc_hadd
#define __CLC_BODY <clc/shared/binary_decl.inc>

#include <clc/integer/gentype.inc>

#undef __CLC_BODY
#undef __CLC_FUNCTION

#endif // __CLC_INTEGER_CLC_HADD_H__
12 changes: 12 additions & 0 deletions libclc/clc/include/clc/integer/clc_mad24.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
#ifndef __CLC_INTEGER_CLC_MAD24_H__
#define __CLC_INTEGER_CLC_MAD24_H__

#define __CLC_FUNCTION __clc_mad24
#define __CLC_BODY <clc/shared/ternary_decl.inc>

#include <clc/integer/gentype24.inc>

#undef __CLC_BODY
#undef __CLC_FUNCTION

#endif // __CLC_INTEGER_CLC_MAD24_H__
8 changes: 8 additions & 0 deletions libclc/clc/include/clc/integer/clc_mad_hi.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
#ifndef __CLC_INTEGER_CLC_MAD_HI_H__
#define __CLC_INTEGER_CLC_MAD_HI_H__

#include <clc/integer/clc_mul_hi.h>

#define __clc_mad_hi(a, b, c) (__clc_mul_hi((a), (b)) + (c))

#endif // __CLC_INTEGER_CLC_MAD_HI_H__
12 changes: 12 additions & 0 deletions libclc/clc/include/clc/integer/clc_mul24.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
#ifndef __CLC_INTEGER_CLC_MUL24_H__
#define __CLC_INTEGER_CLC_MUL24_H__

#define __CLC_FUNCTION __clc_mul24
#define __CLC_BODY <clc/shared/binary_decl.inc>

#include <clc/integer/gentype24.inc>

#undef __CLC_BODY
#undef __CLC_FUNCTION

#endif // __CLC_INTEGER_CLC_MUL24_H__
12 changes: 12 additions & 0 deletions libclc/clc/include/clc/integer/clc_mul_hi.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
#ifndef __CLC_INTEGER_CLC_MUL_HI_H__
#define __CLC_INTEGER_CLC_MUL_HI_H__

#define __CLC_FUNCTION __clc_mul_hi
#define __CLC_BODY <clc/shared/binary_decl.inc>

#include <clc/integer/gentype.inc>

#undef __CLC_BODY
#undef __CLC_FUNCTION

#endif // __CLC_INTEGER_CLC_MUL_HI_H__
12 changes: 12 additions & 0 deletions libclc/clc/include/clc/integer/clc_popcount.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
#ifndef __CLC_INTEGER_CLC_POPCOUNT_H__
#define __CLC_INTEGER_CLC_POPCOUNT_H__

#define __CLC_FUNCTION __clc_popcount
#define __CLC_BODY <clc/shared/unary_decl.inc>

#include <clc/integer/gentype.inc>

#undef __CLC_INTRINSIC
#undef __CLC_FUNCTION

#endif // __CLC_INTEGER_CLC_POPCOUNT_H__
12 changes: 12 additions & 0 deletions libclc/clc/include/clc/integer/clc_rhadd.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
#ifndef __CLC_INTEGER_CLC_RHADD_H__
#define __CLC_INTEGER_CLC_RHADD_H__

#define __CLC_FUNCTION __clc_rhadd
#define __CLC_BODY <clc/shared/binary_decl.inc>

#include <clc/integer/gentype.inc>

#undef __CLC_BODY
#undef __CLC_FUNCTION

#endif // __CLC_INTEGER_CLC_RHADD_H__
32 changes: 32 additions & 0 deletions libclc/clc/include/clc/integer/clc_upsample.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
#ifndef __CLC_INTEGER_CLC_UPSAMPLE_H__
#define __CLC_INTEGER_CLC_UPSAMPLE_H__

#include <clc/clcfunc.h>
#include <clc/clctypes.h>

#define __CLC_UPSAMPLE_DECL(BGENTYPE, GENTYPE, UGENTYPE) \
_CLC_OVERLOAD _CLC_DECL BGENTYPE __clc_upsample(GENTYPE hi, UGENTYPE lo);

#define __CLC_UPSAMPLE_VEC(BGENTYPE, GENTYPE, UGENTYPE) \
__CLC_UPSAMPLE_DECL(BGENTYPE, GENTYPE, UGENTYPE) \
__CLC_UPSAMPLE_DECL(BGENTYPE##2, GENTYPE##2, UGENTYPE##2) \
__CLC_UPSAMPLE_DECL(BGENTYPE##3, GENTYPE##3, UGENTYPE##3) \
__CLC_UPSAMPLE_DECL(BGENTYPE##4, GENTYPE##4, UGENTYPE##4) \
__CLC_UPSAMPLE_DECL(BGENTYPE##8, GENTYPE##8, UGENTYPE##8) \
__CLC_UPSAMPLE_DECL(BGENTYPE##16, GENTYPE##16, UGENTYPE##16)

#define __CLC_UPSAMPLE_TYPES() \
__CLC_UPSAMPLE_VEC(short, char, uchar) \
__CLC_UPSAMPLE_VEC(ushort, uchar, uchar) \
__CLC_UPSAMPLE_VEC(int, short, ushort) \
__CLC_UPSAMPLE_VEC(uint, ushort, ushort) \
__CLC_UPSAMPLE_VEC(long, int, uint) \
__CLC_UPSAMPLE_VEC(ulong, uint, uint)

__CLC_UPSAMPLE_TYPES()

#undef __CLC_UPSAMPLE_TYPES
#undef __CLC_UPSAMPLE_DECL
#undef __CLC_UPSAMPLE_VEC

#endif // __CLC_INTEGER_CLC_UPSAMPLE_H__
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
#ifndef __CLC_INTEGER_DEFINITIONS_H__
#define __CLC_INTEGER_DEFINITIONS_H__

#define CHAR_BIT 8
#define INT_MAX 2147483647
#define INT_MIN (-2147483647 - 1)
#define LONG_MAX 0x7fffffffffffffffL
#define LONG_MAX 0x7fffffffffffffffL
#define LONG_MIN (-0x7fffffffffffffffL - 1)
#define CHAR_MAX SCHAR_MAX
#define CHAR_MIN SCHAR_MIN
Expand All @@ -13,3 +16,5 @@
#define USHRT_MAX 65535
#define UINT_MAX 0xffffffff
#define ULONG_MAX 0xffffffffffffffffUL

#endif // __CLC_INTEGER_DEFINITIONS_H__
137 changes: 137 additions & 0 deletions libclc/clc/include/clc/integer/gentype24.inc
Original file line number Diff line number Diff line change
@@ -0,0 +1,137 @@
#include <clc/clcfunc.h>
#include <clc/clctypes.h>

#define __CLC_GENSIZE 32
#undef __CLC_SCALAR_GENTYPE
#define __CLC_SCALAR_GENTYPE int

#define __CLC_GENTYPE int
#define __CLC_U_GENTYPE uint
#define __CLC_S_GENTYPE int
#define __CLC_SCALAR 1
#define __CLC_VECSIZE
#include __CLC_BODY
#undef __CLC_VECSIZE
#undef __CLC_SCALAR
#undef __CLC_GENTYPE
#undef __CLC_U_GENTYPE
#undef __CLC_S_GENTYPE

#define __CLC_GENTYPE int2
#define __CLC_U_GENTYPE uint2
#define __CLC_S_GENTYPE int2
#define __CLC_VECSIZE 2
#include __CLC_BODY
#undef __CLC_VECSIZE
#undef __CLC_GENTYPE
#undef __CLC_U_GENTYPE
#undef __CLC_S_GENTYPE

#define __CLC_GENTYPE int3
#define __CLC_U_GENTYPE uint3
#define __CLC_S_GENTYPE int3
#define __CLC_VECSIZE 3
#include __CLC_BODY
#undef __CLC_VECSIZE
#undef __CLC_GENTYPE
#undef __CLC_U_GENTYPE
#undef __CLC_S_GENTYPE

#define __CLC_GENTYPE int4
#define __CLC_U_GENTYPE uint4
#define __CLC_S_GENTYPE int4
#define __CLC_VECSIZE 4
#include __CLC_BODY
#undef __CLC_VECSIZE
#undef __CLC_GENTYPE
#undef __CLC_U_GENTYPE
#undef __CLC_S_GENTYPE

#define __CLC_GENTYPE int8
#define __CLC_U_GENTYPE uint8
#define __CLC_S_GENTYPE int8
#define __CLC_VECSIZE 8
#include __CLC_BODY
#undef __CLC_VECSIZE
#undef __CLC_GENTYPE
#undef __CLC_U_GENTYPE
#undef __CLC_S_GENTYPE

#define __CLC_GENTYPE int16
#define __CLC_U_GENTYPE uint16
#define __CLC_S_GENTYPE int16
#define __CLC_VECSIZE 16
#include __CLC_BODY
#undef __CLC_VECSIZE
#undef __CLC_GENTYPE
#undef __CLC_U_GENTYPE
#undef __CLC_S_GENTYPE

#undef __CLC_SCALAR_GENTYPE
#define __CLC_SCALAR_GENTYPE uint

#define __CLC_GENTYPE uint
#define __CLC_U_GENTYPE uint
#define __CLC_S_GENTYPE int
#define __CLC_SCALAR 1
#define __CLC_VECSIZE
#include __CLC_BODY
#undef __CLC_VECSIZE
#undef __CLC_SCALAR
#undef __CLC_GENTYPE
#undef __CLC_U_GENTYPE
#undef __CLC_S_GENTYPE

#define __CLC_GENTYPE uint2
#define __CLC_U_GENTYPE uint2
#define __CLC_S_GENTYPE int2
#define __CLC_VECSIZE 2
#include __CLC_BODY
#undef __CLC_VECSIZE
#undef __CLC_GENTYPE
#undef __CLC_U_GENTYPE
#undef __CLC_S_GENTYPE

#define __CLC_GENTYPE uint3
#define __CLC_U_GENTYPE uint3
#define __CLC_S_GENTYPE int3
#define __CLC_VECSIZE 3
#include __CLC_BODY
#undef __CLC_VECSIZE
#undef __CLC_GENTYPE
#undef __CLC_U_GENTYPE
#undef __CLC_S_GENTYPE

#define __CLC_GENTYPE uint4
#define __CLC_U_GENTYPE uint4
#define __CLC_S_GENTYPE int4
#define __CLC_VECSIZE 4
#include __CLC_BODY
#undef __CLC_VECSIZE
#undef __CLC_GENTYPE
#undef __CLC_U_GENTYPE
#undef __CLC_S_GENTYPE

#define __CLC_GENTYPE uint8
#define __CLC_U_GENTYPE uint8
#define __CLC_S_GENTYPE int8
#define __CLC_VECSIZE 8
#include __CLC_BODY
#undef __CLC_VECSIZE
#undef __CLC_GENTYPE
#undef __CLC_U_GENTYPE
#undef __CLC_S_GENTYPE

#define __CLC_GENTYPE uint16
#define __CLC_U_GENTYPE uint16
#define __CLC_S_GENTYPE int16
#define __CLC_VECSIZE 16
#include __CLC_BODY
#undef __CLC_VECSIZE
#undef __CLC_GENTYPE
#undef __CLC_U_GENTYPE
#undef __CLC_S_GENTYPE

#undef __CLC_GENSIZE
#undef __CLC_SCALAR_GENTYPE
#undef __CLC_BODY
2 changes: 1 addition & 1 deletion libclc/clc/include/clc/math/clc_mad.h
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#ifndef __CLC_MATH_CLC_MAD_H__
#define __CLC_MATH_CLC_MAD_H__

#define __CLC_BODY <clc/math/ternary_decl.inc>
#define __CLC_BODY <clc/shared/ternary_decl.inc>
#define __CLC_FUNCTION __clc_mad

#include <clc/math/gentype.inc>
Expand Down
10 changes: 10 additions & 0 deletions libclc/clc/include/clc/shared/ternary_def.inc
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
#include <clc/utils.h>

#ifndef __CLC_FUNCTION
#define __CLC_FUNCTION(x) __CLC_CONCAT(__clc_, x)
#endif

_CLC_OVERLOAD _CLC_DEF __CLC_GENTYPE FUNCTION(__CLC_GENTYPE a, __CLC_GENTYPE b,
__CLC_GENTYPE c) {
return __CLC_FUNCTION(FUNCTION)(a, b, c);
}
1 change: 1 addition & 0 deletions libclc/clc/include/clc/shared/unary_decl.inc
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
_CLC_OVERLOAD _CLC_DECL __CLC_GENTYPE __CLC_FUNCTION(__CLC_GENTYPE x);
9 changes: 9 additions & 0 deletions libclc/clc/include/clc/shared/unary_def.inc
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
#include <clc/utils.h>

#ifndef __CLC_FUNCTION
#define __CLC_FUNCTION(x) __CLC_CONCAT(__clc_, x)
#endif

_CLC_OVERLOAD _CLC_DEF __CLC_GENTYPE FUNCTION(__CLC_GENTYPE a) {
return __CLC_FUNCTION(FUNCTION)(a);
}
8 changes: 8 additions & 0 deletions libclc/clc/lib/clspv/SOURCES
Original file line number Diff line number Diff line change
@@ -1,5 +1,13 @@
../generic/integer/clc_add_sat.cl
../generic/integer/clc_clz.cl
../generic/integer/clc_hadd.cl
../generic/integer/clc_mad24.cl
../generic/integer/clc_mul24.cl
../generic/integer/clc_mul_hi.cl
../generic/integer/clc_popcount.cl
../generic/integer/clc_rhadd.cl
../generic/integer/clc_sub_sat.cl
../generic/integer/clc_upsample.cl
../generic/math/clc_ceil.cl
../generic/math/clc_copysign.cl
../generic/math/clc_fabs.cl
Expand Down
8 changes: 8 additions & 0 deletions libclc/clc/lib/generic/SOURCES
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,15 @@ geometric/clc_dot.cl
integer/clc_abs.cl
integer/clc_abs_diff.cl
integer/clc_add_sat.cl
integer/clc_clz.cl
integer/clc_hadd.cl
integer/clc_mad24.cl
integer/clc_mul24.cl
integer/clc_mul_hi.cl
integer/clc_popcount.cl
integer/clc_rhadd.cl
integer/clc_sub_sat.cl
integer/clc_upsample.cl
math/clc_ceil.cl
math/clc_copysign.cl
math/clc_fabs.cl
Expand Down
Loading