[llvm-commits] [llvm] r120932 - in /llvm/trunk: lib/Target/X86/X86ISelLowering.cpp test/CodeGen/X86/select.ll

Chris Lattner sabre at nondot.org
Sun Dec 5 14:52:26 PST 2010


On Dec 5, 2010, at 2:22 PM, Evan Cheng wrote:

>> 
>> __Z4funcl:                              ## @_Z4funcl
>> 	movl	$4, %ecx                ## encoding: [0xb9,0x04,0x00,0x00,0x00]
>> 	movq	%rdi, %rax              ## encoding: [0x48,0x89,0xf8]
>> 	mulq	%rcx                    ## encoding: [0x48,0xf7,0xe1]
>> 	cmpq	$1, %rdx                ## encoding: [0x48,0x83,0xfa,0x01]
>> 	sbbq	%rdi, %rdi              ## encoding: [0x48,0x19,0xff]
>> 	notq	%rdi                    ## encoding: [0x48,0xf7,0xd7]
>> 	orq	%rax, %rdi              ## encoding: [0x48,0x09,0xc7]
>> 	jmp	__Znam                  ## TAILCALL
>>                                       ## encoding: [0xeb,A]
> 
> Why is this an improvement?

cmov is high latency and generally bad, but this also helps if the other value is an imm or load, because those can be folded into orq but not into cmov.

-Chris



More information about the llvm-commits mailing list