By: anon (anon.delete@this.anon.com), November 14, 2012 9:33 pm
Room: Moderated Discussions
Stubabe (nospam.delete@this.nospam.com) on November 14, 2012 1:43 pm wrote:
> Surely it's just handled by the Register Alias Table?
>
> This way the is no need to fuse adjacent instructions, R10 can
> have multiple dependences and the instruction can get NOPed
Bulldozer actually eliminates MOVs (for SIMD only) using the register renaming technique as you described. But in Ivy Bridge, as long as I've measured in the actual processor, it shows a behavior that it fuses a MOV instruction with a subsequent dependent instruction for MOV elimination (when there is no MOV-dependent instruction, MOV is not eliminated at all).
Fusion seems to be done in uop domain because non-adjacent instructions can be fused.
> Surely it's just handled by the Register Alias Table?
>
> This way the is no need to fuse adjacent instructions, R10 can
> have multiple dependences and the instruction can get NOPed
Bulldozer actually eliminates MOVs (for SIMD only) using the register renaming technique as you described. But in Ivy Bridge, as long as I've measured in the actual processor, it shows a behavior that it fuses a MOV instruction with a subsequent dependent instruction for MOV elimination (when there is no MOV-dependent instruction, MOV is not eliminated at all).
Fusion seems to be done in uop domain because non-adjacent instructions can be fused.



