8 cmeq v0.4s, v1.4s, x0 // Error (wrong register type)
9 cmeq v0.4s, v1.4s, #x0 // OK
10 cmeq v0.4s, v1.4s, s0 // Error (wrong register type)
11 cmeq v0.4s, v1.4s, #s0 // OK
12 cmeq v0.4s, v1.4s, z0 // OK (for compatibility)
13 cmeq v0.4s, v1.4s, #z0 // OK
14 cmeq v0.4s, v1.4s, z0.s // OK (for compatibility)
15 cmeq v0.4s, v1.4s, #z0.s // OK
16 cmeq v0.4s, v1.4s, p0 // OK (for compatibility)
17 cmeq v0.4s, v1.4s, #p0 // OK
18 cmeq v0.4s, v1.4s, p0.b // Error (not 0)
19 cmeq v0.4s, v1.4s, #p0.b // Error (not 0)
21 ldr x1, [x0, x0] // OK
22 ldr x1, [x0, #x0] // OK
23 ldr x1, [x2, s0] // OK (not considered a register here)
24 ldr x1, [x2, #s0] // OK
25 ldr x1, [x2, z0] // OK (for compatibility)
26 ldr x1, [x2, #z0] // OK
27 ldr x2, [x2, z0.s] // OK (for compatibility)
28 ldr x1, [x2, #z0.s] // OK
29 ldr x2, [x2, p0] // OK (not considered a register here)
30 ldr x1, [x2, #p0] // OK
31 ldr x2, [x2, p0.b] // OK (not considered a register here)
32 ldr x1, [x2, #p0.b] // OK
35 ldr x1, [s0] // Error (not a base register)
37 ldr x1, [z0.s] // Error
38 ldr x1, [p0] // Error (not a base register)
39 ldr x1, [p0.b] // Error (not a base register)
41 ldr x0, [x1, x2, lsl x0] // OK (not considered a register here)
42 ldr x0, [x1, x2, lsl #x0] // OK
43 ldr x0, [x1, x2, lsl s0] // OK (not considered a register here)
44 ldr x0, [x1, x2, lsl #s0] // OK
45 ldr x0, [x1, x2, lsl z0] // OK (not considered a register here)
46 ldr x0, [x1, x2, lsl #z0] // OK
47 ldr x0, [x1, x2, lsl z0.s] // OK (not considered a register here)
48 ldr x0, [x1, x2, lsl #z0.s] // OK
49 ldr x0, [x1, x2, lsl p0] // OK (not considered a register here)
50 ldr x0, [x1, x2, lsl #p0] // OK
51 ldr x0, [x1, x2, lsl p0.b] // Error (invalid shift amount)
52 ldr x0, [x1, x2, lsl #p0.b] // Error (invalid shift amount)
56 mov x0, s0 // OK (not considered a register here)
58 mov x0, z0 // OK (not considered a register here)
60 mov x0, z0.s // OK (not considered a register here)
62 mov x0, p0 // OK (not considered a register here)
64 mov x0, p0.b // OK (not considered a register here)
67 movk x0, x0 // OK (not considered a register here)
69 movk x0, s0 // OK (not considered a register here)
71 movk x0, z0 // OK (not considered a register here)
73 movk x0, z0.s // OK (not considered a register here)
75 movk x0, p0 // OK (not considered a register here)
77 movk x0, p0.b // OK (not considered a register here)
82 add x0, x0, s0 // OK (not considered a register here)
84 add x0, x0, z0 // OK (not considered a register here)
86 add x0, x0, z0.s // OK (not considered a register here)
87 add x0, x0, #z0.s // OK
88 add x0, x0, p0 // OK (not considered a register here)
90 add x0, x0, p0.b // OK (not considered a register here)
91 add x0, x0, #p0.b // OK
94 and x0, x0, #x0 // Error (immediate out of range)
95 and x0, x0, s0 // Error (immediate out of range)
96 and x0, x0, #s0 // Error (immediate out of range)
97 and x0, x0, z0 // Error (immediate out of range)
98 and x0, x0, #z0 // Error (immediate out of range)
99 and x0, x0, z0.s // Error (immediate out of range)
100 and x0, x0, #z0.s // Error (immediate out of range)
101 and x0, x0, p0 // Error (immediate out of range)
102 and x0, x0, #p0 // Error (immediate out of range)
103 and x0, x0, p0.b // OK (not considered a register here)
104 and x0, x0, #p0.b // OK
107 lsl x0, x0, #x0 // OK
108 lsl x0, x0, s0 // Error (wrong register type)
109 lsl x0, x0, #s0 // OK
110 lsl x0, x0, z0 // OK (for compatibility)
111 lsl x0, x0, #z0 // OK
112 lsl x0, x0, z0.s // OK (for compatibility)
113 lsl x0, x0, #z0.s // OK
114 lsl x0, x0, p0 // OK (for compatibility)
115 lsl x0, x0, #p0 // OK
116 lsl x0, x0, p0.b // OK (for compatibility)
117 lsl x0, x0, #p0.b // OK
119 adr x0, x0 // OK (not considered a register here)
121 adr x0, s0 // OK (not considered a register here)
123 adr x0, z0 // OK (not considered a register here)
125 adr x0, z0.s // OK (not considered a register here)
127 adr x0, p0 // OK (not considered a register here)
129 adr x0, p0.b // OK (not considered a register here)
132 svc x0 // Error (immediate operand required)
134 svc s0 // Error (immediate operand required)
136 svc z0 // OK (for compatibility)
138 svc z0.s // OK (for compatibility)
140 svc p0 // OK (for compatibility)
142 svc p0.b // OK (for compatibility)