[X86] Emit more efficient >= comparisons against 0
authorDavid Majnemer <david.majnemer@gmail.com>
Wed, 19 Aug 2015 20:51:40 +0000 (20:51 +0000)
committerDavid Majnemer <david.majnemer@gmail.com>
Wed, 19 Aug 2015 20:51:40 +0000 (20:51 +0000)
commit26047ead4be0d2ca9d8325d50b10e2afe86320e0
treeeeaa0e773c1d4f06c8ee47d9b234222c88bd78ac
parent6e53cbdf5f71d18c46fbb116f150642135dc97d0
[X86] Emit more efficient >= comparisons against 0

We don't do a great job with >= 0 comparisons against zero when the
result is used as an i8.

Given something like:
  void f(long long LL, bool *B) {
    *B = LL >= 0;
  }

We used to generate:
  shrq    $63, %rdi
  xorb    $1, %dil
  movb    %dil, (%rsi)

Now we generate:
  testq   %rdi, %rdi
  setns   (%rsi)

Differential Revision: http://reviews.llvm.org/D12136

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@245498 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Target/X86/X86ISelLowering.cpp
test/CodeGen/X86/cmp.ll