summaryrefslogtreecommitdiff
path: root/lib/mesa/src/compiler/glsl/ir_optimization.h
diff options
context:
space:
mode:
authorJonathan Gray <jsg@cvs.openbsd.org>2017-08-14 09:45:54 +0000
committerJonathan Gray <jsg@cvs.openbsd.org>2017-08-14 09:45:54 +0000
commit4c58069f5013f0a621503525f7d5193bfe9976b3 (patch)
treebd8f8a08b889e9a8b99c9de01ae12459d527ea6d /lib/mesa/src/compiler/glsl/ir_optimization.h
parent5caa025e6b62d0456faad86c89f239a14d1eaadb (diff)
Import Mesa 17.1.6
Diffstat (limited to 'lib/mesa/src/compiler/glsl/ir_optimization.h')
-rw-r--r--lib/mesa/src/compiler/glsl/ir_optimization.h23
1 files changed, 20 insertions, 3 deletions
diff --git a/lib/mesa/src/compiler/glsl/ir_optimization.h b/lib/mesa/src/compiler/glsl/ir_optimization.h
index 95af29544..82cdac9b3 100644
--- a/lib/mesa/src/compiler/glsl/ir_optimization.h
+++ b/lib/mesa/src/compiler/glsl/ir_optimization.h
@@ -21,13 +21,15 @@
* DEALINGS IN THE SOFTWARE.
*/
-
/**
* \file ir_optimization.h
*
* Prototypes for optimization passes to be called by the compiler and drivers.
*/
+#ifndef GLSL_IR_OPTIMIZATION_H
+#define GLSL_IR_OPTIMIZATION_H
+
/* Operations for lower_instructions() */
#define SUB_TO_ADD_NEG 0x01
#define FDIV_TO_MUL_RCP 0x02
@@ -51,6 +53,13 @@
#define IMUL_HIGH_TO_MUL 0x80000
#define DDIV_TO_MUL_RCP 0x100000
#define DIV_TO_MUL_RCP (FDIV_TO_MUL_RCP | DDIV_TO_MUL_RCP)
+#define SQRT_TO_ABS_SQRT 0x200000
+
+/* Opertaions for lower_64bit_integer_instructions() */
+#define MUL64 (1U << 0)
+#define SIGN64 (1U << 1)
+#define DIV64 (1U << 2)
+#define MOD64 (1U << 3)
/**
* \see class lower_packing_builtins_visitor
@@ -110,7 +119,8 @@ bool do_lower_texture_projection(exec_list *instructions);
bool do_if_simplification(exec_list *instructions);
bool opt_flatten_nested_if_blocks(exec_list *instructions);
bool do_discard_simplification(exec_list *instructions);
-bool lower_if_to_cond_assign(exec_list *instructions, unsigned max_depth = 0);
+bool lower_if_to_cond_assign(gl_shader_stage stage, exec_list *instructions,
+ unsigned max_depth = 0, unsigned min_branch_cost = 0);
bool do_mat_op_to_vec(exec_list *instructions);
bool do_minmax_prune(exec_list *instructions);
bool do_noop_swizzle(exec_list *instructions);
@@ -138,7 +148,9 @@ void lower_shared_reference(struct gl_linked_shader *shader,
void lower_ubo_reference(struct gl_linked_shader *shader,
bool clamp_block_indices);
void lower_packed_varyings(void *mem_ctx,
- unsigned locations_used, ir_variable_mode mode,
+ unsigned locations_used,
+ const uint8_t *components,
+ ir_variable_mode mode,
unsigned gs_input_vertices,
gl_linked_shader *shader,
bool disable_varying_packing, bool xfb_enabled);
@@ -161,3 +173,8 @@ void propagate_invariance(exec_list *instructions);
ir_rvalue *
compare_index_block(exec_list *instructions, ir_variable *index,
unsigned base, unsigned components, void *mem_ctx);
+
+bool lower_64bit_integer_instructions(exec_list *instructions,
+ unsigned what_to_lower);
+
+#endif /* GLSL_IR_OPTIMIZATION_H */