Re: [RFC PATCH 00/29] arm64: Scalable Vector Extension core support
Florian Weimer <[email protected]>
| Newsgroups | gmane.comp.lib.glibc.alpha,gmane.comp.gdb.devel,gmane.linux.ports.arm.kernel |
|---|---|
| Message-ID | <[email protected]> |
On 11/30/2016 02:56 PM, Dave Martin wrote: > If we do have distinct "set process VL" and "set thread VL" interfaces, > then my view is that the former should fail if there are already > multiple threads, rather than just setting the VL of a single thread or > (worse) asynchronously changing the VL of threads other than the > caller... Yes, looks feasible to me. >>> I'm not familiar with resumable functions/executors -- are these in >>> the C++ standards yet (not that that would cause me to be familiar >>> with them... ;) Any implementation of coroutines (i.e., >>> cooperative switching) is likely to fall under the "setcontext" >>> argument above. >> >> There are different ways to implement coroutines. Stack switching (like >> setcontext) is obviously impacted by non-uniform register sizes. But even >> the most conservative variant, rather similar to switch-based emulation you >> sometimes see in C coroutine implementations, might have trouble restoring >> the state if it just cannot restore the saved state due to register size >> reductions. > > Which is not a problem if the variably-sized state is not part of the > switched context? The VL value is implicitly thread-local data, and the encoded state may have an implicit dependency on it, although it does not contain vector registers as such. > Because the SVE procedure call standard determines that the SVE > registers are caller-save, By the way, how is this implemented? Some of them overlap existing callee-saved registers. > they are not live at any external function > boundary -- so in cooperative switching it is useless to save/restore > this state unless the coroutine framework is defined to have a special > procedure call standard. It can use the standard calling convention, but it may have selected a particular implementation based on the VL value before suspension. Florian