diff options
| -rw-r--r-- | ir_to_mesa.cpp | 12 | ||||
| -rw-r--r-- | mesa_codegen.brg | 32 | 
2 files changed, 44 insertions, 0 deletions
| diff --git a/ir_to_mesa.cpp b/ir_to_mesa.cpp index bc9ad252d0..3fed157779 100644 --- a/ir_to_mesa.cpp +++ b/ir_to_mesa.cpp @@ -319,6 +319,18 @@ ir_to_mesa_visitor::visit(ir_expression *ir)     this->result = NULL;     switch (ir->operation) { +   case ir_unop_exp: +      this->result = this->create_tree(MB_TERM_exp_vec4, ir, op[0], NULL); +      break; +   case ir_unop_exp2: +      this->result = this->create_tree(MB_TERM_exp2_vec4, ir, op[0], NULL); +      break; +   case ir_unop_log: +      this->result = this->create_tree(MB_TERM_log_vec4, ir, op[0], NULL); +      break; +   case ir_unop_log2: +      this->result = this->create_tree(MB_TERM_log2_vec4, ir, op[0], NULL); +      break;     case ir_binop_add:        this->result = this->create_tree(MB_TERM_add_vec4_vec4, ir, op[0], op[1]);        break; diff --git a/mesa_codegen.brg b/mesa_codegen.brg index 0bfd8dae90..ed9afdc57c 100644 --- a/mesa_codegen.brg +++ b/mesa_codegen.brg @@ -48,6 +48,10 @@  # generate in its trees.  %term assign  %term reference_vec4 +%term exp_vec4 +%term exp2_vec4 +%term log_vec4 +%term log2_vec4  %term add_vec4_vec4  %term sub_vec4_vec4  %term mul_vec4_vec4 @@ -205,4 +209,32 @@ vec4: sqrt_vec4(vec4) 1  			    tree->src_reg);  } +vec4: exp_vec4(vec4) 1 +{ +	ir_to_mesa_emit_scalar_op1(tree, OPCODE_EXP, +				   tree->dst_reg, +				   tree->left->src_reg); +} + +vec4: exp2_vec4(vec4) 1 +{ +	ir_to_mesa_emit_scalar_op1(tree, OPCODE_EX2, +				   tree->dst_reg, +				   tree->left->src_reg); +} + +vec4: log_vec4(vec4) 1 +{ +	ir_to_mesa_emit_scalar_op1(tree, OPCODE_LOG, +				   tree->dst_reg, +				   tree->left->src_reg); +} + +vec4: log2_vec4(vec4) 1 +{ +	ir_to_mesa_emit_scalar_op1(tree, OPCODE_LG2, +				   tree->dst_reg, +				   tree->left->src_reg); +} +  %% | 
