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