glsl: Just access the ir_expression_operation strings table directly
The operator_string functions gave us some protection against a malformed table. Now that the table is generated from the same data that generates the enum, this is not a concern. Just cut out the middle man. text data bss dec hex filename 7531892 273992 28584 7834468 778b64 i965_dri-64bit-before.so 7531828 273992 28584 7834404 778b24 i965_dri-64bit-after.so Signed-off-by: Ian Romanick <ian.d.romanick@intel.com> Reviewed-by: Matt Turner <mattst88@gmail.com>
This commit is contained in:
@@ -500,18 +500,6 @@ ir_expression::get_num_operands(ir_expression_operation op)
|
|||||||
|
|
||||||
#include "ir_expression_operation_strings.h"
|
#include "ir_expression_operation_strings.h"
|
||||||
|
|
||||||
const char *ir_expression::operator_string(ir_expression_operation op)
|
|
||||||
{
|
|
||||||
assert((unsigned int) op < ARRAY_SIZE(operator_strs));
|
|
||||||
assert(ARRAY_SIZE(operator_strs) == (ir_quadop_vector + 1));
|
|
||||||
return operator_strs[op];
|
|
||||||
}
|
|
||||||
|
|
||||||
const char *ir_expression::operator_string()
|
|
||||||
{
|
|
||||||
return operator_string(this->operation);
|
|
||||||
}
|
|
||||||
|
|
||||||
const char*
|
const char*
|
||||||
depth_layout_string(ir_depth_layout layout)
|
depth_layout_string(ir_depth_layout layout)
|
||||||
{
|
{
|
||||||
@@ -531,9 +519,8 @@ depth_layout_string(ir_depth_layout layout)
|
|||||||
ir_expression_operation
|
ir_expression_operation
|
||||||
ir_expression::get_operator(const char *str)
|
ir_expression::get_operator(const char *str)
|
||||||
{
|
{
|
||||||
const int operator_count = sizeof(operator_strs) / sizeof(operator_strs[0]);
|
for (int op = 0; op <= int(ir_last_opcode); op++) {
|
||||||
for (int op = 0; op < operator_count; op++) {
|
if (strcmp(str, ir_expression_operation_strings[op]) == 0)
|
||||||
if (strcmp(str, operator_strs[op]) == 0)
|
|
||||||
return (ir_expression_operation) op;
|
return (ir_expression_operation) op;
|
||||||
}
|
}
|
||||||
return (ir_expression_operation) -1;
|
return (ir_expression_operation) -1;
|
||||||
|
@@ -1363,6 +1363,8 @@ public:
|
|||||||
|
|
||||||
#include "ir_expression_operation.h"
|
#include "ir_expression_operation.h"
|
||||||
|
|
||||||
|
extern const char *const ir_expression_operation_strings[ir_last_opcode + 1];
|
||||||
|
|
||||||
class ir_expression : public ir_rvalue {
|
class ir_expression : public ir_rvalue {
|
||||||
public:
|
public:
|
||||||
ir_expression(int op, const struct glsl_type *type,
|
ir_expression(int op, const struct glsl_type *type,
|
||||||
@@ -1429,17 +1431,6 @@ public:
|
|||||||
operation == ir_quadop_vector;
|
operation == ir_quadop_vector;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Return a string representing this expression's operator.
|
|
||||||
*/
|
|
||||||
const char *operator_string();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Return a string representing this expression's operator.
|
|
||||||
*/
|
|
||||||
static const char *operator_string(ir_expression_operation);
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Do a reverse-lookup to translate the given string into an operator.
|
* Do a reverse-lookup to translate the given string into an operator.
|
||||||
*/
|
*/
|
||||||
|
@@ -365,7 +365,7 @@ ${item}
|
|||||||
};""")
|
};""")
|
||||||
|
|
||||||
strings_template = mako.template.Template(copyright + """
|
strings_template = mako.template.Template(copyright + """
|
||||||
static const char *const operator_strs[] = {
|
const char *const ir_expression_operation_strings[] = {
|
||||||
% for item in values:
|
% for item in values:
|
||||||
% if not isinstance(item, str):
|
% if not isinstance(item, str):
|
||||||
"${item[2] if item[2] is not None else item[0]}",
|
"${item[2] if item[2] is not None else item[0]}",
|
||||||
|
@@ -255,7 +255,7 @@ void ir_print_visitor::visit(ir_expression *ir)
|
|||||||
|
|
||||||
print_type(f, ir->type);
|
print_type(f, ir->type);
|
||||||
|
|
||||||
fprintf(f, " %s ", ir->operator_string());
|
fprintf(f, " %s ", ir_expression_operation_strings[ir->operation]);
|
||||||
|
|
||||||
for (unsigned i = 0; i < ir->get_num_operands(); i++) {
|
for (unsigned i = 0; i < ir->get_num_operands(); i++) {
|
||||||
ir->operands[i]->accept(this);
|
ir->operands[i]->accept(this);
|
||||||
|
@@ -428,7 +428,7 @@ ir_mat_op_to_vec_visitor::visit_leave(ir_assignment *orig_assign)
|
|||||||
|
|
||||||
default:
|
default:
|
||||||
printf("FINISHME: Handle matrix operation for %s\n",
|
printf("FINISHME: Handle matrix operation for %s\n",
|
||||||
orig_expr->operator_string());
|
ir_expression_operation_strings[orig_expr->operation]);
|
||||||
abort();
|
abort();
|
||||||
}
|
}
|
||||||
orig_assign->remove();
|
orig_assign->remove();
|
||||||
|
Reference in New Issue
Block a user