By: Felid (Felid.delete@this.mailinator.com), November 15, 2012 12:49 am
Room: Moderated Discussions
> 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.
It doesn't makes sense. There can be many reads of mov's destination, so every one on these mops should get their source register replaced with (link to) original. This can't be done with fusion (2 instructions —> 1 mop), but perfectly apply to renaming logic.
> 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.
It doesn't makes sense. There can be many reads of mov's destination, so every one on these mops should get their source register replaced with (link to) original. This can't be done with fusion (2 instructions —> 1 mop), but perfectly apply to renaming logic.



