nir: Rename Boolean-related opcodes to include 32 in the name
This is a squash of a bunch of individual changes:
nir/builder: Generate 32-bit bool opcodes transparently
nir/algebraic: Remap Boolean opcodes to the 32-bit variant
Use 32-bit opcodes in the NIR producers and optimizations
Generated with a little hand-editing and the following sed commands:
sed -i 's/nir_op_ball_fequal/nir_op_b32all_fequal/g' **/*.c
sed -i 's/nir_op_bany_fnequal/nir_op_b32any_fnequal/g' **/*.c
sed -i 's/nir_op_ball_iequal/nir_op_b32all_iequal/g' **/*.c
sed -i 's/nir_op_bany_inequal/nir_op_b32any_inequal/g' **/*.c
sed -i 's/nir_op_\([fiu]lt\)/nir_op_\132/g' **/*.c
sed -i 's/nir_op_\([fiu]ge\)/nir_op_\132/g' **/*.c
sed -i 's/nir_op_\([fiu]ne\)/nir_op_\132/g' **/*.c
sed -i 's/nir_op_\([fiu]eq\)/nir_op_\132/g' **/*.c
sed -i 's/nir_op_\([fi]\)ne32g/nir_op_\1neg/g' **/*.c
sed -i 's/nir_op_bcsel/nir_op_b32csel/g' **/*.c
Use 32-bit opcodes in the NIR back-ends
Generated with a little hand-editing and the following sed commands:
sed -i 's/nir_op_ball_fequal/nir_op_b32all_fequal/g' **/*.c
sed -i 's/nir_op_bany_fnequal/nir_op_b32any_fnequal/g' **/*.c
sed -i 's/nir_op_ball_iequal/nir_op_b32all_iequal/g' **/*.c
sed -i 's/nir_op_bany_inequal/nir_op_b32any_inequal/g' **/*.c
sed -i 's/nir_op_\([fiu]lt\)/nir_op_\132/g' **/*.c
sed -i 's/nir_op_\([fiu]ge\)/nir_op_\132/g' **/*.c
sed -i 's/nir_op_\([fiu]ne\)/nir_op_\132/g' **/*.c
sed -i 's/nir_op_\([fiu]eq\)/nir_op_\132/g' **/*.c
sed -i 's/nir_op_\([fi]\)ne32g/nir_op_\1neg/g' **/*.c
sed -i 's/nir_op_bcsel/nir_op_b32csel/g' **/*.c
Reviewed-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Tested-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
This commit is contained in:
committed by
Jason Ekstrand
parent
b569093566
commit
80e8dfe9de
@@ -1056,10 +1056,10 @@ fs_visitor::nir_emit_alu(const fs_builder &bld, nir_alu_instr *instr)
|
||||
break;
|
||||
}
|
||||
|
||||
case nir_op_flt:
|
||||
case nir_op_fge:
|
||||
case nir_op_feq:
|
||||
case nir_op_fne: {
|
||||
case nir_op_flt32:
|
||||
case nir_op_fge32:
|
||||
case nir_op_feq32:
|
||||
case nir_op_fne32: {
|
||||
fs_reg dest = result;
|
||||
|
||||
const uint32_t bit_size = nir_src_bit_size(instr->src[0].src);
|
||||
@@ -1068,16 +1068,16 @@ fs_visitor::nir_emit_alu(const fs_builder &bld, nir_alu_instr *instr)
|
||||
|
||||
brw_conditional_mod cond;
|
||||
switch (instr->op) {
|
||||
case nir_op_flt:
|
||||
case nir_op_flt32:
|
||||
cond = BRW_CONDITIONAL_L;
|
||||
break;
|
||||
case nir_op_fge:
|
||||
case nir_op_fge32:
|
||||
cond = BRW_CONDITIONAL_GE;
|
||||
break;
|
||||
case nir_op_feq:
|
||||
case nir_op_feq32:
|
||||
cond = BRW_CONDITIONAL_Z;
|
||||
break;
|
||||
case nir_op_fne:
|
||||
case nir_op_fne32:
|
||||
cond = BRW_CONDITIONAL_NZ;
|
||||
break;
|
||||
default:
|
||||
@@ -1100,12 +1100,12 @@ fs_visitor::nir_emit_alu(const fs_builder &bld, nir_alu_instr *instr)
|
||||
break;
|
||||
}
|
||||
|
||||
case nir_op_ilt:
|
||||
case nir_op_ult:
|
||||
case nir_op_ige:
|
||||
case nir_op_uge:
|
||||
case nir_op_ieq:
|
||||
case nir_op_ine: {
|
||||
case nir_op_ilt32:
|
||||
case nir_op_ult32:
|
||||
case nir_op_ige32:
|
||||
case nir_op_uge32:
|
||||
case nir_op_ieq32:
|
||||
case nir_op_ine32: {
|
||||
fs_reg dest = result;
|
||||
|
||||
const uint32_t bit_size = nir_src_bit_size(instr->src[0].src);
|
||||
@@ -1114,18 +1114,18 @@ fs_visitor::nir_emit_alu(const fs_builder &bld, nir_alu_instr *instr)
|
||||
|
||||
brw_conditional_mod cond;
|
||||
switch (instr->op) {
|
||||
case nir_op_ilt:
|
||||
case nir_op_ult:
|
||||
case nir_op_ilt32:
|
||||
case nir_op_ult32:
|
||||
cond = BRW_CONDITIONAL_L;
|
||||
break;
|
||||
case nir_op_ige:
|
||||
case nir_op_uge:
|
||||
case nir_op_ige32:
|
||||
case nir_op_uge32:
|
||||
cond = BRW_CONDITIONAL_GE;
|
||||
break;
|
||||
case nir_op_ieq:
|
||||
case nir_op_ieq32:
|
||||
cond = BRW_CONDITIONAL_Z;
|
||||
break;
|
||||
case nir_op_ine:
|
||||
case nir_op_ine32:
|
||||
cond = BRW_CONDITIONAL_NZ;
|
||||
break;
|
||||
default:
|
||||
@@ -1178,18 +1178,18 @@ 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_ball_fequal2:
|
||||
case nir_op_ball_iequal2:
|
||||
case nir_op_ball_fequal3:
|
||||
case nir_op_ball_iequal3:
|
||||
case nir_op_ball_fequal4:
|
||||
case nir_op_ball_iequal4:
|
||||
case nir_op_bany_fnequal2:
|
||||
case nir_op_bany_inequal2:
|
||||
case nir_op_bany_fnequal3:
|
||||
case nir_op_bany_inequal3:
|
||||
case nir_op_bany_fnequal4:
|
||||
case nir_op_bany_inequal4:
|
||||
case nir_op_b32all_fequal2:
|
||||
case nir_op_b32all_iequal2:
|
||||
case nir_op_b32all_fequal3:
|
||||
case nir_op_b32all_iequal3:
|
||||
case nir_op_b32all_fequal4:
|
||||
case nir_op_b32all_iequal4:
|
||||
case nir_op_b32any_fnequal2:
|
||||
case nir_op_b32any_inequal2:
|
||||
case nir_op_b32any_fnequal3:
|
||||
case nir_op_b32any_inequal3:
|
||||
case nir_op_b32any_fnequal4:
|
||||
case nir_op_b32any_inequal4:
|
||||
unreachable("Lowered by nir_lower_alu_reductions");
|
||||
|
||||
case nir_op_fnoise1_1:
|
||||
@@ -1508,7 +1508,7 @@ fs_visitor::nir_emit_alu(const fs_builder &bld, nir_alu_instr *instr)
|
||||
inst->saturate = instr->dest.saturate;
|
||||
break;
|
||||
|
||||
case nir_op_bcsel:
|
||||
case nir_op_b32csel:
|
||||
if (optimize_frontfacing_ternary(instr, result))
|
||||
return;
|
||||
|
||||
|
||||
@@ -109,18 +109,18 @@ analyze_boolean_resolves_block(nir_block *block)
|
||||
uint8_t resolve_status;
|
||||
nir_alu_instr *alu = nir_instr_as_alu(instr);
|
||||
switch (alu->op) {
|
||||
case nir_op_ball_fequal2:
|
||||
case nir_op_ball_iequal2:
|
||||
case nir_op_ball_fequal3:
|
||||
case nir_op_ball_iequal3:
|
||||
case nir_op_ball_fequal4:
|
||||
case nir_op_ball_iequal4:
|
||||
case nir_op_bany_fnequal2:
|
||||
case nir_op_bany_inequal2:
|
||||
case nir_op_bany_fnequal3:
|
||||
case nir_op_bany_inequal3:
|
||||
case nir_op_bany_fnequal4:
|
||||
case nir_op_bany_inequal4:
|
||||
case nir_op_b32all_fequal2:
|
||||
case nir_op_b32all_iequal2:
|
||||
case nir_op_b32all_fequal3:
|
||||
case nir_op_b32all_iequal3:
|
||||
case nir_op_b32all_fequal4:
|
||||
case nir_op_b32all_iequal4:
|
||||
case nir_op_b32any_fnequal2:
|
||||
case nir_op_b32any_inequal2:
|
||||
case nir_op_b32any_fnequal3:
|
||||
case nir_op_b32any_inequal3:
|
||||
case nir_op_b32any_fnequal4:
|
||||
case nir_op_b32any_inequal4:
|
||||
/* These are only implemented by the vec4 backend and its
|
||||
* implementation emits resolved booleans. At some point in the
|
||||
* future, this may change and we'll have to remove some of the
|
||||
|
||||
@@ -833,34 +833,34 @@ static enum brw_conditional_mod
|
||||
brw_conditional_for_nir_comparison(nir_op op)
|
||||
{
|
||||
switch (op) {
|
||||
case nir_op_flt:
|
||||
case nir_op_ilt:
|
||||
case nir_op_ult:
|
||||
case nir_op_flt32:
|
||||
case nir_op_ilt32:
|
||||
case nir_op_ult32:
|
||||
return BRW_CONDITIONAL_L;
|
||||
|
||||
case nir_op_fge:
|
||||
case nir_op_ige:
|
||||
case nir_op_uge:
|
||||
case nir_op_fge32:
|
||||
case nir_op_ige32:
|
||||
case nir_op_uge32:
|
||||
return BRW_CONDITIONAL_GE;
|
||||
|
||||
case nir_op_feq:
|
||||
case nir_op_ieq:
|
||||
case nir_op_ball_fequal2:
|
||||
case nir_op_ball_iequal2:
|
||||
case nir_op_ball_fequal3:
|
||||
case nir_op_ball_iequal3:
|
||||
case nir_op_ball_fequal4:
|
||||
case nir_op_ball_iequal4:
|
||||
case nir_op_feq32:
|
||||
case nir_op_ieq32:
|
||||
case nir_op_b32all_fequal2:
|
||||
case nir_op_b32all_iequal2:
|
||||
case nir_op_b32all_fequal3:
|
||||
case nir_op_b32all_iequal3:
|
||||
case nir_op_b32all_fequal4:
|
||||
case nir_op_b32all_iequal4:
|
||||
return BRW_CONDITIONAL_Z;
|
||||
|
||||
case nir_op_fne:
|
||||
case nir_op_ine:
|
||||
case nir_op_bany_fnequal2:
|
||||
case nir_op_bany_inequal2:
|
||||
case nir_op_bany_fnequal3:
|
||||
case nir_op_bany_inequal3:
|
||||
case nir_op_bany_fnequal4:
|
||||
case nir_op_bany_inequal4:
|
||||
case nir_op_fne32:
|
||||
case nir_op_ine32:
|
||||
case nir_op_b32any_fnequal2:
|
||||
case nir_op_b32any_inequal2:
|
||||
case nir_op_b32any_fnequal3:
|
||||
case nir_op_b32any_inequal3:
|
||||
case nir_op_b32any_fnequal4:
|
||||
case nir_op_b32any_inequal4:
|
||||
return BRW_CONDITIONAL_NZ;
|
||||
|
||||
default:
|
||||
@@ -880,20 +880,20 @@ vec4_visitor::optimize_predicate(nir_alu_instr *instr,
|
||||
nir_instr_as_alu(instr->src[0].src.ssa->parent_instr);
|
||||
|
||||
switch (cmp_instr->op) {
|
||||
case nir_op_bany_fnequal2:
|
||||
case nir_op_bany_inequal2:
|
||||
case nir_op_bany_fnequal3:
|
||||
case nir_op_bany_inequal3:
|
||||
case nir_op_bany_fnequal4:
|
||||
case nir_op_bany_inequal4:
|
||||
case nir_op_b32any_fnequal2:
|
||||
case nir_op_b32any_inequal2:
|
||||
case nir_op_b32any_fnequal3:
|
||||
case nir_op_b32any_inequal3:
|
||||
case nir_op_b32any_fnequal4:
|
||||
case nir_op_b32any_inequal4:
|
||||
*predicate = BRW_PREDICATE_ALIGN16_ANY4H;
|
||||
break;
|
||||
case nir_op_ball_fequal2:
|
||||
case nir_op_ball_iequal2:
|
||||
case nir_op_ball_fequal3:
|
||||
case nir_op_ball_iequal3:
|
||||
case nir_op_ball_fequal4:
|
||||
case nir_op_ball_iequal4:
|
||||
case nir_op_b32all_fequal2:
|
||||
case nir_op_b32all_iequal2:
|
||||
case nir_op_b32all_fequal3:
|
||||
case nir_op_b32all_iequal3:
|
||||
case nir_op_b32all_fequal4:
|
||||
case nir_op_b32all_iequal4:
|
||||
*predicate = BRW_PREDICATE_ALIGN16_ALL4H;
|
||||
break;
|
||||
default:
|
||||
@@ -1340,18 +1340,18 @@ vec4_visitor::nir_emit_alu(nir_alu_instr *instr)
|
||||
case nir_op_fddy_fine:
|
||||
unreachable("derivatives are not valid in vertex shaders");
|
||||
|
||||
case nir_op_ilt:
|
||||
case nir_op_ult:
|
||||
case nir_op_ige:
|
||||
case nir_op_uge:
|
||||
case nir_op_ieq:
|
||||
case nir_op_ine:
|
||||
case nir_op_ilt32:
|
||||
case nir_op_ult32:
|
||||
case nir_op_ige32:
|
||||
case nir_op_uge32:
|
||||
case nir_op_ieq32:
|
||||
case nir_op_ine32:
|
||||
assert(nir_dest_bit_size(instr->dest.dest) < 64);
|
||||
/* Fallthrough */
|
||||
case nir_op_flt:
|
||||
case nir_op_fge:
|
||||
case nir_op_feq:
|
||||
case nir_op_fne: {
|
||||
case nir_op_flt32:
|
||||
case nir_op_fge32:
|
||||
case nir_op_feq32:
|
||||
case nir_op_fne32: {
|
||||
enum brw_conditional_mod conditional_mod =
|
||||
brw_conditional_for_nir_comparison(instr->op);
|
||||
|
||||
@@ -1372,14 +1372,14 @@ vec4_visitor::nir_emit_alu(nir_alu_instr *instr)
|
||||
break;
|
||||
}
|
||||
|
||||
case nir_op_ball_iequal2:
|
||||
case nir_op_ball_iequal3:
|
||||
case nir_op_ball_iequal4:
|
||||
case nir_op_b32all_iequal2:
|
||||
case nir_op_b32all_iequal3:
|
||||
case nir_op_b32all_iequal4:
|
||||
assert(nir_dest_bit_size(instr->dest.dest) < 64);
|
||||
/* Fallthrough */
|
||||
case nir_op_ball_fequal2:
|
||||
case nir_op_ball_fequal3:
|
||||
case nir_op_ball_fequal4: {
|
||||
case nir_op_b32all_fequal2:
|
||||
case nir_op_b32all_fequal3:
|
||||
case nir_op_b32all_fequal4: {
|
||||
unsigned swiz =
|
||||
brw_swizzle_for_size(nir_op_infos[instr->op].input_sizes[0]);
|
||||
|
||||
@@ -1391,14 +1391,14 @@ vec4_visitor::nir_emit_alu(nir_alu_instr *instr)
|
||||
break;
|
||||
}
|
||||
|
||||
case nir_op_bany_inequal2:
|
||||
case nir_op_bany_inequal3:
|
||||
case nir_op_bany_inequal4:
|
||||
case nir_op_b32any_inequal2:
|
||||
case nir_op_b32any_inequal3:
|
||||
case nir_op_b32any_inequal4:
|
||||
assert(nir_dest_bit_size(instr->dest.dest) < 64);
|
||||
/* Fallthrough */
|
||||
case nir_op_bany_fnequal2:
|
||||
case nir_op_bany_fnequal3:
|
||||
case nir_op_bany_fnequal4: {
|
||||
case nir_op_b32any_fnequal2:
|
||||
case nir_op_b32any_fnequal3:
|
||||
case nir_op_b32any_fnequal4: {
|
||||
unsigned swiz =
|
||||
brw_swizzle_for_size(nir_op_infos[instr->op].input_sizes[0]);
|
||||
|
||||
@@ -1798,7 +1798,7 @@ vec4_visitor::nir_emit_alu(nir_alu_instr *instr)
|
||||
inst->saturate = instr->dest.saturate;
|
||||
break;
|
||||
|
||||
case nir_op_bcsel:
|
||||
case nir_op_b32csel:
|
||||
enum brw_predicate predicate;
|
||||
if (!optimize_predicate(instr, &predicate)) {
|
||||
emit(CMP(dst_null_d(), op[0], brw_imm_d(0), BRW_CONDITIONAL_NZ));
|
||||
|
||||
Reference in New Issue
Block a user