diff options
author | Benjamin Kramer <benny.kra@googlemail.com> | 2012-02-28 17:58:00 +0000 |
---|---|---|
committer | Benjamin Kramer <benny.kra@googlemail.com> | 2012-02-28 17:58:00 +0000 |
commit | 3bf15ced2b91661ac314911c1f28332da0e1c37c (patch) | |
tree | 73b480a3b1612372c3c122f9b17834e1141f18e2 /lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp | |
parent | 20bd5296cec8d8d597ab9db2aca7346a88e580c8 (diff) |
LegalizeIntegerTypes: Reenable the large shift with small amount optimization.
To avoid problems with zero shifts when getting the bits that move between words
we use a trick: first shift the by amount-1, then do another shift by one. When
amount is 0 (and size 32) we first shift by 31, then by one, instead of by 32.
Also fix a latent bug that emitted the low and high words in the wrong order
when shifting right.
Fixes PR12113.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151637 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp')
0 files changed, 0 insertions, 0 deletions