[LLVMdev] Macro-op fusion experiment

Nicolas Capens nicolas.capens at gmail.com
Sun Apr 17 09:24:25 PDT 2011


Hi Jacob,

As far as I know, an x86 'mov' instruction always 

On 08 Apr 2011, at 19:27, Jakob Stoklund Olesen <stoklund at 2pi.dk> wrote:

> 
> On Apr 8, 2011, at 9:56 AM, NAKAMURA Takumi wrote:
> 
>>>>                8B C3 mov eax, ebx
>>>>                03 C1 add eax, ecx
>>>> becomes
>>>>                8B C3 03 C1 add eax, ebx, ecx
>> 
>> In my understanding, twoaddr pass tends to emit such a sequence.
> 
> Yes, it always does, and the coalescer tries very hard to eliminate the copy.
> 
>> Though I don't have sandybridge, I have not measured.
>> Prior processors(intel and amd) might spend 1 ALU to execute "mov",
>> then mov - add must have dependency.
> 
> I think you will find it is more complicated than that. A 'mov' usually doesn't need an ALU resource.
> 
> You should read about the 'reservation station' style register renaming.
> 
> http://en.wikipedia.org/wiki/Register_renaming
> http://www.intel.com/Assets/PDF/manual/248966.pdf
> 
> /jakob
> 




More information about the llvm-dev mailing list