|
6 | 6 | // |
7 | 7 | //===----------------------------------------------------------------------===// |
8 | 8 |
|
9 | | -#include "clc/internal/clc.h" |
10 | | -#include "clc/relational/relational.h" |
| 9 | +#include "clc/relational/clc_signbit.h" |
11 | 10 |
|
12 | | -#define _CLC_DEFINE_RELATIONAL_UNARY_VEC2(RET_TYPE, __CLC_FUNCTION, ARG_TYPE) \ |
13 | | - _CLC_DEF _CLC_OVERLOAD RET_TYPE __CLC_FUNCTION(ARG_TYPE x) { \ |
14 | | - return (RET_TYPE)((RET_TYPE){__CLC_FUNCTION(x.lo), \ |
15 | | - __CLC_FUNCTION(x.hi)} != (RET_TYPE)0); \ |
16 | | - } |
17 | | - |
18 | | -#define _CLC_DEFINE_RELATIONAL_UNARY_VEC3(RET_TYPE, __CLC_FUNCTION, ARG_TYPE) \ |
19 | | - _CLC_DEF _CLC_OVERLOAD RET_TYPE __CLC_FUNCTION(ARG_TYPE x) { \ |
20 | | - return (RET_TYPE)((RET_TYPE){__CLC_FUNCTION(x.s0), __CLC_FUNCTION(x.s1), \ |
21 | | - __CLC_FUNCTION(x.s2)} != (RET_TYPE)0); \ |
22 | | - } |
23 | | - |
24 | | -#define _CLC_DEFINE_RELATIONAL_UNARY_VEC4(RET_TYPE, __CLC_FUNCTION, ARG_TYPE) \ |
25 | | - _CLC_DEF _CLC_OVERLOAD RET_TYPE __CLC_FUNCTION(ARG_TYPE x) { \ |
26 | | - return (RET_TYPE)((RET_TYPE){__CLC_FUNCTION(x.s0), __CLC_FUNCTION(x.s1), \ |
27 | | - __CLC_FUNCTION(x.s2), \ |
28 | | - __CLC_FUNCTION(x.s3)} != (RET_TYPE)0); \ |
29 | | - } |
30 | | - |
31 | | -#define _CLC_DEFINE_RELATIONAL_UNARY_VEC8(RET_TYPE, __CLC_FUNCTION, ARG_TYPE) \ |
32 | | - _CLC_DEF _CLC_OVERLOAD RET_TYPE __CLC_FUNCTION(ARG_TYPE x) { \ |
33 | | - return (RET_TYPE)((RET_TYPE){__CLC_FUNCTION(x.s0), __CLC_FUNCTION(x.s1), \ |
34 | | - __CLC_FUNCTION(x.s2), __CLC_FUNCTION(x.s3), \ |
35 | | - __CLC_FUNCTION(x.s4), __CLC_FUNCTION(x.s5), \ |
36 | | - __CLC_FUNCTION(x.s6), \ |
37 | | - __CLC_FUNCTION(x.s7)} != (RET_TYPE)0); \ |
38 | | - } |
39 | | - |
40 | | -#define _CLC_DEFINE_RELATIONAL_UNARY_VEC16(RET_TYPE, __CLC_FUNCTION, ARG_TYPE) \ |
41 | | - _CLC_DEF _CLC_OVERLOAD RET_TYPE __CLC_FUNCTION(ARG_TYPE x) { \ |
42 | | - return (RET_TYPE)((RET_TYPE){__CLC_FUNCTION(x.s0), __CLC_FUNCTION(x.s1), \ |
43 | | - __CLC_FUNCTION(x.s2), __CLC_FUNCTION(x.s3), \ |
44 | | - __CLC_FUNCTION(x.s4), __CLC_FUNCTION(x.s5), \ |
45 | | - __CLC_FUNCTION(x.s6), __CLC_FUNCTION(x.s7), \ |
46 | | - __CLC_FUNCTION(x.s8), __CLC_FUNCTION(x.s9), \ |
47 | | - __CLC_FUNCTION(x.sa), __CLC_FUNCTION(x.sb), \ |
48 | | - __CLC_FUNCTION(x.sc), __CLC_FUNCTION(x.sd), \ |
49 | | - __CLC_FUNCTION(x.se), \ |
50 | | - __CLC_FUNCTION(x.sf)} != (RET_TYPE)0); \ |
51 | | - } |
52 | | - |
53 | | -#define _CLC_DEFINE_RELATIONAL_UNARY_VEC_ALL(RET_TYPE, __CLC_FUNCTION, \ |
54 | | - ARG_TYPE) \ |
55 | | - _CLC_DEFINE_RELATIONAL_UNARY_VEC2(RET_TYPE##2, __CLC_FUNCTION, ARG_TYPE##2) \ |
56 | | - _CLC_DEFINE_RELATIONAL_UNARY_VEC3(RET_TYPE##3, __CLC_FUNCTION, ARG_TYPE##3) \ |
57 | | - _CLC_DEFINE_RELATIONAL_UNARY_VEC4(RET_TYPE##4, __CLC_FUNCTION, ARG_TYPE##4) \ |
58 | | - _CLC_DEFINE_RELATIONAL_UNARY_VEC8(RET_TYPE##8, __CLC_FUNCTION, ARG_TYPE##8) \ |
59 | | - _CLC_DEFINE_RELATIONAL_UNARY_VEC16(RET_TYPE##16, __CLC_FUNCTION, ARG_TYPE##16) |
60 | | - |
61 | | -_CLC_DEF _CLC_OVERLOAD int __clc_signbit(float x) { |
62 | | - return __builtin_signbitf(x); |
63 | | -} |
64 | | - |
65 | | -_CLC_DEFINE_RELATIONAL_UNARY_VEC_ALL(int, __clc_signbit, float) |
66 | | - |
67 | | -#ifdef cl_khr_fp64 |
68 | | - |
69 | | -#pragma OPENCL EXTENSION cl_khr_fp64 : enable |
70 | | - |
71 | | -// The scalar version of __clc_signbit(double) returns an int, but the vector |
72 | | -// versions return long. |
73 | | - |
74 | | -_CLC_DEF _CLC_OVERLOAD int __clc_signbit(double x) { |
75 | | - return __builtin_signbit(x); |
76 | | -} |
77 | | - |
78 | | -_CLC_DEFINE_RELATIONAL_UNARY_VEC_ALL(long, __clc_signbit, double) |
79 | | - |
80 | | -#endif |
81 | | -#ifdef cl_khr_fp16 |
82 | | - |
83 | | -#pragma OPENCL EXTENSION cl_khr_fp16 : enable |
84 | | - |
85 | | -// The scalar version of __clc_signbit(half) returns an int, but the vector |
86 | | -// versions return short. |
87 | | - |
88 | | -_CLC_DEF _CLC_OVERLOAD int __clc_signbit(half x) { |
89 | | - return __builtin_signbit(x); |
90 | | -} |
91 | | - |
92 | | -_CLC_DEFINE_RELATIONAL_UNARY_VEC_ALL(short, __clc_signbit, half) |
93 | | - |
94 | | -#endif |
| 11 | +#define __CLC_BODY "clc_signbit.inc" |
| 12 | +#include "clc/math/gentype.inc" |
0 commit comments