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
267 // presently approximated to 'all kernels' if there are any such functions
338 ArrayRef<Function *> kernels,
346 const size_t NumberKernels = kernels.size();
357 auto Replacement = KernelToReplacement.find(kernels[i]);
458 // Find the global variable with the most indirect uses from kernels
547 // Associate kernels in the set with an arbitrary but reproducible order and
572 // Annotate the kernels with their order in this vector
577 // 32 bit keeps it in one SGPR. > 2**32 kernels won't fit on the GPU
578 report_fatal_error("Unimplemented LDS lowering for > 2**32 kernels");
640 "' to kernel access as it is reachable from multiple kernels");
673 // allocate this instance. That is a space optimisation - kernels that use a
782 // name This is not expected to be a problem in practice as kernels
785 // to name the kernels.
787 report_fatal_error("Anonymous kernels cannot use LDS variables");
883 report_fatal_error("Anonymous kernels cannot use LDS variables");
937 // For each variable accessed through callees, which kernels access it
1089 // Instead of explicitly marking kernels that access dynamic variables