diff options
author | Will Deacon <will@kernel.org> | 2021-06-24 14:07:04 +0100 |
---|---|---|
committer | Will Deacon <will@kernel.org> | 2021-06-24 14:07:04 +0100 |
commit | 3d1bf78c7b13a0ad88e77dce94df88400f47e0dd (patch) | |
tree | 8175a9c64a9dbfb47f73dd059a9f8233a1ce14ff /arch/arm64/include/asm | |
parent | a4a49140ae84e74f5d831c2416fe4860c8ff9d34 (diff) | |
parent | ad4711f962e08eff8d6e9b03f9670b1af6ea9395 (diff) | |
download | linux-stable-3d1bf78c7b13a0ad88e77dce94df88400f47e0dd.tar.gz linux-stable-3d1bf78c7b13a0ad88e77dce94df88400f47e0dd.tar.bz2 linux-stable-3d1bf78c7b13a0ad88e77dce94df88400f47e0dd.zip |
Merge branch 'for-next/sve' into for-next/core
Optimise SVE switching for CPUs with 128-bit implementations.
* for-next/sve:
arm64/sve: Skip flushing Z registers with 128 bit vectors
arm64/sve: Use the sve_flush macros in sve_load_from_fpsimd_state()
arm64/sve: Split _sve_flush macro into separate Z and predicate flushes
Diffstat (limited to 'arch/arm64/include/asm')
-rw-r--r-- | arch/arm64/include/asm/fpsimd.h | 2 | ||||
-rw-r--r-- | arch/arm64/include/asm/fpsimdmacros.h | 4 |
2 files changed, 4 insertions, 2 deletions
diff --git a/arch/arm64/include/asm/fpsimd.h b/arch/arm64/include/asm/fpsimd.h index 2599504674b5..c072161d5c65 100644 --- a/arch/arm64/include/asm/fpsimd.h +++ b/arch/arm64/include/asm/fpsimd.h @@ -69,7 +69,7 @@ static inline void *sve_pffr(struct thread_struct *thread) extern void sve_save_state(void *state, u32 *pfpsr); extern void sve_load_state(void const *state, u32 const *pfpsr, unsigned long vq_minus_1); -extern void sve_flush_live(void); +extern void sve_flush_live(unsigned long vq_minus_1); extern void sve_load_from_fpsimd_state(struct user_fpsimd_state const *state, unsigned long vq_minus_1); extern unsigned int sve_get_vl(void); diff --git a/arch/arm64/include/asm/fpsimdmacros.h b/arch/arm64/include/asm/fpsimdmacros.h index a2563992d2dc..059204477ce6 100644 --- a/arch/arm64/include/asm/fpsimdmacros.h +++ b/arch/arm64/include/asm/fpsimdmacros.h @@ -213,8 +213,10 @@ mov v\nz\().16b, v\nz\().16b .endm -.macro sve_flush +.macro sve_flush_z _for n, 0, 31, _sve_flush_z \n +.endm +.macro sve_flush_p_ffr _for n, 0, 15, _sve_pfalse \n _sve_wrffr 0 .endm |