[Mesa-dev] [PATCH] nir: Handle vector arguments to logical and/or/xor.
Connor Abbott
cwabbott0 at gmail.com
Tue Mar 24 05:38:32 PDT 2015
We could already handle vector arguments to these -- we just couldn't
handle mixed scalar and vector arguments. So change the commit message
to something like "nir: Handle mixed scalar/vector arguments to
logical and/or/xor." and fix the typo and then this is
Reviewed-by: Connor Abbott <cwabbott0 at gmail.com>
On Mon, Mar 23, 2015 at 8:10 PM, Matt Turner <mattst88 at gmail.com> wrote:
> ---
> src/glsl/nir/glsl_to_nir.cpp | 39 +++++++++++++++++++++------------------
> 1 file changed, 21 insertions(+), 18 deletions(-)
>
> diff --git a/src/glsl/nir/glsl_to_nir.cpp b/src/glsl/nir/glsl_to_nir.cpp
> index 357944d..e6f5ffc 100644
> --- a/src/glsl/nir/glsl_to_nir.cpp
> +++ b/src/glsl/nir/glsl_to_nir.cpp
> @@ -1210,6 +1210,9 @@ nir_visitor::visit(ir_expression *ir)
> case ir_binop_bit_and:
> case ir_binop_bit_or:
> case ir_binop_bit_xor:
> + case ir_binop_logic_and:
> + case ir_binop_logic_or:
> + case ir_binop_logic_xor:
> case ir_binop_lshift:
> case ir_binop_rshift:
> switch (ir->operation) {
> @@ -1270,6 +1273,24 @@ nir_visitor::visit(ir_expression *ir)
> case ir_binop_bit_xor:
> op = nir_op_ixor;
> break;
> + case ir_binop_logic_and:
> + if (supports_ints)
> + op = nir_op_iand;
> + else
> + op = nir_op_fand;
> + break;
> + case ir_binop_logic_or:
> + if (supports_ints)
> + op = nir_op_ior;
> + else
> + op = nir_op_for;
> + break;
> + case ir_binop_logic_xor:
> + if (supports_ints)
> + op - nir_op_ixor;
> + else
> + op = nir_op_fxor;
> + break;
> case ir_binop_lshift:
> op = nir_op_ishl;
> break;
> @@ -1444,24 +1465,6 @@ nir_visitor::visit(ir_expression *ir)
> }
> }
> break;
> - case ir_binop_logic_and:
> - if (supports_ints)
> - emit(nir_op_iand, dest_size, srcs);
> - else
> - emit(nir_op_fand, dest_size, srcs);
> - break;
> - case ir_binop_logic_or:
> - if (supports_ints)
> - emit(nir_op_ior, dest_size, srcs);
> - else
> - emit(nir_op_for, dest_size, srcs);
> - break;
> - case ir_binop_logic_xor:
> - if (supports_ints)
> - emit(nir_op_ixor, dest_size, srcs);
> - else
> - emit(nir_op_fxor, dest_size, srcs);
> - break;
> case ir_binop_dot:
> switch (ir->operands[0]->type->vector_elements) {
> case 2: emit(nir_op_fdot2, dest_size, srcs); break;
> --
> 2.0.5
>
More information about the mesa-dev
mailing list