ROSE 0.11.145.147
InstructionEnumsPowerpc.h
1#ifndef ROSE_BinaryAnalysis_InstructionEnumsPowerpc_H
2#define ROSE_BinaryAnalysis_InstructionEnumsPowerpc_H
3#include <featureTests.h>
4#ifdef ROSE_ENABLE_BINARY_ANALYSIS
5
6#include <string>
7
8namespace Rose {
9namespace BinaryAnalysis {
10
50
51// PowerPC word size.
52enum PowerpcWordSize {
53 powerpc_32, // 32 bits per word.
54 powerpc_64 // 64 bits per word.
55};
56
57// PowerPC instruction types.
58enum PowerpcInstructionKind {
59 powerpc_unknown_instruction = 0,
60 powerpc_add, // Add.
61 powerpc_add_record, // Add.
62 powerpc_addo, // Add.
63 powerpc_addo_record, // Add.
64 powerpc_addc, // Add Carrying.
65 powerpc_addc_record, // Add Carrying.
66 powerpc_addco, // Add Carrying.
67 powerpc_addco_record, // Add Carrying.
68 powerpc_adde, // Add Extended.
69 powerpc_adde_record, // Add Extended.
70 powerpc_addeo, // Add Extended.
71 powerpc_addeo_record, // Add Extended.
72 powerpc_addi, // Add Immediate.
73 powerpc_addic, // Add Immediate Carrying.
74 powerpc_addic_record, // Add Immediate Carrying and Record.
75 powerpc_addis, // Add Immediate Shifted.
76 powerpc_addme, // Add to Minus One Extended.
77 powerpc_addme_record, // Add to Minus One Extended.
78 powerpc_addmeo, // Add to Minus One Extended.
79 powerpc_addmeo_record, // Add to Minus One Extended.
80 powerpc_addze, // Add to Zero Extended.
81 powerpc_addze_record, // Add to Zero Extended.
82 powerpc_addzeo, // Add to Zero Extended.
83 powerpc_addzeo_record, // Add to Zero Extended.
84 powerpc_and, // AND.
85 powerpc_and_record, // AND.
86 powerpc_andc, // AND with Complement.
87 powerpc_andc_record, // AND with Complement.
88 powerpc_andi_record, // AND Immediate.
89 powerpc_andis_record, // AND Immediate Shifted.
90 powerpc_b, // Branch.
91 powerpc_ba, // Branch.
92 powerpc_bl, // Branch.
93 powerpc_bla, // Branch.
94 powerpc_bc, // Branch Conditional.
95 powerpc_bca, // Branch Conditional.
96 powerpc_bcl, // Branch Conditional.
97 powerpc_bcla, // Branch Conditional.
98 powerpc_bcctr, // Branch Conditional to Count Register.
99 powerpc_bcctrl, // Branch Conditional to Count Register.
100 powerpc_bclr, // Branch Conditional Link Register.
101 powerpc_bclrl, // Branch Conditional Link Register.
102 powerpc_cmp, // Compare.
103 powerpc_cmpi, // Compare Immediate.
104 powerpc_cmpl, // Compare Logical.
105 powerpc_cmpli, // Compare Logical Immediate.
106 powerpc_cntlzd, // Count Leading Zeros Doubleword.
107 powerpc_cntlzd_record, // Count Leading Zeros Doubleword.
108 powerpc_cntlzw, // Count Leading Zeros Word.
109 powerpc_cntlzw_record, // Count Leading Zeros Word.
110 powerpc_crand, // Condition Register AND.
111 powerpc_crandc, // Condition Register AND with Complement.
112 powerpc_creqv, // Condition Register Equivalent.
113 powerpc_crnand, // Condition Register NAND.
114 powerpc_crnor, // Condition Register NOR.
115 powerpc_cror, // Condition Register OR.
116 powerpc_crorc, // Condition Register OR with Complement.
117 powerpc_crxor, // Condition Register XOR.
118 powerpc_dcbf, // Data Cache Block Flush.
119 powerpc_dcba, // Data Cache Block Allocate.
120 powerpc_dcbi, // Data Cache Block Invalidate.
121 powerpc_dcbst, // Data Cache Block Store.
122 powerpc_dcbt, // Data Cache Block Touch.
123 powerpc_dcbtst, // Data Cache Block Touch for Store.
124 powerpc_dcbz, // Data Cache Block Set to Zero.
125 powerpc_divd, // Divide Doubleword.
126 powerpc_divd_record, // Divide Doubleword.
127 powerpc_divdo, // Divide Doubleword.
128 powerpc_divdo_record, // Divide Doubleword.
129 powerpc_divdu, // Divide Doubleword Unsigned.
130 powerpc_divdu_record, // Divide Doubleword Unsigned.
131 powerpc_divduo, // Divide Doubleword Unsigned.
132 powerpc_divduo_record, // Divide Doubleword Unsigned.
133 powerpc_divw, // Divide Word.
134 powerpc_divw_record, // Divide Word.
135 powerpc_divwo, // Divide Word.
136 powerpc_divwo_record, // Divide Word.
137 powerpc_divwu, // Divide Word Unsigned.
138 powerpc_divwu_record, // Divide Word Unsigned.
139 powerpc_divwuo, // Divide Word Unsigned.
140 powerpc_divwuo_record, // Divide Word Unsigned.
141 powerpc_dst, // Data Stream Touch.
142 powerpc_dstt, // Data Stream Touch.
143 powerpc_dstst, // Data Stream Touch for store.
144 powerpc_dststt, // Data Stream Touch for store.
145 powerpc_dss, // Data Stream Stop.
146 powerpc_dssall, // Data Stream Stop All.
147 powerpc_eciwx, // External Control in Word Indexed (opt.).
148 powerpc_ecowx, // External Control out Word Indexed (opt.).
149 powerpc_eieio, // Enforce In-order Execution of I/O.
150 powerpc_eqv, // Equivalent.
151 powerpc_eqv_record, // Equivalent.
152 powerpc_extsb, // Extend Sign Byte.
153 powerpc_extsb_record, // Extend Sign Byte.
154 powerpc_extsh, // Extend Sign Halfword.
155 powerpc_extsh_record, // Extend Sign Halfword.
156 powerpc_extsw, // Extend Sign Word.
157 powerpc_extsw_record, // Extend Sign Word.
158 powerpc_fabs, // Floating Absolute Value.
159 powerpc_fabs_record, // Floating Absolute Value.
160 powerpc_fadd, // Floating Add.
161 powerpc_fadd_record, // Floating Add.
162 powerpc_fadds, // Floating Add Single.
163 powerpc_fadds_record, // Floating Add Single.
164 powerpc_fcfid, // Floating Convert from Integer Doubleword.
165 powerpc_fcfid_record, // Floating Convert from Integer Doubleword.
166 powerpc_fcmpo, // Floating Compare Ordered.
167 powerpc_fcmpu, // Floating Compare Unordered.
168 powerpc_fctid, // Floating Convert to Integer Doubleword.
169 powerpc_fctid_record, // Floating Convert to Integer Doubleword.
170 powerpc_fctidz, // Floating Convert to Integer Doubleword with Round Toward Zero.
171 powerpc_fctidz_record, // Floating Convert to Integer Doubleword with Round Toward Zero.
172 powerpc_fctiw, // Floating Convert to Integer Word.
173 powerpc_fctiw_record, // Floating Convert to Integer Word.
174 powerpc_fctiwz, // Floating Convert to Integer Word with Round to Zero.
175 powerpc_fctiwz_record, // Floating Convert to Integer Word with Round to Zero.
176 powerpc_fdiv, // Floating Divide.
177 powerpc_fdiv_record, // Floating Divide.
178 powerpc_fdivs, // Floating Divide Single.
179 powerpc_fdivs_record, // Floating Divide Single.
180 powerpc_fmadd, // Floating Multiply-Add.
181 powerpc_fmadd_record, // Floating Multiply-Add.
182 powerpc_fmadds, // Floating Multiply-Add Single.
183 powerpc_fmadds_record, // Floating Multiply-Add Single.
184 powerpc_fmr, // Floating Move Register.
185 powerpc_fmr_record, // Floating Move Register.
186 powerpc_fmsub, // Floating Multiply-Subtract.
187 powerpc_fmsub_record, // Floating Multiply-Subtract.
188 powerpc_fmsubs, // Floating Multiply-Subtract Single.
189 powerpc_fmsubs_record, // Floating Multiply-Subtract Single.
190 powerpc_fmul, // Floating Multiply.
191 powerpc_fmul_record, // Floating Multiply.
192 powerpc_fmuls, // Floating Multiply Single.
193 powerpc_fmuls_record, // Floating Multiply Single.
194 powerpc_fnabs, // Floating Negative Absolute Value.
195 powerpc_fnabs_record, // Floating Negative Absolute Value.
196 powerpc_fneg, // Floating Negate.
197 powerpc_fneg_record, // Floating Negate.
198 powerpc_fnmadd, // Floating Negative Multiply-Add.
199 powerpc_fnmadd_record, // Floating Negative Multiply-Add.
200 powerpc_fnmadds, // Floating Negative Multiply-Add Single.
201 powerpc_fnmadds_record, // Floating Negative Multiply-Add Single.
202 powerpc_fnmsub, // Floating Negative Multiply-Subtract.
203 powerpc_fnmsub_record, // Floating Negative Multiply-Subtract.
204 powerpc_fnmsubs, // Floating Negative Multiply-Subtract Single.
205 powerpc_fnmsubs_record, // Floating Negative Multiply-Subtract Single.
206 powerpc_fpmul, // FP2 Floating Parallel Multiply (BGL specific).
207 powerpc_fxmul, // FP2 Floating Cross Multiply (BGL specific).
208 powerpc_fxpmul, // FP2 Floating Cross Copy-Primary Multiply (BGL specific).
209 powerpc_fxsmul, // FP2 Floating Cross Copy-Secondary Multiply (BGL specific).
210 powerpc_fpadd, // FP2 Floating Parallel Add (BGL specific).
211 powerpc_fpsub, // FP2 Floating Parallel Subtract (BGL specific).
212 powerpc_fpre, // FP2 Floating Parallel Reciprocal Estimate (BGL specific).
213 powerpc_fprsqrte, // FP2 Floating Parallel Reciprocal Square Root Estimate (BGL specific).
214 powerpc_fpmr,
215 powerpc_fpabs,
216 powerpc_lfssx,
217 powerpc_fpneg,
218 powerpc_lfssux,
219 powerpc_fprsp,
220 powerpc_lfsdx,
221 powerpc_fpnabs,
222 powerpc_lfsdux,
223 powerpc_lfxsx,
224 powerpc_fsmr,
225 powerpc_lfxsux,
226 powerpc_lfxdx,
227 powerpc_fsabs,
228 powerpc_lfxdux,
229 powerpc_lfpsx,
230 powerpc_fsneg,
231 powerpc_lfpsux,
232 powerpc_lfpdx,
233 powerpc_fsnabs,
234 powerpc_lfpdux,
235 powerpc_stfpiwx,
236 powerpc_fxmr,
237 powerpc_fpctiw,
238 powerpc_stfssx,
239 powerpc_stfssux,
240 powerpc_fpctiwz,
241 powerpc_stfsdx,
242 powerpc_stfsdux,
243 powerpc_stfxsx,
244 powerpc_fsmtp,
245 powerpc_stfxsux,
246 powerpc_stfxdx,
247 powerpc_stfxdux,
248 powerpc_stfpsx,
249 powerpc_fsmfp,
250 powerpc_stfpsux,
251 powerpc_stfpdx,
252 powerpc_stfpdux,
253 powerpc_fpsel,
254 powerpc_fpmadd,
255 powerpc_fpmsub,
256 powerpc_fxmadd,
257 powerpc_fxcpmadd,
258 powerpc_fxcsmadd,
259 powerpc_fpnmadd,
260 powerpc_fxnmadd,
261 powerpc_fxcpnmadd,
262 powerpc_fxcsnmadd,
263 powerpc_fxcpnpma,
264 powerpc_fxmsub,
265 powerpc_fxcsnpma,
266 powerpc_fxcpmsub,
267 powerpc_fxcpnsma,
268 powerpc_fxcsmsub,
269 powerpc_fxcsnsma,
270 powerpc_fpnmsub,
271 powerpc_fxcxma,
272 powerpc_fxnmsub,
273 powerpc_fxcxnpma,
274 powerpc_fxcpnmsub,
275 powerpc_fxcxnsma,
276 powerpc_fxcsnmsub,
277 powerpc_fxcxnms, // Last FP2 specific enum value.
278 powerpc_fre, // Floating Reciprocal Estimate Single (optional).
279 powerpc_fre_record, // Floating Reciprocal Estimate Single (optional).
280 powerpc_fres, // Floating Reciprocal Estimate Single (optional).
281 powerpc_fres_record, // Floating Reciprocal Estimate Single (optional).
282 powerpc_frsp, // Floating Round to Single Precision.
283 powerpc_frsp_record, // Floating Round to Single Precision.
284 powerpc_frsqrte, // Floating Reciprocal Square Root Estimate (optional).
285 powerpc_frsqrte_record, // Floating Reciprocal Square Root Estimate (optional).
286 powerpc_frsqrtes, // Floating Reciprocal Square Root Estimate (optional).
287 powerpc_frsqrtes_record, // Floating Reciprocal Square Root Estimate (optional).
288 powerpc_fsel, // Floating-Point Select (optional).
289 powerpc_fsel_record, // Floating-Point Select (optional).
290 powerpc_fsqrt, // Floating-Point Square Root (optional).
291 powerpc_fsqrt_record, // Floating-Point Square Root (optional).
292 powerpc_fsqrts, // Floating-Point Square Root (optional).
293 powerpc_fsqrts_record, // Floating-Point Square Root (optional).
294 powerpc_fsub, // Floating Subtract.
295 powerpc_fsub_record, // Floating Subtract.
296 powerpc_fsubs, // Floating Subtract Single.
297 powerpc_fsubs_record, // Floating Subtract Single.
298 powerpc_icbi, // Instruction Cache Block Invalidate.
299 powerpc_illegal, // Invoke illegal instruction error handler.
300 powerpc_isync, // Instruction Synchronize.
301 powerpc_lbz, // Load Byte and Zero.
302 powerpc_lbzu, // Load Byte and Zero with Update.
303 powerpc_lbzux, // Load Byte and Zero with Update Indexed.
304 powerpc_lbzx, // Load Byte and Zero Indexed.
305 powerpc_ld, // Load Doubleword.
306 powerpc_ldarx, // Load Doubleword and Reserve Indexed.
307 powerpc_ldu, // Load Doubleword with Update.
308 powerpc_ldux, // Load Doubleword with Update Indexed.
309 powerpc_ldx, // Load Doubleword Indexed.
310 powerpc_lfd, // Load Floating-Point Double.
311 powerpc_lfdu, // Load Floating-Point Double with Update.
312 powerpc_lfdux, // Load Floating-Point Double with Update Indexed.
313 powerpc_lfdx, // Load Floating-Point Double Indexed.
314 powerpc_lfs, // Load Floating-Point Single.
315 powerpc_lfsu, // Load Floating-Point Single with Update.
316 powerpc_lfsux, // Load Floating-Point Single with Update Indexed.
317 powerpc_lfsx, // Load Floating-Point Single Indexed.
318 powerpc_lha, // Load Half Algebraic.
319 powerpc_lhau, // Load Half Algebraic with Update.
320 powerpc_lhaux, // Load Half Algebraic with Update Indexed.
321 powerpc_lhax, // Load Half Algebraic Indexed.
322 powerpc_lhbrx, // Load Half Byte-Reversed Indexed.
323 powerpc_lhz, // Load Half and Zero.
324 powerpc_lhzu, // Load Half and Zero with Update.
325 powerpc_lhzux, // Load Half and Zero with Update Indexed.
326 powerpc_lhzx, // Load Half and Zero Indexed.
327 powerpc_lmw, // Load Multiple Word.
328 powerpc_lswi, // Load String Word Immediate.
329 powerpc_lswx, // Load String Word Indexed.
330 powerpc_lwa, // Load Word Algebraic.
331 powerpc_lwarx, // Load Word and Reserve Indexed.
332 powerpc_lwaux, // Load Word Algebraic with Update Indexed.
333 powerpc_lwax, // Load Word Algebraic Indexed.
334 powerpc_lwbrx, // Load Word Byte-Reversed Indexed.
335 powerpc_lwz, // Load Word and Zero.
336 powerpc_lwzu, // Load Word with Zero Update.
337 powerpc_lwzux, // Load Word and Zero with Update Indexed.
338 powerpc_lwzx, // Load Word and Zero Indexed.
339 powerpc_mcrf, // Move Condition Register Field.
340 powerpc_mcrfs, // Move to Condition Register from FPSCR.
341 powerpc_mcrxr, // Move to Condition Register from XER.
342 powerpc_mfcr, // Move from Condition Register.
343 powerpc_mffs, // Move from FPSCR.
344 powerpc_mffs_record, // Move from FPSCR.
345 powerpc_mfmsr, // Move from Machine State Register.
346 powerpc_mfspr, // Move from Special-Purpose Register.
347 powerpc_mfsr, // Move from Segment Register.
348 powerpc_mfsrin, // Move from Segment Register Indirect.
349 powerpc_mftb, // Move from Time Base.
350 powerpc_mtcrf, // Move to Condition Register Fields.
351 powerpc_mtfsb0, // Move to FPSCR Bit 0.
352 powerpc_mtfsb0_record, // Move to FPSCR Bit 0.
353 powerpc_mtfsb1, // Move to FPSCR Bit 1.
354 powerpc_mtfsb1_record, // Move to FPSCR Bit 1.
355 powerpc_mtfsf, // Move to FPSCR Fields.
356 powerpc_mtfsf_record, // Move to FPSCR Fields.
357 powerpc_mtfsfi, // Move to FPSCR Field Immediate.
358 powerpc_mtfsfi_record, // Move to FPSCR Field Immediate.
359 powerpc_mtmsr, // Move to Machine State Register.
360 powerpc_mtmsrd, // Move to Machine State Register.
361 powerpc_mtspr, // Move to Special-Purpose Register.
362 powerpc_mtsr, // Move to Segment Register.
363 powerpc_mtsrd, // Move to Segment Register.
364 powerpc_mtsrdin, // Move to Segment Register Indirect.
365 powerpc_mtsrin, // Move to Segment Register Indirect.
366 powerpc_mulhd, // Multiply High Doubleword.
367 powerpc_mulhd_record, // Multiply High Doubleword.
368 powerpc_mulhdu, // Multiply High Doubleword Unsigned.
369 powerpc_mulhdu_record, // Multiply High Doubleword Unsigned.
370 powerpc_mulhw, // Multiply High Word.
371 powerpc_mulhw_record, // Multiply High Word.
372 powerpc_mulhwu, // Multiply High Word Unsigned.
373 powerpc_mulhwu_record, // Multiply High Word Unsigned.
374 powerpc_mulld, // Multiply Low Doubleword.
375 powerpc_mulld_record, // Multiply Low Doubleword.
376 powerpc_mulldo, // Multiply Low Doubleword.
377 powerpc_mulldo_record, // Multiply Low Doubleword.
378 powerpc_mulli, // Multiply Low Immediate.
379 powerpc_mullw, // Multiply Low Word.
380 powerpc_mullw_record, // Multiply Low Word.
381 powerpc_mullwo, // Multiply Low Word.
382 powerpc_mullwo_record, // Multiply Low Word.
383 powerpc_nand, // NAND.
384 powerpc_nand_record, // NAND.
385 powerpc_neg, // Negate.
386 powerpc_neg_record, // Negate.
387 powerpc_nego, // Negate.
388 powerpc_nego_record, // Negate.
389 powerpc_nor, // NOR.
390 powerpc_nor_record, // NOR.
391 powerpc_or, // OR.
392 powerpc_or_record, // OR.
393 powerpc_orc, // OR with Complement.
394 powerpc_orc_record, // OR with Complement.
395 powerpc_ori, // OR Immediate.
396 powerpc_oris, // OR Immediate Shifted.
397 powerpc_popcntb, // Population count bytes.
398 powerpc_rfi, // Return from Interrupt.
399 powerpc_rfid, // Return from Interrupt.
400 powerpc_rldcl, // Rotate Left Doubleword then Clear Left.
401 powerpc_rldcl_record, // Rotate Left Doubleword then Clear Left.
402 powerpc_rldcr, // Rotate Left Doubleword then Clear Right.
403 powerpc_rldcr_record, // Rotate Left Doubleword then Clear Right.
404 powerpc_rldic, // Rotate Left Doubleword Immediate then Clear.
405 powerpc_rldic_record, // Rotate Left Doubleword Immediate then Clear.
406 powerpc_rldicl, // Rotate Left Doubleword Immediate then Clear Left.
407 powerpc_rldicl_record, // Rotate Left Doubleword Immediate then Clear Left.
408 powerpc_rldicr, // Rotate Left Doubleword Immediate then Clear Right.
409 powerpc_rldicr_record, // Rotate Left Doubleword Immediate then Clear Right.
410 powerpc_rldimi, // Rotate Left Doubleword Immediate then Mask Insert.
411 powerpc_rldimi_record, // Rotate Left Doubleword Immediate then Mask Insert.
412 powerpc_rlwimi, // Rotate Left Word Immediate then Mask Insert.
413 powerpc_rlwimi_record, // Rotate Left Word Immediate then Mask Insert.
414 powerpc_rlwinm, // Rotate Left Word Immediate then AND with Mask.
415 powerpc_rlwinm_record, // Rotate Left Word Immediate then AND with Mask.
416 powerpc_rlwnm, // Rotate Left Word then AND with Mask.
417 powerpc_rlwnm_record, // Rotate Left Word then AND with Mask.
418 powerpc_sc, // System Call.
419 powerpc_slbia, // SLB Invalidate All.
420 powerpc_slbie, // SLB Invalidate Entry.
421 powerpc_sld, // Shift Left Doubleword.
422 powerpc_sld_record, // Shift Left Doubleword.
423 powerpc_slw, // Shift Left Word.
424 powerpc_slw_record, // Shift Left Word.
425 powerpc_srad, // Shift Right Algebraic Doubleword.
426 powerpc_srad_record, // Shift Right Algebraic Doubleword.
427 powerpc_sradi, // Shift Right Algebraic Doubleword Immediate.
428 powerpc_sradi_record, // Shift Right Algebraic Doubleword Immediate.
429 powerpc_srd, // Shift Right Doubleword.
430 powerpc_srd_record, // Shift Right Doubleword.
431 powerpc_sraw, // Shift Right Algebraic Word.
432 powerpc_sraw_record, // Shift Right Algebraic Word.
433 powerpc_srawi, // Shift Right Algebraic Word Immediate.
434 powerpc_srawi_record, // Shift Right Algebraic Word Immediate.
435 powerpc_srw, // Shift Right Word.
436 powerpc_srw_record, // Shift Right Word.
437 powerpc_stb, // Store Byte.
438 powerpc_stbu, // Store Byte with Update.
439 powerpc_stbux, // Store Byte with Update Indexed.
440 powerpc_stbx, // Store Byte Indexed.
441 powerpc_std, // Store Doubleword.
442 powerpc_stdcx_record, // Store Doubleword Conditional Indexed.
443 powerpc_stdu, // Store Doubleword with Update.
444 powerpc_stdux, // Store Doubleword with Update Indexed.
445 powerpc_stdx, // Store Doubleword Indexed.
446 powerpc_stfd, // Store Floating-Point Double.
447 powerpc_stfdu, // Store Floating-Point Double with Update.
448 powerpc_stfdux, // Store Floating-Point Double with Update Indexed.
449 powerpc_stfdx, // Store Floating-Point Double Indexed.
450 powerpc_stfiwx, // Store Floating-Point as Integer Word Indexed (optional).
451 powerpc_stfs, // Store Floating-Point Single.
452 powerpc_stfsu, // Store Floating-Point Single with Update.
453 powerpc_stfsux, // Store Floating-Point Single with Update Indexed.
454 powerpc_stfsx, // Store Floating-Point Single Indexed.
455 powerpc_sth, // Store Half.
456 powerpc_sthbrx, // Store Half Byte-Reverse Indexed.
457 powerpc_sthu, // Store Half with Update.
458 powerpc_sthux, // Store Half with Update Indexed.
459 powerpc_sthx, // Store Half Indexed.
460 powerpc_stmw, // Store Multiple Word.
461 powerpc_stswi, // Store String Word Immediate.
462 powerpc_stswx, // Store String Word Indexed.
463 powerpc_stw, // Store.
464 powerpc_stwbrx, // Store Word Byte-Reversed Indexed.
465 powerpc_stwcx_record, // Store Word Conditional Indexed.
466 powerpc_stwu, // Store Word with Update.
467 powerpc_stwux, // Store Word with Update Indexed.
468 powerpc_stwx, // Store Word Indexed.
469 powerpc_subf, // Subtract from.
470 powerpc_subf_record, // Subtract from.
471 powerpc_subfo, // Subtract from.
472 powerpc_subfo_record, // Subtract from.
473 powerpc_subfc, // Subtract from Carrying.
474 powerpc_subfc_record, // Subtract from Carrying.
475 powerpc_subfco, // Subtract from Carrying.
476 powerpc_subfco_record, // Subtract from Carrying.
477 powerpc_subfe, // Subtract from Extended.
478 powerpc_subfe_record, // Subtract from Extended.
479 powerpc_subfeo, // Subtract from Extended.
480 powerpc_subfeo_record, // Subtract from Extended.
481 powerpc_subfic, // Subtract from Immediate Carrying.
482 powerpc_subfme, // Subtract from Minus One Extended.
483 powerpc_subfme_record, // Subtract from Minus One Extended.
484 powerpc_subfmeo, // Subtract from Minus One Extended.
485 powerpc_subfmeo_record, // Subtract from Minus One Extended.
486 powerpc_subfze, // Subtract from Zero Extended.
487 powerpc_subfze_record, // Subtract from Zero Extended.
488 powerpc_subfzeo, // Subtract from Zero Extended.
489 powerpc_subfzeo_record, // Subtract from Zero Extended.
490 powerpc_sync, // Synchronize.
491 powerpc_td, // Trap Doubleword.
492 powerpc_tdi, // Trap Doubleword Immediate.
493 powerpc_tlbia, // Translation Look-aside Buffer Invalidate All (optional).
494 powerpc_tlbie, // Translation Look-aside Buffer Invalidate Entry (optional).
495 powerpc_tlbsync, // Translation Look-aside Buffer Synchronize (optional).
496 powerpc_tw, // Trap Word.
497 powerpc_twi, // Trap Word Immediate.
498 powerpc_xor, // XOR.
499 powerpc_xor_record, // XOR.
500 powerpc_xori, // XOR Immediate.
501 powerpc_xoris, // XOR Immediate Shift.
502 powerpc_last_instruction
503};
504
505// PowerPC register classes.
506enum PowerpcRegisterClass {
507 powerpc_regclass_unknown,
508 powerpc_regclass_gpr, // General Purpose Register (0..31).
509 powerpc_regclass_fpr, // Floating-Point Register (0..31; 64 bits each).
510 powerpc_regclass_cr, // Condition Register (only particular fields or bits may be used).
511 powerpc_regclass_fpscr, // Floating point status and control register.
512 powerpc_regclass_spr, // Special-purpose register (0..1023).
513 powerpc_regclass_tbr, // Time base register (0..1023).
514 powerpc_regclass_msr, // Machine state register.
515 powerpc_regclass_sr, // Segment register.
516 powerpc_regclass_iar, // instruction address (pseudo) register.
517 powerpc_regclass_pvr, // processor version register.
518 powerpc_last_register_class // last enum value.
519};
520
521// PowerPC condition register access granularity.
522enum PowerpcConditionRegisterAccessGranularity {
523 powerpc_condreggranularity_whole, // Whole CR (or unknown or not using a CR).
524 powerpc_condreggranularity_field, // Four-bit field.
525 powerpc_condreggranularity_bit // Single bit.
526};
527
528// PowerPC special purpose registers.
529enum PowerpcSpecialPurposeRegister {
530 // These must match the processor's numbers
531 powerpc_spr_xer = 1, // fixed-point exception register.
532 powerpc_spr_lr = 8, // link register.
533 powerpc_spr_ctr = 9, // count register.
534 powerpc_spr_dsisr = 18,
535 powerpc_spr_dar = 19,
536 powerpc_spr_dec = 22 // FIXME: fill in the rest of these
537};
538
539// PowerPC time base registers.
540enum PowerpcTimeBaseRegister {
541 // These must match the processor's numbers
542 powerpc_tbr_tbl = 268,
543 powerpc_tbr_tbu = 269
544};
545
546} // namespace
547} // namespace
548
549#endif
550#endif
PowerpcCapability
Subsets for the PowerPC instruction set.
@ powerpc_capability_oea
Operating environment architecture (OEA).
@ powerpc_capability_uisa
User instruction set architecture (UISA).
@ powerpc_capability_vea
Virtual environment architecture (VEA).
@ powerpc_capability_all
All decoding capabilities.
@ powerpc_capability_uncategorized
Uncategorized or unknown.
@ powerpc_capability_default
Default decoding capabilities.
@ powerpc_capability_440fpu
PowerPC 440 floating-point unit.
The ROSE library.