Match this pattern so that we can generate simpler code:
authorBill Wendling <isanbard@gmail.com>
Thu, 26 Mar 2009 01:47:50 +0000 (01:47 +0000)
committerBill Wendling <isanbard@gmail.com>
Thu, 26 Mar 2009 01:47:50 +0000 (01:47 +0000)
commit8b4b874cc67ae4cefc0e723c8f93cf8d6101fcb2
treef759c64cf383b782854d09ee4cc6eae2b668d642
parentbddc442a00c2216834499f10c12d023f1751104c
Match this pattern so that we can generate simpler code:

  %a = ...
  %b = and i32 %a, 2
  %c = srl i32 %b, 1
  %d = br i32 %c,

into

  %a = ...
  %b = and %a, 2
  %c = X86ISD::CMP %b, 0
  %d = X86ISD::BRCOND %c ...

This applies only when the AND constant value has one bit set and the SRL
constant is equal to the log2 of the AND constant. The back-end is smart enough
to convert the result into a TEST/JMP sequence.

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