mesa/src/compiler
Karol Herbst ab71151624 nir/lower_int64: fix shift lowering
Starting with !19748 lowered 64 bit shifts were showing wrong results for
shifts with insignificant bits set.

nir shifts are defined to only look at the least significant bits. The
lowering has take this into account.

So there are two things going on:
1. the `ieq` and `uge` further down depend on `y` being masked.
2. the calculation of `reverse_count` actually depends on a masked `y` as
   well, due to the `(iabs (iadd y -32))` giving a different result for
   shifts > 31;

Fixes: 41f3e9e5f5 ("nir: Implement lowering of 64-bit shift operations")
Signed-off-by: Karol Herbst <kherbst@redhat.com>
Reviewed-by: Rhys Perry <pendingchaos02@gmail.com>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/19995>
(cherry picked from commit 5398dd04bf)
2022-11-30 09:16:12 -08:00
..
clc nir: add a nir_opt_if_options enum 2022-08-10 09:47:25 -07:00
glsl glsl: Remove lower_offset_arrays pass 2022-08-23 15:06:01 -04:00
isaspec isaspec: Handle patterns bigger then 64 bit 2022-06-14 12:35:39 +00:00
nir nir/lower_int64: fix shift lowering 2022-11-30 09:16:12 -08:00
spirv spirv: Mark phis as mediump instead of directly lowering them to 16 bit. 2022-09-14 15:43:46 -07:00
builtin_type_macros.h
glsl_types.cpp glsl: fix buffer texture type 2022-11-10 12:02:10 -08:00
glsl_types.h
meson.build
nir_gl_types.h
nir_types.cpp nir/types: fix glsl_matrix_type_is_row_major() assert 2022-06-30 00:41:46 +00:00
nir_types.h nir/glsl: wrap component_slots_aligned() 2022-05-16 03:33:18 +00:00
shader_enums.c nir+ir3: Rename load_size_ir3 to load_center_rhw_ir3. 2022-07-11 16:56:05 +00:00
shader_enums.h nir+ir3: Rename load_size_ir3 to load_center_rhw_ir3. 2022-07-11 16:56:05 +00:00
shader_info.h shader_info: Move subgroup_size out of cs and make it an enum 2022-07-08 22:47:22 +00:00