diff options
| author | Chris Lattner <sabre@nondot.org> | 2006-02-02 19:16:34 +0000 |
|---|---|---|
| committer | Chris Lattner <sabre@nondot.org> | 2006-02-02 19:16:34 +0000 |
| commit | d3f033e8e0ad1fcceb2b0070542ca446b8acd7dc (patch) | |
| tree | 6c7b6c656417f76555ae0b8c9717280597caa4f7 /llvm/lib/Target | |
| parent | e10e1024bce80fa082f9d38fc99a1138e1464547 (diff) | |
| download | bcm5719-llvm-d3f033e8e0ad1fcceb2b0070542ca446b8acd7dc.tar.gz bcm5719-llvm-d3f033e8e0ad1fcceb2b0070542ca446b8acd7dc.zip | |
add a note, I have no idea how important this is.
llvm-svn: 25907
Diffstat (limited to 'llvm/lib/Target')
| -rw-r--r-- | llvm/lib/Target/X86/README.txt | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/llvm/lib/Target/X86/README.txt b/llvm/lib/Target/X86/README.txt index 36f287bcf92..c8e359fced3 100644 --- a/llvm/lib/Target/X86/README.txt +++ b/llvm/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. + + |

