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
10 // --------------------------------------------------------------------------//
11 // Test all possible prefetch operation specifiers
14 // CHECK-INST
: prfb pldl1keep
, p0
, [x0
]
15 // CHECK-ENCODING
: [0x00,0x00,0xc0,0x85]
16 // CHECK-ERROR
: instruction requires
: sve
17 // CHECK-UNKNOWN
: 00 00 c0
85 <unknown
>
19 prfb pldl1keep
, p0
, [x0
]
20 // CHECK-INST
: prfb pldl1keep
, p0
, [x0
]
21 // CHECK-ENCODING
: [0x00,0x00,0xc0,0x85]
22 // CHECK-ERROR
: instruction requires
: sve
23 // CHECK-UNKNOWN
: 00 00 c0
85 <unknown
>
26 // CHECK-INST
: prfb pldl1strm
, p0
, [x0
]
27 // CHECK-ENCODING
: [0x01,0x00,0xc0,0x85]
28 // CHECK-ERROR
: instruction requires
: sve
29 // CHECK-UNKNOWN
: 01 00 c0
85 <unknown
>
31 prfb pldl1strm
, p0
, [x0
]
32 // CHECK-INST
: prfb pldl1strm
, p0
, [x0
]
33 // CHECK-ENCODING
: [0x01,0x00,0xc0,0x85]
34 // CHECK-ERROR
: instruction requires
: sve
35 // CHECK-UNKNOWN
: 01 00 c0
85 <unknown
>
38 // CHECK-INST
: prfb pldl2keep
, p0
, [x0
]
39 // CHECK-ENCODING
: [0x02,0x00,0xc0,0x85]
40 // CHECK-ERROR
: instruction requires
: sve
41 // CHECK-UNKNOWN
: 02 00 c0
85 <unknown
>
43 prfb pldl2keep
, p0
, [x0
]
44 // CHECK-INST
: prfb pldl2keep
, p0
, [x0
]
45 // CHECK-ENCODING
: [0x02,0x00,0xc0,0x85]
46 // CHECK-ERROR
: instruction requires
: sve
47 // CHECK-UNKNOWN
: 02 00 c0
85 <unknown
>
50 // CHECK-INST
: prfb pldl2strm
, p0
, [x0
]
51 // CHECK-ENCODING
: [0x03,0x00,0xc0,0x85]
52 // CHECK-ERROR
: instruction requires
: sve
53 // CHECK-UNKNOWN
: 03 00 c0
85 <unknown
>
55 prfb pldl2strm
, p0
, [x0
]
56 // CHECK-INST
: prfb pldl2strm
, p0
, [x0
]
57 // CHECK-ENCODING
: [0x03,0x00,0xc0,0x85]
58 // CHECK-ERROR
: instruction requires
: sve
59 // CHECK-UNKNOWN
: 03 00 c0
85 <unknown
>
62 // CHECK-INST
: prfb pldl3keep
, p0
, [x0
]
63 // CHECK-ENCODING
: [0x04,0x00,0xc0,0x85]
64 // CHECK-ERROR
: instruction requires
: sve
65 // CHECK-UNKNOWN
: 04 00 c0
85 <unknown
>
67 prfb pldl3keep
, p0
, [x0
]
68 // CHECK-INST
: prfb pldl3keep
, p0
, [x0
]
69 // CHECK-ENCODING
: [0x04,0x00,0xc0,0x85]
70 // CHECK-ERROR
: instruction requires
: sve
71 // CHECK-UNKNOWN
: 04 00 c0
85 <unknown
>
74 // CHECK-INST
: prfb pldl3strm
, p0
, [x0
]
75 // CHECK-ENCODING
: [0x05,0x00,0xc0,0x85]
76 // CHECK-ERROR
: instruction requires
: sve
77 // CHECK-UNKNOWN
: 05 00 c0
85 <unknown
>
79 prfb pldl3strm
, p0
, [x0
]
80 // CHECK-INST
: prfb pldl3strm
, p0
, [x0
]
81 // CHECK-ENCODING
: [0x05,0x00,0xc0,0x85]
82 // CHECK-ERROR
: instruction requires
: sve
83 // CHECK-UNKNOWN
: 05 00 c0
85 <unknown
>
86 // CHECK-INST
: prfb
#6, p0, [x0]
87 // CHECK-ENCODING
: [0x06,0x00,0xc0,0x85]
88 // CHECK-ERROR
: instruction requires
: sve
89 // CHECK-UNKNOWN
: 06 00 c0
85 <unknown
>
92 // CHECK-INST
: prfb
#7, p0, [x0]
93 // CHECK-ENCODING
: [0x07,0x00,0xc0,0x85]
94 // CHECK-ERROR
: instruction requires
: sve
95 // CHECK-UNKNOWN
: 07 00 c0
85 <unknown
>
98 // CHECK-INST
: prfb pstl1keep
, p0
, [x0
]
99 // CHECK-ENCODING
: [0x08,0x00,0xc0,0x85]
100 // CHECK-ERROR
: instruction requires
: sve
101 // CHECK-UNKNOWN
: 08 00 c0
85 <unknown
>
103 prfb pstl1keep
, p0
, [x0
]
104 // CHECK-INST
: prfb pstl1keep
, p0
, [x0
]
105 // CHECK-ENCODING
: [0x08,0x00,0xc0,0x85]
106 // CHECK-ERROR
: instruction requires
: sve
107 // CHECK-UNKNOWN
: 08 00 c0
85 <unknown
>
110 // CHECK-INST
: prfb pstl1strm
, p0
, [x0
]
111 // CHECK-ENCODING
: [0x09,0x00,0xc0,0x85]
112 // CHECK-ERROR
: instruction requires
: sve
113 // CHECK-UNKNOWN
: 09 00 c0
85 <unknown
>
115 prfb pstl1strm
, p0
, [x0
]
116 // CHECK-INST
: prfb pstl1strm
, p0
, [x0
]
117 // CHECK-ENCODING
: [0x09,0x00,0xc0,0x85]
118 // CHECK-ERROR
: instruction requires
: sve
119 // CHECK-UNKNOWN
: 09 00 c0
85 <unknown
>
122 // CHECK-INST
: prfb pstl2keep
, p0
, [x0
]
123 // CHECK-ENCODING
: [0x0a,0x00,0xc0,0x85]
124 // CHECK-ERROR
: instruction requires
: sve
125 // CHECK-UNKNOWN
: 0a 00 c0
85 <unknown
>
127 prfb pstl2keep
, p0
, [x0
]
128 // CHECK-INST
: prfb pstl2keep
, p0
, [x0
]
129 // CHECK-ENCODING
: [0x0a,0x00,0xc0,0x85]
130 // CHECK-ERROR
: instruction requires
: sve
131 // CHECK-UNKNOWN
: 0a 00 c0
85 <unknown
>
134 // CHECK-INST
: prfb pstl2strm
, p0
, [x0
]
135 // CHECK-ENCODING
: [0x0b,0x00,0xc0,0x85]
136 // CHECK-ERROR
: instruction requires
: sve
137 // CHECK-UNKNOWN
: 0b 00 c0
85 <unknown
>
139 prfb pstl2strm
, p0
, [x0
]
140 // CHECK-INST
: prfb pstl2strm
, p0
, [x0
]
141 // CHECK-ENCODING
: [0x0b,0x00,0xc0,0x85]
142 // CHECK-ERROR
: instruction requires
: sve
143 // CHECK-UNKNOWN
: 0b 00 c0
85 <unknown
>
146 // CHECK-INST
: prfb pstl3keep
, p0
, [x0
]
147 // CHECK-ENCODING
: [0x0c,0x00,0xc0,0x85]
148 // CHECK-ERROR
: instruction requires
: sve
149 // CHECK-UNKNOWN
: 0c
00 c0
85 <unknown
>
151 prfb pstl3keep
, p0
, [x0
]
152 // CHECK-INST
: prfb pstl3keep
, p0
, [x0
]
153 // CHECK-ENCODING
: [0x0c,0x00,0xc0,0x85]
154 // CHECK-ERROR
: instruction requires
: sve
155 // CHECK-UNKNOWN
: 0c
00 c0
85 <unknown
>
158 // CHECK-INST
: prfb pstl3strm
, p0
, [x0
]
159 // CHECK-ENCODING
: [0x0d,0x00,0xc0,0x85]
160 // CHECK-ERROR
: instruction requires
: sve
161 // CHECK-UNKNOWN
: 0d
00 c0
85 <unknown
>
163 prfb pstl3strm
, p0
, [x0
]
164 // CHECK-INST
: prfb pstl3strm
, p0
, [x0
]
165 // CHECK-ENCODING
: [0x0d,0x00,0xc0,0x85]
166 // CHECK-ERROR
: instruction requires
: sve
167 // CHECK-UNKNOWN
: 0d
00 c0
85 <unknown
>
170 // CHECK-INST
: prfb
#14, p0, [x0]
171 // CHECK-ENCODING
: [0x0e,0x00,0xc0,0x85]
172 // CHECK-ERROR
: instruction requires
: sve
173 // CHECK-UNKNOWN
: 0e
00 c0
85 <unknown
>
176 // CHECK-INST
: prfb
#15, p0, [x0]
177 // CHECK-ENCODING
: [0x0f,0x00,0xc0,0x85]
178 // CHECK-ERROR
: instruction requires
: sve
179 // CHECK-UNKNOWN
: 0f
00 c0
85 <unknown
>
181 // --------------------------------------------------------------------------//
182 // Test addressing modes
184 prfb
#1, p0, [x0, #-32, mul vl]
185 // CHECK-INST
: prfb pldl1strm
, p0
, [x0
, #-32, mul vl]
186 // CHECK-ENCODING
: [0x01,0x00,0xe0,0x85]
187 // CHECK-ERROR
: instruction requires
: sve
188 // CHECK-UNKNOWN
: 01 00 e0
85 <unknown
>
190 prfb
#1, p0, [x0, #31, mul vl]
191 // CHECK-INST
: prfb pldl1strm
, p0
, [x0
, #31, mul vl]
192 // CHECK-ENCODING
: [0x01,0x00,0xdf,0x85]
193 // CHECK-ERROR
: instruction requires
: sve
194 // CHECK-UNKNOWN
: 01 00 df
85 <unknown
>
196 prfb pldl1keep
, p0
, [x0
, z0.s
, uxtw
]
197 // CHECK-INST
: prfb pldl1keep
, p0
, [x0
, z0.s
, uxtw
]
198 // CHECK-ENCODING
: [0x00,0x00,0x20,0x84]
199 // CHECK-ERROR
: instruction requires
: sve
200 // CHECK-UNKNOWN
: 00 00 20 84 <unknown
>
202 prfb pldl3strm
, p5
, [x10
, z21.s
, uxtw
]
203 // CHECK-INST
: prfb pldl3strm
, p5
, [x10
, z21.s
, uxtw
]
204 // CHECK-ENCODING
: [0x45,0x15,0x35,0x84]
205 // CHECK-ERROR
: instruction requires
: sve
206 // CHECK-UNKNOWN
: 45 15 35 84 <unknown
>
208 prfb pldl1keep
, p0
, [x0
, z0.d
, uxtw
]
209 // CHECK-INST
: prfb pldl1keep
, p0
, [x0
, z0.d
, uxtw
]
210 // CHECK-ENCODING
: [0x00,0x00,0x20,0xc4]
211 // CHECK-ERROR
: instruction requires
: sve
212 // CHECK-UNKNOWN
: 00 00 20 c4
<unknown
>
214 prfb pldl3strm
, p5
, [x10
, z21.d
, sxtw
]
215 // CHECK-INST
: prfb pldl3strm
, p5
, [x10
, z21.d
, sxtw
]
216 // CHECK-ENCODING
: [0x45,0x15,0x75,0xc4]
217 // CHECK-ERROR
: instruction requires
: sve
218 // CHECK-UNKNOWN
: 45 15 75 c4
<unknown
>
220 prfb pldl1keep
, p0
, [x0
, z0.d
]
221 // CHECK-INST
: prfb pldl1keep
, p0
, [x0
, z0.d
]
222 // CHECK-ENCODING
: [0x00,0x80,0x60,0xc4]
223 // CHECK-ERROR
: instruction requires
: sve
224 // CHECK-UNKNOWN
: 00 80 60 c4
<unknown
>
226 prfb
#7, p3, [z13.s, #0]
227 // CHECK-INST
: prfb
#7, p3, [z13.s]
228 // CHECK-ENCODING
: [0xa7,0xed,0x00,0x84]
229 // CHECK-ERROR
: instruction requires
: sve
230 // CHECK-UNKNOWN
: a7 ed
00 84 <unknown
>
232 prfb
#7, p3, [z13.s, #31]
233 // CHECK-INST
: prfb
#7, p3, [z13.s, #31]
234 // CHECK-ENCODING
: [0xa7,0xed,0x1f,0x84]
235 // CHECK-ERROR
: instruction requires
: sve
236 // CHECK-UNKNOWN
: a7 ed
1f
84 <unknown
>
238 prfb pldl3strm
, p5
, [z10.d
, #0]
239 // CHECK-INST
: prfb pldl3strm
, p5
, [z10.d
]
240 // CHECK-ENCODING
: [0x45,0xf5,0x00,0xc4]
241 // CHECK-ERROR
: instruction requires
: sve
242 // CHECK-UNKNOWN
: 45 f5 00 c4
<unknown
>
244 prfb pldl3strm
, p5
, [z10.d
, #31]
245 // CHECK-INST
: prfb pldl3strm
, p5
, [z10.d
, #31]
246 // CHECK-ENCODING
: [0x45,0xf5,0x1f,0xc4]
247 // CHECK-ERROR
: instruction requires
: sve
248 // CHECK-UNKNOWN
: 45 f5 1f c4
<unknown
>