[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