Lines Matching refs:alu2
413 * This function detects cases where \p alu1 is a constant and \p alu2 is a
414 * constant that is its negation. It will also detect cases where \p alu2 is
417 * This function does not detect the general case when \p alu1 and \p alu2 are
419 * (a * b) and \p alu2 represents (-a * b)).
427 const nir_alu_instr *alu2,
433 nir_alu_instr_channel_used(alu2, src2, i));
438 nir_op_infos[alu2->op].input_types[src2]);
441 assert(nir_op_infos[alu2->op].input_types[src2] == nir_type_int);
445 if (alu1->src[src1].abs != alu2->src[src2].abs)
448 bool parity = alu1->src[src1].negate != alu2->src[src2].negate;
463 nir_src_as_const_value(alu2->src[src2].src);
469 nir_src_bit_size(alu2->src[src2].src))
477 const2[alu2->src[src2].swizzle[i]],
504 nir_alu_instr *neg2 = get_neg_instr(alu2->src[src2].src);
513 alu2_actual_src = alu2->src[src2].src;
515 for (unsigned i = 0; i < nir_ssa_alu_instr_src_components(alu2, src2); i++)
521 alu2_swizzle[alu2->src[src2].swizzle[i]])
529 nir_alu_srcs_equal(const nir_alu_instr *alu1, const nir_alu_instr *alu2,
532 if (alu1->src[src1].abs != alu2->src[src2].abs ||
533 alu1->src[src1].negate != alu2->src[src2].negate)
537 if (alu1->src[src1].swizzle[i] != alu2->src[src2].swizzle[i])
541 return nir_srcs_equal(alu1->src[src1].src, alu2->src[src2].src);
561 nir_alu_instr *alu2 = nir_instr_as_alu(instr2);
563 if (alu1->op != alu2->op)
568 if (alu1->no_signed_wrap != alu2->no_signed_wrap)
571 if (alu1->no_unsigned_wrap != alu2->no_unsigned_wrap)
577 if (alu1->dest.dest.ssa.num_components != alu2->dest.dest.ssa.num_components)
580 if (alu1->dest.dest.ssa.bit_size != alu2->dest.dest.ssa.bit_size)
584 if ((!nir_alu_srcs_equal(alu1, alu2, 0, 0) ||
585 !nir_alu_srcs_equal(alu1, alu2, 1, 1)) &&
586 (!nir_alu_srcs_equal(alu1, alu2, 0, 1) ||
587 !nir_alu_srcs_equal(alu1, alu2, 1, 0)))
591 if (!nir_alu_srcs_equal(alu1, alu2, i, i))
596 if (!nir_alu_srcs_equal(alu1, alu2, i, i))