Lines Matching full:kernels

15 // static variables, accessible from kernels or other functions. For uses from
16 // kernels this is straightforward - assign an integer to the kernel for the
28 // - a global accessed by one kernel exists independent of other kernels
30 // - the address of the global may be different from different kernels as they
34 // Uses from kernels are implemented here by grouping them in a per-kernel
75 // LDS variables. Variables that are only used from kernels are excluded.
78 // First kernels are assigned a unique integer identifier which is available in
81 // Second, each kernel allocates LDS variables independent of other kernels and
93 // error on any variable that might be reachable from multiple kernels and is
98 // number of kernels using the module strategy as that is free for the first
105 // - Kernels that don't use functions (or have had them all inlined) are not
106 // affected by any lowering for kernels that do.
107 // - Kernels that don't make indirect function calls are not affected by those
109 // - Variables which are used by lots of kernels, e.g. those injected by a
110 // language runtime in most kernels, are expected to have no overhead
122 // The AMDGPUPromoteAlloca pass skips kernels that use dynamic LDS.
157 // If the name correspondence can be replaced, multiple distinct kernels that
265 // The llvm.amdgcn.module.lds instance is implicitly used by all kernels in markUsedByKernel()
267 // presently approximated to 'all kernels' if there are any such functions in markUsedByKernel()
338 ArrayRef<Function *> kernels, in buildLookupTable() argument
346 const size_t NumberKernels = kernels.size(); in buildLookupTable()
357 auto Replacement = KernelToReplacement.find(kernels[i]); in buildLookupTable()
458 // Find the global variable with the most indirect uses from kernels in chooseBestVariableForModuleStrategy()
547 // Associate kernels in the set with an arbitrary but reproducible order and in assignLDSKernelIDToEachKernel()
572 // Annotate the kernels with their order in this vector in assignLDSKernelIDToEachKernel()
577 // 32 bit keeps it in one SGPR. > 2**32 kernels won't fit on the GPU in assignLDSKernelIDToEachKernel()
578 report_fatal_error("Unimplemented LDS lowering for > 2**32 kernels"); in assignLDSKernelIDToEachKernel()
640 "' to kernel access as it is reachable from multiple kernels"); in partitionVariablesIntoIndirectStrategies()
673 // allocate this instance. That is a space optimisation - kernels that use a in lowerModuleScopeStructVariables()
782 // name This is not expected to be a problem in practice as kernels in lowerKernelScopeStructVariables()
785 // to name the kernels. in lowerKernelScopeStructVariables()
787 report_fatal_error("Anonymous kernels cannot use LDS variables"); in lowerKernelScopeStructVariables()
883 report_fatal_error("Anonymous kernels cannot use LDS variables"); in lowerDynamicLDSVariables()
937 // For each variable accessed through callees, which kernels access it in runOnModule()
1089 // Instead of explicitly marking kernels that access dynamic variables in runOnModule()