intel/fs: dead code eliminate unable to remove unused instructions
Filing this to get some feedback from @currojerez
Here is some intermediate intel/fs IR :
{ 89} 164: do(8) (null):UD,
...
{ 94} 773: undef(8) vgrf803<0>:UD,
{ 94} 774: mov(8) vgrf803+0.0<0>:UD, 64u NoMask
{ 95} 775: unaligned_oword_block_read_logical(8) vgrf802:UD, 254u(null):UD, vgrf803+0.0<0>:UD(null):UD(null):UD, 8u(null):UD NoMask
{ 95} 776: add(8) vgrf803+0.0<0>:UD, vgrf803+0.0<0>:UD, 32u NoMask
* after this point vgrf803 is not used anymore *
....
{ 89} 806: while(8) (null):UD,
The dead code eleminate is unable to remove the ADD instruction and I don't really get why. Maybe a problem with the live range analysis?
This appears to increase register pressure for no reason, since the variable is kept alive throughout the loop.
I'm running with patches from !21351 (merged)