1// RUN: llvm-mc -triple=aarch64 -show-encoding -mattr=+sve < %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=+sve < %s \
6// RUN:        | llvm-objdump -d --mattr=+sve - | FileCheck %s --check-prefix=CHECK-INST
7// RUN: llvm-mc -triple=aarch64 -filetype=obj -mattr=+sve < %s \
8// RUN:        | llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-UNKNOWN
9
10// ---------------------------------------------------------------------------//
11// Test vector form and aliases.
12// ---------------------------------------------------------------------------//
13
14incw    z0.s
15// CHECK-INST: incw    z0.s
16// CHECK-ENCODING: [0xe0,0xc3,0xb0,0x04]
17// CHECK-ERROR: instruction requires: sve
18// CHECK-UNKNOWN: e0 c3 b0 04 <unknown>
19
20incw    z0.s, all
21// CHECK-INST: incw    z0.s
22// CHECK-ENCODING: [0xe0,0xc3,0xb0,0x04]
23// CHECK-ERROR: instruction requires: sve
24// CHECK-UNKNOWN: e0 c3 b0 04 <unknown>
25
26incw    z0.s, all, mul #1
27// CHECK-INST: incw    z0.s
28// CHECK-ENCODING: [0xe0,0xc3,0xb0,0x04]
29// CHECK-ERROR: instruction requires: sve
30// CHECK-UNKNOWN: e0 c3 b0 04 <unknown>
31
32incw    z0.s, all, mul #16
33// CHECK-INST: incw    z0.s, all, mul #16
34// CHECK-ENCODING: [0xe0,0xc3,0xbf,0x04]
35// CHECK-ERROR: instruction requires: sve
36// CHECK-UNKNOWN: e0 c3 bf 04 <unknown>
37
38
39// ---------------------------------------------------------------------------//
40// Test scalar form and aliases.
41// ---------------------------------------------------------------------------//
42
43incw    x0
44// CHECK-INST: incw    x0
45// CHECK-ENCODING: [0xe0,0xe3,0xb0,0x04]
46// CHECK-ERROR: instruction requires: sve
47// CHECK-UNKNOWN: e0 e3 b0 04 <unknown>
48
49incw    x0, all
50// CHECK-INST: incw    x0
51// CHECK-ENCODING: [0xe0,0xe3,0xb0,0x04]
52// CHECK-ERROR: instruction requires: sve
53// CHECK-UNKNOWN: e0 e3 b0 04 <unknown>
54
55incw    x0, all, mul #1
56// CHECK-INST: incw    x0
57// CHECK-ENCODING: [0xe0,0xe3,0xb0,0x04]
58// CHECK-ERROR: instruction requires: sve
59// CHECK-UNKNOWN: e0 e3 b0 04 <unknown>
60
61incw    x0, all, mul #16
62// CHECK-INST: incw    x0, all, mul #16
63// CHECK-ENCODING: [0xe0,0xe3,0xbf,0x04]
64// CHECK-ERROR: instruction requires: sve
65// CHECK-UNKNOWN: e0 e3 bf 04 <unknown>
66
67
68// ---------------------------------------------------------------------------//
69// Test predicate patterns
70// ---------------------------------------------------------------------------//
71
72
73incw    x0, pow2
74// CHECK-INST: incw    x0, pow2
75// CHECK-ENCODING: [0x00,0xe0,0xb0,0x04]
76// CHECK-ERROR: instruction requires: sve
77// CHECK-UNKNOWN: 00 e0 b0 04 <unknown>
78
79incw    x0, vl1
80// CHECK-INST: incw    x0, vl1
81// CHECK-ENCODING: [0x20,0xe0,0xb0,0x04]
82// CHECK-ERROR: instruction requires: sve
83// CHECK-UNKNOWN: 20 e0 b0 04 <unknown>
84
85incw    x0, vl2
86// CHECK-INST: incw    x0, vl2
87// CHECK-ENCODING: [0x40,0xe0,0xb0,0x04]
88// CHECK-ERROR: instruction requires: sve
89// CHECK-UNKNOWN: 40 e0 b0 04 <unknown>
90
91incw    x0, vl3
92// CHECK-INST: incw    x0, vl3
93// CHECK-ENCODING: [0x60,0xe0,0xb0,0x04]
94// CHECK-ERROR: instruction requires: sve
95// CHECK-UNKNOWN: 60 e0 b0 04 <unknown>
96
97incw    x0, vl4
98// CHECK-INST: incw    x0, vl4
99// CHECK-ENCODING: [0x80,0xe0,0xb0,0x04]
100// CHECK-ERROR: instruction requires: sve
101// CHECK-UNKNOWN: 80 e0 b0 04 <unknown>
102
103incw    x0, vl5
104// CHECK-INST: incw    x0, vl5
105// CHECK-ENCODING: [0xa0,0xe0,0xb0,0x04]
106// CHECK-ERROR: instruction requires: sve
107// CHECK-UNKNOWN: a0 e0 b0 04 <unknown>
108
109incw    x0, vl6
110// CHECK-INST: incw    x0, vl6
111// CHECK-ENCODING: [0xc0,0xe0,0xb0,0x04]
112// CHECK-ERROR: instruction requires: sve
113// CHECK-UNKNOWN: c0 e0 b0 04 <unknown>
114
115incw    x0, vl7
116// CHECK-INST: incw    x0, vl7
117// CHECK-ENCODING: [0xe0,0xe0,0xb0,0x04]
118// CHECK-ERROR: instruction requires: sve
119// CHECK-UNKNOWN: e0 e0 b0 04 <unknown>
120
121incw    x0, vl8
122// CHECK-INST: incw    x0, vl8
123// CHECK-ENCODING: [0x00,0xe1,0xb0,0x04]
124// CHECK-ERROR: instruction requires: sve
125// CHECK-UNKNOWN: 00 e1 b0 04 <unknown>
126
127incw    x0, vl16
128// CHECK-INST: incw    x0, vl16
129// CHECK-ENCODING: [0x20,0xe1,0xb0,0x04]
130// CHECK-ERROR: instruction requires: sve
131// CHECK-UNKNOWN: 20 e1 b0 04 <unknown>
132
133incw    x0, vl32
134// CHECK-INST: incw    x0, vl32
135// CHECK-ENCODING: [0x40,0xe1,0xb0,0x04]
136// CHECK-ERROR: instruction requires: sve
137// CHECK-UNKNOWN: 40 e1 b0 04 <unknown>
138
139incw    x0, vl64
140// CHECK-INST: incw    x0, vl64
141// CHECK-ENCODING: [0x60,0xe1,0xb0,0x04]
142// CHECK-ERROR: instruction requires: sve
143// CHECK-UNKNOWN: 60 e1 b0 04 <unknown>
144
145incw    x0, vl128
146// CHECK-INST: incw    x0, vl128
147// CHECK-ENCODING: [0x80,0xe1,0xb0,0x04]
148// CHECK-ERROR: instruction requires: sve
149// CHECK-UNKNOWN: 80 e1 b0 04 <unknown>
150
151incw    x0, vl256
152// CHECK-INST: incw    x0, vl256
153// CHECK-ENCODING: [0xa0,0xe1,0xb0,0x04]
154// CHECK-ERROR: instruction requires: sve
155// CHECK-UNKNOWN: a0 e1 b0 04 <unknown>
156
157incw    x0, #14
158// CHECK-INST: incw    x0, #14
159// CHECK-ENCODING: [0xc0,0xe1,0xb0,0x04]
160// CHECK-ERROR: instruction requires: sve
161// CHECK-UNKNOWN: c0 e1 b0 04 <unknown>
162
163incw    x0, #28
164// CHECK-INST: incw    x0, #28
165// CHECK-ENCODING: [0x80,0xe3,0xb0,0x04]
166// CHECK-ERROR: instruction requires: sve
167// CHECK-UNKNOWN: 80 e3 b0 04 <unknown>
168
169
170// --------------------------------------------------------------------------//
171// Test compatibility with MOVPRFX instruction.
172
173movprfx z0, z7
174// CHECK-INST: movprfx	z0, z7
175// CHECK-ENCODING: [0xe0,0xbc,0x20,0x04]
176// CHECK-ERROR: instruction requires: sve
177// CHECK-UNKNOWN: e0 bc 20 04 <unknown>
178
179incw    z0.s
180// CHECK-INST: incw	z0.s
181// CHECK-ENCODING: [0xe0,0xc3,0xb0,0x04]
182// CHECK-ERROR: instruction requires: sve
183// CHECK-UNKNOWN: e0 c3 b0 04 <unknown>
184
185movprfx z0, z7
186// CHECK-INST: movprfx	z0, z7
187// CHECK-ENCODING: [0xe0,0xbc,0x20,0x04]
188// CHECK-ERROR: instruction requires: sve
189// CHECK-UNKNOWN: e0 bc 20 04 <unknown>
190
191incw    z0.s, all, mul #16
192// CHECK-INST: incw	z0.s, all, mul #16
193// CHECK-ENCODING: [0xe0,0xc3,0xbf,0x04]
194// CHECK-ERROR: instruction requires: sve
195// CHECK-UNKNOWN: e0 c3 bf 04 <unknown>
196
197movprfx z0, z7
198// CHECK-INST: movprfx	z0, z7
199// CHECK-ENCODING: [0xe0,0xbc,0x20,0x04]
200// CHECK-ERROR: instruction requires: sve
201// CHECK-UNKNOWN: e0 bc 20 04 <unknown>
202
203incw    z0.s, all
204// CHECK-INST: incw	z0.s
205// CHECK-ENCODING: [0xe0,0xc3,0xb0,0x04]
206// CHECK-ERROR: instruction requires: sve
207// CHECK-UNKNOWN: e0 c3 b0 04 <unknown>
208