1// RUN: llvm-mc -triple=aarch64 -show-encoding -mattr=+sme < %s \
2// RUN:        | FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST
3// RUN: not llvm-mc -triple=aarch64 -show-encoding < %s 2>&1 \
4// RUN:        | FileCheck %s --check-prefix=CHECK-ERROR
5// RUN: llvm-mc -triple=aarch64 -filetype=obj -mattr=+sme < %s \
6// RUN:        | llvm-objdump -d --mattr=+sme - | FileCheck %s --check-prefix=CHECK-INST
7// RUN: llvm-mc -triple=aarch64 -filetype=obj -mattr=+sme < %s \
8// RUN:        | llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-UNKNOWN
9
10// --------------------------------------------------------------------------//
11// read
12
13mrs x3, ID_AA64SMFR0_EL1
14// CHECK-INST: mrs x3, ID_AA64SMFR0_EL1
15// CHECK-ENCODING: [0xa3,0x04,0x38,0xd5]
16// CHECK-ERROR: expected readable system register
17// CHECK-UNKNOWN: a3 04 38 d5   mrs   x3, S3_0_C0_C4_5
18
19mrs x3, SMCR_EL1
20// CHECK-INST: mrs x3, SMCR_EL1
21// CHECK-ENCODING: [0xc3,0x12,0x38,0xd5]
22// CHECK-ERROR: expected readable system register
23// CHECK-UNKNOWN: c3 12 38 d5   mrs   x3, S3_0_C1_C2_6
24
25mrs x3, SMCR_EL2
26// CHECK-INST: mrs x3, SMCR_EL2
27// CHECK-ENCODING: [0xc3,0x12,0x3c,0xd5]
28// CHECK-ERROR: expected readable system register
29// CHECK-UNKNOWN: c3 12 3c d5   mrs   x3, S3_4_C1_C2_6
30
31mrs x3, SMCR_EL3
32// CHECK-INST: mrs x3, SMCR_EL3
33// CHECK-ENCODING: [0xc3,0x12,0x3e,0xd5]
34// CHECK-ERROR: expected readable system register
35// CHECK-UNKNOWN: c3 12 3e d5   mrs   x3, S3_6_C1_C2_6
36
37mrs x3, SMCR_EL12
38// CHECK-INST: mrs x3, SMCR_EL12
39// CHECK-ENCODING: [0xc3,0x12,0x3d,0xd5]
40// CHECK-ERROR: expected readable system register
41// CHECK-UNKNOWN: c3 12 3d d5   mrs   x3, S3_5_C1_C2_6
42
43mrs x3, SVCR
44// CHECK-INST: mrs x3, SVCR
45// CHECK-ENCODING: [0x43,0x42,0x3b,0xd5]
46// CHECK-ERROR: expected readable system register
47// CHECK-UNKNOWN: 43 42 3b d5   mrs   x3, S3_3_C4_C2_2
48
49mrs x3, SMPRI_EL1
50// CHECK-INST: mrs x3, SMPRI_EL1
51// CHECK-ENCODING: [0x83,0x12,0x38,0xd5]
52// CHECK-ERROR: expected readable system register
53// CHECK-UNKNOWN: 83 12 38 d5   mrs   x3, S3_0_C1_C2_4
54
55mrs x3, SMPRIMAP_EL2
56// CHECK-INST: mrs x3, SMPRIMAP_EL2
57// CHECK-ENCODING: [0xa3,0x12,0x3c,0xd5]
58// CHECK-ERROR: expected readable system register
59// CHECK-UNKNOWN: a3 12 3c d5   mrs   x3, S3_4_C1_C2_5
60
61mrs x3, SMIDR_EL1
62// CHECK-INST: mrs x3, SMIDR_EL1
63// CHECK-ENCODING: [0xc3,0x00,0x39,0xd5]
64// CHECK-ERROR: expected readable system register
65// CHECK-UNKNOWN: c3 00 39 d5   mrs   x3, S3_1_C0_C0_6
66
67mrs x3, TPIDR2_EL0
68// CHECK-INST: mrs x3, TPIDR2_EL0
69// CHECK-ENCODING: [0xa3,0xd0,0x3b,0xd5]
70// CHECK-ERROR: expected readable system register
71// CHECK-UNKNOWN: a3 d0 3b d5   mrs   x3, S3_3_C13_C0_5
72
73// --------------------------------------------------------------------------//
74// write
75
76msr SMCR_EL1, x3
77// CHECK-INST: msr SMCR_EL1, x3
78// CHECK-ENCODING: [0xc3,0x12,0x18,0xd5]
79// CHECK-ERROR: expected writable system register or pstate
80// CHECK-UNKNOWN: c3 12 18 d5   msr   S3_0_C1_C2_6, x3
81
82msr SMCR_EL2, x3
83// CHECK-INST: msr SMCR_EL2, x3
84// CHECK-ENCODING: [0xc3,0x12,0x1c,0xd5]
85// CHECK-ERROR: expected writable system register or pstate
86// CHECK-UNKNOWN: c3 12 1c d5   msr   S3_4_C1_C2_6, x3
87
88msr SMCR_EL3, x3
89// CHECK-INST: msr SMCR_EL3, x3
90// CHECK-ENCODING: [0xc3,0x12,0x1e,0xd5]
91// CHECK-ERROR: expected writable system register or pstate
92// CHECK-UNKNOWN: c3 12 1e d5   msr   S3_6_C1_C2_6, x3
93
94msr SMCR_EL12, x3
95// CHECK-INST: msr SMCR_EL12, x3
96// CHECK-ENCODING: [0xc3,0x12,0x1d,0xd5]
97// CHECK-ERROR: expected writable system register or pstate
98// CHECK-UNKNOWN: c3 12 1d d5   msr   S3_5_C1_C2_6, x3
99
100msr SVCR, x3
101// CHECK-INST: msr SVCR, x3
102// CHECK-ENCODING: [0x43,0x42,0x1b,0xd5]
103// CHECK-ERROR: expected writable system register or pstate
104// CHECK-UNKNOWN: 43 42 1b d5   msr   S3_3_C4_C2_2, x3
105
106msr SMPRI_EL1, x3
107// CHECK-INST: msr SMPRI_EL1, x3
108// CHECK-ENCODING: [0x83,0x12,0x18,0xd5]
109// CHECK-ERROR: expected writable system register or pstate
110// CHECK-UNKNOWN: 83 12 18 d5   msr   S3_0_C1_C2_4, x3
111
112msr SMPRIMAP_EL2, x3
113// CHECK-INST: msr SMPRIMAP_EL2, x3
114// CHECK-ENCODING: [0xa3,0x12,0x1c,0xd5]
115// CHECK-ERROR: expected writable system register or pstate
116// CHECK-UNKNOWN: a3 12 1c d5   msr   S3_4_C1_C2_5, x3
117
118msr SVCRSM, #0
119// CHECK-INST: smstop sm
120// CHECK-ENCODING: [0x7f,0x42,0x03,0xd5]
121// CHECK-ERROR: expected writable system register or pstate
122// CHECK-UNKNOWN: 7f 42 03 d5   msr   S0_3_C4_C2_3, xzr
123
124msr SVCRSM, #1
125// CHECK-INST: smstart
126// CHECK-ENCODING: [0x7f,0x43,0x03,0xd5]
127// CHECK-ERROR: expected writable system register or pstate
128// CHECK-UNKNOWN: 7f 43 03 d5   msr   S0_3_C4_C3_3, xzr
129
130msr SVCRZA, #0
131// CHECK-INST: smstop za
132// CHECK-ENCODING: [0x7f,0x44,0x03,0xd5]
133// CHECK-ERROR: expected writable system register or pstate
134// CHECK-UNKNOWN: 7f 44 03 d5   msr   S0_3_C4_C4_3, xzr
135
136msr SVCRZA, #1
137// CHECK-INST: smstart za
138// CHECK-ENCODING: [0x7f,0x45,0x03,0xd5]
139// CHECK-ERROR: expected writable system register or pstate
140// CHECK-UNKNOWN: 7f 45 03 d5   msr   S0_3_C4_C5_3, xzr
141
142msr SVCRSMZA, #0
143// CHECK-INST: smstop
144// CHECK-ENCODING: [0x7f,0x46,0x03,0xd5]
145// CHECK-ERROR: expected writable system register or pstate
146// CHECK-UNKNOWN: 7f 46 03 d5   msr   S0_3_C4_C6_3, xzr
147
148msr SVCRSMZA, #1
149// CHECK-INST: smstart
150// CHECK-ENCODING: [0x7f,0x47,0x03,0xd5]
151// CHECK-ERROR: expected writable system register or pstate
152// CHECK-UNKNOWN: 7f 47 03 d5   msr   S0_3_C4_C7_3, xzr
153
154msr TPIDR2_EL0, x3
155// CHECK-INST: msr TPIDR2_EL0, x3
156// CHECK-ENCODING: [0xa3,0xd0,0x1b,0xd5]
157// CHECK-ERROR: expected writable system register or pstate
158// CHECK-UNKNOWN: a3 d0 1b d5   msr   S3_3_C13_C0_5, x3
159