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
116 LLVMContext &C = M.getContext(); in createBinDesc()
119 auto *Zero = ConstantInt::get(getSizeTTy(M), 0u); in createBinDesc()
128 auto *Image = new GlobalVariable(M, Data->getType(), /*isConstant=*/true, in createBinDesc()
148 auto *Begin = ConstantInt::get(getSizeTTy(M), Entry->ImageOffset); in createBinDesc()
150 ConstantInt::get(getSizeTTy(M), Entry->ImageOffset + Entry->ImageSize); in createBinDesc()
159 ImagesInits.push_back(ConstantStruct::get(getDeviceImageTy(M), ImageB, in createBinDesc()
165 ArrayType::get(getDeviceImageTy(M), ImagesInits.size()), ImagesInits); in createBinDesc()
168 new GlobalVariable(M, ImagesData->getType(), /*isConstant*/ true, in createBinDesc()
178 getBinDescTy(M), in createBinDesc()
182 return new GlobalVariable(M, DescInit->getType(), /*isConstant*/ true, in createBinDesc()
187 void createRegisterFunction(Module &M, GlobalVariable *BinDesc, in createRegisterFunction() argument
189 LLVMContext &C = M.getContext(); in createRegisterFunction()
192 ".omp_offloading.descriptor_reg" + Suffix, &M); in createRegisterFunction()
196 auto *RegFuncTy = FunctionType::get(Type::getVoidTy(C), getBinDescPtrTy(M), in createRegisterFunction()
199 M.getOrInsertFunction("__tgt_register_lib", RegFuncTy); in createRegisterFunction()
212 appendToGlobalCtors(M, Func, /*Priority*/ 1); in createRegisterFunction()
215 void createUnregisterFunction(Module &M, GlobalVariable *BinDesc, in createUnregisterFunction() argument
217 LLVMContext &C = M.getContext(); in createUnregisterFunction()
221 ".omp_offloading.descriptor_unreg" + Suffix, &M); in createUnregisterFunction()
225 auto *UnRegFuncTy = FunctionType::get(Type::getVoidTy(C), getBinDescPtrTy(M), in createUnregisterFunction()
228 M.getOrInsertFunction("__tgt_unregister_lib", UnRegFuncTy); in createUnregisterFunction()
237 appendToGlobalDtors(M, Func, /*Priority*/ 1); in createUnregisterFunction()
246 StructType *getFatbinWrapperTy(Module &M) { in getFatbinWrapperTy() argument
247 LLVMContext &C = M.getContext(); in getFatbinWrapperTy()
258 GlobalVariable *createFatbinDesc(Module &M, ArrayRef<char> Image, bool IsHIP, in createFatbinDesc() argument
260 LLVMContext &C = M.getContext(); in createFatbinDesc()
262 llvm::Triple Triple = llvm::Triple(M.getTargetTriple()); in createFatbinDesc()
269 auto *Fatbin = new GlobalVariable(M, Data->getType(), /*isConstant*/ true, in createFatbinDesc()
285 ConstantStruct::get(getFatbinWrapperTy(M), FatbinWrapper); in createFatbinDesc()
288 new GlobalVariable(M, getFatbinWrapperTy(M), in createFatbinDesc()
320 Function *createRegisterGlobalsFunction(Module &M, bool IsHIP, in createRegisterGlobalsFunction() argument
324 LLVMContext &C = M.getContext(); in createRegisterGlobalsFunction()
336 FunctionCallee RegFunc = M.getOrInsertFunction( in createRegisterGlobalsFunction()
343 getSizeTTy(M), Type::getInt32Ty(C), Type::getInt32Ty(C)}, in createRegisterGlobalsFunction()
345 FunctionCallee RegVar = M.getOrInsertFunction( in createRegisterGlobalsFunction()
354 FunctionCallee RegSurface = M.getOrInsertFunction( in createRegisterGlobalsFunction()
363 FunctionCallee RegTexture = M.getOrInsertFunction( in createRegisterGlobalsFunction()
370 IsHIP ? ".hip.globals_reg" : ".cuda.globals_reg", &M); in createRegisterGlobalsFunction()
390 Builder.CreateInBoundsGEP(offloading::getEntryTy(M), Entry, in createRegisterGlobalsFunction()
391 {ConstantInt::get(getSizeTTy(M), 0), in createRegisterGlobalsFunction()
395 Builder.CreateInBoundsGEP(offloading::getEntryTy(M), Entry, in createRegisterGlobalsFunction()
396 {ConstantInt::get(getSizeTTy(M), 0), in createRegisterGlobalsFunction()
400 Builder.CreateInBoundsGEP(offloading::getEntryTy(M), Entry, in createRegisterGlobalsFunction()
401 {ConstantInt::get(getSizeTTy(M), 0), in createRegisterGlobalsFunction()
403 auto *Size = Builder.CreateLoad(getSizeTTy(M), SizePtr, "size"); in createRegisterGlobalsFunction()
405 Builder.CreateInBoundsGEP(offloading::getEntryTy(M), Entry, in createRegisterGlobalsFunction()
406 {ConstantInt::get(getSizeTTy(M), 0), in createRegisterGlobalsFunction()
410 Builder.CreateInBoundsGEP(offloading::getEntryTy(M), Entry, in createRegisterGlobalsFunction()
411 {ConstantInt::get(getSizeTTy(M), 0), in createRegisterGlobalsFunction()
434 Builder.CreateICmpEQ(Size, ConstantInt::getNullValue(getSizeTTy(M))); in createRegisterGlobalsFunction()
484 offloading::getEntryTy(M), Entry, ConstantInt::get(getSizeTTy(M), 1)); in createRegisterGlobalsFunction()
488 ArrayType::get(offloading::getEntryTy(M), 0), EntriesE, in createRegisterGlobalsFunction()
489 ArrayRef<Constant *>({ConstantInt::get(getSizeTTy(M), 0), in createRegisterGlobalsFunction()
490 ConstantInt::get(getSizeTTy(M), 0)}))); in createRegisterGlobalsFunction()
493 ArrayType::get(offloading::getEntryTy(M), 0), EntriesB, in createRegisterGlobalsFunction()
494 ArrayRef<Constant *>({ConstantInt::get(getSizeTTy(M), 0), in createRegisterGlobalsFunction()
495 ConstantInt::get(getSizeTTy(M), 0)})), in createRegisterGlobalsFunction()
507 void createRegisterFatbinFunction(Module &M, GlobalVariable *FatbinDesc, in createRegisterFatbinFunction() argument
511 LLVMContext &C = M.getContext(); in createRegisterFatbinFunction()
515 (IsHIP ? ".hip.fatbin_reg" : ".cuda.fatbin_reg") + Suffix, &M); in createRegisterFatbinFunction()
521 (IsHIP ? ".hip.fatbin_unreg" : ".cuda.fatbin_unreg") + Suffix, &M); in createRegisterFatbinFunction()
528 FunctionCallee RegFatbin = M.getOrInsertFunction( in createRegisterFatbinFunction()
534 M.getOrInsertFunction("__cudaRegisterFatBinaryEnd", RegFatEndTy); in createRegisterFatbinFunction()
538 FunctionCallee UnregFatbin = M.getOrInsertFunction( in createRegisterFatbinFunction()
544 FunctionCallee AtExit = M.getOrInsertFunction("atexit", AtExitTy); in createRegisterFatbinFunction()
547 M, PtrTy, false, llvm::GlobalValue::InternalLinkage, in createRegisterFatbinFunction()
558 Align(M.getDataLayout().getPointerTypeSize(PtrTy))); in createRegisterFatbinFunction()
559 CtorBuilder.CreateCall(createRegisterGlobalsFunction(M, IsHIP, EntryArray, in createRegisterFatbinFunction()
574 Align(M.getDataLayout().getPointerTypeSize(PtrTy))); in createRegisterFatbinFunction()
579 appendToGlobalCtors(M, CtorFunc, /*Priority*/ 1); in createRegisterFatbinFunction()
583 Error offloading::wrapOpenMPBinaries(Module &M, ArrayRef<ArrayRef<char>> Images, in wrapOpenMPBinaries() argument
586 GlobalVariable *Desc = createBinDesc(M, Images, EntryArray, Suffix); in wrapOpenMPBinaries()
590 createRegisterFunction(M, Desc, Suffix); in wrapOpenMPBinaries()
591 createUnregisterFunction(M, Desc, Suffix); in wrapOpenMPBinaries()
595 Error offloading::wrapCudaBinary(Module &M, ArrayRef<char> Image, in wrapCudaBinary() argument
599 GlobalVariable *Desc = createFatbinDesc(M, Image, /*IsHip=*/false, Suffix); in wrapCudaBinary()
604 createRegisterFatbinFunction(M, Desc, /*IsHip=*/false, EntryArray, Suffix, in wrapCudaBinary()
609 Error offloading::wrapHIPBinary(Module &M, ArrayRef<char> Image, in wrapHIPBinary() argument
612 GlobalVariable *Desc = createFatbinDesc(M, Image, /*IsHip=*/true, Suffix); in wrapHIPBinary()
617 createRegisterFatbinFunction(M, Desc, /*IsHip=*/true, EntryArray, Suffix, in wrapHIPBinary()