Coverage Report

Created: 2024-01-17 10:31

/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