From 90c982a8a85861d4d2bdee479c40977c2611500a Mon Sep 17 00:00:00 2001 From: Matt Turner Date: Sat, 23 Aug 2014 09:55:39 -0700 Subject: [PATCH] i965/compaction: Use sizeof brw_inst/brw_compact_inst. Reviewed-by: Kenneth Graunke Reviewed-by: Jason Ekstrand --- src/mesa/drivers/dri/i965/brw_eu_compact.c | 32 ++++++++++++---------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/src/mesa/drivers/dri/i965/brw_eu_compact.c b/src/mesa/drivers/dri/i965/brw_eu_compact.c index 696ed9838bc..c291f9616e0 100644 --- a/src/mesa/drivers/dri/i965/brw_eu_compact.c +++ b/src/mesa/drivers/dri/i965/brw_eu_compact.c @@ -1098,11 +1098,11 @@ brw_compact_instructions(struct brw_compile *p, int start_offset, /* For an instruction at byte offset 8*i before compaction, this is the number * of compacted instructions that preceded it. */ - int compacted_counts[(p->next_insn_offset - start_offset) / 8]; + int compacted_counts[(p->next_insn_offset - start_offset) / sizeof(brw_compact_inst)]; /* For an instruction at byte offset 8*i after compaction, this is the * 8-byte offset it was at before compaction. */ - int old_ip[(p->next_insn_offset - start_offset) / 8]; + int old_ip[(p->next_insn_offset - start_offset) / sizeof(brw_compact_inst)]; if (brw->gen < 6) return; @@ -1114,8 +1114,8 @@ brw_compact_instructions(struct brw_compile *p, int start_offset, brw_inst *src = store + src_offset; void *dst = store + offset; - old_ip[offset / 8] = src_offset / 8; - compacted_counts[src_offset / 8] = compacted_count; + old_ip[offset / sizeof(brw_compact_inst)] = src_offset / sizeof(brw_compact_inst); + compacted_counts[src_offset / sizeof(brw_compact_inst)] = compacted_count; brw_inst saved = *src; @@ -1130,7 +1130,7 @@ brw_compact_instructions(struct brw_compile *p, int start_offset, } } - offset += 8; + offset += sizeof(brw_compact_inst); } else { /* It appears that the end of thread SEND instruction needs to be * aligned, or the GPU hangs. @@ -1138,13 +1138,14 @@ brw_compact_instructions(struct brw_compile *p, int start_offset, if ((brw_inst_opcode(brw, src) == BRW_OPCODE_SEND || brw_inst_opcode(brw, src) == BRW_OPCODE_SENDC) && brw_inst_eot(brw, src) && - (offset & 8) != 0) { + (offset & sizeof(brw_compact_inst)) != 0) { brw_compact_inst *align = store + offset; memset(align, 0, sizeof(*align)); brw_compact_inst_set_opcode(align, BRW_OPCODE_NOP); brw_compact_inst_set_cmpt_control(align, true); - offset += 8; - old_ip[offset / 8] = src_offset / 8; + offset += sizeof(brw_compact_inst); + old_ip[offset / sizeof(brw_compact_inst)] = src_offset / sizeof(brw_compact_inst); + dst = store + offset; } @@ -1163,7 +1164,7 @@ brw_compact_instructions(struct brw_compile *p, int start_offset, for (offset = 0; offset < p->next_insn_offset - start_offset; offset = next_offset(brw, store, offset)) { brw_inst *insn = store + offset; - int this_old_ip = old_ip[offset / 8]; + int this_old_ip = old_ip[offset / sizeof(brw_compact_inst)]; int this_compacted_count = compacted_counts[this_old_ip]; int target_old_ip, target_compacted_count; @@ -1196,21 +1197,22 @@ brw_compact_instructions(struct brw_compile *p, int start_offset, * alignment padding, so that the next compression pass (for the FS 8/16 * compile passes) parses correctly. */ - if (p->next_insn_offset & 8) { + if (p->next_insn_offset & sizeof(brw_compact_inst)) { brw_compact_inst *align = store + offset; memset(align, 0, sizeof(*align)); brw_compact_inst_set_opcode(align, BRW_OPCODE_NOP); brw_compact_inst_set_cmpt_control(align, true); - p->next_insn_offset += 8; + p->next_insn_offset += sizeof(brw_compact_inst); } - p->nr_insn = p->next_insn_offset / 16; + p->nr_insn = p->next_insn_offset / sizeof(brw_inst); /* Update the instruction offsets for each annotation. */ if (annotation) { for (int offset = 0, i = 0; i < num_annotations; i++) { - while (start_offset + old_ip[offset / 8] * 8 != annotation[i].offset) { - assert(start_offset + old_ip[offset / 8] * 8 < - annotation[i].offset); + while (start_offset + old_ip[offset / sizeof(brw_compact_inst)] * + sizeof(brw_compact_inst) != annotation[i].offset) { + assert(start_offset + old_ip[offset / sizeof(brw_compact_inst)] * + sizeof(brw_compact_inst) < annotation[i].offset); offset = next_offset(brw, store, offset); } -- 2.30.2