#include "brw_fs.h"
#include "main/bitset.h"
+class cfg_t;
+
namespace brw {
struct block_data {
~fs_live_variables();
void setup_def_use();
+ void setup_one_read(bblock_t *block, fs_inst *inst, int ip, fs_reg reg);
+ void setup_one_write(bblock_t *block, fs_inst *inst, int ip, fs_reg reg);
void compute_live_variables();
+ void compute_start_end();
+
+ bool vars_interfere(int a, int b);
+ int var_from_reg(fs_reg *reg);
fs_visitor *v;
cfg_t *cfg;
void *mem_ctx;
+ /** Map from virtual GRF number to index in block_data arrays. */
+ int *var_from_vgrf;
+
+ /**
+ * Map from any index in block_data to the virtual GRF containing it.
+ *
+ * For virtual_grf_sizes of [1, 2, 3], vgrf_from_var would contain
+ * [0, 1, 1, 2, 2, 2].
+ */
+ int *vgrf_from_var;
+
int num_vars;
+ int num_vgrfs;
int bitset_words;
+ /** @{
+ * Final computed live ranges for each var (each component of each virtual
+ * GRF).
+ */
+ int *start;
+ int *end;
+ /** @} */
+
/** Per-basic-block information on live variables */
struct block_data *bd;
};