diff options
author | Chris Lattner <sabre@nondot.org> | 2007-04-10 21:14:01 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2007-04-10 21:14:01 +0000 |
commit | bae3bd7c19d1bbd408f568d5a29b7a96897c3637 (patch) | |
tree | a12ab3874fa3723a5d2d8b166f15591c1cf31adb /lib/Target/X86/README.txt | |
parent | 7545422f088f4d71ab26bf4c2f8971cdfcd35c2b (diff) | |
download | external_llvm-bae3bd7c19d1bbd408f568d5a29b7a96897c3637.zip external_llvm-bae3bd7c19d1bbd408f568d5a29b7a96897c3637.tar.gz external_llvm-bae3bd7c19d1bbd408f568d5a29b7a96897c3637.tar.bz2 |
new micro optzn
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35867 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/X86/README.txt')
-rw-r--r-- | lib/Target/X86/README.txt | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/lib/Target/X86/README.txt b/lib/Target/X86/README.txt index 39add22..6c148d7 100644 --- a/lib/Target/X86/README.txt +++ b/lib/Target/X86/README.txt @@ -1047,3 +1047,33 @@ int decode_byte (const decode_t* decode) { } +//===---------------------------------------------------------------------===// + +Consider: + +int isnegative(unsigned int X) { + return !(X < 2147483648U); +} + +We current compile this to: + +define i32 @isnegative(i32 %X) { + icmp slt i32 %X, 0 ; <i1>:0 [#uses=1] + %retval = zext i1 %0 to i32 ; <i32> [#uses=1] + ret i32 %retval +} + +and: + +_isnegative: + cmpl $0, 4(%esp) + sets %al + movzbl %al, %eax + ret + +We should produce: + + movl 4(%esp), %eax + shrl $31, %eax + ret + |