diff options
author | Danylo Piliaiev <[email protected]> | 2020-05-29 16:20:45 +0300 |
---|---|---|
committer | Marge Bot <[email protected]> | 2020-06-03 09:06:25 +0000 |
commit | 9f3956fea080d73d98fc28bc8cd148755b597b74 (patch) | |
tree | e0af22143d3a9ea5ba3e4307ef89d6795ff365fd /src/compiler | |
parent | 3ed2123d77d50ccb984fccdcc1cfa936a18819bf (diff) |
glsl: Don't replace lrp pattern with lrp if arguments are not floats
We don't have "lrp(int, int, int)" and validation of ir_triop_lrp
fails down the road.
Fixes: 8d37e991
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/3059
Signed-off-by: Danylo Piliaiev <[email protected]>
Tested-by: Witold Baryluk <[email protected]>
Reviewed-by: Marek Olšák <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5257>
Diffstat (limited to 'src/compiler')
-rw-r--r-- | src/compiler/glsl/opt_algebraic.cpp | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/src/compiler/glsl/opt_algebraic.cpp b/src/compiler/glsl/opt_algebraic.cpp index 226f6245fca..7cef4fc6ef9 100644 --- a/src/compiler/glsl/opt_algebraic.cpp +++ b/src/compiler/glsl/opt_algebraic.cpp @@ -578,7 +578,8 @@ ir_algebraic_visitor::handle_expression(ir_expression *ir) ir_rvalue *y_operand = inner_add->operands[1 - neg_pos]; ir_rvalue *a_operand = mul->operands[1 - inner_add_pos]; - if (x_operand->type != y_operand->type || + if (!x_operand->type->is_float_16_32_64() || + x_operand->type != y_operand->type || x_operand->type != a_operand->type) continue; |