[Mesa-dev] [PATCH] glsl: add lowering for double divide to rcp/mul
Ilia Mirkin
imirkin at alum.mit.edu
Thu Feb 19 14:52:49 PST 2015
On Thu, Feb 19, 2015 at 5:47 PM, Dave Airlie <airlied at gmail.com> wrote:
> From: Dave Airlie <airlied at redhat.com>
>
> It looks like no hw does div anyways, so we should just
> lower at the GLSL level.
Sounds like radeonsi has helpers for DDIV, but they can work this out
when they add support in mesa. Like not using DIV_TO_MUL_RCP lowering.
>
> Signed-off-by: Dave Airlie <airlied at redhat.com>
> ---
> src/glsl/lower_instructions.cpp | 6 +++---
> 1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/src/glsl/lower_instructions.cpp b/src/glsl/lower_instructions.cpp
> index e8a69e7..ac6715b 100644
> --- a/src/glsl/lower_instructions.cpp
> +++ b/src/glsl/lower_instructions.cpp
> @@ -199,7 +199,7 @@ lower_instructions_visitor::sub_to_add_neg(ir_expression *ir)
> void
> lower_instructions_visitor::div_to_mul_rcp(ir_expression *ir)
> {
> - assert(ir->operands[1]->type->is_float());
> + assert(ir->operands[1]->type->is_float() || ir->operands[1]->type->is_double());
>
> /* New expression for the 1.0 / op1 */
> ir_rvalue *expr;
> @@ -327,7 +327,7 @@ lower_instructions_visitor::mod_to_floor(ir_expression *ir)
> /* Don't generate new IR that would need to be lowered in an additional
> * pass.
> */
> - if (lowering(DIV_TO_MUL_RCP) && ir->type->is_float())
> + if (lowering(DIV_TO_MUL_RCP) && (ir->type->is_float() || ir->type->is_double()))
> div_to_mul_rcp(div_expr);
>
> ir_expression *const floor_expr =
> @@ -1014,7 +1014,7 @@ lower_instructions_visitor::visit_leave(ir_expression *ir)
> case ir_binop_div:
> if (ir->operands[1]->type->is_integer() && lowering(INT_DIV_TO_MUL_RCP))
> int_div_to_mul_rcp(ir);
> - else if (ir->operands[1]->type->is_float() && lowering(DIV_TO_MUL_RCP))
> + else if ((ir->operands[1]->type->is_float() || ir->operands[1]->type->is_double())&& lowering(DIV_TO_MUL_RCP))
80 chars. And space around &&.
With that fixed, Reviewed-by: Ilia Mirkin <imirkin at alum.mit.edu>
> div_to_mul_rcp(ir);
> break;
>
> --
> 1.9.3
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
More information about the mesa-dev
mailing list