Browse Source

i965/eu: Refactor brw_WHILE to share a bit more code on Gen6+.

We're going to add a Gen8+ case shortly, which would need to duplicate
this code again.  Instead, share it.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Chris Forbes <chrisf@ijw.co.nz>
Reviewed-by: Matt Turner <mattst88@gmail.com>
tags/10.3-branchpoint
Kenneth Graunke 11 years ago
parent
commit
d8ef0eab5a
1 changed files with 12 additions and 16 deletions
  1. 12
    16
      src/mesa/drivers/dri/i965/brw_eu_emit.c

+ 12
- 16
src/mesa/drivers/dri/i965/brw_eu_emit.c View File

@@ -1704,25 +1704,21 @@ brw_WHILE(struct brw_compile *p)
brw_inst *insn, *do_insn;
unsigned br = brw_jump_scale(brw);

if (brw->gen >= 7) {
insn = next_insn(p, BRW_OPCODE_WHILE);
do_insn = get_inner_do_insn(p);

brw_set_dest(p, insn, retype(brw_null_reg(), BRW_REGISTER_TYPE_D));
brw_set_src0(p, insn, retype(brw_null_reg(), BRW_REGISTER_TYPE_D));
brw_set_src1(p, insn, brw_imm_ud(0));
brw_inst_set_jip(brw, insn, br * (do_insn - insn));

brw_inst_set_exec_size(brw, insn, p->compressed ? BRW_EXECUTE_16
: BRW_EXECUTE_8);
} else if (brw->gen == 6) {
if (brw->gen >= 6) {
insn = next_insn(p, BRW_OPCODE_WHILE);
do_insn = get_inner_do_insn(p);

brw_set_dest(p, insn, brw_imm_w(0));
brw_inst_set_gen6_jump_count(brw, insn, br * (do_insn - insn));
brw_set_src0(p, insn, retype(brw_null_reg(), BRW_REGISTER_TYPE_D));
brw_set_src1(p, insn, retype(brw_null_reg(), BRW_REGISTER_TYPE_D));
if (brw->gen == 7) {
brw_set_dest(p, insn, retype(brw_null_reg(), BRW_REGISTER_TYPE_D));
brw_set_src0(p, insn, retype(brw_null_reg(), BRW_REGISTER_TYPE_D));
brw_set_src1(p, insn, brw_imm_ud(0));
brw_inst_set_jip(brw, insn, br * (do_insn - insn));
} else {
brw_set_dest(p, insn, brw_imm_w(0));
brw_inst_set_gen6_jump_count(brw, insn, br * (do_insn - insn));
brw_set_src0(p, insn, retype(brw_null_reg(), BRW_REGISTER_TYPE_D));
brw_set_src1(p, insn, retype(brw_null_reg(), BRW_REGISTER_TYPE_D));
}

brw_inst_set_exec_size(brw, insn, p->compressed ? BRW_EXECUTE_16
: BRW_EXECUTE_8);

Loading…
Cancel
Save