summaryrefslogtreecommitdiffstats
path: root/llvm/lib
diff options
context:
space:
mode:
authorBenjamin Kramer <benny.kra@googlemail.com>2012-03-30 13:02:58 +0000
committerBenjamin Kramer <benny.kra@googlemail.com>2012-03-30 13:02:58 +0000
commit88d31b3f0cdb0b95b63ca280563c69011b47af80 (patch)
treed2c9db70fdbc1d2ff450f53861376f2ff1152e14 /llvm/lib
parent36cbf03b9b6d41f117a24a9517ce89523c01d76f (diff)
downloadbcm5719-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.txt18
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
+
+//===---------------------------------------------------------------------===//
OpenPOWER on IntegriCloud