[Mesa-dev] [PATCH 2/3] i965/eu: Merge brw_CONT and gen6_CONT.

Kenneth Graunke kenneth at whitecape.org
Mon Aug 4 15:50:37 PDT 2014


The only difference is setting PopCount on Gen4-5.

Signed-off-by: Kenneth Graunke <kenneth at whitecape.org>
---
 src/mesa/drivers/dri/i965/brw_eu.h               |  1 -
 src/mesa/drivers/dri/i965/brw_eu_emit.c          | 22 +++++-----------------
 src/mesa/drivers/dri/i965/brw_fs_generator.cpp   |  6 +-----
 src/mesa/drivers/dri/i965/brw_vec4_generator.cpp |  6 +-----
 4 files changed, 7 insertions(+), 28 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/brw_eu.h b/src/mesa/drivers/dri/i965/brw_eu.h
index 63cb20b..7efc028 100644
--- a/src/mesa/drivers/dri/i965/brw_eu.h
+++ b/src/mesa/drivers/dri/i965/brw_eu.h
@@ -334,7 +334,6 @@ brw_inst *brw_WHILE(struct brw_compile *p);
 
 brw_inst *brw_BREAK(struct brw_compile *p);
 brw_inst *brw_CONT(struct brw_compile *p);
-brw_inst *gen6_CONT(struct brw_compile *p);
 brw_inst *gen6_HALT(struct brw_compile *p);
 
 /* Forward jumps:
diff --git a/src/mesa/drivers/dri/i965/brw_eu_emit.c b/src/mesa/drivers/dri/i965/brw_eu_emit.c
index 845bcd4..3be4449 100644
--- a/src/mesa/drivers/dri/i965/brw_eu_emit.c
+++ b/src/mesa/drivers/dri/i965/brw_eu_emit.c
@@ -1532,7 +1532,7 @@ brw_BREAK(struct brw_compile *p)
 }
 
 brw_inst *
-gen6_CONT(struct brw_compile *p)
+brw_CONT(struct brw_compile *p)
 {
    const struct brw_context *brw = p->brw;
    brw_inst *insn;
@@ -1542,25 +1542,13 @@ gen6_CONT(struct brw_compile *p)
    brw_set_src0(p, insn, brw_ip_reg());
    brw_set_src1(p, insn, brw_imm_d(0x0));
 
-   brw_inst_set_qtr_control(brw, insn, BRW_COMPRESSION_NONE);
-   brw_inst_set_exec_size(brw, insn, BRW_EXECUTE_8);
-   return insn;
-}
+   if (brw->gen < 6) {
+      brw_inst_set_gen4_pop_count(brw, insn,
+                                  p->if_depth_in_loop[p->loop_stack_depth]);
+   }
 
-brw_inst *
-brw_CONT(struct brw_compile *p)
-{
-   const struct brw_context *brw = p->brw;
-   brw_inst *insn;
-   insn = next_insn(p, BRW_OPCODE_CONTINUE);
-   brw_set_dest(p, insn, brw_ip_reg());
-   brw_set_src0(p, insn, brw_ip_reg());
-   brw_set_src1(p, insn, brw_imm_d(0x0));
    brw_inst_set_qtr_control(brw, insn, BRW_COMPRESSION_NONE);
    brw_inst_set_exec_size(brw, insn, BRW_EXECUTE_8);
-   /* insn->header.mask_control = BRW_MASK_DISABLE; */
-   brw_inst_set_gen4_pop_count(brw, insn,
-                               p->if_depth_in_loop[p->loop_stack_depth]);
    return insn;
 }
 
diff --git a/src/mesa/drivers/dri/i965/brw_fs_generator.cpp b/src/mesa/drivers/dri/i965/brw_fs_generator.cpp
index 8a7fa92..ac2f1b4 100644
--- a/src/mesa/drivers/dri/i965/brw_fs_generator.cpp
+++ b/src/mesa/drivers/dri/i965/brw_fs_generator.cpp
@@ -1582,11 +1582,7 @@ fs_generator::generate_code(exec_list *instructions)
 	 brw_set_default_predicate_control(p, BRW_PREDICATE_NONE);
 	 break;
       case BRW_OPCODE_CONTINUE:
-	 /* FINISHME: We need to write the loop instruction support still. */
-	 if (brw->gen >= 6)
-	    gen6_CONT(p);
-	 else
-	    brw_CONT(p);
+         brw_CONT(p);
 	 brw_set_default_predicate_control(p, BRW_PREDICATE_NONE);
 	 break;
 
diff --git a/src/mesa/drivers/dri/i965/brw_vec4_generator.cpp b/src/mesa/drivers/dri/i965/brw_vec4_generator.cpp
index c328f34..2129007 100644
--- a/src/mesa/drivers/dri/i965/brw_vec4_generator.cpp
+++ b/src/mesa/drivers/dri/i965/brw_vec4_generator.cpp
@@ -1085,11 +1085,7 @@ vec4_generator::generate_vec4_instruction(vec4_instruction *instruction,
       brw_set_default_predicate_control(p, BRW_PREDICATE_NONE);
       break;
    case BRW_OPCODE_CONTINUE:
-      /* FINISHME: We need to write the loop instruction support still. */
-      if (brw->gen >= 6)
-         gen6_CONT(p);
-      else
-         brw_CONT(p);
+      brw_CONT(p);
       brw_set_default_predicate_control(p, BRW_PREDICATE_NONE);
       break;
 
-- 
2.0.2



More information about the mesa-dev mailing list