summaryrefslogtreecommitdiff
path: root/lib/Target/SystemZ/SystemZISelDAGToDAG.cpp
diff options
context:
space:
mode:
authorRichard Sandiford <rsandifo@linux.vnet.ibm.com>2014-01-09 10:56:42 +0000
committerRichard Sandiford <rsandifo@linux.vnet.ibm.com>2014-01-09 10:56:42 +0000
commitacb31a245ceef3510f37163e31c0097b0d63cb8f (patch)
tree697f6ad55b0ab7c3562eb364d7857e3af5d7e956 /lib/Target/SystemZ/SystemZISelDAGToDAG.cpp
parent2984497cc1feb475d8ec97c9924dcc9bd02e0de0 (diff)
downloadllvm-acb31a245ceef3510f37163e31c0097b0d63cb8f.tar.gz
llvm-acb31a245ceef3510f37163e31c0097b0d63cb8f.tar.bz2
llvm-acb31a245ceef3510f37163e31c0097b0d63cb8f.tar.xz
Handle masked rotate amounts
At the moment we expect rotates to have the form: (or (shl X, Y), (shr X, Z)) where Y == bitsize(X) - Z or Z == bitsize(X) - Y. This form means that the (or ...) is undefined for Y == 0 or Z == 0. This undefinedness can be avoided by using Y == (C * bitsize(X) - Z) & (bitsize(X) - 1) or Z == (C * bitsize(X) - Y) & (bitsize(X) - 1) for any integer C (including 0, the most natural choice). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@198861 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/SystemZ/SystemZISelDAGToDAG.cpp')
0 files changed, 0 insertions, 0 deletions