[Mesa-dev] [PATCH 3/3] glsl: Optimize division by two with a right shift.
Roland Scheidegger
sroland at vmware.com
Mon Feb 24 15:36:53 PST 2014
Am 25.02.2014 00:00, schrieb Matt Turner:
> ---
> src/glsl/opt_algebraic.cpp | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/src/glsl/opt_algebraic.cpp b/src/glsl/opt_algebraic.cpp
> index 778638c..50342ac 100644
> --- a/src/glsl/opt_algebraic.cpp
> +++ b/src/glsl/opt_algebraic.cpp
> @@ -421,6 +421,9 @@ ir_algebraic_visitor::handle_expression(ir_expression *ir)
> }
> if (is_vec_one(op_const[1]))
> return ir->operands[0];
> + if (is_vec_two(op_const[1]) && ir->type->is_integer()) {
> + return rshift(ir->operands[0], new(mem_ctx) ir_constant(1));
> + }
> break;
>
> case ir_binop_dot:
>
Does glsl require any particular rounding behavior for negative numbers
(like c99 does, which wouldn't work with shift emulation)? A quick look
didn't find anything but it might be implied somewhere...
Also, if you do this for two, wouldn't it make sense to extend that to
power-of-two numbers or is that too much cpu work?
Roland
More information about the mesa-dev
mailing list