diff options
-rw-r--r-- | src/mesa/drivers/dri/i965/brw_fs_channel_expressions.cpp | 23 |
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(); |