1 // RUN
: not llvm-mc
-triple aarch64 \
2 // RUN
: -mattr
=+crc
,+sm4
,+sha3
,+sha2
,+aes
,+fp
,+neon
,+ras
,+lse
,+predres
,+ccdp
,+mte
,+tlb-rmi
,+pan-rwv
,+ccpp
,+rcpc
,+ls64
,+flagm
,+hbc
,+mops \
3 // RUN
: -mattr
=+rcpc3
,+lse128
,+d128
,+the
,+rasv2
,+ite
,+cssc
,+specres2
,+gcs
,+cmpbr \
4 // RUN
: -filetype asm
-o
- %s
2>&1 | FileCheck
%s
7 // CHECK
: error
: unsupported architectural extension
: axp64
8 // CHECK-NEXT
: .arch_extension axp64
11 // CHECK-
NOT: [[@LINE-
1]]:1: error
: instruction requires
: crc
14 // CHECK
: [[@LINE-
1]]:1: error
: instruction requires
: crc
15 // CHECK-NEXT
: crc32cx w0
, w1
, x3
18 // CHECK-
NOT: [[@LINE-
1]]:1: error
: instruction requires
: sm4
21 // CHECK
: [[@LINE-
1]]:1: error
: instruction requires
: sm4
22 // CHECK-NEXT
: sm4e v2.4s
, v15.4s
25 // CHECK-
NOT: [[@LINE-
1]]:1: error
: instruction requires
: sha3
26 .arch_extension nosha3
28 // CHECK
: [[@LINE-
1]]:1: error
: instruction requires
: sha3
29 // CHECK-NEXT
: sha512h q0
, q1
, v2.2d
32 // CHECK-
NOT: [[@LINE-
1]]:1: error
: instruction requires
: sha2
33 .arch_extension nosha2
35 // CHECK
: [[@LINE-
1]]:1: error
: instruction requires
: sha2
36 // CHECK-NEXT
: sha1h s0
, s1
39 // CHECK-
NOT: [[@LINE-
1]]:1: error
: instruction requires
: aes
42 // CHECK
: [[@LINE-
1]]:1: error
: instruction requires
: aes
43 // CHECK-NEXT
: aese v0.16
b, v1.16
b
46 // CHECK-
NOT: [[@LINE-
1]]:1: error
: instruction requires
: fp
49 // CHECK
: [[@LINE-
1]]:1: error
: instruction requires
: fp
50 // CHECK-NEXT
: fminnm d0
, d0
, d1
52 // nofp implied nosimd
, so reinstate it
54 addp v0.4s
, v0.4s
, v0.4s
55 // CHECK-
NOT: [[@LINE-
1]]:1: error
: instruction requires
: neon
56 .arch_extension nosimd
57 addp v0.4s
, v0.4s
, v0.4s
58 // CHECK
: [[@LINE-
1]]:1: error
: instruction requires
: neon
59 // CHECK-NEXT
: addp v0.4s
, v0.4s
, v0.4s
62 // CHECK-
NOT: [[@LINE-
1]]:1: error
: instruction requires
: ras
65 // CHECK
: [[@LINE-
1]]:1: error
: instruction requires
: ras
69 // CHECK-
NOT: [[@LINE-
1]]:1: error
: instruction requires
: lse
72 // CHECK
: [[@LINE-
1]]:1: error
: instruction requires
: lse
73 // CHECK-NEXT
: casa w5
, w7
, [x20
]
75 // nolse implied nolse128
, so reinstate it
76 .arch_extension lse128
78 // CHECK-
NOT: [[@LINE-
1]]:1: error
: instruction requires
: lse128
79 .arch_extension nolse128
81 // CHECK
: [[@LINE-
1]]:1: error
: instruction requires
: lse128
82 // CHECK-NEXT
: swpp x0
, x2
, [x3
]
85 // CHECK-
NOT: [[@LINE-
1]]:5: error
: CFPRCTX requires
: predres
86 .arch_extension nopredres
88 // CHECK
: [[@LINE-
1]]:5: error
: CFPRCTX requires
: predres
89 // CHECK-NEXT
: cfp rctx
, x0
91 // nopredres implied nopredres2
, so reinstate it
92 .arch_extension predres2
94 // CHECK-
NOT: [[@LINE-
1]]:6: error
: COSP requires
: predres2
95 .arch_extension nopredres2
97 // CHECK
: [[@LINE-
1]]:6: error
: COSP requires
: predres2
98 // CHECK-NEXT
: cosp rctx
, x0
101 // CHECK-
NOT: [[@LINE-
1]]:4: error
: DC CVADP requires
: ccdp
102 .arch_extension noccdp
104 // CHECK
: [[@LINE-
1]]:4: error
: DC CVADP requires
: ccdp
105 // CHECK-NEXT
: dc cvadp
, x7
108 // CHECK-
NOT: [[@LINE-
1]]:1: error
: instruction requires
: mte
109 .arch_extension nomte
111 // CHECK
: [[@LINE-
1]]:1: error
: instruction requires
: mte
112 // CHECK-NEXT
: irg x0
, x1
115 // CHECK-
NOT: [[@LINE-
1]]:6: error
: TLBI VMALLE1OS requires
: tlb-rmi
116 .arch_extension notlb-rmi
118 // CHECK
: [[@LINE-
1]]:6: error
: TLBI VMALLE1OS requires
: tlb-rmi
119 // CHECK-NEXT
: tlbi vmalle1os
122 // CHECK-
NOT: [[@LINE-
1]]:4: error
: AT S1E1WP requires
: pan-rwv
123 .arch_extension nopan-rwv
125 // CHECK
: [[@LINE-
1]]:4: error
: AT S1E1WP requires
: pan-rwv
126 // CHECK-NEXT
: at s1e1wp
, x2
129 // CHECK-
NOT: [[@LINE-
1]]:4: error
: DC CVAP requires
: ccpp
130 .arch_extension noccpp
132 // CHECK
: [[@LINE-
1]]:4: error
: DC CVAP requires
: ccpp
133 // CHECK-NEXT
: dc cvap
, x7
136 // CHECK-
NOT: [[@LINE-
1]]:1: error
: instruction requires
: rcpc
137 .arch_extension norcpc
139 // CHECK
: [[@LINE-
1]]:1: error
: instruction requires
: rcpc
140 // CHECK-NEXT
: ldapr x0
, [x1
]
142 // norcpc implied norcpc3
, so reinstate it
143 .arch_extension rcpc3
144 stilp w24
, w0
, [x16
, #-8]!
145 // CHECK-
NOT: [[@LINE-
1]]:1: error
: instruction requires
: rcpc3
146 .arch_extension norcpc3
147 stilp w24
, w0
, [x16
, #-8]!
148 // CHECK
: [[@LINE-
1]]:1: error
: instruction requires
: rcpc3
149 // CHECK-NEXT
: stilp w24
, w0
, [x16
, #-8]!
152 // CHECK-
NOT: [[@LINE-
1]]:1: error
: instruction requires
: ls64
153 .arch_extension nols64
155 // CHECK
: [[@LINE-
1]]:1: error
: instruction requires
: ls64
156 // CHECK-NEXT
: ld64b x0
, [x13
]
159 // CHECK-
NOT: [[@LINE-
1]]:1: error
: instruction requires
: flagm
160 .arch_extension noflagm
162 // CHECK
: [[@LINE-
1]]:1: error
: instruction requires
: flagm
167 // CHECK-
NOT: [[@LINE-
1]]:1: error
: instruction requires
: hbc
168 .arch_extension nohbc
170 // CHECK
: [[@LINE-
1]]:1: error
: instruction requires
: hbc
171 // CHECK-NEXT
: bc.eq lbl
173 cpyfp
[x0
]!, [x1
]!, x2
!
174 // CHECK-
NOT: [[@LINE-
1]]:1: error
: instruction requires
: mops
175 .arch_extension nomops
176 cpyfp
[x0
]!, [x1
]!, x2
!
177 // CHECK
: [[@LINE-
1]]:1: error
: instruction requires
: mops
178 // CHECK-NEXT
: cpyfp
[x0
]!, [x1
]!, x2
!
180 // nolse128 implied nod128
, so reinstate it
182 // This needs to come before `
.arch_extension nothe` as it uses an instruction
183 // that requires both the
and d128
184 sysp
#0, c2, c0, #0, x0, x1
185 rcwcasp x0
, x1
, x6
, x7
, [x4
]
186 // CHECK-
NOT: [[@LINE-
2]]:1: error
: instruction requires
: d128
187 // CHECK-
NOT: [[@LINE-
2]]:1: error
: instruction requires
: d128
188 .arch_extension nod128
189 sysp
#0, c2, c0, #0, x0, x1
190 rcwcasp x0
, x1
, x6
, x7
, [x4
]
191 // CHECK
: [[@LINE-
2]]:1: error
: instruction requires
: d128
192 // CHECK-NEXT
: sysp
#0, c2, c0, #0, x0, x1
193 // CHECK
: [[@LINE-
3]]:1: error
: instruction requires
: d128
194 // CHECK-NEXT
: rcwcasp x0
, x1
, x6
, x7
, [x4
]
197 // CHECK-
NOT: [[@LINE-
1]]:1: error
: instruction requires
: the
198 .arch_extension nothe
200 // CHECK
: [[@LINE-
1]]:1: error
: instruction requires
: the
201 // CHECK-NEXT
: rcwswp x0
, x1
, [x2
]
204 // CHECK-
NOT: [[@LINE-
1]]:1: error
: instruction requires
: ite
205 .arch_extension noite
207 // CHECK
: [[@LINE-
1]]:1: error
: instruction requires
: ite
208 // CHECK-NEXT
: trcit x0
211 // CHECK-
NOT: [[@LINE-
1]]:1: error
: instruction requires
: cssc
212 .arch_extension nocssc
214 // CHECK
: [[@LINE-
1]]:1: error
: instruction requires
: cssc
215 // CHECK-NEXT
: umax x0
, x1
, x2
217 // noras implied norasv2
, so reinstate it
218 .arch_extension rasv2
220 // CHECK-
NOT: [[@LINE-
1]]:9: error
: expected readable system register
221 .arch_extension norasv2
223 // CHECK
: [[@LINE-
1]]:9: error
: expected readable system register
224 // CHECK-NEXT
: mrs x0
, ERXGSR_EL1
227 // CHECK-
NOT: [[@LINE-
1]]:1: error
: instruction requires
: gcs
228 .arch_extension nogcs
230 // CHECK
: [[@LINE-
1]]:1: error
: instruction requires
: gcs
231 // CHECK-NEXT
: gcspushm x0
234 // CHECK-
NOT: [[@LINE-
1]]:1: error
: instruction requires
: cmpbr
235 .arch_extension nocmpbr
237 // CHECK
: [[@LINE-
1]]:1: error
: instruction requires
: cmpbr
238 // CHECK-NEXT
: cbhi x5
, x5
, #1020
241 .arch_extension fprcvt
242 .arch_extension nofprcvt
244 // CHECK
: [[@LINE-
1]]:1: error
: instruction requires
: fprcvt
245 // CHECK-NEXT
: fcvtmu s0
, d1
247 .arch_extension f8f16mm
248 .arch_extension nof8f16mm
249 fmmla v2.8h
, v1.16
b, v0.16
b
250 // CHECK
: [[@LINE-
1]]:1: error
: instruction requires
: f8f16mm
251 // CHECK-NEXT
: fmmla v2.8h
, v1.16
b, v0.16
b
253 .arch_extension f8f32mm
254 .arch_extension nof8f32mm
255 fmmla v2.4s
, v1.16
b, v0.16
b
256 // CHECK
: [[@LINE-
1]]:1: error
: instruction requires
: f8f32mm
257 // CHECK-NEXT
: fmmla v2.4s
, v1.16
b, v0.16
b