Lines Matching refs:vq
44 * See linux/Documentation/arm64/sve.txt for a description of the VL/VQ
84 * Note: for all these macros, the "vq" argument denotes the SVE
87 * The correct way to obtain vq is to use sve_vq_from_vl(vl). The
101 * ZREGS __uint128_t[SVE_NUM_ZREGS][vq] all Z-registers
102 * ZREG __uint128_t[vq] individual Z-register Zn
104 * PREGS uint16_t[SVE_NUM_PREGS][vq] all P-registers
105 * PREG uint16_t[vq] individual P-register Pn
107 * FFR uint16_t[vq] first-fault status register
112 #define SVE_SIG_ZREG_SIZE(vq) ((__u32)(vq) * SVE_VQ_BYTES)
113 #define SVE_SIG_PREG_SIZE(vq) ((__u32)(vq) * (SVE_VQ_BYTES / 8))
114 #define SVE_SIG_FFR_SIZE(vq) SVE_SIG_PREG_SIZE(vq)
121 #define SVE_SIG_ZREG_OFFSET(vq, n) \
122 (SVE_SIG_ZREGS_OFFSET + SVE_SIG_ZREG_SIZE(vq) * (n))
123 #define SVE_SIG_ZREGS_SIZE(vq) \
124 (SVE_SIG_ZREG_OFFSET(vq, SVE_NUM_ZREGS) - SVE_SIG_ZREGS_OFFSET)
126 #define SVE_SIG_PREGS_OFFSET(vq) \
127 (SVE_SIG_ZREGS_OFFSET + SVE_SIG_ZREGS_SIZE(vq))
128 #define SVE_SIG_PREG_OFFSET(vq, n) \
129 (SVE_SIG_PREGS_OFFSET(vq) + SVE_SIG_PREG_SIZE(vq) * (n))
130 #define SVE_SIG_PREGS_SIZE(vq) \
131 (SVE_SIG_PREG_OFFSET(vq, SVE_NUM_PREGS) - SVE_SIG_PREGS_OFFSET(vq))
133 #define SVE_SIG_FFR_OFFSET(vq) \
134 (SVE_SIG_PREGS_OFFSET(vq) + SVE_SIG_PREGS_SIZE(vq))
136 #define SVE_SIG_REGS_SIZE(vq) \
137 (SVE_SIG_FFR_OFFSET(vq) + SVE_SIG_FFR_SIZE(vq) - SVE_SIG_REGS_OFFSET)
139 #define SVE_SIG_CONTEXT_SIZE(vq) (SVE_SIG_REGS_OFFSET + SVE_SIG_REGS_SIZE(vq))
169 * metadata in the header: SVE_PT_SIZE(vq, flags) gives the total size
173 * "vq" argument to these macros.
191 * future: use SVE_PT_FPSIMD_SIZE(vq, flags) to compute the total size.
192 * SVE_PT_FPSIMD_SIZE(vq, flags) will never be less than
198 #define SVE_PT_FPSIMD_SIZE(vq, flags) (sizeof(struct user_fpsimd_state))
204 * SVE_PT_SVE_SIZE(vq, flags).
225 #define SVE_PT_SVE_ZREG_SIZE(vq) SVE_SIG_ZREG_SIZE(vq)
226 #define SVE_PT_SVE_PREG_SIZE(vq) SVE_SIG_PREG_SIZE(vq)
227 #define SVE_PT_SVE_FFR_SIZE(vq) SVE_SIG_FFR_SIZE(vq)
238 #define SVE_PT_SVE_ZREG_OFFSET(vq, n) \
239 __SVE_SIG_TO_PT(SVE_SIG_ZREG_OFFSET(vq, n))
240 #define SVE_PT_SVE_ZREGS_SIZE(vq) \
241 (SVE_PT_SVE_ZREG_OFFSET(vq, SVE_NUM_ZREGS) - SVE_PT_SVE_ZREGS_OFFSET)
243 #define SVE_PT_SVE_PREGS_OFFSET(vq) \
244 __SVE_SIG_TO_PT(SVE_SIG_PREGS_OFFSET(vq))
245 #define SVE_PT_SVE_PREG_OFFSET(vq, n) \
246 __SVE_SIG_TO_PT(SVE_SIG_PREG_OFFSET(vq, n))
247 #define SVE_PT_SVE_PREGS_SIZE(vq) \
248 (SVE_PT_SVE_PREG_OFFSET(vq, SVE_NUM_PREGS) - \
249 SVE_PT_SVE_PREGS_OFFSET(vq))
252 #define SVE_PT_SVE_FFR_OFFSET(vq) \
253 __SVE_SIG_TO_PT(SVE_SIG_FFR_OFFSET(vq))
255 #define SVE_PT_SVE_FPSR_OFFSET(vq) \
256 ((SVE_PT_SVE_FFR_OFFSET(vq) + SVE_PT_SVE_FFR_SIZE(vq) + \
259 #define SVE_PT_SVE_FPCR_OFFSET(vq) \
260 (SVE_PT_SVE_FPSR_OFFSET(vq) + SVE_PT_SVE_FPSR_SIZE)
267 #define SVE_PT_SVE_SIZE(vq, flags) \
268 ((SVE_PT_SVE_FPCR_OFFSET(vq) + SVE_PT_SVE_FPCR_SIZE \
272 #define SVE_PT_SIZE(vq, flags) \
274 SVE_PT_SVE_OFFSET + SVE_PT_SVE_SIZE(vq, flags) \
275 : SVE_PT_FPSIMD_OFFSET + SVE_PT_FPSIMD_SIZE(vq, flags))
296 metadata in the header: ZA_PT_SIZE(vq, flags) gives the total size
300 for details of how to pass the correct "vq" argument to these macros. */
308 ZA_PT_ZA_SIZE(vq, flags).
319 #define ZA_PT_ZAV_OFFSET(vq, n) \
320 (ZA_PT_ZA_OFFSET + ((vq * SVE_VQ_BYTES) * n))
322 #define ZA_PT_ZA_SIZE(vq) ((vq * SVE_VQ_BYTES) * (vq * SVE_VQ_BYTES))
324 #define ZA_PT_SIZE(vq) \
325 (ZA_PT_ZA_OFFSET + ZA_PT_ZA_SIZE(vq))