[Mesa-dev] [PATCH 2/8] glsl: tidy up get_num_operands()
Timothy Arceri
tarceri at itsqueeze.com
Wed Aug 9 03:34:03 UTC 2017
Also add a comment that this should only be used by the ir_reader
interface for testing purposes.
v2:
- fix grammar in comment
- use unreachable rather than assert
Reviewed-by: Thomas Helland <thomashelland90 at gmail.com>
---
src/compiler/glsl/ir.cpp | 9 ++++++---
src/compiler/glsl/ir.h | 14 +++-----------
2 files changed, 9 insertions(+), 14 deletions(-)
diff --git a/src/compiler/glsl/ir.cpp b/src/compiler/glsl/ir.cpp
index 51b875058b..98bbd91539 100644
--- a/src/compiler/glsl/ir.cpp
+++ b/src/compiler/glsl/ir.cpp
@@ -549,39 +549,42 @@ ir_expression::ir_expression(int op, ir_rvalue *op0, ir_rvalue *op1,
case ir_triop_csel:
this->type = op1->type;
break;
default:
assert(!"not reached: missing automatic type setup for ir_expression");
this->type = glsl_type::float_type;
}
}
-unsigned int
+/**
+ * This is only here for ir_reader to used for testing purposes. Please use
+ * the precomputed num_operands field if you need the number of operands.
+ */
+unsigned
ir_expression::get_num_operands(ir_expression_operation op)
{
assert(op <= ir_last_opcode);
if (op <= ir_last_unop)
return 1;
if (op <= ir_last_binop)
return 2;
if (op <= ir_last_triop)
return 3;
if (op <= ir_last_quadop)
return 4;
- assert(false);
- return 0;
+ unreachable("Could not calculate number of operands");
}
#include "ir_expression_operation_strings.h"
const char*
depth_layout_string(ir_depth_layout layout)
{
switch(layout) {
case ir_depth_layout_none: return "";
case ir_depth_layout_any: return "depth_any";
diff --git a/src/compiler/glsl/ir.h b/src/compiler/glsl/ir.h
index 58e6356566..d53b44304d 100644
--- a/src/compiler/glsl/ir.h
+++ b/src/compiler/glsl/ir.h
@@ -1531,32 +1531,24 @@ public:
* The "variable_context" hash table links ir_variable * to ir_constant *
* that represent the variables' values. \c NULL represents an empty
* context.
*
* If the expression cannot be constant folded, this method will return
* \c NULL.
*/
virtual ir_constant *constant_expression_value(struct hash_table *variable_context = NULL);
/**
- * Determine the number of operands used by an expression
+ * This is only here for ir_reader to used for testing purposes please use
+ * the precomputed num_operands field if you need the number of operands.
*/
- static unsigned int get_num_operands(ir_expression_operation);
-
- /**
- * Determine the number of operands used by an expression
- */
- unsigned int get_num_operands() const
- {
- return (this->operation == ir_quadop_vector)
- ? this->type->vector_elements : get_num_operands(operation);
- }
+ static unsigned get_num_operands(ir_expression_operation);
/**
* Return whether the expression operates on vectors horizontally.
*/
bool is_horizontal() const
{
return operation == ir_binop_all_equal ||
operation == ir_binop_any_nequal ||
operation == ir_binop_dot ||
operation == ir_binop_vector_extract ||
--
2.13.4
More information about the mesa-dev
mailing list