Lines Matching refs:vop3p

904       return instr->vop3p().opsel_hi & (1u << index) ? 16 : 32;
941 VOP3P_instruction* vop3p = &instr->vop3p();
942 bool opsel_lo = (vop3p->opsel_lo >> i) & 1;
943 bool opsel_hi = (vop3p->opsel_hi >> i) & 1;
1006 vop3p->neg_lo[i] ^= opsel_lo ^ neg_lo;
1007 vop3p->neg_hi[i] ^= opsel_hi ^ neg_lo;
1014 vop3p->opsel_lo = opsel_lo ? (vop3p->opsel_lo | (1 << i)) : (vop3p->opsel_lo & ~(1 << i));
1015 vop3p->opsel_hi = opsel_hi ? (vop3p->opsel_hi | (1 << i)) : (vop3p->opsel_hi & ~(1 << i));
3211 instr->vop3p().clamp = true;
3449 VOP3P_instruction* vop3p = &instr->vop3p();
3453 vop3p->clamp && instr->operands[0].isTemp() && ctx.uses[instr->operands[0].tempId()] == 1 &&
3454 !((vop3p->opsel_lo | vop3p->opsel_hi) & 2)) {
3458 VOP3P_instruction* candidate = &ctx.info[instr->operands[0].tempId()].instr->vop3p();
3460 propagate_swizzles(candidate, vop3p->opsel_lo, vop3p->opsel_hi);
3479 VOP3P_instruction* fneg = &info.instr->vop3p();
3499 bool opsel_lo = (vop3p->opsel_lo >> i) & 1;
3500 bool opsel_hi = (vop3p->opsel_hi >> i) & 1;
3503 vop3p->neg_lo[i] ^= opsel_lo ? neg_hi : neg_lo;
3504 vop3p->neg_hi[i] ^= opsel_hi ? neg_hi : neg_lo;
3505 vop3p->opsel_lo ^= ((opsel_lo ? ~fneg->opsel_hi : fneg->opsel_lo) & 1) << i;
3506 vop3p->opsel_hi ^= ((opsel_hi ? ~fneg->opsel_hi : fneg->opsel_lo) & 1) << i;
3543 if (info.instr->vop3p().clamp)
3548 opsel_lo = (vop3p->opsel_lo >> i) & 1;
3549 opsel_hi = (vop3p->opsel_hi >> i) & 1;
3571 VOP3P_instruction* mul = &mul_instr->vop3p();
3578 fma->clamp = vop3p->clamp;
3582 fma->opsel_lo |= (vop3p->opsel_lo << (2 - add_op_idx)) & 0x4;
3583 fma->opsel_hi |= (vop3p->opsel_hi << (2 - add_op_idx)) & 0x4;
3584 fma->neg_lo[2] = vop3p->neg_lo[add_op_idx];
3585 fma->neg_hi[2] = vop3p->neg_hi[add_op_idx];
3586 fma->neg_lo[1] = fma->neg_lo[1] ^ vop3p->neg_lo[1 - add_op_idx];
3587 fma->neg_hi[1] = fma->neg_hi[1] ^ vop3p->neg_hi[1 - add_op_idx];
3631 aco_ptr<VOP3P_instruction> vop3p{
3634 vop3p->opsel_lo = instr->isVOP3() ? ((instr->vop3().opsel & 0x7) << (is_add ? 1 : 0)) : 0x0;
3635 vop3p->opsel_hi = 0x0;
3637 vop3p->operands[is_add + i] = instr->operands[i];
3638 vop3p->neg_lo[is_add + i] = instr->isVOP3() && instr->vop3().neg[i];
3639 vop3p->neg_lo[is_add + i] |= instr->isSDWA() && instr->sdwa().neg[i];
3640 vop3p->neg_hi[is_add + i] = instr->isVOP3() && instr->vop3().abs[i];
3641 vop3p->neg_hi[is_add + i] |= instr->isSDWA() && instr->sdwa().abs[i];
3642 vop3p->opsel_lo |= (instr->isSDWA() && instr->sdwa().sel[i].offset()) << (is_add + i);
3645 vop3p->opsel_hi &= 0x3;
3646 vop3p->operands[2] = Operand::zero();
3647 vop3p->neg_lo[2] = true;
3649 vop3p->opsel_hi &= 0x6;
3650 vop3p->operands[0] = Operand::c32(0x3f800000);
3652 vop3p->neg_lo[2] ^= true;
3654 vop3p->neg_lo[1] ^= true;
3656 vop3p->definitions[0] = instr->definitions[0];
3657 vop3p->clamp = instr->isVOP3() && instr->vop3().clamp;
3658 instr = std::move(vop3p);
3742 instr->vop3p().opsel_hi ^= 1u << i;
3744 instr->vop3p().opsel_lo |= 1u << i;
3747 if (!instr->vop3p().neg_hi[i]) {
3748 instr->vop3p().neg_lo[i] ^= neg;
3749 instr->vop3p().neg_hi[i] = abs;
3911 !instr->vop3p().neg_lo[0] &&
3912 ((instr->operands[0].constantEquals(0x3f800000) && (instr->vop3p().opsel_hi & 0x1) == 0) ||
3913 (instr->operands[0].constantEquals(0x3C00) && (instr->vop3p().opsel_hi & 0x1) &&
3914 !(instr->vop3p().opsel_lo & 0x1)));
3934 if (info.instr->isVOP3P() && info.instr->vop3p().clamp)
4018 VOP3P_instruction& vop3p = mul_instr->vop3p();
4019 neg[0] = vop3p.neg_lo[0];
4020 neg[1] = vop3p.neg_lo[1];
4021 abs[0] = vop3p.neg_hi[0];
4022 abs[1] = vop3p.neg_hi[1];
4023 opsel_lo = vop3p.opsel_lo & 0x3;
4024 opsel_hi = vop3p.opsel_hi & 0x3;
4043 VOP3P_instruction& vop3p = instr->vop3p();
4044 neg[2] = vop3p.neg_lo[add_op_idx];
4045 abs[2] = vop3p.neg_hi[add_op_idx];
4046 opsel_lo |= vop3p.opsel_lo & (1 << add_op_idx) ? 0x4 : 0x0;
4047 opsel_hi |= vop3p.opsel_hi & (1 << add_op_idx) ? 0x4 : 0x0;
4048 clamp = vop3p.clamp;
4050 if (vop3p.neg_hi[3 - add_op_idx]) {
4057 neg[1] = neg[1] ^ vop3p.neg_lo[3 - add_op_idx];