Lines Matching refs:neg

65  *     and neg/abs input modifiers.
89 /* label_{abs,neg,mul,omod2,omod4,omod5,clamp} are used for both 16 and
1011 /* VALU: propagate neg, abs & inline constants */
1049 instr->dpp().neg[i] = true;
1051 instr->sdwa().neg[i] = true;
1053 instr->vop3().neg[i] = true;
1455 if (vop3 && (vop3->abs[!i] || vop3->neg[!i] || vop3->clamp || vop3->omod))
1459 bool neg = neg1 ^ (vop3 && vop3->neg[i]);
1462 if (abs && neg && other.type() == RegType::vgpr)
1464 else if (abs && !neg && other.type() == RegType::vgpr)
1466 else if (!abs && neg && other.type() == RegType::vgpr)
1468 else if (!abs && !neg)
1501 if (vop3.abs[0] || vop3.abs[1] || vop3.abs[2] || vop3.neg[0] || vop3.neg[1] || vop3.neg[2] ||
1709 * neg/abs instructions because we'll likely combine it into another valu. */
1765 bool neg[2] = {false, false};
1789 if (vop3.neg[0] != vop3.neg[1] || vop3.abs[0] != vop3.abs[1] || vop3.opsel == 1 ||
1792 neg[i] = vop3.neg[0];
1826 if (neg[0] || neg[1] || abs[0] || abs[1] || opsel || num_sgprs > 1) {
1830 vop3->neg[i] = neg[i];
1905 memcpy(new_vop3->neg, cmp_vop3.neg, sizeof(new_vop3->neg));
1995 if (vop3.neg[0] != vop3.neg[1] || vop3.abs[0] != vop3.abs[1] || vop3.opsel == 1 ||
2031 memcpy(new_vop3->neg, cmp_vop3.neg, sizeof(new_vop3->neg));
2083 memcpy(new_vop3->neg, cmp_vop3.neg, sizeof(new_vop3->neg));
2094 memcpy(new_sdwa->neg, cmp_sdwa.neg, sizeof(new_sdwa->neg));
2104 memcpy(new_dpp->neg, cmp_dpp.neg, sizeof(new_dpp->neg));
2130 const char* shuffle_str, Operand operands[3], bool neg[3], bool abs[3],
2161 *inbetween_neg = op1_vop3 ? op1_vop3->neg[swap] : false;
2162 else if (op1_vop3 && op1_vop3->neg[swap])
2183 neg[shuffle[0]] = op1_vop3 ? op1_vop3->neg[!swap] : false;
2190 neg[shuffle[i + 1]] = op2_vop3 ? op2_vop3->neg[i] : false;
2205 Operand operands[3], bool neg[3], bool abs[3], uint8_t opsel, bool clamp,
2210 memcpy(new_instr->neg, neg, sizeof(bool[3]));
2232 bool neg[3], abs[3], clamp, precise;
2234 if (match_op3_for_vop3(ctx, instr->opcode, op2, instr.get(), swap, shuffle, operands, neg,
2237 create_vop3_for_op3(ctx, new_op, instr, operands, neg, abs, opsel, clamp, omod);
2300 bool neg[3] = {}, abs[3] = {};
2307 create_vop3_for_op3(ctx, op, instr, operands, neg, abs, opsel, clamp, omod);
2325 bool neg[3], abs[3], clamp, precise;
2328 if (match_op3_for_vop3(ctx, instr->opcode, opposite, instr.get(), swap, "012", operands, neg,
2332 neg[1] = !neg[1];
2333 neg[2] = !neg[2];
2334 create_vop3_for_op3(ctx, minmax3, instr, operands, neg, abs, opsel, clamp, omod);
2589 bool neg[3], abs[3], clamp, precise;
2591 if (match_op3_for_vop3(ctx, instr->opcode, other_op, instr.get(), swap, "012", operands, neg,
2643 if (neg[const0_idx])
2645 if (neg[const1_idx])
2685 create_vop3_for_op3(ctx, med, instr, operands, neg, abs, opsel, clamp, omod);
3299 /* neg(mul(a, b)) -> mul(neg(a), b) */
3316 /* convert to mul(neg(a), b) */
3319 /* neg(abs(mul(a, b))) -> mul(neg(abs(a)), abs(b)) */
3329 new_mul.neg[0] = mul.neg[0];
3330 new_mul.neg[1] = mul.neg[1];
3336 new_mul.neg[0] = new_mul.neg[1] = false;
3339 new_mul.neg[0] ^= true;
3399 bool neg[3] = {false, false, false};
3406 neg[0] = vop3.neg[0];
3407 neg[1] = vop3.neg[1];
3414 neg[2] = vop3.neg[add_op_idx];
3420 neg[0] = false;
3421 neg[1] = false;
3425 /* neg of the multiplication result */
3426 neg[1] = neg[1] ^ vop3.neg[1 - add_op_idx];
3429 neg[1 + add_op_idx] = neg[1 + add_op_idx] ^ true;
3432 neg[2 - add_op_idx] = neg[2 - add_op_idx] ^ true;
3447 mad->neg[i] = neg[i];
3825 std::swap(dpp->neg[0], dpp->neg[1]);
3833 dpp->neg[0] ^= info.instr->dpp().neg[0] && !dpp->abs[0];