From 55c42b7885701098cff9cc0fd0ffe08b0a90ea8b Mon Sep 17 00:00:00 2001 From: Ilia Mirkin Date: Wed, 13 Jan 2021 02:14:07 -0500 Subject: [PATCH] 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: --- src/mesa/state_tracker/st_glsl_to_tgsi.cpp | 1 + 1 file changed, 1 insertion(+) 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 -- 2.7.4