[Mesa-dev] i965: overwriting parts of a register and optimization passes
Iago Toral
itoral at igalia.com
Tue Jul 8 02:19:38 PDT 2014
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
More information about the mesa-dev
mailing list