From 5b5a80d011d143f1bbd9be39dc4ca6a0af4bad7c Mon Sep 17 00:00:00 2001 From: Brian Date: Wed, 7 Mar 2007 11:26:47 -0700 Subject: [PATCH] s/equal/EQUAL/, fix bugs in logical or/and code. --- src/mesa/shader/slang/slang_codegen.c | 12 ++++++------ src/mesa/shader/slang/slang_compile.c | 4 ++-- src/mesa/shader/slang/slang_compile_operation.c | 3 +++ src/mesa/shader/slang/slang_compile_operation.h | 4 ++-- src/mesa/shader/slang/slang_print.c | 4 ++-- src/mesa/shader/slang/slang_typeinfo.c | 4 ++-- 6 files changed, 17 insertions(+), 14 deletions(-) diff --git a/src/mesa/shader/slang/slang_codegen.c b/src/mesa/shader/slang/slang_codegen.c index 5c2ee3c4388..d1e3544b545 100644 --- a/src/mesa/shader/slang/slang_codegen.c +++ b/src/mesa/shader/slang/slang_codegen.c @@ -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]), diff --git a/src/mesa/shader/slang/slang_compile.c b/src/mesa/shader/slang/slang_compile.c index 4609de684a0..e1837520253 100644 --- a/src/mesa/shader/slang/slang_compile.c +++ b/src/mesa/shader/slang/slang_compile.c @@ -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; diff --git a/src/mesa/shader/slang/slang_compile_operation.c b/src/mesa/shader/slang/slang_compile_operation.c index aa66be88958..cf820800660 100644 --- a/src/mesa/shader/slang/slang_compile_operation.c +++ b/src/mesa/shader/slang/slang_compile_operation.c @@ -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)) { diff --git a/src/mesa/shader/slang/slang_compile_operation.h b/src/mesa/shader/slang/slang_compile_operation.h index 4adcd2ab0e6..02f677f8139 100644 --- a/src/mesa/shader/slang/slang_compile_operation.h +++ b/src/mesa/shader/slang/slang_compile_operation.h @@ -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] */ diff --git a/src/mesa/shader/slang/slang_print.c b/src/mesa/shader/slang/slang_print.c index e53378e4613..a2f3691ddb1 100644 --- a/src/mesa/shader/slang/slang_print.c +++ b/src/mesa/shader/slang/slang_print.c @@ -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; diff --git a/src/mesa/shader/slang/slang_typeinfo.c b/src/mesa/shader/slang/slang_typeinfo.c index 07ec514c678..6a358d66d89 100644 --- a/src/mesa/shader/slang/slang_typeinfo.c +++ b/src/mesa/shader/slang/slang_typeinfo.c @@ -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; -- 2.30.2