Add a note about a missed cmov -> sbb opportunity.
authorBenjamin Kramer <benny.kra@googlemail.com>
Fri, 30 Mar 2012 13:02:58 +0000 (13:02 +0000)
committerBenjamin Kramer <benny.kra@googlemail.com>
Fri, 30 Mar 2012 13:02:58 +0000 (13:02 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153741 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/X86/README.txt

index f9c1d3574325eaf88a9081dabb18567953c4ba04..6a8a4fdf2520d81a8b1f5e9828f69cc6b2bcd024 100644 (file)
@@ -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
+
+//===---------------------------------------------------------------------===//