{
bi_instr *I = rzalloc(b->shader, bi_instr);
I->op = BI_OPCODE_${opcode.replace('.', '_').upper()};
+ I->nr_dests = ${ops[opcode]["dests"]};
+ I->nr_srcs = ${src_count(ops[opcode])};
% for dest in range(ops[opcode]["dests"]):
I->dest[${dest}] = dest${dest};
% endfor
I->cmpf = mod->cmpf;
I->src[0] = mod->src[0];
I->src[1] = mod->src[1];
+ I->nr_srcs = 2;
if (mod->op == BI_OPCODE_FCMP_V2F16) {
I->src[0].swizzle = bi_compose_swizzle_16(r, I->src[0].swizzle);
I->round = BI_ROUND_NONE;
I->src[1] = bi_negzero();
+ I->nr_srcs = 2;
break;
case BI_OPCODE_DISCARD_B32:
I->op = BI_OPCODE_DISCARD_F32;
I->src[1] = bi_imm_u32(0);
I->cmpf = BI_CMPF_NE;
+ I->nr_srcs = 2;
break;
default:
pinstr->op = BI_OPCODE_CUBEFACE2;
pinstr->dest[0] = pinstr->dest[1];
pinstr->dest[1] = bi_null();
+ pinstr->nr_dests = 1;
+
pinstr->src[0] = cubeface1->dest[0];
pinstr->src[1] = bi_null();
pinstr->src[2] = bi_null();
+ pinstr->nr_srcs = 1;
return cubeface1;
}
pinstr->op = BI_OPCODE_ATOM_CX;
pinstr->src[3] = atom_c->src[2];
+ pinstr->nr_srcs = 4;
return atom_c;
}
pinstr->src[1] = pinstr->src[0];
pinstr->src[3] = bi_dontcare(&b);
pinstr->src[0] = bi_null();
+ pinstr->nr_srcs = 4;
return atom_c;
}
pinstr->op = BI_OPCODE_SEG_ADD;
pinstr->src[0] = pinstr->src[1];
pinstr->src[1] = bi_null();
+ pinstr->nr_srcs = 1;
assert(pinstr->dest[0].type == BI_INDEX_REGISTER);
pinstr->dest[0].value += 1;
bi_instr *dtsel = bi_dtsel_imm_to(&b, bi_temp(b.shader),
add->src[0], add->table);
+ assert(add->nr_srcs >= 1);
add->src[0] = dtsel->dest[0];
assert(bi_supports_dtsel(add));
assert(bi_can_iaddc(instr));
instr->op = BI_OPCODE_IADDC_I32;
instr->src[2] = bi_zero();
+ instr->nr_srcs = 3;
} else if (fma && bi_can_replace_with_csel(instr)) {
bi_replace_mux_with_csel(instr, false);
}
case BI_OPCODE_SWZ_V2I16:
I->op = BI_OPCODE_IADD_V2U16;
I->src[1] = bi_zero();
+ I->nr_srcs = 2;
break;
case BI_OPCODE_SWZ_V4I8:
I->op = BI_OPCODE_IADD_V4U8;
I->src[1] = bi_zero();
+ I->nr_srcs = 2;
break;
case BI_OPCODE_ICMP_I32:
I->op = BI_OPCODE_ICMP_OR_U32;
I->src[2] = bi_zero();
+ I->nr_srcs = 3;
break;
case BI_OPCODE_ICMP_V2I16:
I->op = BI_OPCODE_ICMP_OR_V2U16;
I->src[2] = bi_zero();
+ I->nr_srcs = 3;
break;
case BI_OPCODE_ICMP_V4I8:
I->op = BI_OPCODE_ICMP_OR_V4U8;
I->src[2] = bi_zero();
+ I->nr_srcs = 3;
break;
case BI_OPCODE_ICMP_U32:
case BI_OPCODE_FCMP_V2F16:
I->op = BI_OPCODE_FCMP_OR_V2F16;
I->src[2] = bi_zero();
+ I->nr_srcs = 3;
break;
/* Integer CSEL must have a signedness */
I->op = I->branch_target ? BI_OPCODE_BRANCHZ_I16 : BI_OPCODE_BRANCHZI;
I->src[1] = I->src[0];
I->src[0] = bi_zero();
+ I->nr_srcs = 2;
I->cmpf = BI_CMPF_EQ;
break;
I->src[3] = I->src[2];
I->src[2] = I->src[1];
I->src[1] = bi_imm_f32(1.0);
+ I->nr_srcs = 4;
break;
default: