*/
#include "brw_fs.h"
-#include "main/bitset.h"
+#include "util/bitset.h"
-class cfg_t;
+struct cfg_t;
namespace brw {
/** Which defs reach the exit point of the block. */
BITSET_WORD *liveout;
+
+ BITSET_WORD flag_def[1];
+ BITSET_WORD flag_use[1];
+ BITSET_WORD flag_livein[1];
+ BITSET_WORD flag_liveout[1];
};
class fs_live_variables {
public:
DECLARE_RALLOC_CXX_OPERATORS(fs_live_variables)
- fs_live_variables(fs_visitor *v, cfg_t *cfg);
+ fs_live_variables(fs_visitor *v, const cfg_t *cfg);
~fs_live_variables();
bool vars_interfere(int a, int b);
- int var_from_reg(fs_reg *reg);
+ int var_from_reg(const fs_reg ®) const
+ {
+ return var_from_vgrf[reg.nr] + reg.reg_offset;
+ }
/** 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
+ * For alloc.sizes of [1, 2, 3], vgrf_from_var would contain
* [0, 1, 1, 2, 2, 2].
*/
int *vgrf_from_var;
/** @} */
/** Per-basic-block information on live variables */
- struct block_data *bd;
+ struct block_data *block_data;
protected:
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 setup_one_read(struct block_data *bd, fs_inst *inst, int ip,
+ const fs_reg ®);
+ void setup_one_write(struct block_data *bd, fs_inst *inst, int ip,
+ const fs_reg ®);
void compute_live_variables();
void compute_start_end();
fs_visitor *v;
- cfg_t *cfg;
+ const cfg_t *cfg;
void *mem_ctx;
};