[InstCombine/PowerPC] Fix single-precision QPX load/store replacement
authorHal Finkel <hfinkel@anl.gov>
Mon, 11 May 2015 06:37:03 +0000 (06:37 +0000)
committerHal Finkel <hfinkel@anl.gov>
Mon, 11 May 2015 06:37:03 +0000 (06:37 +0000)
commitcdd4737be863e9b3679874ff45f247bebafb3c87
treecac04821da190814acd703e9a1d245b0d3d300b9
parenta08590e2dcc01c3930110d18b3f8a196c19adcce
[InstCombine/PowerPC] Fix single-precision QPX load/store replacement

The QPX single-precision load/store intrinsics have implied
truncation/extension from/to the declared value type of <4 x double> to the
memory type of <4 x float>. When we can prove the alignment of the pointer
argument, and thus replace the intrinsic with a regular load or store, we need
to load or store the correct data type (<4 x float>) instead of (<4 x double>).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236973 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Transforms/InstCombine/InstCombineCalls.cpp
test/Transforms/InstCombine/aligned-qpx.ll