If you want to test, you can find the series at https://cgit.freedesktop.org/~nh/mesa/log/?h=ldexp
On 16.09.2017 13:23, Nicolai Hähnle wrote:
Hi all, This series was motivated by radeonsi failing some ldexp tests due to not handling denorms correctly and not handling overflows (which GLSL doesn't require, but GLSL ES does). The first patch fixes the GLSL IR lowering of ldexp() to handle all cases fully except: 1. Denorms; they're annoying and therefore all flushed to zero. 2. Exponent 32-bit overflow. This would be easy to fix at the cost of an additional min() instruction, but neither GLSL nor GLSL ES requires it. The goal of the remainder of the series is to move radeonsi to use the hardware implementation of ldexp and frexp. This entails cleaning up a lot of stuff around the existing DLDEXP and DFRACEXP (implemented by softpipe and r600), as well as adding a new LDEXP opcode. Please review! Cheers, Nicolai -- src/compiler/glsl/lower_instructions.cpp | 171 +++++++++++------ .../auxiliary/gallivm/lp_bld_limits.h | 1 + src/gallium/auxiliary/gallivm/lp_bld_tgsi.c | 26 ++- src/gallium/auxiliary/gallivm/lp_bld_tgsi.h | 1 + .../auxiliary/gallivm/lp_bld_tgsi_action.h | 5 + .../auxiliary/gallivm/lp_bld_tgsi_soa.c | 19 +- src/gallium/auxiliary/nir/tgsi_to_nir.c | 7 +- src/gallium/auxiliary/tgsi/tgsi_exec.c | 31 ++- src/gallium/auxiliary/tgsi/tgsi_exec.h | 10 + src/gallium/auxiliary/tgsi/tgsi_info.c | 11 +- src/gallium/auxiliary/tgsi/tgsi_info.h | 4 +- .../auxiliary/tgsi/tgsi_info_opcodes.h | 4 +- src/gallium/docs/source/screen.rst | 1 + src/gallium/docs/source/tgsi.rst | 24 ++- src/gallium/drivers/etnaviv/etnaviv_screen.c | 1 + .../drivers/freedreno/freedreno_screen.c | 1 + src/gallium/drivers/i915/i915_screen.c | 1 + .../drivers/nouveau/nv30/nv30_screen.c | 2 + .../drivers/nouveau/nv50/nv50_screen.c | 1 + .../drivers/nouveau/nvc0/nvc0_screen.c | 1 + src/gallium/drivers/r300/r300_screen.c | 2 + src/gallium/drivers/r600/r600_pipe.c | 1 + src/gallium/drivers/r600/r600_shader.c | 14 +- src/gallium/drivers/radeonsi/si_pipe.c | 3 +- src/gallium/drivers/radeonsi/si_shader.c | 14 +- .../drivers/radeonsi/si_shader_internal.h | 1 + .../drivers/radeonsi/si_shader_tgsi_alu.c | 27 +++ .../drivers/radeonsi/si_shader_tgsi_setup.c | 16 +- src/gallium/drivers/svga/svga_screen.c | 3 + src/gallium/drivers/vc4/vc4_screen.c | 1 + src/gallium/include/pipe/p_defines.h | 1 + src/gallium/include/pipe/p_shader_tokens.h | 2 +- src/mesa/state_tracker/st_glsl_to_tgsi.cpp | 10 +- 33 files changed, 290 insertions(+), 127 deletions(-)
-- Lerne, wie die Welt wirklich ist, Aber vergiss niemals, wie sie sein sollte. _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev