There doesn't seem to be any reason to keep these opcodes around: * fnot/fxor are not used at all. * fand/for are only used in lower_alu_to_scalar, but easily replaced Signed-off-by: Jonathan Marek <jonathan@marek.ca> Reviewed-by: Eric Anholt <eric@anholt.net> Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>tags/19.2-branchpoint
| @@ -1674,7 +1674,6 @@ nir_alu_instr_is_comparison(const nir_alu_instr *instr) | |||
| case nir_op_i2b1: | |||
| case nir_op_f2b1: | |||
| case nir_op_inot: | |||
| case nir_op_fnot: | |||
| return true; | |||
| default: | |||
| return false; | |||
| @@ -209,8 +209,8 @@ lower_alu_instr_scalar(nir_alu_instr *instr, nir_builder *b, BITSET_WORD *lower_ | |||
| LOWER_REDUCTION(nir_op_b32all_iequal, nir_op_ieq32, nir_op_iand); | |||
| LOWER_REDUCTION(nir_op_b32any_fnequal, nir_op_fne32, nir_op_ior); | |||
| LOWER_REDUCTION(nir_op_b32any_inequal, nir_op_ine32, 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_fall_equal, nir_op_seq, nir_op_fmin); | |||
| LOWER_REDUCTION(nir_op_fany_nequal, nir_op_sne, nir_op_fmax); | |||
| default: | |||
| break; | |||
| @@ -190,8 +190,6 @@ unop("mov", tuint, "src0") | |||
| unop("ineg", tint, "-src0") | |||
| unop("fneg", tfloat, "-src0") | |||
| unop("inot", tint, "~src0") # invert every bit of the integer | |||
| unop("fnot", tfloat, ("bit_size == 64 ? ((src0 == 0.0) ? 1.0 : 0.0f) : " + | |||
| "((src0 == 0.0f) ? 1.0f : 0.0f)")) | |||
| unop("fsign", tfloat, ("bit_size == 64 ? " + | |||
| "((src0 == 0.0) ? 0.0 : ((src0 > 0.0) ? 1.0 : -1.0)) : " + | |||
| "((src0 == 0.0f) ? 0.0f : ((src0 > 0.0f) ? 1.0f : -1.0f))")) | |||
| @@ -700,18 +698,6 @@ binop("ior", tuint, _2src_commutative + associative, "src0 | src1") | |||
| binop("ixor", tuint, _2src_commutative + associative, "src0 ^ src1") | |||
| # floating point logic operators | |||
| # | |||
| # These use (src != 0.0) for testing the truth of the input, and output 1.0 | |||
| # for true and 0.0 for false | |||
| binop("fand", tfloat32, _2src_commutative, | |||
| "((src0 != 0.0f) && (src1 != 0.0f)) ? 1.0f : 0.0f") | |||
| binop("for", tfloat32, _2src_commutative, | |||
| "((src0 != 0.0f) || (src1 != 0.0f)) ? 1.0f : 0.0f") | |||
| binop("fxor", tfloat32, _2src_commutative, | |||
| "(src0 != 0.0f && src1 == 0.0f) || (src0 == 0.0f && src1 != 0.0f) ? 1.0f : 0.0f") | |||
| binop_reduce("fdot", 1, tfloat, tfloat, "{src0} * {src1}", "{src0} + {src1}", | |||
| "{src}") | |||
| @@ -554,14 +554,12 @@ optimizations = [ | |||
| (('ult', a, a), False), | |||
| (('uge', a, a), True), | |||
| # Logical and bit operations | |||
| (('fand', a, 0.0), 0.0), | |||
| (('iand', a, a), a), | |||
| (('iand', a, ~0), a), | |||
| (('iand', a, 0), 0), | |||
| (('ior', a, a), a), | |||
| (('ior', a, 0), a), | |||
| (('ior', a, True), True), | |||
| (('fxor', a, a), 0.0), | |||
| (('ixor', a, a), 0), | |||
| (('ixor', a, 0), a), | |||
| (('inot', ('inot', a)), a), | |||
| @@ -286,10 +286,6 @@ instr_create_alu(struct ir2_context *ctx, nir_op opcode, unsigned ncomp) | |||
| [nir_op_mov] = {MAXs, MAXv}, | |||
| [nir_op_fsign] = {-1, CNDGTEv}, | |||
| [nir_op_fnot] = {SETEs, SETEv}, | |||
| [nir_op_for] = {MAXs, MAXv}, | |||
| [nir_op_fand] = {MINs, MINv}, | |||
| [nir_op_fxor] = {-1, SETNEv}, | |||
| [nir_op_fadd] = {ADDs, ADDv}, | |||
| [nir_op_fsub] = {ADDs, ADDv}, | |||
| [nir_op_fmul] = {MULs, MULv}, | |||
| @@ -93,8 +93,8 @@ static bool lower_scalar(nir_alu_instr * instr, nir_builder * b) | |||
| switch (instr->op) { | |||
| /* TODO: handle these instead of lowering */ | |||
| 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_fall_equal, nir_op_seq, nir_op_fmin); | |||
| LOWER_REDUCTION(nir_op_fany_nequal, nir_op_sne, nir_op_fmax); | |||
| default: | |||
| return false; | |||
| @@ -114,7 +114,6 @@ static int nir_to_gpir_opcodes[nir_num_opcodes] = { | |||
| [nir_op_fmul] = gpir_op_mul, | |||
| [nir_op_fadd] = gpir_op_add, | |||
| [nir_op_fneg] = gpir_op_neg, | |||
| [nir_op_fnot] = gpir_op_not, | |||
| [nir_op_fmin] = gpir_op_min, | |||
| [nir_op_fmax] = gpir_op_max, | |||
| [nir_op_frcp] = gpir_op_rcp, | |||
| @@ -126,8 +125,6 @@ static int nir_to_gpir_opcodes[nir_num_opcodes] = { | |||
| [nir_op_fsign] = gpir_op_sign, | |||
| [nir_op_seq] = gpir_op_eq, | |||
| [nir_op_sne] = gpir_op_ne, | |||
| [nir_op_fand] = gpir_op_min, | |||
| [nir_op_for] = gpir_op_max, | |||
| [nir_op_fabs] = gpir_op_abs, | |||
| [nir_op_mov] = gpir_op_mov, | |||
| }; | |||
| @@ -137,9 +137,6 @@ static int nir_to_ppir_opcodes[nir_num_opcodes] = { | |||
| [nir_op_ffloor] = ppir_op_floor, | |||
| [nir_op_fceil] = ppir_op_ceil, | |||
| [nir_op_ffract] = ppir_op_fract, | |||
| [nir_op_fand] = ppir_op_and, | |||
| [nir_op_for] = ppir_op_or, | |||
| [nir_op_fxor] = ppir_op_xor, | |||
| [nir_op_sge] = ppir_op_ge, | |||
| [nir_op_fge] = ppir_op_ge, | |||
| [nir_op_slt] = ppir_op_lt, | |||
| @@ -148,7 +145,6 @@ static int nir_to_ppir_opcodes[nir_num_opcodes] = { | |||
| [nir_op_feq] = ppir_op_eq, | |||
| [nir_op_sne] = ppir_op_ne, | |||
| [nir_op_fne] = ppir_op_ne, | |||
| [nir_op_fnot] = ppir_op_not, | |||
| [nir_op_fcsel] = ppir_op_select, | |||
| [nir_op_inot] = ppir_op_not, | |||
| [nir_op_ftrunc] = ppir_op_trunc, | |||
| @@ -348,7 +348,6 @@ Converter::getOperation(nir_op op) | |||
| case nir_op_fadd: | |||
| case nir_op_iadd: | |||
| return OP_ADD; | |||
| case nir_op_fand: | |||
| case nir_op_iand: | |||
| return OP_AND; | |||
| case nir_op_ifind_msb: | |||
| @@ -417,10 +416,8 @@ Converter::getOperation(nir_op op) | |||
| case nir_op_fneg: | |||
| case nir_op_ineg: | |||
| return OP_NEG; | |||
| case nir_op_fnot: | |||
| case nir_op_inot: | |||
| return OP_NOT; | |||
| case nir_op_for: | |||
| case nir_op_ior: | |||
| return OP_OR; | |||
| case nir_op_fpow: | |||
| @@ -456,7 +453,6 @@ Converter::getOperation(nir_op op) | |||
| return OP_SUB; | |||
| case nir_op_ftrunc: | |||
| return OP_TRUNC; | |||
| case nir_op_fxor: | |||
| case nir_op_ixor: | |||
| return OP_XOR; | |||
| default: | |||
| @@ -2705,7 +2701,6 @@ Converter::visit(nir_alu_instr *insn) | |||
| case nir_op_iabs: | |||
| case nir_op_fadd: | |||
| case nir_op_iadd: | |||
| case nir_op_fand: | |||
| case nir_op_iand: | |||
| case nir_op_fceil: | |||
| case nir_op_fcos: | |||
| @@ -2737,9 +2732,7 @@ Converter::visit(nir_alu_instr *insn) | |||
| case nir_op_umul_high: | |||
| case nir_op_fneg: | |||
| case nir_op_ineg: | |||
| case nir_op_fnot: | |||
| case nir_op_inot: | |||
| case nir_op_for: | |||
| case nir_op_ior: | |||
| case nir_op_pack_64_2x32_split: | |||
| case nir_op_fpow: | |||
| @@ -2756,7 +2749,6 @@ Converter::visit(nir_alu_instr *insn) | |||
| case nir_op_isub: | |||
| case nir_op_ftrunc: | |||
| case nir_op_ishl: | |||
| case nir_op_fxor: | |||
| case nir_op_ixor: { | |||
| DEFAULT_CHECKS; | |||
| LValues &newDefs = convert(&insn->dest); | |||