From: Matt Turner Date: Tue, 17 Jun 2014 19:14:44 +0000 (-0700) Subject: i965: Update JIP/UIP compaction code to operate on bytes. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=2faa1a414c985c3dd86bcfc9c0dfa33784ad67ab;p=mesa.git i965: Update JIP/UIP compaction code to operate on bytes. JIP/UIP were previously in units of compacted instructions. On Gen8 they're in units of bytes. Reviewed-by: Kenneth Graunke --- diff --git a/src/mesa/drivers/dri/i965/brw_eu_compact.c b/src/mesa/drivers/dri/i965/brw_eu_compact.c index 25a96e7641c..ecd97978bce 100644 --- a/src/mesa/drivers/dri/i965/brw_eu_compact.c +++ b/src/mesa/drivers/dri/i965/brw_eu_compact.c @@ -653,16 +653,20 @@ static void update_uip_jip(struct brw_context *brw, brw_inst *insn, int this_old_ip, int *compacted_counts) { - int jip = brw_inst_jip(brw, insn); - jip -= compacted_between(this_old_ip, this_old_ip + jip, compacted_counts); + int scale = brw->gen >= 8 ? sizeof(brw_compact_inst) : 1; + + int32_t jip = brw_inst_jip(brw, insn); + jip -= scale * + compacted_between(this_old_ip, this_old_ip + jip, compacted_counts); brw_inst_set_jip(brw, insn, jip); if (brw_inst_opcode(brw, insn) == BRW_OPCODE_ENDIF || brw_inst_opcode(brw, insn) == BRW_OPCODE_WHILE) return; - int uip = brw_inst_uip(brw, insn); - uip -= compacted_between(this_old_ip, this_old_ip + uip, compacted_counts); + int32_t uip = brw_inst_uip(brw, insn); + uip -= scale * + compacted_between(this_old_ip, this_old_ip + uip, compacted_counts); brw_inst_set_uip(brw, insn, uip); }