summaryrefslogtreecommitdiffstats
path: root/src/compiler
diff options
context:
space:
mode:
authorConnor Abbott <[email protected]>2016-09-02 19:06:52 -0400
committerConnor Abbott <[email protected]>2016-09-03 00:37:48 -0400
commit0dc4cabee213135aa25bef9062366f251838dc16 (patch)
treed2b7a55d0b85a4d330a531532d060ded48e3214a /src/compiler
parent64a69059ce2a506fd9d230a2494485cf8e13f163 (diff)
nir: add nir_after_phis() cursor helper
And re-implement nir_after_cf_node_and_phis() using it. Reviewed-by: Kenneth Graunke <[email protected]> Reviewed-by: Jason Ekstrand <[email protected]>
Diffstat (limited to 'src/compiler')
-rw-r--r--src/compiler/nir/nir.h19
1 files changed, 14 insertions, 5 deletions
diff --git a/src/compiler/nir/nir.h b/src/compiler/nir/nir.h
index d0dfb0d04b3..6852551cc45 100644
--- a/src/compiler/nir/nir.h
+++ b/src/compiler/nir/nir.h
@@ -1758,6 +1758,9 @@ typedef struct nir_shader_compiler_options {
* information must be inferred from the list of input nir_variables.
*/
bool use_interpolated_input_intrinsics;
+
+ bool lower_b2dx;
+ bool lower_b2i;
} nir_shader_compiler_options;
typedef struct nir_shader_info {
@@ -2108,6 +2111,16 @@ nir_after_cf_node(nir_cf_node *node)
}
static inline nir_cursor
+nir_after_phis(nir_block *block)
+{
+ nir_foreach_instr(instr, block) {
+ if (instr->type != nir_instr_type_phi)
+ return nir_before_instr(instr);
+ }
+ return nir_after_block(block);
+}
+
+static inline nir_cursor
nir_after_cf_node_and_phis(nir_cf_node *node)
{
if (node->type == nir_cf_node_block)
@@ -2116,11 +2129,7 @@ nir_after_cf_node_and_phis(nir_cf_node *node)
nir_block *block = nir_cf_node_as_block(nir_cf_node_next(node));
assert(block->cf_node.type == nir_cf_node_block);
- nir_foreach_instr(instr, block) {
- if (instr->type != nir_instr_type_phi)
- return nir_before_instr(instr);
- }
- return nir_after_block(block);
+ return nir_after_phis(block);
}
static inline nir_cursor