From: Ilia Mirkin Date: Wed, 13 Jan 2021 07:14:07 +0000 (-0500) Subject: st/mesa: fix broken moves for u2i64 and related ops X-Git-Tag: upstream/21.2.3~9399 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=55c42b7885701098cff9cc0fd0ffe08b0a90ea8b;p=platform%2Fupstream%2Fmesa.git st/mesa: fix broken moves for u2i64 and related ops These ops just put out mov's directly, which screws up the assignment logic -- it just tries to only process the "last" mov. Don't try to do the more optimized thing for 64-bit types, where this is just much trickier. Signed-off-by: Ilia Mirkin Reviewed-by: Dave Airlie Part-of: --- diff --git a/src/mesa/state_tracker/st_glsl_to_tgsi.cpp b/src/mesa/state_tracker/st_glsl_to_tgsi.cpp index 740fb92..9e9289b 100644 --- a/src/mesa/state_tracker/st_glsl_to_tgsi.cpp +++ b/src/mesa/state_tracker/st_glsl_to_tgsi.cpp @@ -3263,6 +3263,7 @@ glsl_to_tgsi_visitor::visit(ir_assignment *ir) ir->rhs == ((glsl_to_tgsi_instruction *)this->instructions.get_tail())->ir && !((glsl_to_tgsi_instruction *)this->instructions.get_tail())->is_64bit_expanded && type_size(ir->lhs->type) == 1 && + !ir->lhs->type->is_64bit() && l.writemask == ((glsl_to_tgsi_instruction *)this->instructions.get_tail())->dst[0].writemask) { /* To avoid emitting an extra MOV when assigning an expression to a * variable, emit the last instruction of the expression again, but