Hi,

I have some code that first initializes a register and then overwrites a specific subregister. However, after the optimization passes in brw_vec4.cpp the initialization instruction goes away. I see that live intervals are computed for the destination register without considering if we are writing only to a specific subregister, so I guess that is the reason for this behaviour, but this strikes me as odd, as it defeats the purpose of overwriting only specific subregs, so I guess there is something else that I am missing.

This an example of what is happening:

mov(8) g6<1>.xUD g0<4,4,1>UD { align16 WE_all 1Q }; mov(1) g6.2<1>UD 0x00000007UD { align1 WE_all compacted };

The first MOV is removed from the instruction set when I put the second MOV, however the second MOV should only be writing to subreg 6.2 and keep the rest of register 6 intact, or at least that is what I am trying to do...

Can someone explain what is wrong with those two instructions? how should I overwrite only a specific subregister without causing this behavior?

Thanks,
Iago
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to