/src/build/lib/Target/BPF/BPFGenAsmWriter.inc
Line | Count | Source (jump to first uncovered line) |
1 | | /*===- TableGen'erated file -------------------------------------*- C++ -*-===*\ |
2 | | |* *| |
3 | | |* Assembly Writer Source Fragment *| |
4 | | |* *| |
5 | | |* Automatically generated file, do not edit! *| |
6 | | |* From: BPF.td *| |
7 | | |* *| |
8 | | \*===----------------------------------------------------------------------===*/ |
9 | | |
10 | | /// getMnemonic - This method is automatically generated by tablegen |
11 | | /// from the instruction set description. |
12 | 0 | std::pair<const char *, uint64_t> BPFInstPrinter::getMnemonic(const MCInst *MI) { |
13 | |
|
14 | 0 | #ifdef __GNUC__ |
15 | 0 | #pragma GCC diagnostic push |
16 | 0 | #pragma GCC diagnostic ignored "-Woverlength-strings" |
17 | 0 | #endif |
18 | 0 | static const char AsmStrs[] = { |
19 | 0 | /* 0 */ "lea\t\0" |
20 | 0 | /* 5 */ "ld_pseudo\t\0" |
21 | 0 | /* 16 */ "nop\t\0" |
22 | 0 | /* 21 */ "#memcpy dst: \0" |
23 | 0 | /* 35 */ "#ADJCALLSTACKDOWN \0" |
24 | 0 | /* 54 */ "# Select PSEUDO \0" |
25 | 0 | /* 71 */ "#ADJCALLSTACKUP \0" |
26 | 0 | /* 88 */ "if \0" |
27 | 0 | /* 92 */ "call \0" |
28 | 0 | /* 98 */ "gotol \0" |
29 | 0 | /* 105 */ "goto \0" |
30 | 0 | /* 111 */ "callx \0" |
31 | 0 | /* 118 */ "lock *(u32 *)(\0" |
32 | 0 | /* 133 */ "lock *(u64 *)(\0" |
33 | 0 | /* 148 */ "*(u16 *)(\0" |
34 | 0 | /* 158 */ "*(u8 *)(\0" |
35 | 0 | /* 167 */ "w0 = cmpxchg32_32(\0" |
36 | 0 | /* 186 */ "r0 = cmpxchg_64(\0" |
37 | 0 | /* 203 */ "core_st(\0" |
38 | 0 | /* 212 */ "# XRay Function Patchable RET.\0" |
39 | 0 | /* 243 */ "# XRay Typed Event Log.\0" |
40 | 0 | /* 267 */ "# XRay Custom Event Log.\0" |
41 | 0 | /* 292 */ "# XRay Function Enter.\0" |
42 | 0 | /* 315 */ "# XRay Tail Call Exit.\0" |
43 | 0 | /* 338 */ "# XRay Function Exit.\0" |
44 | 0 | /* 360 */ "LIFETIME_END\0" |
45 | 0 | /* 373 */ "PSEUDO_PROBE\0" |
46 | 0 | /* 386 */ "BUNDLE\0" |
47 | 0 | /* 393 */ "DBG_VALUE\0" |
48 | 0 | /* 403 */ "DBG_INSTR_REF\0" |
49 | 0 | /* 417 */ "DBG_PHI\0" |
50 | 0 | /* 425 */ "DBG_LABEL\0" |
51 | 0 | /* 435 */ "LIFETIME_START\0" |
52 | 0 | /* 450 */ "DBG_VALUE_LIST\0" |
53 | 0 | /* 465 */ "r0 = *(u32 *)skb[\0" |
54 | 0 | /* 483 */ "r0 = *(u16 *)skb[\0" |
55 | 0 | /* 501 */ "r0 = *(u8 *)skb[\0" |
56 | 0 | /* 518 */ "# FEntry call\0" |
57 | 0 | /* 532 */ "exit\0" |
58 | 0 | }; |
59 | 0 | #ifdef __GNUC__ |
60 | 0 | #pragma GCC diagnostic pop |
61 | 0 | #endif |
62 | |
|
63 | 0 | static const uint32_t OpInfo0[] = { |
64 | 0 | 0U, // PHI |
65 | 0 | 0U, // INLINEASM |
66 | 0 | 0U, // INLINEASM_BR |
67 | 0 | 0U, // CFI_INSTRUCTION |
68 | 0 | 0U, // EH_LABEL |
69 | 0 | 0U, // GC_LABEL |
70 | 0 | 0U, // ANNOTATION_LABEL |
71 | 0 | 0U, // KILL |
72 | 0 | 0U, // EXTRACT_SUBREG |
73 | 0 | 0U, // INSERT_SUBREG |
74 | 0 | 0U, // IMPLICIT_DEF |
75 | 0 | 0U, // SUBREG_TO_REG |
76 | 0 | 0U, // COPY_TO_REGCLASS |
77 | 0 | 394U, // DBG_VALUE |
78 | 0 | 451U, // DBG_VALUE_LIST |
79 | 0 | 404U, // DBG_INSTR_REF |
80 | 0 | 418U, // DBG_PHI |
81 | 0 | 426U, // DBG_LABEL |
82 | 0 | 0U, // REG_SEQUENCE |
83 | 0 | 0U, // COPY |
84 | 0 | 387U, // BUNDLE |
85 | 0 | 436U, // LIFETIME_START |
86 | 0 | 361U, // LIFETIME_END |
87 | 0 | 374U, // PSEUDO_PROBE |
88 | 0 | 0U, // ARITH_FENCE |
89 | 0 | 0U, // STACKMAP |
90 | 0 | 519U, // FENTRY_CALL |
91 | 0 | 0U, // PATCHPOINT |
92 | 0 | 0U, // LOAD_STACK_GUARD |
93 | 0 | 0U, // PREALLOCATED_SETUP |
94 | 0 | 0U, // PREALLOCATED_ARG |
95 | 0 | 0U, // STATEPOINT |
96 | 0 | 0U, // LOCAL_ESCAPE |
97 | 0 | 0U, // FAULTING_OP |
98 | 0 | 0U, // PATCHABLE_OP |
99 | 0 | 293U, // PATCHABLE_FUNCTION_ENTER |
100 | 0 | 213U, // PATCHABLE_RET |
101 | 0 | 339U, // PATCHABLE_FUNCTION_EXIT |
102 | 0 | 316U, // PATCHABLE_TAIL_CALL |
103 | 0 | 268U, // PATCHABLE_EVENT_CALL |
104 | 0 | 244U, // PATCHABLE_TYPED_EVENT_CALL |
105 | 0 | 0U, // ICALL_BRANCH_FUNNEL |
106 | 0 | 0U, // MEMBARRIER |
107 | 0 | 0U, // JUMP_TABLE_DEBUG_INFO |
108 | 0 | 0U, // G_ASSERT_SEXT |
109 | 0 | 0U, // G_ASSERT_ZEXT |
110 | 0 | 0U, // G_ASSERT_ALIGN |
111 | 0 | 0U, // G_ADD |
112 | 0 | 0U, // G_SUB |
113 | 0 | 0U, // G_MUL |
114 | 0 | 0U, // G_SDIV |
115 | 0 | 0U, // G_UDIV |
116 | 0 | 0U, // G_SREM |
117 | 0 | 0U, // G_UREM |
118 | 0 | 0U, // G_SDIVREM |
119 | 0 | 0U, // G_UDIVREM |
120 | 0 | 0U, // G_AND |
121 | 0 | 0U, // G_OR |
122 | 0 | 0U, // G_XOR |
123 | 0 | 0U, // G_IMPLICIT_DEF |
124 | 0 | 0U, // G_PHI |
125 | 0 | 0U, // G_FRAME_INDEX |
126 | 0 | 0U, // G_GLOBAL_VALUE |
127 | 0 | 0U, // G_CONSTANT_POOL |
128 | 0 | 0U, // G_EXTRACT |
129 | 0 | 0U, // G_UNMERGE_VALUES |
130 | 0 | 0U, // G_INSERT |
131 | 0 | 0U, // G_MERGE_VALUES |
132 | 0 | 0U, // G_BUILD_VECTOR |
133 | 0 | 0U, // G_BUILD_VECTOR_TRUNC |
134 | 0 | 0U, // G_CONCAT_VECTORS |
135 | 0 | 0U, // G_PTRTOINT |
136 | 0 | 0U, // G_INTTOPTR |
137 | 0 | 0U, // G_BITCAST |
138 | 0 | 0U, // G_FREEZE |
139 | 0 | 0U, // G_CONSTANT_FOLD_BARRIER |
140 | 0 | 0U, // G_INTRINSIC_FPTRUNC_ROUND |
141 | 0 | 0U, // G_INTRINSIC_TRUNC |
142 | 0 | 0U, // G_INTRINSIC_ROUND |
143 | 0 | 0U, // G_INTRINSIC_LRINT |
144 | 0 | 0U, // G_INTRINSIC_ROUNDEVEN |
145 | 0 | 0U, // G_READCYCLECOUNTER |
146 | 0 | 0U, // G_LOAD |
147 | 0 | 0U, // G_SEXTLOAD |
148 | 0 | 0U, // G_ZEXTLOAD |
149 | 0 | 0U, // G_INDEXED_LOAD |
150 | 0 | 0U, // G_INDEXED_SEXTLOAD |
151 | 0 | 0U, // G_INDEXED_ZEXTLOAD |
152 | 0 | 0U, // G_STORE |
153 | 0 | 0U, // G_INDEXED_STORE |
154 | 0 | 0U, // G_ATOMIC_CMPXCHG_WITH_SUCCESS |
155 | 0 | 0U, // G_ATOMIC_CMPXCHG |
156 | 0 | 0U, // G_ATOMICRMW_XCHG |
157 | 0 | 0U, // G_ATOMICRMW_ADD |
158 | 0 | 0U, // G_ATOMICRMW_SUB |
159 | 0 | 0U, // G_ATOMICRMW_AND |
160 | 0 | 0U, // G_ATOMICRMW_NAND |
161 | 0 | 0U, // G_ATOMICRMW_OR |
162 | 0 | 0U, // G_ATOMICRMW_XOR |
163 | 0 | 0U, // G_ATOMICRMW_MAX |
164 | 0 | 0U, // G_ATOMICRMW_MIN |
165 | 0 | 0U, // G_ATOMICRMW_UMAX |
166 | 0 | 0U, // G_ATOMICRMW_UMIN |
167 | 0 | 0U, // G_ATOMICRMW_FADD |
168 | 0 | 0U, // G_ATOMICRMW_FSUB |
169 | 0 | 0U, // G_ATOMICRMW_FMAX |
170 | 0 | 0U, // G_ATOMICRMW_FMIN |
171 | 0 | 0U, // G_ATOMICRMW_UINC_WRAP |
172 | 0 | 0U, // G_ATOMICRMW_UDEC_WRAP |
173 | 0 | 0U, // G_FENCE |
174 | 0 | 0U, // G_PREFETCH |
175 | 0 | 0U, // G_BRCOND |
176 | 0 | 0U, // G_BRINDIRECT |
177 | 0 | 0U, // G_INVOKE_REGION_START |
178 | 0 | 0U, // G_INTRINSIC |
179 | 0 | 0U, // G_INTRINSIC_W_SIDE_EFFECTS |
180 | 0 | 0U, // G_INTRINSIC_CONVERGENT |
181 | 0 | 0U, // G_INTRINSIC_CONVERGENT_W_SIDE_EFFECTS |
182 | 0 | 0U, // G_ANYEXT |
183 | 0 | 0U, // G_TRUNC |
184 | 0 | 0U, // G_CONSTANT |
185 | 0 | 0U, // G_FCONSTANT |
186 | 0 | 0U, // G_VASTART |
187 | 0 | 0U, // G_VAARG |
188 | 0 | 0U, // G_SEXT |
189 | 0 | 0U, // G_SEXT_INREG |
190 | 0 | 0U, // G_ZEXT |
191 | 0 | 0U, // G_SHL |
192 | 0 | 0U, // G_LSHR |
193 | 0 | 0U, // G_ASHR |
194 | 0 | 0U, // G_FSHL |
195 | 0 | 0U, // G_FSHR |
196 | 0 | 0U, // G_ROTR |
197 | 0 | 0U, // G_ROTL |
198 | 0 | 0U, // G_ICMP |
199 | 0 | 0U, // G_FCMP |
200 | 0 | 0U, // G_SELECT |
201 | 0 | 0U, // G_UADDO |
202 | 0 | 0U, // G_UADDE |
203 | 0 | 0U, // G_USUBO |
204 | 0 | 0U, // G_USUBE |
205 | 0 | 0U, // G_SADDO |
206 | 0 | 0U, // G_SADDE |
207 | 0 | 0U, // G_SSUBO |
208 | 0 | 0U, // G_SSUBE |
209 | 0 | 0U, // G_UMULO |
210 | 0 | 0U, // G_SMULO |
211 | 0 | 0U, // G_UMULH |
212 | 0 | 0U, // G_SMULH |
213 | 0 | 0U, // G_UADDSAT |
214 | 0 | 0U, // G_SADDSAT |
215 | 0 | 0U, // G_USUBSAT |
216 | 0 | 0U, // G_SSUBSAT |
217 | 0 | 0U, // G_USHLSAT |
218 | 0 | 0U, // G_SSHLSAT |
219 | 0 | 0U, // G_SMULFIX |
220 | 0 | 0U, // G_UMULFIX |
221 | 0 | 0U, // G_SMULFIXSAT |
222 | 0 | 0U, // G_UMULFIXSAT |
223 | 0 | 0U, // G_SDIVFIX |
224 | 0 | 0U, // G_UDIVFIX |
225 | 0 | 0U, // G_SDIVFIXSAT |
226 | 0 | 0U, // G_UDIVFIXSAT |
227 | 0 | 0U, // G_FADD |
228 | 0 | 0U, // G_FSUB |
229 | 0 | 0U, // G_FMUL |
230 | 0 | 0U, // G_FMA |
231 | 0 | 0U, // G_FMAD |
232 | 0 | 0U, // G_FDIV |
233 | 0 | 0U, // G_FREM |
234 | 0 | 0U, // G_FPOW |
235 | 0 | 0U, // G_FPOWI |
236 | 0 | 0U, // G_FEXP |
237 | 0 | 0U, // G_FEXP2 |
238 | 0 | 0U, // G_FEXP10 |
239 | 0 | 0U, // G_FLOG |
240 | 0 | 0U, // G_FLOG2 |
241 | 0 | 0U, // G_FLOG10 |
242 | 0 | 0U, // G_FLDEXP |
243 | 0 | 0U, // G_FFREXP |
244 | 0 | 0U, // G_FNEG |
245 | 0 | 0U, // G_FPEXT |
246 | 0 | 0U, // G_FPTRUNC |
247 | 0 | 0U, // G_FPTOSI |
248 | 0 | 0U, // G_FPTOUI |
249 | 0 | 0U, // G_SITOFP |
250 | 0 | 0U, // G_UITOFP |
251 | 0 | 0U, // G_FABS |
252 | 0 | 0U, // G_FCOPYSIGN |
253 | 0 | 0U, // G_IS_FPCLASS |
254 | 0 | 0U, // G_FCANONICALIZE |
255 | 0 | 0U, // G_FMINNUM |
256 | 0 | 0U, // G_FMAXNUM |
257 | 0 | 0U, // G_FMINNUM_IEEE |
258 | 0 | 0U, // G_FMAXNUM_IEEE |
259 | 0 | 0U, // G_FMINIMUM |
260 | 0 | 0U, // G_FMAXIMUM |
261 | 0 | 0U, // G_GET_FPENV |
262 | 0 | 0U, // G_SET_FPENV |
263 | 0 | 0U, // G_RESET_FPENV |
264 | 0 | 0U, // G_GET_FPMODE |
265 | 0 | 0U, // G_SET_FPMODE |
266 | 0 | 0U, // G_RESET_FPMODE |
267 | 0 | 0U, // G_PTR_ADD |
268 | 0 | 0U, // G_PTRMASK |
269 | 0 | 0U, // G_SMIN |
270 | 0 | 0U, // G_SMAX |
271 | 0 | 0U, // G_UMIN |
272 | 0 | 0U, // G_UMAX |
273 | 0 | 0U, // G_ABS |
274 | 0 | 0U, // G_LROUND |
275 | 0 | 0U, // G_LLROUND |
276 | 0 | 0U, // G_BR |
277 | 0 | 0U, // G_BRJT |
278 | 0 | 0U, // G_INSERT_VECTOR_ELT |
279 | 0 | 0U, // G_EXTRACT_VECTOR_ELT |
280 | 0 | 0U, // G_SHUFFLE_VECTOR |
281 | 0 | 0U, // G_CTTZ |
282 | 0 | 0U, // G_CTTZ_ZERO_UNDEF |
283 | 0 | 0U, // G_CTLZ |
284 | 0 | 0U, // G_CTLZ_ZERO_UNDEF |
285 | 0 | 0U, // G_CTPOP |
286 | 0 | 0U, // G_BSWAP |
287 | 0 | 0U, // G_BITREVERSE |
288 | 0 | 0U, // G_FCEIL |
289 | 0 | 0U, // G_FCOS |
290 | 0 | 0U, // G_FSIN |
291 | 0 | 0U, // G_FSQRT |
292 | 0 | 0U, // G_FFLOOR |
293 | 0 | 0U, // G_FRINT |
294 | 0 | 0U, // G_FNEARBYINT |
295 | 0 | 0U, // G_ADDRSPACE_CAST |
296 | 0 | 0U, // G_BLOCK_ADDR |
297 | 0 | 0U, // G_JUMP_TABLE |
298 | 0 | 0U, // G_DYN_STACKALLOC |
299 | 0 | 0U, // G_STACKSAVE |
300 | 0 | 0U, // G_STACKRESTORE |
301 | 0 | 0U, // G_STRICT_FADD |
302 | 0 | 0U, // G_STRICT_FSUB |
303 | 0 | 0U, // G_STRICT_FMUL |
304 | 0 | 0U, // G_STRICT_FDIV |
305 | 0 | 0U, // G_STRICT_FREM |
306 | 0 | 0U, // G_STRICT_FMA |
307 | 0 | 0U, // G_STRICT_FSQRT |
308 | 0 | 0U, // G_STRICT_FLDEXP |
309 | 0 | 0U, // G_READ_REGISTER |
310 | 0 | 0U, // G_WRITE_REGISTER |
311 | 0 | 0U, // G_MEMCPY |
312 | 0 | 0U, // G_MEMCPY_INLINE |
313 | 0 | 0U, // G_MEMMOVE |
314 | 0 | 0U, // G_MEMSET |
315 | 0 | 0U, // G_BZERO |
316 | 0 | 0U, // G_VECREDUCE_SEQ_FADD |
317 | 0 | 0U, // G_VECREDUCE_SEQ_FMUL |
318 | 0 | 0U, // G_VECREDUCE_FADD |
319 | 0 | 0U, // G_VECREDUCE_FMUL |
320 | 0 | 0U, // G_VECREDUCE_FMAX |
321 | 0 | 0U, // G_VECREDUCE_FMIN |
322 | 0 | 0U, // G_VECREDUCE_FMAXIMUM |
323 | 0 | 0U, // G_VECREDUCE_FMINIMUM |
324 | 0 | 0U, // G_VECREDUCE_ADD |
325 | 0 | 0U, // G_VECREDUCE_MUL |
326 | 0 | 0U, // G_VECREDUCE_AND |
327 | 0 | 0U, // G_VECREDUCE_OR |
328 | 0 | 0U, // G_VECREDUCE_XOR |
329 | 0 | 0U, // G_VECREDUCE_SMAX |
330 | 0 | 0U, // G_VECREDUCE_SMIN |
331 | 0 | 0U, // G_VECREDUCE_UMAX |
332 | 0 | 0U, // G_VECREDUCE_UMIN |
333 | 0 | 0U, // G_SBFX |
334 | 0 | 0U, // G_UBFX |
335 | 0 | 1060U, // ADJCALLSTACKDOWN |
336 | 0 | 1096U, // ADJCALLSTACKUP |
337 | 0 | 9217U, // FI_ri |
338 | 0 | 17430U, // MEMCPY |
339 | 0 | 1074231U, // Select |
340 | 0 | 1074231U, // Select_32 |
341 | 0 | 1074231U, // Select_32_64 |
342 | 0 | 1074231U, // Select_64_32 |
343 | 0 | 1074231U, // Select_Ri |
344 | 0 | 1074231U, // Select_Ri_32 |
345 | 0 | 1074231U, // Select_Ri_32_64 |
346 | 0 | 1074231U, // Select_Ri_64_32 |
347 | 0 | 33797U, // ADD_ri |
348 | 0 | 33797U, // ADD_ri_32 |
349 | 0 | 33797U, // ADD_rr |
350 | 0 | 33797U, // ADD_rr_32 |
351 | 0 | 41989U, // AND_ri |
352 | 0 | 41989U, // AND_ri_32 |
353 | 0 | 41989U, // AND_rr |
354 | 0 | 41989U, // AND_rr_32 |
355 | 0 | 50181U, // BE16 |
356 | 0 | 58373U, // BE32 |
357 | 0 | 66565U, // BE64 |
358 | 0 | 74757U, // BSWAP16 |
359 | 0 | 82949U, // BSWAP32 |
360 | 0 | 91141U, // BSWAP64 |
361 | 0 | 100539U, // CMPXCHGD |
362 | 0 | 108712U, // CMPXCHGW32 |
363 | 0 | 115717U, // CORE_LD32 |
364 | 0 | 123909U, // CORE_LD64 |
365 | 0 | 132101U, // CORE_SHIFT |
366 | 0 | 6300876U, // CORE_ST |
367 | 0 | 140293U, // DIV_ri |
368 | 0 | 140293U, // DIV_ri_32 |
369 | 0 | 140293U, // DIV_rr |
370 | 0 | 140293U, // DIV_rr_32 |
371 | 0 | 148573U, // JAL |
372 | 0 | 148592U, // JALX |
373 | 0 | 156761U, // JEQ_ri |
374 | 0 | 156761U, // JEQ_ri_32 |
375 | 0 | 156761U, // JEQ_rr |
376 | 0 | 156761U, // JEQ_rr_32 |
377 | 0 | 3178U, // JMP |
378 | 0 | 3171U, // JMPL |
379 | 0 | 164953U, // JNE_ri |
380 | 0 | 164953U, // JNE_ri_32 |
381 | 0 | 164953U, // JNE_rr |
382 | 0 | 164953U, // JNE_rr_32 |
383 | 0 | 173145U, // JSET_ri |
384 | 0 | 173145U, // JSET_ri_32 |
385 | 0 | 173145U, // JSET_rr |
386 | 0 | 173145U, // JSET_rr_32 |
387 | 0 | 181337U, // JSGE_ri |
388 | 0 | 181337U, // JSGE_ri_32 |
389 | 0 | 181337U, // JSGE_rr |
390 | 0 | 181337U, // JSGE_rr_32 |
391 | 0 | 189529U, // JSGT_ri |
392 | 0 | 189529U, // JSGT_ri_32 |
393 | 0 | 189529U, // JSGT_rr |
394 | 0 | 189529U, // JSGT_rr_32 |
395 | 0 | 197721U, // JSLE_ri |
396 | 0 | 197721U, // JSLE_ri_32 |
397 | 0 | 197721U, // JSLE_rr |
398 | 0 | 197721U, // JSLE_rr_32 |
399 | 0 | 205913U, // JSLT_ri |
400 | 0 | 205913U, // JSLT_ri_32 |
401 | 0 | 205913U, // JSLT_rr |
402 | 0 | 205913U, // JSLT_rr_32 |
403 | 0 | 214105U, // JUGE_ri |
404 | 0 | 214105U, // JUGE_ri_32 |
405 | 0 | 214105U, // JUGE_rr |
406 | 0 | 214105U, // JUGE_rr_32 |
407 | 0 | 222297U, // JUGT_ri |
408 | 0 | 222297U, // JUGT_ri_32 |
409 | 0 | 222297U, // JUGT_rr |
410 | 0 | 222297U, // JUGT_rr_32 |
411 | 0 | 230489U, // JULE_ri |
412 | 0 | 230489U, // JULE_ri_32 |
413 | 0 | 230489U, // JULE_rr |
414 | 0 | 230489U, // JULE_rr_32 |
415 | 0 | 238681U, // JULT_ri |
416 | 0 | 238681U, // JULT_ri_32 |
417 | 0 | 238681U, // JULT_rr |
418 | 0 | 238681U, // JULT_rr_32 |
419 | 0 | 246789U, // LDB |
420 | 0 | 246789U, // LDB32 |
421 | 0 | 254981U, // LDBSX |
422 | 0 | 263173U, // LDD |
423 | 0 | 271365U, // LDH |
424 | 0 | 271365U, // LDH32 |
425 | 0 | 279557U, // LDHSX |
426 | 0 | 287749U, // LDW |
427 | 0 | 287749U, // LDW32 |
428 | 0 | 295941U, // LDWSX |
429 | 0 | 4598U, // LD_ABS_B |
430 | 0 | 4580U, // LD_ABS_H |
431 | 0 | 4562U, // LD_ABS_W |
432 | 0 | 4598U, // LD_IND_B |
433 | 0 | 4580U, // LD_IND_H |
434 | 0 | 4562U, // LD_IND_W |
435 | 0 | 10511365U, // LD_imm64 |
436 | 0 | 22029318U, // LD_pseudo |
437 | 0 | 304133U, // LE16 |
438 | 0 | 312325U, // LE32 |
439 | 0 | 320517U, // LE64 |
440 | 0 | 328709U, // MOD_ri |
441 | 0 | 328709U, // MOD_ri_32 |
442 | 0 | 328709U, // MOD_rr |
443 | 0 | 328709U, // MOD_rr_32 |
444 | 0 | 336901U, // MOVSX_rr_16 |
445 | 0 | 345093U, // MOVSX_rr_32 |
446 | 0 | 336901U, // MOVSX_rr_32_16 |
447 | 0 | 353285U, // MOVSX_rr_32_8 |
448 | 0 | 353285U, // MOVSX_rr_8 |
449 | 0 | 13657093U, // MOV_32_64 |
450 | 0 | 13657093U, // MOV_ri |
451 | 0 | 13657093U, // MOV_ri_32 |
452 | 0 | 13657093U, // MOV_rr |
453 | 0 | 13657093U, // MOV_rr_32 |
454 | 0 | 361477U, // MUL_ri |
455 | 0 | 361477U, // MUL_ri_32 |
456 | 0 | 361477U, // MUL_rr |
457 | 0 | 361477U, // MUL_rr_32 |
458 | 0 | 369669U, // NEG_32 |
459 | 0 | 369669U, // NEG_64 |
460 | 0 | 148497U, // NOP |
461 | 0 | 377861U, // OR_ri |
462 | 0 | 377861U, // OR_ri_32 |
463 | 0 | 377861U, // OR_rr |
464 | 0 | 377861U, // OR_rr_32 |
465 | 0 | 533U, // RET |
466 | 0 | 386053U, // SDIV_ri |
467 | 0 | 386053U, // SDIV_ri_32 |
468 | 0 | 386053U, // SDIV_rr |
469 | 0 | 386053U, // SDIV_rr_32 |
470 | 0 | 394245U, // SLL_ri |
471 | 0 | 394245U, // SLL_ri_32 |
472 | 0 | 394245U, // SLL_rr |
473 | 0 | 394245U, // SLL_rr_32 |
474 | 0 | 402437U, // SMOD_ri |
475 | 0 | 402437U, // SMOD_ri_32 |
476 | 0 | 402437U, // SMOD_rr |
477 | 0 | 402437U, // SMOD_rr_32 |
478 | 0 | 410629U, // SRA_ri |
479 | 0 | 410629U, // SRA_ri_32 |
480 | 0 | 410629U, // SRA_rr |
481 | 0 | 410629U, // SRA_rr_32 |
482 | 0 | 418821U, // SRL_ri |
483 | 0 | 418821U, // SRL_ri_32 |
484 | 0 | 418821U, // SRL_rr |
485 | 0 | 418821U, // SRL_rr_32 |
486 | 0 | 431263U, // STB |
487 | 0 | 431263U, // STB32 |
488 | 0 | 431263U, // STB_imm |
489 | 0 | 431243U, // STD |
490 | 0 | 431243U, // STD_imm |
491 | 0 | 431253U, // STH |
492 | 0 | 431253U, // STH32 |
493 | 0 | 431253U, // STH_imm |
494 | 0 | 431228U, // STW |
495 | 0 | 431228U, // STW32 |
496 | 0 | 431228U, // STW_imm |
497 | 0 | 435205U, // SUB_ri |
498 | 0 | 435205U, // SUB_ri_32 |
499 | 0 | 435205U, // SUB_rr |
500 | 0 | 435205U, // SUB_rr_32 |
501 | 0 | 447622U, // XADDD |
502 | 0 | 447607U, // XADDW |
503 | 0 | 447607U, // XADDW32 |
504 | 0 | 455814U, // XANDD |
505 | 0 | 455799U, // XANDW32 |
506 | 0 | 459781U, // XCHGD |
507 | 0 | 467973U, // XCHGW32 |
508 | 0 | 476165U, // XFADDD |
509 | 0 | 484357U, // XFADDW32 |
510 | 0 | 492549U, // XFANDD |
511 | 0 | 500741U, // XFANDW32 |
512 | 0 | 508933U, // XFORD |
513 | 0 | 517125U, // XFORW32 |
514 | 0 | 525317U, // XFXORD |
515 | 0 | 533509U, // XFXORW32 |
516 | 0 | 545926U, // XORD |
517 | 0 | 545911U, // XORW32 |
518 | 0 | 549893U, // XOR_ri |
519 | 0 | 549893U, // XOR_ri_32 |
520 | 0 | 549893U, // XOR_rr |
521 | 0 | 549893U, // XOR_rr_32 |
522 | 0 | 562310U, // XXORD |
523 | 0 | 562295U, // XXORW32 |
524 | 0 | }; |
525 | | |
526 | | // Emit the opcode for the instruction. |
527 | 0 | uint32_t Bits = 0; |
528 | 0 | Bits |= OpInfo0[MI->getOpcode()] << 0; |
529 | 0 | if (Bits == 0) |
530 | 0 | return {nullptr, Bits}; |
531 | 0 | return {AsmStrs+(Bits & 1023)-1, Bits}; |
532 | |
|
533 | 0 | } |
534 | | /// printInstruction - This method is automatically generated by tablegen |
535 | | /// from the instruction set description. |
536 | | LLVM_NO_PROFILE_INSTRUMENT_FUNCTION |
537 | | void BPFInstPrinter::printInstruction(const MCInst *MI, uint64_t Address, raw_ostream &O) { |
538 | | O << "\t"; |
539 | | |
540 | | auto MnemonicInfo = getMnemonic(MI); |
541 | | |
542 | | O << MnemonicInfo.first; |
543 | | |
544 | | uint32_t Bits = MnemonicInfo.second; |
545 | | assert(Bits != 0 && "Cannot print this instruction."); |
546 | | |
547 | | // Fragment 0 encoded into 3 bits for 6 unique commands. |
548 | | switch ((Bits >> 10) & 7) { |
549 | | default: llvm_unreachable("Invalid command number."); |
550 | | case 0: |
551 | | // DBG_VALUE, DBG_VALUE_LIST, DBG_INSTR_REF, DBG_PHI, DBG_LABEL, BUNDLE, ... |
552 | | return; |
553 | | break; |
554 | | case 1: |
555 | | // ADJCALLSTACKDOWN, ADJCALLSTACKUP, FI_ri, MEMCPY, Select, Select_32, Se... |
556 | | printOperand(MI, 0, O); |
557 | | break; |
558 | | case 2: |
559 | | // CMPXCHGD, CMPXCHGW32 |
560 | | printMemOperand(MI, 0, O); |
561 | | break; |
562 | | case 3: |
563 | | // JMP, JMPL |
564 | | printBrTargetOperand(MI, 0, O); |
565 | | return; |
566 | | break; |
567 | | case 4: |
568 | | // LD_ABS_B, LD_ABS_H, LD_ABS_W, LD_IND_B, LD_IND_H, LD_IND_W |
569 | | printOperand(MI, 1, O); |
570 | | O << ']'; |
571 | | return; |
572 | | break; |
573 | | case 5: |
574 | | // STB, STB32, STB_imm, STD, STD_imm, STH, STH32, STH_imm, STW, STW32, ST... |
575 | | printMemOperand(MI, 1, O); |
576 | | break; |
577 | | } |
578 | | |
579 | | |
580 | | // Fragment 1 encoded into 7 bits for 69 unique commands. |
581 | | switch ((Bits >> 13) & 127) { |
582 | | default: llvm_unreachable("Invalid command number."); |
583 | | case 0: |
584 | | // ADJCALLSTACKDOWN, ADJCALLSTACKUP |
585 | | O << ' '; |
586 | | printOperand(MI, 1, O); |
587 | | return; |
588 | | break; |
589 | | case 1: |
590 | | // FI_ri, CORE_ST, LD_pseudo |
591 | | O << ", "; |
592 | | break; |
593 | | case 2: |
594 | | // MEMCPY |
595 | | O << ", src: "; |
596 | | printOperand(MI, 1, O); |
597 | | O << ", len: "; |
598 | | printOperand(MI, 2, O); |
599 | | O << ", align: "; |
600 | | printOperand(MI, 3, O); |
601 | | return; |
602 | | break; |
603 | | case 3: |
604 | | // Select, Select_32, Select_32_64, Select_64_32, Select_Ri, Select_Ri_32... |
605 | | O << " = "; |
606 | | break; |
607 | | case 4: |
608 | | // ADD_ri, ADD_ri_32, ADD_rr, ADD_rr_32 |
609 | | O << " += "; |
610 | | printOperand(MI, 2, O); |
611 | | return; |
612 | | break; |
613 | | case 5: |
614 | | // AND_ri, AND_ri_32, AND_rr, AND_rr_32 |
615 | | O << " &= "; |
616 | | printOperand(MI, 2, O); |
617 | | return; |
618 | | break; |
619 | | case 6: |
620 | | // BE16 |
621 | | O << " = be16 "; |
622 | | printOperand(MI, 1, O); |
623 | | return; |
624 | | break; |
625 | | case 7: |
626 | | // BE32 |
627 | | O << " = be32 "; |
628 | | printOperand(MI, 1, O); |
629 | | return; |
630 | | break; |
631 | | case 8: |
632 | | // BE64 |
633 | | O << " = be64 "; |
634 | | printOperand(MI, 1, O); |
635 | | return; |
636 | | break; |
637 | | case 9: |
638 | | // BSWAP16 |
639 | | O << " = bswap16 "; |
640 | | printOperand(MI, 1, O); |
641 | | return; |
642 | | break; |
643 | | case 10: |
644 | | // BSWAP32 |
645 | | O << " = bswap32 "; |
646 | | printOperand(MI, 1, O); |
647 | | return; |
648 | | break; |
649 | | case 11: |
650 | | // BSWAP64 |
651 | | O << " = bswap64 "; |
652 | | printOperand(MI, 1, O); |
653 | | return; |
654 | | break; |
655 | | case 12: |
656 | | // CMPXCHGD |
657 | | O << ", r0, "; |
658 | | printOperand(MI, 2, O); |
659 | | O << ')'; |
660 | | return; |
661 | | break; |
662 | | case 13: |
663 | | // CMPXCHGW32 |
664 | | O << ", w0, "; |
665 | | printOperand(MI, 2, O); |
666 | | O << ')'; |
667 | | return; |
668 | | break; |
669 | | case 14: |
670 | | // CORE_LD32 |
671 | | O << " = core_ld32("; |
672 | | printImm64Operand(MI, 1, O); |
673 | | O << ", "; |
674 | | printOperand(MI, 2, O); |
675 | | O << ", "; |
676 | | printImm64Operand(MI, 3, O); |
677 | | O << ')'; |
678 | | return; |
679 | | break; |
680 | | case 15: |
681 | | // CORE_LD64 |
682 | | O << " = core_ld64("; |
683 | | printImm64Operand(MI, 1, O); |
684 | | O << ", "; |
685 | | printOperand(MI, 2, O); |
686 | | O << ", "; |
687 | | printImm64Operand(MI, 3, O); |
688 | | O << ')'; |
689 | | return; |
690 | | break; |
691 | | case 16: |
692 | | // CORE_SHIFT |
693 | | O << " = core_shift("; |
694 | | printImm64Operand(MI, 1, O); |
695 | | O << ", "; |
696 | | printOperand(MI, 2, O); |
697 | | O << ", "; |
698 | | printImm64Operand(MI, 3, O); |
699 | | O << ')'; |
700 | | return; |
701 | | break; |
702 | | case 17: |
703 | | // DIV_ri, DIV_ri_32, DIV_rr, DIV_rr_32 |
704 | | O << " /= "; |
705 | | printOperand(MI, 2, O); |
706 | | return; |
707 | | break; |
708 | | case 18: |
709 | | // JAL, JALX, NOP |
710 | | return; |
711 | | break; |
712 | | case 19: |
713 | | // JEQ_ri, JEQ_ri_32, JEQ_rr, JEQ_rr_32 |
714 | | O << " == "; |
715 | | printOperand(MI, 1, O); |
716 | | O << " goto "; |
717 | | printBrTargetOperand(MI, 2, O); |
718 | | return; |
719 | | break; |
720 | | case 20: |
721 | | // JNE_ri, JNE_ri_32, JNE_rr, JNE_rr_32 |
722 | | O << " != "; |
723 | | printOperand(MI, 1, O); |
724 | | O << " goto "; |
725 | | printBrTargetOperand(MI, 2, O); |
726 | | return; |
727 | | break; |
728 | | case 21: |
729 | | // JSET_ri, JSET_ri_32, JSET_rr, JSET_rr_32 |
730 | | O << " & "; |
731 | | printOperand(MI, 1, O); |
732 | | O << " goto "; |
733 | | printBrTargetOperand(MI, 2, O); |
734 | | return; |
735 | | break; |
736 | | case 22: |
737 | | // JSGE_ri, JSGE_ri_32, JSGE_rr, JSGE_rr_32 |
738 | | O << " s>= "; |
739 | | printOperand(MI, 1, O); |
740 | | O << " goto "; |
741 | | printBrTargetOperand(MI, 2, O); |
742 | | return; |
743 | | break; |
744 | | case 23: |
745 | | // JSGT_ri, JSGT_ri_32, JSGT_rr, JSGT_rr_32 |
746 | | O << " s> "; |
747 | | printOperand(MI, 1, O); |
748 | | O << " goto "; |
749 | | printBrTargetOperand(MI, 2, O); |
750 | | return; |
751 | | break; |
752 | | case 24: |
753 | | // JSLE_ri, JSLE_ri_32, JSLE_rr, JSLE_rr_32 |
754 | | O << " s<= "; |
755 | | printOperand(MI, 1, O); |
756 | | O << " goto "; |
757 | | printBrTargetOperand(MI, 2, O); |
758 | | return; |
759 | | break; |
760 | | case 25: |
761 | | // JSLT_ri, JSLT_ri_32, JSLT_rr, JSLT_rr_32 |
762 | | O << " s< "; |
763 | | printOperand(MI, 1, O); |
764 | | O << " goto "; |
765 | | printBrTargetOperand(MI, 2, O); |
766 | | return; |
767 | | break; |
768 | | case 26: |
769 | | // JUGE_ri, JUGE_ri_32, JUGE_rr, JUGE_rr_32 |
770 | | O << " >= "; |
771 | | printOperand(MI, 1, O); |
772 | | O << " goto "; |
773 | | printBrTargetOperand(MI, 2, O); |
774 | | return; |
775 | | break; |
776 | | case 27: |
777 | | // JUGT_ri, JUGT_ri_32, JUGT_rr, JUGT_rr_32 |
778 | | O << " > "; |
779 | | printOperand(MI, 1, O); |
780 | | O << " goto "; |
781 | | printBrTargetOperand(MI, 2, O); |
782 | | return; |
783 | | break; |
784 | | case 28: |
785 | | // JULE_ri, JULE_ri_32, JULE_rr, JULE_rr_32 |
786 | | O << " <= "; |
787 | | printOperand(MI, 1, O); |
788 | | O << " goto "; |
789 | | printBrTargetOperand(MI, 2, O); |
790 | | return; |
791 | | break; |
792 | | case 29: |
793 | | // JULT_ri, JULT_ri_32, JULT_rr, JULT_rr_32 |
794 | | O << " < "; |
795 | | printOperand(MI, 1, O); |
796 | | O << " goto "; |
797 | | printBrTargetOperand(MI, 2, O); |
798 | | return; |
799 | | break; |
800 | | case 30: |
801 | | // LDB, LDB32 |
802 | | O << " = *(u8 *)("; |
803 | | printMemOperand(MI, 1, O); |
804 | | O << ')'; |
805 | | return; |
806 | | break; |
807 | | case 31: |
808 | | // LDBSX |
809 | | O << " = *(s8 *)("; |
810 | | printMemOperand(MI, 1, O); |
811 | | O << ')'; |
812 | | return; |
813 | | break; |
814 | | case 32: |
815 | | // LDD |
816 | | O << " = *(u64 *)("; |
817 | | printMemOperand(MI, 1, O); |
818 | | O << ')'; |
819 | | return; |
820 | | break; |
821 | | case 33: |
822 | | // LDH, LDH32 |
823 | | O << " = *(u16 *)("; |
824 | | printMemOperand(MI, 1, O); |
825 | | O << ')'; |
826 | | return; |
827 | | break; |
828 | | case 34: |
829 | | // LDHSX |
830 | | O << " = *(s16 *)("; |
831 | | printMemOperand(MI, 1, O); |
832 | | O << ')'; |
833 | | return; |
834 | | break; |
835 | | case 35: |
836 | | // LDW, LDW32 |
837 | | O << " = *(u32 *)("; |
838 | | printMemOperand(MI, 1, O); |
839 | | O << ')'; |
840 | | return; |
841 | | break; |
842 | | case 36: |
843 | | // LDWSX |
844 | | O << " = *(s32 *)("; |
845 | | printMemOperand(MI, 1, O); |
846 | | O << ')'; |
847 | | return; |
848 | | break; |
849 | | case 37: |
850 | | // LE16 |
851 | | O << " = le16 "; |
852 | | printOperand(MI, 1, O); |
853 | | return; |
854 | | break; |
855 | | case 38: |
856 | | // LE32 |
857 | | O << " = le32 "; |
858 | | printOperand(MI, 1, O); |
859 | | return; |
860 | | break; |
861 | | case 39: |
862 | | // LE64 |
863 | | O << " = le64 "; |
864 | | printOperand(MI, 1, O); |
865 | | return; |
866 | | break; |
867 | | case 40: |
868 | | // MOD_ri, MOD_ri_32, MOD_rr, MOD_rr_32 |
869 | | O << " %= "; |
870 | | printOperand(MI, 2, O); |
871 | | return; |
872 | | break; |
873 | | case 41: |
874 | | // MOVSX_rr_16, MOVSX_rr_32_16 |
875 | | O << " = (s16)"; |
876 | | printOperand(MI, 1, O); |
877 | | return; |
878 | | break; |
879 | | case 42: |
880 | | // MOVSX_rr_32 |
881 | | O << " = (s32)"; |
882 | | printOperand(MI, 1, O); |
883 | | return; |
884 | | break; |
885 | | case 43: |
886 | | // MOVSX_rr_32_8, MOVSX_rr_8 |
887 | | O << " = (s8)"; |
888 | | printOperand(MI, 1, O); |
889 | | return; |
890 | | break; |
891 | | case 44: |
892 | | // MUL_ri, MUL_ri_32, MUL_rr, MUL_rr_32 |
893 | | O << " *= "; |
894 | | printOperand(MI, 2, O); |
895 | | return; |
896 | | break; |
897 | | case 45: |
898 | | // NEG_32, NEG_64 |
899 | | O << " = -"; |
900 | | printOperand(MI, 1, O); |
901 | | return; |
902 | | break; |
903 | | case 46: |
904 | | // OR_ri, OR_ri_32, OR_rr, OR_rr_32 |
905 | | O << " |= "; |
906 | | printOperand(MI, 2, O); |
907 | | return; |
908 | | break; |
909 | | case 47: |
910 | | // SDIV_ri, SDIV_ri_32, SDIV_rr, SDIV_rr_32 |
911 | | O << " s/= "; |
912 | | printOperand(MI, 2, O); |
913 | | return; |
914 | | break; |
915 | | case 48: |
916 | | // SLL_ri, SLL_ri_32, SLL_rr, SLL_rr_32 |
917 | | O << " <<= "; |
918 | | printOperand(MI, 2, O); |
919 | | return; |
920 | | break; |
921 | | case 49: |
922 | | // SMOD_ri, SMOD_ri_32, SMOD_rr, SMOD_rr_32 |
923 | | O << " s%= "; |
924 | | printOperand(MI, 2, O); |
925 | | return; |
926 | | break; |
927 | | case 50: |
928 | | // SRA_ri, SRA_ri_32, SRA_rr, SRA_rr_32 |
929 | | O << " s>>= "; |
930 | | printOperand(MI, 2, O); |
931 | | return; |
932 | | break; |
933 | | case 51: |
934 | | // SRL_ri, SRL_ri_32, SRL_rr, SRL_rr_32 |
935 | | O << " >>= "; |
936 | | printOperand(MI, 2, O); |
937 | | return; |
938 | | break; |
939 | | case 52: |
940 | | // STB, STB32, STB_imm, STD, STD_imm, STH, STH32, STH_imm, STW, STW32, ST... |
941 | | O << ") = "; |
942 | | printOperand(MI, 0, O); |
943 | | return; |
944 | | break; |
945 | | case 53: |
946 | | // SUB_ri, SUB_ri_32, SUB_rr, SUB_rr_32 |
947 | | O << " -= "; |
948 | | printOperand(MI, 2, O); |
949 | | return; |
950 | | break; |
951 | | case 54: |
952 | | // XADDD, XADDW, XADDW32 |
953 | | O << ") += "; |
954 | | printOperand(MI, 3, O); |
955 | | return; |
956 | | break; |
957 | | case 55: |
958 | | // XANDD, XANDW32 |
959 | | O << ") &= "; |
960 | | printOperand(MI, 3, O); |
961 | | return; |
962 | | break; |
963 | | case 56: |
964 | | // XCHGD |
965 | | O << " = xchg_64("; |
966 | | printMemOperand(MI, 1, O); |
967 | | O << ", "; |
968 | | printOperand(MI, 3, O); |
969 | | O << ')'; |
970 | | return; |
971 | | break; |
972 | | case 57: |
973 | | // XCHGW32 |
974 | | O << " = xchg32_32("; |
975 | | printMemOperand(MI, 1, O); |
976 | | O << ", "; |
977 | | printOperand(MI, 3, O); |
978 | | O << ')'; |
979 | | return; |
980 | | break; |
981 | | case 58: |
982 | | // XFADDD |
983 | | O << " = atomic_fetch_add((u64 *)("; |
984 | | printMemOperand(MI, 1, O); |
985 | | O << "), "; |
986 | | printOperand(MI, 3, O); |
987 | | O << ')'; |
988 | | return; |
989 | | break; |
990 | | case 59: |
991 | | // XFADDW32 |
992 | | O << " = atomic_fetch_add((u32 *)("; |
993 | | printMemOperand(MI, 1, O); |
994 | | O << "), "; |
995 | | printOperand(MI, 3, O); |
996 | | O << ')'; |
997 | | return; |
998 | | break; |
999 | | case 60: |
1000 | | // XFANDD |
1001 | | O << " = atomic_fetch_and((u64 *)("; |
1002 | | printMemOperand(MI, 1, O); |
1003 | | O << "), "; |
1004 | | printOperand(MI, 3, O); |
1005 | | O << ')'; |
1006 | | return; |
1007 | | break; |
1008 | | case 61: |
1009 | | // XFANDW32 |
1010 | | O << " = atomic_fetch_and((u32 *)("; |
1011 | | printMemOperand(MI, 1, O); |
1012 | | O << "), "; |
1013 | | printOperand(MI, 3, O); |
1014 | | O << ')'; |
1015 | | return; |
1016 | | break; |
1017 | | case 62: |
1018 | | // XFORD |
1019 | | O << " = atomic_fetch_or((u64 *)("; |
1020 | | printMemOperand(MI, 1, O); |
1021 | | O << "), "; |
1022 | | printOperand(MI, 3, O); |
1023 | | O << ')'; |
1024 | | return; |
1025 | | break; |
1026 | | case 63: |
1027 | | // XFORW32 |
1028 | | O << " = atomic_fetch_or((u32 *)("; |
1029 | | printMemOperand(MI, 1, O); |
1030 | | O << "), "; |
1031 | | printOperand(MI, 3, O); |
1032 | | O << ')'; |
1033 | | return; |
1034 | | break; |
1035 | | case 64: |
1036 | | // XFXORD |
1037 | | O << " = atomic_fetch_xor((u64 *)("; |
1038 | | printMemOperand(MI, 1, O); |
1039 | | O << "), "; |
1040 | | printOperand(MI, 3, O); |
1041 | | O << ')'; |
1042 | | return; |
1043 | | break; |
1044 | | case 65: |
1045 | | // XFXORW32 |
1046 | | O << " = atomic_fetch_xor((u32 *)("; |
1047 | | printMemOperand(MI, 1, O); |
1048 | | O << "), "; |
1049 | | printOperand(MI, 3, O); |
1050 | | O << ')'; |
1051 | | return; |
1052 | | break; |
1053 | | case 66: |
1054 | | // XORD, XORW32 |
1055 | | O << ") |= "; |
1056 | | printOperand(MI, 3, O); |
1057 | | return; |
1058 | | break; |
1059 | | case 67: |
1060 | | // XOR_ri, XOR_ri_32, XOR_rr, XOR_rr_32 |
1061 | | O << " ^= "; |
1062 | | printOperand(MI, 2, O); |
1063 | | return; |
1064 | | break; |
1065 | | case 68: |
1066 | | // XXORD, XXORW32 |
1067 | | O << ") ^= "; |
1068 | | printOperand(MI, 3, O); |
1069 | | return; |
1070 | | break; |
1071 | | } |
1072 | | |
1073 | | |
1074 | | // Fragment 2 encoded into 2 bits for 3 unique commands. |
1075 | | switch ((Bits >> 20) & 3) { |
1076 | | default: llvm_unreachable("Invalid command number."); |
1077 | | case 0: |
1078 | | // FI_ri |
1079 | | printMemOperand(MI, 1, O); |
1080 | | return; |
1081 | | break; |
1082 | | case 1: |
1083 | | // Select, Select_32, Select_32_64, Select_64_32, Select_Ri, Select_Ri_32... |
1084 | | printOperand(MI, 1, O); |
1085 | | break; |
1086 | | case 2: |
1087 | | // CORE_ST, LD_imm64 |
1088 | | printImm64Operand(MI, 1, O); |
1089 | | break; |
1090 | | } |
1091 | | |
1092 | | |
1093 | | // Fragment 3 encoded into 2 bits for 4 unique commands. |
1094 | | switch ((Bits >> 22) & 3) { |
1095 | | default: llvm_unreachable("Invalid command number."); |
1096 | | case 0: |
1097 | | // Select, Select_32, Select_32_64, Select_64_32, Select_Ri, Select_Ri_32... |
1098 | | O << ' '; |
1099 | | printOperand(MI, 3, O); |
1100 | | O << ' '; |
1101 | | printOperand(MI, 2, O); |
1102 | | O << " ? "; |
1103 | | printOperand(MI, 4, O); |
1104 | | O << " : "; |
1105 | | printOperand(MI, 5, O); |
1106 | | return; |
1107 | | break; |
1108 | | case 1: |
1109 | | // CORE_ST, LD_pseudo |
1110 | | O << ", "; |
1111 | | break; |
1112 | | case 2: |
1113 | | // LD_imm64 |
1114 | | O << " ll"; |
1115 | | return; |
1116 | | break; |
1117 | | case 3: |
1118 | | // MOV_32_64, MOV_ri, MOV_ri_32, MOV_rr, MOV_rr_32 |
1119 | | return; |
1120 | | break; |
1121 | | } |
1122 | | |
1123 | | |
1124 | | // Fragment 4 encoded into 1 bits for 2 unique commands. |
1125 | | if ((Bits >> 24) & 1) { |
1126 | | // LD_pseudo |
1127 | | printImm64Operand(MI, 2, O); |
1128 | | return; |
1129 | | } else { |
1130 | | // CORE_ST |
1131 | | printOperand(MI, 2, O); |
1132 | | O << ", "; |
1133 | | printImm64Operand(MI, 3, O); |
1134 | | O << ')'; |
1135 | | return; |
1136 | | } |
1137 | | |
1138 | | } |
1139 | | |
1140 | | |
1141 | | /// getRegisterName - This method is automatically generated by tblgen |
1142 | | /// from the register set description. This returns the assembler name |
1143 | | /// for the specified register. |
1144 | 0 | const char *BPFInstPrinter::getRegisterName(MCRegister Reg) { |
1145 | 0 | unsigned RegNo = Reg.id(); |
1146 | 0 | assert(RegNo && RegNo < 25 && "Invalid register number!"); |
1147 | | |
1148 | | |
1149 | 0 | #ifdef __GNUC__ |
1150 | 0 | #pragma GCC diagnostic push |
1151 | 0 | #pragma GCC diagnostic ignored "-Woverlength-strings" |
1152 | 0 | #endif |
1153 | 0 | static const char AsmStrs[] = { |
1154 | 0 | /* 0 */ "r10\0" |
1155 | 0 | /* 4 */ "w10\0" |
1156 | 0 | /* 8 */ "r0\0" |
1157 | 0 | /* 11 */ "w0\0" |
1158 | 0 | /* 14 */ "r11\0" |
1159 | 0 | /* 18 */ "w11\0" |
1160 | 0 | /* 22 */ "r1\0" |
1161 | 0 | /* 25 */ "w1\0" |
1162 | 0 | /* 28 */ "r2\0" |
1163 | 0 | /* 31 */ "w2\0" |
1164 | 0 | /* 34 */ "r3\0" |
1165 | 0 | /* 37 */ "w3\0" |
1166 | 0 | /* 40 */ "r4\0" |
1167 | 0 | /* 43 */ "w4\0" |
1168 | 0 | /* 46 */ "r5\0" |
1169 | 0 | /* 49 */ "w5\0" |
1170 | 0 | /* 52 */ "r6\0" |
1171 | 0 | /* 55 */ "w6\0" |
1172 | 0 | /* 58 */ "r7\0" |
1173 | 0 | /* 61 */ "w7\0" |
1174 | 0 | /* 64 */ "r8\0" |
1175 | 0 | /* 67 */ "w8\0" |
1176 | 0 | /* 70 */ "r9\0" |
1177 | 0 | /* 73 */ "w9\0" |
1178 | 0 | }; |
1179 | 0 | #ifdef __GNUC__ |
1180 | 0 | #pragma GCC diagnostic pop |
1181 | 0 | #endif |
1182 | |
|
1183 | 0 | static const uint8_t RegAsmOffset[] = { |
1184 | 0 | 8, 22, 28, 34, 40, 46, 52, 58, 64, 70, 0, 14, 11, 25, |
1185 | 0 | 31, 37, 43, 49, 55, 61, 67, 73, 4, 18, |
1186 | 0 | }; |
1187 | |
|
1188 | 0 | assert (*(AsmStrs+RegAsmOffset[RegNo-1]) && |
1189 | 0 | "Invalid alt name index for register!"); |
1190 | 0 | return AsmStrs+RegAsmOffset[RegNo-1]; |
1191 | 0 | } |
1192 | | |
1193 | | #ifdef PRINT_ALIAS_INSTR |
1194 | | #undef PRINT_ALIAS_INSTR |
1195 | | |
1196 | | bool BPFInstPrinter::printAliasInstr(const MCInst *MI, uint64_t Address, raw_ostream &OS) { |
1197 | | return false; |
1198 | | } |
1199 | | |
1200 | | #endif // PRINT_ALIAS_INSTR |