summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/mesa/drivers/dri/i965/brw_fs_channel_expressions.cpp23
1 files changed, 14 insertions, 9 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_fs_channel_expressions.cpp b/src/mesa/drivers/dri/i965/brw_fs_channel_expressions.cpp
index 7ae7b2ecdf6..3d2e61963d8 100644
--- a/src/mesa/drivers/dri/i965/brw_fs_channel_expressions.cpp
+++ b/src/mesa/drivers/dri/i965/brw_fs_channel_expressions.cpp
@@ -85,6 +85,7 @@ channel_expressions_predicate(ir_instruction *ir)
case ir_unop_interpolate_at_centroid:
case ir_binop_interpolate_at_offset:
case ir_binop_interpolate_at_sample:
+ case ir_unop_pack_double_2x32:
return false;
default:
break;
@@ -177,6 +178,8 @@ ir_channel_expressions_visitor::visit_leave(ir_assignment *ir)
case ir_unop_interpolate_at_centroid:
case ir_binop_interpolate_at_offset:
case ir_binop_interpolate_at_sample:
+ /* We scalarize these in NIR, so no need to do it here */
+ case ir_unop_pack_double_2x32:
return visit_continue;
default:
@@ -235,6 +238,13 @@ ir_channel_expressions_visitor::visit_leave(ir_assignment *ir)
case ir_unop_i2b:
case ir_unop_b2i:
case ir_unop_u2f:
+ case ir_unop_d2f:
+ case ir_unop_f2d:
+ case ir_unop_d2i:
+ case ir_unop_i2d:
+ case ir_unop_d2u:
+ case ir_unop_u2d:
+ case ir_unop_d2b:
case ir_unop_trunc:
case ir_unop_ceil:
case ir_unop_floor:
@@ -414,20 +424,15 @@ ir_channel_expressions_visitor::visit_leave(ir_assignment *ir)
case ir_unop_interpolate_at_centroid:
case ir_binop_interpolate_at_offset:
case ir_binop_interpolate_at_sample:
+ case ir_unop_unpack_double_2x32:
unreachable("not reached: expression operates on scalars only");
case ir_unop_pack_double_2x32:
- case ir_unop_unpack_double_2x32:
+ unreachable("not reached: to be lowered in NIR, should've been skipped");
+
case ir_unop_frexp_sig:
case ir_unop_frexp_exp:
- case ir_unop_d2f:
- case ir_unop_f2d:
- case ir_unop_d2i:
- case ir_unop_i2d:
- case ir_unop_d2u:
- case ir_unop_u2d:
- case ir_unop_d2b:
- unreachable("no fp64 support yet");
+ unreachable("should have been lowered by lower_instructions");
}
ir->remove();