diff options
| author | Jan Vesely <jan.vesely@rutgers.edu> | 2018-03-06 17:48:43 +0000 |
|---|---|---|
| committer | Jan Vesely <jan.vesely@rutgers.edu> | 2018-03-06 17:48:43 +0000 |
| commit | ae156b66f86dc07dc7c7e6b108d02c6ddaf14ddb (patch) | |
| tree | fa436d6367ed3e8723bc5857422d54c6fe9252a1 /libclc/generic/include | |
| parent | 44f21978a200b3fe94aaed8aa685cdf1d14da9ac (diff) | |
| download | bcm5719-llvm-ae156b66f86dc07dc7c7e6b108d02c6ddaf14ddb.tar.gz bcm5719-llvm-ae156b66f86dc07dc7c7e6b108d02c6ddaf14ddb.zip | |
select: Add vector implementation
Passes CTS on Carrizo
Reviewed-by: Aaron Watry <awatry@gmail.com>
Signed-off-by: Jan Vesely <jan.vesely@rutgers.edu>
llvm-svn: 326819
Diffstat (limited to 'libclc/generic/include')
| -rw-r--r-- | libclc/generic/include/clc/relational/select.h | 12 | ||||
| -rw-r--r-- | libclc/generic/include/clc/relational/select.inc | 25 |
2 files changed, 36 insertions, 1 deletions
diff --git a/libclc/generic/include/clc/relational/select.h b/libclc/generic/include/clc/relational/select.h index 33a6909fb92..d20deae0d2c 100644 --- a/libclc/generic/include/clc/relational/select.h +++ b/libclc/generic/include/clc/relational/select.h @@ -1 +1,11 @@ -#define select(a, b, c) ((c) ? (b) : (a)) +/* Duplciate these so we don't have to distribute utils.h */ +#define __CLC_CONCAT(x, y) x ## y +#define __CLC_XCONCAT(x, y) __CLC_CONCAT(x, y) + +#define __CLC_BODY <clc/relational/select.inc> +#include <clc/math/gentype.inc> +#define __CLC_BODY <clc/relational/select.inc> +#include <clc/integer/gentype.inc> + +#undef __CLC_CONCAT +#undef __CLC_XCONCAT diff --git a/libclc/generic/include/clc/relational/select.inc b/libclc/generic/include/clc/relational/select.inc new file mode 100644 index 00000000000..9c4aa674490 --- /dev/null +++ b/libclc/generic/include/clc/relational/select.inc @@ -0,0 +1,25 @@ +#ifdef __CLC_SCALAR +#define __CLC_VECSIZE +#endif + +#if __CLC_FPSIZE == 64 +#define __CLC_S_GENTYPE __CLC_XCONCAT(long, __CLC_VECSIZE) +#define __CLC_U_GENTYPE __CLC_XCONCAT(ulong, __CLC_VECSIZE) +#elif __CLC_FPSIZE == 32 +#define __CLC_S_GENTYPE __CLC_XCONCAT(int, __CLC_VECSIZE) +#define __CLC_U_GENTYPE __CLC_XCONCAT(uint, __CLC_VECSIZE) +#elif __CLC_FPSIZE == 16 +#define __CLC_S_GENTYPE __CLC_XCONCAT(char, __CLC_VECSIZE) +#define __CLC_U_GENTYPE __CLC_XCONCAT(uchar, __CLC_VECSIZE) +#endif + +_CLC_OVERLOAD _CLC_DECL __CLC_GENTYPE select(__CLC_GENTYPE x, __CLC_GENTYPE y, __CLC_S_GENTYPE z); +_CLC_OVERLOAD _CLC_DECL __CLC_GENTYPE select(__CLC_GENTYPE x, __CLC_GENTYPE y, __CLC_U_GENTYPE z); + +#ifdef __CLC_FPSIZE +#undef __CLC_S_GENTYPE +#undef __CLC_U_GENTYPE +#endif +#ifdef __CLC_SCALAR +#undef __CLC_VECSIZE +#endif |

