diff options
author | Dave Airlie <[email protected]> | 2016-06-09 10:08:50 +1000 |
---|---|---|
committer | Ian Romanick <[email protected]> | 2017-01-20 15:41:23 -0800 |
commit | 9ba9a7f854dd702364d0aaa02cb7fbf44aea5888 (patch) | |
tree | c32271590fd23f96b10297212a1c6d9427f60ea2 /src/compiler | |
parent | 25c7a61b28d50a001ed77ca6aafd53220d679fe2 (diff) |
glsl: Add 64-bit integer support to some operations.
This adds 64-bit integer support to some AST and IR operations where
it is needed.
Signed-off-by: Dave Airlie <[email protected]>
Reviewed-by: Ian Romanick <[email protected]>
Diffstat (limited to 'src/compiler')
-rw-r--r-- | src/compiler/glsl/ast_to_hir.cpp | 12 | ||||
-rw-r--r-- | src/compiler/glsl/ir_validate.cpp | 4 |
2 files changed, 8 insertions, 8 deletions
diff --git a/src/compiler/glsl/ast_to_hir.cpp b/src/compiler/glsl/ast_to_hir.cpp index ffb57403f7a..486a0b8f3ee 100644 --- a/src/compiler/glsl/ast_to_hir.cpp +++ b/src/compiler/glsl/ast_to_hir.cpp @@ -533,12 +533,12 @@ bit_logic_result_type(ir_rvalue * &value_a, ir_rvalue * &value_b, * (|). The operands must be of type signed or unsigned integers or * integer vectors." */ - if (!type_a->is_integer()) { + if (!type_a->is_integer_32_64()) { _mesa_glsl_error(loc, state, "LHS of `%s' must be an integer", ast_expression::operator_string(op)); return glsl_type::error_type; } - if (!type_b->is_integer()) { + if (!type_b->is_integer_32_64()) { _mesa_glsl_error(loc, state, "RHS of `%s' must be an integer", ast_expression::operator_string(op)); return glsl_type::error_type; @@ -619,11 +619,11 @@ modulus_result_type(ir_rvalue * &value_a, ir_rvalue * &value_b, * "The operator modulus (%) operates on signed or unsigned integers or * integer vectors." */ - if (!type_a->is_integer()) { + if (!type_a->is_integer_32_64()) { _mesa_glsl_error(loc, state, "LHS of operator %% must be an integer"); return glsl_type::error_type; } - if (!type_b->is_integer()) { + if (!type_b->is_integer_32_64()) { _mesa_glsl_error(loc, state, "RHS of operator %% must be an integer"); return glsl_type::error_type; } @@ -741,7 +741,7 @@ shift_result_type(const struct glsl_type *type_a, * must be signed or unsigned integers or integer vectors. One operand * can be signed while the other is unsigned." */ - if (!type_a->is_integer()) { + if (!type_a->is_integer_32_64()) { _mesa_glsl_error(loc, state, "LHS of operator %s must be an integer or " "integer vector", ast_expression::operator_string(op)); return glsl_type::error_type; @@ -1561,7 +1561,7 @@ ast_expression::do_hir(exec_list *instructions, error_emitted = true; } - if (!op[0]->type->is_integer()) { + if (!op[0]->type->is_integer_32_64()) { _mesa_glsl_error(&loc, state, "operand of `~' must be an integer"); error_emitted = true; } diff --git a/src/compiler/glsl/ir_validate.cpp b/src/compiler/glsl/ir_validate.cpp index 97c695ceb94..4f13754e74e 100644 --- a/src/compiler/glsl/ir_validate.cpp +++ b/src/compiler/glsl/ir_validate.cpp @@ -653,7 +653,7 @@ ir_validate::visit_leave(ir_expression *ir) case ir_binop_lshift: case ir_binop_rshift: - assert(ir->operands[0]->type->is_integer() && + assert(ir->operands[0]->type->is_integer_32_64() && ir->operands[1]->type->is_integer()); if (ir->operands[0]->type->is_scalar()) { assert(ir->operands[1]->type->is_scalar()); @@ -671,7 +671,7 @@ ir_validate::visit_leave(ir_expression *ir) case ir_binop_bit_or: assert(ir->operands[0]->type->base_type == ir->operands[1]->type->base_type); - assert(ir->type->is_integer()); + assert(ir->type->is_integer_32_64()); if (ir->operands[0]->type->is_vector() && ir->operands[1]->type->is_vector()) { assert(ir->operands[0]->type->vector_elements == |