Lines Matching refs:M
31 IntegerType *getSizeTTy(Module &M) { in getSizeTTy() argument
32 return M.getDataLayout().getIntPtrType(M.getContext()); in getSizeTTy()
41 StructType *getDeviceImageTy(Module &M) { in getDeviceImageTy() argument
42 LLVMContext &C = M.getContext(); in getDeviceImageTy()
52 PointerType *getDeviceImagePtrTy(Module &M) { in getDeviceImagePtrTy() argument
53 return PointerType::getUnqual(getDeviceImageTy(M)); in getDeviceImagePtrTy()
62 StructType *getBinDescTy(Module &M) { in getBinDescTy() argument
63 LLVMContext &C = M.getContext(); in getBinDescTy()
67 "__tgt_bin_desc", Type::getInt32Ty(C), getDeviceImagePtrTy(M), in getBinDescTy()
72 PointerType *getBinDescPtrTy(Module &M) { in getBinDescPtrTy() argument
73 return PointerType::getUnqual(getBinDescTy(M)); in getBinDescPtrTy()
114 GlobalVariable *createBinDesc(Module &M, ArrayRef<ArrayRef<char>> Bufs, in createBinDesc() argument
117 LLVMContext &C = M.getContext(); in createBinDesc()
120 auto *Zero = ConstantInt::get(getSizeTTy(M), 0u); in createBinDesc()
129 auto *Image = new GlobalVariable(M, Data->getType(), /*isConstant=*/true, in createBinDesc()
150 auto *Begin = ConstantInt::get(getSizeTTy(M), Entry->ImageOffset); in createBinDesc()
152 ConstantInt::get(getSizeTTy(M), Entry->ImageOffset + Entry->ImageSize); in createBinDesc()
161 ImagesInits.push_back(ConstantStruct::get(getDeviceImageTy(M), ImageB, in createBinDesc()
167 ArrayType::get(getDeviceImageTy(M), ImagesInits.size()), ImagesInits); in createBinDesc()
170 new GlobalVariable(M, ImagesData->getType(), /*isConstant*/ true, in createBinDesc()
180 getBinDescTy(M), in createBinDesc()
184 return new GlobalVariable(M, DescInit->getType(), /*isConstant*/ true, in createBinDesc()
189 Function *createUnregisterFunction(Module &M, GlobalVariable *BinDesc, in createUnregisterFunction() argument
191 LLVMContext &C = M.getContext(); in createUnregisterFunction()
195 ".omp_offloading.descriptor_unreg" + Suffix, &M); in createUnregisterFunction()
199 auto *UnRegFuncTy = FunctionType::get(Type::getVoidTy(C), getBinDescPtrTy(M), in createUnregisterFunction()
202 M.getOrInsertFunction("__tgt_unregister_lib", UnRegFuncTy); in createUnregisterFunction()
212 void createRegisterFunction(Module &M, GlobalVariable *BinDesc, in createRegisterFunction() argument
214 LLVMContext &C = M.getContext(); in createRegisterFunction()
217 ".omp_offloading.descriptor_reg" + Suffix, &M); in createRegisterFunction()
221 auto *RegFuncTy = FunctionType::get(Type::getVoidTy(C), getBinDescPtrTy(M), in createRegisterFunction()
224 M.getOrInsertFunction("__tgt_register_lib", RegFuncTy); in createRegisterFunction()
228 FunctionCallee AtExit = M.getOrInsertFunction("atexit", AtExitTy); in createRegisterFunction()
230 Function *UnregFunc = createUnregisterFunction(M, BinDesc, Suffix); in createRegisterFunction()
245 appendToGlobalCtors(M, Func, /*Priority=*/101); in createRegisterFunction()
254 StructType *getFatbinWrapperTy(Module &M) { in getFatbinWrapperTy() argument
255 LLVMContext &C = M.getContext(); in getFatbinWrapperTy()
266 GlobalVariable *createFatbinDesc(Module &M, ArrayRef<char> Image, bool IsHIP, in createFatbinDesc() argument
268 LLVMContext &C = M.getContext(); in createFatbinDesc()
270 llvm::Triple Triple = llvm::Triple(M.getTargetTriple()); in createFatbinDesc()
277 auto *Fatbin = new GlobalVariable(M, Data->getType(), /*isConstant*/ true, in createFatbinDesc()
293 ConstantStruct::get(getFatbinWrapperTy(M), FatbinWrapper); in createFatbinDesc()
296 new GlobalVariable(M, getFatbinWrapperTy(M), in createFatbinDesc()
328 Function *createRegisterGlobalsFunction(Module &M, bool IsHIP, in createRegisterGlobalsFunction() argument
332 LLVMContext &C = M.getContext(); in createRegisterGlobalsFunction()
344 FunctionCallee RegFunc = M.getOrInsertFunction( in createRegisterGlobalsFunction()
351 getSizeTTy(M), Type::getInt32Ty(C), Type::getInt32Ty(C)}, in createRegisterGlobalsFunction()
353 FunctionCallee RegVar = M.getOrInsertFunction( in createRegisterGlobalsFunction()
362 FunctionCallee RegSurface = M.getOrInsertFunction( in createRegisterGlobalsFunction()
371 FunctionCallee RegTexture = M.getOrInsertFunction( in createRegisterGlobalsFunction()
378 IsHIP ? ".hip.globals_reg" : ".cuda.globals_reg", &M); in createRegisterGlobalsFunction()
398 Builder.CreateInBoundsGEP(offloading::getEntryTy(M), Entry, in createRegisterGlobalsFunction()
399 {ConstantInt::get(getSizeTTy(M), 0), in createRegisterGlobalsFunction()
403 Builder.CreateInBoundsGEP(offloading::getEntryTy(M), Entry, in createRegisterGlobalsFunction()
404 {ConstantInt::get(getSizeTTy(M), 0), in createRegisterGlobalsFunction()
408 Builder.CreateInBoundsGEP(offloading::getEntryTy(M), Entry, in createRegisterGlobalsFunction()
409 {ConstantInt::get(getSizeTTy(M), 0), in createRegisterGlobalsFunction()
411 auto *Size = Builder.CreateLoad(getSizeTTy(M), SizePtr, "size"); in createRegisterGlobalsFunction()
413 Builder.CreateInBoundsGEP(offloading::getEntryTy(M), Entry, in createRegisterGlobalsFunction()
414 {ConstantInt::get(getSizeTTy(M), 0), in createRegisterGlobalsFunction()
418 Builder.CreateInBoundsGEP(offloading::getEntryTy(M), Entry, in createRegisterGlobalsFunction()
419 {ConstantInt::get(getSizeTTy(M), 0), in createRegisterGlobalsFunction()
442 Builder.CreateICmpEQ(Size, ConstantInt::getNullValue(getSizeTTy(M))); in createRegisterGlobalsFunction()
492 offloading::getEntryTy(M), Entry, ConstantInt::get(getSizeTTy(M), 1)); in createRegisterGlobalsFunction()
496 ArrayType::get(offloading::getEntryTy(M), 0), EntriesE, in createRegisterGlobalsFunction()
497 ArrayRef<Constant *>({ConstantInt::get(getSizeTTy(M), 0), in createRegisterGlobalsFunction()
498 ConstantInt::get(getSizeTTy(M), 0)}))); in createRegisterGlobalsFunction()
501 ArrayType::get(offloading::getEntryTy(M), 0), EntriesB, in createRegisterGlobalsFunction()
502 ArrayRef<Constant *>({ConstantInt::get(getSizeTTy(M), 0), in createRegisterGlobalsFunction()
503 ConstantInt::get(getSizeTTy(M), 0)})), in createRegisterGlobalsFunction()
515 void createRegisterFatbinFunction(Module &M, GlobalVariable *FatbinDesc, in createRegisterFatbinFunction() argument
519 LLVMContext &C = M.getContext(); in createRegisterFatbinFunction()
523 (IsHIP ? ".hip.fatbin_reg" : ".cuda.fatbin_reg") + Suffix, &M); in createRegisterFatbinFunction()
529 (IsHIP ? ".hip.fatbin_unreg" : ".cuda.fatbin_unreg") + Suffix, &M); in createRegisterFatbinFunction()
536 FunctionCallee RegFatbin = M.getOrInsertFunction( in createRegisterFatbinFunction()
542 M.getOrInsertFunction("__cudaRegisterFatBinaryEnd", RegFatEndTy); in createRegisterFatbinFunction()
546 FunctionCallee UnregFatbin = M.getOrInsertFunction( in createRegisterFatbinFunction()
552 FunctionCallee AtExit = M.getOrInsertFunction("atexit", AtExitTy); in createRegisterFatbinFunction()
555 M, PtrTy, false, llvm::GlobalValue::InternalLinkage, in createRegisterFatbinFunction()
566 Align(M.getDataLayout().getPointerTypeSize(PtrTy))); in createRegisterFatbinFunction()
567 CtorBuilder.CreateCall(createRegisterGlobalsFunction(M, IsHIP, EntryArray, in createRegisterFatbinFunction()
582 Align(M.getDataLayout().getPointerTypeSize(PtrTy))); in createRegisterFatbinFunction()
587 appendToGlobalCtors(M, CtorFunc, /*Priority=*/101); in createRegisterFatbinFunction()
591 Error offloading::wrapOpenMPBinaries(Module &M, ArrayRef<ArrayRef<char>> Images, in wrapOpenMPBinaries() argument
595 createBinDesc(M, Images, EntryArray, Suffix, Relocatable); in wrapOpenMPBinaries()
599 createRegisterFunction(M, Desc, Suffix); in wrapOpenMPBinaries()
603 Error offloading::wrapCudaBinary(Module &M, ArrayRef<char> Image, in wrapCudaBinary() argument
607 GlobalVariable *Desc = createFatbinDesc(M, Image, /*IsHip=*/false, Suffix); in wrapCudaBinary()
612 createRegisterFatbinFunction(M, Desc, /*IsHip=*/false, EntryArray, Suffix, in wrapCudaBinary()
617 Error offloading::wrapHIPBinary(Module &M, ArrayRef<char> Image, in wrapHIPBinary() argument
620 GlobalVariable *Desc = createFatbinDesc(M, Image, /*IsHip=*/true, Suffix); in wrapHIPBinary()
625 createRegisterFatbinFunction(M, Desc, /*IsHip=*/true, EntryArray, Suffix, in wrapHIPBinary()