Type legalizer for masked gather and scatter intrinsics.
authorElena Demikhovsky <elena.demikhovsky@intel.com>
Tue, 15 Dec 2015 08:40:41 +0000 (08:40 +0000)
committerElena Demikhovsky <elena.demikhovsky@intel.com>
Tue, 15 Dec 2015 08:40:41 +0000 (08:40 +0000)
commit56a8a2731eae03b594ba10c0a52bc5dbb15f820f
tree003e0fb48b233677e3baf5c148fa41b5004b14a0
parent07e8f8869589124603ea6b678e4540cb840f781d
Type legalizer for masked gather and scatter intrinsics.

Full type legalizer that works with all vectors length - from 2 to 16, (i32, i64, float, double).

This intrinsic, for example
void @llvm.masked.scatter.v2f32(<2 x float>%data , <2 x float*>%ptrs , i32 align , <2 x i1>%mask )
requires type widening for data and type promotion for mask.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@255629 91177308-0d34-0410-b5e6-96231b3b80d8
include/llvm/CodeGen/SelectionDAGNodes.h
lib/CodeGen/SelectionDAG/LegalizeIntegerTypes.cpp
lib/CodeGen/SelectionDAG/LegalizeTypes.cpp
lib/CodeGen/SelectionDAG/LegalizeTypes.h
lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp
lib/Target/X86/X86ISelLowering.cpp
lib/Target/X86/X86InstrAVX512.td
test/CodeGen/X86/masked_gather_scatter.ll
test/CodeGen/X86/masked_memop.ll