RCF_PREALLOC = (1 << 4)
};
+enum dce_flags {
+ DF_REMOVE_DEAD = (1 << 0),
+ DF_REMOVE_UNUSED = (1 << 1),
+ DF_EXPAND = (1 << 2),
+};
+
+inline dce_flags operator |(dce_flags l, dce_flags r) {
+ return (dce_flags)((unsigned)l|(unsigned)r);
+}
+
inline chunk_flags operator |(chunk_flags l, chunk_flags r) {
return (chunk_flags)((unsigned)l|(unsigned)r);
}
class ra_constraint {
public:
- ra_constraint(constraint_kind kind) : kind(kind) {}
+ ra_constraint(constraint_kind kind) : kind(kind), cost(0) {}
constraint_kind kind;
vvec values;
error_map errors;
- bool enable_dump;
bool optimized;
unsigned id;
bool has_alu_predication;
bool uses_gradients;
+ bool safe_math;
+
unsigned ngpr, nstack;
- shader(sb_context &sctx, shader_target t, unsigned id, bool dump);
+ unsigned dce_flags;
+
+ shader(sb_context &sctx, shader_target t, unsigned id);
~shader();
value* get_special_ro_value(unsigned sel);
- value* get_kcache_value(unsigned bank, unsigned index, unsigned chan);
+ value* get_kcache_value(unsigned bank, unsigned index, unsigned chan, alu_kcache_index_mode index_mode);
value* get_value_version(value* v, unsigned ver);
void init();
- void add_gpr_values(vvec& vec, unsigned gpr, unsigned comp_mask, bool src);
+ void add_pinned_gpr_values(vvec& vec, unsigned gpr, unsigned comp_mask, bool src);
void dump_ir();
alu_node* create_mov(value* dst, value* src);
alu_node* create_copy_mov(value *dst, value *src, unsigned affcost = 1);
- const char * get_hw_class_name();
- const char * get_hw_chip_name();
const char * get_shader_target_name();
std::string get_full_target_name();