diff options
author | Kenneth Graunke <kenneth@whitecape.org> | 2016-01-07 15:54:16 -0800 |
---|---|---|
committer | Matt Turner <mattst88@gmail.com> | 2016-01-13 10:35:12 -0800 |
commit | b85a229e1f542426b1c8000569d89cd4768b9339 (patch) | |
tree | a770a5444309a93cc7e574f95935e7a5a62016c9 /src/mesa/drivers/dri/i965/brw_fs_channel_expressions.cpp | |
parent | 92f177386954caced2e7ddca156917cf166f9c23 (diff) | |
download | external_mesa3d-b85a229e1f542426b1c8000569d89cd4768b9339.zip external_mesa3d-b85a229e1f542426b1c8000569d89cd4768b9339.tar.gz external_mesa3d-b85a229e1f542426b1c8000569d89cd4768b9339.tar.bz2 |
glsl: Delete the ir_binop_bfm and ir_triop_bfi opcodes.
TGSI doesn't use these - it just translates ir_quadop_bitfield_insert
directly. NIR can handle ir_quadop_bitfield_insert as well.
These opcodes were only used for i965, and with Jason's recent patches,
we can do this lowering in NIR (which also gains us SPIR-V handling).
So there's not much point to retaining this GLSL IR lowering code.
Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Matt Turner <mattst88@gmail.com>
Reviewed-by: Iago Toral Quiroga <itoral@igalia.com>
Diffstat (limited to 'src/mesa/drivers/dri/i965/brw_fs_channel_expressions.cpp')
-rw-r--r-- | src/mesa/drivers/dri/i965/brw_fs_channel_expressions.cpp | 30 |
1 files changed, 7 insertions, 23 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 78a8240..21f0b70 100644 --- a/src/mesa/drivers/dri/i965/brw_fs_channel_expressions.cpp +++ b/src/mesa/drivers/dri/i965/brw_fs_channel_expressions.cpp @@ -143,7 +143,7 @@ ir_channel_expressions_visitor::visit_leave(ir_assignment *ir) ir_expression *expr = ir->rhs->as_expression(); bool found_vector = false; unsigned int i, vector_elements = 1; - ir_variable *op_var[3]; + ir_variable *op_var[4]; if (!expr) return visit_continue; @@ -345,20 +345,6 @@ ir_channel_expressions_visitor::visit_leave(ir_assignment *ir) case ir_unop_noise: unreachable("noise should have been broken down to function call"); - case ir_binop_bfm: { - /* Does not need to be scalarized, since its result will be identical - * for all channels. - */ - ir_rvalue *op0 = get_element(op_var[0], 0); - ir_rvalue *op1 = get_element(op_var[1], 0); - - assign(ir, 0, new(mem_ctx) ir_expression(expr->operation, - element_type, - op0, - op1)); - break; - } - case ir_binop_ubo_load: case ir_unop_get_buffer_size: unreachable("not yet supported"); @@ -380,22 +366,21 @@ ir_channel_expressions_visitor::visit_leave(ir_assignment *ir) } break; - case ir_triop_bfi: { - /* Only a single BFM is needed for multiple BFIs. */ - ir_rvalue *op0 = get_element(op_var[0], 0); - + case ir_quadop_bitfield_insert: for (i = 0; i < vector_elements; i++) { + ir_rvalue *op0 = get_element(op_var[0], i); ir_rvalue *op1 = get_element(op_var[1], i); ir_rvalue *op2 = get_element(op_var[2], i); + ir_rvalue *op3 = get_element(op_var[3], i); assign(ir, i, new(mem_ctx) ir_expression(expr->operation, element_type, - op0->clone(mem_ctx, NULL), + op0, op1, - op2)); + op2, + op3)); } break; - } case ir_unop_pack_snorm_2x16: case ir_unop_pack_snorm_4x8: @@ -410,7 +395,6 @@ ir_channel_expressions_visitor::visit_leave(ir_assignment *ir) case ir_binop_ldexp: case ir_binop_vector_extract: case ir_triop_vector_insert: - case ir_quadop_bitfield_insert: case ir_quadop_vector: case ir_unop_ssbo_unsized_array_length: unreachable("should have been lowered"); |