summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Analysis/MemoryBuiltins.cpp
diff options
context:
space:
mode:
authorHal Finkel <hfinkel@anl.gov>2013-05-24 23:00:14 +0000
committerHal Finkel <hfinkel@anl.gov>2013-05-24 23:00:14 +0000
commitcf2e9080142bdac86a2a693ca3ff4cf423e804c0 (patch)
treec6c24b5c84a72a859f29405d5eb7e390af3ca406 /llvm/lib/Analysis/MemoryBuiltins.cpp
parenta8db3f6fa7df1d310993317608346ad5a45ed767 (diff)
downloadbcm5719-llvm-cf2e9080142bdac86a2a693ca3ff4cf423e804c0.tar.gz
bcm5719-llvm-cf2e9080142bdac86a2a693ca3ff4cf423e804c0.zip
PPC: Initial support for permutation-based unaligned Altivec loads
Altivec only directly supports aligned loads, but the loads have a strange property: If given an unaligned address, they truncate the address to the next lower aligned address, and load from there. This property, along with an extra load and some special-purpose permutation-control instructions that generate the appropriate permutations from the original unaligned address, allow efficient lowering of aligned loads. This code uses the trick explained in the Apple Velocity Engine optimization overview document to prevent the needed extra load from possibly causing a page fault if the original address happens to be aligned. As noted in the FIXMEs, there are several additional optimizations that can be performed to reduce the cost of these loads even more. These will be implemented in future commits. llvm-svn: 182691
Diffstat (limited to 'llvm/lib/Analysis/MemoryBuiltins.cpp')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud