From: Chris Lattner Date: Thu, 2 Feb 2006 19:16:34 +0000 (+0000) Subject: add a note, I have no idea how important this is. X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=9acddcd07e37ff3c3baaf7654eb4838c8e8377fe;p=oota-llvm.git add a note, I have no idea how important this is. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25907 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Target/X86/README.txt b/lib/Target/X86/README.txt index 36f287bcf92..c8e359fced3 100644 --- a/lib/Target/X86/README.txt +++ b/lib/Target/X86/README.txt @@ -350,3 +350,27 @@ much sense (e.g. its an infinite loop). :) None of the FPStack instructions are handled in X86RegisterInfo::foldMemoryOperand, which prevents the spiller from folding spill code into the instructions. + +//===---------------------------------------------------------------------===// + +In many cases, LLVM generates code like this: + +_test: + movl 8(%esp), %eax + cmpl %eax, 4(%esp) + setl %al + movzbl %al, %eax + ret + +on some processors (which ones?), it is more efficient to do this: + +_test: + movl 8(%esp), %ebx + xor %eax, %eax + cmpl %ebx, 4(%esp) + setl %al + ret + +Doing this correctly is tricky though, as the xor clobbers the flags. + +