ir_to_mesa: Fill in remaining ops, remove default case for expression types.
authorEric Anholt <eric@anholt.net>
Thu, 1 Jul 2010 18:24:38 +0000 (11:24 -0700)
committerEric Anholt <eric@anholt.net>
Thu, 1 Jul 2010 18:24:38 +0000 (11:24 -0700)
We should now have support for all the expression types we need for
GLSL 1.20.

src/mesa/shader/ir_to_mesa.cpp

index dca2b10f23ec97b0e34c98ae3dd48a7955526604..1e186354c588b0121c05b7bb46d28a9b6c3d95d9 100644 (file)
@@ -694,6 +694,9 @@ ir_to_mesa_visitor::visit(ir_expression *ir)
       ir_to_mesa_emit_scalar_op1(ir, OPCODE_RCP, result_dst, op[1]);
       ir_to_mesa_emit_op2(ir, OPCODE_MUL, result_dst, op[0], result_src);
       break;
+   case ir_binop_mod:
+      assert(!"ir_binop_mod should have been converted to b * fract(a/b)");
+      break;
 
    case ir_binop_less:
       ir_to_mesa_emit_op2(ir, OPCODE_SLT, result_dst, op[0], op[1]);
@@ -771,6 +774,7 @@ ir_to_mesa_visitor::visit(ir_expression *ir)
       ir_to_mesa_emit_op1(ir, OPCODE_TRUNC, result_dst, op[0]);
       break;
    case ir_unop_f2b:
+   case ir_unop_i2b:
       ir_to_mesa_emit_op2(ir, OPCODE_SNE, result_dst,
                          result_src, src_reg_for_float(0.0));
       break;
@@ -808,13 +812,6 @@ ir_to_mesa_visitor::visit(ir_expression *ir)
    case ir_binop_bit_or:
       assert(!"GLSL 1.30 features unsupported");
       break;
-
-   default:
-      ir_print_visitor v;
-      printf("Failed to get tree for expression:\n");
-      ir->accept(&v);
-      exit(1);
-      break;
    }
 
    this->result = result_src;