diff options
| author | Benjamin Kramer <benny.kra@googlemail.com> | 2012-03-30 13:02:58 +0000 |
|---|---|---|
| committer | Benjamin Kramer <benny.kra@googlemail.com> | 2012-03-30 13:02:58 +0000 |
| commit | 88d31b3f0cdb0b95b63ca280563c69011b47af80 (patch) | |
| tree | d2c9db70fdbc1d2ff450f53861376f2ff1152e14 /llvm/lib | |
| parent | 36cbf03b9b6d41f117a24a9517ce89523c01d76f (diff) | |
| download | bcm5719-llvm-88d31b3f0cdb0b95b63ca280563c69011b47af80.tar.gz bcm5719-llvm-88d31b3f0cdb0b95b63ca280563c69011b47af80.zip | |
Add a note about a missed cmov -> sbb opportunity.
llvm-svn: 153741
Diffstat (limited to 'llvm/lib')
| -rw-r--r-- | llvm/lib/Target/X86/README.txt | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/llvm/lib/Target/X86/README.txt b/llvm/lib/Target/X86/README.txt index f9c1d357432..6a8a4fdf252 100644 --- a/llvm/lib/Target/X86/README.txt +++ b/llvm/lib/Target/X86/README.txt @@ -2060,3 +2060,21 @@ Instead we could generate: The trick is to match "fetch_and_add(X, -C) == C". //===---------------------------------------------------------------------===// + +unsigned t(unsigned a, unsigned b) { + return a <= b ? 5 : -5; +} + +We generate: + movl $5, %ecx + cmpl %esi, %edi + movl $-5, %eax + cmovbel %ecx, %eax + +GCC: + cmpl %edi, %esi + sbbl %eax, %eax + andl $-10, %eax + addl $5, %eax + +//===---------------------------------------------------------------------===// |

