aboutsummaryrefslogtreecommitdiffstats
path: root/src/compiler
diff options
context:
space:
mode:
authorDanylo Piliaiev <[email protected]>2020-05-29 16:20:45 +0300
committerMarge Bot <[email protected]>2020-06-03 09:06:25 +0000
commit9f3956fea080d73d98fc28bc8cd148755b597b74 (patch)
treee0af22143d3a9ea5ba3e4307ef89d6795ff365fd /src/compiler
parent3ed2123d77d50ccb984fccdcc1cfa936a18819bf (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.cpp3
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;