Support arbitrary address space pointers in masked gather/scatter intrinsics.
authorElad Cohen <elad2.cohen@intel.com>
Wed, 3 May 2017 12:28:54 +0000 (12:28 +0000)
committerElad Cohen <elad2.cohen@intel.com>
Wed, 3 May 2017 12:28:54 +0000 (12:28 +0000)
commitef5798acf5ea024f69f012abfbec1cdfe2e44cd0
tree9452bfdc4d652956a62022997fec7b756c0e4e89
parent4aedb8a6b77b72d7cf858020ffc87c553e29da1f
Support arbitrary address space pointers in masked gather/scatter intrinsics.

Fixes PR31789 - When loop-vectorize tries to use these intrinsics for a
non-default address space pointer we fail with a "Calling a function with a
bad singature!" assertion. This patch solves this by adding the 'vector of
pointers' argument as an overloaded type which will determine the address
space.

Differential revision: https://reviews.llvm.org/D31490

llvm-svn: 302018
19 files changed:
llvm/docs/LangRef.rst
llvm/include/llvm/IR/Intrinsics.h
llvm/include/llvm/IR/Intrinsics.td
llvm/lib/IR/AutoUpgrade.cpp
llvm/lib/IR/Function.cpp
llvm/lib/IR/IRBuilder.cpp
llvm/test/Analysis/CostModel/X86/masked-intrinsic-cost.ll
llvm/test/Analysis/CostModel/X86/vector_gep.ll
llvm/test/Assembler/auto_upgrade_intrinsics.ll
llvm/test/CodeGen/X86/masked_gather_scatter.ll
llvm/test/Transforms/FunctionAttrs/readattrs.ll
llvm/test/Transforms/GVN/2016-08-30-MaskedScatterGather.ll
llvm/test/Transforms/InstCombine/masked_intrinsics.ll
llvm/test/Transforms/LoopVectorize/X86/consecutive-ptr-uniforms.ll
llvm/test/Transforms/LoopVectorize/X86/gather_scatter.ll
llvm/test/Transforms/LoopVectorize/X86/scatter_crash.ll
llvm/test/Transforms/NewGVN/2016-08-30-MaskedScatterGather.ll
llvm/test/Verifier/scatter_gather.ll [new file with mode: 0644]
llvm/utils/TableGen/IntrinsicEmitter.cpp