From 0be49642f0c2a2d707f91e00004fd2ccbe4456ce Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Mon, 22 Nov 2010 13:24:04 -0500 Subject: [PATCH] Fixed some AST operations to be integer-only. --- mojoshader_compiler.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/mojoshader_compiler.c b/mojoshader_compiler.c index 0cc239b0..93cb7c0c 100644 --- a/mojoshader_compiler.c +++ b/mojoshader_compiler.c @@ -1504,11 +1504,8 @@ datatype = "!!! FIXME"; case MOJOSHADER_AST_OP_MULTIPLY: case MOJOSHADER_AST_OP_DIVIDE: - case MOJOSHADER_AST_OP_MODULO: case MOJOSHADER_AST_OP_ADD: case MOJOSHADER_AST_OP_SUBTRACT: - case MOJOSHADER_AST_OP_LSHIFT: - case MOJOSHADER_AST_OP_RSHIFT: datatype = type_check_ast(ctx, ast->binary.left); datatype2 = type_check_ast(ctx, ast->binary.right); require_numeric_datatype(ctx, datatype); @@ -1516,6 +1513,16 @@ datatype = "!!! FIXME"; return add_type_coercion(ctx, &ast->binary.left, datatype, &ast->binary.right, datatype2); + case MOJOSHADER_AST_OP_LSHIFT: + case MOJOSHADER_AST_OP_RSHIFT: + case MOJOSHADER_AST_OP_MODULO: + datatype = type_check_ast(ctx, ast->binary.left); + datatype2 = type_check_ast(ctx, ast->binary.right); + require_integer_datatype(ctx, datatype); + require_integer_datatype(ctx, datatype2); + return add_type_coercion(ctx, &ast->binary.left, datatype, + &ast->binary.right, datatype2); + case MOJOSHADER_AST_OP_LESSTHAN: case MOJOSHADER_AST_OP_GREATERTHAN: case MOJOSHADER_AST_OP_LESSTHANOREQUAL: