s/equal/EQUAL/, fix bugs in logical or/and code.
authorBrian <brian@yutani.localnet.net>
Wed, 7 Mar 2007 18:26:47 +0000 (11:26 -0700)
committerBrian <brian@yutani.localnet.net>
Wed, 7 Mar 2007 18:26:47 +0000 (11:26 -0700)
src/mesa/shader/slang/slang_codegen.c
src/mesa/shader/slang/slang_compile.c
src/mesa/shader/slang/slang_compile_operation.c
src/mesa/shader/slang/slang_compile_operation.h
src/mesa/shader/slang/slang_print.c
src/mesa/shader/slang/slang_typeinfo.c

index 5c2ee3c..d1e3544 100644 (file)
@@ -1650,8 +1650,8 @@ _slang_gen_logical_and(slang_assemble_ctx *A, slang_operation *oper)
    slang_operation_copy(&select->children[0], &oper->children[0]);
    slang_operation_copy(&select->children[1], &oper->children[1]);
    select->children[2].type = SLANG_OPER_LITERAL_BOOL;
-   ASSIGN_4V(select->children[2].literal, 0, 0, 0, 0);
-   select->children[2].literal_size = 2;
+   ASSIGN_4V(select->children[2].literal, 0, 0, 0, 0); /* false */
+   select->children[2].literal_size = 1;
 
    n = _slang_gen_select(A, select);
 
@@ -1680,9 +1680,9 @@ _slang_gen_logical_or(slang_assemble_ctx *A, slang_operation *oper)
 
    slang_operation_copy(&select->children[0], &oper->children[0]);
    select->children[1].type = SLANG_OPER_LITERAL_BOOL;
-   ASSIGN_4V(select->children[2].literal, 1, 1, 1, 1);
+   ASSIGN_4V(select->children[1].literal, 1, 1, 1, 1); /* true */
+   select->children[1].literal_size = 1;
    slang_operation_copy(&select->children[2], &oper->children[1]);
-   select->children[2].literal_size = 2;
 
    n = _slang_gen_select(A, select);
 
@@ -2281,11 +2281,11 @@ _slang_gen_operation(slang_assemble_ctx * A, slang_operation *oper)
       return new_node2(IR_SGT,
                       _slang_gen_operation(A, &oper->children[1]),
                       _slang_gen_operation(A, &oper->children[0]));
-   case SLANG_OPER_GREATERequal:
+   case SLANG_OPER_GREATEREQUAL:
       return new_node2(IR_SGE,
                       _slang_gen_operation(A, &oper->children[0]),
                       _slang_gen_operation(A, &oper->children[1]));
-   case SLANG_OPER_LESSequal:
+   case SLANG_OPER_LESSEQUAL:
       /* child[0] <= child[1]  ---->   child[1] >= child[0] */
       return new_node2(IR_SGE,
                       _slang_gen_operation(A, &oper->children[1]),
index 4609de6..e183752 100644 (file)
@@ -1037,12 +1037,12 @@ parse_expression(slang_parse_ctx * C, slang_output_ctx * O,
             return 0;
          break;
       case OP_LESSEQUAL:
-         op->type = SLANG_OPER_LESSequal;
+         op->type = SLANG_OPER_LESSEQUAL;
          if (!handle_nary_expression(C, op, &ops, &num_ops, 2))
             return 0;
          break;
       case OP_GREATEREQUAL:
-         op->type = SLANG_OPER_GREATERequal;
+         op->type = SLANG_OPER_GREATEREQUAL;
          if (!handle_nary_expression(C, op, &ops, &num_ops, 2))
             return 0;
          break;
index aa66be8..cf82080 100644 (file)
@@ -42,6 +42,7 @@ slang_operation_construct(slang_operation * oper)
    oper->children = NULL;
    oper->num_children = 0;
    oper->literal[0] = 0.0;
+   oper->literal_size = 1;
    oper->a_id = SLANG_ATOM_NULL;
    oper->locals = _slang_variable_scope_new(NULL);
    if (oper->locals == NULL)
@@ -104,6 +105,8 @@ slang_operation_copy(slang_operation * x, const slang_operation * y)
    z.literal[2] = y->literal[2];
    z.literal[3] = y->literal[3];
    z.literal_size = y->literal_size;
+   assert(y->literal_size >= 1);
+   assert(y->literal_size <= 4);
    z.a_id = y->a_id;
    if (y->locals) {
       if (!slang_variable_scope_copy(z.locals, y->locals)) {
index 4adcd2a..02f677f 100644 (file)
@@ -77,8 +77,8 @@ typedef enum slang_operation_type_
    SLANG_OPER_NOTEQUAL,         /* [expr] "!=" [expr] */
    SLANG_OPER_LESS,             /* [expr] "<" [expr] */
    SLANG_OPER_GREATER,          /* [expr] ">" [expr] */
-   SLANG_OPER_LESSequal,        /* [expr] "<=" [expr] */
-   SLANG_OPER_GREATERequal,     /* [expr] ">=" [expr] */
+   SLANG_OPER_LESSEQUAL,        /* [expr] "<=" [expr] */
+   SLANG_OPER_GREATEREQUAL,     /* [expr] ">=" [expr] */
    /*SLANG_OPER_LSHIFT, */
    /*SLANG_OPER_RSHIFT, */
    SLANG_OPER_ADD,              /* [expr] "+" [expr] */
index e53378e..a2f3691 100644 (file)
@@ -499,11 +499,11 @@ slang_print_tree(const slang_operation *op, int indent)
       print_binary(op, ">", indent);
       break;
 
-   case SLANG_OPER_LESSequal:
+   case SLANG_OPER_LESSEQUAL:
       print_binary(op, "<=", indent);
       break;
 
-   case SLANG_OPER_GREATERequal:
+   case SLANG_OPER_GREATEREQUAL:
       print_binary(op, ">=", indent);
       break;
 
index 07ec514..6a358d6 100644 (file)
@@ -392,8 +392,8 @@ _slang_typeof_operation_(const slang_operation * op,
    case SLANG_OPER_NOTEQUAL:
    case SLANG_OPER_LESS:
    case SLANG_OPER_GREATER:
-   case SLANG_OPER_LESSequal:
-   case SLANG_OPER_GREATERequal:
+   case SLANG_OPER_LESSEQUAL:
+   case SLANG_OPER_GREATEREQUAL:
    case SLANG_OPER_NOT:
       ti->spec.type = SLANG_SPEC_BOOL;
       break;