Merge tag 'trace-printf-v6.13' of git://git.kernel.org/pub/scm/linux/kernel/git/trace...
[drm/drm-misc.git] / tools / testing / selftests / arm64 / fp / sme-inst.h
blob85b9184e0835c59dbd5674b0210e6b9a43c1be4c
1 // SPDX-License-Identifier: GPL-2.0-only
2 // Copyright (C) 2021-2 ARM Limited.
3 // Original author: Mark Brown <broonie@kernel.org>
5 #ifndef SME_INST_H
6 #define SME_INST_H
8 #define REG_FPMR S3_3_C4_C4_2
11 * RDSVL X\nx, #\imm
13 .macro rdsvl nx, imm
14 .inst 0x4bf5800 \
15 | (\imm << 5) \
16 | (\nx)
17 .endm
19 .macro smstop
20 msr S0_3_C4_C6_3, xzr
21 .endm
23 .macro smstart_za
24 msr S0_3_C4_C5_3, xzr
25 .endm
27 .macro smstart_sm
28 msr S0_3_C4_C3_3, xzr
29 .endm
32 * LDR (vector to ZA array):
33 * LDR ZA[\nw, #\offset], [X\nxbase, #\offset, MUL VL]
35 .macro _ldr_za nw, nxbase, offset=0
36 .inst 0xe1000000 \
37 | (((\nw) & 3) << 13) \
38 | ((\nxbase) << 5) \
39 | ((\offset) & 7)
40 .endm
43 * STR (vector from ZA array):
44 * STR ZA[\nw, #\offset], [X\nxbase, #\offset, MUL VL]
46 .macro _str_za nw, nxbase, offset=0
47 .inst 0xe1200000 \
48 | (((\nw) & 3) << 13) \
49 | ((\nxbase) << 5) \
50 | ((\offset) & 7)
51 .endm
54 * LDR (ZT0)
56 * LDR ZT0, nx
58 .macro _ldr_zt nx
59 .inst 0xe11f8000 \
60 | (((\nx) & 0x1f) << 5)
61 .endm
64 * STR (ZT0)
66 * STR ZT0, nx
68 .macro _str_zt nx
69 .inst 0xe13f8000 \
70 | (((\nx) & 0x1f) << 5)
71 .endm
73 #endif