mesa/src/compiler
Jesse Natalie 4d83306a9a nir: Update saturated float->int/uint conversion algorithm
The mantissa for a float doesn't contain enough data to accurately represent
the min/max values for some destination types. Instead of clamping before
converting, clamp after converting when coming from floats. This improves
conformance of CL conversions, specifically for float -> long/ulong with
int64 emulation enabled.

Refactors the limit determination from the clamp, so we can determine
limits for the dest type (int/uint) in both the source (float) and dest
type. The limit as a float is used for comparison, while the limit as a
dest type is used for bcsel.

Important note is that the comparison is inverted to fge instead of flt,
so the bcsel chooses the direct int/uint over the converted float in the
case where the comparison comes up equal, but the conversion can't produce
the exact min/max value.

Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8256>
2021-01-05 19:46:25 +00:00
..
glsl glsl/builtin_functions: Rename int64 function to int64_avail 2021-01-04 21:18:55 -06:00
nir nir: Update saturated float->int/uint conversion algorithm 2021-01-05 19:46:25 +00:00
spirv spir-v: Mark floating point comparisons exact 2021-01-05 02:07:09 +00:00
Android.glsl.gen.mk android: util: Move xxd.py to util 2020-10-11 23:22:34 +02:00
Android.glsl.mk
Android.mk
Android.nir.gen.mk android: spirv: fix '::' typo in gen rules 2020-12-08 22:44:23 +01:00
Android.nir.mk android: fix libmesa_nir build 2017-07-21 08:47:56 +03:00
builtin_type_macros.h compiler/types: Add 64-bit image types 2020-11-09 17:17:39 +00:00
glsl_types.cpp glsl: Initialize glsl_type member name. 2020-12-16 19:31:25 -08:00
glsl_types.h glsl: Fix typos in comments. 2020-12-16 02:19:56 +00:00
Makefile.sources nir: fix missing nir_lower_pntc_ytransform.c in the makefile 2021-01-04 15:37:20 +00:00
meson.build spirv: add some tests for volatile/available/visible 2020-09-01 17:15:22 +00:00
nir_types.cpp nir: Add a size_align helper function for aligning elements to 16 bytes. 2020-11-16 13:54:22 -08:00
nir_types.h nir: Add a size_align helper function for aligning elements to 16 bytes. 2020-11-16 13:54:22 -08:00
SConscript spirv: Fix building with SCons 2018-03-30 14:33:03 -06:00
SConscript.glsl util: Move xxd.py to util 2020-10-07 21:52:04 +00:00
SConscript.nir nir: use a single canonical list of intrinsic indices 2020-11-26 17:50:38 +00:00
SConscript.spirv scons: fix SPIR-V -> NIR build 2020-10-13 16:53:10 +01:00
shader_enums.c compiler/nir: introduce a new helper to get varying name 2020-12-01 08:20:38 +00:00
shader_enums.h compiler: update gl_access_qualifier comments 2020-12-09 14:41:38 +00:00
shader_info.h nir/vtn: Implement printf opcode in terms of intrinsic (v9) 2020-12-29 09:07:23 +10:00