Scalarizer for masked.gather and masked.scatter intrinsics.
authorElena Demikhovsky <elena.demikhovsky@intel.com>
Sun, 25 Oct 2015 15:37:55 +0000 (15:37 +0000)
committerElena Demikhovsky <elena.demikhovsky@intel.com>
Sun, 25 Oct 2015 15:37:55 +0000 (15:37 +0000)
commit16ed8780c77340f44a76ec64c4275a626795ed10
tree66b556ebac8acc5edb1bdb24dfcbc8b9f5b0114e
parentaa2b60f016fcff3dca0aa1eb0bf5d901d32993e3
Scalarizer for masked.gather and masked.scatter intrinsics.
When the target does not support these intrinsics they should be converted to a chain of scalar load or store operations.
If the mask is not constant, the scalarizer will build a chain of conditional basic blocks.
I added isLegalMaskedGather() isLegalMaskedScatter() APIs.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@251237 91177308-0d34-0410-b5e6-96231b3b80d8
include/llvm/Analysis/TargetTransformInfo.h
include/llvm/Analysis/TargetTransformInfoImpl.h
lib/Analysis/TargetTransformInfo.cpp
lib/CodeGen/CodeGenPrepare.cpp
lib/Target/X86/X86TargetTransformInfo.cpp
lib/Target/X86/X86TargetTransformInfo.h
test/CodeGen/X86/masked_gather_scatter.ll