i965/fs: Move aeb list into opt_cse_local.
authorMatt Turner <mattst88@gmail.com>
Sat, 12 Jul 2014 03:35:31 +0000 (20:35 -0700)
committerMatt Turner <mattst88@gmail.com>
Mon, 14 Jul 2014 18:27:52 +0000 (11:27 -0700)
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
src/mesa/drivers/dri/i965/brw_fs.h
src/mesa/drivers/dri/i965/brw_fs_cse.cpp

index 6f169dcf4c8123c71ec2b9eaa5c4a8df194a26c7..9c76bd236b16a45da747d2f4c69d46424999d89b 100644 (file)
@@ -334,7 +334,7 @@ public:
    void calculate_register_pressure();
    bool opt_algebraic();
    bool opt_cse();
-   bool opt_cse_local(bblock_t *block, exec_list *aeb);
+   bool opt_cse_local(bblock_t *block);
    bool opt_copy_propagate();
    bool try_copy_propagate(fs_inst *inst, int arg, acp_entry *entry);
    bool opt_copy_propagate_local(void *mem_ctx, bblock_t *block,
index 572780115805efa18779a6081361e39585d7c983..90a8a1436918f1b01b1b33e4e4a899f172b65187 100644 (file)
@@ -166,9 +166,10 @@ instructions_match(fs_inst *a, fs_inst *b)
 }
 
 bool
-fs_visitor::opt_cse_local(bblock_t *block, exec_list *aeb)
+fs_visitor::opt_cse_local(bblock_t *block)
 {
    bool progress = false;
+   exec_list aeb;
 
    void *cse_ctx = ralloc_context(NULL);
 
@@ -180,7 +181,7 @@ fs_visitor::opt_cse_local(bblock_t *block, exec_list *aeb)
       {
          bool found = false;
 
-         foreach_in_list_use_after(aeb_entry, entry, aeb) {
+         foreach_in_list_use_after(aeb_entry, entry, &aeb) {
             /* Match current instruction's expression against those in AEB. */
             if (instructions_match(inst, entry->generator)) {
                found = true;
@@ -194,7 +195,7 @@ fs_visitor::opt_cse_local(bblock_t *block, exec_list *aeb)
             aeb_entry *entry = ralloc(cse_ctx, aeb_entry);
             entry->tmp = reg_undef;
             entry->generator = inst;
-            aeb->push_tail(entry);
+            aeb.push_tail(entry);
          } else {
             /* This is at least our second sighting of this expression.
              * If we don't have a temporary already, make one.
@@ -264,7 +265,7 @@ fs_visitor::opt_cse_local(bblock_t *block, exec_list *aeb)
          }
       }
 
-      foreach_in_list_safe(aeb_entry, entry, aeb) {
+      foreach_in_list_safe(aeb_entry, entry, &aeb) {
          /* Kill all AEB entries that write a different value to or read from
           * the flag register if we just wrote it.
           */
@@ -322,9 +323,8 @@ fs_visitor::opt_cse()
 
    for (int b = 0; b < cfg.num_blocks; b++) {
       bblock_t *block = cfg.blocks[b];
-      exec_list aeb;
 
-      progress = opt_cse_local(block, &aeb) || progress;
+      progress = opt_cse_local(block) || progress;
    }
 
    return progress;