Checks if the current GENTYPE is scalar, and if not, then defines a separate implementation of the function which casts the second arg to vector before proceeding. --- generic/include/clc/integer/gentype.inc | 23 +++++++++++++++++++++++ generic/include/clc/math/gentype.inc | 8 ++++++++ generic/include/clc/shared/min.inc | 4 ++++ generic/lib/shared/min.inc | 6 ++++++ 4 files changed, 41 insertions(+)
diff --git a/generic/include/clc/integer/gentype.inc b/generic/include/clc/integer/gentype.inc index dd7d061..95a37d5 100644 --- a/generic/include/clc/integer/gentype.inc +++ b/generic/include/clc/integer/gentype.inc @@ -1,4 +1,8 @@ +//These 2 defines only change when switching between data sizes or base types to +//keep this file manageable. #define GENSIZE 8 +#define SCALAR_GENTYPE char + #define GENTYPE char #define UGENTYPE uchar #define SGENTYPE char @@ -49,6 +53,9 @@ #undef UGENTYPE #undef SGENTYPE +#undef SCALAR_GENTYPE +#define SCALAR_GENTYPE uchar + #define GENTYPE uchar #define UGENTYPE uchar #define SGENTYPE char @@ -101,6 +108,8 @@ #undef GENSIZE #define GENSIZE 16 +#undef SCALAR_GENTYPE +#define SCALAR_GENTYPE short #define GENTYPE short #define UGENTYPE ushort @@ -152,6 +161,9 @@ #undef UGENTYPE #undef SGENTYPE +#undef SCALAR_GENTYPE +#define SCALAR_GENTYPE ushort + #define GENTYPE ushort #define UGENTYPE ushort #define SGENTYPE short @@ -204,6 +216,8 @@ #undef GENSIZE #define GENSIZE 32 +#undef SCALAR_GENTYPE +#define SCALAR_GENTYPE int #define GENTYPE int #define UGENTYPE uint @@ -255,6 +269,9 @@ #undef UGENTYPE #undef SGENTYPE +#undef SCALAR_GENTYPE +#define SCALAR_GENTYPE uint + #define GENTYPE uint #define UGENTYPE uint #define SGENTYPE int @@ -307,6 +324,8 @@ #undef GENSIZE #define GENSIZE 64 +#undef SCALAR_GENTYPE +#define SCALAR_GENTYPE long #define GENTYPE long #define UGENTYPE ulong @@ -358,6 +377,9 @@ #undef UGENTYPE #undef SGENTYPE +#undef SCALAR_GENTYPE +#define SCALAR_GENTYPE ulong + #define GENTYPE ulong #define UGENTYPE ulong #define SGENTYPE long @@ -409,4 +431,5 @@ #undef SGENTYPE #undef GENSIZE +#undef SCALAR_GENTYPE #undef BODY diff --git a/generic/include/clc/math/gentype.inc b/generic/include/clc/math/gentype.inc index b525c4b..4ed2151 100644 --- a/generic/include/clc/math/gentype.inc +++ b/generic/include/clc/math/gentype.inc @@ -1,3 +1,5 @@ +#define SCALAR_GENTYPE float + #define GENTYPE float #define SCALAR #include BODY @@ -24,7 +26,11 @@ #include BODY #undef GENTYPE +#undef SCALAR_GENTYPE + #ifdef cl_khr_fp64 +#define SCALAR_GENTYPE double + #define SCALAR #define GENTYPE double #include BODY @@ -50,6 +56,8 @@ #define GENTYPE double16 #include BODY #undef GENTYPE + +#undef SCALAR_GENTYPE #endif #undef BODY diff --git a/generic/include/clc/shared/min.inc b/generic/include/clc/shared/min.inc index 3bc9880..cf3afaf 100644 --- a/generic/include/clc/shared/min.inc +++ b/generic/include/clc/shared/min.inc @@ -1 +1,5 @@ _CLC_OVERLOAD _CLC_DECL GENTYPE min(GENTYPE a, GENTYPE b); + +#ifndef SCALAR +_CLC_OVERLOAD _CLC_DECL GENTYPE min(GENTYPE a, SCALAR_GENTYPE b); +#endif \ No newline at end of file diff --git a/generic/lib/shared/min.inc b/generic/lib/shared/min.inc index b99bc35..58a22e1 100644 --- a/generic/lib/shared/min.inc +++ b/generic/lib/shared/min.inc @@ -1,3 +1,9 @@ _CLC_OVERLOAD _CLC_DEF GENTYPE min(GENTYPE a, GENTYPE b) { return (a < b ? a : b); } + +#ifndef SCALAR +_CLC_OVERLOAD _CLC_DEF GENTYPE min(GENTYPE a, SCALAR_GENTYPE b) { + return (a < (GENTYPE)b ? a : (GENTYPE)b); +} +#endif -- 1.7.10.4 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev