Lines Matching defs: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
106 // affected by any lowering for kernels that do.
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
545 // Associate kernels in the set with an arbitrary but reproducible order and
570 // Annotate the kernels with their order in this vector
575 // 32 bit keeps it in one SGPR. > 2**32 kernels won't fit on the GPU
576 report_fatal_error("Unimplemented LDS lowering for > 2**32 kernels");
638 "' to kernel access as it is reachable from multiple kernels");
671 // allocate this instance. That is a space optimisation - kernels that use a
780 // name This is not expected to be a problem in practice as kernels
783 // to name the kernels.
785 report_fatal_error("Anonymous kernels cannot use LDS variables");
881 report_fatal_error("Anonymous kernels cannot use LDS variables");
966 // multiple kernels. This is not precise, but we don't want to duplicate
967 // a function when it is called by multiple kernels.
990 // accessed by multiple kernels.
1014 // GV could also be used directly by other kernels. If so, we need to
1052 // For each variable accessed through callees, which kernels access it
1211 // Instead of explicitly marking kernels that access dynamic variables