Browse Source

glsl: Eliminate assumptions about size of ir_expression::operands

This may grow in the near future.
tags/android-x86-2.2
Ian Romanick 15 years ago
parent
commit
fc92e87b97

+ 2
- 1
src/glsl/ir_clone.cpp View File

*/ */


#include <string.h> #include <string.h>
#include "main/compiler.h"
#include "ir.h" #include "ir.h"
#include "glsl_types.h" #include "glsl_types.h"
extern "C" { extern "C" {
ir_expression * ir_expression *
ir_expression::clone(void *mem_ctx, struct hash_table *ht) const ir_expression::clone(void *mem_ctx, struct hash_table *ht) const
{ {
ir_rvalue *op[2] = {NULL, NULL};
ir_rvalue *op[Elements(this->operands)] = { NULL, };
unsigned int i; unsigned int i;


for (i = 0; i < get_num_operands(); i++) { for (i = 0; i < get_num_operands(); i++) {

+ 1
- 1
src/glsl/ir_constant_expression.cpp View File

if (this->type->is_error()) if (this->type->is_error())
return NULL; return NULL;


ir_constant *op[2] = { NULL, NULL };
ir_constant *op[Elements(this->operands)] = { NULL, };
ir_constant_data data; ir_constant_data data;


memset(&data, 0, sizeof(data)); memset(&data, 0, sizeof(data));

+ 3
- 4
src/glsl/ir_print_visitor.cpp View File



printf(" %s ", ir->operator_string()); printf(" %s ", ir->operator_string());


if (ir->operands[0])
ir->operands[0]->accept(this);
for (unsigned i = 0; i < ir->get_num_operands(); i++) {
ir->operands[i]->accept(this);
}


if (ir->operands[1])
ir->operands[1]->accept(this);
printf(") "); printf(") ");
} }



+ 2
- 0
src/glsl/lower_mat_op_to_vec.cpp View File

if (!has_matrix_operand(orig_expr, matrix_columns)) if (!has_matrix_operand(orig_expr, matrix_columns))
return visit_continue; return visit_continue;


assert(orig_expr->get_num_operands() <= 2);

mem_ctx = talloc_parent(orig_assign); mem_ctx = talloc_parent(orig_assign);


ir_dereference_variable *lhs_deref = ir_dereference_variable *lhs_deref =

+ 1
- 0
src/glsl/opt_algebraic.cpp View File

ir_expression *temp; ir_expression *temp;
unsigned int i; unsigned int i;


assert(ir->get_num_operands() <= 2);
for (i = 0; i < ir->get_num_operands(); i++) { for (i = 0; i < ir->get_num_operands(); i++) {
if (ir->operands[i]->type->is_matrix()) if (ir->operands[i]->type->is_matrix())
return ir; return ir;

+ 3
- 0
src/mesa/drivers/dri/i965/brw_fs.cpp View File

fs_reg op[2], temp; fs_reg op[2], temp;
fs_inst *inst; fs_inst *inst;


assert(ir->get_num_operands() <= 2);
for (operand = 0; operand < ir->get_num_operands(); operand++) { for (operand = 0; operand < ir->get_num_operands(); operand++) {
ir->operands[operand]->accept(this); ir->operands[operand]->accept(this);
if (this->result.file == BAD_FILE) { if (this->result.file == BAD_FILE) {
fs_reg op[2]; fs_reg op[2];
fs_inst *inst; fs_inst *inst;


assert(expr->get_num_operands() <= 2);
for (unsigned int i = 0; i < expr->get_num_operands(); i++) { for (unsigned int i = 0; i < expr->get_num_operands(); i++) {
assert(expr->operands[i]->type->is_scalar()); assert(expr->operands[i]->type->is_scalar());


fs_inst *inst; fs_inst *inst;
fs_reg temp; fs_reg temp;


assert(expr->get_num_operands() <= 2);
for (unsigned int i = 0; i < expr->get_num_operands(); i++) { for (unsigned int i = 0; i < expr->get_num_operands(); i++) {
assert(expr->operands[i]->type->is_scalar()); assert(expr->operands[i]->type->is_scalar());



+ 1
- 1
src/mesa/program/ir_to_mesa.cpp View File

ir_to_mesa_visitor::visit(ir_expression *ir) ir_to_mesa_visitor::visit(ir_expression *ir)
{ {
unsigned int operand; unsigned int operand;
struct ir_to_mesa_src_reg op[2];
struct ir_to_mesa_src_reg op[Elements(ir->operands)];
struct ir_to_mesa_src_reg result_src; struct ir_to_mesa_src_reg result_src;
struct ir_to_mesa_dst_reg result_dst; struct ir_to_mesa_dst_reg result_dst;



Loading…
Cancel
Save