#define BRW_SHADER_H
#include <stdint.h>
-#include "brw_ir.h"
+#include "brw_cfg.h"
#include "brw_compiler.h"
#include "compiler/nir/nir.h"
-struct cfg_t;
-
#ifdef __cplusplus
+#include "brw_ir_analysis.h"
#include "brw_ir_allocator.h"
enum instruction_scheduler_mode {
exec_list instructions;
cfg_t *cfg;
+ BRW_ANALYSIS(idom_analysis, brw::idom_tree,
+ const backend_shader *) idom_analysis;
gl_shader_stage stage;
bool debug_enabled;
brw::simple_allocator alloc;
- virtual void dump_instruction(backend_instruction *inst) = 0;
- virtual void dump_instruction(backend_instruction *inst, FILE *file) = 0;
- virtual void dump_instructions();
- virtual void dump_instructions(const char *name);
+ virtual void dump_instruction(const backend_instruction *inst) const = 0;
+ virtual void dump_instruction(const backend_instruction *inst, FILE *file) const = 0;
+ virtual void dump_instructions() const;
+ virtual void dump_instructions(const char *name) const;
void calculate_cfg();
- virtual void invalidate_live_intervals() = 0;
+ virtual void invalidate_analysis(brw::analysis_dependency_class c);
};
bool brw_texture_offset(const nir_tex_instr *tex, unsigned src,