glsl: Use a separate div_to_mul_rcp lowering flag for integers.
authorBryan Cain <bryancain3@gmail.com>
Sat, 27 Aug 2011 23:32:58 +0000 (18:32 -0500)
committerKenneth Graunke <kenneth@whitecape.org>
Wed, 31 Aug 2011 19:02:18 +0000 (12:02 -0700)
commit478034f34a59969103237eb78bc82f9e70fe81c2
tree124922638fd8c7f981331cc6dbb5e1ceda6bd07f
parent87679e2ea10836d89f47a37b8e94cce0d319622e
glsl: Use a separate div_to_mul_rcp lowering flag for integers.

Using multiply and reciprocal for integer division involves potentially
lossy floating point conversions.  This is okay for older GPUs that
represent integers as floating point, but undesirable for GPUs with
native integer division instructions.

TGSI, for example, has UDIV/IDIV instructions for integer division,
so it makes sense to handle this directly.  Likewise for i965.

Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
Signed-off-by: Bryan Cain <bryancain3@gmail.com>
Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
src/glsl/ir_optimization.h
src/glsl/lower_instructions.cpp
src/mesa/drivers/dri/i965/brw_shader.cpp
src/mesa/program/ir_to_mesa.cpp
src/mesa/state_tracker/st_glsl_to_tgsi.cpp