Lines Matching +full:a +full:- +full:z0 +full:- +full:9
16 model. To aid understanding, a minimal description of relevant programmer's
17 model features for SVE is included in Appendix A.
21 -----------
23 * SVE registers Z0..Z31, P0..P15 and FFR and the current vector length VL, are
24 tracked per-thread.
28 instructions and registers, and the Linux-specific system interfaces
54 cpu-feature-registers.txt for details.
58 is to connect to a target process first and then attempt a
63 an endianness-invariant layout, with bits [(8 * i + 7) : (8 * i)] encoded at
68 Beware that on big-endian systems this results in a different byte order than
69 for the FPSIMD V-registers, which are stored as single host-endian 128-bit
70 values, with bits [(127 - 8 * i) : (120 - 8 * i)] of the register encoded at
75 -----------------------------
82 * Vector length (VL) = size of a Z-register in bytes
84 * Vector quadwords (VQ) = size of a Z-register in units of 128 bits
90 is used. This is consistent with the meaning of the "VL" pseudo-register in
95 -------------------------
98 Z0..Z31 are preserved. All other bits of Z0..Z31, and all of P0..P15 and FFR
99 become unspecified on return from a syscall.
105 with zeros on return from a syscall, but userspace should not make
106 assumptions about this. The kernel behaviour may vary on a case-by-case
109 * All other SVE state of a thread, including the currently configured vector
114 In particular, on return from a fork() or clone(), the parent and new child
120 -------------------
122 * A new signal frame record sve_context encodes the SVE registers on signal
137 * If the registers are present, the remainder of the record has a vl-dependent
141 * Each scalable register (Zn, Pn, FFR) is stored in an endianness-invariant
152 -----------------
154 When returning from a signal handler:
158 then the SVE registers/bits become non-live and take unspecified values.
162 data. However, for backward compatibility reasons, bits [127:0] of Z0..Z31
171 attempt is treated as illegal, resulting in a forced SIGSEGV.
175 --------------------
193 Section 9.)
205 This allows launching of a new program with a different vector
213 Return value: a nonnegative on success, or a negative value on error:
238 Z0..Z31 except for Z0 bits [127:0] .. Z31 bits [127:0] to become
241 flag, does not constitute a change to the vector length for this purpose.
248 The following flag may be OR-ed into the result:
255 vector length change (which would only normally be the case between a
261 Return value: a nonnegative value on success, or a negative value on error:
266 ---------------------
268 * A new regset NT_ARM_SVE is defined for use with PTRACE_GETREGSET and
280 If a call to PTRACE_GETREGSET requests less data than the value of
281 size, the caller can allocate a larger buffer and retry in order to
305 non-live (SETREGSET).
327 ... OR-ed with zero or more of the following flags, which have the same
337 The caller must make a further GETREGSET call if it needs to know what VL is
358 * The effect of writing a partial, incomplete payload is unspecified.
362 ---------------------------
364 * A NT_ARM_SVE note will be added to each coredump for each thread of the
366 been read if a PTRACE_GETREGSET of NT_ARM_SVE were executed for each thread
370 9. System runtime configuration
371 --------------------------------
373 * To mitigate the ABI impact of expansion of the signal frame, a policy
399 * a deferred vector length change is pending, established via the
406 Appendix A. SVE programmer's model (informative)
409 This section provides a minimal description of the additions made by SVE to the
410 ARMv8-A programmer's model that are relevant to this document.
415 A.1. Registers
416 ---------------
420 * 32 8VL-bit vector registers Z0..Z31
421 For each Zn, Zn bits [127:0] alias the ARMv8-A vector register Vn.
423 A register write using a Vn register name zeros all bits of the corresponding
426 * 16 VL-bit predicate registers P0..P15
428 * 1 VL-bit special-purpose predicate register FFR (the "first-fault register")
430 * a VL "pseudo-register" that determines the size of each vector register
437 16 <= VL <= VLmax, where VL must be a multiple of 16.
445 * FPSR and FPCR are retained from ARMv8-A, and interact with SVE floating-point
446 operations in a similar way to the way in which they interact with ARMv8
447 floating-point operations::
449 8VL-1 128 0 bit index
450 +---- //// -----------------+
451 Z0 | : V0 |
460 +---- //// -----------------+
462 VL-1 0 +-------+
463 +---- //// --+ FPSR | |
464 P0 | | +-------+
466 P15 | | +-------+
467 +---- //// --+
468 FFR | | +-----+
469 +---- //// --+ VL | |
470 +-----+
472 (*) callee-save:
473 This only applies to bits [63:0] of Z-/V-registers.
474 FPCR contains callee-save and caller-save bits. See [4] for details.
477 A.2. Procedure call standard
478 -----------------------------
480 The ARMv8-A base procedure call standard is extended as follows with respect to
483 * All SVE register bits that are not shared with FP/SIMD are caller-save.
485 * Z8 bits [63:0] .. Z15 bits [63:0] are callee-save.
487 This follows from the way these bits are mapped to V8..V15, which are caller-
491 Appendix B. ARMv8-A FP/SIMD programmer's model
499 ARMv8-A defines the following floating-point / SIMD register state:
501 * 32 128-bit vector registers V0..V31
502 * 2 32-bit status/control registers FPSR, FPCR
507 +---------------+
517 +---------------+
520 +-------+
522 +-------+
524 +-------+
526 (*) callee-save:
527 This only applies to bits [63:0] of V-registers.
528 FPCR contains a mixture of callee-save and caller-save bits.
540 [3] Documentation/arm64/cpu-feature-registers.rst
545 Procedure Call Standard for the ARM 64-bit Architecture (AArch64)