rdar://12329730 (2nd part)
authorShuxin Yang <shuxin.llvm@gmail.com>
Tue, 4 Dec 2012 00:04:54 +0000 (00:04 +0000)
committerShuxin Yang <shuxin.llvm@gmail.com>
Tue, 4 Dec 2012 00:04:54 +0000 (00:04 +0000)
commitc811976b0400257511f2a255ec70538c3614f85e
tree1f1290d99a7f23d2c7d49d1e7c8a290589361ae8
parentfc6374439edf2f74da4026f4cea8e341d092be5c
rdar://12329730 (2nd part)

 This change tries to simmplify E1 = " X >> C1 << C2" into :
  - E2 = "X << (C2 - C1)" if C2 > C1, or
  - E2 = "X >> (C1 - C2)" if C1 > C2, or
  - E2 = X if C1 == C2.

 Reviewed by Nadav. Thanks!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169182 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Transforms/InstCombine/InstCombine.h
lib/Transforms/InstCombine/InstCombineSimplifyDemanded.cpp
test/Transforms/InstCombine/2010-11-01-lshr-mask.ll
test/Transforms/InstCombine/shift.ll
test/Transforms/InstCombine/signext.ll