On 04/20/2013 12:40 PM, Fabian Bieler wrote: > Do not propagate a copy if source and destination are identical. > > Otherwise code like > > MOV TEMP[0].xyzw, TEMP[0].wzyx > mov TEMP[1].xyzw, TEMP[0].xyzw > > is changed to > > MOV TEMP[0].xyzw, TEMP[0].wzyx > mov TEMP[1].xyzw, TEMP[0].wzyx > --- > src/mesa/state_tracker/st_glsl_to_tgsi.cpp | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/src/mesa/state_tracker/st_glsl_to_tgsi.cpp > b/src/mesa/state_tracker/st_glsl_to_tgsi.cpp > index f2eb3e7..b5d0534 100644 > --- a/src/mesa/state_tracker/st_glsl_to_tgsi.cpp > +++ b/src/mesa/state_tracker/st_glsl_to_tgsi.cpp > @@ -3544,6 +3544,8 @@ glsl_to_tgsi_visitor::copy_propagate(void) > /* If this is a copy, add it to the ACP. */ > if (inst->op == TGSI_OPCODE_MOV && > inst->dst.file == PROGRAM_TEMPORARY && > + !(inst->dst.file == inst->src[0].file && > + inst->dst.index == inst->src[0].index) && > !inst->dst.reladdr && > !inst->saturate && > !inst->src[0].reladdr &&
Nice catch. FYI, it seems that the almost identical copy_progagate function in ir_to_mesa also needs this fix. Bryan _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev