From: Artem Belevich Date: Tue, 20 Mar 2018 17:18:59 +0000 (+0000) Subject: [NVPTX] Make tensor load/store intrinsics overloaded. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=b1444f3997aac445e5bac97476e4cb26ad9fc613;p=clang [NVPTX] Make tensor load/store intrinsics overloaded. This way we can support address-space specific variants without explicitly encoding the space in the name of the intrinsic. Less intrinsics to deal with -> less boilerplate. Added a bit of tablegen magic to match/replace an intrinsics with a pointer argument in particular address space with the space-specific instruction variant. Updated tests to use non-default address spaces. Differential Revision: https://reviews.llvm.org/D43268 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@328006 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/CodeGen/CGBuiltin.cpp b/lib/CodeGen/CGBuiltin.cpp index 7186e882d5..7c8f111d10 100644 --- a/lib/CodeGen/CGBuiltin.cpp +++ b/lib/CodeGen/CGBuiltin.cpp @@ -10527,8 +10527,7 @@ Value *CodeGenFunction::EmitNVPTXBuiltinExpr(unsigned BuiltinID, llvm_unreachable("Unexpected builtin ID."); } Value *Result = - Builder.CreateCall(CGM.getIntrinsic(IID), - {Builder.CreatePointerCast(Src, VoidPtrTy), Ldm}); + Builder.CreateCall(CGM.getIntrinsic(IID, Src->getType()), {Src, Ldm}); // Save returned values. for (unsigned i = 0; i < NumResults; ++i) { @@ -10567,10 +10566,9 @@ Value *CodeGenFunction::EmitNVPTXBuiltinExpr(unsigned BuiltinID, default: llvm_unreachable("Unexpected builtin ID."); } - Function *Intrinsic = CGM.getIntrinsic(IID); + Function *Intrinsic = CGM.getIntrinsic(IID, Dst->getType()); llvm::Type *ParamType = Intrinsic->getFunctionType()->getParamType(1); - SmallVector Values; - Values.push_back(Builder.CreatePointerCast(Dst, VoidPtrTy)); + SmallVector Values = {Dst}; for (unsigned i = 0; i < NumResults; ++i) { Value *V = Builder.CreateAlignedLoad( Builder.CreateGEP(Src.getPointer(), llvm::ConstantInt::get(IntTy, i)),