[X86][AVX512] Lower broadcast sub vector to vector inrtrinsics
authorAsaf Badouh <asaf.badouh@intel.com>
Mon, 28 Dec 2015 08:26:26 +0000 (08:26 +0000)
committerAsaf Badouh <asaf.badouh@intel.com>
Mon, 28 Dec 2015 08:26:26 +0000 (08:26 +0000)
commit199a1320b792c866ee6546dcbd157bebf54edaca
treed43cff6b13b466c2e3b677d6caaf8cb50fe6e617
parent518acfca4462b5f42e526773ff329ee771033bd8
[X86][AVX512] Lower broadcast sub vector to vector inrtrinsics
lower broadcast<type>x<vector> to shuffles.
 there are two cases:
1.src is 128 bits and dest is 512 bits: in this case we will lower it to shuffle with imm = 0.
2.src is 256 bit and dest is 512 bits: in this case we will lower it to shuffle with imm = 01000100b (0x44) that way we will broadcast the 256bit source: ymm[0,1,2,3] => zmm[0,1,2,3,0,1,2,3] then it will mask it with the passthru value (in case it's mask op).

Differential Revision: http://reviews.llvm.org/D15790

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@256490 91177308-0d34-0410-b5e6-96231b3b80d8
include/llvm/IR/IntrinsicsX86.td
lib/Target/X86/X86ISelLowering.cpp
lib/Target/X86/X86IntrinsicsInfo.h
test/CodeGen/X86/avx512-intrinsics.ll
test/CodeGen/X86/avx512dq-intrinsics.ll
test/CodeGen/X86/avx512dqvl-intrinsics.ll
test/CodeGen/X86/avx512vl-intrinsics.ll