panfrost/midgard: Map more bany/ball opcodes

Some of these are not yet fully functional due to related bugs, but this
the correct op mapping. The native ball/bany opcodes act on vec4's
unconditionally. That said, both ball and bany have the nice property
that duplicating an argument does not affect their output, so the
default "hanging swizzles" allow us to implement 2/3-component opcodes
correctly, implicitly lowering.

Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
This commit is contained in:
Alyssa Rosenzweig 2019-03-25 00:12:06 +00:00
parent 88b2a6b451
commit 53664108c2

View file

@ -1007,9 +1007,20 @@ emit_alu(compiler_context *ctx, nir_alu_instr *instr)
ALU_CASE(ishr, iasr);
ALU_CASE(ushr, ilsr);
ALU_CASE(ball_fequal2, fball_eq);
ALU_CASE(ball_fequal3, fball_eq);
ALU_CASE(ball_fequal4, fball_eq);
ALU_CASE(bany_fnequal2, fbany_neq);
ALU_CASE(bany_fnequal3, fbany_neq);
ALU_CASE(bany_fnequal4, fbany_neq);
ALU_CASE(ball_iequal2, iball_eq);
ALU_CASE(ball_iequal3, iball_eq);
ALU_CASE(ball_iequal4, iball_eq);
ALU_CASE(bany_inequal2, ibany_neq);
ALU_CASE(bany_inequal3, ibany_neq);
ALU_CASE(bany_inequal4, ibany_neq);
/* For greater-or-equal, we use less-or-equal and flip the