<mod name="preserve_null" size="1" opt="preserve_null"/>
</ins>
- <!-- Scheduler lowered to *ATOM_C.i32/+ATOM_CX -->
- <ins name="+PATOM_C.i32" pseudo="true" staging="rw=sr_count" message="atomic">
+ <!-- Scheduler lowered to *ATOM_C.i32/+ATOM_CX. Real Valhall instructions. -->
+ <ins name="+ATOM_RETURN.i32" pseudo="true" staging="rw=sr_count" message="atomic">
<src start="0"/>
<src start="3"/>
- <mod name="atom_opc" start="9" size="4">
+ <mod name="atom_opc" start="9" size="5">
<reserved/>
<reserved/>
<opt>aadd</opt>
<immediate name="sr_count" size="4" pseudo="true"/>
</ins>
- <ins name="+PATOM_C1.i32" pseudo="true" staging="w=sr_count" message="atomic">
+ <ins name="+ATOM1_RETURN.i32" pseudo="true" staging="w=sr_count" message="atomic">
<src start="0"/>
<src start="3"/>
<mod name="atom_opc" start="6" size="3">
{
if (tuple->add && tuple->add->op == BI_OPCODE_CUBEFACE)
return bi_lower_cubeface(ctx, clause, tuple);
- else if (tuple->add && tuple->add->op == BI_OPCODE_PATOM_C_I32)
+ else if (tuple->add && tuple->add->op == BI_OPCODE_ATOM_RETURN_I32)
return bi_lower_atom_c(ctx, clause, tuple);
- else if (tuple->add && tuple->add->op == BI_OPCODE_PATOM_C1_I32)
+ else if (tuple->add && tuple->add->op == BI_OPCODE_ATOM1_RETURN_I32)
return bi_lower_atom_c1(ctx, clause, tuple);
else if (tuple->add && tuple->add->op == BI_OPCODE_SEG_ADD_I64)
return bi_lower_seg_add(ctx, clause, tuple);
enum bi_atom_opc opc = bi_atom_opc_for_nir(intrinsic);
enum bi_atom_opc post_opc = opc;
- /* Generate either ATOM_C or ATOM_C1 as required */
+ /* Generate either ATOM or ATOM1 as required */
if (bi_promote_atom_c1(opc, arg, &opc)) {
- bi_patom_c1_i32_to(b, sr, bi_word(addr, 0),
- bi_word(addr, 1), opc, 2);
+ bi_atom1_return_i32_to(b, sr, bi_word(addr, 0),
+ bi_word(addr, 1), opc, 2);
} else {
bi_mov_i32_to(b, sr, arg);
- bi_patom_c_i32_to(b, sr, sr, bi_word(addr, 0),
- bi_word(addr, 1), opc, 2);
+ bi_atom_return_i32_to(b, sr, sr, bi_word(addr, 0),
+ bi_word(addr, 1), opc, 2);
}
/* Post-process it */
unsigned
bi_count_read_registers(const bi_instr *ins, unsigned s)
{
- /* PATOM_C reads 1 but writes 2 */
- if (s == 0 && ins->op == BI_OPCODE_PATOM_C_I32)
+ /* ATOM reads 1 but writes 2 */
+ if (s == 0 && ins->op == BI_OPCODE_ATOM_RETURN_I32)
return 1;
else if (s == 0 && bi_opcode_props[ins->op].sr_read)
return bi_count_staging_registers(ins);