diff options
-rw-r--r-- | ir_to_mesa.cpp | 6 | ||||
-rw-r--r-- | mesa_codegen.brg | 16 |
2 files changed, 22 insertions, 0 deletions
diff --git a/ir_to_mesa.cpp b/ir_to_mesa.cpp index 67c79b66ee..205e2fc8c9 100644 --- a/ir_to_mesa.cpp +++ b/ir_to_mesa.cpp @@ -430,6 +430,12 @@ ir_to_mesa_visitor::visit(ir_expression *ir) case ir_unop_log2: this->result = this->create_tree(MB_TERM_log2_vec4, ir, op[0], NULL); break; + case ir_unop_sin: + this->result = this->create_tree(MB_TERM_sin_vec4, ir, op[0], NULL); + break; + case ir_unop_cos: + this->result = this->create_tree(MB_TERM_cos_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 a0ab7c8630..fc59a834f0 100644 --- a/mesa_codegen.brg +++ b/mesa_codegen.brg @@ -53,6 +53,8 @@ %term exp2_vec4 %term log_vec4 %term log2_vec4 +%term sin_vec4 +%term cos_vec4 %term add_vec4_vec4 %term sub_vec4_vec4 %term mul_vec4_vec4 @@ -157,6 +159,20 @@ vec4: swizzle_vec4(vec4) 1 reg); } +vec4: sin_vec4(vec4) 1 +{ + ir_to_mesa_emit_scalar_op1(tree, OPCODE_SIN, + tree->dst_reg, + tree->left->src_reg); +} + +vec4: cos_vec4(vec4) 1 +{ + ir_to_mesa_emit_scalar_op1(tree, OPCODE_COS, + tree->dst_reg, + tree->left->src_reg); +} + vec4: add_vec4_vec4(vec4, vec4) 1 { ir_to_mesa_emit_op2(tree, OPCODE_ADD); } vec4: sub_vec4_vec4(vec4, vec4) 1 { ir_to_mesa_emit_op2(tree, OPCODE_SUB); } vec4: mul_vec4_vec4(vec4, vec4) 1 { ir_to_mesa_emit_op2(tree, OPCODE_MUL); } |