[Mesa-dev] [PATCH] st/mesa: kill instruction if writemask=0 in eliminate_dead_code_advanced()
Bryan Cain
bryancain3 at gmail.com
Sun Oct 9 11:51:59 PDT 2011
What does it do if there's no destination register? In any case, I
don't think glsl_to_tgsi emits any ARLs of that form, so it shouldn't be
a problem.
Bryan
On 10/07/2011 01:06 PM, Marek Olšák wrote:
> I think ARL is allowed to have no destination register, right? In that
> case, there should be a special case not to eliminate ARLs.
>
> Marek
>
> On Fri, Oct 7, 2011 at 5:40 PM, Brian Paul <brian.e.paul at gmail.com> wrote:
>> From: Brian Paul <brianp at vmware.com>
>>
>> This fixes a bug where we'd wind up emitting an invalid instruction like
>> MOVE R[0]., R[1]; - note the empty/zero writemask. If we don't write to
>> any dest register channels, cull the instruction.
>> ---
>> src/mesa/state_tracker/st_glsl_to_tgsi.cpp | 8 +++++++-
>> 1 files changed, 7 insertions(+), 1 deletions(-)
>>
>> diff --git a/src/mesa/state_tracker/st_glsl_to_tgsi.cpp b/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
>> index d8ef8a3..44b1149 100644
>> --- a/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
>> +++ b/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
>> @@ -3776,8 +3776,14 @@ glsl_to_tgsi_visitor::eliminate_dead_code_advanced(void)
>> iter.remove();
>> delete inst;
>> removed++;
>> - } else
>> + } else {
>> inst->dst.writemask &= ~(inst->dead_mask);
>> + if (inst->dst.writemask == 0) {
>> + iter.remove();
>> + delete inst;
>> + removed++;
>> + }
>> + }
>> }
>>
>> ralloc_free(write_level);
>> --
>> 1.7.3.4
>>
>> _______________________________________________
>> mesa-dev mailing list
>> mesa-dev at lists.freedesktop.org
>> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
>>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
More information about the mesa-dev
mailing list