ir_to_mesa: Add sin/cos.
authorEric Anholt <eric@anholt.net>
Wed, 19 May 2010 22:50:02 +0000 (15:50 -0700)
committerEric Anholt <eric@anholt.net>
Thu, 24 Jun 2010 22:05:20 +0000 (15:05 -0700)
ir_to_mesa.cpp
mesa_codegen.brg

index 67c79b6..205e2fc 100644 (file)
@@ -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;
index a0ab7c8..fc59a83 100644 (file)
@@ -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); }