ir_to_mesa: Add codegen for rsq expression operation.
authorEric Anholt <eric@anholt.net>
Thu, 6 May 2010 21:52:16 +0000 (14:52 -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 3fed1577796edcfb8d0a4322bada09977fb4c78c..b28747e6a263e0a20977ed217c5d55f5e459eadb 100644 (file)
@@ -361,6 +361,9 @@ ir_to_mesa_visitor::visit(ir_expression *ir)
    case ir_unop_sqrt:
       this->result = this->create_tree(MB_TERM_sqrt_vec4, ir, op[0], op[1]);
       break;
+   case ir_unop_rsq:
+      this->result = this->create_tree(MB_TERM_rsq_vec4, ir, op[0], op[1]);
+      break;
    case ir_unop_i2f:
       /* Mesa IR lacks types, ints are stored as floats. */
       this->result = op[0];
index ed9afdc57cd3082100b47709e9c2d069a6bfd0b4..e8d499fd74ecb771e10860c21b81c5abb0227005 100644 (file)
@@ -60,6 +60,7 @@
 %term dp3_vec4_vec4
 %term dp2_vec4_vec4
 %term sqrt_vec4
+%term rsq_vec4
 %term swizzle_vec4
 
 # Each tree will produce stmt.  Currently, the only production for
@@ -209,6 +210,13 @@ vec4: sqrt_vec4(vec4) 1
                            tree->src_reg);
 }
 
+vec4: rsq_vec4(vec4) 1
+{
+       ir_to_mesa_emit_scalar_op1(tree, OPCODE_RSQ,
+                                  tree->dst_reg,
+                                  tree->left->src_reg);
+}
+
 vec4: exp_vec4(vec4) 1
 {
        ir_to_mesa_emit_scalar_op1(tree, OPCODE_EXP,