1 // RUN
: llvm-mc
-triple
=aarch64
-show-encoding
-mattr
=+sve
< %s \
2 // RUN
: | FileCheck
%s
--check-prefixes
=CHECK-ENCODING
,CHECK-INST
3 // RUN
: llvm-mc
-triple
=aarch64
-show-encoding
-mattr
=+sme
< %s \
4 // RUN
: | FileCheck
%s
--check-prefixes
=CHECK-ENCODING
,CHECK-INST
5 // RUN
: not llvm-mc
-triple
=aarch64
-show-encoding
< %s
2>&1 \
6 // RUN
: | FileCheck
%s
--check-prefix
=CHECK-ERROR
7 // RUN
: llvm-mc
-triple
=aarch64
-filetype
=obj
-mattr
=+sve
< %s \
8 // RUN
: | llvm-objdump
--no-print-imm-hex
-d
--mattr
=+sve
- | FileCheck
%s
--check-prefix
=CHECK-INST
9 // RUN
: llvm-mc
-triple
=aarch64
-filetype
=obj
-mattr
=+sve
< %s \
10 // RUN
: | llvm-objdump
--no-print-imm-hex
-d
--mattr
=-sve
- | FileCheck
%s
--check-prefix
=CHECK-UNKNOWN
12 // --------------------------------------------------------------------------//
13 // Test all possible prefetch operation specifiers
16 // CHECK-INST
: prfb pldl1keep
, p0
, [x0
]
17 // CHECK-ENCODING
: [0x00,0x00,0xc0,0x85]
18 // CHECK-ERROR
: instruction requires
: sve
or sme
19 // CHECK-UNKNOWN
: 85c00000
<unknown
>
21 prfb pldl1keep
, p0
, [x0
]
22 // CHECK-INST
: prfb pldl1keep
, p0
, [x0
]
23 // CHECK-ENCODING
: [0x00,0x00,0xc0,0x85]
24 // CHECK-ERROR
: instruction requires
: sve
or sme
25 // CHECK-UNKNOWN
: 85c00000
<unknown
>
28 // CHECK-INST
: prfb pldl1strm
, p0
, [x0
]
29 // CHECK-ENCODING
: [0x01,0x00,0xc0,0x85]
30 // CHECK-ERROR
: instruction requires
: sve
or sme
31 // CHECK-UNKNOWN
: 85c00001
<unknown
>
33 prfb pldl1strm
, p0
, [x0
]
34 // CHECK-INST
: prfb pldl1strm
, p0
, [x0
]
35 // CHECK-ENCODING
: [0x01,0x00,0xc0,0x85]
36 // CHECK-ERROR
: instruction requires
: sve
or sme
37 // CHECK-UNKNOWN
: 85c00001
<unknown
>
40 // CHECK-INST
: prfb pldl2keep
, p0
, [x0
]
41 // CHECK-ENCODING
: [0x02,0x00,0xc0,0x85]
42 // CHECK-ERROR
: instruction requires
: sve
or sme
43 // CHECK-UNKNOWN
: 85c00002
<unknown
>
45 prfb pldl2keep
, p0
, [x0
]
46 // CHECK-INST
: prfb pldl2keep
, p0
, [x0
]
47 // CHECK-ENCODING
: [0x02,0x00,0xc0,0x85]
48 // CHECK-ERROR
: instruction requires
: sve
or sme
49 // CHECK-UNKNOWN
: 85c00002
<unknown
>
52 // CHECK-INST
: prfb pldl2strm
, p0
, [x0
]
53 // CHECK-ENCODING
: [0x03,0x00,0xc0,0x85]
54 // CHECK-ERROR
: instruction requires
: sve
or sme
55 // CHECK-UNKNOWN
: 85c00003
<unknown
>
57 prfb pldl2strm
, p0
, [x0
]
58 // CHECK-INST
: prfb pldl2strm
, p0
, [x0
]
59 // CHECK-ENCODING
: [0x03,0x00,0xc0,0x85]
60 // CHECK-ERROR
: instruction requires
: sve
or sme
61 // CHECK-UNKNOWN
: 85c00003
<unknown
>
64 // CHECK-INST
: prfb pldl3keep
, p0
, [x0
]
65 // CHECK-ENCODING
: [0x04,0x00,0xc0,0x85]
66 // CHECK-ERROR
: instruction requires
: sve
or sme
67 // CHECK-UNKNOWN
: 85c00004
<unknown
>
69 prfb pldl3keep
, p0
, [x0
]
70 // CHECK-INST
: prfb pldl3keep
, p0
, [x0
]
71 // CHECK-ENCODING
: [0x04,0x00,0xc0,0x85]
72 // CHECK-ERROR
: instruction requires
: sve
or sme
73 // CHECK-UNKNOWN
: 85c00004
<unknown
>
76 // CHECK-INST
: prfb pldl3strm
, p0
, [x0
]
77 // CHECK-ENCODING
: [0x05,0x00,0xc0,0x85]
78 // CHECK-ERROR
: instruction requires
: sve
or sme
79 // CHECK-UNKNOWN
: 85c00005
<unknown
>
81 prfb pldl3strm
, p0
, [x0
]
82 // CHECK-INST
: prfb pldl3strm
, p0
, [x0
]
83 // CHECK-ENCODING
: [0x05,0x00,0xc0,0x85]
84 // CHECK-ERROR
: instruction requires
: sve
or sme
85 // CHECK-UNKNOWN
: 85c00005
<unknown
>
88 // CHECK-INST
: prfb
#6, p0, [x0]
89 // CHECK-ENCODING
: [0x06,0x00,0xc0,0x85]
90 // CHECK-ERROR
: instruction requires
: sve
or sme
91 // CHECK-UNKNOWN
: 85c00006
<unknown
>
94 // CHECK-INST
: prfb
#7, p0, [x0]
95 // CHECK-ENCODING
: [0x07,0x00,0xc0,0x85]
96 // CHECK-ERROR
: instruction requires
: sve
or sme
97 // CHECK-UNKNOWN
: 85c00007
<unknown
>
100 // CHECK-INST
: prfb pstl1keep
, p0
, [x0
]
101 // CHECK-ENCODING
: [0x08,0x00,0xc0,0x85]
102 // CHECK-ERROR
: instruction requires
: sve
or sme
103 // CHECK-UNKNOWN
: 85c00008
<unknown
>
105 prfb pstl1keep
, p0
, [x0
]
106 // CHECK-INST
: prfb pstl1keep
, p0
, [x0
]
107 // CHECK-ENCODING
: [0x08,0x00,0xc0,0x85]
108 // CHECK-ERROR
: instruction requires
: sve
or sme
109 // CHECK-UNKNOWN
: 85c00008
<unknown
>
112 // CHECK-INST
: prfb pstl1strm
, p0
, [x0
]
113 // CHECK-ENCODING
: [0x09,0x00,0xc0,0x85]
114 // CHECK-ERROR
: instruction requires
: sve
or sme
115 // CHECK-UNKNOWN
: 85c00009
<unknown
>
117 prfb pstl1strm
, p0
, [x0
]
118 // CHECK-INST
: prfb pstl1strm
, p0
, [x0
]
119 // CHECK-ENCODING
: [0x09,0x00,0xc0,0x85]
120 // CHECK-ERROR
: instruction requires
: sve
or sme
121 // CHECK-UNKNOWN
: 85c00009
<unknown
>
124 // CHECK-INST
: prfb pstl2keep
, p0
, [x0
]
125 // CHECK-ENCODING
: [0x0a,0x00,0xc0,0x85]
126 // CHECK-ERROR
: instruction requires
: sve
or sme
127 // CHECK-UNKNOWN
: 85c0000a
<unknown
>
129 prfb pstl2keep
, p0
, [x0
]
130 // CHECK-INST
: prfb pstl2keep
, p0
, [x0
]
131 // CHECK-ENCODING
: [0x0a,0x00,0xc0,0x85]
132 // CHECK-ERROR
: instruction requires
: sve
or sme
133 // CHECK-UNKNOWN
: 85c0000a
<unknown
>
136 // CHECK-INST
: prfb pstl2strm
, p0
, [x0
]
137 // CHECK-ENCODING
: [0x0b,0x00,0xc0,0x85]
138 // CHECK-ERROR
: instruction requires
: sve
or sme
139 // CHECK-UNKNOWN
: 85c0000b
<unknown
>
141 prfb pstl2strm
, p0
, [x0
]
142 // CHECK-INST
: prfb pstl2strm
, p0
, [x0
]
143 // CHECK-ENCODING
: [0x0b,0x00,0xc0,0x85]
144 // CHECK-ERROR
: instruction requires
: sve
or sme
145 // CHECK-UNKNOWN
: 85c0000b
<unknown
>
148 // CHECK-INST
: prfb pstl3keep
, p0
, [x0
]
149 // CHECK-ENCODING
: [0x0c,0x00,0xc0,0x85]
150 // CHECK-ERROR
: instruction requires
: sve
or sme
151 // CHECK-UNKNOWN
: 85c0000c
<unknown
>
153 prfb pstl3keep
, p0
, [x0
]
154 // CHECK-INST
: prfb pstl3keep
, p0
, [x0
]
155 // CHECK-ENCODING
: [0x0c,0x00,0xc0,0x85]
156 // CHECK-ERROR
: instruction requires
: sve
or sme
157 // CHECK-UNKNOWN
: 85c0000c
<unknown
>
160 // CHECK-INST
: prfb pstl3strm
, p0
, [x0
]
161 // CHECK-ENCODING
: [0x0d,0x00,0xc0,0x85]
162 // CHECK-ERROR
: instruction requires
: sve
or sme
163 // CHECK-UNKNOWN
: 85c0000d
<unknown
>
165 prfb pstl3strm
, p0
, [x0
]
166 // CHECK-INST
: prfb pstl3strm
, p0
, [x0
]
167 // CHECK-ENCODING
: [0x0d,0x00,0xc0,0x85]
168 // CHECK-ERROR
: instruction requires
: sve
or sme
169 // CHECK-UNKNOWN
: 85c0000d
<unknown
>
172 // CHECK-INST
: prfb
#14, p0, [x0]
173 // CHECK-ENCODING
: [0x0e,0x00,0xc0,0x85]
174 // CHECK-ERROR
: instruction requires
: sve
or sme
175 // CHECK-UNKNOWN
: 85c0000e
<unknown
>
178 // CHECK-INST
: prfb
#15, p0, [x0]
179 // CHECK-ENCODING
: [0x0f,0x00,0xc0,0x85]
180 // CHECK-ERROR
: instruction requires
: sve
or sme
181 // CHECK-UNKNOWN
: 85c0000f
<unknown
>
183 // --------------------------------------------------------------------------//
184 // Test addressing modes
186 prfb
#1, p0, [x0, #-32, mul vl]
187 // CHECK-INST
: prfb pldl1strm
, p0
, [x0
, #-32, mul vl]
188 // CHECK-ENCODING
: [0x01,0x00,0xe0,0x85]
189 // CHECK-ERROR
: instruction requires
: sve
or sme
190 // CHECK-UNKNOWN
: 85e00001
<unknown
>
192 prfb
#1, p0, [x0, #31, mul vl]
193 // CHECK-INST
: prfb pldl1strm
, p0
, [x0
, #31, mul vl]
194 // CHECK-ENCODING
: [0x01,0x00,0xdf,0x85]
195 // CHECK-ERROR
: instruction requires
: sve
or sme
196 // CHECK-UNKNOWN
: 85df0001
<unknown
>