On Mon, Nov 30, 2015 at 3:32 PM, Matt Turner <matts...@gmail.com> wrote: > As in the previous patches, these can be implemented as > > any(v) -> any_nequal(v, false) > all(v) -> all_equal(v, true) > > and their removal simplifies the code in the next patch. > --- > src/gallium/auxiliary/nir/tgsi_to_nir.c | 4 +++- > src/glsl/nir/nir_lower_alu_to_scalar.c | 4 ---- > src/glsl/nir/nir_opcodes.py | 7 ------- > src/mesa/drivers/dri/i965/brw_fs_nir.cpp | 6 ------ > .../drivers/dri/i965/brw_nir_analyze_boolean_resolves.c | 3 --- > src/mesa/drivers/dri/i965/brw_vec4_nir.cpp | 14 > -------------- > src/mesa/program/prog_to_nir.c | 4 ++-- > 7 files changed, 5 insertions(+), 37 deletions(-) > > diff --git a/src/gallium/auxiliary/nir/tgsi_to_nir.c > b/src/gallium/auxiliary/nir/tgsi_to_nir.c > index 86c2ffa..87d702d 100644 > --- a/src/gallium/auxiliary/nir/tgsi_to_nir.c > +++ b/src/gallium/auxiliary/nir/tgsi_to_nir.c > @@ -1062,7 +1062,9 @@ ttn_kill(nir_builder *b, nir_op op, nir_alu_dest dest, > nir_ssa_def **src) > static void > ttn_kill_if(nir_builder *b, nir_op op, nir_alu_dest dest, nir_ssa_def **src) > { > - nir_ssa_def *cmp = nir_bany4(b, nir_flt(b, src[0], nir_imm_float(b, > 0.0))); > + nir_ssa_def *cmp = nir_bany_inequal4(b, nir_flt(b, src[0], > + nir_imm_float(b, 0.0)), > + nir_imm_int(b, 0)); > nir_intrinsic_instr *discard = > nir_intrinsic_instr_create(b->shader, nir_intrinsic_discard_if); > discard->src[0] = nir_src_for_ssa(cmp); > diff --git a/src/glsl/nir/nir_lower_alu_to_scalar.c > b/src/glsl/nir/nir_lower_alu_to_scalar.c > index 9313fc0..d267ca3 100644 > --- a/src/glsl/nir/nir_lower_alu_to_scalar.c > +++ b/src/glsl/nir/nir_lower_alu_to_scalar.c > @@ -137,10 +137,6 @@ lower_alu_instr_scalar(nir_alu_instr *instr, nir_builder > *b) > LOWER_REDUCTION(nir_op_bany_inequal, nir_op_ine, nir_op_ior); > LOWER_REDUCTION(nir_op_fall_equal, nir_op_seq, nir_op_fand); > LOWER_REDUCTION(nir_op_fany_nequal, nir_op_sne, nir_op_for); > - LOWER_REDUCTION(nir_op_ball, nir_op_imov, nir_op_iand); > - LOWER_REDUCTION(nir_op_bany, nir_op_imov, nir_op_ior); > - LOWER_REDUCTION(nir_op_fall, nir_op_fmov, nir_op_fand); > - LOWER_REDUCTION(nir_op_fany, nir_op_fmov, nir_op_for); > > default: > break; > diff --git a/src/glsl/nir/nir_opcodes.py b/src/glsl/nir/nir_opcodes.py > index 37d3dfc..1cd01a4 100644 > --- a/src/glsl/nir/nir_opcodes.py > +++ b/src/glsl/nir/nir_opcodes.py > @@ -167,13 +167,6 @@ unop_convert("i2b", tint, tbool, "src0 != 0") > unop_convert("b2i", tbool, tint, "src0 ? 1 : 0") # Boolean-to-int conversion > unop_convert("u2f", tuint, tfloat, "src0") # Unsigned-to-float conversion. > > -unop_reduce("bany", 1, tbool, tbool, "{src}", "{src0} || {src1}", "{src}") > -unop_reduce("ball", 1, tbool, tbool, "{src}", "{src0} && {src1}", "{src}") > -unop_reduce("fany", 1, tfloat, tfloat, "{src} != 0.0f", "{src0} || {src1}", > - "{src} ? 1.0f : 0.0f") > -unop_reduce("fall", 1, tfloat, tfloat, "{src} != 0.0f", "{src0} && {src1}", > - "{src} ? 1.0f : 0.0f") > - > # Unary floating-point rounding operations. > > > diff --git a/src/mesa/drivers/dri/i965/brw_fs_nir.cpp > b/src/mesa/drivers/dri/i965/brw_fs_nir.cpp > index 9b50e4e..f5b203d 100644 > --- a/src/mesa/drivers/dri/i965/brw_fs_nir.cpp > +++ b/src/mesa/drivers/dri/i965/brw_fs_nir.cpp > @@ -841,12 +841,6 @@ fs_visitor::nir_emit_alu(const fs_builder &bld, > nir_alu_instr *instr) > case nir_op_fdot2: > case nir_op_fdot3: > case nir_op_fdot4: > - case nir_op_bany2: > - case nir_op_bany3: > - case nir_op_bany4: > - case nir_op_ball2: > - case nir_op_ball3: > - case nir_op_ball4: > case nir_op_ball_fequal2: > case nir_op_ball_iequal2: > case nir_op_ball_fequal3: > diff --git a/src/mesa/drivers/dri/i965/brw_nir_analyze_boolean_resolves.c > b/src/mesa/drivers/dri/i965/brw_nir_analyze_boolean_resolves.c > index c995d2b..f4d23d8 100644 > --- a/src/mesa/drivers/dri/i965/brw_nir_analyze_boolean_resolves.c > +++ b/src/mesa/drivers/dri/i965/brw_nir_analyze_boolean_resolves.c > @@ -109,9 +109,6 @@ analyze_boolean_resolves_block(nir_block *block, void > *void_state) > uint8_t resolve_status; > nir_alu_instr *alu = nir_instr_as_alu(instr); > switch (alu->op) { > - case nir_op_bany2: > - case nir_op_bany3: > - case nir_op_bany4: > case nir_op_ball_fequal2: > case nir_op_ball_iequal2: > case nir_op_ball_fequal3: > diff --git a/src/mesa/drivers/dri/i965/brw_vec4_nir.cpp > b/src/mesa/drivers/dri/i965/brw_vec4_nir.cpp > index 4aed60e..6666457 100644 > --- a/src/mesa/drivers/dri/i965/brw_vec4_nir.cpp > +++ b/src/mesa/drivers/dri/i965/brw_vec4_nir.cpp > @@ -1459,20 +1459,6 @@ vec4_visitor::nir_emit_alu(nir_alu_instr *instr) > inst->saturate = instr->dest.saturate; > break; > > - case nir_op_bany2: > - case nir_op_bany3: > - case nir_op_bany4: { > - unsigned swiz = > - brw_swizzle_for_size(nir_op_infos[instr->op].input_sizes[0]); > - > - emit(CMP(dst_null_d(), swizzle(op[0], swiz), brw_imm_d(0), > - BRW_CONDITIONAL_NZ)); > - emit(MOV(dst, brw_imm_d(0))); > - inst = emit(MOV(dst, brw_imm_d(~0))); > - inst->predicate = BRW_PREDICATE_ALIGN16_ANY4H; > - break; > - } > - > case nir_op_fabs: > case nir_op_iabs: > case nir_op_fneg: > diff --git a/src/mesa/program/prog_to_nir.c b/src/mesa/program/prog_to_nir.c > index 539e3c0..975bd1a 100644 > --- a/src/mesa/program/prog_to_nir.c > +++ b/src/mesa/program/prog_to_nir.c > @@ -554,8 +554,8 @@ static void > ptn_kil(nir_builder *b, nir_alu_dest dest, nir_ssa_def **src) > { > nir_ssa_def *cmp = b->shader->options->native_integers ? > - nir_bany4(b, nir_flt(b, src[0], nir_imm_float(b, 0.0))) : > - nir_fany4(b, nir_slt(b, src[0], nir_imm_float(b, 0.0))); > + nir_bany_fnequal4(b, nir_flt(b, src[0], nir_imm_float(b, 0.0)), > nir_imm_int(b, 0)) :
This should have been nir_bany_inequal4() instead of nir_bany_fnequal4(). Fixed locally. > + nir_fany_nequal4(b, nir_slt(b, src[0], nir_imm_float(b, 0.0)), > nir_imm_float(b, 0.0)); > > nir_intrinsic_instr *discard = > nir_intrinsic_instr_create(b->shader, nir_intrinsic_discard_if); > -- > 2.4.9 > _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev