diff options
author | Andrea Di Biagio <Andrea_DiBiagio@sn.scee.net> | 2015-03-08 16:28:47 +0000 |
---|---|---|
committer | Andrea Di Biagio <Andrea_DiBiagio@sn.scee.net> | 2015-03-08 16:28:47 +0000 |
commit | 6c7d70469cd0ae8026f7e97b73e19478c164dece (patch) | |
tree | 23d06f5554ca118287bfd494b9ba46560a9d35c0 /llvm/lib/Bitcode/Reader/BitstreamReader.cpp | |
parent | 8f3c0cd1bacab79154c84b8891f4afa80925ba2c (diff) | |
download | llvm-6c7d70469cd0ae8026f7e97b73e19478c164dece.zip llvm-6c7d70469cd0ae8026f7e97b73e19478c164dece.tar.gz llvm-6c7d70469cd0ae8026f7e97b73e19478c164dece.tar.bz2 |
[X86][AVX] Fix wrong lowering of VPERM2X128 nodes
There were cases where the backend computed a wrong permute mask for a VPERM2X128 node.
Example:
\code
define <8 x float> @foo(<8 x float> %a, <8 x float> %b) {
%shuffle = shufflevector <8 x float> %a, <8 x float> %b, <8 x i32> <i32 undef, i32 undef, i32 6, i32 7, i32 undef, i32 undef, i32 6, i32 7>
ret <8 x float> %shuffle
}
\code end
Before this patch, llc (with -mattr=+avx) emitted the following vperm2f128:
vperm2f128 $0, %ymm0, %ymm0, %ymm0 # ymm0 = ymm0[0,1,0,1]
With this patch, llc emits a vperm2f128 with a correct permute mask:
vperm2f128 $17, %ymm0, %ymm0, %ymm0 # ymm0 = ymm0[2,3,2,3]
Differential Revision: http://reviews.llvm.org/D8119
llvm-svn: 231601
Diffstat (limited to 'llvm/lib/Bitcode/Reader/BitstreamReader.cpp')
0 files changed, 0 insertions, 0 deletions