reg = tmp;
}
+ cp->xmm[reg.idx].last_used = cp->insn_counter;
return reg;
}
reg = tmp;
}
+ cp->xmm[reg.idx].last_used = cp->insn_counter;
return reg;
}
return;
}
+ /* If this xmm reg is already holding this shader reg, just update
+ * last_used, and don't clobber the dirty flag...
+ */
+ if (cp->xmm[reg.idx].file == file &&
+ cp->xmm[reg.idx].idx == idx)
+ {
+ cp->xmm[reg.idx].dirty |= dirty;
+ cp->xmm[reg.idx].last_used = cp->insn_counter;
+ return;
+ }
+
+
/* If any xmm reg thinks it holds this shader reg, break the
* illusion.
*/
unsigned file,
unsigned idx )
{
- struct x86_reg reg = aos_get_shader_reg( cp, file, idx );
- return get_xmm( cp, reg );
+ struct x86_reg reg = get_xmm( cp,
+ aos_get_shader_reg( cp, file, idx ) );
+
+ aos_adopt_xmm_reg( cp,
+ reg,
+ file,
+ idx,
+ FALSE );
+
+ return reg;
}