From: Danylo Piliaiev Date: Fri, 29 May 2020 13:20:45 +0000 (+0300) Subject: glsl: Don't replace lrp pattern with lrp if arguments are not floats X-Git-Url: https://git.libre-soc.org/?p=mesa.git;a=commitdiff_plain;h=9f3956fea080d73d98fc28bc8cd148755b597b74 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 Tested-by: Witold Baryluk Reviewed-by: Marek Olšák Part-of: --- 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;