[Libclc-dev] [PATCH 2/2] r600/fmin: Flush denormals before calling builtin.
Tom Stellard via Libclc-dev
libclc-dev at lists.llvm.org
Wed Jun 6 18:27:03 PDT 2018
On 06/06/2018 06:25 PM, Jan Vesely via Libclc-dev wrote:
> On Tue, 2018-05-29 at 16:10 -0400, Jan Vesely wrote:
>> On Mon, 2018-05-21 at 11:36 -0400, Jan Vesely wrote:
>>> Same reason as amdgcn.
>>> Fixes fmin, minmag CTS on turks.
>>> Signed-off-by: Jan Vesely <jan.vesely at rutgers.edu>
>>> ---
>>> r600/lib/SOURCES | 1 +
>>> r600/lib/math/fmin.cl | 30 ++++++++++++++++++++++++++++++
>>> 2 files changed, 31 insertions(+)
>>> create mode 100644 r600/lib/math/fmin.cl
>>>
>>> diff --git a/r600/lib/SOURCES b/r600/lib/SOURCES
>>> index 132b151..e69be4a 100644
>>> --- a/r600/lib/SOURCES
>>> +++ b/r600/lib/SOURCES
>>> @@ -1,4 +1,5 @@
>>> math/fmax.cl
>>> +math/fmin.cl
>>> synchronization/barrier_impl.ll
>>> workitem/get_global_offset.cl
>>> workitem/get_group_id.cl
>>> diff --git a/r600/lib/math/fmin.cl b/r600/lib/math/fmin.cl
>>> new file mode 100644
>>> index 0000000..09f1e4c
>>> --- /dev/null
>>> +++ b/r600/lib/math/fmin.cl
>>> @@ -0,0 +1,30 @@
>>> +#include <clc/clc.h>
>>> +
>>> +#include "../../../generic/lib/clcmacro.h"
>>> +#include "../../../generic/lib/math/math.h"
>>> +
>>> +_CLC_DEF _CLC_OVERLOAD float fmin(float x, float y)
>>> +{
>>> + /* fcanonicalize removes sNaNs and flushes denormals if not enabled.
>>> + * Otherwise fmin instruction flushes the values for comparison,
>>> + * but outputs original denormal */
>>> + x = __clc_flush_denormal_if_not_supported(x);
>>> + y = __clc_flush_denormal_if_not_supported(y);
>>> + return __builtin_fminf(x, y);
>>> +}
>>> +_CLC_BINARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, float, fmin, float, float)
>>> +
>>> +#ifdef cl_khr_fp64
>>> +
>>> +#pragma OPENCL EXTENSION cl_khr_fp64 : enable
>>> +
>>> +_CLC_DEF _CLC_OVERLOAD double fmin(double x, double y)
>>> +{
>>> + return __builtin_fmin(x, y);
>>> +}
>>> +_CLC_BINARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, double, fmin, double, double)
>>> +
>>> +#endif
>>> +
>>> +#define __CLC_BODY <../../../generic/lib/math/fmin.inc>
>>> +#include <clc/math/gentype.inc>
>>
>> ping.
>
> ping2.
>
LGTM for both.
> Jan
>
>>
>> Jan
>
>
>
> _______________________________________________
> 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