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:
parent
88b2a6b451
commit
53664108c2
1 changed files with 11 additions and 0 deletions
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue