• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 all possible prefetch operation specifiers
12
13prfh    #0, p0, [x0]
14// CHECK-INST: prfh	pldl1keep, p0, [x0]
15// CHECK-ENCODING: [0x00,0x20,0xc0,0x85]
16// CHECK-ERROR: instruction requires: sve
17// CHECK-UNKNOWN: 00 20 c0 85 <unknown>
18
19prfh	pldl1keep, p0, [x0]
20// CHECK-INST: prfh	pldl1keep, p0, [x0]
21// CHECK-ENCODING: [0x00,0x20,0xc0,0x85]
22// CHECK-ERROR: instruction requires: sve
23// CHECK-UNKNOWN: 00 20 c0 85 <unknown>
24
25prfh    #1, p0, [x0]
26// CHECK-INST: prfh	pldl1strm, p0, [x0]
27// CHECK-ENCODING: [0x01,0x20,0xc0,0x85]
28// CHECK-ERROR: instruction requires: sve
29// CHECK-UNKNOWN: 01 20 c0 85 <unknown>
30
31prfh	pldl1strm, p0, [x0]
32// CHECK-INST: prfh	pldl1strm, p0, [x0]
33// CHECK-ENCODING: [0x01,0x20,0xc0,0x85]
34// CHECK-ERROR: instruction requires: sve
35// CHECK-UNKNOWN: 01 20 c0 85 <unknown>
36
37prfh    #2, p0, [x0]
38// CHECK-INST: prfh	pldl2keep, p0, [x0]
39// CHECK-ENCODING: [0x02,0x20,0xc0,0x85]
40// CHECK-ERROR: instruction requires: sve
41// CHECK-UNKNOWN: 02 20 c0 85 <unknown>
42
43prfh	pldl2keep, p0, [x0]
44// CHECK-INST: prfh	pldl2keep, p0, [x0]
45// CHECK-ENCODING: [0x02,0x20,0xc0,0x85]
46// CHECK-ERROR: instruction requires: sve
47// CHECK-UNKNOWN: 02 20 c0 85 <unknown>
48
49prfh    #3, p0, [x0]
50// CHECK-INST: prfh	pldl2strm, p0, [x0]
51// CHECK-ENCODING: [0x03,0x20,0xc0,0x85]
52// CHECK-ERROR: instruction requires: sve
53// CHECK-UNKNOWN: 03 20 c0 85 <unknown>
54
55prfh	pldl2strm, p0, [x0]
56// CHECK-INST: prfh	pldl2strm, p0, [x0]
57// CHECK-ENCODING: [0x03,0x20,0xc0,0x85]
58// CHECK-ERROR: instruction requires: sve
59// CHECK-UNKNOWN: 03 20 c0 85 <unknown>
60
61prfh    #4, p0, [x0]
62// CHECK-INST: prfh	pldl3keep, p0, [x0]
63// CHECK-ENCODING: [0x04,0x20,0xc0,0x85]
64// CHECK-ERROR: instruction requires: sve
65// CHECK-UNKNOWN: 04 20 c0 85 <unknown>
66
67prfh	pldl3keep, p0, [x0]
68// CHECK-INST: prfh	pldl3keep, p0, [x0]
69// CHECK-ENCODING: [0x04,0x20,0xc0,0x85]
70// CHECK-ERROR: instruction requires: sve
71// CHECK-UNKNOWN: 04 20 c0 85 <unknown>
72
73prfh    #5, p0, [x0]
74// CHECK-INST: prfh	pldl3strm, p0, [x0]
75// CHECK-ENCODING: [0x05,0x20,0xc0,0x85]
76// CHECK-ERROR: instruction requires: sve
77// CHECK-UNKNOWN: 05 20 c0 85 <unknown>
78
79prfh	pldl3strm, p0, [x0]
80// CHECK-INST: prfh	pldl3strm, p0, [x0]
81// CHECK-ENCODING: [0x05,0x20,0xc0,0x85]
82// CHECK-ERROR: instruction requires: sve
83// CHECK-UNKNOWN: 05 20 c0 85 <unknown>
84
85prfh    #6, p0, [x0]
86// CHECK-INST: prfh	#6, p0, [x0]
87// CHECK-ENCODING: [0x06,0x20,0xc0,0x85]
88// CHECK-ERROR: instruction requires: sve
89// CHECK-UNKNOWN: 06 20 c0 85 <unknown>
90
91prfh    #7, p0, [x0]
92// CHECK-INST: prfh	#7, p0, [x0]
93// CHECK-ENCODING: [0x07,0x20,0xc0,0x85]
94// CHECK-ERROR: instruction requires: sve
95// CHECK-UNKNOWN: 07 20 c0 85 <unknown>
96
97prfh    #8, p0, [x0]
98// CHECK-INST: prfh	pstl1keep, p0, [x0]
99// CHECK-ENCODING: [0x08,0x20,0xc0,0x85]
100// CHECK-ERROR: instruction requires: sve
101// CHECK-UNKNOWN: 08 20 c0 85 <unknown>
102
103prfh	pstl1keep, p0, [x0]
104// CHECK-INST: prfh	pstl1keep, p0, [x0]
105// CHECK-ENCODING: [0x08,0x20,0xc0,0x85]
106// CHECK-ERROR: instruction requires: sve
107// CHECK-UNKNOWN: 08 20 c0 85 <unknown>
108
109prfh    #9, p0, [x0]
110// CHECK-INST: prfh	pstl1strm, p0, [x0]
111// CHECK-ENCODING: [0x09,0x20,0xc0,0x85]
112// CHECK-ERROR: instruction requires: sve
113// CHECK-UNKNOWN: 09 20 c0 85 <unknown>
114
115prfh	pstl1strm, p0, [x0]
116// CHECK-INST: prfh	pstl1strm, p0, [x0]
117// CHECK-ENCODING: [0x09,0x20,0xc0,0x85]
118// CHECK-ERROR: instruction requires: sve
119// CHECK-UNKNOWN: 09 20 c0 85 <unknown>
120
121prfh    #10, p0, [x0]
122// CHECK-INST: prfh	pstl2keep, p0, [x0]
123// CHECK-ENCODING: [0x0a,0x20,0xc0,0x85]
124// CHECK-ERROR: instruction requires: sve
125// CHECK-UNKNOWN: 0a 20 c0 85 <unknown>
126
127prfh	pstl2keep, p0, [x0]
128// CHECK-INST: prfh	pstl2keep, p0, [x0]
129// CHECK-ENCODING: [0x0a,0x20,0xc0,0x85]
130// CHECK-ERROR: instruction requires: sve
131// CHECK-UNKNOWN: 0a 20 c0 85 <unknown>
132
133prfh    #11, p0, [x0]
134// CHECK-INST: prfh	pstl2strm, p0, [x0]
135// CHECK-ENCODING: [0x0b,0x20,0xc0,0x85]
136// CHECK-ERROR: instruction requires: sve
137// CHECK-UNKNOWN: 0b 20 c0 85 <unknown>
138
139prfh	pstl2strm, p0, [x0]
140// CHECK-INST: prfh	pstl2strm, p0, [x0]
141// CHECK-ENCODING: [0x0b,0x20,0xc0,0x85]
142// CHECK-ERROR: instruction requires: sve
143// CHECK-UNKNOWN: 0b 20 c0 85 <unknown>
144
145prfh    #12, p0, [x0]
146// CHECK-INST: prfh	pstl3keep, p0, [x0]
147// CHECK-ENCODING: [0x0c,0x20,0xc0,0x85]
148// CHECK-ERROR: instruction requires: sve
149// CHECK-UNKNOWN: 0c 20 c0 85 <unknown>
150
151prfh	pstl3keep, p0, [x0]
152// CHECK-INST: prfh	pstl3keep, p0, [x0]
153// CHECK-ENCODING: [0x0c,0x20,0xc0,0x85]
154// CHECK-ERROR: instruction requires: sve
155// CHECK-UNKNOWN: 0c 20 c0 85 <unknown>
156
157prfh    #13, p0, [x0]
158// CHECK-INST: prfh	pstl3strm, p0, [x0]
159// CHECK-ENCODING: [0x0d,0x20,0xc0,0x85]
160// CHECK-ERROR: instruction requires: sve
161// CHECK-UNKNOWN: 0d 20 c0 85 <unknown>
162
163prfh	pstl3strm, p0, [x0]
164// CHECK-INST: prfh	pstl3strm, p0, [x0]
165// CHECK-ENCODING: [0x0d,0x20,0xc0,0x85]
166// CHECK-ERROR: instruction requires: sve
167// CHECK-UNKNOWN: 0d 20 c0 85 <unknown>
168
169prfh    #14, p0, [x0]
170// CHECK-INST: prfh	#14, p0, [x0]
171// CHECK-ENCODING: [0x0e,0x20,0xc0,0x85]
172// CHECK-ERROR: instruction requires: sve
173// CHECK-UNKNOWN: 0e 20 c0 85 <unknown>
174
175prfh    #15, p0, [x0]
176// CHECK-INST: prfh	#15, p0, [x0]
177// CHECK-ENCODING: [0x0f,0x20,0xc0,0x85]
178// CHECK-ERROR: instruction requires: sve
179// CHECK-UNKNOWN: 0f 20 c0 85 <unknown>
180
181// --------------------------------------------------------------------------//
182// Test addressing modes
183
184prfh    pldl1strm, p0, [x0, #-32, mul vl]
185// CHECK-INST: prfh     pldl1strm, p0, [x0, #-32, mul vl]
186// CHECK-ENCODING: [0x01,0x20,0xe0,0x85]
187// CHECK-ERROR: instruction requires: sve
188// CHECK-UNKNOWN: 01 20 e0 85
189
190prfh    pldl1strm, p0, [x0, #31, mul vl]
191// CHECK-INST: prfh     pldl1strm, p0, [x0, #31, mul vl]
192// CHECK-ENCODING: [0x01,0x20,0xdf,0x85]
193// CHECK-ERROR: instruction requires: sve
194// CHECK-UNKNOWN: 01 20 df 85
195
196prfh    pldl3strm, p5, [x10, z21.s, uxtw #1]
197// CHECK-INST: prfh    pldl3strm, p5, [x10, z21.s, uxtw #1]
198// CHECK-ENCODING: [0x45,0x35,0x35,0x84]
199// CHECK-ERROR: instruction requires: sve
200// CHECK-UNKNOWN: 45 35 35 84 <unknown>
201
202prfh    pldl3strm, p5, [x10, z21.s, sxtw #1]
203// CHECK-INST: prfh    pldl3strm, p5, [x10, z21.s, sxtw #1]
204// CHECK-ENCODING: [0x45,0x35,0x75,0x84]
205// CHECK-ERROR: instruction requires: sve
206// CHECK-UNKNOWN: 45 35 75 84 <unknown>
207
208prfh    pldl3strm, p5, [x10, z21.d, uxtw #1]
209// CHECK-INST: prfh    pldl3strm, p5, [x10, z21.d, uxtw #1]
210// CHECK-ENCODING: [0x45,0x35,0x35,0xc4]
211// CHECK-ERROR: instruction requires: sve
212// CHECK-UNKNOWN: 45 35 35 c4 <unknown>
213
214prfh    pldl3strm, p5, [x10, z21.d, sxtw #1]
215// CHECK-INST: prfh    pldl3strm, p5, [x10, z21.d, sxtw #1]
216// CHECK-ENCODING: [0x45,0x35,0x75,0xc4]
217// CHECK-ERROR: instruction requires: sve
218// CHECK-UNKNOWN: 45 35 75 c4 <unknown>
219
220prfh    pldl1keep, p0, [x0, z0.d, lsl #1]
221// CHECK-INST: prfh    pldl1keep, p0, [x0, z0.d, lsl #1]
222// CHECK-ENCODING: [0x00,0xa0,0x60,0xc4]
223// CHECK-ERROR: instruction requires: sve
224// CHECK-UNKNOWN: 00 a0 60 c4 <unknown>
225
226prfh    #15, p7, [z31.s, #0]
227// CHECK-INST: prfh    #15, p7, [z31.s]
228// CHECK-ENCODING: [0xef,0xff,0x80,0x84]
229// CHECK-ERROR: instruction requires: sve
230// CHECK-UNKNOWN: ef ff 80 84 <unknown>
231
232prfh    #15, p7, [z31.s, #62]
233// CHECK-INST: prfh    #15, p7, [z31.s, #62]
234// CHECK-ENCODING: [0xef,0xff,0x9f,0x84]
235// CHECK-ERROR: instruction requires: sve
236// CHECK-UNKNOWN: ef ff 9f 84 <unknown>
237
238prfh    #15, p7, [z31.d, #0]
239// CHECK-INST: prfh    #15, p7, [z31.d]
240// CHECK-ENCODING: [0xef,0xff,0x80,0xc4]
241// CHECK-ERROR: instruction requires: sve
242// CHECK-UNKNOWN: ef ff 80 c4 <unknown>
243
244prfh    #15, p7, [z31.d, #62]
245// CHECK-INST: prfh    #15, p7, [z31.d, #62]
246// CHECK-ENCODING: [0xef,0xff,0x9f,0xc4]
247// CHECK-ERROR: instruction requires: sve
248// CHECK-UNKNOWN: ef ff 9f c4 <unknown>
249