From 4956c6bfc57b28de5c844ed35cc88ea555d43b0f 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: (cherry picked from commit 55c42b7885701098cff9cc0fd0ffe08b0a90ea8b) --- .pick_status.json | 2 +- src/mesa/state_tracker/st_glsl_to_tgsi.cpp | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.pick_status.json b/.pick_status.json index 4869fb7a562..370dd24bfc0 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -1822,7 +1822,7 @@ "description": "st/mesa: fix broken moves for u2i64 and related ops", "nominated": false, "nomination_type": null, - "resolution": 4, + "resolution": 1, "master_sha": null, "because_sha": null }, diff --git a/src/mesa/state_tracker/st_glsl_to_tgsi.cpp b/src/mesa/state_tracker/st_glsl_to_tgsi.cpp index 740fb927f47..9e9289b41cb 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