Skip to content

Commit 4d016bb

Browse files
authored
[libspirv] Use clc function in libspirv generic math half_* functions (#19779)
Also delete double/half type implementations, which are not allowed per spec. llvm-diff shows lots of changes in libspirv-amdgcn--amdhsa.bc and libspirv-nvptx64--nvidiacl.bc, due to use of __ocml_* and __nv_* built-ins in clc and libspirv in intel/llvm repo. Based on review comment in llvm/llvm-project#153328, libclc shouldn't use __ocml_*. So bitcode change in this PR is expected.
1 parent 8959a5e commit 4d016bb

File tree

14 files changed

+96
-44
lines changed

14 files changed

+96
-44
lines changed

libclc/libspirv/lib/generic/math/half_cos.cl

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,12 @@
66
//
77
//===----------------------------------------------------------------------===//
88

9+
#include <clc/math/clc_half_cos.h>
910
#include <libspirv/spirv.h>
1011

11-
#define __CLC_BUILTIN __spirv_ocl_cos
12-
#define __CLC_FUNCTION __spirv_ocl_half_cos
13-
#include <clc/math/unary_builtin_scalarize.inc>
12+
#define __FLOAT_ONLY
13+
#define FUNCTION __spirv_ocl_half_cos
14+
#define __IMPL_FUNCTION(x) __clc_half_cos
15+
#define __CLC_BODY <clc/shared/unary_def.inc>
16+
17+
#include <clc/math/gentype.inc>

libclc/libspirv/lib/generic/math/half_divide.cl

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,12 @@
66
//
77
//===----------------------------------------------------------------------===//
88

9+
#include <clc/math/clc_half_divide.h>
910
#include <libspirv/spirv.h>
1011

11-
#define divide(x, y) (x / y)
12+
#define __FLOAT_ONLY
13+
#define FUNCTION __spirv_ocl_half_divide
14+
#define __IMPL_FUNCTION(x) __clc_half_divide
15+
#define __CLC_BODY <clc/shared/binary_def.inc>
1216

13-
#define __CLC_BUILTIN divide
14-
#define __CLC_FUNCTION __spirv_ocl_half_divide
15-
#include <clc/math/binary_builtin.inc>
17+
#include <clc/math/gentype.inc>

libclc/libspirv/lib/generic/math/half_exp.cl

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,12 @@
66
//
77
//===----------------------------------------------------------------------===//
88

9+
#include <clc/math/clc_half_exp.h>
910
#include <libspirv/spirv.h>
1011

11-
#define __CLC_BUILTIN __spirv_ocl_exp
12-
#define __CLC_FUNCTION __spirv_ocl_half_exp
13-
#include <clc/math/unary_builtin_scalarize.inc>
12+
#define __FLOAT_ONLY
13+
#define FUNCTION __spirv_ocl_half_exp
14+
#define __IMPL_FUNCTION(x) __clc_half_exp
15+
#define __CLC_BODY <clc/shared/unary_def.inc>
16+
17+
#include <clc/math/gentype.inc>

libclc/libspirv/lib/generic/math/half_exp10.cl

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,12 @@
66
//
77
//===----------------------------------------------------------------------===//
88

9+
#include <clc/math/clc_half_exp10.h>
910
#include <libspirv/spirv.h>
1011

11-
#define __CLC_BUILTIN __spirv_ocl_exp10
12-
#define __CLC_FUNCTION __spirv_ocl_half_exp10
13-
#include <clc/math/unary_builtin_scalarize.inc>
12+
#define __FLOAT_ONLY
13+
#define FUNCTION __spirv_ocl_half_exp10
14+
#define __IMPL_FUNCTION(x) __clc_half_exp10
15+
#define __CLC_BODY <clc/shared/unary_def.inc>
16+
17+
#include <clc/math/gentype.inc>

libclc/libspirv/lib/generic/math/half_exp2.cl

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,12 @@
66
//
77
//===----------------------------------------------------------------------===//
88

9+
#include <clc/math/clc_half_exp2.h>
910
#include <libspirv/spirv.h>
1011

11-
#define __CLC_BUILTIN __spirv_ocl_exp2
12-
#define __CLC_FUNCTION __spirv_ocl_half_exp2
13-
#include <clc/math/unary_builtin_scalarize.inc>
12+
#define __FLOAT_ONLY
13+
#define FUNCTION __spirv_ocl_half_exp2
14+
#define __IMPL_FUNCTION(x) __clc_half_exp2
15+
#define __CLC_BODY <clc/shared/unary_def.inc>
16+
17+
#include <clc/math/gentype.inc>

libclc/libspirv/lib/generic/math/half_log.cl

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,12 @@
66
//
77
//===----------------------------------------------------------------------===//
88

9+
#include <clc/math/clc_half_log.h>
910
#include <libspirv/spirv.h>
1011

11-
#define __CLC_BUILTIN __spirv_ocl_log
12-
#define __CLC_FUNCTION __spirv_ocl_half_log
13-
#include <clc/math/unary_builtin_scalarize.inc>
12+
#define __FLOAT_ONLY
13+
#define FUNCTION __spirv_ocl_half_log
14+
#define __IMPL_FUNCTION(x) __clc_half_log
15+
#define __CLC_BODY <clc/shared/unary_def.inc>
16+
17+
#include <clc/math/gentype.inc>

libclc/libspirv/lib/generic/math/half_log10.cl

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,12 @@
66
//
77
//===----------------------------------------------------------------------===//
88

9+
#include <clc/math/clc_half_log10.h>
910
#include <libspirv/spirv.h>
1011

11-
#define __CLC_BUILTIN __spirv_ocl_log10
12-
#define __CLC_FUNCTION __spirv_ocl_half_log10
13-
#include <clc/math/unary_builtin_scalarize.inc>
12+
#define __FLOAT_ONLY
13+
#define FUNCTION __spirv_ocl_half_log10
14+
#define __IMPL_FUNCTION(x) __clc_half_log10
15+
#define __CLC_BODY <clc/shared/unary_def.inc>
16+
17+
#include <clc/math/gentype.inc>

libclc/libspirv/lib/generic/math/half_log2.cl

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,12 @@
66
//
77
//===----------------------------------------------------------------------===//
88

9+
#include <clc/math/clc_half_log2.h>
910
#include <libspirv/spirv.h>
1011

11-
#define __CLC_BUILTIN __spirv_ocl_log2
12-
#define __CLC_FUNCTION __spirv_ocl_half_log2
13-
#include <clc/math/unary_builtin_scalarize.inc>
12+
#define __FLOAT_ONLY
13+
#define FUNCTION __spirv_ocl_half_log2
14+
#define __IMPL_FUNCTION(x) __clc_half_log2
15+
#define __CLC_BODY <clc/shared/unary_def.inc>
16+
17+
#include <clc/math/gentype.inc>

libclc/libspirv/lib/generic/math/half_powr.cl

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,12 @@
66
//
77
//===----------------------------------------------------------------------===//
88

9+
#include <clc/math/clc_half_powr.h>
910
#include <libspirv/spirv.h>
1011

11-
#define __CLC_BUILTIN __spirv_ocl_powr
12-
#define __CLC_FUNCTION __spirv_ocl_half_powr
13-
#include <clc/math/binary_builtin.inc>
12+
#define __FLOAT_ONLY
13+
#define FUNCTION __spirv_ocl_half_powr
14+
#define __IMPL_FUNCTION(x) __clc_half_powr
15+
#define __CLC_BODY <clc/shared/binary_def.inc>
16+
17+
#include <clc/math/gentype.inc>

libclc/libspirv/lib/generic/math/half_recip.cl

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,12 @@
66
//
77
//===----------------------------------------------------------------------===//
88

9+
#include <clc/math/clc_half_recip.h>
910
#include <libspirv/spirv.h>
1011

11-
#define recip(x) (1.0f / x)
12+
#define __FLOAT_ONLY
13+
#define FUNCTION __spirv_ocl_half_recip
14+
#define __IMPL_FUNCTION(x) __clc_half_recip
15+
#define __CLC_BODY <clc/shared/unary_def.inc>
1216

13-
#define __CLC_BUILTIN recip
14-
#define __CLC_FUNCTION __spirv_ocl_half_recip
15-
#include <clc/math/unary_builtin_scalarize.inc>
17+
#include <clc/math/gentype.inc>

0 commit comments

Comments
 (0)