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

Kenneth Graunke kwg at kemper.freedesktop.org
Tue Aug 12 20:53:38 UTC 2014


Module: Mesa
Branch: master
Commit: d8ef0eab5a133ad9d8945a6b7f077fea000a87a6
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=d8ef0eab5a133ad9d8945a6b7f077fea000a87a6

Author: Kenneth Graunke <kenneth at whitecape.org>
Date:   Sun Aug 10 07:06:36 2014 -0700

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 at whitecape.org>
Reviewed-by: Chris Forbes <chrisf at ijw.co.nz>
Reviewed-by: Matt Turner <mattst88 at gmail.com>

---

 src/mesa/drivers/dri/i965/brw_eu_emit.c |   28 ++++++++++++----------------
 1 file changed, 12 insertions(+), 16 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/brw_eu_emit.c b/src/mesa/drivers/dri/i965/brw_eu_emit.c
index 4d1d6ce..11ae25a 100644
--- a/src/mesa/drivers/dri/i965/brw_eu_emit.c
+++ b/src/mesa/drivers/dri/i965/brw_eu_emit.c
@@ -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);




More information about the mesa-commit mailing list