Detailed description: SIFoldOperands::foldInstOperand iterates over the
operand uses calling the function that changes def-use iterators on the
way. As a result it is able to fold operand to the very first use
instruction only. Loop exits immediately when def-use iterator changed.
This makes VGPR live along the whole basic block and increases the
register pressure significantly.
Proposed fix: collect uses to separate container and process them further.
SHOC performance testing.