aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Support/Parallel.cpp
diff options
context:
space:
mode:
authorDaniel Neilson <dneilson@azul.com>2018-05-11 14:30:02 +0000
committerDaniel Neilson <dneilson@azul.com>2018-05-11 14:30:02 +0000
commit8f30ec65b0a6b064235d134344c2503a1ef43d14 (patch)
tree9f1fd6609ad58d0bd516e31778c5b7aae0430d06 /llvm/lib/Support/Parallel.cpp
parent49fcf17d5f3800e6ce53f22f0406e1e08dcb4430 (diff)
downloadllvm-8f30ec65b0a6b064235d134344c2503a1ef43d14.zip
llvm-8f30ec65b0a6b064235d134344c2503a1ef43d14.tar.gz
llvm-8f30ec65b0a6b064235d134344c2503a1ef43d14.tar.bz2
[InstCombine] Unify handling of atomic memtransfer with non-atomic memtransfer
Summary: This change reworks the handling of atomic memcpy within the instcombine pass. Previously, a constant length atomic memcpy would be lowered into loads & stores as long as no more than 16 load/store pairs are created. This is quite different from the lowering done for a non-atomic memcpy; which only ever lowers into a single load/store pair of no more than 8 bytes. Larger constant-sized memcpy calls are expanded to load/stores in later passes, such as SelectionDAG lowering. In this change the behaviour for atomic memcpy is unified with non-atomic memcpy; atomic memcpy is now treated in the same was as non-atomic memcpy has always been. We leave it to later passes to lower longer-length atomic memcpy calls. Due to the structure of the pass's handling of memtransfer intrinsics, this change also gives us handling of atomic memmove that we did not previously have. Reviewers: apilipenko, skatkov, mkazantsev, anna, reames Reviewed By: reames Subscribers: reames, llvm-commits Differential Revision: https://reviews.llvm.org/D46658 llvm-svn: 332093
Diffstat (limited to 'llvm/lib/Support/Parallel.cpp')
0 files changed, 0 insertions, 0 deletions