[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