|
reference, declaration → definition
definition → references, declarations, derived classes, virtual overrides
reference to multiple definitions → definitions
unreferenced
|
References
tools/clang/lib/CodeGen/CGOpenMPRuntime.cpp 1274 (void)CGM.GetAddrOfGlobal(NewGD);
1275 StringRef NewMangledName = CGM.getMangledName(NewGD);
1276 llvm::GlobalValue *Addr = CGM.GetGlobalValue(NewMangledName);
1279 const CGFunctionInfo &FI = CGM.getTypes().arrangeGlobalDeclaration(OldGD);
1280 llvm::Type *DeclTy = CGM.getTypes().GetFunctionType(FI);
1284 llvm::GlobalValue::LinkageTypes LT = CGM.getFunctionLinkage(OldGD);
1288 llvm::GlobalAlias::create(DeclTy, 0, LT, "", Addr, &CGM.getModule());
1298 GA->setName(CGM.getMangledName(OldGD));
1307 CGM.SetCommonAttributes(OldGD, GA);
1328 StringRef MangledName = CGM.getMangledName(Pair.second.second);
1329 llvm::GlobalValue *Addr = CGM.GetGlobalValue(MangledName);
1409 CGM, D->getType(), D->getCombiner(),
1416 CGM, D->getType(),
1474 CGM, D, CS, ThreadIDVar, InnermostKind, getOutlinedHelperName(), CodeGen);
1482 CGM, D, CS, ThreadIDVar, InnermostKind, getOutlinedHelperName(), CodeGen);
1511 CodeGenFunction CGF(CGM, true);
1568 CharUnits Align = CGM.getContext().getTypeAlignInChars(IdentQTy);
1579 CGM.GetAddrOfConstantCString(";unknown;unknown;0;0;;").getPointer();
1581 llvm::ConstantExpr::getBitCast(DefaultOpenMPPSource, CGM.Int8PtrTy);
1585 llvm::ConstantInt::getNullValue(CGM.Int32Ty),
1586 llvm::ConstantInt::get(CGM.Int32Ty, Flags),
1587 llvm::ConstantInt::get(CGM.Int32Ty, Reserved2Flags),
1588 llvm::ConstantInt::getNullValue(CGM.Int32Ty), DefaultOpenMPPSource};
1590 createGlobalStruct(CGM, IdentQTy, isDefaultLocationConstant(), Data, "",
1630 if (CGM.getCodeGenOpts().getDebugInfo() == codegenoptions::NoDebugInfo ||
1636 CharUnits Align = CGM.getContext().getTypeAlignInChars(IdentQTy);
1768 llvm::Type *MicroParams[] = {llvm::PointerType::getUnqual(CGM.Int32Ty),
1769 llvm::PointerType::getUnqual(CGM.Int32Ty)};
1770 Kmpc_MicroTy = llvm::FunctionType::get(CGM.VoidTy, MicroParams, true);
1781 llvm::Type *TypeParams[] = {getIdentTyPointerTy(), CGM.Int32Ty,
1784 llvm::FunctionType::get(CGM.VoidTy, TypeParams, /*isVarArg*/ true);
1785 RTLFn = CGM.CreateRuntimeFunction(FnTy, "__kmpc_fork_call");
1808 llvm::FunctionType::get(CGM.Int32Ty, TypeParams, /*isVarArg*/ false);
1809 RTLFn = CGM.CreateRuntimeFunction(FnTy, "__kmpc_global_thread_num");
1815 llvm::Type *TypeParams[] = {getIdentTyPointerTy(), CGM.Int32Ty,
1816 CGM.VoidPtrTy, CGM.SizeTy,
1816 CGM.VoidPtrTy, CGM.SizeTy,
1817 CGM.VoidPtrTy->getPointerTo()->getPointerTo()};
1819 llvm::FunctionType::get(CGM.VoidPtrTy, TypeParams, /*isVarArg*/ false);
1820 RTLFn = CGM.CreateRuntimeFunction(FnTy, "__kmpc_threadprivate_cached");
1827 getIdentTyPointerTy(), CGM.Int32Ty,
1830 llvm::FunctionType::get(CGM.VoidTy, TypeParams, /*isVarArg*/ false);
1831 RTLFn = CGM.CreateRuntimeFunction(FnTy, "__kmpc_critical");
1837 llvm::Type *TypeParams[] = {getIdentTyPointerTy(), CGM.Int32Ty,
1839 CGM.IntPtrTy};
1841 llvm::FunctionType::get(CGM.VoidTy, TypeParams, /*isVarArg*/ false);
1842 RTLFn = CGM.CreateRuntimeFunction(FnTy, "__kmpc_critical_with_hint");
1850 llvm::FunctionType::get(CGM.VoidPtrTy, CGM.VoidPtrTy,
1850 llvm::FunctionType::get(CGM.VoidPtrTy, CGM.VoidPtrTy,
1853 llvm::Type *KmpcCopyCtorTyArgs[] = {CGM.VoidPtrTy, CGM.VoidPtrTy};
1853 llvm::Type *KmpcCopyCtorTyArgs[] = {CGM.VoidPtrTy, CGM.VoidPtrTy};
1855 llvm::FunctionType::get(CGM.VoidPtrTy, KmpcCopyCtorTyArgs,
1860 llvm::FunctionType::get(CGM.VoidTy, CGM.VoidPtrTy, /*isVarArg*/ false)
1860 llvm::FunctionType::get(CGM.VoidTy, CGM.VoidPtrTy, /*isVarArg*/ false)
1862 llvm::Type *FnTyArgs[] = {getIdentTyPointerTy(), CGM.VoidPtrTy, KmpcCtorTy,
1864 auto *FnTy = llvm::FunctionType::get(CGM.VoidTy, FnTyArgs,
1866 RTLFn = CGM.CreateRuntimeFunction(FnTy, "__kmpc_threadprivate_register");
1873 getIdentTyPointerTy(), CGM.Int32Ty,
1876 llvm::FunctionType::get(CGM.VoidTy, TypeParams, /*isVarArg*/ false);
1877 RTLFn = CGM.CreateRuntimeFunction(FnTy, "__kmpc_end_critical");
1883 llvm::Type *TypeParams[] = {getIdentTyPointerTy(), CGM.Int32Ty};
1885 llvm::FunctionType::get(CGM.Int32Ty, TypeParams, /*isVarArg*/ false);
1886 RTLFn = CGM.CreateRuntimeFunction(FnTy, /*Name*/ "__kmpc_cancel_barrier");
1891 llvm::Type *TypeParams[] = {getIdentTyPointerTy(), CGM.Int32Ty};
1893 llvm::FunctionType::get(CGM.VoidTy, TypeParams, /*isVarArg*/ false);
1894 RTLFn = CGM.CreateRuntimeFunction(FnTy, /*Name*/ "__kmpc_barrier");
1899 llvm::Type *TypeParams[] = {getIdentTyPointerTy(), CGM.Int32Ty};
1901 llvm::FunctionType::get(CGM.VoidTy, TypeParams, /*isVarArg*/ false);
1902 RTLFn = CGM.CreateRuntimeFunction(FnTy, "__kmpc_for_static_fini");
1908 llvm::Type *TypeParams[] = {getIdentTyPointerTy(), CGM.Int32Ty,
1909 CGM.Int32Ty};
1911 llvm::FunctionType::get(CGM.VoidTy, TypeParams, /*isVarArg*/ false);
1912 RTLFn = CGM.CreateRuntimeFunction(FnTy, "__kmpc_push_num_threads");
1918 llvm::Type *TypeParams[] = {getIdentTyPointerTy(), CGM.Int32Ty};
1920 llvm::FunctionType::get(CGM.VoidTy, TypeParams, /*isVarArg*/ false);
1921 RTLFn = CGM.CreateRuntimeFunction(FnTy, "__kmpc_serialized_parallel");
1927 llvm::Type *TypeParams[] = {getIdentTyPointerTy(), CGM.Int32Ty};
1929 llvm::FunctionType::get(CGM.VoidTy, TypeParams, /*isVarArg*/ false);
1930 RTLFn = CGM.CreateRuntimeFunction(FnTy, "__kmpc_end_serialized_parallel");
1937 llvm::FunctionType::get(CGM.VoidTy, TypeParams, /*isVarArg*/ false);
1938 RTLFn = CGM.CreateRuntimeFunction(FnTy, "__kmpc_flush");
1943 llvm::Type *TypeParams[] = {getIdentTyPointerTy(), CGM.Int32Ty};
1945 llvm::FunctionType::get(CGM.Int32Ty, TypeParams, /*isVarArg=*/false);
1946 RTLFn = CGM.CreateRuntimeFunction(FnTy, /*Name=*/"__kmpc_master");
1951 llvm::Type *TypeParams[] = {getIdentTyPointerTy(), CGM.Int32Ty};
1953 llvm::FunctionType::get(CGM.VoidTy, TypeParams, /*isVarArg=*/false);
1954 RTLFn = CGM.CreateRuntimeFunction(FnTy, /*Name=*/"__kmpc_end_master");
1960 llvm::Type *TypeParams[] = {getIdentTyPointerTy(), CGM.Int32Ty, CGM.IntTy};
1960 llvm::Type *TypeParams[] = {getIdentTyPointerTy(), CGM.Int32Ty, CGM.IntTy};
1962 llvm::FunctionType::get(CGM.Int32Ty, TypeParams, /*isVarArg=*/false);
1963 RTLFn = CGM.CreateRuntimeFunction(FnTy, /*Name=*/"__kmpc_omp_taskyield");
1968 llvm::Type *TypeParams[] = {getIdentTyPointerTy(), CGM.Int32Ty};
1970 llvm::FunctionType::get(CGM.Int32Ty, TypeParams, /*isVarArg=*/false);
1971 RTLFn = CGM.CreateRuntimeFunction(FnTy, /*Name=*/"__kmpc_single");
1976 llvm::Type *TypeParams[] = {getIdentTyPointerTy(), CGM.Int32Ty};
1978 llvm::FunctionType::get(CGM.VoidTy, TypeParams, /*isVarArg=*/false);
1979 RTLFn = CGM.CreateRuntimeFunction(FnTy, /*Name=*/"__kmpc_end_single");
1988 llvm::Type *TypeParams[] = {getIdentTyPointerTy(), CGM.Int32Ty, CGM.Int32Ty,
1988 llvm::Type *TypeParams[] = {getIdentTyPointerTy(), CGM.Int32Ty, CGM.Int32Ty,
1989 CGM.SizeTy, CGM.SizeTy, KmpRoutineEntryPtrTy};
1989 CGM.SizeTy, CGM.SizeTy, KmpRoutineEntryPtrTy};
1992 llvm::FunctionType::get(CGM.VoidPtrTy, TypeParams, /*isVarArg=*/false);
1993 RTLFn = CGM.CreateRuntimeFunction(FnTy, /*Name=*/"__kmpc_omp_task_alloc");
2002 llvm::Type *TypeParams[] = {getIdentTyPointerTy(), CGM.Int32Ty, CGM.Int32Ty,
2002 llvm::Type *TypeParams[] = {getIdentTyPointerTy(), CGM.Int32Ty, CGM.Int32Ty,
2003 CGM.SizeTy, CGM.SizeTy, KmpRoutineEntryPtrTy,
2003 CGM.SizeTy, CGM.SizeTy, KmpRoutineEntryPtrTy,
2004 CGM.Int64Ty};
2007 llvm::FunctionType::get(CGM.VoidPtrTy, TypeParams, /*isVarArg=*/false);
2008 RTLFn = CGM.CreateRuntimeFunction(FnTy, /*Name=*/"__kmpc_omp_target_task_alloc");
2014 llvm::Type *TypeParams[] = {getIdentTyPointerTy(), CGM.Int32Ty,
2015 CGM.VoidPtrTy};
2017 llvm::FunctionType::get(CGM.Int32Ty, TypeParams, /*isVarArg=*/false);
2018 RTLFn = CGM.CreateRuntimeFunction(FnTy, /*Name=*/"__kmpc_omp_task");
2025 llvm::Type *CpyTypeParams[] = {CGM.VoidPtrTy, CGM.VoidPtrTy};
2025 llvm::Type *CpyTypeParams[] = {CGM.VoidPtrTy, CGM.VoidPtrTy};
2027 llvm::FunctionType::get(CGM.VoidTy, CpyTypeParams, /*isVarArg=*/false);
2028 llvm::Type *TypeParams[] = {getIdentTyPointerTy(), CGM.Int32Ty, CGM.SizeTy,
2028 llvm::Type *TypeParams[] = {getIdentTyPointerTy(), CGM.Int32Ty, CGM.SizeTy,
2029 CGM.VoidPtrTy, CpyFnTy->getPointerTo(),
2030 CGM.Int32Ty};
2032 llvm::FunctionType::get(CGM.VoidTy, TypeParams, /*isVarArg=*/false);
2033 RTLFn = CGM.CreateRuntimeFunction(FnTy, /*Name=*/"__kmpc_copyprivate");
2040 llvm::Type *ReduceTypeParams[] = {CGM.VoidPtrTy, CGM.VoidPtrTy};
2040 llvm::Type *ReduceTypeParams[] = {CGM.VoidPtrTy, CGM.VoidPtrTy};
2041 auto *ReduceFnTy = llvm::FunctionType::get(CGM.VoidTy, ReduceTypeParams,
2044 getIdentTyPointerTy(), CGM.Int32Ty, CGM.Int32Ty, CGM.SizeTy,
2044 getIdentTyPointerTy(), CGM.Int32Ty, CGM.Int32Ty, CGM.SizeTy,
2044 getIdentTyPointerTy(), CGM.Int32Ty, CGM.Int32Ty, CGM.SizeTy,
2045 CGM.VoidPtrTy, ReduceFnTy->getPointerTo(),
2048 llvm::FunctionType::get(CGM.Int32Ty, TypeParams, /*isVarArg=*/false);
2049 RTLFn = CGM.CreateRuntimeFunction(FnTy, /*Name=*/"__kmpc_reduce");
2057 llvm::Type *ReduceTypeParams[] = {CGM.VoidPtrTy, CGM.VoidPtrTy};
2057 llvm::Type *ReduceTypeParams[] = {CGM.VoidPtrTy, CGM.VoidPtrTy};
2058 auto *ReduceFnTy = llvm::FunctionType::get(CGM.VoidTy, ReduceTypeParams,
2061 getIdentTyPointerTy(), CGM.Int32Ty, CGM.Int32Ty, CGM.SizeTy,
2061 getIdentTyPointerTy(), CGM.Int32Ty, CGM.Int32Ty, CGM.SizeTy,
2061 getIdentTyPointerTy(), CGM.Int32Ty, CGM.Int32Ty, CGM.SizeTy,
2062 CGM.VoidPtrTy, ReduceFnTy->getPointerTo(),
2065 llvm::FunctionType::get(CGM.Int32Ty, TypeParams, /*isVarArg=*/false);
2066 RTLFn = CGM.CreateRuntimeFunction(FnTy, /*Name=*/"__kmpc_reduce_nowait");
2073 getIdentTyPointerTy(), CGM.Int32Ty,
2076 llvm::FunctionType::get(CGM.VoidTy, TypeParams, /*isVarArg=*/false);
2077 RTLFn = CGM.CreateRuntimeFunction(FnTy, /*Name=*/"__kmpc_end_reduce");
2084 getIdentTyPointerTy(), CGM.Int32Ty,
2087 llvm::FunctionType::get(CGM.VoidTy, TypeParams, /*isVarArg=*/false);
2089 CGM.CreateRuntimeFunction(FnTy, /*Name=*/"__kmpc_end_reduce_nowait");
2095 llvm::Type *TypeParams[] = {getIdentTyPointerTy(), CGM.Int32Ty,
2096 CGM.VoidPtrTy};
2098 llvm::FunctionType::get(CGM.VoidTy, TypeParams, /*isVarArg=*/false);
2100 CGM.CreateRuntimeFunction(FnTy, /*Name=*/"__kmpc_omp_task_begin_if0");
2106 llvm::Type *TypeParams[] = {getIdentTyPointerTy(), CGM.Int32Ty,
2107 CGM.VoidPtrTy};
2109 llvm::FunctionType::get(CGM.VoidTy, TypeParams, /*isVarArg=*/false);
2110 RTLFn = CGM.CreateRuntimeFunction(FnTy,
2116 llvm::Type *TypeParams[] = {getIdentTyPointerTy(), CGM.Int32Ty};
2118 llvm::FunctionType::get(CGM.VoidTy, TypeParams, /*isVarArg=*/false);
2119 RTLFn = CGM.CreateRuntimeFunction(FnTy, "__kmpc_ordered");
2124 llvm::Type *TypeParams[] = {getIdentTyPointerTy(), CGM.Int32Ty};
2126 llvm::FunctionType::get(CGM.VoidTy, TypeParams, /*isVarArg=*/false);
2127 RTLFn = CGM.CreateRuntimeFunction(FnTy, "__kmpc_end_ordered");
2132 llvm::Type *TypeParams[] = {getIdentTyPointerTy(), CGM.Int32Ty};
2134 llvm::FunctionType::get(CGM.Int32Ty, TypeParams, /*isVarArg=*/false);
2135 RTLFn = CGM.CreateRuntimeFunction(FnTy, "__kmpc_omp_taskwait");
2140 llvm::Type *TypeParams[] = {getIdentTyPointerTy(), CGM.Int32Ty};
2142 llvm::FunctionType::get(CGM.VoidTy, TypeParams, /*isVarArg=*/false);
2143 RTLFn = CGM.CreateRuntimeFunction(FnTy, "__kmpc_taskgroup");
2148 llvm::Type *TypeParams[] = {getIdentTyPointerTy(), CGM.Int32Ty};
2150 llvm::FunctionType::get(CGM.VoidTy, TypeParams, /*isVarArg=*/false);
2151 RTLFn = CGM.CreateRuntimeFunction(FnTy, "__kmpc_end_taskgroup");
2157 llvm::Type *TypeParams[] = {getIdentTyPointerTy(), CGM.Int32Ty, CGM.IntTy};
2157 llvm::Type *TypeParams[] = {getIdentTyPointerTy(), CGM.Int32Ty, CGM.IntTy};
2159 llvm::FunctionType::get(CGM.VoidTy, TypeParams, /*isVarArg*/ false);
2160 RTLFn = CGM.CreateRuntimeFunction(FnTy, "__kmpc_push_proc_bind");
2168 getIdentTyPointerTy(), CGM.Int32Ty, CGM.VoidPtrTy, CGM.Int32Ty,
2168 getIdentTyPointerTy(), CGM.Int32Ty, CGM.VoidPtrTy, CGM.Int32Ty,
2168 getIdentTyPointerTy(), CGM.Int32Ty, CGM.VoidPtrTy, CGM.Int32Ty,
2169 CGM.VoidPtrTy, CGM.Int32Ty, CGM.VoidPtrTy};
2169 CGM.VoidPtrTy, CGM.Int32Ty, CGM.VoidPtrTy};
2169 CGM.VoidPtrTy, CGM.Int32Ty, CGM.VoidPtrTy};
2171 llvm::FunctionType::get(CGM.Int32Ty, TypeParams, /*isVarArg=*/false);
2173 CGM.CreateRuntimeFunction(FnTy, /*Name=*/"__kmpc_omp_task_with_deps");
2180 llvm::Type *TypeParams[] = {getIdentTyPointerTy(), CGM.Int32Ty,
2181 CGM.Int32Ty, CGM.VoidPtrTy,
2181 CGM.Int32Ty, CGM.VoidPtrTy,
2182 CGM.Int32Ty, CGM.VoidPtrTy};
2182 CGM.Int32Ty, CGM.VoidPtrTy};
2184 llvm::FunctionType::get(CGM.VoidTy, TypeParams, /*isVarArg=*/false);
2185 RTLFn = CGM.CreateRuntimeFunction(FnTy, /*Name=*/"__kmpc_omp_wait_deps");
2191 llvm::Type *TypeParams[] = {getIdentTyPointerTy(), CGM.Int32Ty, CGM.IntTy};
2191 llvm::Type *TypeParams[] = {getIdentTyPointerTy(), CGM.Int32Ty, CGM.IntTy};
2193 llvm::FunctionType::get(CGM.Int32Ty, TypeParams, /*isVarArg*/ false);
2194 RTLFn = CGM.CreateRuntimeFunction(FnTy, "__kmpc_cancellationpoint");
2200 llvm::Type *TypeParams[] = {getIdentTyPointerTy(), CGM.Int32Ty, CGM.IntTy};
2200 llvm::Type *TypeParams[] = {getIdentTyPointerTy(), CGM.Int32Ty, CGM.IntTy};
2202 llvm::FunctionType::get(CGM.Int32Ty, TypeParams, /*isVarArg*/ false);
2203 RTLFn = CGM.CreateRuntimeFunction(FnTy, "__kmpc_cancel");
2209 llvm::Type *TypeParams[] = {getIdentTyPointerTy(), CGM.Int32Ty, CGM.Int32Ty,
2209 llvm::Type *TypeParams[] = {getIdentTyPointerTy(), CGM.Int32Ty, CGM.Int32Ty,
2210 CGM.Int32Ty};
2212 llvm::FunctionType::get(CGM.Int32Ty, TypeParams, /*isVarArg*/ false);
2213 RTLFn = CGM.CreateRuntimeFunction(FnTy, "__kmpc_push_num_teams");
2219 llvm::Type *TypeParams[] = {getIdentTyPointerTy(), CGM.Int32Ty,
2222 llvm::FunctionType::get(CGM.VoidTy, TypeParams, /*isVarArg*/ true);
2223 RTLFn = CGM.CreateRuntimeFunction(FnTy, "__kmpc_fork_teams");
2247 CGM.IntTy,
2248 CGM.VoidPtrTy,
2249 CGM.IntTy,
2250 CGM.Int64Ty->getPointerTo(),
2251 CGM.Int64Ty->getPointerTo(),
2252 CGM.Int64Ty,
2253 CGM.IntTy,
2254 CGM.IntTy,
2255 CGM.Int64Ty,
2256 CGM.VoidPtrTy};
2258 llvm::FunctionType::get(CGM.VoidTy, TypeParams, /*isVarArg=*/false);
2259 RTLFn = CGM.CreateRuntimeFunction(FnTy, /*Name=*/"__kmpc_taskloop");
2266 CGM.Int32Ty,
2267 CGM.Int32Ty,
2268 CGM.VoidPtrTy};
2270 llvm::FunctionType::get(CGM.VoidTy, TypeParams, /*isVarArg=*/false);
2271 RTLFn = CGM.CreateRuntimeFunction(FnTy, /*Name=*/"__kmpc_doacross_init");
2276 llvm::Type *TypeParams[] = {getIdentTyPointerTy(), CGM.Int32Ty};
2278 llvm::FunctionType::get(CGM.VoidTy, TypeParams, /*isVarArg=*/false);
2279 RTLFn = CGM.CreateRuntimeFunction(FnTy, /*Name=*/"__kmpc_doacross_fini");
2285 llvm::Type *TypeParams[] = {getIdentTyPointerTy(), CGM.Int32Ty,
2286 CGM.Int64Ty->getPointerTo()};
2288 llvm::FunctionType::get(CGM.VoidTy, TypeParams, /*isVarArg=*/false);
2289 RTLFn = CGM.CreateRuntimeFunction(FnTy, /*Name=*/"__kmpc_doacross_post");
2295 llvm::Type *TypeParams[] = {getIdentTyPointerTy(), CGM.Int32Ty,
2296 CGM.Int64Ty->getPointerTo()};
2298 llvm::FunctionType::get(CGM.VoidTy, TypeParams, /*isVarArg=*/false);
2299 RTLFn = CGM.CreateRuntimeFunction(FnTy, /*Name=*/"__kmpc_doacross_wait");
2305 llvm::Type *TypeParams[] = {CGM.IntTy, CGM.IntTy, CGM.VoidPtrTy};
2305 llvm::Type *TypeParams[] = {CGM.IntTy, CGM.IntTy, CGM.VoidPtrTy};
2305 llvm::Type *TypeParams[] = {CGM.IntTy, CGM.IntTy, CGM.VoidPtrTy};
2307 llvm::FunctionType::get(CGM.VoidPtrTy, TypeParams, /*isVarArg=*/false);
2309 CGM.CreateRuntimeFunction(FnTy, /*Name=*/"__kmpc_task_reduction_init");
2315 llvm::Type *TypeParams[] = {CGM.IntTy, CGM.VoidPtrTy, CGM.VoidPtrTy};
2315 llvm::Type *TypeParams[] = {CGM.IntTy, CGM.VoidPtrTy, CGM.VoidPtrTy};
2315 llvm::Type *TypeParams[] = {CGM.IntTy, CGM.VoidPtrTy, CGM.VoidPtrTy};
2317 llvm::FunctionType::get(CGM.VoidPtrTy, TypeParams, /*isVarArg=*/false);
2318 RTLFn = CGM.CreateRuntimeFunction(
2325 llvm::Type *TypeParams[] = {CGM.IntTy, CGM.SizeTy, CGM.VoidPtrTy};
2325 llvm::Type *TypeParams[] = {CGM.IntTy, CGM.SizeTy, CGM.VoidPtrTy};
2325 llvm::Type *TypeParams[] = {CGM.IntTy, CGM.SizeTy, CGM.VoidPtrTy};
2327 llvm::FunctionType::get(CGM.VoidPtrTy, TypeParams, /*isVarArg=*/false);
2328 RTLFn = CGM.CreateRuntimeFunction(FnTy, /*Name=*/"__kmpc_alloc");
2334 llvm::Type *TypeParams[] = {CGM.IntTy, CGM.VoidPtrTy, CGM.VoidPtrTy};
2334 llvm::Type *TypeParams[] = {CGM.IntTy, CGM.VoidPtrTy, CGM.VoidPtrTy};
2334 llvm::Type *TypeParams[] = {CGM.IntTy, CGM.VoidPtrTy, CGM.VoidPtrTy};
2336 llvm::FunctionType::get(CGM.VoidTy, TypeParams, /*isVarArg=*/false);
2337 RTLFn = CGM.CreateRuntimeFunction(FnTy, /*Name=*/"__kmpc_free");
2343 llvm::Type *TypeParams[] = {CGM.Int64Ty, CGM.Int64Ty};
2343 llvm::Type *TypeParams[] = {CGM.Int64Ty, CGM.Int64Ty};
2345 llvm::FunctionType::get(CGM.VoidTy, TypeParams, /*isVarArg=*/false);
2346 RTLFn = CGM.CreateRuntimeFunction(FnTy, "__kmpc_push_target_tripcount");
2353 llvm::Type *TypeParams[] = {CGM.Int64Ty,
2354 CGM.VoidPtrTy,
2355 CGM.Int32Ty,
2356 CGM.VoidPtrPtrTy,
2357 CGM.VoidPtrPtrTy,
2358 CGM.Int64Ty->getPointerTo(),
2359 CGM.Int64Ty->getPointerTo()};
2361 llvm::FunctionType::get(CGM.Int32Ty, TypeParams, /*isVarArg*/ false);
2362 RTLFn = CGM.CreateRuntimeFunction(FnTy, "__tgt_target");
2369 llvm::Type *TypeParams[] = {CGM.Int64Ty,
2370 CGM.VoidPtrTy,
2371 CGM.Int32Ty,
2372 CGM.VoidPtrPtrTy,
2373 CGM.VoidPtrPtrTy,
2374 CGM.Int64Ty->getPointerTo(),
2375 CGM.Int64Ty->getPointerTo()};
2377 llvm::FunctionType::get(CGM.Int32Ty, TypeParams, /*isVarArg*/ false);
2378 RTLFn = CGM.CreateRuntimeFunction(FnTy, "__tgt_target_nowait");
2385 llvm::Type *TypeParams[] = {CGM.Int64Ty,
2386 CGM.VoidPtrTy,
2387 CGM.Int32Ty,
2388 CGM.VoidPtrPtrTy,
2389 CGM.VoidPtrPtrTy,
2390 CGM.Int64Ty->getPointerTo(),
2391 CGM.Int64Ty->getPointerTo(),
2392 CGM.Int32Ty,
2393 CGM.Int32Ty};
2395 llvm::FunctionType::get(CGM.Int32Ty, TypeParams, /*isVarArg*/ false);
2396 RTLFn = CGM.CreateRuntimeFunction(FnTy, "__tgt_target_teams");
2403 llvm::Type *TypeParams[] = {CGM.Int64Ty,
2404 CGM.VoidPtrTy,
2405 CGM.Int32Ty,
2406 CGM.VoidPtrPtrTy,
2407 CGM.VoidPtrPtrTy,
2408 CGM.Int64Ty->getPointerTo(),
2409 CGM.Int64Ty->getPointerTo(),
2410 CGM.Int32Ty,
2411 CGM.Int32Ty};
2413 llvm::FunctionType::get(CGM.Int32Ty, TypeParams, /*isVarArg*/ false);
2414 RTLFn = CGM.CreateRuntimeFunction(FnTy, "__tgt_target_teams_nowait");
2419 llvm::Type *TypeParams[] = {CGM.Int64Ty};
2421 llvm::FunctionType::get(CGM.VoidTy, TypeParams, /*isVarArg*/ false);
2422 RTLFn = CGM.CreateRuntimeFunction(FnTy, "__tgt_register_requires");
2428 CGM.getContext().getPointerType(getTgtBinaryDescriptorQTy());
2429 llvm::Type *TypeParams[] = {CGM.getTypes().ConvertTypeForMem(ParamTy)};
2431 llvm::FunctionType::get(CGM.Int32Ty, TypeParams, /*isVarArg*/ false);
2432 RTLFn = CGM.CreateRuntimeFunction(FnTy, "__tgt_register_lib");
2438 CGM.getContext().getPointerType(getTgtBinaryDescriptorQTy());
2439 llvm::Type *TypeParams[] = {CGM.getTypes().ConvertTypeForMem(ParamTy)};
2441 llvm::FunctionType::get(CGM.Int32Ty, TypeParams, /*isVarArg*/ false);
2442 RTLFn = CGM.CreateRuntimeFunction(FnTy, "__tgt_unregister_lib");
2448 llvm::Type *TypeParams[] = {CGM.Int64Ty,
2449 CGM.Int32Ty,
2450 CGM.VoidPtrPtrTy,
2451 CGM.VoidPtrPtrTy,
2452 CGM.Int64Ty->getPointerTo(),
2453 CGM.Int64Ty->getPointerTo()};
2455 llvm::FunctionType::get(CGM.VoidTy, TypeParams, /*isVarArg*/ false);
2456 RTLFn = CGM.CreateRuntimeFunction(FnTy, "__tgt_target_data_begin");
2463 llvm::Type *TypeParams[] = {CGM.Int64Ty,
2464 CGM.Int32Ty,
2465 CGM.VoidPtrPtrTy,
2466 CGM.VoidPtrPtrTy,
2467 CGM.Int64Ty->getPointerTo(),
2468 CGM.Int64Ty->getPointerTo()};
2470 llvm::FunctionType::get(CGM.VoidTy, TypeParams, /*isVarArg=*/false);
2471 RTLFn = CGM.CreateRuntimeFunction(FnTy, "__tgt_target_data_begin_nowait");
2477 llvm::Type *TypeParams[] = {CGM.Int64Ty,
2478 CGM.Int32Ty,
2479 CGM.VoidPtrPtrTy,
2480 CGM.VoidPtrPtrTy,
2481 CGM.Int64Ty->getPointerTo(),
2482 CGM.Int64Ty->getPointerTo()};
2484 llvm::FunctionType::get(CGM.VoidTy, TypeParams, /*isVarArg*/ false);
2485 RTLFn = CGM.CreateRuntimeFunction(FnTy, "__tgt_target_data_end");
2492 llvm::Type *TypeParams[] = {CGM.Int64Ty,
2493 CGM.Int32Ty,
2494 CGM.VoidPtrPtrTy,
2495 CGM.VoidPtrPtrTy,
2496 CGM.Int64Ty->getPointerTo(),
2497 CGM.Int64Ty->getPointerTo()};
2499 llvm::FunctionType::get(CGM.VoidTy, TypeParams, /*isVarArg=*/false);
2500 RTLFn = CGM.CreateRuntimeFunction(FnTy, "__tgt_target_data_end_nowait");
2506 llvm::Type *TypeParams[] = {CGM.Int64Ty,
2507 CGM.Int32Ty,
2508 CGM.VoidPtrPtrTy,
2509 CGM.VoidPtrPtrTy,
2510 CGM.Int64Ty->getPointerTo(),
2511 CGM.Int64Ty->getPointerTo()};
2513 llvm::FunctionType::get(CGM.VoidTy, TypeParams, /*isVarArg*/ false);
2514 RTLFn = CGM.CreateRuntimeFunction(FnTy, "__tgt_target_data_update");
2521 llvm::Type *TypeParams[] = {CGM.Int64Ty,
2522 CGM.Int32Ty,
2523 CGM.VoidPtrPtrTy,
2524 CGM.VoidPtrPtrTy,
2525 CGM.Int64Ty->getPointerTo(),
2526 CGM.Int64Ty->getPointerTo()};
2528 llvm::FunctionType::get(CGM.VoidTy, TypeParams, /*isVarArg=*/false);
2529 RTLFn = CGM.CreateRuntimeFunction(FnTy, "__tgt_target_data_update_nowait");
2534 llvm::Type *TypeParams[] = {CGM.VoidPtrTy};
2536 llvm::FunctionType::get(CGM.Int64Ty, TypeParams, /*isVarArg*/ false);
2537 RTLFn = CGM.CreateRuntimeFunction(FnTy, "__tgt_mapper_num_components");
2543 llvm::Type *TypeParams[] = {CGM.VoidPtrTy, CGM.VoidPtrTy, CGM.VoidPtrTy,
2543 llvm::Type *TypeParams[] = {CGM.VoidPtrTy, CGM.VoidPtrTy, CGM.VoidPtrTy,
2543 llvm::Type *TypeParams[] = {CGM.VoidPtrTy, CGM.VoidPtrTy, CGM.VoidPtrTy,
2544 CGM.Int64Ty, CGM.Int64Ty};
2544 CGM.Int64Ty, CGM.Int64Ty};
2546 llvm::FunctionType::get(CGM.VoidTy, TypeParams, /*isVarArg*/ false);
2547 RTLFn = CGM.CreateRuntimeFunction(FnTy, "__tgt_push_mapper_component");
2563 llvm::Type *ITy = IVSize == 32 ? CGM.Int32Ty : CGM.Int64Ty;
2563 llvm::Type *ITy = IVSize == 32 ? CGM.Int32Ty : CGM.Int64Ty;
2567 CGM.Int32Ty, // tid
2568 CGM.Int32Ty, // schedtype
2569 llvm::PointerType::getUnqual(CGM.Int32Ty), // p_lastiter
2577 llvm::FunctionType::get(CGM.VoidTy, TypeParams, /*isVarArg*/ false);
2578 return CGM.CreateRuntimeFunction(FnTy, Name);
2589 llvm::Type *ITy = IVSize == 32 ? CGM.Int32Ty : CGM.Int64Ty;
2589 llvm::Type *ITy = IVSize == 32 ? CGM.Int32Ty : CGM.Int64Ty;
2591 CGM.Int32Ty, // tid
2592 CGM.Int32Ty, // schedtype
2599 llvm::FunctionType::get(CGM.VoidTy, TypeParams, /*isVarArg*/ false);
2600 return CGM.CreateRuntimeFunction(FnTy, Name);
2613 CGM.Int32Ty, // tid
2616 llvm::FunctionType::get(CGM.VoidTy, TypeParams, /*isVarArg=*/false);
2617 return CGM.CreateRuntimeFunction(FnTy, Name);
2628 llvm::Type *ITy = IVSize == 32 ? CGM.Int32Ty : CGM.Int64Ty;
2628 llvm::Type *ITy = IVSize == 32 ? CGM.Int32Ty : CGM.Int64Ty;
2632 CGM.Int32Ty, // tid
2633 llvm::PointerType::getUnqual(CGM.Int32Ty), // p_lastiter
2639 llvm::FunctionType::get(CGM.Int32Ty, TypeParams, /*isVarArg*/ false);
2640 return CGM.CreateRuntimeFunction(FnTy, Name);
2670 if (CGM.getLangOpts().OpenMPSimd)
2680 OS << CGM.getMangledName(GlobalDecl(VD));
2683 getTargetEntryUniqueInfo(CGM.getContext(),
2690 llvm::Value *Ptr = CGM.getModule().getNamedValue(PtrName);
2692 QualType PtrTy = CGM.getContext().getPointerType(VD->getType());
2693 Ptr = getOrCreateInternalVariable(CGM.getTypes().ConvertTypeForMem(PtrTy),
2699 if (!CGM.getLangOpts().OpenMPIsDevice)
2700 GV->setInitializer(CGM.GetAddrOfGlobal(VD));
2703 return Address(Ptr, CGM.getContext().getDeclAlign(VD));
2710 assert(!CGM.getLangOpts().OpenMPUseTLS ||
2711 !CGM.getContext().getTargetInfo().isTLSSupported());
2715 CGM.Int8PtrPtrTy, Twine(CGM.getMangledName(VD)).concat(Suffix));
2715 CGM.Int8PtrPtrTy, Twine(CGM.getMangledName(VD)).concat(Suffix));
2722 if (CGM.getLangOpts().OpenMPUseTLS &&
2723 CGM.getContext().getTargetInfo().isTLSSupported())
2729 CGM.Int8PtrTy),
2730 CGM.getSize(CGM.GetTargetTypeStoreSize(VarTy)),
2730 CGM.getSize(CGM.GetTargetTypeStoreSize(VarTy)),
2748 OMPLoc, CGF.Builder.CreatePointerCast(VDAddr.getPointer(), CGM.VoidPtrTy),
2757 if (CGM.getLangOpts().OpenMPUseTLS &&
2758 CGM.getContext().getTargetInfo().isTLSSupported())
2761 VD = VD->getDefinition(CGM.getContext());
2762 if (VD && ThreadPrivateWithDefinition.insert(CGM.getMangledName(VD)).second) {
2767 if (CGM.getLangOpts().CPlusPlus && PerformInit) {
2770 CodeGenFunction CtorCGF(CGM);
2772 ImplicitParamDecl Dst(CGM.getContext(), /*DC=*/nullptr, Loc,
2773 /*Id=*/nullptr, CGM.getContext().VoidPtrTy,
2777 const auto &FI = CGM.getTypes().arrangeBuiltinFunctionDeclaration(
2778 CGM.getContext().VoidPtrTy, Args);
2779 llvm::FunctionType *FTy = CGM.getTypes().GetFunctionType(FI);
2782 CGM.CreateGlobalInitOrDestructFunction(FTy, Name, FI, Loc);
2783 CtorCGF.StartFunction(GlobalDecl(), CGM.getContext().VoidPtrTy, Fn, FI,
2787 CGM.getContext().VoidPtrTy, Dst.getLocation());
2795 CGM.getContext().VoidPtrTy, Dst.getLocation());
2803 CodeGenFunction DtorCGF(CGM);
2805 ImplicitParamDecl Dst(CGM.getContext(), /*DC=*/nullptr, Loc,
2806 /*Id=*/nullptr, CGM.getContext().VoidPtrTy,
2810 const auto &FI = CGM.getTypes().arrangeBuiltinFunctionDeclaration(
2811 CGM.getContext().VoidTy, Args);
2812 llvm::FunctionType *FTy = CGM.getTypes().GetFunctionType(FI);
2815 CGM.CreateGlobalInitOrDestructFunction(FTy, Name, FI, Loc);
2817 DtorCGF.StartFunction(GlobalDecl(), CGM.getContext().VoidTy, Fn, FI, Args,
2823 /*Volatile=*/false, CGM.getContext().VoidPtrTy, Dst.getLocation());
2834 llvm::Type *CopyCtorTyArgs[] = {CGM.VoidPtrTy, CGM.VoidPtrTy};
2834 llvm::Type *CopyCtorTyArgs[] = {CGM.VoidPtrTy, CGM.VoidPtrTy};
2835 auto *CopyCtorTy = llvm::FunctionType::get(CGM.VoidPtrTy, CopyCtorTyArgs,
2843 auto *CtorTy = llvm::FunctionType::get(CGM.VoidPtrTy, CGM.VoidPtrTy,
2843 auto *CtorTy = llvm::FunctionType::get(CGM.VoidPtrTy, CGM.VoidPtrTy,
2849 auto *DtorTy = llvm::FunctionType::get(CGM.VoidTy, CGM.VoidPtrTy,
2849 auto *DtorTy = llvm::FunctionType::get(CGM.VoidTy, CGM.VoidPtrTy,
2856 llvm::FunctionType::get(CGM.VoidTy, /*isVarArg*/ false);
2858 llvm::Function *InitFunction = CGM.CreateGlobalInitOrDestructFunction(
2859 InitFunctionTy, Name, CGM.getTypes().arrangeNullaryFunction());
2860 CodeGenFunction InitCGF(CGM);
2862 InitCGF.StartFunction(GlobalDecl(), CGM.getContext().VoidTy, InitFunction,
2863 CGM.getTypes().arrangeNullaryFunction(), ArgList,
2877 if (CGM.getLangOpts().OMPTargetTriples.empty() &&
2878 !CGM.getLangOpts().OpenMPIsDevice)
2885 return CGM.getLangOpts().OpenMPIsDevice;
2886 VD = VD->getDefinition(CGM.getContext());
2887 if (VD && !DeclareTargetWithDefinition.insert(CGM.getMangledName(VD)).second)
2888 return CGM.getLangOpts().OpenMPIsDevice;
2899 getTargetEntryUniqueInfo(CGM.getContext(), Loc, DeviceID, FileID, Line);
2908 if (CGM.getLangOpts().CPlusPlus && PerformInit) {
2911 if (CGM.getLangOpts().OpenMPIsDevice) {
2914 CodeGenFunction CtorCGF(CGM);
2916 const CGFunctionInfo &FI = CGM.getTypes().arrangeNullaryFunction();
2917 llvm::FunctionType *FTy = CGM.getTypes().GetFunctionType(FI);
2918 llvm::Function *Fn = CGM.CreateGlobalInitOrDestructFunction(
2921 CtorCGF.StartFunction(GlobalDecl(), CGM.getContext().VoidTy, Fn, FI,
2925 Address(Addr, CGM.getContext().getDeclAlign(VD)),
2930 ID = llvm::ConstantExpr::getBitCast(Fn, CGM.Int8PtrTy);
2931 CGM.addUsedGlobal(cast<llvm::GlobalValue>(Ctor));
2934 CGM.getModule(), CGM.Int8Ty, /*isConstant=*/true,
2934 CGM.getModule(), CGM.Int8Ty, /*isConstant=*/true,
2936 llvm::Constant::getNullValue(CGM.Int8Ty), Twine(Buffer, "_ctor"));
2949 if (CGM.getLangOpts().OpenMPIsDevice) {
2952 CodeGenFunction DtorCGF(CGM);
2954 const CGFunctionInfo &FI = CGM.getTypes().arrangeNullaryFunction();
2955 llvm::FunctionType *FTy = CGM.getTypes().GetFunctionType(FI);
2956 llvm::Function *Fn = CGM.CreateGlobalInitOrDestructFunction(
2959 DtorCGF.StartFunction(GlobalDecl(), CGM.getContext().VoidTy, Fn, FI,
2964 DtorCGF.emitDestroy(Address(Addr, CGM.getContext().getDeclAlign(VD)),
2969 ID = llvm::ConstantExpr::getBitCast(Fn, CGM.Int8PtrTy);
2970 CGM.addUsedGlobal(cast<llvm::GlobalValue>(Dtor));
2973 CGM.getModule(), CGM.Int8Ty, /*isConstant=*/true,
2973 CGM.getModule(), CGM.Int8Ty, /*isConstant=*/true,
2975 llvm::Constant::getNullValue(CGM.Int8Ty), Twine(Buffer, "_dtor"));
2984 return CGM.getLangOpts().OpenMPIsDevice;
2998 CGF.Builder.CreatePointerBitCastOrAddrSpaceCast(GAddr, CGM.VoidPtrTy),
2999 CGF.Builder.CreateIntCast(CGF.getTypeSize(VarType), CGM.SizeTy,
3002 CGM.VoidPtrPtrTy, Twine(Name).concat(Suffix).concat(CacheSuffix))};
3008 CGM.getPointerAlign());
3147 CGM.getModule(), Ty, /*IsConstant*/ false,
3214 CGF.EmitScalarExpr(Hint), CGM.IntPtrTy, /*isSigned=*/false));
3250 llvm::ConstantInt::get(CGM.IntTy, /*V=*/0, /*isSigned=*/true)};
3353 ASTContext &C = CGM.getContext();
3403 CGM, CGF.ConvertTypeForMem(CopyprivateArrayTy)->getPointerTo(),
3649 CGM, Schedule, ScheduleKind.M1, ScheduleKind.M2)), // Schedule type
3840 llvm::ConstantInt::get(CGM.IntTy, RuntimeProcBind, /*isSigned=*/true)};
4020 llvm::Module &M = CGM.getModule();
4032 llvm::Constant *Data[] = {llvm::ConstantExpr::getBitCast(ID, CGM.VoidPtrTy),
4033 llvm::ConstantExpr::getBitCast(Str, CGM.Int8PtrTy),
4034 llvm::ConstantInt::get(CGM.SizeTy, Size),
4035 llvm::ConstantInt::get(CGM.Int32Ty, Flags),
4036 llvm::ConstantInt::get(CGM.Int32Ty, 0)};
4039 CGM, getTgtOffloadEntryQTy(), /*IsConstant=*/true, Data,
4058 if (CGM.getLangOpts().OpenMPSimd || OffloadEntriesInfoManager.empty())
4061 llvm::Module &M = CGM.getModule();
4073 llvm::ConstantInt::get(CGM.Int32Ty, V));
4103 for (auto I = CGM.getContext().getSourceManager().fileinfo_begin(),
4104 E = CGM.getContext().getSourceManager().fileinfo_end();
4108 Loc = CGM.getContext().getSourceManager().translateFileLineCol(
4160 if (!CGM.GetGlobalValue(FnName))
4162 unsigned DiagID = CGM.getDiags().getCustomDiagID(
4166 CGM.getDiags().Report(std::get<1>(E), DiagID) << FnName;
4179 if (CGM.getLangOpts().OpenMPIsDevice &&
4180 CGM.getOpenMPRuntime().hasRequiresUnifiedSharedMemory())
4183 unsigned DiagID = CGM.getDiags().getCustomDiagID(
4187 CGM.getDiags().Report(std::get<1>(E), DiagID) << std::get<2>(E);
4196 assert(((CGM.getLangOpts().OpenMPIsDevice && !CE->getAddress()) ||
4197 (!CGM.getLangOpts().OpenMPIsDevice && CE->getAddress())) &&
4199 if (CGM.getLangOpts().OpenMPIsDevice)
4202 unsigned DiagID = CGM.getDiags().getCustomDiagID(
4206 CGM.getDiags().Report(DiagID);
4226 if (!CGM.getLangOpts().OpenMPIsDevice)
4229 if (CGM.getLangOpts().OMPHostIRFile.empty())
4232 auto Buf = llvm::MemoryBuffer::getFile(CGM.getLangOpts().OMPHostIRFile);
4234 CGM.getDiags().Report(diag::err_cannot_open_file)
4235 << CGM.getLangOpts().OMPHostIRFile << EC.message();
4244 unsigned DiagID = CGM.getDiags().getCustomDiagID(
4246 CGM.getDiags().Report(DiagID)
4247 << CGM.getLangOpts().OMPHostIRFile << EC.message();
4292 ASTContext &C = CGM.getContext();
4297 KmpRoutineEntryPtrTy = CGM.getTypes().ConvertType(KmpRoutineEntryPtrQTy);
4313 ASTContext &C = CGM.getContext();
4343 ASTContext &C = CGM.getContext();
4367 ASTContext &C = CGM.getContext();
4966 ASTContext &C = CGM.getContext();
5009 CGM, D.getDirectiveKind(), KmpInt32Ty, KmpRoutineEntryPtrQTy));
5019 CGM, D.getDirectiveKind(), KmpInt32Ty, KmpRoutineEntryPtrQTy));
5026 createKmpTaskTWithPrivatesRecordDecl(CGM, KmpTaskTQTy, Privates);
5044 CGM, Loc, Data.PrivateVars, Data.FirstprivateVars, Data.LastprivateVars,
5055 CGM, Loc, D.getDirectiveKind(), KmpInt32Ty, KmpTaskTWithPrivatesPtrQTy,
5087 llvm::Value *SharedsSize = CGM.getSize(C.getTypeSizeInChars(SharedsTy));
5143 CGM, Loc, D, KmpTaskTWithPrivatesPtrQTy, KmpTaskTWithPrivatesQTyRD,
5156 CGM, Loc, KmpInt32Ty, KmpTaskTWithPrivatesPtrQTy,
5197 ASTContext &C = CGM.getContext();
5239 CGF.Builder.CreatePtrToInt(Addr.getPointer(), CGM.SizeTy);
5240 llvm::Value *UpIntPtr = CGF.Builder.CreatePtrToInt(UpAddr, CGM.SizeTy);
5562 ASTContext &C = CGM.getContext();
5573 CGM.getTypes().arrangeBuiltinFunctionDeclaration(C.VoidTy, Args);
5575 auto *Fn = llvm::Function::Create(CGM.getTypes().GetFunctionType(CGFI),
5577 &CGM.getModule());
5578 CGM.SetInternalFunctionAttributes(GlobalDecl(), Fn, CGFI);
5580 CodeGenFunction CGF(CGM);
5717 ASTContext &C = CGM.getContext();
6201 ASTContext &C = CGM.getContext();
6223 llvm::Value *Idxs[] = {llvm::ConstantInt::get(CGM.SizeTy, /*V=*/0),
6224 llvm::ConstantInt::get(CGM.SizeTy, Cnt)};
6247 SizeValInChars = CGF.Builder.CreateIntCast(SizeValInChars, CGM.SizeTy,
6254 CGF.EmitCastToVoidPtr(emitReduceInitFunction(CGM, Loc, RCG, Cnt));
6259 llvm::Value *Fini = emitReduceFiniFunction(CGM, Loc, RCG, Cnt);
6262 : llvm::ConstantPointerNull::get(CGM.VoidPtrTy);
6267 CGM, Loc, RCG, Cnt, Data.ReductionOps[Cnt], LHSExprs[Cnt],
6274 llvm::ConstantInt::get(CGM.Int32Ty, /*V=*/1, /*isSigned=*/true),
6282 CGF.Builder.CreateIntCast(getThreadID(CGF, Loc), CGM.IntTy,
6284 llvm::ConstantInt::get(CGM.IntTy, Size, /*isSigned=*/true),
6286 CGM.VoidPtrTy)};
6299 llvm::Value *SizeVal = CGF.Builder.CreateIntCast(Sizes.second, CGM.SizeTy,
6302 CGF, CGM.getContext().getSizeType(),
6303 generateUniqueName(CGM, "reduction_size", RCG.getRefExpr(N)));
6309 CGF, CGM.getContext().VoidPtrTy,
6310 generateUniqueName(CGM, "reduction", RCG.getRefExpr(N)));
6313 RCG.getSharedLValue(N).getPointer(), CGM.VoidPtrTy),
6325 CGF.Builder.CreateIntCast(getThreadID(CGF, Loc), CGM.IntTy,
6329 CGM.VoidPtrTy)};
6487 getTargetEntryUniqueInfo(CGM.getContext(), D.getBeginLoc(), DeviceID, FileID,
6498 CodeGenFunction CGF(CGM, true);
6520 if (CGM.getLangOpts().OpenMPIsDevice) {
6521 OutlinedFnID = llvm::ConstantExpr::getBitCast(OutlinedFn, CGM.Int8PtrTy);
6527 CGM.getModule(), CGM.Int8Ty, /*isConstant=*/true,
6527 CGM.getModule(), CGM.Int8Ty, /*isConstant=*/true,
6529 llvm::Constant::getNullValue(CGM.Int8Ty), Name);
8835 ASTContext &C = CGM.getContext();
8862 CGM.getTypes().arrangeBuiltinFunctionDeclaration(C.VoidTy, Args);
8863 llvm::FunctionType *FnTy = CGM.getTypes().GetFunctionType(FnInfo);
8866 CGM.getCXXABI().getMangleContext().mangleTypeName(Ty, Out);
8869 Name, &CGM.getModule());
8870 CGM.SetInternalFunctionAttributes(GlobalDecl(), Fn, FnInfo);
8873 CodeGenFunction MapperCGF(CGM);
8881 CGM.getTypes().ConvertTypeForMem(C.getPointerType(PtrTy)));
8953 *BasePointers[I], CGM.getTypes().ConvertTypeForMem(C.VoidPtrTy));
8955 Pointers[I], CGM.getTypes().ConvertTypeForMem(C.VoidPtrTy));
8978 MapperCGF.Builder.CreatePHI(CGM.Int64Ty, 4, "omp.membermaptype");
9038 MapperCGF.Builder.CreatePHI(CGM.Int64Ty, 4, "omp.maptype");
9144 TD = getNestedDistributeDirective(CGM.getContext(), D);
9399 Address(Info.BasePointersArray, CGM.getPointerAlign());
9401 Address(Info.PointersArray, CGM.getPointerAlign());
9402 InputInfo.SizesArray = Address(Info.SizesArray, CGM.getPointerAlign());
9453 getTargetEntryUniqueInfo(CGM.getContext(), E.getBeginLoc(), DeviceID,
9464 CodeGenFunction::EmitOMPTargetDeviceFunction(CGM, ParentName,
9469 CGM, ParentName, cast<OMPTargetParallelDirective>(E));
9473 CGM, ParentName, cast<OMPTargetTeamsDirective>(E));
9477 CGM, ParentName, cast<OMPTargetTeamsDistributeDirective>(E));
9481 CGM, ParentName, cast<OMPTargetTeamsDistributeSimdDirective>(E));
9485 CGM, ParentName, cast<OMPTargetParallelForDirective>(E));
9489 CGM, ParentName, cast<OMPTargetParallelForSimdDirective>(E));
9493 CGM, ParentName, cast<OMPTargetSimdDirective>(E));
9497 CGM, ParentName,
9503 CGM, ParentName,
9582 if (!CGM.getLangOpts().OpenMPIsDevice) {
9594 StringRef Name = CGM.getMangledName(GD);
9611 if (!CGM.getLangOpts().OpenMPIsDevice)
9621 CGM.getMangledName(GlobalDecl(Ctor, Ctor_Complete));
9626 CGM.getMangledName(GlobalDecl(Dtor, Dtor_Complete));
9647 assert(VD->getType().isConstant(CGM.getContext()) &&
9658 getTargetEntryUniqueInfo(CGM.getContext(), VD->getLocation(), DeviceID,
9667 getOrCreateInternalVariable(CGM.getTypes().ConvertTypeForMem(Ty), VarName,
9670 CharUnits VarSize = CGM.getContext().getTypeSizeInChars(Ty);
9671 CGM.addCompilerUsedGlobal(cast<llvm::GlobalValue>(Addr));
9680 if (CGM.getLangOpts().OMPTargetTriples.empty() &&
9681 !CGM.getLangOpts().OpenMPIsDevice)
9686 if (CGM.getLangOpts().OpenMPIsDevice) {
9689 StringRef VarName = CGM.getMangledName(VD);
9703 VarName = CGM.getMangledName(VD);
9704 if (VD->hasDefinition(CGM.getContext()) != VarDecl::DeclarationOnly) {
9705 VarSize = CGM.getContext().getTypeSizeInChars(VD->getType());
9710 Linkage = CGM.getLLVMLinkageVarDefinition(VD, /*IsConstant=*/false);
9712 if (CGM.getLangOpts().OpenMPIsDevice && !VD->isExternallyVisible()) {
9714 if (!CGM.GetGlobalValue(RefName)) {
9721 CGM.addCompilerUsedGlobal(GVAddrRef);
9734 if (CGM.getLangOpts().OpenMPIsDevice) {
9741 VarSize = CGM.getPointerSize();
9765 CGM.EmitGlobal(VD);
9771 (void)CGM.getOpenMPRuntime().getAddrOfDeclareTargetVar(VD);
9835 if (!CGM.getLangOpts().OpenMPIsDevice || !ShouldMarkAsGlobal)
9838 StringRef Name = CGM.getMangledName(GD);
9844 if (auto *F = dyn_cast_or_null<llvm::Function>(CGM.GetGlobalValue(Name)))
9857 if (CGM.getLangOpts().OMPTargetTriples.empty() ||
9858 CGM.getLangOpts().OpenMPSimd || CGM.getLangOpts().OpenMPIsDevice ||
9858 CGM.getLangOpts().OpenMPSimd || CGM.getLangOpts().OpenMPIsDevice ||
9865 ASTContext &C = CGM.getContext();
9869 CodeGenFunction CGF(CGM);
9870 const auto &FI = CGM.getTypes().arrangeNullaryFunction();
9871 llvm::FunctionType *FTy = CGM.getTypes().GetFunctionType(FI);
9873 RequiresRegFn = CGM.CreateGlobalInitOrDestructFunction(FTy, ReqName, FI);
9889 llvm::ConstantInt::get(CGM.Int64Ty, Flags));
10210 Address(Info.BasePointersArray, CGM.getPointerAlign());
10212 Address(Info.PointersArray, CGM.getPointerAlign());
10214 Address(Info.SizesArray, CGM.getPointerAlign());
10671 ASTContext &C = CGM.getContext();
10762 if (CGM.getTriple().getArch() == llvm::Triple::x86 ||
10763 CGM.getTriple().getArch() == llvm::Triple::x86_64) {
10765 } else if (CGM.getTriple().getArch() == llvm::Triple::aarch64) {
10768 if (CGM.getTarget().hasFeature("sve"))
10769 emitAArch64DeclareSimdFunction(CGM, FD, VLEN, ParamAttrs, State,
10771 if (CGM.getTarget().hasFeature("neon"))
10772 emitAArch64DeclareSimdFunction(CGM, FD, VLEN, ParamAttrs, State,
10811 ASTContext &C = CGM.getContext();
10852 CGF.EmitStoreOfScalar(llvm::ConstantInt::getSigned(CGM.Int64Ty, /*V=*/1),
10861 llvm::ConstantInt::getSigned(CGM.Int32Ty, NumIterations.size()),
10864 CGM.VoidPtrTy)};
10880 CGM.getContext().getIntTypeForBitwidth(/*DestWidth=*/64, /*Signed=*/1);
10882 QualType ArrayTy = CGM.getContext().getConstantArrayType(
10980 CharUnits Align = CGM.getContext().getDeclAlign(CVD);
10985 Size, CGM.getSize(Align - CharUnits::fromQuantity(1)));
10986 Size = CGF.Builder.CreateUDiv(Size, CGM.getSize(Align));
10987 Size = CGF.Builder.CreateNUWMul(Size, CGM.getSize(Align));
10989 CharUnits Sz = CGM.getContext().getTypeSizeInChars(CVD->getType());
10990 Size = CGM.getSize(Sz.alignTo(Align));
10999 Allocator = CGF.Builder.CreateIntToPtr(Allocator, CGM.VoidPtrTy);
11002 CGM.VoidPtrTy);
11016 CGF.ConvertTypeForMem(CGM.getContext().getPointerType(CVD->getType())),
11128 StringRef MangledName = CGM.getMangledName(GD);
11129 llvm::GlobalValue *Orig = CGM.GetGlobalValue(MangledName);
11132 const FunctionDecl *NewFD = getDeclareVariantFunction(CGM.getContext(), D);
tools/clang/lib/CodeGen/CGOpenMPRuntimeNVPTX.cpp 1146 WorkerFunctionState WST(CGM, D.getBeginLoc());
1179 CGM.getModule(), CGM.VoidPtrTy, /*isConstant=*/false,
1179 CGM.getModule(), CGM.VoidPtrTy, /*isConstant=*/false,
1181 llvm::ConstantPointerNull::get(CGM.VoidPtrTy),
1184 CGM.getContext().getTargetAddressSpace(LangAS::cuda_shared));
1278 CGM.getLangOpts().OpenMPCUDAForceFullRuntime ||
1279 !supportsLightweightRuntime(CGM.getContext(), D));
1309 CGM.getModule(), CGM.VoidPtrTy, /*isConstant=*/false,
1309 CGM.getModule(), CGM.VoidPtrTy, /*isConstant=*/false,
1311 llvm::ConstantPointerNull::get(CGM.VoidPtrTy),
1314 CGM.getContext().getTargetAddressSpace(LangAS::cuda_shared));
1392 ASTContext &Ctx = CGM.getContext();
1394 CodeGenFunction CGF(CGM, /*suppressNewContext=*/true);
1461 llvm::Value *ID = Bld.CreatePointerBitCastOrAddrSpaceCast(W, CGM.Int8PtrTy);
1489 llvm::FunctionType::get(CGM.VoidTy, {CGM.Int16Ty, CGM.Int32Ty},
1489 llvm::FunctionType::get(CGM.VoidTy, {CGM.Int16Ty, CGM.Int32Ty},
1489 llvm::FunctionType::get(CGM.VoidTy, {CGM.Int16Ty, CGM.Int32Ty},
1532 llvm::Type *TypeParams[] = {CGM.Int32Ty, CGM.Int16Ty};
1532 llvm::Type *TypeParams[] = {CGM.Int32Ty, CGM.Int16Ty};
1534 llvm::FunctionType::get(CGM.VoidTy, TypeParams, /*isVarArg*/ false);
1535 RTLFn = CGM.CreateRuntimeFunction(FnTy, "__kmpc_kernel_init");
1540 llvm::Type *TypeParams[] = {CGM.Int16Ty};
1542 llvm::FunctionType::get(CGM.VoidTy, TypeParams, /*isVarArg*/ false);
1543 RTLFn = CGM.CreateRuntimeFunction(FnTy, "__kmpc_kernel_deinit");
1549 llvm::Type *TypeParams[] = {CGM.Int32Ty, CGM.Int16Ty, CGM.Int16Ty};
1549 llvm::Type *TypeParams[] = {CGM.Int32Ty, CGM.Int16Ty, CGM.Int16Ty};
1549 llvm::Type *TypeParams[] = {CGM.Int32Ty, CGM.Int16Ty, CGM.Int16Ty};
1551 llvm::FunctionType::get(CGM.VoidTy, TypeParams, /*isVarArg*/ false);
1552 RTLFn = CGM.CreateRuntimeFunction(FnTy, "__kmpc_spmd_kernel_init");
1557 llvm::Type *TypeParams[] = {CGM.Int16Ty};
1559 llvm::FunctionType::get(CGM.VoidTy, TypeParams, /*isVarArg*/ false);
1560 RTLFn = CGM.CreateRuntimeFunction(FnTy, "__kmpc_spmd_kernel_deinit_v2");
1566 llvm::Type *TypeParams[] = {CGM.Int8PtrTy, CGM.Int16Ty};
1566 llvm::Type *TypeParams[] = {CGM.Int8PtrTy, CGM.Int16Ty};
1568 llvm::FunctionType::get(CGM.VoidTy, TypeParams, /*isVarArg*/ false);
1569 RTLFn = CGM.CreateRuntimeFunction(FnTy, "__kmpc_kernel_prepare_parallel");
1575 llvm::Type *TypeParams[] = {CGM.Int8PtrPtrTy, CGM.Int16Ty};
1575 llvm::Type *TypeParams[] = {CGM.Int8PtrPtrTy, CGM.Int16Ty};
1576 llvm::Type *RetTy = CGM.getTypes().ConvertType(CGM.getContext().BoolTy);
1576 llvm::Type *RetTy = CGM.getTypes().ConvertType(CGM.getContext().BoolTy);
1579 RTLFn = CGM.CreateRuntimeFunction(FnTy, "__kmpc_kernel_parallel");
1585 llvm::FunctionType::get(CGM.VoidTy, llvm::None, /*isVarArg*/ false);
1586 RTLFn = CGM.CreateRuntimeFunction(FnTy, "__kmpc_kernel_end_parallel");
1592 llvm::Type *TypeParams[] = {getIdentTyPointerTy(), CGM.Int32Ty};
1594 llvm::FunctionType::get(CGM.VoidTy, TypeParams, /*isVarArg*/ false);
1595 RTLFn = CGM.CreateRuntimeFunction(FnTy, "__kmpc_serialized_parallel");
1601 llvm::Type *TypeParams[] = {getIdentTyPointerTy(), CGM.Int32Ty};
1603 llvm::FunctionType::get(CGM.VoidTy, TypeParams, /*isVarArg*/ false);
1604 RTLFn = CGM.CreateRuntimeFunction(FnTy, "__kmpc_end_serialized_parallel");
1610 llvm::Type *TypeParams[] = {CGM.Int32Ty, CGM.Int16Ty, CGM.Int16Ty};
1610 llvm::Type *TypeParams[] = {CGM.Int32Ty, CGM.Int16Ty, CGM.Int16Ty};
1610 llvm::Type *TypeParams[] = {CGM.Int32Ty, CGM.Int16Ty, CGM.Int16Ty};
1612 llvm::FunctionType::get(CGM.Int32Ty, TypeParams, /*isVarArg*/ false);
1613 RTLFn = CGM.CreateRuntimeFunction(FnTy, "__kmpc_shuffle_int32");
1619 llvm::Type *TypeParams[] = {CGM.Int64Ty, CGM.Int16Ty, CGM.Int16Ty};
1619 llvm::Type *TypeParams[] = {CGM.Int64Ty, CGM.Int16Ty, CGM.Int16Ty};
1619 llvm::Type *TypeParams[] = {CGM.Int64Ty, CGM.Int16Ty, CGM.Int16Ty};
1621 llvm::FunctionType::get(CGM.Int64Ty, TypeParams, /*isVarArg*/ false);
1622 RTLFn = CGM.CreateRuntimeFunction(FnTy, "__kmpc_shuffle_int64");
1631 llvm::Type *ShuffleReduceTypeParams[] = {CGM.VoidPtrTy, CGM.Int16Ty,
1631 llvm::Type *ShuffleReduceTypeParams[] = {CGM.VoidPtrTy, CGM.Int16Ty,
1632 CGM.Int16Ty, CGM.Int16Ty};
1632 CGM.Int16Ty, CGM.Int16Ty};
1634 llvm::FunctionType::get(CGM.VoidTy, ShuffleReduceTypeParams,
1636 llvm::Type *InterWarpCopyTypeParams[] = {CGM.VoidPtrTy, CGM.Int32Ty};
1636 llvm::Type *InterWarpCopyTypeParams[] = {CGM.VoidPtrTy, CGM.Int32Ty};
1638 llvm::FunctionType::get(CGM.VoidTy, InterWarpCopyTypeParams,
1641 CGM.Int32Ty,
1642 CGM.Int32Ty,
1643 CGM.SizeTy,
1644 CGM.VoidPtrTy,
1648 llvm::FunctionType::get(CGM.Int32Ty, TypeParams, /*isVarArg=*/false);
1649 RTLFn = CGM.CreateRuntimeFunction(
1655 llvm::Type *TypeParams[] = {CGM.Int32Ty};
1657 llvm::FunctionType::get(CGM.VoidTy, TypeParams, /*isVarArg=*/false);
1658 RTLFn = CGM.CreateRuntimeFunction(
1674 llvm::Type *ShuffleReduceTypeParams[] = {CGM.VoidPtrTy, CGM.Int16Ty,
1674 llvm::Type *ShuffleReduceTypeParams[] = {CGM.VoidPtrTy, CGM.Int16Ty,
1675 CGM.Int16Ty, CGM.Int16Ty};
1675 CGM.Int16Ty, CGM.Int16Ty};
1677 llvm::FunctionType::get(CGM.VoidTy, ShuffleReduceTypeParams,
1679 llvm::Type *InterWarpCopyTypeParams[] = {CGM.VoidPtrTy, CGM.Int32Ty};
1679 llvm::Type *InterWarpCopyTypeParams[] = {CGM.VoidPtrTy, CGM.Int32Ty};
1681 llvm::FunctionType::get(CGM.VoidTy, InterWarpCopyTypeParams,
1683 llvm::Type *GlobalListTypeParams[] = {CGM.VoidPtrTy, CGM.IntTy,
1683 llvm::Type *GlobalListTypeParams[] = {CGM.VoidPtrTy, CGM.IntTy,
1684 CGM.VoidPtrTy};
1686 llvm::FunctionType::get(CGM.VoidTy, GlobalListTypeParams,
1689 CGM.Int32Ty,
1690 CGM.VoidPtrTy,
1691 CGM.Int32Ty,
1692 CGM.VoidPtrTy,
1700 llvm::FunctionType::get(CGM.Int32Ty, TypeParams, /*isVarArg=*/false);
1701 RTLFn = CGM.CreateRuntimeFunction(
1708 llvm::FunctionType::get(CGM.VoidTy, llvm::None, /*isVarArg*/ false);
1709 RTLFn = CGM.CreateRuntimeFunction(FnTy, "__kmpc_data_sharing_init_stack");
1715 llvm::FunctionType::get(CGM.VoidTy, llvm::None, /*isVarArg*/ false);
1717 CGM.CreateRuntimeFunction(FnTy, "__kmpc_data_sharing_init_stack_spmd");
1723 llvm::Type *TypeParams[] = {CGM.SizeTy, CGM.Int16Ty};
1723 llvm::Type *TypeParams[] = {CGM.SizeTy, CGM.Int16Ty};
1725 llvm::FunctionType::get(CGM.VoidPtrTy, TypeParams, /*isVarArg=*/false);
1726 RTLFn = CGM.CreateRuntimeFunction(
1732 llvm::Type *TypeParams[] = {CGM.VoidPtrTy};
1734 llvm::FunctionType::get(CGM.VoidTy, TypeParams, /*isVarArg=*/false);
1735 RTLFn = CGM.CreateRuntimeFunction(FnTy,
1742 llvm::Type *TypeParams[] = {CGM.Int8PtrPtrTy->getPointerTo(), CGM.SizeTy};
1742 llvm::Type *TypeParams[] = {CGM.Int8PtrPtrTy->getPointerTo(), CGM.SizeTy};
1744 llvm::FunctionType::get(CGM.VoidTy, TypeParams, /*isVarArg*/ false);
1745 RTLFn = CGM.CreateRuntimeFunction(FnTy, "__kmpc_begin_sharing_variables");
1751 llvm::FunctionType::get(CGM.VoidTy, llvm::None, /*isVarArg*/ false);
1752 RTLFn = CGM.CreateRuntimeFunction(FnTy, "__kmpc_end_sharing_variables");
1757 llvm::Type *TypeParams[] = {CGM.Int8PtrPtrTy->getPointerTo()};
1759 llvm::FunctionType::get(CGM.VoidTy, TypeParams, /*isVarArg*/ false);
1760 RTLFn = CGM.CreateRuntimeFunction(FnTy, "__kmpc_get_shared_variables");
1765 llvm::Type *TypeParams[] = {getIdentTyPointerTy(), CGM.Int32Ty};
1767 llvm::FunctionType::get(CGM.Int16Ty, TypeParams, /*isVarArg*/ false);
1768 RTLFn = CGM.CreateRuntimeFunction(FnTy, "__kmpc_parallel_level");
1773 auto *FnTy = llvm::FunctionType::get(CGM.Int8Ty, /*isVarArg=*/false);
1774 RTLFn = CGM.CreateRuntimeFunction(FnTy, "__kmpc_is_spmd_exec_mode");
1780 llvm::Type *TypeParams[] = {CGM.Int16Ty, CGM.VoidPtrTy, CGM.SizeTy,
1780 llvm::Type *TypeParams[] = {CGM.Int16Ty, CGM.VoidPtrTy, CGM.SizeTy,
1780 llvm::Type *TypeParams[] = {CGM.Int16Ty, CGM.VoidPtrTy, CGM.SizeTy,
1781 CGM.Int16Ty, CGM.VoidPtrPtrTy};
1781 CGM.Int16Ty, CGM.VoidPtrPtrTy};
1783 llvm::FunctionType::get(CGM.VoidTy, TypeParams, /*isVarArg*/ false);
1784 RTLFn = CGM.CreateRuntimeFunction(FnTy, "__kmpc_get_team_static_memory");
1790 llvm::Type *TypeParams[] = {CGM.Int16Ty, CGM.Int16Ty};
1790 llvm::Type *TypeParams[] = {CGM.Int16Ty, CGM.Int16Ty};
1792 llvm::FunctionType::get(CGM.VoidTy, TypeParams, /*isVarArg=*/false);
1794 CGM.CreateRuntimeFunction(FnTy, "__kmpc_restore_team_static_memory");
1799 llvm::Type *TypeParams[] = {getIdentTyPointerTy(), CGM.Int32Ty};
1801 llvm::FunctionType::get(CGM.VoidTy, TypeParams, /*isVarArg*/ false);
1803 CGM.CreateConvergentRuntimeFunction(FnTy, /*Name*/ "__kmpc_barrier");
1809 llvm::Type *TypeParams[] = {getIdentTyPointerTy(), CGM.Int32Ty};
1811 llvm::FunctionType::get(CGM.VoidTy, TypeParams, /*isVarArg*/ false);
1812 RTLFn = CGM.CreateConvergentRuntimeFunction(
1819 llvm::FunctionType::get(CGM.Int32Ty, llvm::None, /*isVarArg=*/false);
1820 RTLFn = CGM.CreateConvergentRuntimeFunction(FnTy, "__kmpc_warp_active_thread_mask");
1826 llvm::FunctionType::get(CGM.VoidTy, CGM.Int32Ty, /*isVarArg=*/false);
1826 llvm::FunctionType::get(CGM.VoidTy, CGM.Int32Ty, /*isVarArg=*/false);
1827 RTLFn = CGM.CreateConvergentRuntimeFunction(FnTy, "__kmpc_syncwarp");
1842 llvm::Module &M = CGM.getModule();
1843 llvm::LLVMContext &Ctx = CGM.getLLVMContext();
1865 bool Mode = supportsSPMDExecutionMode(CGM.getContext(), D);
1873 setPropertyExecutionMode(CGM, OutlinedFn->getName(), Mode);
1914 CGM.emitOpenMPDeviceFunctionRedefinition(OldGD, NewGD, OrigAddr);
1978 if (CGM.getLangOpts().Optimize) {
2043 getTeamsReductionVars(CGM.getContext(), D, LastPrivatesReductions);
2045 getDistributeLastprivateVars(CGM.getContext(), D, LastPrivatesReductions);
2048 CGM.getContext(), llvm::None, LastPrivatesReductions,
2099 if (CGM.getLangOpts().Optimize) {
2111 if (getDataSharingMode(CGM) != CGOpenMPRuntimeNVPTX::Generic &&
2121 QualType GlobalRecTy = CGM.getContext().getRecordType(GlobalizedVarsRecord);
2129 CGM.getContext().getTypeAlignInChars(GlobalRecTy).getQuantity();
2131 CGM.getContext().getTypeSizeInChars(GlobalRecTy).getQuantity();
2164 llvm::Value *Size = llvm::ConstantInt::get(CGM.SizeTy, GlobalRecordSize);
2168 CGM.getContext().getRecordType(SecGlobalizedVarsRecord);
2175 CGM.getContext().getTypeAlignInChars(SecGlobalRecTy).getQuantity();
2177 CGM.getContext().getTypeSizeInChars(SecGlobalRecTy).getQuantity();
2180 IsTTD, llvm::ConstantInt::get(CGM.SizeTy, GlobalRecordSize), Size);
2206 QualType RDTy = CGM.getContext().getRecordType(RD);
2208 CGM.getContext().getTypeAlignInChars(RDTy).getQuantity();
2209 unsigned Size = CGM.getContext().getTypeSizeInChars(RDTy).getQuantity();
2214 CGM.getContext().getTypeAlignInChars(GlobalRecTy).getQuantity();
2222 CGM.getModule(), CGM.Int16Ty, /*isConstant=*/true,
2222 CGM.getModule(), CGM.Int16Ty, /*isConstant=*/true,
2226 QualType Int16Ty = CGM.getContext().getIntTypeForBitwidth(
2230 CGM.getContext().getTypeAlignInChars(Int16Ty)),
2233 CGM.getModule(), CGM.Int8Ty, /*isConstant=*/false,
2233 CGM.getModule(), CGM.Int8Ty, /*isConstant=*/false,
2236 CGM.getModule(), CGM.SizeTy, /*isConstant=*/true,
2236 CGM.getModule(), CGM.SizeTy, /*isConstant=*/true,
2241 Address(RecSize, CGM.getSizeAlign()), /*Volatile=*/false,
2242 CGM.getContext().getSizeType(), Loc);
2244 KernelStaticGlobalized, CGM.VoidPtrPtrTy);
2247 CGM.Int16Ty,
2260 Address(KernelStaticGlobalized, CGM.getPointerAlign()),
2261 CGM.getContext()
2262 .getPointerType(CGM.getContext().VoidPtrTy)
2274 llvm::ConstantInt::get(CGM.SizeTy, GlobalRecordSize),
2322 Address(Ptr, CGM.getContext().getDeclAlign(Rec.first)), VarTy,
2364 CharUnits Align = CGM.getContext().getDeclAlign(VD);
2382 CGM.getContext().getDeclAlign(VD),
2393 if (getDataSharingMode(CGM) != CGOpenMPRuntimeNVPTX::Generic &&
2430 QualType Int16Ty = CGM.getContext().getIntTypeForBitwidth(
2434 CGM.getContext().getTypeAlignInChars(Int16Ty)),
2438 CGM.Int16Ty,
2534 llvm::Value *ID = Bld.CreateBitOrPointerCast(WFn, CGM.Int8PtrTy);
2555 llvm::ConstantInt::get(CGM.SizeTy, CapturedVars.size())};
2767 CGF.EmitStoreOfScalar(llvm::Constant::getNullValue(CGM.Int32Ty), CounterLVal,
4288 ASTContext &C = CGM.getContext();
4332 CGM, Privates, ReductionArrayTy, ReductionFn, Loc);
4334 emitInterWarpCopyFunction(CGM, Privates, ReductionArrayTy, Loc);
4359 CGM.getContext(), PrivatesReductions, llvm::None, VarFieldMap,
4364 CGM.getModule(), CGM.VoidPtrTy, /*isConstant=*/true,
4364 CGM.getModule(), CGM.VoidPtrTy, /*isConstant=*/true,
4369 Address(KernelTeamsReductionPtr, CGM.getPointerAlign()),
4372 CGM, Privates, ReductionArrayTy, Loc, TeamReductionRec, VarFieldMap);
4374 CGM, Privates, ReductionArrayTy, Loc, TeamReductionRec, VarFieldMap,
4377 CGM, Privates, ReductionArrayTy, Loc, TeamReductionRec, VarFieldMap);
4379 CGM, Privates, ReductionArrayTy, Loc, TeamReductionRec, VarFieldMap,
4405 Res, llvm::ConstantInt::get(CGM.Int32Ty, /*V=*/1));
4452 PointeeTy = CGM.getContext().getAddrSpaceQualType(PointeeTy,
4455 PointeeTy.isConstant(CGM.getContext())) {
4456 PointeeTy = CGM.getContext().getAddrSpaceQualType(PointeeTy,
4460 ArgType = CGM.getContext().getPointerType(PointeeTy);
4464 ArgType = QC.apply(CGM.getContext(), ArgType);
4467 CGM.getContext(), /*DC=*/nullptr, NativeParam->getLocation(),
4470 CGM.getContext(),
4540 ASTContext &Ctx = CGM.getContext();
4559 CGM.getTypes().arrangeBuiltinFunctionDeclaration(Ctx.VoidTy, WrapperArgs);
4562 CGM.getTypes().GetFunctionType(CGFI), llvm::GlobalValue::InternalLinkage,
4563 Twine(OutlinedParallelFn->getName(), "_wrapper"), &CGM.getModule());
4564 CGM.SetInternalFunctionAttributes(GlobalDecl(), Fn, CGFI);
4568 CodeGenFunction CGF(CGM, /*suppressNewContext=*/true);
4658 if (getDataSharingMode(CGM) != CGOpenMPRuntimeNVPTX::Generic)
4753 CGM.getModule(), VarTy, /*isConstant=*/false,
4757 CGM.getContext().getTargetAddressSpace(LangAS::cuda_constant));
4758 CharUnits Align = CGM.getContext().getDeclAlign(VD);
4765 CGM.getModule(), VarTy, /*isConstant=*/false,
4769 CGM.getContext().getTargetAddressSpace(LangAS::cuda_shared));
4770 CharUnits Align = CGM.getContext().getDeclAlign(VD);
4778 CGM.getModule(), VarTy, /*isConstant=*/false,
4781 CharUnits Align = CGM.getContext().getDeclAlign(VD);
4788 if (getDataSharingMode(CGM) != CGOpenMPRuntimeNVPTX::Generic)
4898 return CGM.getContext().getTargetAddressSpace(LangAS::cuda_constant);
4953 switch (getCudaArch(CGM)) {
4966 CGM.Error(Clause->getBeginLoc(),
5060 ASTContext &C = CGM.getContext();
5101 Records.RecSize->setInitializer(llvm::ConstantInt::get(CGM.SizeTy, Size));
5103 llvm::ConstantInt::get(CGM.Int16Ty, UseSharedMemory ? 1 : 0));
5124 llvm::Type *LLVMStaticTy = CGM.getTypes().ConvertTypeForMem(StaticTy);
5126 CGM.getModule(), LLVMStaticTy,
5133 GV, CGM.VoidPtrTy);
5142 std::pair<unsigned, unsigned> SMsBlockPerSM = getSMsBlocksPerSM(CGM);
5151 llvm::Type *LLVMArr2Ty = CGM.getTypes().ConvertTypeForMem(Arr2Ty);
5156 CGM.getModule(), LLVMArr2Ty,
5161 GV, CGM.VoidPtrTy);
5169 ASTContext &C = CGM.getContext();
5186 CGM.getTypes().ConvertTypeForMem(StaticTy);
5191 CGM.getModule(), LLVMReductionsBufferTy,
5197 CGM.VoidPtrTy));