Skip to content

Commit 6d51b18

Browse files
brooniectmarinas
authored andcommitted
kselftest/arm64: Add manual encodings for SME instructions
As for the kernel so that we don't have ambitious toolchain requirements to build the tests manually encode some of the SVE instructions. Signed-off-by: Mark Brown <broonie@kernel.org> Reviewed-by: Shuah Khan <skhan@linuxfoundation.org> Acked-by: Catalin Marinas <catalin.marinas@arm.com> Link: https://lore.kernel.org/r/20220419112247.711548-29-broonie@kernel.org Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
1 parent e2d9642 commit 6d51b18

1 file changed

Lines changed: 51 additions & 0 deletions

File tree

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
// SPDX-License-Identifier: GPL-2.0-only
2+
// Copyright (C) 2021-2 ARM Limited.
3+
// Original author: Mark Brown <broonie@kernel.org>
4+
5+
#ifndef SME_INST_H
6+
#define SME_INST_H
7+
8+
/*
9+
* RDSVL X\nx, #\imm
10+
*/
11+
.macro rdsvl nx, imm
12+
.inst 0x4bf5800 \
13+
| (\imm << 5) \
14+
| (\nx)
15+
.endm
16+
17+
.macro smstop
18+
msr S0_3_C4_C6_3, xzr
19+
.endm
20+
21+
.macro smstart_za
22+
msr S0_3_C4_C5_3, xzr
23+
.endm
24+
25+
.macro smstart_sm
26+
msr S0_3_C4_C3_3, xzr
27+
.endm
28+
29+
/*
30+
* LDR (vector to ZA array):
31+
* LDR ZA[\nw, #\offset], [X\nxbase, #\offset, MUL VL]
32+
*/
33+
.macro _ldr_za nw, nxbase, offset=0
34+
.inst 0xe1000000 \
35+
| (((\nw) & 3) << 13) \
36+
| ((\nxbase) << 5) \
37+
| ((\offset) & 7)
38+
.endm
39+
40+
/*
41+
* STR (vector from ZA array):
42+
* STR ZA[\nw, #\offset], [X\nxbase, #\offset, MUL VL]
43+
*/
44+
.macro _str_za nw, nxbase, offset=0
45+
.inst 0xe1200000 \
46+
| (((\nw) & 3) << 13) \
47+
| ((\nxbase) << 5) \
48+
| ((\offset) & 7)
49+
.endm
50+
51+
#endif

0 commit comments

Comments
 (0)