libclc: Add clamp(vec, scalar, scalar) and max(vec, scalar)

For any GENTYPE that isn't scalar, we need to implement a mixed
vector/scalar version of clamp/max.

This depends on the min() patches I sent to the list a few minutes ago.

Patch by: Aaron Watry

llvm-svn: 185003
This commit is contained in:
Tom Stellard 2013-06-26 18:21:49 +00:00
parent 075b31a2fa
commit 34f513df7c
4 changed files with 20 additions and 0 deletions

View File

@ -1 +1,5 @@
_CLC_OVERLOAD _CLC_DECL GENTYPE clamp(GENTYPE x, GENTYPE y, GENTYPE z);
#ifndef SCALAR
_CLC_OVERLOAD _CLC_DECL GENTYPE clamp(GENTYPE x, SCALAR_GENTYPE y, SCALAR_GENTYPE z);
#endif

View File

@ -1 +1,5 @@
_CLC_OVERLOAD _CLC_DECL GENTYPE max(GENTYPE a, GENTYPE b);
#ifndef SCALAR
_CLC_OVERLOAD _CLC_DECL GENTYPE max(GENTYPE a, SCALAR_GENTYPE b);
#endif

View File

@ -1,3 +1,9 @@
_CLC_OVERLOAD _CLC_DEF GENTYPE clamp(GENTYPE x, GENTYPE y, GENTYPE z) {
return (x > z ? z : (x < y ? y : x));
}
#ifndef SCALAR
_CLC_OVERLOAD _CLC_DEF GENTYPE clamp(GENTYPE x, SCALAR_GENTYPE y, SCALAR_GENTYPE z) {
return (x > (GENTYPE)z ? (GENTYPE)z : (x < (GENTYPE)y ? (GENTYPE)y : x));
}
#endif

View File

@ -1,3 +1,9 @@
_CLC_OVERLOAD _CLC_DEF GENTYPE max(GENTYPE a, GENTYPE b) {
return (a > b ? a : b);
}
#ifndef SCALAR
_CLC_OVERLOAD _CLC_DEF GENTYPE max(GENTYPE a, SCALAR_GENTYPE b) {
return (a > (GENTYPE)b ? a : (GENTYPE)b);
}
#endif