Support arbitrary addrspace pointers in masked load/store intrinsics
authorArtur Pilipenko <apilipenko@azulsystems.com>
Tue, 12 Apr 2016 15:58:04 +0000 (15:58 +0000)
committerArtur Pilipenko <apilipenko@azulsystems.com>
Tue, 12 Apr 2016 15:58:04 +0000 (15:58 +0000)
commitdbe0bc8df44354e261dec40fb663f7a5d42f093f
tree26807d8d45dac466fe80438aa159b7cacdf389a9
parent25570c5423137e6533b15b688d4501d6b771a1dc
Support arbitrary addrspace pointers in masked load/store intrinsics

This is a resubmittion of 263158 change.

This patch fixes the problem which occurs when loop-vectorize tries to use @llvm.masked.load/store intrinsic for a non-default addrspace pointer. It fails with "Calling a function with a bad signature!" assertion in CallInst constructor because it tries to pass a non-default addrspace pointer to the pointer argument which has default addrspace.

The fix is to add pointer type as another overloaded type to @llvm.masked.load/store intrinsics.

Reviewed By: reames

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

llvm-svn: 266086
12 files changed:
llvm/docs/LangRef.rst
llvm/include/llvm/IR/IRBuilder.h
llvm/include/llvm/IR/Intrinsics.td
llvm/lib/IR/AutoUpgrade.cpp
llvm/lib/IR/IRBuilder.cpp
llvm/test/Analysis/CostModel/X86/masked-intrinsic-cost.ll
llvm/test/Assembler/auto_upgrade_intrinsics.ll
llvm/test/CodeGen/X86/avx512-bugfix-26264.ll
llvm/test/CodeGen/X86/masked_memop.ll
llvm/test/Transforms/InstCombine/masked_intrinsics.ll
llvm/test/Transforms/InstCombine/x86-masked-memops.ll
llvm/test/Transforms/LoopVectorize/X86/masked_load_store.ll