projects
/
mesa.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
glsl: Don't replace lrp pattern with lrp if arguments are not floats
[mesa.git]
/
src
/
compiler
/
glsl
/
opt_algebraic.cpp
diff --git
a/src/compiler/glsl/opt_algebraic.cpp
b/src/compiler/glsl/opt_algebraic.cpp
index 3147d25aea86a2a18bf566a630a2b9213ad86f42..7cef4fc6ef934f12b306a64d129ddc97f48ae386 100644
(file)
--- 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];
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;
x_operand->type != a_operand->type)
continue;
@@
-983,6
+984,9
@@
ir_algebraic_visitor::handle_expression(ir_expression *ir)
ir_constant *one;
switch (ir->type->base_type) {
ir_constant *one;
switch (ir->type->base_type) {
+ case GLSL_TYPE_FLOAT16:
+ one = new(mem_ctx) ir_constant(float16_t::one(), op2_components);
+ break;
case GLSL_TYPE_FLOAT:
one = new(mem_ctx) ir_constant(1.0f, op2_components);
break;
case GLSL_TYPE_FLOAT:
one = new(mem_ctx) ir_constant(1.0f, op2_components);
break;