The whole 32-bit register is used, however only the lower 5 bits produce anything useful, if a higher bit it set then the result is set to zero.
Thank you, Micah for your answer. Could you comment this situation, please:
I need to perform integer a=b-c, I found no ISUB, so I use negate modifier:
The GPU ShaderAnalyzer shows that this will be compiled to:
0 y: SUB_INT ____, 0.0f, KC0.x
1 x: ADD_INT R1.x, R1.x, PV0.y
I see a substraction from zero, followed by addition! Why not just SUB_INT one operand from another? Is there another way to perform a substraction with single ALU op?
I do have an update. On R600, all 32 bits are used, on all later hardware only the lower 5 bits are used.