I couldn't find any other callers which have a DW operand in a mul. Signed-off-by: Ben Widawsky <b...@bwidawsk.net>
--- It would be good if someone else can take a look --- src/mesa/drivers/dri/i965/brw_fs_visitor.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp b/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp index 29117d6..67675e5 100644 --- a/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp +++ b/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp @@ -275,7 +275,8 @@ fs_visitor::visit(ir_dereference_array *ir) fs_reg index_reg; index_reg = fs_reg(this, glsl_type::int_type); - emit(BRW_OPCODE_MUL, index_reg, this->result, fs_reg(element_size)); + assert(element_size <= USHRT_MAX); + emit_mul_dw(index_reg, this->result, fs_reg(element_size), false, true); if (src.reladdr) { emit(BRW_OPCODE_ADD, index_reg, *src.reladdr, index_reg); @@ -2805,7 +2806,8 @@ fs_visitor::visit_atomic_counter_intrinsic(ir_call *ir) deref_array->array_index->accept(this); fs_reg tmp(this, glsl_type::uint_type); - emit(MUL(tmp, this->result, fs_reg(ATOMIC_COUNTER_SIZE))); + STATIC_ASSERT(ATOMIC_COUNTER_SIZE <= USHRT_MAX); + emit_mul_dw(tmp, this->result, fs_reg(ATOMIC_COUNTER_SIZE), false, true); emit(ADD(offset, tmp, fs_reg(location->data.atomic.offset))); } else { offset = fs_reg(location->data.atomic.offset); -- 2.2.1 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev