i965: Add invalidate_cfg parameter to invalidate_live_intervals().
authorMatt Turner <mattst88@gmail.com>
Sun, 13 Jul 2014 00:49:32 +0000 (17:49 -0700)
committerMatt Turner <mattst88@gmail.com>
Fri, 22 Aug 2014 17:23:34 +0000 (10:23 -0700)
Will let us avoid invalidating the CFG if the optimization pass has
removed instructions using the new basic block methods.

Reviewed-by: Topi Pohjolainen <topi.pohjolainen@intel.com>
src/mesa/drivers/dri/i965/brw_fs.h
src/mesa/drivers/dri/i965/brw_fs_live_variables.cpp
src/mesa/drivers/dri/i965/brw_shader.h
src/mesa/drivers/dri/i965/brw_vec4.h
src/mesa/drivers/dri/i965/brw_vec4_live_variables.cpp

index d0422c3d4130fc5078cf1a3377efaada236f363f..e42b93ad901cf733baa5661ab78e8e1485d71c5d 100644 (file)
@@ -328,7 +328,7 @@ public:
    void move_uniform_array_access_to_pull_constants();
    void assign_constant_locations();
    void demote_pull_constants();
-   void invalidate_live_intervals();
+   void invalidate_live_intervals(bool invalidate_cfg = true);
    void calculate_live_intervals();
    void calculate_register_pressure();
    bool opt_algebraic();
index c964505c414df113114654abd55388809e7ff808..e7ecb0fefdade6470740231d51593130ca459d3e 100644 (file)
@@ -290,12 +290,13 @@ fs_live_variables::~fs_live_variables()
 }
 
 void
-fs_visitor::invalidate_live_intervals()
+fs_visitor::invalidate_live_intervals(bool __invalidate_cfg)
 {
    ralloc_free(live_intervals);
    live_intervals = NULL;
 
-   invalidate_cfg();
+   if (__invalidate_cfg)
+      invalidate_cfg();
 }
 
 /**
index 35a2b9635a3daf62b91e73d6a479e3d31eeb650a..342cdb3d63564719a7338b227edc50a17951e858 100644 (file)
@@ -182,7 +182,7 @@ public:
 
    void assign_common_binding_table_offsets(uint32_t next_binding_table_offset);
 
-   virtual void invalidate_live_intervals() = 0;
+   virtual void invalidate_live_intervals(bool invalidate_cfg = true) = 0;
 };
 
 uint32_t brw_texture_offset(struct gl_context *ctx, ir_constant *offset);
index f0239cb998a3a621efaf2b8456ad6f1965fbcb6d..f8313c1cfce3dcdd7be6ef7d06b82c0ef82593df 100644 (file)
@@ -378,7 +378,7 @@ public:
    void split_uniform_registers();
    void pack_uniform_registers();
    void calculate_live_intervals();
-   void invalidate_live_intervals();
+   void invalidate_live_intervals(bool invalidate_cfg = true);
    void split_virtual_grfs();
    bool opt_reduce_swizzle();
    bool dead_code_eliminate();
index 5bc5d7737decafec30a5b486e106adc6f9e7e02e..7cd1dd65bd3ab336e63870b26dead0d6fa5c7efa 100644 (file)
@@ -268,11 +268,12 @@ vec4_visitor::calculate_live_intervals()
 }
 
 void
-vec4_visitor::invalidate_live_intervals()
+vec4_visitor::invalidate_live_intervals(bool __invalidate_cfg)
 {
    live_intervals_valid = false;
 
-   invalidate_cfg();
+   if (__invalidate_cfg)
+      invalidate_cfg();
 }
 
 bool