nir: Add bit_count to lower_int64 pass
[mesa.git] / src / intel / compiler / brw_vec4_live_variables.h
index 16eb258d7b4e8175b3bd2808d1c176ac68f0d100..062814329559fe8e2464ad3724eb1d126f914fe8 100644 (file)
 #define BRW_VEC4_LIVE_VARIABLES_H
 
 #include "brw_ir_vec4.h"
+#include "brw_ir_analysis.h"
 #include "util/bitset.h"
 
+struct backend_shader;
+
 namespace brw {
 
 class vec4_live_variables {
@@ -61,20 +64,41 @@ public:
       BITSET_WORD flag_liveout[1];
    };
 
-   DECLARE_RALLOC_CXX_OPERATORS(vec4_live_variables)
-
-   vec4_live_variables(const simple_allocator &alloc, cfg_t *cfg);
+   vec4_live_variables(const backend_shader *s);
    ~vec4_live_variables();
 
+   bool
+   validate(const backend_shader *s) const;
+
+   analysis_dependency_class
+   dependency_class() const
+   {
+      return (DEPENDENCY_INSTRUCTION_IDENTITY |
+              DEPENDENCY_INSTRUCTION_DATA_FLOW |
+              DEPENDENCY_VARIABLES);
+   }
+
    int num_vars;
    int bitset_words;
 
    /** Per-basic-block information on live variables */
    struct block_data *block_data;
 
+   /** @{
+    * Final computed live ranges for each variable.
+    */
+   int *start;
+   int *end;
+   /** @} */
+
+   int var_range_start(unsigned v, unsigned n) const;
+   int var_range_end(unsigned v, unsigned n) const;
+   bool vgrfs_interfere(int a, int b) const;
+
 protected:
    void setup_def_use();
    void compute_live_variables();
+   void compute_start_end();
 
    const simple_allocator &alloc;
    cfg_t *cfg;