[Libclc-dev] [PATCH 2/2] amdgcn/fmax: fcanonicalize operands

Aaron Watry via Libclc-dev libclc-dev at lists.llvm.org
Wed Mar 7 19:06:03 PST 2018


Looks ok to me.

fmin/fmax float/double now pass on Polaris against CL 1.2 CTS as well.

--Aaron

On Tue, Mar 6, 2018 at 11:31 AM, Jan Vesely via Libclc-dev
<libclc-dev at lists.llvm.org> wrote:
> v_max instruction needs canonicalized operands.
> Passes CTS on carrizo
> Fixes maxmag CTS on carrizo
>
> Signed-off-by: Jan Vesely <jan.vesely at rutgers.edu>
> ---
>  amdgcn/lib/SOURCES      |  1 +
>  amdgcn/lib/math/fmax.cl | 31 +++++++++++++++++++++++++++++++
>  2 files changed, 32 insertions(+)
>  create mode 100644 amdgcn/lib/math/fmax.cl
>
> diff --git a/amdgcn/lib/SOURCES b/amdgcn/lib/SOURCES
> index 95cc276..1f25f36 100644
> --- a/amdgcn/lib/SOURCES
> +++ b/amdgcn/lib/SOURCES
> @@ -1,4 +1,5 @@
>  cl_khr_int64_extended_atomics/minmax_helpers.ll
> +math/fmax.cl
>  math/fmin.cl
>  math/ldexp.cl
>  mem_fence/fence.cl
> diff --git a/amdgcn/lib/math/fmax.cl b/amdgcn/lib/math/fmax.cl
> new file mode 100644
> index 0000000..c1e6cb9
> --- /dev/null
> +++ b/amdgcn/lib/math/fmax.cl
> @@ -0,0 +1,31 @@
> +#include <clc/clc.h>
> +
> +#include "../../../generic/lib/clcmacro.h"
> +
> +_CLC_DEF _CLC_OVERLOAD float fmax(float x, float y)
> +{
> +   /* fcanonicalize removes sNaNs and flushes denormals if not enabled.
> +    * Otherwise fmax instruction flushes the values for comparison,
> +    * but outputs original denormal */
> +   x = __builtin_canonicalizef(x);
> +   y = __builtin_canonicalizef(y);
> +   return __builtin_fmaxf(x, y);
> +}
> +_CLC_BINARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, float, fmax, float, float)
> +
> +#ifdef cl_khr_fp64
> +
> +#pragma OPENCL EXTENSION cl_khr_fp64 : enable
> +
> +_CLC_DEF _CLC_OVERLOAD double fmax(double x, double y)
> +{
> +   x = __builtin_canonicalize(x);
> +   y = __builtin_canonicalize(y);
> +   return __builtin_fmax(x, y);
> +}
> +_CLC_BINARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, double, fmax, double, double)
> +
> +#endif
> +
> +#define __CLC_BODY <../../../generic/lib/math/fmax.inc>
> +#include <clc/math/gentype.inc>
> --
> 2.14.3
>
> _______________________________________________
> Libclc-dev mailing list
> Libclc-dev at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/libclc-dev


More information about the Libclc-dev mailing list