Lines Matching full:vector
2 Scalable Vector Extension support for AArch64 Linux
10 order to support use of the ARM Scalable Vector Extension (SVE), including
25 * SVE registers Z0..Z31, P0..P15 and FFR and the current vector length VL, are
32 * The presence of SVE is reported to userspace via HWCAP_SVE in the aux vector
46 be reported in the AT_HWCAP2 aux vector entry. In addition to this,
63 reported in the AT_HWCAP2 aux vector entry. Among other things SME adds
65 separate SME vector length and the same Z/V registers. See sme.rst
89 2. Vector length terminology
92 The size of an SVE vector (Z) register is referred to as the "vector length".
94 To avoid confusion about the units used to express vector length, the kernel
97 * Vector length (VL) = size of a Z-register in bytes
99 * Vector quadwords (VQ) = size of a Z-register in units of 128 bits
124 * All other SVE state of a thread, including the currently configured vector
125 length, the state of the PR_SVE_VL_INHERIT flag, and the deferred vector
145 if set indicates that the thread is in streaming mode and the vector length
146 and register data (if present) describe the streaming SVE data and vector
150 the thread's vector length (in sve_context.vl).
189 * The vector length cannot be changed via signal return. If sve_context.vl in
190 the signal frame does not match the current vector length, the signal return
196 vector length in the new mode.
202 Some new prctl() calls are added to allow programs to manage the SVE vector
207 Sets the vector length of the calling thread and related flags, where
210 vl is the desired vector length, where sve_vl_valid(vl) must be true.
216 Inherit the current vector length across execve(). Otherwise, the
217 vector length is reset to the system default at execve(). (See
222 Defer the requested vector length change until the next execve()
230 This allows launching of a new program with a different vector
239 EINVAL: SVE not supported, invalid vector length requested, or
245 * Either the calling thread's vector length or the deferred vector length
252 * Any previously outstanding deferred vector length change in the calling
256 PR_SVE_GET_VL. The vector length reported in this value is the new
257 current vector length for this thread if PR_SVE_SET_VL_ONEXEC was not
258 present in arg; otherwise, the reported vector length is the deferred
259 vector length that will be applied at the next execve() by the calling
262 * Changing the vector length causes all of P0..P15, FFR and all bits of
265 vector length, or calling PR_SVE_SET_VL with the PR_SVE_SET_VL_ONEXEC
266 flag, does not constitute a change to the vector length for this purpose.
271 Gets the vector length of the calling thread.
277 Vector length will be inherited across execve().
280 vector length change (which would only normally be the case between a
283 To extract the vector length from the result, bitwise and it with
319 thread changes its vector length etc.
323 Target thread's current vector length, in bytes.
327 Maximum possible vector length for the target thread.
369 * The effects of changing the vector length and/or flags are equivalent to
381 case only the vector length and flags are changed (along with any
395 for the vector length actually set. The thread's FPSIMD state is
425 to set the default vector length for userspace processes:
430 default vector length to the specified value, unless the value is greater
431 than the maximum vector length supported by the system in which case the
432 default vector length is set to that maximum.
437 At boot, the default vector length is initially set to 64 or the maximum
438 supported vector length, whichever is smaller. This determines the initial
439 vector length of the init process (PID 1).
441 Reading this file returns the current system default vector length.
443 * At every execve() call, the new vector length of the new process is set to
444 the system default vector length, unless
449 * a deferred vector length change is pending, established via the
452 * Modifying the system default vector length does not affect the vector length
458 * The arm64 specific DWARF standard [5] added the VG (Vector Granule) register
462 * Its value is equivalent to the current SVE vector length (VL) in bits divided
488 * 32 8VL-bit vector registers Z0..Z31
489 For each Zn, Zn bits [127:0] alias the ARMv8-A vector register Vn.
498 * a VL "pseudo-register" that determines the size of each vector register
507 * The maximum vector length is determined by the hardware:
569 * 32 128-bit vector registers V0..V31