00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 #include <stdio.h>
00028 #include "sysdep.h"
00029 #include "opcode/ppc.h"
00030 #include "opintl.h"
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045 static unsigned long insert_bat (unsigned long, long, int, const char **);
00046 static long extract_bat (unsigned long, int, int *);
00047 static unsigned long insert_bba (unsigned long, long, int, const char **);
00048 static long extract_bba (unsigned long, int, int *);
00049 static unsigned long insert_bd (unsigned long, long, int, const char **);
00050 static long extract_bd (unsigned long, int, int *);
00051 static unsigned long insert_bdm (unsigned long, long, int, const char **);
00052 static long extract_bdm (unsigned long, int, int *);
00053 static unsigned long insert_bdp (unsigned long, long, int, const char **);
00054 static long extract_bdp (unsigned long, int, int *);
00055 static unsigned long insert_bo (unsigned long, long, int, const char **);
00056 static long extract_bo (unsigned long, int, int *);
00057 static unsigned long insert_boe (unsigned long, long, int, const char **);
00058 static long extract_boe (unsigned long, int, int *);
00059 static unsigned long insert_dq (unsigned long, long, int, const char **);
00060 static long extract_dq (unsigned long, int, int *);
00061 static unsigned long insert_ds (unsigned long, long, int, const char **);
00062 static long extract_ds (unsigned long, int, int *);
00063 static unsigned long insert_de (unsigned long, long, int, const char **);
00064 static long extract_de (unsigned long, int, int *);
00065 static unsigned long insert_des (unsigned long, long, int, const char **);
00066 static long extract_des (unsigned long, int, int *);
00067 static unsigned long insert_fxm (unsigned long, long, int, const char **);
00068 static long extract_fxm (unsigned long, int, int *);
00069 static unsigned long insert_li (unsigned long, long, int, const char **);
00070 static long extract_li (unsigned long, int, int *);
00071 static unsigned long insert_mbe (unsigned long, long, int, const char **);
00072 static long extract_mbe (unsigned long, int, int *);
00073 static unsigned long insert_mb6 (unsigned long, long, int, const char **);
00074 static long extract_mb6 (unsigned long, int, int *);
00075 static unsigned long insert_nb (unsigned long, long, int, const char **);
00076 static long extract_nb (unsigned long, int, int *);
00077 static unsigned long insert_nsi (unsigned long, long, int, const char **);
00078 static long extract_nsi (unsigned long, int, int *);
00079 static unsigned long insert_ral (unsigned long, long, int, const char **);
00080 static unsigned long insert_ram (unsigned long, long, int, const char **);
00081 static unsigned long insert_raq (unsigned long, long, int, const char **);
00082 static unsigned long insert_ras (unsigned long, long, int, const char **);
00083 static unsigned long insert_rbs (unsigned long, long, int, const char **);
00084 static long extract_rbs (unsigned long, int, int *);
00085 static unsigned long insert_rsq (unsigned long, long, int, const char **);
00086 static unsigned long insert_rtq (unsigned long, long, int, const char **);
00087 static unsigned long insert_sh6 (unsigned long, long, int, const char **);
00088 static long extract_sh6 (unsigned long, int, int *);
00089 static unsigned long insert_spr (unsigned long, long, int, const char **);
00090 static long extract_spr (unsigned long, int, int *);
00091 static unsigned long insert_tbr (unsigned long, long, int, const char **);
00092 static long extract_tbr (unsigned long, int, int *);
00093 static unsigned long insert_ev2 (unsigned long, long, int, const char **);
00094 static long extract_ev2 (unsigned long, int, int *);
00095 static unsigned long insert_ev4 (unsigned long, long, int, const char **);
00096 static long extract_ev4 (unsigned long, int, int *);
00097 static unsigned long insert_ev8 (unsigned long, long, int, const char **);
00098 static long extract_ev8 (unsigned long, int, int *);
00099
00100
00101
00102
00103
00104
00105
00106
00107
00108
00109
00110
00111 const struct powerpc_operand powerpc_operands[] =
00112 {
00113
00114
00115 #define UNUSED 0
00116 { 0, 0, NULL, NULL, 0 },
00117
00118
00119 #define BA UNUSED + 1
00120 #define BA_MASK (0x1f << 16)
00121 { 5, 16, NULL, NULL, PPC_OPERAND_CR },
00122
00123
00124
00125 #define BAT BA + 1
00126 { 5, 16, insert_bat, extract_bat, PPC_OPERAND_FAKE },
00127
00128
00129 #define BB BAT + 1
00130 #define BB_MASK (0x1f << 11)
00131 { 5, 11, NULL, NULL, PPC_OPERAND_CR },
00132
00133
00134
00135 #define BBA BB + 1
00136 { 5, 11, insert_bba, extract_bba, PPC_OPERAND_FAKE },
00137
00138
00139
00140 #define BD BBA + 1
00141 { 16, 0, insert_bd, extract_bd, PPC_OPERAND_RELATIVE | PPC_OPERAND_SIGNED },
00142
00143
00144
00145 #define BDA BD + 1
00146 { 16, 0, insert_bd, extract_bd, PPC_OPERAND_ABSOLUTE | PPC_OPERAND_SIGNED },
00147
00148
00149
00150 #define BDM BDA + 1
00151 { 16, 0, insert_bdm, extract_bdm,
00152 PPC_OPERAND_RELATIVE | PPC_OPERAND_SIGNED },
00153
00154
00155
00156 #define BDMA BDM + 1
00157 { 16, 0, insert_bdm, extract_bdm,
00158 PPC_OPERAND_ABSOLUTE | PPC_OPERAND_SIGNED },
00159
00160
00161
00162 #define BDP BDMA + 1
00163 { 16, 0, insert_bdp, extract_bdp,
00164 PPC_OPERAND_RELATIVE | PPC_OPERAND_SIGNED },
00165
00166
00167
00168 #define BDPA BDP + 1
00169 { 16, 0, insert_bdp, extract_bdp,
00170 PPC_OPERAND_ABSOLUTE | PPC_OPERAND_SIGNED },
00171
00172
00173 #define BF BDPA + 1
00174 { 3, 23, NULL, NULL, PPC_OPERAND_CR },
00175
00176
00177
00178 #define OBF BF + 1
00179 { 3, 23, NULL, NULL, PPC_OPERAND_CR | PPC_OPERAND_OPTIONAL },
00180
00181
00182 #define BFA OBF + 1
00183 { 3, 18, NULL, NULL, PPC_OPERAND_CR },
00184
00185
00186 #define BI BFA + 1
00187 #define BI_MASK (0x1f << 16)
00188 { 5, 16, NULL, NULL, PPC_OPERAND_CR },
00189
00190
00191
00192 #define BO BI + 1
00193 #define BO_MASK (0x1f << 21)
00194 { 5, 21, insert_bo, extract_bo, 0 },
00195
00196
00197
00198 #define BOE BO + 1
00199 { 5, 21, insert_boe, extract_boe, 0 },
00200
00201 #define BH BOE + 1
00202 { 2, 11, NULL, NULL, PPC_OPERAND_OPTIONAL },
00203
00204
00205 #define BT BH + 1
00206 { 5, 21, NULL, NULL, PPC_OPERAND_CR },
00207
00208
00209
00210
00211
00212 #define CR BT + 1
00213 { 3, 18, NULL, NULL, PPC_OPERAND_CR | PPC_OPERAND_OPTIONAL },
00214
00215
00216 #define CRB CR + 1
00217 { 5, 6, NULL, NULL, 0 },
00218
00219
00220 #define CRFD CRB + 1
00221 { 3, 23, NULL, NULL, PPC_OPERAND_CR },
00222
00223
00224 #define CRFS CRFD + 1
00225 { 3, 0, NULL, NULL, PPC_OPERAND_CR },
00226
00227
00228 #define CT CRFS + 1
00229 { 5, 21, NULL, NULL, PPC_OPERAND_OPTIONAL },
00230
00231
00232
00233
00234 #define D CT + 1
00235 { 16, 0, NULL, NULL, PPC_OPERAND_PARENS | PPC_OPERAND_SIGNED },
00236
00237
00238
00239 #define DE D + 1
00240 { 14, 0, insert_de, extract_de, PPC_OPERAND_PARENS },
00241
00242
00243
00244 #define DES DE + 1
00245 { 14, 0, insert_des, extract_des, PPC_OPERAND_PARENS | PPC_OPERAND_SIGNED },
00246
00247
00248
00249 #define DQ DES + 1
00250 { 16, 0, insert_dq, extract_dq,
00251 PPC_OPERAND_PARENS | PPC_OPERAND_SIGNED | PPC_OPERAND_DQ },
00252
00253
00254
00255 #define DS DQ + 1
00256 { 16, 0, insert_ds, extract_ds,
00257 PPC_OPERAND_PARENS | PPC_OPERAND_SIGNED | PPC_OPERAND_DS },
00258
00259
00260 #define E DS + 1
00261 { 1, 15, NULL, NULL, 0 },
00262
00263
00264 #define FL1 E + 1
00265 { 4, 12, NULL, NULL, 0 },
00266
00267
00268 #define FL2 FL1 + 1
00269 { 3, 2, NULL, NULL, 0 },
00270
00271
00272 #define FLM FL2 + 1
00273 { 8, 17, NULL, NULL, 0 },
00274
00275
00276 #define FRA FLM + 1
00277 #define FRA_MASK (0x1f << 16)
00278 { 5, 16, NULL, NULL, PPC_OPERAND_FPR },
00279
00280
00281 #define FRB FRA + 1
00282 #define FRB_MASK (0x1f << 11)
00283 { 5, 11, NULL, NULL, PPC_OPERAND_FPR },
00284
00285
00286 #define FRC FRB + 1
00287 #define FRC_MASK (0x1f << 6)
00288 { 5, 6, NULL, NULL, PPC_OPERAND_FPR },
00289
00290
00291
00292 #define FRS FRC + 1
00293 #define FRT FRS
00294 { 5, 21, NULL, NULL, PPC_OPERAND_FPR },
00295
00296
00297 #define FXM FRS + 1
00298 #define FXM_MASK (0xff << 12)
00299 { 8, 12, insert_fxm, extract_fxm, 0 },
00300
00301
00302 #define FXM4 FXM + 1
00303 { 8, 12, insert_fxm, extract_fxm, PPC_OPERAND_OPTIONAL },
00304
00305
00306 #define L FXM4 + 1
00307 { 1, 21, NULL, NULL, PPC_OPERAND_OPTIONAL },
00308
00309
00310 #define LEV L + 1
00311 { 7, 5, NULL, NULL, 0 },
00312
00313
00314
00315 #define LI LEV + 1
00316 { 26, 0, insert_li, extract_li, PPC_OPERAND_RELATIVE | PPC_OPERAND_SIGNED },
00317
00318
00319
00320 #define LIA LI + 1
00321 { 26, 0, insert_li, extract_li, PPC_OPERAND_ABSOLUTE | PPC_OPERAND_SIGNED },
00322
00323
00324 #define LS LIA + 1
00325 { 2, 21, NULL, NULL, PPC_OPERAND_OPTIONAL },
00326
00327
00328 #define MB LS + 1
00329 #define MB_MASK (0x1f << 6)
00330 { 5, 6, NULL, NULL, 0 },
00331
00332
00333 #define ME MB + 1
00334 #define ME_MASK (0x1f << 1)
00335 { 5, 1, NULL, NULL, 0 },
00336
00337
00338
00339
00340
00341 #define MBE ME + 1
00342 { 5, 6, NULL, NULL, PPC_OPERAND_OPTIONAL | PPC_OPERAND_NEXT },
00343 { 32, 0, insert_mbe, extract_mbe, 0 },
00344
00345
00346
00347 #define MB6 MBE + 2
00348 #define ME6 MB6
00349 #define MB6_MASK (0x3f << 5)
00350 { 6, 5, insert_mb6, extract_mb6, 0 },
00351
00352
00353 #define MO MB6 + 1
00354 { 5, 21, NULL, NULL, PPC_OPERAND_OPTIONAL },
00355
00356
00357
00358 #define NB MO + 1
00359 { 6, 11, insert_nb, extract_nb, 0 },
00360
00361
00362
00363 #define NSI NB + 1
00364 { 16, 0, insert_nsi, extract_nsi,
00365 PPC_OPERAND_NEGATIVE | PPC_OPERAND_SIGNED },
00366
00367
00368 #define RA NSI + 1
00369 #define RA_MASK (0x1f << 16)
00370 { 5, 16, NULL, NULL, PPC_OPERAND_GPR },
00371
00372
00373 #define RA0 RA + 1
00374 { 5, 16, NULL, NULL, PPC_OPERAND_GPR_0 },
00375
00376
00377
00378 #define RAQ RA0 + 1
00379 { 5, 16, insert_raq, NULL, PPC_OPERAND_GPR_0 },
00380
00381
00382
00383
00384 #define RAL RAQ + 1
00385 { 5, 16, insert_ral, NULL, PPC_OPERAND_GPR_0 },
00386
00387
00388
00389 #define RAM RAL + 1
00390 { 5, 16, insert_ram, NULL, PPC_OPERAND_GPR_0 },
00391
00392
00393
00394
00395 #define RAS RAM + 1
00396 { 5, 16, insert_ras, NULL, PPC_OPERAND_GPR_0 },
00397
00398
00399 #define RAOPT RAS + 1
00400 { 5, 16, NULL, NULL, PPC_OPERAND_GPR | PPC_OPERAND_OPTIONAL },
00401
00402
00403 #define RB RAOPT + 1
00404 #define RB_MASK (0x1f << 11)
00405 { 5, 11, NULL, NULL, PPC_OPERAND_GPR },
00406
00407
00408
00409
00410 #define RBS RB + 1
00411 { 5, 1, insert_rbs, extract_rbs, PPC_OPERAND_FAKE },
00412
00413
00414
00415
00416 #define RS RBS + 1
00417 #define RT RS
00418 #define RT_MASK (0x1f << 21)
00419 { 5, 21, NULL, NULL, PPC_OPERAND_GPR },
00420
00421
00422
00423 #define RSQ RS + 1
00424 { 5, 21, insert_rsq, NULL, PPC_OPERAND_GPR_0 },
00425
00426
00427
00428 #define RTQ RSQ + 1
00429 { 5, 21, insert_rtq, NULL, PPC_OPERAND_GPR_0 },
00430
00431
00432 #define RSO RTQ + 1
00433 #define RTO RSO
00434 { 5, 21, NULL, NULL, PPC_OPERAND_GPR | PPC_OPERAND_OPTIONAL },
00435
00436
00437 #define SH RSO + 1
00438 #define SH_MASK (0x1f << 11)
00439 { 5, 11, NULL, NULL, 0 },
00440
00441
00442 #define SH6 SH + 1
00443 #define SH6_MASK ((0x1f << 11) | (1 << 1))
00444 { 6, 1, insert_sh6, extract_sh6, 0 },
00445
00446
00447 #define SHO SH6 + 1
00448 { 5, 11,NULL, NULL, PPC_OPERAND_OPTIONAL },
00449
00450
00451 #define SI SHO + 1
00452 { 16, 0, NULL, NULL, PPC_OPERAND_SIGNED },
00453
00454
00455
00456 #define SISIGNOPT SI + 1
00457 { 16, 0, NULL, NULL, PPC_OPERAND_SIGNED | PPC_OPERAND_SIGNOPT },
00458
00459
00460
00461 #define SPR SISIGNOPT + 1
00462 #define PMR SPR
00463 #define SPR_MASK (0x3ff << 11)
00464 { 10, 11, insert_spr, extract_spr, 0 },
00465
00466
00467 #define SPRBAT SPR + 1
00468 #define SPRBAT_MASK (0x3 << 17)
00469 { 2, 17, NULL, NULL, 0 },
00470
00471
00472 #define SPRG SPRBAT + 1
00473 #define SPRG_MASK (0x3 << 16)
00474 { 2, 16, NULL, NULL, 0 },
00475
00476
00477 #define SR SPRG + 1
00478 { 4, 16, NULL, NULL, 0 },
00479
00480
00481 #define STRM SR + 1
00482 #define STRM_MASK (0x3 << 21)
00483 { 2, 21, NULL, NULL, 0 },
00484
00485
00486 #define SV STRM + 1
00487 { 14, 2, NULL, NULL, 0 },
00488
00489
00490
00491 #define TBR SV + 1
00492 { 10, 11, insert_tbr, extract_tbr, PPC_OPERAND_OPTIONAL },
00493
00494
00495 #define TO TBR + 1
00496 #define TO_MASK (0x1f << 21)
00497 { 5, 21, NULL, NULL, 0 },
00498
00499
00500 #define U TO + 1
00501 { 4, 12, NULL, NULL, 0 },
00502
00503
00504 #define UI U + 1
00505 { 16, 0, NULL, NULL, 0 },
00506
00507
00508 #define VA UI + 1
00509 #define VA_MASK (0x1f << 16)
00510 { 5, 16, NULL, NULL, PPC_OPERAND_VR },
00511
00512
00513 #define VB VA + 1
00514 #define VB_MASK (0x1f << 11)
00515 { 5, 11, NULL, NULL, PPC_OPERAND_VR },
00516
00517
00518 #define VC VB + 1
00519 #define VC_MASK (0x1f << 6)
00520 { 5, 6, NULL, NULL, PPC_OPERAND_VR },
00521
00522
00523 #define VD VC + 1
00524 #define VS VD
00525 #define VD_MASK (0x1f << 21)
00526 { 5, 21, NULL, NULL, PPC_OPERAND_VR },
00527
00528
00529 #define SIMM VD + 1
00530 { 5, 16, NULL, NULL, PPC_OPERAND_SIGNED},
00531
00532
00533 #define UIMM SIMM + 1
00534 { 5, 16, NULL, NULL, 0 },
00535
00536
00537 #define SHB UIMM + 1
00538 { 4, 6, NULL, NULL, 0 },
00539
00540
00541 #define EVUIMM SHB + 1
00542 { 5, 11, NULL, NULL, 0 },
00543
00544
00545 #define EVUIMM_2 EVUIMM + 1
00546 { 32, 11, insert_ev2, extract_ev2, PPC_OPERAND_PARENS },
00547
00548
00549 #define EVUIMM_4 EVUIMM_2 + 1
00550 { 32, 11, insert_ev4, extract_ev4, PPC_OPERAND_PARENS },
00551
00552
00553 #define EVUIMM_8 EVUIMM_4 + 1
00554 { 32, 11, insert_ev8, extract_ev8, PPC_OPERAND_PARENS },
00555
00556
00557 #define WS EVUIMM_8 + 1
00558 #define WS_MASK (0x7 << 11)
00559 { 3, 11, NULL, NULL, 0 },
00560
00561
00562 #define MTMSRD_L WS + 1
00563 { 1, 16, NULL, NULL, PPC_OPERAND_OPTIONAL },
00564
00565 };
00566
00567
00568
00569
00570
00571
00572
00573
00574
00575 static unsigned long
00576 insert_bat (unsigned long insn,
00577 long value ATTRIBUTE_UNUSED,
00578 int dialect ATTRIBUTE_UNUSED,
00579 const char **errmsg ATTRIBUTE_UNUSED)
00580 {
00581 return insn | (((insn >> 21) & 0x1f) << 16);
00582 }
00583
00584 static long
00585 extract_bat (unsigned long insn,
00586 int dialect ATTRIBUTE_UNUSED,
00587 int *invalid)
00588 {
00589 if (((insn >> 21) & 0x1f) != ((insn >> 16) & 0x1f))
00590 *invalid = 1;
00591 return 0;
00592 }
00593
00594
00595
00596
00597
00598
00599
00600 static unsigned long
00601 insert_bba (unsigned long insn,
00602 long value ATTRIBUTE_UNUSED,
00603 int dialect ATTRIBUTE_UNUSED,
00604 const char **errmsg ATTRIBUTE_UNUSED)
00605 {
00606 return insn | (((insn >> 16) & 0x1f) << 11);
00607 }
00608
00609 static long
00610 extract_bba (unsigned long insn,
00611 int dialect ATTRIBUTE_UNUSED,
00612 int *invalid)
00613 {
00614 if (((insn >> 16) & 0x1f) != ((insn >> 11) & 0x1f))
00615 *invalid = 1;
00616 return 0;
00617 }
00618
00619
00620
00621
00622 static unsigned long
00623 insert_bd (unsigned long insn,
00624 long value,
00625 int dialect ATTRIBUTE_UNUSED,
00626 const char **errmsg ATTRIBUTE_UNUSED)
00627 {
00628 return insn | (value & 0xfffc);
00629 }
00630
00631 static long
00632 extract_bd (unsigned long insn,
00633 int dialect ATTRIBUTE_UNUSED,
00634 int *invalid ATTRIBUTE_UNUSED)
00635 {
00636 return ((insn & 0xfffc) ^ 0x8000) - 0x8000;
00637 }
00638
00639
00640
00641
00642
00643
00644
00645
00646
00647
00648
00649
00650
00651
00652 static unsigned long
00653 insert_bdm (unsigned long insn,
00654 long value,
00655 int dialect,
00656 const char **errmsg ATTRIBUTE_UNUSED)
00657 {
00658 if ((dialect & PPC_OPCODE_POWER4) == 0)
00659 {
00660 if ((value & 0x8000) != 0)
00661 insn |= 1 << 21;
00662 }
00663 else
00664 {
00665 if ((insn & (0x14 << 21)) == (0x04 << 21))
00666 insn |= 0x02 << 21;
00667 else if ((insn & (0x14 << 21)) == (0x10 << 21))
00668 insn |= 0x08 << 21;
00669 }
00670 return insn | (value & 0xfffc);
00671 }
00672
00673 static long
00674 extract_bdm (unsigned long insn,
00675 int dialect,
00676 int *invalid)
00677 {
00678 if ((dialect & PPC_OPCODE_POWER4) == 0)
00679 {
00680 if (((insn & (1 << 21)) == 0) != ((insn & (1 << 15)) == 0))
00681 *invalid = 1;
00682 }
00683 else
00684 {
00685 if ((insn & (0x17 << 21)) != (0x06 << 21)
00686 && (insn & (0x1d << 21)) != (0x18 << 21))
00687 *invalid = 1;
00688 }
00689
00690 return ((insn & 0xfffc) ^ 0x8000) - 0x8000;
00691 }
00692
00693
00694
00695
00696
00697 static unsigned long
00698 insert_bdp (unsigned long insn,
00699 long value,
00700 int dialect,
00701 const char **errmsg ATTRIBUTE_UNUSED)
00702 {
00703 if ((dialect & PPC_OPCODE_POWER4) == 0)
00704 {
00705 if ((value & 0x8000) == 0)
00706 insn |= 1 << 21;
00707 }
00708 else
00709 {
00710 if ((insn & (0x14 << 21)) == (0x04 << 21))
00711 insn |= 0x03 << 21;
00712 else if ((insn & (0x14 << 21)) == (0x10 << 21))
00713 insn |= 0x09 << 21;
00714 }
00715 return insn | (value & 0xfffc);
00716 }
00717
00718 static long
00719 extract_bdp (unsigned long insn,
00720 int dialect,
00721 int *invalid)
00722 {
00723 if ((dialect & PPC_OPCODE_POWER4) == 0)
00724 {
00725 if (((insn & (1 << 21)) == 0) == ((insn & (1 << 15)) == 0))
00726 *invalid = 1;
00727 }
00728 else
00729 {
00730 if ((insn & (0x17 << 21)) != (0x07 << 21)
00731 && (insn & (0x1d << 21)) != (0x19 << 21))
00732 *invalid = 1;
00733 }
00734
00735 return ((insn & 0xfffc) ^ 0x8000) - 0x8000;
00736 }
00737
00738
00739
00740 static int
00741 valid_bo (long value, int dialect)
00742 {
00743 if ((dialect & PPC_OPCODE_POWER4) == 0)
00744 {
00745
00746
00747
00748
00749
00750
00751
00752
00753 switch (value & 0x14)
00754 {
00755 default:
00756 case 0:
00757 return 1;
00758 case 0x4:
00759 return (value & 0x2) == 0;
00760 case 0x10:
00761 return (value & 0x8) == 0;
00762 case 0x14:
00763 return value == 0x14;
00764 }
00765 }
00766 else
00767 {
00768
00769
00770
00771
00772
00773
00774
00775
00776
00777
00778
00779
00780 if ((value & 0x14) == 0)
00781 return (value & 0x1) == 0;
00782 else if ((value & 0x14) == 0x14)
00783 return value == 0x14;
00784 else
00785 return 1;
00786 }
00787 }
00788
00789
00790
00791
00792 static unsigned long
00793 insert_bo (unsigned long insn,
00794 long value,
00795 int dialect,
00796 const char **errmsg)
00797 {
00798 if (!valid_bo (value, dialect))
00799 *errmsg = _("invalid conditional option");
00800 return insn | ((value & 0x1f) << 21);
00801 }
00802
00803 static long
00804 extract_bo (unsigned long insn,
00805 int dialect,
00806 int *invalid)
00807 {
00808 long value;
00809
00810 value = (insn >> 21) & 0x1f;
00811 if (!valid_bo (value, dialect))
00812 *invalid = 1;
00813 return value;
00814 }
00815
00816
00817
00818
00819
00820 static unsigned long
00821 insert_boe (unsigned long insn,
00822 long value,
00823 int dialect,
00824 const char **errmsg)
00825 {
00826 if (!valid_bo (value, dialect))
00827 *errmsg = _("invalid conditional option");
00828 else if ((value & 1) != 0)
00829 *errmsg = _("attempt to set y bit when using + or - modifier");
00830
00831 return insn | ((value & 0x1f) << 21);
00832 }
00833
00834 static long
00835 extract_boe (unsigned long insn,
00836 int dialect,
00837 int *invalid)
00838 {
00839 long value;
00840
00841 value = (insn >> 21) & 0x1f;
00842 if (!valid_bo (value, dialect))
00843 *invalid = 1;
00844 return value & 0x1e;
00845 }
00846
00847
00848
00849
00850 static unsigned long
00851 insert_dq (unsigned long insn,
00852 long value,
00853 int dialect ATTRIBUTE_UNUSED,
00854 const char **errmsg)
00855 {
00856 if ((value & 0xf) != 0)
00857 *errmsg = _("offset not a multiple of 16");
00858 return insn | (value & 0xfff0);
00859 }
00860
00861 static long
00862 extract_dq (unsigned long insn,
00863 int dialect ATTRIBUTE_UNUSED,
00864 int *invalid ATTRIBUTE_UNUSED)
00865 {
00866 return ((insn & 0xfff0) ^ 0x8000) - 0x8000;
00867 }
00868
00869 static unsigned long
00870 insert_ev2 (unsigned long insn,
00871 long value,
00872 int dialect ATTRIBUTE_UNUSED,
00873 const char **errmsg)
00874 {
00875 if ((value & 1) != 0)
00876 *errmsg = _("offset not a multiple of 2");
00877 if ((value > 62) != 0)
00878 *errmsg = _("offset greater than 62");
00879 return insn | ((value & 0x3e) << 10);
00880 }
00881
00882 static long
00883 extract_ev2 (unsigned long insn,
00884 int dialect ATTRIBUTE_UNUSED,
00885 int *invalid ATTRIBUTE_UNUSED)
00886 {
00887 return (insn >> 10) & 0x3e;
00888 }
00889
00890 static unsigned long
00891 insert_ev4 (unsigned long insn,
00892 long value,
00893 int dialect ATTRIBUTE_UNUSED,
00894 const char **errmsg)
00895 {
00896 if ((value & 3) != 0)
00897 *errmsg = _("offset not a multiple of 4");
00898 if ((value > 124) != 0)
00899 *errmsg = _("offset greater than 124");
00900 return insn | ((value & 0x7c) << 9);
00901 }
00902
00903 static long
00904 extract_ev4 (unsigned long insn,
00905 int dialect ATTRIBUTE_UNUSED,
00906 int *invalid ATTRIBUTE_UNUSED)
00907 {
00908 return (insn >> 9) & 0x7c;
00909 }
00910
00911 static unsigned long
00912 insert_ev8 (unsigned long insn,
00913 long value,
00914 int dialect ATTRIBUTE_UNUSED,
00915 const char **errmsg)
00916 {
00917 if ((value & 7) != 0)
00918 *errmsg = _("offset not a multiple of 8");
00919 if ((value > 248) != 0)
00920 *errmsg = _("offset greater than 248");
00921 return insn | ((value & 0xf8) << 8);
00922 }
00923
00924 static long
00925 extract_ev8 (unsigned long insn,
00926 int dialect ATTRIBUTE_UNUSED,
00927 int *invalid ATTRIBUTE_UNUSED)
00928 {
00929 return (insn >> 8) & 0xf8;
00930 }
00931
00932
00933
00934
00935 static unsigned long
00936 insert_ds (unsigned long insn,
00937 long value,
00938 int dialect ATTRIBUTE_UNUSED,
00939 const char **errmsg)
00940 {
00941 if ((value & 3) != 0)
00942 *errmsg = _("offset not a multiple of 4");
00943 return insn | (value & 0xfffc);
00944 }
00945
00946 static long
00947 extract_ds (unsigned long insn,
00948 int dialect ATTRIBUTE_UNUSED,
00949 int *invalid ATTRIBUTE_UNUSED)
00950 {
00951 return ((insn & 0xfffc) ^ 0x8000) - 0x8000;
00952 }
00953
00954
00955
00956 static unsigned long
00957 insert_de (unsigned long insn,
00958 long value,
00959 int dialect ATTRIBUTE_UNUSED,
00960 const char **errmsg)
00961 {
00962 if (value > 2047 || value < -2048)
00963 *errmsg = _("offset not between -2048 and 2047");
00964 return insn | ((value << 4) & 0xfff0);
00965 }
00966
00967 static long
00968 extract_de (unsigned long insn,
00969 int dialect ATTRIBUTE_UNUSED,
00970 int *invalid ATTRIBUTE_UNUSED)
00971 {
00972 return (insn & 0xfff0) >> 4;
00973 }
00974
00975
00976
00977 static unsigned long
00978 insert_des (unsigned long insn,
00979 long value,
00980 int dialect ATTRIBUTE_UNUSED,
00981 const char **errmsg)
00982 {
00983 if (value > 8191 || value < -8192)
00984 *errmsg = _("offset not between -8192 and 8191");
00985 else if ((value & 3) != 0)
00986 *errmsg = _("offset not a multiple of 4");
00987 return insn | ((value << 2) & 0xfff0);
00988 }
00989
00990 static long
00991 extract_des (unsigned long insn,
00992 int dialect ATTRIBUTE_UNUSED,
00993 int *invalid ATTRIBUTE_UNUSED)
00994 {
00995 return (((insn >> 2) & 0x3ffc) ^ 0x2000) - 0x2000;
00996 }
00997
00998
00999
01000 static unsigned long
01001 insert_fxm (unsigned long insn,
01002 long value,
01003 int dialect,
01004 const char **errmsg)
01005 {
01006
01007
01008 if ((insn & (1 << 20)) != 0)
01009 {
01010 if (value == 0 || (value & -value) != value)
01011 {
01012 *errmsg = _("invalid mask field");
01013 value = 0;
01014 }
01015 }
01016
01017
01018
01019
01020
01021 else if (value == 0)
01022 ;
01023
01024
01025
01026
01027
01028
01029 else if ((value & -value) == value
01030 && ((dialect & PPC_OPCODE_POWER4) != 0
01031 || ((dialect & PPC_OPCODE_ANY) != 0
01032 && (insn & (0x3ff << 1)) == 19 << 1)))
01033 insn |= 1 << 20;
01034
01035
01036 else if ((insn & (0x3ff << 1)) == 19 << 1)
01037 {
01038 *errmsg = _("ignoring invalid mfcr mask");
01039 value = 0;
01040 }
01041
01042 return insn | ((value & 0xff) << 12);
01043 }
01044
01045 static long
01046 extract_fxm (unsigned long insn,
01047 int dialect ATTRIBUTE_UNUSED,
01048 int *invalid)
01049 {
01050 long mask = (insn >> 12) & 0xff;
01051
01052
01053 if ((insn & (1 << 20)) != 0)
01054 {
01055
01056 if (mask == 0 || (mask & -mask) != mask)
01057 *invalid = 1;
01058 }
01059
01060
01061 else if ((insn & (0x3ff << 1)) == 19 << 1)
01062 {
01063 if (mask != 0)
01064 *invalid = 1;
01065 }
01066
01067 return mask;
01068 }
01069
01070
01071
01072
01073 static unsigned long
01074 insert_li (unsigned long insn,
01075 long value,
01076 int dialect ATTRIBUTE_UNUSED,
01077 const char **errmsg)
01078 {
01079 if ((value & 3) != 0)
01080 *errmsg = _("ignoring least significant bits in branch offset");
01081 return insn | (value & 0x3fffffc);
01082 }
01083
01084 static long
01085 extract_li (unsigned long insn,
01086 int dialect ATTRIBUTE_UNUSED,
01087 int *invalid ATTRIBUTE_UNUSED)
01088 {
01089 return ((insn & 0x3fffffc) ^ 0x2000000) - 0x2000000;
01090 }
01091
01092
01093
01094
01095
01096
01097 static unsigned long
01098 insert_mbe (unsigned long insn,
01099 long value,
01100 int dialect ATTRIBUTE_UNUSED,
01101 const char **errmsg)
01102 {
01103 unsigned long uval, mask;
01104 int mb, me, mx, count, last;
01105
01106 uval = value;
01107
01108 if (uval == 0)
01109 {
01110 *errmsg = _("illegal bitmask");
01111 return insn;
01112 }
01113
01114 mb = 0;
01115 me = 32;
01116 if ((uval & 1) != 0)
01117 last = 1;
01118 else
01119 last = 0;
01120 count = 0;
01121
01122
01123
01124
01125
01126 for (mx = 0, mask = 1L << 31; mx < 32; ++mx, mask >>= 1)
01127 {
01128 if ((uval & mask) && !last)
01129 {
01130 ++count;
01131 mb = mx;
01132 last = 1;
01133 }
01134 else if (!(uval & mask) && last)
01135 {
01136 ++count;
01137 me = mx;
01138 last = 0;
01139 }
01140 }
01141 if (me == 0)
01142 me = 32;
01143
01144 if (count != 2 && (count != 0 || ! last))
01145 *errmsg = _("illegal bitmask");
01146
01147 return insn | (mb << 6) | ((me - 1) << 1);
01148 }
01149
01150 static long
01151 extract_mbe (unsigned long insn,
01152 int dialect ATTRIBUTE_UNUSED,
01153 int *invalid)
01154 {
01155 long ret;
01156 int mb, me;
01157 int i;
01158
01159 *invalid = 1;
01160
01161 mb = (insn >> 6) & 0x1f;
01162 me = (insn >> 1) & 0x1f;
01163 if (mb < me + 1)
01164 {
01165 ret = 0;
01166 for (i = mb; i <= me; i++)
01167 ret |= 1L << (31 - i);
01168 }
01169 else if (mb == me + 1)
01170 ret = ~0;
01171 else
01172 {
01173 ret = ~0;
01174 for (i = me + 1; i < mb; i++)
01175 ret &= ~(1L << (31 - i));
01176 }
01177 return ret;
01178 }
01179
01180
01181
01182
01183 static unsigned long
01184 insert_mb6 (unsigned long insn,
01185 long value,
01186 int dialect ATTRIBUTE_UNUSED,
01187 const char **errmsg ATTRIBUTE_UNUSED)
01188 {
01189 return insn | ((value & 0x1f) << 6) | (value & 0x20);
01190 }
01191
01192 static long
01193 extract_mb6 (unsigned long insn,
01194 int dialect ATTRIBUTE_UNUSED,
01195 int *invalid ATTRIBUTE_UNUSED)
01196 {
01197 return ((insn >> 6) & 0x1f) | (insn & 0x20);
01198 }
01199
01200
01201
01202
01203 static unsigned long
01204 insert_nb (unsigned long insn,
01205 long value,
01206 int dialect ATTRIBUTE_UNUSED,
01207 const char **errmsg)
01208 {
01209 if (value < 0 || value > 32)
01210 *errmsg = _("value out of range");
01211 if (value == 32)
01212 value = 0;
01213 return insn | ((value & 0x1f) << 11);
01214 }
01215
01216 static long
01217 extract_nb (unsigned long insn,
01218 int dialect ATTRIBUTE_UNUSED,
01219 int *invalid ATTRIBUTE_UNUSED)
01220 {
01221 long ret;
01222
01223 ret = (insn >> 11) & 0x1f;
01224 if (ret == 0)
01225 ret = 32;
01226 return ret;
01227 }
01228
01229
01230
01231
01232
01233
01234 static unsigned long
01235 insert_nsi (unsigned long insn,
01236 long value,
01237 int dialect ATTRIBUTE_UNUSED,
01238 const char **errmsg ATTRIBUTE_UNUSED)
01239 {
01240 return insn | (-value & 0xffff);
01241 }
01242
01243 static long
01244 extract_nsi (unsigned long insn,
01245 int dialect ATTRIBUTE_UNUSED,
01246 int *invalid)
01247 {
01248 *invalid = 1;
01249 return -(((insn & 0xffff) ^ 0x8000) - 0x8000);
01250 }
01251
01252
01253
01254
01255
01256 static unsigned long
01257 insert_ral (unsigned long insn,
01258 long value,
01259 int dialect ATTRIBUTE_UNUSED,
01260 const char **errmsg)
01261 {
01262 if (value == 0
01263 || (unsigned long) value == ((insn >> 21) & 0x1f))
01264 *errmsg = "invalid register operand when updating";
01265 return insn | ((value & 0x1f) << 16);
01266 }
01267
01268
01269
01270
01271 static unsigned long
01272 insert_ram (unsigned long insn,
01273 long value,
01274 int dialect ATTRIBUTE_UNUSED,
01275 const char **errmsg)
01276 {
01277 if ((unsigned long) value >= ((insn >> 21) & 0x1f))
01278 *errmsg = _("index register in load range");
01279 return insn | ((value & 0x1f) << 16);
01280 }
01281
01282
01283
01284
01285 static unsigned long
01286 insert_raq (unsigned long insn,
01287 long value,
01288 int dialect ATTRIBUTE_UNUSED,
01289 const char **errmsg)
01290 {
01291 long rtvalue = (insn & RT_MASK) >> 21;
01292
01293 if (value == rtvalue)
01294 *errmsg = _("source and target register operands must be different");
01295 return insn | ((value & 0x1f) << 16);
01296 }
01297
01298
01299
01300
01301
01302 static unsigned long
01303 insert_ras (unsigned long insn,
01304 long value,
01305 int dialect ATTRIBUTE_UNUSED,
01306 const char **errmsg)
01307 {
01308 if (value == 0)
01309 *errmsg = _("invalid register operand when updating");
01310 return insn | ((value & 0x1f) << 16);
01311 }
01312
01313
01314
01315
01316
01317
01318
01319 static unsigned long
01320 insert_rbs (unsigned long insn,
01321 long value ATTRIBUTE_UNUSED,
01322 int dialect ATTRIBUTE_UNUSED,
01323 const char **errmsg ATTRIBUTE_UNUSED)
01324 {
01325 return insn | (((insn >> 21) & 0x1f) << 11);
01326 }
01327
01328 static long
01329 extract_rbs (unsigned long insn,
01330 int dialect ATTRIBUTE_UNUSED,
01331 int *invalid)
01332 {
01333 if (((insn >> 21) & 0x1f) != ((insn >> 11) & 0x1f))
01334 *invalid = 1;
01335 return 0;
01336 }
01337
01338
01339
01340
01341 static unsigned long
01342 insert_rtq (unsigned long insn,
01343 long value,
01344 int dialect ATTRIBUTE_UNUSED,
01345 const char **errmsg)
01346 {
01347 if ((value & 1) != 0)
01348 *errmsg = _("target register operand must be even");
01349 return insn | ((value & 0x1f) << 21);
01350 }
01351
01352
01353
01354
01355 static unsigned long
01356 insert_rsq (unsigned long insn,
01357 long value ATTRIBUTE_UNUSED,
01358 int dialect ATTRIBUTE_UNUSED,
01359 const char **errmsg)
01360 {
01361 if ((value & 1) != 0)
01362 *errmsg = _("source register operand must be even");
01363 return insn | ((value & 0x1f) << 21);
01364 }
01365
01366
01367
01368 static unsigned long
01369 insert_sh6 (unsigned long insn,
01370 long value,
01371 int dialect ATTRIBUTE_UNUSED,
01372 const char **errmsg ATTRIBUTE_UNUSED)
01373 {
01374 return insn | ((value & 0x1f) << 11) | ((value & 0x20) >> 4);
01375 }
01376
01377 static long
01378 extract_sh6 (unsigned long insn,
01379 int dialect ATTRIBUTE_UNUSED,
01380 int *invalid ATTRIBUTE_UNUSED)
01381 {
01382 return ((insn >> 11) & 0x1f) | ((insn << 4) & 0x20);
01383 }
01384
01385
01386
01387
01388 static unsigned long
01389 insert_spr (unsigned long insn,
01390 long value,
01391 int dialect ATTRIBUTE_UNUSED,
01392 const char **errmsg ATTRIBUTE_UNUSED)
01393 {
01394 return insn | ((value & 0x1f) << 16) | ((value & 0x3e0) << 6);
01395 }
01396
01397 static long
01398 extract_spr (unsigned long insn,
01399 int dialect ATTRIBUTE_UNUSED,
01400 int *invalid ATTRIBUTE_UNUSED)
01401 {
01402 return ((insn >> 16) & 0x1f) | ((insn >> 6) & 0x3e0);
01403 }
01404
01405
01406
01407
01408
01409
01410
01411
01412
01413 #define TB (268)
01414
01415 static unsigned long
01416 insert_tbr (unsigned long insn,
01417 long value,
01418 int dialect ATTRIBUTE_UNUSED,
01419 const char **errmsg ATTRIBUTE_UNUSED)
01420 {
01421 if (value == 0)
01422 value = TB;
01423 return insn | ((value & 0x1f) << 16) | ((value & 0x3e0) << 6);
01424 }
01425
01426 static long
01427 extract_tbr (unsigned long insn,
01428 int dialect ATTRIBUTE_UNUSED,
01429 int *invalid ATTRIBUTE_UNUSED)
01430 {
01431 long ret;
01432
01433 ret = ((insn >> 16) & 0x1f) | ((insn >> 6) & 0x3e0);
01434 if (ret == TB)
01435 ret = 0;
01436 return ret;
01437 }
01438
01439
01440
01441
01442 #define OP(x) ((((unsigned long)(x)) & 0x3f) << 26)
01443 #define OP_MASK OP (0x3f)
01444
01445
01446
01447
01448 #define OPTO(x,to) (OP (x) | ((((unsigned long)(to)) & 0x1f) << 21))
01449 #define OPTO_MASK (OP_MASK | TO_MASK)
01450
01451
01452
01453
01454 #define OPL(x,l) (OP (x) | ((((unsigned long)(l)) & 1) << 21))
01455 #define OPL_MASK OPL (0x3f,1)
01456
01457
01458 #define A(op, xop, rc) (OP (op) | ((((unsigned long)(xop)) & 0x1f) << 1) | (((unsigned long)(rc)) & 1))
01459 #define A_MASK A (0x3f, 0x1f, 1)
01460
01461
01462 #define AFRB_MASK (A_MASK | FRB_MASK)
01463
01464
01465 #define AFRC_MASK (A_MASK | FRC_MASK)
01466
01467
01468 #define AFRAFRC_MASK (A_MASK | FRA_MASK | FRC_MASK)
01469
01470
01471 #define B(op, aa, lk) (OP (op) | ((((unsigned long)(aa)) & 1) << 1) | ((lk) & 1))
01472 #define B_MASK B (0x3f, 1, 1)
01473
01474
01475 #define BBO(op, bo, aa, lk) (B ((op), (aa), (lk)) | ((((unsigned long)(bo)) & 0x1f) << 21))
01476 #define BBO_MASK BBO (0x3f, 0x1f, 1, 1)
01477
01478
01479
01480
01481 #define Y_MASK (((unsigned long) 1) << 21)
01482 #define AT1_MASK (((unsigned long) 3) << 21)
01483 #define AT2_MASK (((unsigned long) 9) << 21)
01484 #define BBOY_MASK (BBO_MASK &~ Y_MASK)
01485 #define BBOAT_MASK (BBO_MASK &~ AT1_MASK)
01486
01487
01488
01489 #define BBOCB(op, bo, cb, aa, lk) \
01490 (BBO ((op), (bo), (aa), (lk)) | ((((unsigned long)(cb)) & 0x3) << 16))
01491 #define BBOCB_MASK BBOCB (0x3f, 0x1f, 0x3, 1, 1)
01492
01493
01494 #define BBOYCB_MASK (BBOCB_MASK &~ Y_MASK)
01495 #define BBOATCB_MASK (BBOCB_MASK &~ AT1_MASK)
01496 #define BBOAT2CB_MASK (BBOCB_MASK &~ AT2_MASK)
01497
01498
01499 #define BBOYBI_MASK (BBOYCB_MASK | BI_MASK)
01500 #define BBOATBI_MASK (BBOAT2CB_MASK | BI_MASK)
01501
01502
01503 #define CTX(op, xop) (OP (op) | (((unsigned long)(xop)) & 0x7))
01504 #define CTX_MASK CTX(0x3f, 0x7)
01505
01506
01507 #define UCTX(op, xop) (OP (op) | (((unsigned long)(xop)) & 0x1f))
01508 #define UCTX_MASK UCTX(0x3f, 0x1f)
01509
01510
01511 #define DRA_MASK (OP_MASK | RA_MASK)
01512
01513
01514 #define DSO(op, xop) (OP (op) | ((xop) & 0x3))
01515 #define DS_MASK DSO (0x3f, 3)
01516
01517
01518 #define DEO(op, xop) (OP (op) | ((xop) & 0xf))
01519 #define DE_MASK DEO (0x3e, 0xf)
01520
01521
01522 #define EVSEL(op, xop) (OP (op) | (((unsigned long)(xop)) & 0xff) << 3)
01523 #define EVSEL_MASK EVSEL(0x3f, 0xff)
01524
01525
01526 #define M(op, rc) (OP (op) | ((rc) & 1))
01527 #define M_MASK M (0x3f, 1)
01528
01529
01530 #define MME(op, me, rc) (M ((op), (rc)) | ((((unsigned long)(me)) & 0x1f) << 1))
01531
01532
01533 #define MMBME_MASK (M_MASK | MB_MASK | ME_MASK)
01534
01535
01536 #define MSHME_MASK (M_MASK | SH_MASK | ME_MASK)
01537
01538
01539 #define MD(op, xop, rc) (OP (op) | ((((unsigned long)(xop)) & 0x7) << 2) | ((rc) & 1))
01540 #define MD_MASK MD (0x3f, 0x7, 1)
01541
01542
01543 #define MDMB_MASK (MD_MASK | MB6_MASK)
01544
01545
01546 #define MDSH_MASK (MD_MASK | SH6_MASK)
01547
01548
01549 #define MDS(op, xop, rc) (OP (op) | ((((unsigned long)(xop)) & 0xf) << 1) | ((rc) & 1))
01550 #define MDS_MASK MDS (0x3f, 0xf, 1)
01551
01552
01553 #define MDSMB_MASK (MDS_MASK | MB6_MASK)
01554
01555
01556 #define SC(op, sa, lk) (OP (op) | ((((unsigned long)(sa)) & 1) << 1) | ((lk) & 1))
01557 #define SC_MASK (OP_MASK | (((unsigned long)0x3ff) << 16) | (((unsigned long)1) << 1) | 1)
01558
01559
01560 #define VX(op, xop) (OP (op) | (((unsigned long)(xop)) & 0x7ff))
01561
01562
01563 #define VX_MASK VX(0x3f, 0x7ff)
01564
01565
01566 #define VXA(op, xop) (OP (op) | (((unsigned long)(xop)) & 0x03f))
01567
01568
01569 #define VXA_MASK VXA(0x3f, 0x3f)
01570
01571
01572 #define VXR(op, xop, rc) (OP (op) | (((rc) & 1) << 10) | (((unsigned long)(xop)) & 0x3ff))
01573
01574
01575 #define VXR_MASK VXR(0x3f, 0x3ff, 1)
01576
01577
01578 #define X(op, xop) (OP (op) | ((((unsigned long)(xop)) & 0x3ff) << 1))
01579
01580
01581 #define XRC(op, xop, rc) (X ((op), (xop)) | ((rc) & 1))
01582
01583
01584 #define X_MASK XRC (0x3f, 0x3ff, 1)
01585
01586
01587 #define XRA_MASK (X_MASK | RA_MASK)
01588
01589
01590 #define XRB_MASK (X_MASK | RB_MASK)
01591
01592
01593 #define XRT_MASK (X_MASK | RT_MASK)
01594
01595
01596 #define XRARB_MASK (X_MASK | RA_MASK | RB_MASK)
01597
01598
01599 #define XRLARB_MASK (XRARB_MASK & ~((unsigned long) 1 << 16))
01600
01601
01602 #define XRTRA_MASK (X_MASK | RT_MASK | RA_MASK)
01603
01604
01605 #define XRTLRA_MASK (XRTRA_MASK & ~((unsigned long) 1 << 21))
01606
01607
01608 #define XOPL(op, xop, l) (X ((op), (xop)) | ((((unsigned long)(l)) & 1) << 21))
01609
01610
01611 #define XCMP_MASK (X_MASK | (((unsigned long)1) << 22))
01612
01613
01614
01615 #define XCMPL_MASK (XCMP_MASK | (((unsigned long)1) << 21))
01616
01617
01618 #define XTO(op, xop, to) (X ((op), (xop)) | ((((unsigned long)(to)) & 0x1f) << 21))
01619 #define XTO_MASK (X_MASK | TO_MASK)
01620
01621
01622 #define XTLB(op, xop, sh) (X ((op), (xop)) | ((((unsigned long)(sh)) & 0x1f) << 11))
01623 #define XTLB_MASK (X_MASK | SH_MASK)
01624
01625
01626 #define XSYNC(op, xop, l) (X ((op), (xop)) | ((((unsigned long)(l)) & 3) << 21))
01627
01628
01629 #define XSYNC_MASK (0xff9fffff)
01630
01631
01632 #define XDSS(op, xop, a) (X ((op), (xop)) | ((((unsigned long)(a)) & 1) << 25))
01633 #define XDSS_MASK XDSS(0x3f, 0x3ff, 1)
01634
01635
01636 #define XFL(op, xop, rc) (OP (op) | ((((unsigned long)(xop)) & 0x3ff) << 1) | (((unsigned long)(rc)) & 1))
01637 #define XFL_MASK (XFL (0x3f, 0x3ff, 1) | (((unsigned long)1) << 25) | (((unsigned long)1) << 16))
01638
01639
01640 #define XISEL(op, xop) (OP (op) | ((((unsigned long)(xop)) & 0x1f) << 1))
01641 #define XISEL_MASK XISEL(0x3f, 0x1f)
01642
01643
01644 #define XL(op, xop) (OP (op) | ((((unsigned long)(xop)) & 0x3ff) << 1))
01645
01646
01647 #define XLLK(op, xop, lk) (XL ((op), (xop)) | ((lk) & 1))
01648
01649
01650 #define XL_MASK XLLK (0x3f, 0x3ff, 1)
01651
01652
01653 #define XLO(op, bo, xop, lk) \
01654 (XLLK ((op), (xop), (lk)) | ((((unsigned long)(bo)) & 0x1f) << 21))
01655 #define XLO_MASK (XL_MASK | BO_MASK)
01656
01657
01658
01659 #define XLYLK(op, xop, y, lk) (XLLK ((op), (xop), (lk)) | ((((unsigned long)(y)) & 1) << 21))
01660 #define XLYLK_MASK (XL_MASK | Y_MASK)
01661
01662
01663
01664 #define XLOCB(op, bo, cb, xop, lk) \
01665 (XLO ((op), (bo), (xop), (lk)) | ((((unsigned long)(cb)) & 3) << 16))
01666 #define XLOCB_MASK XLOCB (0x3f, 0x1f, 0x3, 0x3ff, 1)
01667
01668
01669 #define XLBB_MASK (XL_MASK | BB_MASK)
01670 #define XLYBB_MASK (XLYLK_MASK | BB_MASK)
01671 #define XLBOCBBB_MASK (XLOCB_MASK | BB_MASK)
01672
01673
01674 #define XLBH_MASK (XL_MASK | (0x1c << 11))
01675
01676
01677 #define XLBOBB_MASK (XL_MASK | BO_MASK | BB_MASK)
01678
01679
01680 #define XLBOBIBB_MASK (XL_MASK | BO_MASK | BI_MASK | BB_MASK)
01681
01682
01683 #define XO(op, xop, oe, rc) \
01684 (OP (op) | ((((unsigned long)(xop)) & 0x1ff) << 1) | ((((unsigned long)(oe)) & 1) << 10) | (((unsigned long)(rc)) & 1))
01685 #define XO_MASK XO (0x3f, 0x1ff, 1, 1)
01686
01687
01688 #define XORB_MASK (XO_MASK | RB_MASK)
01689
01690
01691 #define XS(op, xop, rc) (OP (op) | ((((unsigned long)(xop)) & 0x1ff) << 2) | (((unsigned long)(rc)) & 1))
01692 #define XS_MASK XS (0x3f, 0x1ff, 1)
01693
01694
01695 #define XFXFXM_MASK (X_MASK | (1 << 11) | (1 << 20))
01696
01697
01698 #define XFXM(op, xop, fxm, p4) \
01699 (X ((op), (xop)) | ((((unsigned long)(fxm)) & 0xff) << 12) \
01700 | ((unsigned long)(p4) << 20))
01701
01702
01703 #define XSPR(op, xop, spr) \
01704 (X ((op), (xop)) | ((((unsigned long)(spr)) & 0x1f) << 16) | ((((unsigned long)(spr)) & 0x3e0) << 6))
01705 #define XSPR_MASK (X_MASK | SPR_MASK)
01706
01707
01708
01709 #define XSPRBAT_MASK (XSPR_MASK &~ SPRBAT_MASK)
01710
01711
01712
01713 #define XSPRG_MASK (XSPR_MASK &~ SPRG_MASK)
01714
01715
01716 #define XE_MASK (0xffff7fff)
01717
01718
01719 #define XUC(op, xop) (OP (op) | (((unsigned long)(xop)) & 0x1f))
01720 #define XUC_MASK XUC(0x3f, 0x1f)
01721
01722
01723 #define BODNZF (0x0)
01724 #define BODNZFP (0x1)
01725 #define BODZF (0x2)
01726 #define BODZFP (0x3)
01727 #define BODNZT (0x8)
01728 #define BODNZTP (0x9)
01729 #define BODZT (0xa)
01730 #define BODZTP (0xb)
01731
01732 #define BOF (0x4)
01733 #define BOFP (0x5)
01734 #define BOFM4 (0x6)
01735 #define BOFP4 (0x7)
01736 #define BOT (0xc)
01737 #define BOTP (0xd)
01738 #define BOTM4 (0xe)
01739 #define BOTP4 (0xf)
01740
01741 #define BODNZ (0x10)
01742 #define BODNZP (0x11)
01743 #define BODZ (0x12)
01744 #define BODZP (0x13)
01745 #define BODNZM4 (0x18)
01746 #define BODNZP4 (0x19)
01747 #define BODZM4 (0x1a)
01748 #define BODZP4 (0x1b)
01749
01750 #define BOU (0x14)
01751
01752
01753
01754 #define CBLT (0)
01755 #define CBGT (1)
01756 #define CBEQ (2)
01757 #define CBSO (3)
01758
01759
01760 #define TOLGT (0x1)
01761 #define TOLLT (0x2)
01762 #define TOEQ (0x4)
01763 #define TOLGE (0x5)
01764 #define TOLNL (0x5)
01765 #define TOLLE (0x6)
01766 #define TOLNG (0x6)
01767 #define TOGT (0x8)
01768 #define TOGE (0xc)
01769 #define TONL (0xc)
01770 #define TOLT (0x10)
01771 #define TOLE (0x14)
01772 #define TONG (0x14)
01773 #define TONE (0x18)
01774 #define TOU (0x1f)
01775
01776
01777
01778 #undef PPC
01779 #define PPC PPC_OPCODE_PPC
01780 #define PPCCOM PPC_OPCODE_PPC | PPC_OPCODE_COMMON
01781 #define NOPOWER4 PPC_OPCODE_NOPOWER4 | PPCCOM
01782 #define POWER4 PPC_OPCODE_POWER4
01783 #define PPC32 PPC_OPCODE_32 | PPC_OPCODE_PPC
01784 #define PPC64 PPC_OPCODE_64 | PPC_OPCODE_PPC
01785 #define PPC403 PPC_OPCODE_403
01786 #define PPC405 PPC403
01787 #define PPC440 PPC_OPCODE_440
01788 #define PPC750 PPC
01789 #define PPC860 PPC
01790 #define PPCVEC PPC_OPCODE_ALTIVEC
01791 #define POWER PPC_OPCODE_POWER
01792 #define POWER2 PPC_OPCODE_POWER | PPC_OPCODE_POWER2
01793 #define PPCPWR2 PPC_OPCODE_PPC | PPC_OPCODE_POWER | PPC_OPCODE_POWER2
01794 #define POWER32 PPC_OPCODE_POWER | PPC_OPCODE_32
01795 #define COM PPC_OPCODE_POWER | PPC_OPCODE_PPC | PPC_OPCODE_COMMON
01796 #define COM32 PPC_OPCODE_POWER | PPC_OPCODE_PPC | PPC_OPCODE_COMMON | PPC_OPCODE_32
01797 #define M601 PPC_OPCODE_POWER | PPC_OPCODE_601
01798 #define PWRCOM PPC_OPCODE_POWER | PPC_OPCODE_601 | PPC_OPCODE_COMMON
01799 #define MFDEC1 PPC_OPCODE_POWER
01800 #define MFDEC2 PPC_OPCODE_PPC | PPC_OPCODE_601 | PPC_OPCODE_BOOKE
01801 #define BOOKE PPC_OPCODE_BOOKE
01802 #define BOOKE64 PPC_OPCODE_BOOKE64
01803 #define CLASSIC PPC_OPCODE_CLASSIC
01804 #define PPCSPE PPC_OPCODE_SPE
01805 #define PPCISEL PPC_OPCODE_ISEL
01806 #define PPCEFS PPC_OPCODE_EFS
01807 #define PPCBRLK PPC_OPCODE_BRLOCK
01808 #define PPCPMR PPC_OPCODE_PMR
01809 #define PPCCHLK PPC_OPCODE_CACHELCK
01810 #define PPCCHLK64 PPC_OPCODE_CACHELCK | PPC_OPCODE_BOOKE64
01811 #define PPCRFMCI PPC_OPCODE_RFMCI
01812
01813
01814
01815
01816
01817
01818
01819
01820
01821
01822
01823
01824
01825
01826
01827
01828
01829
01830
01831 const struct powerpc_opcode powerpc_opcodes[] = {
01832 { "attn", X(0,256), X_MASK, POWER4, { 0 } },
01833 { "tdlgti", OPTO(2,TOLGT), OPTO_MASK, PPC64, { RA, SI } },
01834 { "tdllti", OPTO(2,TOLLT), OPTO_MASK, PPC64, { RA, SI } },
01835 { "tdeqi", OPTO(2,TOEQ), OPTO_MASK, PPC64, { RA, SI } },
01836 { "tdlgei", OPTO(2,TOLGE), OPTO_MASK, PPC64, { RA, SI } },
01837 { "tdlnli", OPTO(2,TOLNL), OPTO_MASK, PPC64, { RA, SI } },
01838 { "tdllei", OPTO(2,TOLLE), OPTO_MASK, PPC64, { RA, SI } },
01839 { "tdlngi", OPTO(2,TOLNG), OPTO_MASK, PPC64, { RA, SI } },
01840 { "tdgti", OPTO(2,TOGT), OPTO_MASK, PPC64, { RA, SI } },
01841 { "tdgei", OPTO(2,TOGE), OPTO_MASK, PPC64, { RA, SI } },
01842 { "tdnli", OPTO(2,TONL), OPTO_MASK, PPC64, { RA, SI } },
01843 { "tdlti", OPTO(2,TOLT), OPTO_MASK, PPC64, { RA, SI } },
01844 { "tdlei", OPTO(2,TOLE), OPTO_MASK, PPC64, { RA, SI } },
01845 { "tdngi", OPTO(2,TONG), OPTO_MASK, PPC64, { RA, SI } },
01846 { "tdnei", OPTO(2,TONE), OPTO_MASK, PPC64, { RA, SI } },
01847 { "tdi", OP(2), OP_MASK, PPC64, { TO, RA, SI } },
01848
01849 { "twlgti", OPTO(3,TOLGT), OPTO_MASK, PPCCOM, { RA, SI } },
01850 { "tlgti", OPTO(3,TOLGT), OPTO_MASK, PWRCOM, { RA, SI } },
01851 { "twllti", OPTO(3,TOLLT), OPTO_MASK, PPCCOM, { RA, SI } },
01852 { "tllti", OPTO(3,TOLLT), OPTO_MASK, PWRCOM, { RA, SI } },
01853 { "tweqi", OPTO(3,TOEQ), OPTO_MASK, PPCCOM, { RA, SI } },
01854 { "teqi", OPTO(3,TOEQ), OPTO_MASK, PWRCOM, { RA, SI } },
01855 { "twlgei", OPTO(3,TOLGE), OPTO_MASK, PPCCOM, { RA, SI } },
01856 { "tlgei", OPTO(3,TOLGE), OPTO_MASK, PWRCOM, { RA, SI } },
01857 { "twlnli", OPTO(3,TOLNL), OPTO_MASK, PPCCOM, { RA, SI } },
01858 { "tlnli", OPTO(3,TOLNL), OPTO_MASK, PWRCOM, { RA, SI } },
01859 { "twllei", OPTO(3,TOLLE), OPTO_MASK, PPCCOM, { RA, SI } },
01860 { "tllei", OPTO(3,TOLLE), OPTO_MASK, PWRCOM, { RA, SI } },
01861 { "twlngi", OPTO(3,TOLNG), OPTO_MASK, PPCCOM, { RA, SI } },
01862 { "tlngi", OPTO(3,TOLNG), OPTO_MASK, PWRCOM, { RA, SI } },
01863 { "twgti", OPTO(3,TOGT), OPTO_MASK, PPCCOM, { RA, SI } },
01864 { "tgti", OPTO(3,TOGT), OPTO_MASK, PWRCOM, { RA, SI } },
01865 { "twgei", OPTO(3,TOGE), OPTO_MASK, PPCCOM, { RA, SI } },
01866 { "tgei", OPTO(3,TOGE), OPTO_MASK, PWRCOM, { RA, SI } },
01867 { "twnli", OPTO(3,TONL), OPTO_MASK, PPCCOM, { RA, SI } },
01868 { "tnli", OPTO(3,TONL), OPTO_MASK, PWRCOM, { RA, SI } },
01869 { "twlti", OPTO(3,TOLT), OPTO_MASK, PPCCOM, { RA, SI } },
01870 { "tlti", OPTO(3,TOLT), OPTO_MASK, PWRCOM, { RA, SI } },
01871 { "twlei", OPTO(3,TOLE), OPTO_MASK, PPCCOM, { RA, SI } },
01872 { "tlei", OPTO(3,TOLE), OPTO_MASK, PWRCOM, { RA, SI } },
01873 { "twngi", OPTO(3,TONG), OPTO_MASK, PPCCOM, { RA, SI } },
01874 { "tngi", OPTO(3,TONG), OPTO_MASK, PWRCOM, { RA, SI } },
01875 { "twnei", OPTO(3,TONE), OPTO_MASK, PPCCOM, { RA, SI } },
01876 { "tnei", OPTO(3,TONE), OPTO_MASK, PWRCOM, { RA, SI } },
01877 { "twi", OP(3), OP_MASK, PPCCOM, { TO, RA, SI } },
01878 { "ti", OP(3), OP_MASK, PWRCOM, { TO, RA, SI } },
01879
01880 { "macchw", XO(4,172,0,0), XO_MASK, PPC405|PPC440, { RT, RA, RB } },
01881 { "macchw.", XO(4,172,0,1), XO_MASK, PPC405|PPC440, { RT, RA, RB } },
01882 { "macchwo", XO(4,172,1,0), XO_MASK, PPC405|PPC440, { RT, RA, RB } },
01883 { "macchwo.", XO(4,172,1,1), XO_MASK, PPC405|PPC440, { RT, RA, RB } },
01884 { "macchws", XO(4,236,0,0), XO_MASK, PPC405|PPC440, { RT, RA, RB } },
01885 { "macchws.", XO(4,236,0,1), XO_MASK, PPC405|PPC440, { RT, RA, RB } },
01886 { "macchwso", XO(4,236,1,0), XO_MASK, PPC405|PPC440, { RT, RA, RB } },
01887 { "macchwso.", XO(4,236,1,1), XO_MASK, PPC405|PPC440, { RT, RA, RB } },
01888 { "macchwsu", XO(4,204,0,0), XO_MASK, PPC405|PPC440, { RT, RA, RB } },
01889 { "macchwsu.", XO(4,204,0,1), XO_MASK, PPC405|PPC440, { RT, RA, RB } },
01890 { "macchwsuo", XO(4,204,1,0), XO_MASK, PPC405|PPC440, { RT, RA, RB } },
01891 { "macchwsuo.", XO(4,204,1,1), XO_MASK, PPC405|PPC440, { RT, RA, RB } },
01892 { "macchwu", XO(4,140,0,0), XO_MASK, PPC405|PPC440, { RT, RA, RB } },
01893 { "macchwu.", XO(4,140,0,1), XO_MASK, PPC405|PPC440, { RT, RA, RB } },
01894 { "macchwuo", XO(4,140,1,0), XO_MASK, PPC405|PPC440, { RT, RA, RB } },
01895 { "macchwuo.", XO(4,140,1,1), XO_MASK, PPC405|PPC440, { RT, RA, RB } },
01896 { "machhw", XO(4,44,0,0), XO_MASK, PPC405|PPC440, { RT, RA, RB } },
01897 { "machhw.", XO(4,44,0,1), XO_MASK, PPC405|PPC440, { RT, RA, RB } },
01898 { "machhwo", XO(4,44,1,0), XO_MASK, PPC405|PPC440, { RT, RA, RB } },
01899 { "machhwo.", XO(4,44,1,1), XO_MASK, PPC405|PPC440, { RT, RA, RB } },
01900 { "machhws", XO(4,108,0,0), XO_MASK, PPC405|PPC440, { RT, RA, RB } },
01901 { "machhws.", XO(4,108,0,1), XO_MASK, PPC405|PPC440, { RT, RA, RB } },
01902 { "machhwso", XO(4,108,1,0), XO_MASK, PPC405|PPC440, { RT, RA, RB } },
01903 { "machhwso.", XO(4,108,1,1), XO_MASK, PPC405|PPC440, { RT, RA, RB } },
01904 { "machhwsu", XO(4,76,0,0), XO_MASK, PPC405|PPC440, { RT, RA, RB } },
01905 { "machhwsu.", XO(4,76,0,1), XO_MASK, PPC405|PPC440, { RT, RA, RB } },
01906 { "machhwsuo", XO(4,76,1,0), XO_MASK, PPC405|PPC440, { RT, RA, RB } },
01907 { "machhwsuo.", XO(4,76,1,1), XO_MASK, PPC405|PPC440, { RT, RA, RB } },
01908 { "machhwu", XO(4,12,0,0), XO_MASK, PPC405|PPC440, { RT, RA, RB } },
01909 { "machhwu.", XO(4,12,0,1), XO_MASK, PPC405|PPC440, { RT, RA, RB } },
01910 { "machhwuo", XO(4,12,1,0), XO_MASK, PPC405|PPC440, { RT, RA, RB } },
01911 { "machhwuo.", XO(4,12,1,1), XO_MASK, PPC405|PPC440, { RT, RA, RB } },
01912 { "maclhw", XO(4,428,0,0), XO_MASK, PPC405|PPC440, { RT, RA, RB } },
01913 { "maclhw.", XO(4,428,0,1), XO_MASK, PPC405|PPC440, { RT, RA, RB } },
01914 { "maclhwo", XO(4,428,1,0), XO_MASK, PPC405|PPC440, { RT, RA, RB } },
01915 { "maclhwo.", XO(4,428,1,1), XO_MASK, PPC405|PPC440, { RT, RA, RB } },
01916 { "maclhws", XO(4,492,0,0), XO_MASK, PPC405|PPC440, { RT, RA, RB } },
01917 { "maclhws.", XO(4,492,0,1), XO_MASK, PPC405|PPC440, { RT, RA, RB } },
01918 { "maclhwso", XO(4,492,1,0), XO_MASK, PPC405|PPC440, { RT, RA, RB } },
01919 { "maclhwso.", XO(4,492,1,1), XO_MASK, PPC405|PPC440, { RT, RA, RB } },
01920 { "maclhwsu", XO(4,460,0,0), XO_MASK, PPC405|PPC440, { RT, RA, RB } },
01921 { "maclhwsu.", XO(4,460,0,1), XO_MASK, PPC405|PPC440, { RT, RA, RB } },
01922 { "maclhwsuo", XO(4,460,1,0), XO_MASK, PPC405|PPC440, { RT, RA, RB } },
01923 { "maclhwsuo.", XO(4,460,1,1), XO_MASK, PPC405|PPC440, { RT, RA, RB } },
01924 { "maclhwu", XO(4,396,0,0), XO_MASK, PPC405|PPC440, { RT, RA, RB } },
01925 { "maclhwu.", XO(4,396,0,1), XO_MASK, PPC405|PPC440, { RT, RA, RB } },
01926 { "maclhwuo", XO(4,396,1,0), XO_MASK, PPC405|PPC440, { RT, RA, RB } },
01927 { "maclhwuo.", XO(4,396,1,1), XO_MASK, PPC405|PPC440, { RT, RA, RB } },
01928 { "mulchw", XRC(4,168,0), X_MASK, PPC405|PPC440, { RT, RA, RB } },
01929 { "mulchw.", XRC(4,168,1), X_MASK, PPC405|PPC440, { RT, RA, RB } },
01930 { "mulchwu", XRC(4,136,0), X_MASK, PPC405|PPC440, { RT, RA, RB } },
01931 { "mulchwu.", XRC(4,136,1), X_MASK, PPC405|PPC440, { RT, RA, RB } },
01932 { "mulhhw", XRC(4,40,0), X_MASK, PPC405|PPC440, { RT, RA, RB } },
01933 { "mulhhw.", XRC(4,40,1), X_MASK, PPC405|PPC440, { RT, RA, RB } },
01934 { "mulhhwu", XRC(4,8,0), X_MASK, PPC405|PPC440, { RT, RA, RB } },
01935 { "mulhhwu.", XRC(4,8,1), X_MASK, PPC405|PPC440, { RT, RA, RB } },
01936 { "mullhw", XRC(4,424,0), X_MASK, PPC405|PPC440, { RT, RA, RB } },
01937 { "mullhw.", XRC(4,424,1), X_MASK, PPC405|PPC440, { RT, RA, RB } },
01938 { "mullhwu", XRC(4,392,0), X_MASK, PPC405|PPC440, { RT, RA, RB } },
01939 { "mullhwu.", XRC(4,392,1), X_MASK, PPC405|PPC440, { RT, RA, RB } },
01940 { "nmacchw", XO(4,174,0,0), XO_MASK, PPC405|PPC440, { RT, RA, RB } },
01941 { "nmacchw.", XO(4,174,0,1), XO_MASK, PPC405|PPC440, { RT, RA, RB } },
01942 { "nmacchwo", XO(4,174,1,0), XO_MASK, PPC405|PPC440, { RT, RA, RB } },
01943 { "nmacchwo.", XO(4,174,1,1), XO_MASK, PPC405|PPC440, { RT, RA, RB } },
01944 { "nmacchws", XO(4,238,0,0), XO_MASK, PPC405|PPC440, { RT, RA, RB } },
01945 { "nmacchws.", XO(4,238,0,1), XO_MASK, PPC405|PPC440, { RT, RA, RB } },
01946 { "nmacchwso", XO(4,238,1,0), XO_MASK, PPC405|PPC440, { RT, RA, RB } },
01947 { "nmacchwso.", XO(4,238,1,1), XO_MASK, PPC405|PPC440, { RT, RA, RB } },
01948 { "nmachhw", XO(4,46,0,0), XO_MASK, PPC405|PPC440, { RT, RA, RB } },
01949 { "nmachhw.", XO(4,46,0,1), XO_MASK, PPC405|PPC440, { RT, RA, RB } },
01950 { "nmachhwo", XO(4,46,1,0), XO_MASK, PPC405|PPC440, { RT, RA, RB } },
01951 { "nmachhwo.", XO(4,46,1,1), XO_MASK, PPC405|PPC440, { RT, RA, RB } },
01952 { "nmachhws", XO(4,110,0,0), XO_MASK, PPC405|PPC440, { RT, RA, RB } },
01953 { "nmachhws.", XO(4,110,0,1), XO_MASK, PPC405|PPC440, { RT, RA, RB } },
01954 { "nmachhwso", XO(4,110,1,0), XO_MASK, PPC405|PPC440, { RT, RA, RB } },
01955 { "nmachhwso.", XO(4,110,1,1), XO_MASK, PPC405|PPC440, { RT, RA, RB } },
01956 { "nmaclhw", XO(4,430,0,0), XO_MASK, PPC405|PPC440, { RT, RA, RB } },
01957 { "nmaclhw.", XO(4,430,0,1), XO_MASK, PPC405|PPC440, { RT, RA, RB } },
01958 { "nmaclhwo", XO(4,430,1,0), XO_MASK, PPC405|PPC440, { RT, RA, RB } },
01959 { "nmaclhwo.", XO(4,430,1,1), XO_MASK, PPC405|PPC440, { RT, RA, RB } },
01960 { "nmaclhws", XO(4,494,0,0), XO_MASK, PPC405|PPC440, { RT, RA, RB } },
01961 { "nmaclhws.", XO(4,494,0,1), XO_MASK, PPC405|PPC440, { RT, RA, RB } },
01962 { "nmaclhwso", XO(4,494,1,0), XO_MASK, PPC405|PPC440, { RT, RA, RB } },
01963 { "nmaclhwso.", XO(4,494,1,1), XO_MASK, PPC405|PPC440, { RT, RA, RB } },
01964 { "mfvscr", VX(4, 1540), VX_MASK, PPCVEC, { VD } },
01965 { "mtvscr", VX(4, 1604), VX_MASK, PPCVEC, { VB } },
01966
01967
01968
01969
01970 { "efscfd", VX(4, 719), VX_MASK, PPCEFS, { RS, RB } },
01971 { "efdabs", VX(4, 740), VX_MASK, PPCEFS, { RS, RA } },
01972 { "efdnabs", VX(4, 741), VX_MASK, PPCEFS, { RS, RA } },
01973 { "efdneg", VX(4, 742), VX_MASK, PPCEFS, { RS, RA } },
01974 { "efdadd", VX(4, 736), VX_MASK, PPCEFS, { RS, RA, RB } },
01975 { "efdsub", VX(4, 737), VX_MASK, PPCEFS, { RS, RA, RB } },
01976 { "efdmul", VX(4, 744), VX_MASK, PPCEFS, { RS, RA, RB } },
01977 { "efddiv", VX(4, 745), VX_MASK, PPCEFS, { RS, RA, RB } },
01978 { "efdcmpgt", VX(4, 748), VX_MASK, PPCEFS, { CRFD, RA, RB } },
01979 { "efdcmplt", VX(4, 749), VX_MASK, PPCEFS, { CRFD, RA, RB } },
01980 { "efdcmpeq", VX(4, 750), VX_MASK, PPCEFS, { CRFD, RA, RB } },
01981 { "efdtstgt", VX(4, 764), VX_MASK, PPCEFS, { CRFD, RA, RB } },
01982 { "efdtstlt", VX(4, 765), VX_MASK, PPCEFS, { CRFD, RA, RB } },
01983 { "efdtsteq", VX(4, 766), VX_MASK, PPCEFS, { CRFD, RA, RB } },
01984 { "efdcfsi", VX(4, 753), VX_MASK, PPCEFS, { RS, RB } },
01985 { "efdcfsid", VX(4, 739), VX_MASK, PPCEFS, { RS, RB } },
01986 { "efdcfui", VX(4, 752), VX_MASK, PPCEFS, { RS, RB } },
01987 { "efdcfuid", VX(4, 738), VX_MASK, PPCEFS, { RS, RB } },
01988 { "efdcfsf", VX(4, 755), VX_MASK, PPCEFS, { RS, RB } },
01989 { "efdcfuf", VX(4, 754), VX_MASK, PPCEFS, { RS, RB } },
01990 { "efdctsi", VX(4, 757), VX_MASK, PPCEFS, { RS, RB } },
01991 { "efdctsidz",VX(4, 747), VX_MASK, PPCEFS, { RS, RB } },
01992 { "efdctsiz", VX(4, 762), VX_MASK, PPCEFS, { RS, RB } },
01993 { "efdctui", VX(4, 756), VX_MASK, PPCEFS, { RS, RB } },
01994 { "efdctuidz",VX(4, 746), VX_MASK, PPCEFS, { RS, RB } },
01995 { "efdctuiz", VX(4, 760), VX_MASK, PPCEFS, { RS, RB } },
01996 { "efdctsf", VX(4, 759), VX_MASK, PPCEFS, { RS, RB } },
01997 { "efdctuf", VX(4, 758), VX_MASK, PPCEFS, { RS, RB } },
01998 { "efdcfs", VX(4, 751), VX_MASK, PPCEFS, { RS, RB } },
01999
02000
02001 { "vaddcuw", VX(4, 384), VX_MASK, PPCVEC, { VD, VA, VB } },
02002 { "vaddfp", VX(4, 10), VX_MASK, PPCVEC, { VD, VA, VB } },
02003 { "vaddsbs", VX(4, 768), VX_MASK, PPCVEC, { VD, VA, VB } },
02004 { "vaddshs", VX(4, 832), VX_MASK, PPCVEC, { VD, VA, VB } },
02005 { "vaddsws", VX(4, 896), VX_MASK, PPCVEC, { VD, VA, VB } },
02006 { "vaddubm", VX(4, 0), VX_MASK, PPCVEC, { VD, VA, VB } },
02007 { "vaddubs", VX(4, 512), VX_MASK, PPCVEC, { VD, VA, VB } },
02008 { "vadduhm", VX(4, 64), VX_MASK, PPCVEC, { VD, VA, VB } },
02009 { "vadduhs", VX(4, 576), VX_MASK, PPCVEC, { VD, VA, VB } },
02010 { "vadduwm", VX(4, 128), VX_MASK, PPCVEC, { VD, VA, VB } },
02011 { "vadduws", VX(4, 640), VX_MASK, PPCVEC, { VD, VA, VB } },
02012 { "vand", VX(4, 1028), VX_MASK, PPCVEC, { VD, VA, VB } },
02013 { "vandc", VX(4, 1092), VX_MASK, PPCVEC, { VD, VA, VB } },
02014 { "vavgsb", VX(4, 1282), VX_MASK, PPCVEC, { VD, VA, VB } },
02015 { "vavgsh", VX(4, 1346), VX_MASK, PPCVEC, { VD, VA, VB } },
02016 { "vavgsw", VX(4, 1410), VX_MASK, PPCVEC, { VD, VA, VB } },
02017 { "vavgub", VX(4, 1026), VX_MASK, PPCVEC, { VD, VA, VB } },
02018 { "vavguh", VX(4, 1090), VX_MASK, PPCVEC, { VD, VA, VB } },
02019 { "vavguw", VX(4, 1154), VX_MASK, PPCVEC, { VD, VA, VB } },
02020 { "vcfsx", VX(4, 842), VX_MASK, PPCVEC, { VD, VB, UIMM } },
02021 { "vcfux", VX(4, 778), VX_MASK, PPCVEC, { VD, VB, UIMM } },
02022 { "vcmpbfp", VXR(4, 966, 0), VXR_MASK, PPCVEC, { VD, VA, VB } },
02023 { "vcmpbfp.", VXR(4, 966, 1), VXR_MASK, PPCVEC, { VD, VA, VB } },
02024 { "vcmpeqfp", VXR(4, 198, 0), VXR_MASK, PPCVEC, { VD, VA, VB } },
02025 { "vcmpeqfp.", VXR(4, 198, 1), VXR_MASK, PPCVEC, { VD, VA, VB } },
02026 { "vcmpequb", VXR(4, 6, 0), VXR_MASK, PPCVEC, { VD, VA, VB } },
02027 { "vcmpequb.", VXR(4, 6, 1), VXR_MASK, PPCVEC, { VD, VA, VB } },
02028 { "vcmpequh", VXR(4, 70, 0), VXR_MASK, PPCVEC, { VD, VA, VB } },
02029 { "vcmpequh.", VXR(4, 70, 1), VXR_MASK, PPCVEC, { VD, VA, VB } },
02030 { "vcmpequw", VXR(4, 134, 0), VXR_MASK, PPCVEC, { VD, VA, VB } },
02031 { "vcmpequw.", VXR(4, 134, 1), VXR_MASK, PPCVEC, { VD, VA, VB } },
02032 { "vcmpgefp", VXR(4, 454, 0), VXR_MASK, PPCVEC, { VD, VA, VB } },
02033 { "vcmpgefp.", VXR(4, 454, 1), VXR_MASK, PPCVEC, { VD, VA, VB } },
02034 { "vcmpgtfp", VXR(4, 710, 0), VXR_MASK, PPCVEC, { VD, VA, VB } },
02035 { "vcmpgtfp.", VXR(4, 710, 1), VXR_MASK, PPCVEC, { VD, VA, VB } },
02036 { "vcmpgtsb", VXR(4, 774, 0), VXR_MASK, PPCVEC, { VD, VA, VB } },
02037 { "vcmpgtsb.", VXR(4, 774, 1), VXR_MASK, PPCVEC, { VD, VA, VB } },
02038 { "vcmpgtsh", VXR(4, 838, 0), VXR_MASK, PPCVEC, { VD, VA, VB } },
02039 { "vcmpgtsh.", VXR(4, 838, 1), VXR_MASK, PPCVEC, { VD, VA, VB } },
02040 { "vcmpgtsw", VXR(4, 902, 0), VXR_MASK, PPCVEC, { VD, VA, VB } },
02041 { "vcmpgtsw.", VXR(4, 902, 1), VXR_MASK, PPCVEC, { VD, VA, VB } },
02042 { "vcmpgtub", VXR(4, 518, 0), VXR_MASK, PPCVEC, { VD, VA, VB } },
02043 { "vcmpgtub.", VXR(4, 518, 1), VXR_MASK, PPCVEC, { VD, VA, VB } },
02044 { "vcmpgtuh", VXR(4, 582, 0), VXR_MASK, PPCVEC, { VD, VA, VB } },
02045 { "vcmpgtuh.", VXR(4, 582, 1), VXR_MASK, PPCVEC, { VD, VA, VB } },
02046 { "vcmpgtuw", VXR(4, 646, 0), VXR_MASK, PPCVEC, { VD, VA, VB } },
02047 { "vcmpgtuw.", VXR(4, 646, 1), VXR_MASK, PPCVEC, { VD, VA, VB } },
02048 { "vctsxs", VX(4, 970), VX_MASK, PPCVEC, { VD, VB, UIMM } },
02049 { "vctuxs", VX(4, 906), VX_MASK, PPCVEC, { VD, VB, UIMM } },
02050 { "vexptefp", VX(4, 394), VX_MASK, PPCVEC, { VD, VB } },
02051 { "vlogefp", VX(4, 458), VX_MASK, PPCVEC, { VD, VB } },
02052 { "vmaddfp", VXA(4, 46), VXA_MASK, PPCVEC, { VD, VA, VC, VB } },
02053 { "vmaxfp", VX(4, 1034), VX_MASK, PPCVEC, { VD, VA, VB } },
02054 { "vmaxsb", VX(4, 258), VX_MASK, PPCVEC, { VD, VA, VB } },
02055 { "vmaxsh", VX(4, 322), VX_MASK, PPCVEC, { VD, VA, VB } },
02056 { "vmaxsw", VX(4, 386), VX_MASK, PPCVEC, { VD, VA, VB } },
02057 { "vmaxub", VX(4, 2), VX_MASK, PPCVEC, { VD, VA, VB } },
02058 { "vmaxuh", VX(4, 66), VX_MASK, PPCVEC, { VD, VA, VB } },
02059 { "vmaxuw", VX(4, 130), VX_MASK, PPCVEC, { VD, VA, VB } },
02060 { "vmhaddshs", VXA(4, 32), VXA_MASK, PPCVEC, { VD, VA, VB, VC } },
02061 { "vmhraddshs", VXA(4, 33), VXA_MASK, PPCVEC, { VD, VA, VB, VC } },
02062 { "vminfp", VX(4, 1098), VX_MASK, PPCVEC, { VD, VA, VB } },
02063 { "vminsb", VX(4, 770), VX_MASK, PPCVEC, { VD, VA, VB } },
02064 { "vminsh", VX(4, 834), VX_MASK, PPCVEC, { VD, VA, VB } },
02065 { "vminsw", VX(4, 898), VX_MASK, PPCVEC, { VD, VA, VB } },
02066 { "vminub", VX(4, 514), VX_MASK, PPCVEC, { VD, VA, VB } },
02067 { "vminuh", VX(4, 578), VX_MASK, PPCVEC, { VD, VA, VB } },
02068 { "vminuw", VX(4, 642), VX_MASK, PPCVEC, { VD, VA, VB } },
02069 { "vmladduhm", VXA(4, 34), VXA_MASK, PPCVEC, { VD, VA, VB, VC } },
02070 { "vmrghb", VX(4, 12), VX_MASK, PPCVEC, { VD, VA, VB } },
02071 { "vmrghh", VX(4, 76), VX_MASK, PPCVEC, { VD, VA, VB } },
02072 { "vmrghw", VX(4, 140), VX_MASK, PPCVEC, { VD, VA, VB } },
02073 { "vmrglb", VX(4, 268), VX_MASK, PPCVEC, { VD, VA, VB } },
02074 { "vmrglh", VX(4, 332), VX_MASK, PPCVEC, { VD, VA, VB } },
02075 { "vmrglw", VX(4, 396), VX_MASK, PPCVEC, { VD, VA, VB } },
02076 { "vmsummbm", VXA(4, 37), VXA_MASK, PPCVEC, { VD, VA, VB, VC } },
02077 { "vmsumshm", VXA(4, 40), VXA_MASK, PPCVEC, { VD, VA, VB, VC } },
02078 { "vmsumshs", VXA(4, 41), VXA_MASK, PPCVEC, { VD, VA, VB, VC } },
02079 { "vmsumubm", VXA(4, 36), VXA_MASK, PPCVEC, { VD, VA, VB, VC } },
02080 { "vmsumuhm", VXA(4, 38), VXA_MASK, PPCVEC, { VD, VA, VB, VC } },
02081 { "vmsumuhs", VXA(4, 39), VXA_MASK, PPCVEC, { VD, VA, VB, VC } },
02082 { "vmulesb", VX(4, 776), VX_MASK, PPCVEC, { VD, VA, VB } },
02083 { "vmulesh", VX(4, 840), VX_MASK, PPCVEC, { VD, VA, VB } },
02084 { "vmuleub", VX(4, 520), VX_MASK, PPCVEC, { VD, VA, VB } },
02085 { "vmuleuh", VX(4, 584), VX_MASK, PPCVEC, { VD, VA, VB } },
02086 { "vmulosb", VX(4, 264), VX_MASK, PPCVEC, { VD, VA, VB } },
02087 { "vmulosh", VX(4, 328), VX_MASK, PPCVEC, { VD, VA, VB } },
02088 { "vmuloub", VX(4, 8), VX_MASK, PPCVEC, { VD, VA, VB } },
02089 { "vmulouh", VX(4, 72), VX_MASK, PPCVEC, { VD, VA, VB } },
02090 { "vnmsubfp", VXA(4, 47), VXA_MASK, PPCVEC, { VD, VA, VC, VB } },
02091 { "vnor", VX(4, 1284), VX_MASK, PPCVEC, { VD, VA, VB } },
02092 { "vor", VX(4, 1156), VX_MASK, PPCVEC, { VD, VA, VB } },
02093 { "vperm", VXA(4, 43), VXA_MASK, PPCVEC, { VD, VA, VB, VC } },
02094 { "vpkpx", VX(4, 782), VX_MASK, PPCVEC, { VD, VA, VB } },
02095 { "vpkshss", VX(4, 398), VX_MASK, PPCVEC, { VD, VA, VB } },
02096 { "vpkshus", VX(4, 270), VX_MASK, PPCVEC, { VD, VA, VB } },
02097 { "vpkswss", VX(4, 462), VX_MASK, PPCVEC, { VD, VA, VB } },
02098 { "vpkswus", VX(4, 334), VX_MASK, PPCVEC, { VD, VA, VB } },
02099 { "vpkuhum", VX(4, 14), VX_MASK, PPCVEC, { VD, VA, VB } },
02100 { "vpkuhus", VX(4, 142), VX_MASK, PPCVEC, { VD, VA, VB } },
02101 { "vpkuwum", VX(4, 78), VX_MASK, PPCVEC, { VD, VA, VB } },
02102 { "vpkuwus", VX(4, 206), VX_MASK, PPCVEC, { VD, VA, VB } },
02103 { "vrefp", VX(4, 266), VX_MASK, PPCVEC, { VD, VB } },
02104 { "vrfim", VX(4, 714), VX_MASK, PPCVEC, { VD, VB } },
02105 { "vrfin", VX(4, 522), VX_MASK, PPCVEC, { VD, VB } },
02106 { "vrfip", VX(4, 650), VX_MASK, PPCVEC, { VD, VB } },
02107 { "vrfiz", VX(4, 586), VX_MASK, PPCVEC, { VD, VB } },
02108 { "vrlb", VX(4, 4), VX_MASK, PPCVEC, { VD, VA, VB } },
02109 { "vrlh", VX(4, 68), VX_MASK, PPCVEC, { VD, VA, VB } },
02110 { "vrlw", VX(4, 132), VX_MASK, PPCVEC, { VD, VA, VB } },
02111 { "vrsqrtefp", VX(4, 330), VX_MASK, PPCVEC, { VD, VB } },
02112 { "vsel", VXA(4, 42), VXA_MASK, PPCVEC, { VD, VA, VB, VC } },
02113 { "vsl", VX(4, 452), VX_MASK, PPCVEC, { VD, VA, VB } },
02114 { "vslb", VX(4, 260), VX_MASK, PPCVEC, { VD, VA, VB } },
02115 { "vsldoi", VXA(4, 44), VXA_MASK, PPCVEC, { VD, VA, VB, SHB } },
02116 { "vslh", VX(4, 324), VX_MASK, PPCVEC, { VD, VA, VB } },
02117 { "vslo", VX(4, 1036), VX_MASK, PPCVEC, { VD, VA, VB } },
02118 { "vslw", VX(4, 388), VX_MASK, PPCVEC, { VD, VA, VB } },
02119 { "vspltb", VX(4, 524), VX_MASK, PPCVEC, { VD, VB, UIMM } },
02120 { "vsplth", VX(4, 588), VX_MASK, PPCVEC, { VD, VB, UIMM } },
02121 { "vspltisb", VX(4, 780), VX_MASK, PPCVEC, { VD, SIMM } },
02122 { "vspltish", VX(4, 844), VX_MASK, PPCVEC, { VD, SIMM } },
02123 { "vspltisw", VX(4, 908), VX_MASK, PPCVEC, { VD, SIMM } },
02124 { "vspltw", VX(4, 652), VX_MASK, PPCVEC, { VD, VB, UIMM } },
02125 { "vsr", VX(4, 708), VX_MASK, PPCVEC, { VD, VA, VB } },
02126 { "vsrab", VX(4, 772), VX_MASK, PPCVEC, { VD, VA, VB } },
02127 { "vsrah", VX(4, 836), VX_MASK, PPCVEC, { VD, VA, VB } },
02128 { "vsraw", VX(4, 900), VX_MASK, PPCVEC, { VD, VA, VB } },
02129 { "vsrb", VX(4, 516), VX_MASK, PPCVEC, { VD, VA, VB } },
02130 { "vsrh", VX(4, 580), VX_MASK, PPCVEC, { VD, VA, VB } },
02131 { "vsro", VX(4, 1100), VX_MASK, PPCVEC, { VD, VA, VB } },
02132 { "vsrw", VX(4, 644), VX_MASK, PPCVEC, { VD, VA, VB } },
02133 { "vsubcuw", VX(4, 1408), VX_MASK, PPCVEC, { VD, VA, VB } },
02134 { "vsubfp", VX(4, 74), VX_MASK, PPCVEC, { VD, VA, VB } },
02135 { "vsubsbs", VX(4, 1792), VX_MASK, PPCVEC, { VD, VA, VB } },
02136 { "vsubshs", VX(4, 1856), VX_MASK, PPCVEC, { VD, VA, VB } },
02137 { "vsubsws", VX(4, 1920), VX_MASK, PPCVEC, { VD, VA, VB } },
02138 { "vsububm", VX(4, 1024), VX_MASK, PPCVEC, { VD, VA, VB } },
02139 { "vsububs", VX(4, 1536), VX_MASK, PPCVEC, { VD, VA, VB } },
02140 { "vsubuhm", VX(4, 1088), VX_MASK, PPCVEC, { VD, VA, VB } },
02141 { "vsubuhs", VX(4, 1600), VX_MASK, PPCVEC, { VD, VA, VB } },
02142 { "vsubuwm", VX(4, 1152), VX_MASK, PPCVEC, { VD, VA, VB } },
02143 { "vsubuws", VX(4, 1664), VX_MASK, PPCVEC, { VD, VA, VB } },
02144 { "vsumsws", VX(4, 1928), VX_MASK, PPCVEC, { VD, VA, VB } },
02145 { "vsum2sws", VX(4, 1672), VX_MASK, PPCVEC, { VD, VA, VB } },
02146 { "vsum4sbs", VX(4, 1800), VX_MASK, PPCVEC, { VD, VA, VB } },
02147 { "vsum4shs", VX(4, 1608), VX_MASK, PPCVEC, { VD, VA, VB } },
02148 { "vsum4ubs", VX(4, 1544), VX_MASK, PPCVEC, { VD, VA, VB } },
02149 { "vupkhpx", VX(4, 846), VX_MASK, PPCVEC, { VD, VB } },
02150 { "vupkhsb", VX(4, 526), VX_MASK, PPCVEC, { VD, VB } },
02151 { "vupkhsh", VX(4, 590), VX_MASK, PPCVEC, { VD, VB } },
02152 { "vupklpx", VX(4, 974), VX_MASK, PPCVEC, { VD, VB } },
02153 { "vupklsb", VX(4, 654), VX_MASK, PPCVEC, { VD, VB } },
02154 { "vupklsh", VX(4, 718), VX_MASK, PPCVEC, { VD, VB } },
02155 { "vxor", VX(4, 1220), VX_MASK, PPCVEC, { VD, VA, VB } },
02156
02157 { "evaddw", VX(4, 512), VX_MASK, PPCSPE, { RS, RA, RB } },
02158 { "evaddiw", VX(4, 514), VX_MASK, PPCSPE, { RS, RB, UIMM } },
02159 { "evsubfw", VX(4, 516), VX_MASK, PPCSPE, { RS, RA, RB } },
02160 { "evsubw", VX(4, 516), VX_MASK, PPCSPE, { RS, RB, RA } },
02161 { "evsubifw", VX(4, 518), VX_MASK, PPCSPE, { RS, UIMM, RB } },
02162 { "evsubiw", VX(4, 518), VX_MASK, PPCSPE, { RS, RB, UIMM } },
02163 { "evabs", VX(4, 520), VX_MASK, PPCSPE, { RS, RA } },
02164 { "evneg", VX(4, 521), VX_MASK, PPCSPE, { RS, RA } },
02165 { "evextsb", VX(4, 522), VX_MASK, PPCSPE, { RS, RA } },
02166 { "evextsh", VX(4, 523), VX_MASK, PPCSPE, { RS, RA } },
02167 { "evrndw", VX(4, 524), VX_MASK, PPCSPE, { RS, RA } },
02168 { "evcntlzw", VX(4, 525), VX_MASK, PPCSPE, { RS, RA } },
02169 { "evcntlsw", VX(4, 526), VX_MASK, PPCSPE, { RS, RA } },
02170
02171 { "brinc", VX(4, 527), VX_MASK, PPCSPE, { RS, RA, RB } },
02172
02173 { "evand", VX(4, 529), VX_MASK, PPCSPE, { RS, RA, RB } },
02174 { "evandc", VX(4, 530), VX_MASK, PPCSPE, { RS, RA, RB } },
02175 { "evmr", VX(4, 535), VX_MASK, PPCSPE, { RS, RA, BBA } },
02176 { "evor", VX(4, 535), VX_MASK, PPCSPE, { RS, RA, RB } },
02177 { "evorc", VX(4, 539), VX_MASK, PPCSPE, { RS, RA, RB } },
02178 { "evxor", VX(4, 534), VX_MASK, PPCSPE, { RS, RA, RB } },
02179 { "eveqv", VX(4, 537), VX_MASK, PPCSPE, { RS, RA, RB } },
02180 { "evnand", VX(4, 542), VX_MASK, PPCSPE, { RS, RA, RB } },
02181 { "evnot", VX(4, 536), VX_MASK, PPCSPE, { RS, RA, BBA } },
02182 { "evnor", VX(4, 536), VX_MASK, PPCSPE, { RS, RA, RB } },
02183
02184 { "evrlw", VX(4, 552), VX_MASK, PPCSPE, { RS, RA, RB } },
02185 { "evrlwi", VX(4, 554), VX_MASK, PPCSPE, { RS, RA, EVUIMM } },
02186 { "evslw", VX(4, 548), VX_MASK, PPCSPE, { RS, RA, RB } },
02187 { "evslwi", VX(4, 550), VX_MASK, PPCSPE, { RS, RA, EVUIMM } },
02188 { "evsrws", VX(4, 545), VX_MASK, PPCSPE, { RS, RA, RB } },
02189 { "evsrwu", VX(4, 544), VX_MASK, PPCSPE, { RS, RA, RB } },
02190 { "evsrwis", VX(4, 547), VX_MASK, PPCSPE, { RS, RA, EVUIMM } },
02191 { "evsrwiu", VX(4, 546), VX_MASK, PPCSPE, { RS, RA, EVUIMM } },
02192 { "evsplati", VX(4, 553), VX_MASK, PPCSPE, { RS, SIMM } },
02193 { "evsplatfi", VX(4, 555), VX_MASK, PPCSPE, { RS, SIMM } },
02194 { "evmergehi", VX(4, 556), VX_MASK, PPCSPE, { RS, RA, RB } },
02195 { "evmergelo", VX(4, 557), VX_MASK, PPCSPE, { RS, RA, RB } },
02196 { "evmergehilo",VX(4,558), VX_MASK, PPCSPE, { RS, RA, RB } },
02197 { "evmergelohi",VX(4,559), VX_MASK, PPCSPE, { RS, RA, RB } },
02198
02199 { "evcmpgts", VX(4, 561), VX_MASK, PPCSPE, { CRFD, RA, RB } },
02200 { "evcmpgtu", VX(4, 560), VX_MASK, PPCSPE, { CRFD, RA, RB } },
02201 { "evcmplts", VX(4, 563), VX_MASK, PPCSPE, { CRFD, RA, RB } },
02202 { "evcmpltu", VX(4, 562), VX_MASK, PPCSPE, { CRFD, RA, RB } },
02203 { "evcmpeq", VX(4, 564), VX_MASK, PPCSPE, { CRFD, RA, RB } },
02204 { "evsel", EVSEL(4,79),EVSEL_MASK, PPCSPE, { RS, RA, RB, CRFS } },
02205
02206 { "evldd", VX(4, 769), VX_MASK, PPCSPE, { RS, EVUIMM_8, RA } },
02207 { "evlddx", VX(4, 768), VX_MASK, PPCSPE, { RS, RA, RB } },
02208 { "evldw", VX(4, 771), VX_MASK, PPCSPE, { RS, EVUIMM_8, RA } },
02209 { "evldwx", VX(4, 770), VX_MASK, PPCSPE, { RS, RA, RB } },
02210 { "evldh", VX(4, 773), VX_MASK, PPCSPE, { RS, EVUIMM_8, RA } },
02211 { "evldhx", VX(4, 772), VX_MASK, PPCSPE, { RS, RA, RB } },
02212 { "evlwhe", VX(4, 785), VX_MASK, PPCSPE, { RS, EVUIMM_4, RA } },
02213 { "evlwhex", VX(4, 784), VX_MASK, PPCSPE, { RS, RA, RB } },
02214 { "evlwhou", VX(4, 789), VX_MASK, PPCSPE, { RS, EVUIMM_4, RA } },
02215 { "evlwhoux", VX(4, 788), VX_MASK, PPCSPE, { RS, RA, RB } },
02216 { "evlwhos", VX(4, 791), VX_MASK, PPCSPE, { RS, EVUIMM_4, RA } },
02217 { "evlwhosx", VX(4, 790), VX_MASK, PPCSPE, { RS, RA, RB } },
02218 { "evlwwsplat",VX(4, 793), VX_MASK, PPCSPE, { RS, EVUIMM_4, RA } },
02219 { "evlwwsplatx",VX(4, 792), VX_MASK, PPCSPE, { RS, RA, RB } },
02220 { "evlwhsplat",VX(4, 797), VX_MASK, PPCSPE, { RS, EVUIMM_4, RA } },
02221 { "evlwhsplatx",VX(4, 796), VX_MASK, PPCSPE, { RS, RA, RB } },
02222 { "evlhhesplat",VX(4, 777), VX_MASK, PPCSPE, { RS, EVUIMM_2, RA } },
02223 { "evlhhesplatx",VX(4, 776), VX_MASK, PPCSPE, { RS, RA, RB } },
02224 { "evlhhousplat",VX(4, 781), VX_MASK, PPCSPE, { RS, EVUIMM_2, RA } },
02225 { "evlhhousplatx",VX(4, 780), VX_MASK, PPCSPE, { RS, RA, RB } },
02226 { "evlhhossplat",VX(4, 783), VX_MASK, PPCSPE, { RS, EVUIMM_2, RA } },
02227 { "evlhhossplatx",VX(4, 782), VX_MASK, PPCSPE, { RS, RA, RB } },
02228
02229 { "evstdd", VX(4, 801), VX_MASK, PPCSPE, { RS, EVUIMM_8, RA } },
02230 { "evstddx", VX(4, 800), VX_MASK, PPCSPE, { RS, RA, RB } },
02231 { "evstdw", VX(4, 803), VX_MASK, PPCSPE, { RS, EVUIMM_8, RA } },
02232 { "evstdwx", VX(4, 802), VX_MASK, PPCSPE, { RS, RA, RB } },
02233 { "evstdh", VX(4, 805), VX_MASK, PPCSPE, { RS, EVUIMM_8, RA } },
02234 { "evstdhx", VX(4, 804), VX_MASK, PPCSPE, { RS, RA, RB } },
02235 { "evstwwe", VX(4, 825), VX_MASK, PPCSPE, { RS, EVUIMM_4, RA } },
02236 { "evstwwex", VX(4, 824), VX_MASK, PPCSPE, { RS, RA, RB } },
02237 { "evstwwo", VX(4, 829), VX_MASK, PPCSPE, { RS, EVUIMM_4, RA } },
02238 { "evstwwox", VX(4, 828), VX_MASK, PPCSPE, { RS, RA, RB } },
02239 { "evstwhe", VX(4, 817), VX_MASK, PPCSPE, { RS, EVUIMM_4, RA } },
02240 { "evstwhex", VX(4, 816), VX_MASK, PPCSPE, { RS, RA, RB } },
02241 { "evstwho", VX(4, 821), VX_MASK, PPCSPE, { RS, EVUIMM_4, RA } },
02242 { "evstwhox", VX(4, 820), VX_MASK, PPCSPE, { RS, RA, RB } },
02243
02244 { "evfsabs", VX(4, 644), VX_MASK, PPCSPE, { RS, RA } },
02245 { "evfsnabs", VX(4, 645), VX_MASK, PPCSPE, { RS, RA } },
02246 { "evfsneg", VX(4, 646), VX_MASK, PPCSPE, { RS, RA } },
02247 { "evfsadd", VX(4, 640), VX_MASK, PPCSPE, { RS, RA, RB } },
02248 { "evfssub", VX(4, 641), VX_MASK, PPCSPE, { RS, RA, RB } },
02249 { "evfsmul", VX(4, 648), VX_MASK, PPCSPE, { RS, RA, RB } },
02250 { "evfsdiv", VX(4, 649), VX_MASK, PPCSPE, { RS, RA, RB } },
02251 { "evfscmpgt", VX(4, 652), VX_MASK, PPCSPE, { CRFD, RA, RB } },
02252 { "evfscmplt", VX(4, 653), VX_MASK, PPCSPE, { CRFD, RA, RB } },
02253 { "evfscmpeq", VX(4, 654), VX_MASK, PPCSPE, { CRFD, RA, RB } },
02254 { "evfststgt", VX(4, 668), VX_MASK, PPCSPE, { CRFD, RA, RB } },
02255 { "evfststlt", VX(4, 669), VX_MASK, PPCSPE, { CRFD, RA, RB } },
02256 { "evfststeq", VX(4, 670), VX_MASK, PPCSPE, { CRFD, RA, RB } },
02257 { "evfscfui", VX(4, 656), VX_MASK, PPCSPE, { RS, RB } },
02258 { "evfsctuiz", VX(4, 664), VX_MASK, PPCSPE, { RS, RB } },
02259 { "evfscfsi", VX(4, 657), VX_MASK, PPCSPE, { RS, RB } },
02260 { "evfscfuf", VX(4, 658), VX_MASK, PPCSPE, { RS, RB } },
02261 { "evfscfsf", VX(4, 659), VX_MASK, PPCSPE, { RS, RB } },
02262 { "evfsctui", VX(4, 660), VX_MASK, PPCSPE, { RS, RB } },
02263 { "evfsctsi", VX(4, 661), VX_MASK, PPCSPE, { RS, RB } },
02264 { "evfsctsiz", VX(4, 666), VX_MASK, PPCSPE, { RS, RB } },
02265 { "evfsctuf", VX(4, 662), VX_MASK, PPCSPE, { RS, RB } },
02266 { "evfsctsf", VX(4, 663), VX_MASK, PPCSPE, { RS, RB } },
02267
02268 { "efsabs", VX(4, 708), VX_MASK, PPCEFS, { RS, RA } },
02269 { "efsnabs", VX(4, 709), VX_MASK, PPCEFS, { RS, RA } },
02270 { "efsneg", VX(4, 710), VX_MASK, PPCEFS, { RS, RA } },
02271 { "efsadd", VX(4, 704), VX_MASK, PPCEFS, { RS, RA, RB } },
02272 { "efssub", VX(4, 705), VX_MASK, PPCEFS, { RS, RA, RB } },
02273 { "efsmul", VX(4, 712), VX_MASK, PPCEFS, { RS, RA, RB } },
02274 { "efsdiv", VX(4, 713), VX_MASK, PPCEFS, { RS, RA, RB } },
02275 { "efscmpgt", VX(4, 716), VX_MASK, PPCEFS, { CRFD, RA, RB } },
02276 { "efscmplt", VX(4, 717), VX_MASK, PPCEFS, { CRFD, RA, RB } },
02277 { "efscmpeq", VX(4, 718), VX_MASK, PPCEFS, { CRFD, RA, RB } },
02278 { "efststgt", VX(4, 732), VX_MASK, PPCEFS, { CRFD, RA, RB } },
02279 { "efststlt", VX(4, 733), VX_MASK, PPCEFS, { CRFD, RA, RB } },
02280 { "efststeq", VX(4, 734), VX_MASK, PPCEFS, { CRFD, RA, RB } },
02281 { "efscfui", VX(4, 720), VX_MASK, PPCEFS, { RS, RB } },
02282 { "efsctuiz", VX(4, 728), VX_MASK, PPCEFS, { RS, RB } },
02283 { "efscfsi", VX(4, 721), VX_MASK, PPCEFS, { RS, RB } },
02284 { "efscfuf", VX(4, 722), VX_MASK, PPCEFS, { RS, RB } },
02285 { "efscfsf", VX(4, 723), VX_MASK, PPCEFS, { RS, RB } },
02286 { "efsctui", VX(4, 724), VX_MASK, PPCEFS, { RS, RB } },
02287 { "efsctsi", VX(4, 725), VX_MASK, PPCEFS, { RS, RB } },
02288 { "efsctsiz", VX(4, 730), VX_MASK, PPCEFS, { RS, RB } },
02289 { "efsctuf", VX(4, 726), VX_MASK, PPCEFS, { RS, RB } },
02290 { "efsctsf", VX(4, 727), VX_MASK, PPCEFS, { RS, RB } },
02291
02292 { "evmhossf", VX(4, 1031), VX_MASK, PPCSPE, { RS, RA, RB } },
02293 { "evmhossfa", VX(4, 1063), VX_MASK, PPCSPE, { RS, RA, RB } },
02294 { "evmhosmf", VX(4, 1039), VX_MASK, PPCSPE, { RS, RA, RB } },
02295 { "evmhosmfa", VX(4, 1071), VX_MASK, PPCSPE, { RS, RA, RB } },
02296 { "evmhosmi", VX(4, 1037), VX_MASK, PPCSPE, { RS, RA, RB } },
02297 { "evmhosmia", VX(4, 1069), VX_MASK, PPCSPE, { RS, RA, RB } },
02298 { "evmhoumi", VX(4, 1036), VX_MASK, PPCSPE, { RS, RA, RB } },
02299 { "evmhoumia", VX(4, 1068), VX_MASK, PPCSPE, { RS, RA, RB } },
02300 { "evmhessf", VX(4, 1027), VX_MASK, PPCSPE, { RS, RA, RB } },
02301 { "evmhessfa", VX(4, 1059), VX_MASK, PPCSPE, { RS, RA, RB } },
02302 { "evmhesmf", VX(4, 1035), VX_MASK, PPCSPE, { RS, RA, RB } },
02303 { "evmhesmfa", VX(4, 1067), VX_MASK, PPCSPE, { RS, RA, RB } },
02304 { "evmhesmi", VX(4, 1033), VX_MASK, PPCSPE, { RS, RA, RB } },
02305 { "evmhesmia", VX(4, 1065), VX_MASK, PPCSPE, { RS, RA, RB } },
02306 { "evmheumi", VX(4, 1032), VX_MASK, PPCSPE, { RS, RA, RB } },
02307 { "evmheumia", VX(4, 1064), VX_MASK, PPCSPE, { RS, RA, RB } },
02308
02309 { "evmhossfaaw",VX(4, 1287), VX_MASK, PPCSPE, { RS, RA, RB } },
02310 { "evmhossiaaw",VX(4, 1285), VX_MASK, PPCSPE, { RS, RA, RB } },
02311 { "evmhosmfaaw",VX(4, 1295), VX_MASK, PPCSPE, { RS, RA, RB } },
02312 { "evmhosmiaaw",VX(4, 1293), VX_MASK, PPCSPE, { RS, RA, RB } },
02313 { "evmhousiaaw",VX(4, 1284), VX_MASK, PPCSPE, { RS, RA, RB } },
02314 { "evmhoumiaaw",VX(4, 1292), VX_MASK, PPCSPE, { RS, RA, RB } },
02315 { "evmhessfaaw",VX(4, 1283), VX_MASK, PPCSPE, { RS, RA, RB } },
02316 { "evmhessiaaw",VX(4, 1281), VX_MASK, PPCSPE, { RS, RA, RB } },
02317 { "evmhesmfaaw",VX(4, 1291), VX_MASK, PPCSPE, { RS, RA, RB } },
02318 { "evmhesmiaaw",VX(4, 1289), VX_MASK, PPCSPE, { RS, RA, RB } },
02319 { "evmheusiaaw",VX(4, 1280), VX_MASK, PPCSPE, { RS, RA, RB } },
02320 { "evmheumiaaw",VX(4, 1288), VX_MASK, PPCSPE, { RS, RA, RB } },
02321
02322 { "evmhossfanw",VX(4, 1415), VX_MASK, PPCSPE, { RS, RA, RB } },
02323 { "evmhossianw",VX(4, 1413), VX_MASK, PPCSPE, { RS, RA, RB } },
02324 { "evmhosmfanw",VX(4, 1423), VX_MASK, PPCSPE, { RS, RA, RB } },
02325 { "evmhosmianw",VX(4, 1421), VX_MASK, PPCSPE, { RS, RA, RB } },
02326 { "evmhousianw",VX(4, 1412), VX_MASK, PPCSPE, { RS, RA, RB } },
02327 { "evmhoumianw",VX(4, 1420), VX_MASK, PPCSPE, { RS, RA, RB } },
02328 { "evmhessfanw",VX(4, 1411), VX_MASK, PPCSPE, { RS, RA, RB } },
02329 { "evmhessianw",VX(4, 1409), VX_MASK, PPCSPE, { RS, RA, RB } },
02330 { "evmhesmfanw",VX(4, 1419), VX_MASK, PPCSPE, { RS, RA, RB } },
02331 { "evmhesmianw",VX(4, 1417), VX_MASK, PPCSPE, { RS, RA, RB } },
02332 { "evmheusianw",VX(4, 1408), VX_MASK, PPCSPE, { RS, RA, RB } },
02333 { "evmheumianw",VX(4, 1416), VX_MASK, PPCSPE, { RS, RA, RB } },
02334
02335 { "evmhogsmfaa",VX(4, 1327), VX_MASK, PPCSPE, { RS, RA, RB } },
02336 { "evmhogsmiaa",VX(4, 1325), VX_MASK, PPCSPE, { RS, RA, RB } },
02337 { "evmhogumiaa",VX(4, 1324), VX_MASK, PPCSPE, { RS, RA, RB } },
02338 { "evmhegsmfaa",VX(4, 1323), VX_MASK, PPCSPE, { RS, RA, RB } },
02339 { "evmhegsmiaa",VX(4, 1321), VX_MASK, PPCSPE, { RS, RA, RB } },
02340 { "evmhegumiaa",VX(4, 1320), VX_MASK, PPCSPE, { RS, RA, RB } },
02341
02342 { "evmhogsmfan",VX(4, 1455), VX_MASK, PPCSPE, { RS, RA, RB } },
02343 { "evmhogsmian",VX(4, 1453), VX_MASK, PPCSPE, { RS, RA, RB } },
02344 { "evmhogumian",VX(4, 1452), VX_MASK, PPCSPE, { RS, RA, RB } },
02345 { "evmhegsmfan",VX(4, 1451), VX_MASK, PPCSPE, { RS, RA, RB } },
02346 { "evmhegsmian",VX(4, 1449), VX_MASK, PPCSPE, { RS, RA, RB } },
02347 { "evmhegumian",VX(4, 1448), VX_MASK, PPCSPE, { RS, RA, RB } },
02348
02349 { "evmwhssf", VX(4, 1095), VX_MASK, PPCSPE, { RS, RA, RB } },
02350 { "evmwhssfa", VX(4, 1127), VX_MASK, PPCSPE, { RS, RA, RB } },
02351 { "evmwhsmf", VX(4, 1103), VX_MASK, PPCSPE, { RS, RA, RB } },
02352 { "evmwhsmfa", VX(4, 1135), VX_MASK, PPCSPE, { RS, RA, RB } },
02353 { "evmwhsmi", VX(4, 1101), VX_MASK, PPCSPE, { RS, RA, RB } },
02354 { "evmwhsmia", VX(4, 1133), VX_MASK, PPCSPE, { RS, RA, RB } },
02355 { "evmwhumi", VX(4, 1100), VX_MASK, PPCSPE, { RS, RA, RB } },
02356 { "evmwhumia", VX(4, 1132), VX_MASK, PPCSPE, { RS, RA, RB } },
02357
02358 { "evmwlumi", VX(4, 1096), VX_MASK, PPCSPE, { RS, RA, RB } },
02359 { "evmwlumia", VX(4, 1128), VX_MASK, PPCSPE, { RS, RA, RB } },
02360
02361 { "evmwlssiaaw",VX(4, 1345), VX_MASK, PPCSPE, { RS, RA, RB } },
02362 { "evmwlsmiaaw",VX(4, 1353), VX_MASK, PPCSPE, { RS, RA, RB } },
02363 { "evmwlusiaaw",VX(4, 1344), VX_MASK, PPCSPE, { RS, RA, RB } },
02364 { "evmwlumiaaw",VX(4, 1352), VX_MASK, PPCSPE, { RS, RA, RB } },
02365
02366 { "evmwlssianw",VX(4, 1473), VX_MASK, PPCSPE, { RS, RA, RB } },
02367 { "evmwlsmianw",VX(4, 1481), VX_MASK, PPCSPE, { RS, RA, RB } },
02368 { "evmwlusianw",VX(4, 1472), VX_MASK, PPCSPE, { RS, RA, RB } },
02369 { "evmwlumianw",VX(4, 1480), VX_MASK, PPCSPE, { RS, RA, RB } },
02370
02371 { "evmwssf", VX(4, 1107), VX_MASK, PPCSPE, { RS, RA, RB } },
02372 { "evmwssfa", VX(4, 1139), VX_MASK, PPCSPE, { RS, RA, RB } },
02373 { "evmwsmf", VX(4, 1115), VX_MASK, PPCSPE, { RS, RA, RB } },
02374 { "evmwsmfa", VX(4, 1147), VX_MASK, PPCSPE, { RS, RA, RB } },
02375 { "evmwsmi", VX(4, 1113), VX_MASK, PPCSPE, { RS, RA, RB } },
02376 { "evmwsmia", VX(4, 1145), VX_MASK, PPCSPE, { RS, RA, RB } },
02377 { "evmwumi", VX(4, 1112), VX_MASK, PPCSPE, { RS, RA, RB } },
02378 { "evmwumia", VX(4, 1144), VX_MASK, PPCSPE, { RS, RA, RB } },
02379
02380 { "evmwssfaa", VX(4, 1363), VX_MASK, PPCSPE, { RS, RA, RB } },
02381 { "evmwsmfaa", VX(4, 1371), VX_MASK, PPCSPE, { RS, RA, RB } },
02382 { "evmwsmiaa", VX(4, 1369), VX_MASK, PPCSPE, { RS, RA, RB } },
02383 { "evmwumiaa", VX(4, 1368), VX_MASK, PPCSPE, { RS, RA, RB } },
02384
02385 { "evmwssfan", VX(4, 1491), VX_MASK, PPCSPE, { RS, RA, RB } },
02386 { "evmwsmfan", VX(4, 1499), VX_MASK, PPCSPE, { RS, RA, RB } },
02387 { "evmwsmian", VX(4, 1497), VX_MASK, PPCSPE, { RS, RA, RB } },
02388 { "evmwumian", VX(4, 1496), VX_MASK, PPCSPE, { RS, RA, RB } },
02389
02390 { "evaddssiaaw",VX(4, 1217), VX_MASK, PPCSPE, { RS, RA } },
02391 { "evaddsmiaaw",VX(4, 1225), VX_MASK, PPCSPE, { RS, RA } },
02392 { "evaddusiaaw",VX(4, 1216), VX_MASK, PPCSPE, { RS, RA } },
02393 { "evaddumiaaw",VX(4, 1224), VX_MASK, PPCSPE, { RS, RA } },
02394
02395 { "evsubfssiaaw",VX(4, 1219), VX_MASK, PPCSPE, { RS, RA } },
02396 { "evsubfsmiaaw",VX(4, 1227), VX_MASK, PPCSPE, { RS, RA } },
02397 { "evsubfusiaaw",VX(4, 1218), VX_MASK, PPCSPE, { RS, RA } },
02398 { "evsubfumiaaw",VX(4, 1226), VX_MASK, PPCSPE, { RS, RA } },
02399
02400 { "evmra", VX(4, 1220), VX_MASK, PPCSPE, { RS, RA } },
02401
02402 { "evdivws", VX(4, 1222), VX_MASK, PPCSPE, { RS, RA, RB } },
02403 { "evdivwu", VX(4, 1223), VX_MASK, PPCSPE, { RS, RA, RB } },
02404
02405 { "mulli", OP(7), OP_MASK, PPCCOM, { RT, RA, SI } },
02406 { "muli", OP(7), OP_MASK, PWRCOM, { RT, RA, SI } },
02407
02408 { "subfic", OP(8), OP_MASK, PPCCOM, { RT, RA, SI } },
02409 { "sfi", OP(8), OP_MASK, PWRCOM, { RT, RA, SI } },
02410
02411 { "dozi", OP(9), OP_MASK, M601, { RT, RA, SI } },
02412
02413 { "bce", B(9,0,0), B_MASK, BOOKE64, { BO, BI, BD } },
02414 { "bcel", B(9,0,1), B_MASK, BOOKE64, { BO, BI, BD } },
02415 { "bcea", B(9,1,0), B_MASK, BOOKE64, { BO, BI, BDA } },
02416 { "bcela", B(9,1,1), B_MASK, BOOKE64, { BO, BI, BDA } },
02417
02418 { "cmplwi", OPL(10,0), OPL_MASK, PPCCOM, { OBF, RA, UI } },
02419 { "cmpldi", OPL(10,1), OPL_MASK, PPC64, { OBF, RA, UI } },
02420 { "cmpli", OP(10), OP_MASK, PPC, { BF, L, RA, UI } },
02421 { "cmpli", OP(10), OP_MASK, PWRCOM, { BF, RA, UI } },
02422
02423 { "cmpwi", OPL(11,0), OPL_MASK, PPCCOM, { OBF, RA, SI } },
02424 { "cmpdi", OPL(11,1), OPL_MASK, PPC64, { OBF, RA, SI } },
02425 { "cmpi", OP(11), OP_MASK, PPC, { BF, L, RA, SI } },
02426 { "cmpi", OP(11), OP_MASK, PWRCOM, { BF, RA, SI } },
02427
02428 { "addic", OP(12), OP_MASK, PPCCOM, { RT, RA, SI } },
02429 { "ai", OP(12), OP_MASK, PWRCOM, { RT, RA, SI } },
02430 { "subic", OP(12), OP_MASK, PPCCOM, { RT, RA, NSI } },
02431
02432 { "addic.", OP(13), OP_MASK, PPCCOM, { RT, RA, SI } },
02433 { "ai.", OP(13), OP_MASK, PWRCOM, { RT, RA, SI } },
02434 { "subic.", OP(13), OP_MASK, PPCCOM, { RT, RA, NSI } },
02435
02436 { "li", OP(14), DRA_MASK, PPCCOM, { RT, SI } },
02437 { "lil", OP(14), DRA_MASK, PWRCOM, { RT, SI } },
02438 { "addi", OP(14), OP_MASK, PPCCOM, { RT, RA0, SI } },
02439 { "cal", OP(14), OP_MASK, PWRCOM, { RT, D, RA0 } },
02440 { "subi", OP(14), OP_MASK, PPCCOM, { RT, RA0, NSI } },
02441 { "la", OP(14), OP_MASK, PPCCOM, { RT, D, RA0 } },
02442
02443 { "lis", OP(15), DRA_MASK, PPCCOM, { RT, SISIGNOPT } },
02444 { "liu", OP(15), DRA_MASK, PWRCOM, { RT, SISIGNOPT } },
02445 { "addis", OP(15), OP_MASK, PPCCOM, { RT,RA0,SISIGNOPT } },
02446 { "cau", OP(15), OP_MASK, PWRCOM, { RT,RA0,SISIGNOPT } },
02447 { "subis", OP(15), OP_MASK, PPCCOM, { RT, RA0, NSI } },
02448
02449 { "bdnz-", BBO(16,BODNZ,0,0), BBOATBI_MASK, PPCCOM, { BDM } },
02450 { "bdnz+", BBO(16,BODNZ,0,0), BBOATBI_MASK, PPCCOM, { BDP } },
02451 { "bdnz", BBO(16,BODNZ,0,0), BBOATBI_MASK, PPCCOM, { BD } },
02452 { "bdn", BBO(16,BODNZ,0,0), BBOATBI_MASK, PWRCOM, { BD } },
02453 { "bdnzl-", BBO(16,BODNZ,0,1), BBOATBI_MASK, PPCCOM, { BDM } },
02454 { "bdnzl+", BBO(16,BODNZ,0,1), BBOATBI_MASK, PPCCOM, { BDP } },
02455 { "bdnzl", BBO(16,BODNZ,0,1), BBOATBI_MASK, PPCCOM, { BD } },
02456 { "bdnl", BBO(16,BODNZ,0,1), BBOATBI_MASK, PWRCOM, { BD } },
02457 { "bdnza-", BBO(16,BODNZ,1,0), BBOATBI_MASK, PPCCOM, { BDMA } },
02458 { "bdnza+", BBO(16,BODNZ,1,0), BBOATBI_MASK, PPCCOM, { BDPA } },
02459 { "bdnza", BBO(16,BODNZ,1,0), BBOATBI_MASK, PPCCOM, { BDA } },
02460 { "bdna", BBO(16,BODNZ,1,0), BBOATBI_MASK, PWRCOM, { BDA } },
02461 { "bdnzla-", BBO(16,BODNZ,1,1), BBOATBI_MASK, PPCCOM, { BDMA } },
02462 { "bdnzla+", BBO(16,BODNZ,1,1), BBOATBI_MASK, PPCCOM, { BDPA } },
02463 { "bdnzla", BBO(16,BODNZ,1,1), BBOATBI_MASK, PPCCOM, { BDA } },
02464 { "bdnla", BBO(16,BODNZ,1,1), BBOATBI_MASK, PWRCOM, { BDA } },
02465 { "bdz-", BBO(16,BODZ,0,0), BBOATBI_MASK, PPCCOM, { BDM } },
02466 { "bdz+", BBO(16,BODZ,0,0), BBOATBI_MASK, PPCCOM, { BDP } },
02467 { "bdz", BBO(16,BODZ,0,0), BBOATBI_MASK, COM, { BD } },
02468 { "bdzl-", BBO(16,BODZ,0,1), BBOATBI_MASK, PPCCOM, { BDM } },
02469 { "bdzl+", BBO(16,BODZ,0,1), BBOATBI_MASK, PPCCOM, { BDP } },
02470 { "bdzl", BBO(16,BODZ,0,1), BBOATBI_MASK, COM, { BD } },
02471 { "bdza-", BBO(16,BODZ,1,0), BBOATBI_MASK, PPCCOM, { BDMA } },
02472 { "bdza+", BBO(16,BODZ,1,0), BBOATBI_MASK, PPCCOM, { BDPA } },
02473 { "bdza", BBO(16,BODZ,1,0), BBOATBI_MASK, COM, { BDA } },
02474 { "bdzla-", BBO(16,BODZ,1,1), BBOATBI_MASK, PPCCOM, { BDMA } },
02475 { "bdzla+", BBO(16,BODZ,1,1), BBOATBI_MASK, PPCCOM, { BDPA } },
02476 { "bdzla", BBO(16,BODZ,1,1), BBOATBI_MASK, COM, { BDA } },
02477 { "blt-", BBOCB(16,BOT,CBLT,0,0), BBOATCB_MASK, PPCCOM, { CR, BDM } },
02478 { "blt+", BBOCB(16,BOT,CBLT,0,0), BBOATCB_MASK, PPCCOM, { CR, BDP } },
02479 { "blt", BBOCB(16,BOT,CBLT,0,0), BBOATCB_MASK, COM, { CR, BD } },
02480 { "bltl-", BBOCB(16,BOT,CBLT,0,1), BBOATCB_MASK, PPCCOM, { CR, BDM } },
02481 { "bltl+", BBOCB(16,BOT,CBLT,0,1), BBOATCB_MASK, PPCCOM, { CR, BDP } },
02482 { "bltl", BBOCB(16,BOT,CBLT,0,1), BBOATCB_MASK, COM, { CR, BD } },
02483 { "blta-", BBOCB(16,BOT,CBLT,1,0), BBOATCB_MASK, PPCCOM, { CR, BDMA } },
02484 { "blta+", BBOCB(16,BOT,CBLT,1,0), BBOATCB_MASK, PPCCOM, { CR, BDPA } },
02485 { "blta", BBOCB(16,BOT,CBLT,1,0), BBOATCB_MASK, COM, { CR, BDA } },
02486 { "bltla-", BBOCB(16,BOT,CBLT,1,1), BBOATCB_MASK, PPCCOM, { CR, BDMA } },
02487 { "bltla+", BBOCB(16,BOT,CBLT,1,1), BBOATCB_MASK, PPCCOM, { CR, BDPA } },
02488 { "bltla", BBOCB(16,BOT,CBLT,1,1), BBOATCB_MASK, COM, { CR, BDA } },
02489 { "bgt-", BBOCB(16,BOT,CBGT,0,0), BBOATCB_MASK, PPCCOM, { CR, BDM } },
02490 { "bgt+", BBOCB(16,BOT,CBGT,0,0), BBOATCB_MASK, PPCCOM, { CR, BDP } },
02491 { "bgt", BBOCB(16,BOT,CBGT,0,0), BBOATCB_MASK, COM, { CR, BD } },
02492 { "bgtl-", BBOCB(16,BOT,CBGT,0,1), BBOATCB_MASK, PPCCOM, { CR, BDM } },
02493 { "bgtl+", BBOCB(16,BOT,CBGT,0,1), BBOATCB_MASK, PPCCOM, { CR, BDP } },
02494 { "bgtl", BBOCB(16,BOT,CBGT,0,1), BBOATCB_MASK, COM, { CR, BD } },
02495 { "bgta-", BBOCB(16,BOT,CBGT,1,0), BBOATCB_MASK, PPCCOM, { CR, BDMA } },
02496 { "bgta+", BBOCB(16,BOT,CBGT,1,0), BBOATCB_MASK, PPCCOM, { CR, BDPA } },
02497 { "bgta", BBOCB(16,BOT,CBGT,1,0), BBOATCB_MASK, COM, { CR, BDA } },
02498 { "bgtla-", BBOCB(16,BOT,CBGT,1,1), BBOATCB_MASK, PPCCOM, { CR, BDMA } },
02499 { "bgtla+", BBOCB(16,BOT,CBGT,1,1), BBOATCB_MASK, PPCCOM, { CR, BDPA } },
02500 { "bgtla", BBOCB(16,BOT,CBGT,1,1), BBOATCB_MASK, COM, { CR, BDA } },
02501 { "beq-", BBOCB(16,BOT,CBEQ,0,0), BBOATCB_MASK, PPCCOM, { CR, BDM } },
02502 { "beq+", BBOCB(16,BOT,CBEQ,0,0), BBOATCB_MASK, PPCCOM, { CR, BDP } },
02503 { "beq", BBOCB(16,BOT,CBEQ,0,0), BBOATCB_MASK, COM, { CR, BD } },
02504 { "beql-", BBOCB(16,BOT,CBEQ,0,1), BBOATCB_MASK, PPCCOM, { CR, BDM } },
02505 { "beql+", BBOCB(16,BOT,CBEQ,0,1), BBOATCB_MASK, PPCCOM, { CR, BDP } },
02506 { "beql", BBOCB(16,BOT,CBEQ,0,1), BBOATCB_MASK, COM, { CR, BD } },
02507 { "beqa-", BBOCB(16,BOT,CBEQ,1,0), BBOATCB_MASK, PPCCOM, { CR, BDMA } },
02508 { "beqa+", BBOCB(16,BOT,CBEQ,1,0), BBOATCB_MASK, PPCCOM, { CR, BDPA } },
02509 { "beqa", BBOCB(16,BOT,CBEQ,1,0), BBOATCB_MASK, COM, { CR, BDA } },
02510 { "beqla-", BBOCB(16,BOT,CBEQ,1,1), BBOATCB_MASK, PPCCOM, { CR, BDMA } },
02511 { "beqla+", BBOCB(16,BOT,CBEQ,1,1), BBOATCB_MASK, PPCCOM, { CR, BDPA } },
02512 { "beqla", BBOCB(16,BOT,CBEQ,1,1), BBOATCB_MASK, COM, { CR, BDA } },
02513 { "bso-", BBOCB(16,BOT,CBSO,0,0), BBOATCB_MASK, PPCCOM, { CR, BDM } },
02514 { "bso+", BBOCB(16,BOT,CBSO,0,0), BBOATCB_MASK, PPCCOM, { CR, BDP } },
02515 { "bso", BBOCB(16,BOT,CBSO,0,0), BBOATCB_MASK, COM, { CR, BD } },
02516 { "bsol-", BBOCB(16,BOT,CBSO,0,1), BBOATCB_MASK, PPCCOM, { CR, BDM } },
02517 { "bsol+", BBOCB(16,BOT,CBSO,0,1), BBOATCB_MASK, PPCCOM, { CR, BDP } },
02518 { "bsol", BBOCB(16,BOT,CBSO,0,1), BBOATCB_MASK, COM, { CR, BD } },
02519 { "bsoa-", BBOCB(16,BOT,CBSO,1,0), BBOATCB_MASK, PPCCOM, { CR, BDMA } },
02520 { "bsoa+", BBOCB(16,BOT,CBSO,1,0), BBOATCB_MASK, PPCCOM, { CR, BDPA } },
02521 { "bsoa", BBOCB(16,BOT,CBSO,1,0), BBOATCB_MASK, COM, { CR, BDA } },
02522 { "bsola-", BBOCB(16,BOT,CBSO,1,1), BBOATCB_MASK, PPCCOM, { CR, BDMA } },
02523 { "bsola+", BBOCB(16,BOT,CBSO,1,1), BBOATCB_MASK, PPCCOM, { CR, BDPA } },
02524 { "bsola", BBOCB(16,BOT,CBSO,1,1), BBOATCB_MASK, COM, { CR, BDA } },
02525 { "bun-", BBOCB(16,BOT,CBSO,0,0), BBOATCB_MASK, PPCCOM, { CR, BDM } },
02526 { "bun+", BBOCB(16,BOT,CBSO,0,0), BBOATCB_MASK, PPCCOM, { CR, BDP } },
02527 { "bun", BBOCB(16,BOT,CBSO,0,0), BBOATCB_MASK, PPCCOM, { CR, BD } },
02528 { "bunl-", BBOCB(16,BOT,CBSO,0,1), BBOATCB_MASK, PPCCOM, { CR, BDM } },
02529 { "bunl+", BBOCB(16,BOT,CBSO,0,1), BBOATCB_MASK, PPCCOM, { CR, BDP } },
02530 { "bunl", BBOCB(16,BOT,CBSO,0,1), BBOATCB_MASK, PPCCOM, { CR, BD } },
02531 { "buna-", BBOCB(16,BOT,CBSO,1,0), BBOATCB_MASK, PPCCOM, { CR, BDMA } },
02532 { "buna+", BBOCB(16,BOT,CBSO,1,0), BBOATCB_MASK, PPCCOM, { CR, BDPA } },
02533 { "buna", BBOCB(16,BOT,CBSO,1,0), BBOATCB_MASK, PPCCOM, { CR, BDA } },
02534 { "bunla-", BBOCB(16,BOT,CBSO,1,1), BBOATCB_MASK, PPCCOM, { CR, BDMA } },
02535 { "bunla+", BBOCB(16,BOT,CBSO,1,1), BBOATCB_MASK, PPCCOM, { CR, BDPA } },
02536 { "bunla", BBOCB(16,BOT,CBSO,1,1), BBOATCB_MASK, PPCCOM, { CR, BDA } },
02537 { "bge-", BBOCB(16,BOF,CBLT,0,0), BBOATCB_MASK, PPCCOM, { CR, BDM } },
02538 { "bge+", BBOCB(16,BOF,CBLT,0,0), BBOATCB_MASK, PPCCOM, { CR, BDP } },
02539 { "bge", BBOCB(16,BOF,CBLT,0,0), BBOATCB_MASK, COM, { CR, BD } },
02540 { "bgel-", BBOCB(16,BOF,CBLT,0,1), BBOATCB_MASK, PPCCOM, { CR, BDM } },
02541 { "bgel+", BBOCB(16,BOF,CBLT,0,1), BBOATCB_MASK, PPCCOM, { CR, BDP } },
02542 { "bgel", BBOCB(16,BOF,CBLT,0,1), BBOATCB_MASK, COM, { CR, BD } },
02543 { "bgea-", BBOCB(16,BOF,CBLT,1,0), BBOATCB_MASK, PPCCOM, { CR, BDMA } },
02544 { "bgea+", BBOCB(16,BOF,CBLT,1,0), BBOATCB_MASK, PPCCOM, { CR, BDPA } },
02545 { "bgea", BBOCB(16,BOF,CBLT,1,0), BBOATCB_MASK, COM, { CR, BDA } },
02546 { "bgela-", BBOCB(16,BOF,CBLT,1,1), BBOATCB_MASK, PPCCOM, { CR, BDMA } },
02547 { "bgela+", BBOCB(16,BOF,CBLT,1,1), BBOATCB_MASK, PPCCOM, { CR, BDPA } },
02548 { "bgela", BBOCB(16,BOF,CBLT,1,1), BBOATCB_MASK, COM, { CR, BDA } },
02549 { "bnl-", BBOCB(16,BOF,CBLT,0,0), BBOATCB_MASK, PPCCOM, { CR, BDM } },
02550 { "bnl+", BBOCB(16,BOF,CBLT,0,0), BBOATCB_MASK, PPCCOM, { CR, BDP } },
02551 { "bnl", BBOCB(16,BOF,CBLT,0,0), BBOATCB_MASK, COM, { CR, BD } },
02552 { "bnll-", BBOCB(16,BOF,CBLT,0,1), BBOATCB_MASK, PPCCOM, { CR, BDM } },
02553 { "bnll+", BBOCB(16,BOF,CBLT,0,1), BBOATCB_MASK, PPCCOM, { CR, BDP } },
02554 { "bnll", BBOCB(16,BOF,CBLT,0,1), BBOATCB_MASK, COM, { CR, BD } },
02555 { "bnla-", BBOCB(16,BOF,CBLT,1,0), BBOATCB_MASK, PPCCOM, { CR, BDMA } },
02556 { "bnla+", BBOCB(16,BOF,CBLT,1,0), BBOATCB_MASK, PPCCOM, { CR, BDPA } },
02557 { "bnla", BBOCB(16,BOF,CBLT,1,0), BBOATCB_MASK, COM, { CR, BDA } },
02558 { "bnlla-", BBOCB(16,BOF,CBLT,1,1), BBOATCB_MASK, PPCCOM, { CR, BDMA } },
02559 { "bnlla+", BBOCB(16,BOF,CBLT,1,1), BBOATCB_MASK, PPCCOM, { CR, BDPA } },
02560 { "bnlla", BBOCB(16,BOF,CBLT,1,1), BBOATCB_MASK, COM, { CR, BDA } },
02561 { "ble-", BBOCB(16,BOF,CBGT,0,0), BBOATCB_MASK, PPCCOM, { CR, BDM } },
02562 { "ble+", BBOCB(16,BOF,CBGT,0,0), BBOATCB_MASK, PPCCOM, { CR, BDP } },
02563 { "ble", BBOCB(16,BOF,CBGT,0,0), BBOATCB_MASK, COM, { CR, BD } },
02564 { "blel-", BBOCB(16,BOF,CBGT,0,1), BBOATCB_MASK, PPCCOM, { CR, BDM } },
02565 { "blel+", BBOCB(16,BOF,CBGT,0,1), BBOATCB_MASK, PPCCOM, { CR, BDP } },
02566 { "blel", BBOCB(16,BOF,CBGT,0,1), BBOATCB_MASK, COM, { CR, BD } },
02567 { "blea-", BBOCB(16,BOF,CBGT,1,0), BBOATCB_MASK, PPCCOM, { CR, BDMA } },
02568 { "blea+", BBOCB(16,BOF,CBGT,1,0), BBOATCB_MASK, PPCCOM, { CR, BDPA } },
02569 { "blea", BBOCB(16,BOF,CBGT,1,0), BBOATCB_MASK, COM, { CR, BDA } },
02570 { "blela-", BBOCB(16,BOF,CBGT,1,1), BBOATCB_MASK, PPCCOM, { CR, BDMA } },
02571 { "blela+", BBOCB(16,BOF,CBGT,1,1), BBOATCB_MASK, PPCCOM, { CR, BDPA } },
02572 { "blela", BBOCB(16,BOF,CBGT,1,1), BBOATCB_MASK, COM, { CR, BDA } },
02573 { "bng-", BBOCB(16,BOF,CBGT,0,0), BBOATCB_MASK, PPCCOM, { CR, BDM } },
02574 { "bng+", BBOCB(16,BOF,CBGT,0,0), BBOATCB_MASK, PPCCOM, { CR, BDP } },
02575 { "bng", BBOCB(16,BOF,CBGT,0,0), BBOATCB_MASK, COM, { CR, BD } },
02576 { "bngl-", BBOCB(16,BOF,CBGT,0,1), BBOATCB_MASK, PPCCOM, { CR, BDM } },
02577 { "bngl+", BBOCB(16,BOF,CBGT,0,1), BBOATCB_MASK, PPCCOM, { CR, BDP } },
02578 { "bngl", BBOCB(16,BOF,CBGT,0,1), BBOATCB_MASK, COM, { CR, BD } },
02579 { "bnga-", BBOCB(16,BOF,CBGT,1,0), BBOATCB_MASK, PPCCOM, { CR, BDMA } },
02580 { "bnga+", BBOCB(16,BOF,CBGT,1,0), BBOATCB_MASK, PPCCOM, { CR, BDPA } },
02581 { "bnga", BBOCB(16,BOF,CBGT,1,0), BBOATCB_MASK, COM, { CR, BDA } },
02582 { "bngla-", BBOCB(16,BOF,CBGT,1,1), BBOATCB_MASK, PPCCOM, { CR, BDMA } },
02583 { "bngla+", BBOCB(16,BOF,CBGT,1,1), BBOATCB_MASK, PPCCOM, { CR, BDPA } },
02584 { "bngla", BBOCB(16,BOF,CBGT,1,1), BBOATCB_MASK, COM, { CR, BDA } },
02585 { "bne-", BBOCB(16,BOF,CBEQ,0,0), BBOATCB_MASK, PPCCOM, { CR, BDM } },
02586 { "bne+", BBOCB(16,BOF,CBEQ,0,0), BBOATCB_MASK, PPCCOM, { CR, BDP } },
02587 { "bne", BBOCB(16,BOF,CBEQ,0,0), BBOATCB_MASK, COM, { CR, BD } },
02588 { "bnel-", BBOCB(16,BOF,CBEQ,0,1), BBOATCB_MASK, PPCCOM, { CR, BDM } },
02589 { "bnel+", BBOCB(16,BOF,CBEQ,0,1), BBOATCB_MASK, PPCCOM, { CR, BDP } },
02590 { "bnel", BBOCB(16,BOF,CBEQ,0,1), BBOATCB_MASK, COM, { CR, BD } },
02591 { "bnea-", BBOCB(16,BOF,CBEQ,1,0), BBOATCB_MASK, PPCCOM, { CR, BDMA } },
02592 { "bnea+", BBOCB(16,BOF,CBEQ,1,0), BBOATCB_MASK, PPCCOM, { CR, BDPA } },
02593 { "bnea", BBOCB(16,BOF,CBEQ,1,0), BBOATCB_MASK, COM, { CR, BDA } },
02594 { "bnela-", BBOCB(16,BOF,CBEQ,1,1), BBOATCB_MASK, PPCCOM, { CR, BDMA } },
02595 { "bnela+", BBOCB(16,BOF,CBEQ,1,1), BBOATCB_MASK, PPCCOM, { CR, BDPA } },
02596 { "bnela", BBOCB(16,BOF,CBEQ,1,1), BBOATCB_MASK, COM, { CR, BDA } },
02597 { "bns-", BBOCB(16,BOF,CBSO,0,0), BBOATCB_MASK, PPCCOM, { CR, BDM } },
02598 { "bns+", BBOCB(16,BOF,CBSO,0,0), BBOATCB_MASK, PPCCOM, { CR, BDP } },
02599 { "bns", BBOCB(16,BOF,CBSO,0,0), BBOATCB_MASK, COM, { CR, BD } },
02600 { "bnsl-", BBOCB(16,BOF,CBSO,0,1), BBOATCB_MASK, PPCCOM, { CR, BDM } },
02601 { "bnsl+", BBOCB(16,BOF,CBSO,0,1), BBOATCB_MASK, PPCCOM, { CR, BDP } },
02602 { "bnsl", BBOCB(16,BOF,CBSO,0,1), BBOATCB_MASK, COM, { CR, BD } },
02603 { "bnsa-", BBOCB(16,BOF,CBSO,1,0), BBOATCB_MASK, PPCCOM, { CR, BDMA } },
02604 { "bnsa+", BBOCB(16,BOF,CBSO,1,0), BBOATCB_MASK, PPCCOM, { CR, BDPA } },
02605 { "bnsa", BBOCB(16,BOF,CBSO,1,0), BBOATCB_MASK, COM, { CR, BDA } },
02606 { "bnsla-", BBOCB(16,BOF,CBSO,1,1), BBOATCB_MASK, PPCCOM, { CR, BDMA } },
02607 { "bnsla+", BBOCB(16,BOF,CBSO,1,1), BBOATCB_MASK, PPCCOM, { CR, BDPA } },
02608 { "bnsla", BBOCB(16,BOF,CBSO,1,1), BBOATCB_MASK, COM, { CR, BDA } },
02609 { "bnu-", BBOCB(16,BOF,CBSO,0,0), BBOATCB_MASK, PPCCOM, { CR, BDM } },
02610 { "bnu+", BBOCB(16,BOF,CBSO,0,0), BBOATCB_MASK, PPCCOM, { CR, BDP } },
02611 { "bnu", BBOCB(16,BOF,CBSO,0,0), BBOATCB_MASK, PPCCOM, { CR, BD } },
02612 { "bnul-", BBOCB(16,BOF,CBSO,0,1), BBOATCB_MASK, PPCCOM, { CR, BDM } },
02613 { "bnul+", BBOCB(16,BOF,CBSO,0,1), BBOATCB_MASK, PPCCOM, { CR, BDP } },
02614 { "bnul", BBOCB(16,BOF,CBSO,0,1), BBOATCB_MASK, PPCCOM, { CR, BD } },
02615 { "bnua-", BBOCB(16,BOF,CBSO,1,0), BBOATCB_MASK, PPCCOM, { CR, BDMA } },
02616 { "bnua+", BBOCB(16,BOF,CBSO,1,0), BBOATCB_MASK, PPCCOM, { CR, BDPA } },
02617 { "bnua", BBOCB(16,BOF,CBSO,1,0), BBOATCB_MASK, PPCCOM, { CR, BDA } },
02618 { "bnula-", BBOCB(16,BOF,CBSO,1,1), BBOATCB_MASK, PPCCOM, { CR, BDMA } },
02619 { "bnula+", BBOCB(16,BOF,CBSO,1,1), BBOATCB_MASK, PPCCOM, { CR, BDPA } },
02620 { "bnula", BBOCB(16,BOF,CBSO,1,1), BBOATCB_MASK, PPCCOM, { CR, BDA } },
02621 { "bdnzt-", BBO(16,BODNZT,0,0), BBOY_MASK, NOPOWER4, { BI, BDM } },
02622 { "bdnzt+", BBO(16,BODNZT,0,0), BBOY_MASK, NOPOWER4, { BI, BDP } },
02623 { "bdnzt", BBO(16,BODNZT,0,0), BBOY_MASK, PPCCOM, { BI, BD } },
02624 { "bdnztl-", BBO(16,BODNZT,0,1), BBOY_MASK, NOPOWER4, { BI, BDM } },
02625 { "bdnztl+", BBO(16,BODNZT,0,1), BBOY_MASK, NOPOWER4, { BI, BDP } },
02626 { "bdnztl", BBO(16,BODNZT,0,1), BBOY_MASK, PPCCOM, { BI, BD } },
02627 { "bdnzta-", BBO(16,BODNZT,1,0), BBOY_MASK, NOPOWER4, { BI, BDMA } },
02628 { "bdnzta+", BBO(16,BODNZT,1,0), BBOY_MASK, NOPOWER4, { BI, BDPA } },
02629 { "bdnzta", BBO(16,BODNZT,1,0), BBOY_MASK, PPCCOM, { BI, BDA } },
02630 { "bdnztla-",BBO(16,BODNZT,1,1), BBOY_MASK, NOPOWER4, { BI, BDMA } },
02631 { "bdnztla+",BBO(16,BODNZT,1,1), BBOY_MASK, NOPOWER4, { BI, BDPA } },
02632 { "bdnztla", BBO(16,BODNZT,1,1), BBOY_MASK, PPCCOM, { BI, BDA } },
02633 { "bdnzf-", BBO(16,BODNZF,0,0), BBOY_MASK, NOPOWER4, { BI, BDM } },
02634 { "bdnzf+", BBO(16,BODNZF,0,0), BBOY_MASK, NOPOWER4, { BI, BDP } },
02635 { "bdnzf", BBO(16,BODNZF,0,0), BBOY_MASK, PPCCOM, { BI, BD } },
02636 { "bdnzfl-", BBO(16,BODNZF,0,1), BBOY_MASK, NOPOWER4, { BI, BDM } },
02637 { "bdnzfl+", BBO(16,BODNZF,0,1), BBOY_MASK, NOPOWER4, { BI, BDP } },
02638 { "bdnzfl", BBO(16,BODNZF,0,1), BBOY_MASK, PPCCOM, { BI, BD } },
02639 { "bdnzfa-", BBO(16,BODNZF,1,0), BBOY_MASK, NOPOWER4, { BI, BDMA } },
02640 { "bdnzfa+", BBO(16,BODNZF,1,0), BBOY_MASK, NOPOWER4, { BI, BDPA } },
02641 { "bdnzfa", BBO(16,BODNZF,1,0), BBOY_MASK, PPCCOM, { BI, BDA } },
02642 { "bdnzfla-",BBO(16,BODNZF,1,1), BBOY_MASK, NOPOWER4, { BI, BDMA } },
02643 { "bdnzfla+",BBO(16,BODNZF,1,1), BBOY_MASK, NOPOWER4, { BI, BDPA } },
02644 { "bdnzfla", BBO(16,BODNZF,1,1), BBOY_MASK, PPCCOM, { BI, BDA } },
02645 { "bt-", BBO(16,BOT,0,0), BBOAT_MASK, PPCCOM, { BI, BDM } },
02646 { "bt+", BBO(16,BOT,0,0), BBOAT_MASK, PPCCOM, { BI, BDP } },
02647 { "bt", BBO(16,BOT,0,0), BBOAT_MASK, PPCCOM, { BI, BD } },
02648 { "bbt", BBO(16,BOT,0,0), BBOAT_MASK, PWRCOM, { BI, BD } },
02649 { "btl-", BBO(16,BOT,0,1), BBOAT_MASK, PPCCOM, { BI, BDM } },
02650 { "btl+", BBO(16,BOT,0,1), BBOAT_MASK, PPCCOM, { BI, BDP } },
02651 { "btl", BBO(16,BOT,0,1), BBOAT_MASK, PPCCOM, { BI, BD } },
02652 { "bbtl", BBO(16,BOT,0,1), BBOAT_MASK, PWRCOM, { BI, BD } },
02653 { "bta-", BBO(16,BOT,1,0), BBOAT_MASK, PPCCOM, { BI, BDMA } },
02654 { "bta+", BBO(16,BOT,1,0), BBOAT_MASK, PPCCOM, { BI, BDPA } },
02655 { "bta", BBO(16,BOT,1,0), BBOAT_MASK, PPCCOM, { BI, BDA } },
02656 { "bbta", BBO(16,BOT,1,0), BBOAT_MASK, PWRCOM, { BI, BDA } },
02657 { "btla-", BBO(16,BOT,1,1), BBOAT_MASK, PPCCOM, { BI, BDMA } },
02658 { "btla+", BBO(16,BOT,1,1), BBOAT_MASK, PPCCOM, { BI, BDPA } },
02659 { "btla", BBO(16,BOT,1,1), BBOAT_MASK, PPCCOM, { BI, BDA } },
02660 { "bbtla", BBO(16,BOT,1,1), BBOAT_MASK, PWRCOM, { BI, BDA } },
02661 { "bf-", BBO(16,BOF,0,0), BBOAT_MASK, PPCCOM, { BI, BDM } },
02662 { "bf+", BBO(16,BOF,0,0), BBOAT_MASK, PPCCOM, { BI, BDP } },
02663 { "bf", BBO(16,BOF,0,0), BBOAT_MASK, PPCCOM, { BI, BD } },
02664 { "bbf", BBO(16,BOF,0,0), BBOAT_MASK, PWRCOM, { BI, BD } },
02665 { "bfl-", BBO(16,BOF,0,1), BBOAT_MASK, PPCCOM, { BI, BDM } },
02666 { "bfl+", BBO(16,BOF,0,1), BBOAT_MASK, PPCCOM, { BI, BDP } },
02667 { "bfl", BBO(16,BOF,0,1), BBOAT_MASK, PPCCOM, { BI, BD } },
02668 { "bbfl", BBO(16,BOF,0,1), BBOAT_MASK, PWRCOM, { BI, BD } },
02669 { "bfa-", BBO(16,BOF,1,0), BBOAT_MASK, PPCCOM, { BI, BDMA } },
02670 { "bfa+", BBO(16,BOF,1,0), BBOAT_MASK, PPCCOM, { BI, BDPA } },
02671 { "bfa", BBO(16,BOF,1,0), BBOAT_MASK, PPCCOM, { BI, BDA } },
02672 { "bbfa", BBO(16,BOF,1,0), BBOAT_MASK, PWRCOM, { BI, BDA } },
02673 { "bfla-", BBO(16,BOF,1,1), BBOAT_MASK, PPCCOM, { BI, BDMA } },
02674 { "bfla+", BBO(16,BOF,1,1), BBOAT_MASK, PPCCOM, { BI, BDPA } },
02675 { "bfla", BBO(16,BOF,1,1), BBOAT_MASK, PPCCOM, { BI, BDA } },
02676 { "bbfla", BBO(16,BOF,1,1), BBOAT_MASK, PWRCOM, { BI, BDA } },
02677 { "bdzt-", BBO(16,BODZT,0,0), BBOY_MASK, NOPOWER4, { BI, BDM } },
02678 { "bdzt+", BBO(16,BODZT,0,0), BBOY_MASK, NOPOWER4, { BI, BDP } },
02679 { "bdzt", BBO(16,BODZT,0,0), BBOY_MASK, PPCCOM, { BI, BD } },
02680 { "bdztl-", BBO(16,BODZT,0,1), BBOY_MASK, NOPOWER4, { BI, BDM } },
02681 { "bdztl+", BBO(16,BODZT,0,1), BBOY_MASK, NOPOWER4, { BI, BDP } },
02682 { "bdztl", BBO(16,BODZT,0,1), BBOY_MASK, PPCCOM, { BI, BD } },
02683 { "bdzta-", BBO(16,BODZT,1,0), BBOY_MASK, NOPOWER4, { BI, BDMA } },
02684 { "bdzta+", BBO(16,BODZT,1,0), BBOY_MASK, NOPOWER4, { BI, BDPA } },
02685 { "bdzta", BBO(16,BODZT,1,0), BBOY_MASK, PPCCOM, { BI, BDA } },
02686 { "bdztla-", BBO(16,BODZT,1,1), BBOY_MASK, NOPOWER4, { BI, BDMA } },
02687 { "bdztla+", BBO(16,BODZT,1,1), BBOY_MASK, NOPOWER4, { BI, BDPA } },
02688 { "bdztla", BBO(16,BODZT,1,1), BBOY_MASK, PPCCOM, { BI, BDA } },
02689 { "bdzf-", BBO(16,BODZF,0,0), BBOY_MASK, NOPOWER4, { BI, BDM } },
02690 { "bdzf+", BBO(16,BODZF,0,0), BBOY_MASK, NOPOWER4, { BI, BDP } },
02691 { "bdzf", BBO(16,BODZF,0,0), BBOY_MASK, PPCCOM, { BI, BD } },
02692 { "bdzfl-", BBO(16,BODZF,0,1), BBOY_MASK, NOPOWER4, { BI, BDM } },
02693 { "bdzfl+", BBO(16,BODZF,0,1), BBOY_MASK, NOPOWER4, { BI, BDP } },
02694 { "bdzfl", BBO(16,BODZF,0,1), BBOY_MASK, PPCCOM, { BI, BD } },
02695 { "bdzfa-", BBO(16,BODZF,1,0), BBOY_MASK, NOPOWER4, { BI, BDMA } },
02696 { "bdzfa+", BBO(16,BODZF,1,0), BBOY_MASK, NOPOWER4, { BI, BDPA } },
02697 { "bdzfa", BBO(16,BODZF,1,0), BBOY_MASK, PPCCOM, { BI, BDA } },
02698 { "bdzfla-", BBO(16,BODZF,1,1), BBOY_MASK, NOPOWER4, { BI, BDMA } },
02699 { "bdzfla+", BBO(16,BODZF,1,1), BBOY_MASK, NOPOWER4, { BI, BDPA } },
02700 { "bdzfla", BBO(16,BODZF,1,1), BBOY_MASK, PPCCOM, { BI, BDA } },
02701 { "bc-", B(16,0,0), B_MASK, PPCCOM, { BOE, BI, BDM } },
02702 { "bc+", B(16,0,0), B_MASK, PPCCOM, { BOE, BI, BDP } },
02703 { "bc", B(16,0,0), B_MASK, COM, { BO, BI, BD } },
02704 { "bcl-", B(16,0,1), B_MASK, PPCCOM, { BOE, BI, BDM } },
02705 { "bcl+", B(16,0,1), B_MASK, PPCCOM, { BOE, BI, BDP } },
02706 { "bcl", B(16,0,1), B_MASK, COM, { BO, BI, BD } },
02707 { "bca-", B(16,1,0), B_MASK, PPCCOM, { BOE, BI, BDMA } },
02708 { "bca+", B(16,1,0), B_MASK, PPCCOM, { BOE, BI, BDPA } },
02709 { "bca", B(16,1,0), B_MASK, COM, { BO, BI, BDA } },
02710 { "bcla-", B(16,1,1), B_MASK, PPCCOM, { BOE, BI, BDMA } },
02711 { "bcla+", B(16,1,1), B_MASK, PPCCOM, { BOE, BI, BDPA } },
02712 { "bcla", B(16,1,1), B_MASK, COM, { BO, BI, BDA } },
02713
02714 { "sc", SC(17,1,0), 0xffffffff, PPC, { 0 } },
02715 { "svc", SC(17,0,0), SC_MASK, POWER, { LEV, FL1, FL2 } },
02716 { "svcl", SC(17,0,1), SC_MASK, POWER, { LEV, FL1, FL2 } },
02717 { "svca", SC(17,1,0), SC_MASK, PWRCOM, { SV } },
02718 { "svcla", SC(17,1,1), SC_MASK, POWER, { SV } },
02719
02720 { "b", B(18,0,0), B_MASK, COM, { LI } },
02721 { "bl", B(18,0,1), B_MASK, COM, { LI } },
02722 { "ba", B(18,1,0), B_MASK, COM, { LIA } },
02723 { "bla", B(18,1,1), B_MASK, COM, { LIA } },
02724
02725 { "mcrf", XL(19,0), XLBB_MASK|(3 << 21)|(3 << 16), COM, { BF, BFA } },
02726
02727 { "blr", XLO(19,BOU,16,0), XLBOBIBB_MASK, PPCCOM, { 0 } },
02728 { "br", XLO(19,BOU,16,0), XLBOBIBB_MASK, PWRCOM, { 0 } },
02729 { "blrl", XLO(19,BOU,16,1), XLBOBIBB_MASK, PPCCOM, { 0 } },
02730 { "brl", XLO(19,BOU,16,1), XLBOBIBB_MASK, PWRCOM, { 0 } },
02731 { "bdnzlr", XLO(19,BODNZ,16,0), XLBOBIBB_MASK, PPCCOM, { 0 } },
02732 { "bdnzlr-", XLO(19,BODNZ,16,0), XLBOBIBB_MASK, NOPOWER4, { 0 } },
02733 { "bdnzlr-", XLO(19,BODNZM4,16,0), XLBOBIBB_MASK, POWER4, { 0 } },
02734 { "bdnzlr+", XLO(19,BODNZP,16,0), XLBOBIBB_MASK, NOPOWER4, { 0 } },
02735 { "bdnzlr+", XLO(19,BODNZP4,16,0), XLBOBIBB_MASK, POWER4, { 0 } },
02736 { "bdnzlrl", XLO(19,BODNZ,16,1), XLBOBIBB_MASK, PPCCOM, { 0 } },
02737 { "bdnzlrl-",XLO(19,BODNZ,16,1), XLBOBIBB_MASK, NOPOWER4, { 0 } },
02738 { "bdnzlrl-",XLO(19,BODNZM4,16,1), XLBOBIBB_MASK, POWER4, { 0 } },
02739 { "bdnzlrl+",XLO(19,BODNZP,16,1), XLBOBIBB_MASK, NOPOWER4, { 0 } },
02740 { "bdnzlrl+",XLO(19,BODNZP4,16,1), XLBOBIBB_MASK, POWER4, { 0 } },
02741 { "bdzlr", XLO(19,BODZ,16,0), XLBOBIBB_MASK, PPCCOM, { 0 } },
02742 { "bdzlr-", XLO(19,BODZ,16,0), XLBOBIBB_MASK, NOPOWER4, { 0 } },
02743 { "bdzlr-", XLO(19,BODZM4,16,0), XLBOBIBB_MASK, POWER4, { 0 } },
02744 { "bdzlr+", XLO(19,BODZP,16,0), XLBOBIBB_MASK, NOPOWER4, { 0 } },
02745 { "bdzlr+", XLO(19,BODZP4,16,0), XLBOBIBB_MASK, POWER4, { 0 } },
02746 { "bdzlrl", XLO(19,BODZ,16,1), XLBOBIBB_MASK, PPCCOM, { 0 } },
02747 { "bdzlrl-", XLO(19,BODZ,16,1), XLBOBIBB_MASK, NOPOWER4, { 0 } },
02748 { "bdzlrl-", XLO(19,BODZM4,16,1), XLBOBIBB_MASK, POWER4, { 0 } },
02749 { "bdzlrl+", XLO(19,BODZP,16,1), XLBOBIBB_MASK, NOPOWER4, { 0 } },
02750 { "bdzlrl+", XLO(19,BODZP4,16,1), XLBOBIBB_MASK, POWER4, { 0 } },
02751 { "bltlr", XLOCB(19,BOT,CBLT,16,0), XLBOCBBB_MASK, PPCCOM, { CR } },
02752 { "bltlr-", XLOCB(19,BOT,CBLT,16,0), XLBOCBBB_MASK, NOPOWER4, { CR } },
02753 { "bltlr-", XLOCB(19,BOTM4,CBLT,16,0), XLBOCBBB_MASK, POWER4, { CR } },
02754 { "bltlr+", XLOCB(19,BOTP,CBLT,16,0), XLBOCBBB_MASK, NOPOWER4, { CR } },
02755 { "bltlr+", XLOCB(19,BOTP4,CBLT,16,0), XLBOCBBB_MASK, POWER4, { CR } },
02756 { "bltr", XLOCB(19,BOT,CBLT,16,0), XLBOCBBB_MASK, PWRCOM, { CR } },
02757 { "bltlrl", XLOCB(19,BOT,CBLT,16,1), XLBOCBBB_MASK, PPCCOM, { CR } },
02758 { "bltlrl-", XLOCB(19,BOT,CBLT,16,1), XLBOCBBB_MASK, NOPOWER4, { CR } },
02759 { "bltlrl-", XLOCB(19,BOTM4,CBLT,16,1), XLBOCBBB_MASK, POWER4, { CR } },
02760 { "bltlrl+", XLOCB(19,BOTP,CBLT,16,1), XLBOCBBB_MASK, NOPOWER4, { CR } },
02761 { "bltlrl+", XLOCB(19,BOTP4,CBLT,16,1), XLBOCBBB_MASK, POWER4, { CR } },
02762 { "bltrl", XLOCB(19,BOT,CBLT,16,1), XLBOCBBB_MASK, PWRCOM, { CR } },
02763 { "bgtlr", XLOCB(19,BOT,CBGT,16,0), XLBOCBBB_MASK, PPCCOM, { CR } },
02764 { "bgtlr-", XLOCB(19,BOT,CBGT,16,0), XLBOCBBB_MASK, NOPOWER4, { CR } },
02765 { "bgtlr-", XLOCB(19,BOTM4,CBGT,16,0), XLBOCBBB_MASK, POWER4, { CR } },
02766 { "bgtlr+", XLOCB(19,BOTP,CBGT,16,0), XLBOCBBB_MASK, NOPOWER4, { CR } },
02767 { "bgtlr+", XLOCB(19,BOTP4,CBGT,16,0), XLBOCBBB_MASK, POWER4, { CR } },
02768 { "bgtr", XLOCB(19,BOT,CBGT,16,0), XLBOCBBB_MASK, PWRCOM, { CR } },
02769 { "bgtlrl", XLOCB(19,BOT,CBGT,16,1), XLBOCBBB_MASK, PPCCOM, { CR } },
02770 { "bgtlrl-", XLOCB(19,BOT,CBGT,16,1), XLBOCBBB_MASK, NOPOWER4, { CR } },
02771 { "bgtlrl-", XLOCB(19,BOTM4,CBGT,16,1), XLBOCBBB_MASK, POWER4, { CR } },
02772 { "bgtlrl+", XLOCB(19,BOTP,CBGT,16,1), XLBOCBBB_MASK, NOPOWER4, { CR } },
02773 { "bgtlrl+", XLOCB(19,BOTP4,CBGT,16,1), XLBOCBBB_MASK, POWER4, { CR } },
02774 { "bgtrl", XLOCB(19,BOT,CBGT,16,1), XLBOCBBB_MASK, PWRCOM, { CR } },
02775 { "beqlr", XLOCB(19,BOT,CBEQ,16,0), XLBOCBBB_MASK, PPCCOM, { CR } },
02776 { "beqlr-", XLOCB(19,BOT,CBEQ,16,0), XLBOCBBB_MASK, NOPOWER4, { CR } },
02777 { "beqlr-", XLOCB(19,BOTM4,CBEQ,16,0), XLBOCBBB_MASK, POWER4, { CR } },
02778 { "beqlr+", XLOCB(19,BOTP,CBEQ,16,0), XLBOCBBB_MASK, NOPOWER4, { CR } },
02779 { "beqlr+", XLOCB(19,BOTP4,CBEQ,16,0), XLBOCBBB_MASK, POWER4, { CR } },
02780 { "beqr", XLOCB(19,BOT,CBEQ,16,0), XLBOCBBB_MASK, PWRCOM, { CR } },
02781 { "beqlrl", XLOCB(19,BOT,CBEQ,16,1), XLBOCBBB_MASK, PPCCOM, { CR } },
02782 { "beqlrl-", XLOCB(19,BOT,CBEQ,16,1), XLBOCBBB_MASK, NOPOWER4, { CR } },
02783 { "beqlrl-", XLOCB(19,BOTM4,CBEQ,16,1), XLBOCBBB_MASK, POWER4, { CR } },
02784 { "beqlrl+", XLOCB(19,BOTP,CBEQ,16,1), XLBOCBBB_MASK, NOPOWER4, { CR } },
02785 { "beqlrl+", XLOCB(19,BOTP4,CBEQ,16,1), XLBOCBBB_MASK, POWER4, { CR } },
02786 { "beqrl", XLOCB(19,BOT,CBEQ,16,1), XLBOCBBB_MASK, PWRCOM, { CR } },
02787 { "bsolr", XLOCB(19,BOT,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, { CR } },
02788 { "bsolr-", XLOCB(19,BOT,CBSO,16,0), XLBOCBBB_MASK, NOPOWER4, { CR } },
02789 { "bsolr-", XLOCB(19,BOTM4,CBSO,16,0), XLBOCBBB_MASK, POWER4, { CR } },
02790 { "bsolr+", XLOCB(19,BOTP,CBSO,16,0), XLBOCBBB_MASK, NOPOWER4, { CR } },
02791 { "bsolr+", XLOCB(19,BOTP4,CBSO,16,0), XLBOCBBB_MASK, POWER4, { CR } },
02792 { "bsor", XLOCB(19,BOT,CBSO,16,0), XLBOCBBB_MASK, PWRCOM, { CR } },
02793 { "bsolrl", XLOCB(19,BOT,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, { CR } },
02794 { "bsolrl-", XLOCB(19,BOT,CBSO,16,1), XLBOCBBB_MASK, NOPOWER4, { CR } },
02795 { "bsolrl-", XLOCB(19,BOTM4,CBSO,16,1), XLBOCBBB_MASK, POWER4, { CR } },
02796 { "bsolrl+", XLOCB(19,BOTP,CBSO,16,1), XLBOCBBB_MASK, NOPOWER4, { CR } },
02797 { "bsolrl+", XLOCB(19,BOTP4,CBSO,16,1), XLBOCBBB_MASK, POWER4, { CR } },
02798 { "bsorl", XLOCB(19,BOT,CBSO,16,1), XLBOCBBB_MASK, PWRCOM, { CR } },
02799 { "bunlr", XLOCB(19,BOT,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, { CR } },
02800 { "bunlr-", XLOCB(19,BOT,CBSO,16,0), XLBOCBBB_MASK, NOPOWER4, { CR } },
02801 { "bunlr-", XLOCB(19,BOTM4,CBSO,16,0), XLBOCBBB_MASK, POWER4, { CR } },
02802 { "bunlr+", XLOCB(19,BOTP,CBSO,16,0), XLBOCBBB_MASK, NOPOWER4, { CR } },
02803 { "bunlr+", XLOCB(19,BOTP4,CBSO,16,0), XLBOCBBB_MASK, POWER4, { CR } },
02804 { "bunlrl", XLOCB(19,BOT,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, { CR } },
02805 { "bunlrl-", XLOCB(19,BOT,CBSO,16,1), XLBOCBBB_MASK, NOPOWER4, { CR } },
02806 { "bunlrl-", XLOCB(19,BOTM4,CBSO,16,1), XLBOCBBB_MASK, POWER4, { CR } },
02807 { "bunlrl+", XLOCB(19,BOTP,CBSO,16,1), XLBOCBBB_MASK, NOPOWER4, { CR } },
02808 { "bunlrl+", XLOCB(19,BOTP4,CBSO,16,1), XLBOCBBB_MASK, POWER4, { CR } },
02809 { "bgelr", XLOCB(19,BOF,CBLT,16,0), XLBOCBBB_MASK, PPCCOM, { CR } },
02810 { "bgelr-", XLOCB(19,BOF,CBLT,16,0), XLBOCBBB_MASK, NOPOWER4, { CR } },
02811 { "bgelr-", XLOCB(19,BOFM4,CBLT,16,0), XLBOCBBB_MASK, POWER4, { CR } },
02812 { "bgelr+", XLOCB(19,BOFP,CBLT,16,0), XLBOCBBB_MASK, NOPOWER4, { CR } },
02813 { "bgelr+", XLOCB(19,BOFP4,CBLT,16,0), XLBOCBBB_MASK, POWER4, { CR } },
02814 { "bger", XLOCB(19,BOF,CBLT,16,0), XLBOCBBB_MASK, PWRCOM, { CR } },
02815 { "bgelrl", XLOCB(19,BOF,CBLT,16,1), XLBOCBBB_MASK, PPCCOM, { CR } },
02816 { "bgelrl-", XLOCB(19,BOF,CBLT,16,1), XLBOCBBB_MASK, NOPOWER4, { CR } },
02817 { "bgelrl-", XLOCB(19,BOFM4,CBLT,16,1), XLBOCBBB_MASK, POWER4, { CR } },
02818 { "bgelrl+", XLOCB(19,BOFP,CBLT,16,1), XLBOCBBB_MASK, NOPOWER4, { CR } },
02819 { "bgelrl+", XLOCB(19,BOFP4,CBLT,16,1), XLBOCBBB_MASK, POWER4, { CR } },
02820 { "bgerl", XLOCB(19,BOF,CBLT,16,1), XLBOCBBB_MASK, PWRCOM, { CR } },
02821 { "bnllr", XLOCB(19,BOF,CBLT,16,0), XLBOCBBB_MASK, PPCCOM, { CR } },
02822 { "bnllr-", XLOCB(19,BOF,CBLT,16,0), XLBOCBBB_MASK, NOPOWER4, { CR } },
02823 { "bnllr-", XLOCB(19,BOFM4,CBLT,16,0), XLBOCBBB_MASK, POWER4, { CR } },
02824 { "bnllr+", XLOCB(19,BOFP,CBLT,16,0), XLBOCBBB_MASK, NOPOWER4, { CR } },
02825 { "bnllr+", XLOCB(19,BOFP4,CBLT,16,0), XLBOCBBB_MASK, POWER4, { CR } },
02826 { "bnlr", XLOCB(19,BOF,CBLT,16,0), XLBOCBBB_MASK, PWRCOM, { CR } },
02827 { "bnllrl", XLOCB(19,BOF,CBLT,16,1), XLBOCBBB_MASK, PPCCOM, { CR } },
02828 { "bnllrl-", XLOCB(19,BOF,CBLT,16,1), XLBOCBBB_MASK, NOPOWER4, { CR } },
02829 { "bnllrl-", XLOCB(19,BOFM4,CBLT,16,1), XLBOCBBB_MASK, POWER4, { CR } },
02830 { "bnllrl+", XLOCB(19,BOFP,CBLT,16,1), XLBOCBBB_MASK, NOPOWER4, { CR } },
02831 { "bnllrl+", XLOCB(19,BOFP4,CBLT,16,1), XLBOCBBB_MASK, POWER4, { CR } },
02832 { "bnlrl", XLOCB(19,BOF,CBLT,16,1), XLBOCBBB_MASK, PWRCOM, { CR } },
02833 { "blelr", XLOCB(19,BOF,CBGT,16,0), XLBOCBBB_MASK, PPCCOM, { CR } },
02834 { "blelr-", XLOCB(19,BOF,CBGT,16,0), XLBOCBBB_MASK, NOPOWER4, { CR } },
02835 { "blelr-", XLOCB(19,BOFM4,CBGT,16,0), XLBOCBBB_MASK, POWER4, { CR } },
02836 { "blelr+", XLOCB(19,BOFP,CBGT,16,0), XLBOCBBB_MASK, NOPOWER4, { CR } },
02837 { "blelr+", XLOCB(19,BOFP4,CBGT,16,0), XLBOCBBB_MASK, POWER4, { CR } },
02838 { "bler", XLOCB(19,BOF,CBGT,16,0), XLBOCBBB_MASK, PWRCOM, { CR } },
02839 { "blelrl", XLOCB(19,BOF,CBGT,16,1), XLBOCBBB_MASK, PPCCOM, { CR } },
02840 { "blelrl-", XLOCB(19,BOF,CBGT,16,1), XLBOCBBB_MASK, NOPOWER4, { CR } },
02841 { "blelrl-", XLOCB(19,BOFM4,CBGT,16,1), XLBOCBBB_MASK, POWER4, { CR } },
02842 { "blelrl+", XLOCB(19,BOFP,CBGT,16,1), XLBOCBBB_MASK, NOPOWER4, { CR } },
02843 { "blelrl+", XLOCB(19,BOFP4,CBGT,16,1), XLBOCBBB_MASK, POWER4, { CR } },
02844 { "blerl", XLOCB(19,BOF,CBGT,16,1), XLBOCBBB_MASK, PWRCOM, { CR } },
02845 { "bnglr", XLOCB(19,BOF,CBGT,16,0), XLBOCBBB_MASK, PPCCOM, { CR } },
02846 { "bnglr-", XLOCB(19,BOF,CBGT,16,0), XLBOCBBB_MASK, NOPOWER4, { CR } },
02847 { "bnglr-", XLOCB(19,BOFM4,CBGT,16,0), XLBOCBBB_MASK, POWER4, { CR } },
02848 { "bnglr+", XLOCB(19,BOFP,CBGT,16,0), XLBOCBBB_MASK, NOPOWER4, { CR } },
02849 { "bnglr+", XLOCB(19,BOFP4,CBGT,16,0), XLBOCBBB_MASK, POWER4, { CR } },
02850 { "bngr", XLOCB(19,BOF,CBGT,16,0), XLBOCBBB_MASK, PWRCOM, { CR } },
02851 { "bnglrl", XLOCB(19,BOF,CBGT,16,1), XLBOCBBB_MASK, PPCCOM, { CR } },
02852 { "bnglrl-", XLOCB(19,BOF,CBGT,16,1), XLBOCBBB_MASK, NOPOWER4, { CR } },
02853 { "bnglrl-", XLOCB(19,BOFM4,CBGT,16,1), XLBOCBBB_MASK, POWER4, { CR } },
02854 { "bnglrl+", XLOCB(19,BOFP,CBGT,16,1), XLBOCBBB_MASK, NOPOWER4, { CR } },
02855 { "bnglrl+", XLOCB(19,BOFP4,CBGT,16,1), XLBOCBBB_MASK, POWER4, { CR } },
02856 { "bngrl", XLOCB(19,BOF,CBGT,16,1), XLBOCBBB_MASK, PWRCOM, { CR } },
02857 { "bnelr", XLOCB(19,BOF,CBEQ,16,0), XLBOCBBB_MASK, PPCCOM, { CR } },
02858 { "bnelr-", XLOCB(19,BOF,CBEQ,16,0), XLBOCBBB_MASK, NOPOWER4, { CR } },
02859 { "bnelr-", XLOCB(19,BOFM4,CBEQ,16,0), XLBOCBBB_MASK, POWER4, { CR } },
02860 { "bnelr+", XLOCB(19,BOFP,CBEQ,16,0), XLBOCBBB_MASK, NOPOWER4, { CR } },
02861 { "bnelr+", XLOCB(19,BOFP4,CBEQ,16,0), XLBOCBBB_MASK, POWER4, { CR } },
02862 { "bner", XLOCB(19,BOF,CBEQ,16,0), XLBOCBBB_MASK, PWRCOM, { CR } },
02863 { "bnelrl", XLOCB(19,BOF,CBEQ,16,1), XLBOCBBB_MASK, PPCCOM, { CR } },
02864 { "bnelrl-", XLOCB(19,BOF,CBEQ,16,1), XLBOCBBB_MASK, NOPOWER4, { CR } },
02865 { "bnelrl-", XLOCB(19,BOFM4,CBEQ,16,1), XLBOCBBB_MASK, POWER4, { CR } },
02866 { "bnelrl+", XLOCB(19,BOFP,CBEQ,16,1), XLBOCBBB_MASK, NOPOWER4, { CR } },
02867 { "bnelrl+", XLOCB(19,BOFP4,CBEQ,16,1), XLBOCBBB_MASK, POWER4, { CR } },
02868 { "bnerl", XLOCB(19,BOF,CBEQ,16,1), XLBOCBBB_MASK, PWRCOM, { CR } },
02869 { "bnslr", XLOCB(19,BOF,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, { CR } },
02870 { "bnslr-", XLOCB(19,BOF,CBSO,16,0), XLBOCBBB_MASK, NOPOWER4, { CR } },
02871 { "bnslr-", XLOCB(19,BOFM4,CBSO,16,0), XLBOCBBB_MASK, POWER4, { CR } },
02872 { "bnslr+", XLOCB(19,BOFP,CBSO,16,0), XLBOCBBB_MASK, NOPOWER4, { CR } },
02873 { "bnslr+", XLOCB(19,BOFP4,CBSO,16,0), XLBOCBBB_MASK, POWER4, { CR } },
02874 { "bnsr", XLOCB(19,BOF,CBSO,16,0), XLBOCBBB_MASK, PWRCOM, { CR } },
02875 { "bnslrl", XLOCB(19,BOF,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, { CR } },
02876 { "bnslrl-", XLOCB(19,BOF,CBSO,16,1), XLBOCBBB_MASK, NOPOWER4, { CR } },
02877 { "bnslrl-", XLOCB(19,BOFM4,CBSO,16,1), XLBOCBBB_MASK, POWER4, { CR } },
02878 { "bnslrl+", XLOCB(19,BOFP,CBSO,16,1), XLBOCBBB_MASK, NOPOWER4, { CR } },
02879 { "bnslrl+", XLOCB(19,BOFP4,CBSO,16,1), XLBOCBBB_MASK, POWER4, { CR } },
02880 { "bnsrl", XLOCB(19,BOF,CBSO,16,1), XLBOCBBB_MASK, PWRCOM, { CR } },
02881 { "bnulr", XLOCB(19,BOF,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, { CR } },
02882 { "bnulr-", XLOCB(19,BOF,CBSO,16,0), XLBOCBBB_MASK, NOPOWER4, { CR } },
02883 { "bnulr-", XLOCB(19,BOFM4,CBSO,16,0), XLBOCBBB_MASK, POWER4, { CR } },
02884 { "bnulr+", XLOCB(19,BOFP,CBSO,16,0), XLBOCBBB_MASK, NOPOWER4, { CR } },
02885 { "bnulr+", XLOCB(19,BOFP4,CBSO,16,0), XLBOCBBB_MASK, POWER4, { CR } },
02886 { "bnulrl", XLOCB(19,BOF,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, { CR } },
02887 { "bnulrl-", XLOCB(19,BOF,CBSO,16,1), XLBOCBBB_MASK, NOPOWER4, { CR } },
02888 { "bnulrl-", XLOCB(19,BOFM4,CBSO,16,1), XLBOCBBB_MASK, POWER4, { CR } },
02889 { "bnulrl+", XLOCB(19,BOFP,CBSO,16,1), XLBOCBBB_MASK, NOPOWER4, { CR } },
02890 { "bnulrl+", XLOCB(19,BOFP4,CBSO,16,1), XLBOCBBB_MASK, POWER4, { CR } },
02891 { "btlr", XLO(19,BOT,16,0), XLBOBB_MASK, PPCCOM, { BI } },
02892 { "btlr-", XLO(19,BOT,16,0), XLBOBB_MASK, NOPOWER4, { BI } },
02893 { "btlr-", XLO(19,BOTM4,16,0), XLBOBB_MASK, POWER4, { BI } },
02894 { "btlr+", XLO(19,BOTP,16,0), XLBOBB_MASK, NOPOWER4, { BI } },
02895 { "btlr+", XLO(19,BOTP4,16,0), XLBOBB_MASK, POWER4, { BI } },
02896 { "bbtr", XLO(19,BOT,16,0), XLBOBB_MASK, PWRCOM, { BI } },
02897 { "btlrl", XLO(19,BOT,16,1), XLBOBB_MASK, PPCCOM, { BI } },
02898 { "btlrl-", XLO(19,BOT,16,1), XLBOBB_MASK, NOPOWER4, { BI } },
02899 { "btlrl-", XLO(19,BOTM4,16,1), XLBOBB_MASK, POWER4, { BI } },
02900 { "btlrl+", XLO(19,BOTP,16,1), XLBOBB_MASK, NOPOWER4, { BI } },
02901 { "btlrl+", XLO(19,BOTP4,16,1), XLBOBB_MASK, POWER4, { BI } },
02902 { "bbtrl", XLO(19,BOT,16,1), XLBOBB_MASK, PWRCOM, { BI } },
02903 { "bflr", XLO(19,BOF,16,0), XLBOBB_MASK, PPCCOM, { BI } },
02904 { "bflr-", XLO(19,BOF,16,0), XLBOBB_MASK, NOPOWER4, { BI } },
02905 { "bflr-", XLO(19,BOFM4,16,0), XLBOBB_MASK, POWER4, { BI } },
02906 { "bflr+", XLO(19,BOFP,16,0), XLBOBB_MASK, NOPOWER4, { BI } },
02907 { "bflr+", XLO(19,BOFP4,16,0), XLBOBB_MASK, POWER4, { BI } },
02908 { "bbfr", XLO(19,BOF,16,0), XLBOBB_MASK, PWRCOM, { BI } },
02909 { "bflrl", XLO(19,BOF,16,1), XLBOBB_MASK, PPCCOM, { BI } },
02910 { "bflrl-", XLO(19,BOF,16,1), XLBOBB_MASK, NOPOWER4, { BI } },
02911 { "bflrl-", XLO(19,BOFM4,16,1), XLBOBB_MASK, POWER4, { BI } },
02912 { "bflrl+", XLO(19,BOFP,16,1), XLBOBB_MASK, NOPOWER4, { BI } },
02913 { "bflrl+", XLO(19,BOFP4,16,1), XLBOBB_MASK, POWER4, { BI } },
02914 { "bbfrl", XLO(19,BOF,16,1), XLBOBB_MASK, PWRCOM, { BI } },
02915 { "bdnztlr", XLO(19,BODNZT,16,0), XLBOBB_MASK, PPCCOM, { BI } },
02916 { "bdnztlr-",XLO(19,BODNZT,16,0), XLBOBB_MASK, NOPOWER4, { BI } },
02917 { "bdnztlr+",XLO(19,BODNZTP,16,0), XLBOBB_MASK, NOPOWER4, { BI } },
02918 { "bdnztlrl",XLO(19,BODNZT,16,1), XLBOBB_MASK, PPCCOM, { BI } },
02919 { "bdnztlrl-",XLO(19,BODNZT,16,1), XLBOBB_MASK, NOPOWER4, { BI } },
02920 { "bdnztlrl+",XLO(19,BODNZTP,16,1), XLBOBB_MASK, NOPOWER4, { BI } },
02921 { "bdnzflr", XLO(19,BODNZF,16,0), XLBOBB_MASK, PPCCOM, { BI } },
02922 { "bdnzflr-",XLO(19,BODNZF,16,0), XLBOBB_MASK, NOPOWER4, { BI } },
02923 { "bdnzflr+",XLO(19,BODNZFP,16,0), XLBOBB_MASK, NOPOWER4, { BI } },
02924 { "bdnzflrl",XLO(19,BODNZF,16,1), XLBOBB_MASK, PPCCOM, { BI } },
02925 { "bdnzflrl-",XLO(19,BODNZF,16,1), XLBOBB_MASK, NOPOWER4, { BI } },
02926 { "bdnzflrl+",XLO(19,BODNZFP,16,1), XLBOBB_MASK, NOPOWER4, { BI } },
02927 { "bdztlr", XLO(19,BODZT,16,0), XLBOBB_MASK, PPCCOM, { BI } },
02928 { "bdztlr-", XLO(19,BODZT,16,0), XLBOBB_MASK, NOPOWER4, { BI } },
02929 { "bdztlr+", XLO(19,BODZTP,16,0), XLBOBB_MASK, NOPOWER4, { BI } },
02930 { "bdztlrl", XLO(19,BODZT,16,1), XLBOBB_MASK, PPCCOM, { BI } },
02931 { "bdztlrl-",XLO(19,BODZT,16,1), XLBOBB_MASK, NOPOWER4, { BI } },
02932 { "bdztlrl+",XLO(19,BODZTP,16,1), XLBOBB_MASK, NOPOWER4, { BI } },
02933 { "bdzflr", XLO(19,BODZF,16,0), XLBOBB_MASK, PPCCOM, { BI } },
02934 { "bdzflr-", XLO(19,BODZF,16,0), XLBOBB_MASK, NOPOWER4, { BI } },
02935 { "bdzflr+", XLO(19,BODZFP,16,0), XLBOBB_MASK, NOPOWER4, { BI } },
02936 { "bdzflrl", XLO(19,BODZF,16,1), XLBOBB_MASK, PPCCOM, { BI } },
02937 { "bdzflrl-",XLO(19,BODZF,16,1), XLBOBB_MASK, NOPOWER4, { BI } },
02938 { "bdzflrl+",XLO(19,BODZFP,16,1), XLBOBB_MASK, NOPOWER4, { BI } },
02939 { "bclr+", XLYLK(19,16,1,0), XLYBB_MASK, PPCCOM, { BOE, BI } },
02940 { "bclrl+", XLYLK(19,16,1,1), XLYBB_MASK, PPCCOM, { BOE, BI } },
02941 { "bclr-", XLYLK(19,16,0,0), XLYBB_MASK, PPCCOM, { BOE, BI } },
02942 { "bclrl-", XLYLK(19,16,0,1), XLYBB_MASK, PPCCOM, { BOE, BI } },
02943 { "bclr", XLLK(19,16,0), XLBH_MASK, PPCCOM, { BO, BI, BH } },
02944 { "bclrl", XLLK(19,16,1), XLBH_MASK, PPCCOM, { BO, BI, BH } },
02945 { "bcr", XLLK(19,16,0), XLBB_MASK, PWRCOM, { BO, BI } },
02946 { "bcrl", XLLK(19,16,1), XLBB_MASK, PWRCOM, { BO, BI } },
02947 { "bclre", XLLK(19,17,0), XLBB_MASK, BOOKE64, { BO, BI } },
02948 { "bclrel", XLLK(19,17,1), XLBB_MASK, BOOKE64, { BO, BI } },
02949
02950 { "rfid", XL(19,18), 0xffffffff, PPC64, { 0 } },
02951
02952 { "crnot", XL(19,33), XL_MASK, PPCCOM, { BT, BA, BBA } },
02953 { "crnor", XL(19,33), XL_MASK, COM, { BT, BA, BB } },
02954 { "rfmci", X(19,38), 0xffffffff, PPCRFMCI, { 0 } },
02955
02956 { "rfi", XL(19,50), 0xffffffff, COM, { 0 } },
02957 { "rfci", XL(19,51), 0xffffffff, PPC403 | BOOKE, { 0 } },
02958
02959 { "rfsvc", XL(19,82), 0xffffffff, POWER, { 0 } },
02960
02961 { "crandc", XL(19,129), XL_MASK, COM, { BT, BA, BB } },
02962
02963 { "isync", XL(19,150), 0xffffffff, PPCCOM, { 0 } },
02964 { "ics", XL(19,150), 0xffffffff, PWRCOM, { 0 } },
02965
02966 { "crclr", XL(19,193), XL_MASK, PPCCOM, { BT, BAT, BBA } },
02967 { "crxor", XL(19,193), XL_MASK, COM, { BT, BA, BB } },
02968
02969 { "crnand", XL(19,225), XL_MASK, COM, { BT, BA, BB } },
02970
02971 { "crand", XL(19,257), XL_MASK, COM, { BT, BA, BB } },
02972
02973 { "crset", XL(19,289), XL_MASK, PPCCOM, { BT, BAT, BBA } },
02974 { "creqv", XL(19,289), XL_MASK, COM, { BT, BA, BB } },
02975
02976 { "crorc", XL(19,417), XL_MASK, COM, { BT, BA, BB } },
02977
02978 { "crmove", XL(19,449), XL_MASK, PPCCOM, { BT, BA, BBA } },
02979 { "cror", XL(19,449), XL_MASK, COM, { BT, BA, BB } },
02980
02981 { "bctr", XLO(19,BOU,528,0), XLBOBIBB_MASK, COM, { 0 } },
02982 { "bctrl", XLO(19,BOU,528,1), XLBOBIBB_MASK, COM, { 0 } },
02983 { "bltctr", XLOCB(19,BOT,CBLT,528,0), XLBOCBBB_MASK, PPCCOM, { CR } },
02984 { "bltctr-", XLOCB(19,BOT,CBLT,528,0), XLBOCBBB_MASK, NOPOWER4, { CR } },
02985 { "bltctr-", XLOCB(19,BOTM4,CBLT,528,0), XLBOCBBB_MASK, POWER4, { CR } },
02986 { "bltctr+", XLOCB(19,BOTP,CBLT,528,0), XLBOCBBB_MASK, NOPOWER4, { CR } },
02987 { "bltctr+", XLOCB(19,BOTP4,CBLT,528,0), XLBOCBBB_MASK, POWER4, { CR } },
02988 { "bltctrl", XLOCB(19,BOT,CBLT,528,1), XLBOCBBB_MASK, PPCCOM, { CR } },
02989 { "bltctrl-",XLOCB(19,BOT,CBLT,528,1), XLBOCBBB_MASK, NOPOWER4, { CR } },
02990 { "bltctrl-",XLOCB(19,BOTM4,CBLT,528,1), XLBOCBBB_MASK, POWER4, { CR } },
02991 { "bltctrl+",XLOCB(19,BOTP,CBLT,528,1), XLBOCBBB_MASK, NOPOWER4, { CR } },
02992 { "bltctrl+",XLOCB(19,BOTP4,CBLT,528,1), XLBOCBBB_MASK, POWER4, { CR } },
02993 { "bgtctr", XLOCB(19,BOT,CBGT,528,0), XLBOCBBB_MASK, PPCCOM, { CR } },
02994 { "bgtctr-", XLOCB(19,BOT,CBGT,528,0), XLBOCBBB_MASK, NOPOWER4, { CR } },
02995 { "bgtctr-", XLOCB(19,BOTM4,CBGT,528,0), XLBOCBBB_MASK, POWER4, { CR } },
02996 { "bgtctr+", XLOCB(19,BOTP,CBGT,528,0), XLBOCBBB_MASK, NOPOWER4, { CR } },
02997 { "bgtctr+", XLOCB(19,BOTP4,CBGT,528,0), XLBOCBBB_MASK, POWER4, { CR } },
02998 { "bgtctrl", XLOCB(19,BOT,CBGT,528,1), XLBOCBBB_MASK, PPCCOM, { CR } },
02999 { "bgtctrl-",XLOCB(19,BOT,CBGT,528,1), XLBOCBBB_MASK, NOPOWER4, { CR } },
03000 { "bgtctrl-",XLOCB(19,BOTM4,CBGT,528,1), XLBOCBBB_MASK, POWER4, { CR } },
03001 { "bgtctrl+",XLOCB(19,BOTP,CBGT,528,1), XLBOCBBB_MASK, NOPOWER4, { CR } },
03002 { "bgtctrl+",XLOCB(19,BOTP4,CBGT,528,1), XLBOCBBB_MASK, POWER4, { CR } },
03003 { "beqctr", XLOCB(19,BOT,CBEQ,528,0), XLBOCBBB_MASK, PPCCOM, { CR } },
03004 { "beqctr-", XLOCB(19,BOT,CBEQ,528,0), XLBOCBBB_MASK, NOPOWER4, { CR } },
03005 { "beqctr-", XLOCB(19,BOTM4,CBEQ,528,0), XLBOCBBB_MASK, POWER4, { CR } },
03006 { "beqctr+", XLOCB(19,BOTP,CBEQ,528,0), XLBOCBBB_MASK, NOPOWER4, { CR } },
03007 { "beqctr+", XLOCB(19,BOTP4,CBEQ,528,0), XLBOCBBB_MASK, POWER4, { CR } },
03008 { "beqctrl", XLOCB(19,BOT,CBEQ,528,1), XLBOCBBB_MASK, PPCCOM, { CR } },
03009 { "beqctrl-",XLOCB(19,BOT,CBEQ,528,1), XLBOCBBB_MASK, NOPOWER4, { CR } },
03010 { "beqctrl-",XLOCB(19,BOTM4,CBEQ,528,1), XLBOCBBB_MASK, POWER4, { CR } },
03011 { "beqctrl+",XLOCB(19,BOTP,CBEQ,528,1), XLBOCBBB_MASK, NOPOWER4, { CR } },
03012 { "beqctrl+",XLOCB(19,BOTP4,CBEQ,528,1), XLBOCBBB_MASK, POWER4, { CR } },
03013 { "bsoctr", XLOCB(19,BOT,CBSO,528,0), XLBOCBBB_MASK, PPCCOM, { CR } },
03014 { "bsoctr-", XLOCB(19,BOT,CBSO,528,0), XLBOCBBB_MASK, NOPOWER4, { CR } },
03015 { "bsoctr-", XLOCB(19,BOTM4,CBSO,528,0), XLBOCBBB_MASK, POWER4, { CR } },
03016 { "bsoctr+", XLOCB(19,BOTP,CBSO,528,0), XLBOCBBB_MASK, NOPOWER4, { CR } },
03017 { "bsoctr+", XLOCB(19,BOTP4,CBSO,528,0), XLBOCBBB_MASK, POWER4, { CR } },
03018 { "bsoctrl", XLOCB(19,BOT,CBSO,528,1), XLBOCBBB_MASK, PPCCOM, { CR } },
03019 { "bsoctrl-",XLOCB(19,BOT,CBSO,528,1), XLBOCBBB_MASK, NOPOWER4, { CR } },
03020 { "bsoctrl-",XLOCB(19,BOTM4,CBSO,528,1), XLBOCBBB_MASK, POWER4, { CR } },
03021 { "bsoctrl+",XLOCB(19,BOTP,CBSO,528,1), XLBOCBBB_MASK, NOPOWER4, { CR } },
03022 { "bsoctrl+",XLOCB(19,BOTP4,CBSO,528,1), XLBOCBBB_MASK, POWER4, { CR } },
03023 { "bunctr", XLOCB(19,BOT,CBSO,528,0), XLBOCBBB_MASK, PPCCOM, { CR } },
03024 { "bunctr-", XLOCB(19,BOT,CBSO,528,0), XLBOCBBB_MASK, NOPOWER4, { CR } },
03025 { "bunctr-", XLOCB(19,BOTM4,CBSO,528,0), XLBOCBBB_MASK, POWER4, { CR } },
03026 { "bunctr+", XLOCB(19,BOTP,CBSO,528,0), XLBOCBBB_MASK, NOPOWER4, { CR } },
03027 { "bunctr+", XLOCB(19,BOTP4,CBSO,528,0), XLBOCBBB_MASK, POWER4, { CR } },
03028 { "bunctrl", XLOCB(19,BOT,CBSO,528,1), XLBOCBBB_MASK, PPCCOM, { CR } },
03029 { "bunctrl-",XLOCB(19,BOT,CBSO,528,1), XLBOCBBB_MASK, NOPOWER4, { CR } },
03030 { "bunctrl-",XLOCB(19,BOTM4,CBSO,528,1), XLBOCBBB_MASK, POWER4, { CR } },
03031 { "bunctrl+",XLOCB(19,BOTP,CBSO,528,1), XLBOCBBB_MASK, NOPOWER4, { CR } },
03032 { "bunctrl+",XLOCB(19,BOTP4,CBSO,528,1), XLBOCBBB_MASK, POWER4, { CR } },
03033 { "bgectr", XLOCB(19,BOF,CBLT,528,0), XLBOCBBB_MASK, PPCCOM, { CR } },
03034 { "bgectr-", XLOCB(19,BOF,CBLT,528,0), XLBOCBBB_MASK, NOPOWER4, { CR } },
03035 { "bgectr-", XLOCB(19,BOFM4,CBLT,528,0), XLBOCBBB_MASK, POWER4, { CR } },
03036 { "bgectr+", XLOCB(19,BOFP,CBLT,528,0), XLBOCBBB_MASK, NOPOWER4, { CR } },
03037 { "bgectr+", XLOCB(19,BOFP4,CBLT,528,0), XLBOCBBB_MASK, POWER4, { CR } },
03038 { "bgectrl", XLOCB(19,BOF,CBLT,528,1), XLBOCBBB_MASK, PPCCOM, { CR } },
03039 { "bgectrl-",XLOCB(19,BOF,CBLT,528,1), XLBOCBBB_MASK, NOPOWER4, { CR } },
03040 { "bgectrl-",XLOCB(19,BOFM4,CBLT,528,1), XLBOCBBB_MASK, POWER4, { CR } },
03041 { "bgectrl+",XLOCB(19,BOFP,CBLT,528,1), XLBOCBBB_MASK, NOPOWER4, { CR } },
03042 { "bgectrl+",XLOCB(19,BOFP4,CBLT,528,1), XLBOCBBB_MASK, POWER4, { CR } },
03043 { "bnlctr", XLOCB(19,BOF,CBLT,528,0), XLBOCBBB_MASK, PPCCOM, { CR } },
03044 { "bnlctr-", XLOCB(19,BOF,CBLT,528,0), XLBOCBBB_MASK, NOPOWER4, { CR } },
03045 { "bnlctr-", XLOCB(19,BOFM4,CBLT,528,0), XLBOCBBB_MASK, POWER4, { CR } },
03046 { "bnlctr+", XLOCB(19,BOFP,CBLT,528,0), XLBOCBBB_MASK, NOPOWER4, { CR } },
03047 { "bnlctr+", XLOCB(19,BOFP4,CBLT,528,0), XLBOCBBB_MASK, POWER4, { CR } },
03048 { "bnlctrl", XLOCB(19,BOF,CBLT,528,1), XLBOCBBB_MASK, PPCCOM, { CR } },
03049 { "bnlctrl-",XLOCB(19,BOF,CBLT,528,1), XLBOCBBB_MASK, NOPOWER4, { CR } },
03050 { "bnlctrl-",XLOCB(19,BOFM4,CBLT,528,1), XLBOCBBB_MASK, POWER4, { CR } },
03051 { "bnlctrl+",XLOCB(19,BOFP,CBLT,528,1), XLBOCBBB_MASK, NOPOWER4, { CR } },
03052 { "bnlctrl+",XLOCB(19,BOFP4,CBLT,528,1), XLBOCBBB_MASK, POWER4, { CR } },
03053 { "blectr", XLOCB(19,BOF,CBGT,528,0), XLBOCBBB_MASK, PPCCOM, { CR } },
03054 { "blectr-", XLOCB(19,BOF,CBGT,528,0), XLBOCBBB_MASK, NOPOWER4, { CR } },
03055 { "blectr-", XLOCB(19,BOFM4,CBGT,528,0), XLBOCBBB_MASK, POWER4, { CR } },
03056 { "blectr+", XLOCB(19,BOFP,CBGT,528,0), XLBOCBBB_MASK, NOPOWER4, { CR } },
03057 { "blectr+", XLOCB(19,BOFP4,CBGT,528,0), XLBOCBBB_MASK, POWER4, { CR } },
03058 { "blectrl", XLOCB(19,BOF,CBGT,528,1), XLBOCBBB_MASK, PPCCOM, { CR } },
03059 { "blectrl-",XLOCB(19,BOF,CBGT,528,1), XLBOCBBB_MASK, NOPOWER4, { CR } },
03060 { "blectrl-",XLOCB(19,BOFM4,CBGT,528,1), XLBOCBBB_MASK, POWER4, { CR } },
03061 { "blectrl+",XLOCB(19,BOFP,CBGT,528,1), XLBOCBBB_MASK, NOPOWER4, { CR } },
03062 { "blectrl+",XLOCB(19,BOFP4,CBGT,528,1), XLBOCBBB_MASK, POWER4, { CR } },
03063 { "bngctr", XLOCB(19,BOF,CBGT,528,0), XLBOCBBB_MASK, PPCCOM, { CR } },
03064 { "bngctr-", XLOCB(19,BOF,CBGT,528,0), XLBOCBBB_MASK, NOPOWER4, { CR } },
03065 { "bngctr-", XLOCB(19,BOFM4,CBGT,528,0), XLBOCBBB_MASK, POWER4, { CR } },
03066 { "bngctr+", XLOCB(19,BOFP,CBGT,528,0), XLBOCBBB_MASK, NOPOWER4, { CR } },
03067 { "bngctr+", XLOCB(19,BOFP4,CBGT,528,0), XLBOCBBB_MASK, POWER4, { CR } },
03068 { "bngctrl", XLOCB(19,BOF,CBGT,528,1), XLBOCBBB_MASK, PPCCOM, { CR } },
03069 { "bngctrl-",XLOCB(19,BOF,CBGT,528,1), XLBOCBBB_MASK, NOPOWER4, { CR } },
03070 { "bngctrl-",XLOCB(19,BOFM4,CBGT,528,1), XLBOCBBB_MASK, POWER4, { CR } },
03071 { "bngctrl+",XLOCB(19,BOFP,CBGT,528,1), XLBOCBBB_MASK, NOPOWER4, { CR } },
03072 { "bngctrl+",XLOCB(19,BOFP4,CBGT,528,1), XLBOCBBB_MASK, POWER4, { CR } },
03073 { "bnectr", XLOCB(19,BOF,CBEQ,528,0), XLBOCBBB_MASK, PPCCOM, { CR } },
03074 { "bnectr-", XLOCB(19,BOF,CBEQ,528,0), XLBOCBBB_MASK, NOPOWER4, { CR } },
03075 { "bnectr-", XLOCB(19,BOFM4,CBEQ,528,0), XLBOCBBB_MASK, POWER4, { CR } },
03076 { "bnectr+", XLOCB(19,BOFP,CBEQ,528,0), XLBOCBBB_MASK, NOPOWER4, { CR } },
03077 { "bnectr+", XLOCB(19,BOFP4,CBEQ,528,0), XLBOCBBB_MASK, POWER4, { CR } },
03078 { "bnectrl", XLOCB(19,BOF,CBEQ,528,1), XLBOCBBB_MASK, PPCCOM, { CR } },
03079 { "bnectrl-",XLOCB(19,BOF,CBEQ,528,1), XLBOCBBB_MASK, NOPOWER4, { CR } },
03080 { "bnectrl-",XLOCB(19,BOFM4,CBEQ,528,1), XLBOCBBB_MASK, POWER4, { CR } },
03081 { "bnectrl+",XLOCB(19,BOFP,CBEQ,528,1), XLBOCBBB_MASK, NOPOWER4, { CR } },
03082 { "bnectrl+",XLOCB(19,BOFP4,CBEQ,528,1), XLBOCBBB_MASK, POWER4, { CR } },
03083 { "bnsctr", XLOCB(19,BOF,CBSO,528,0), XLBOCBBB_MASK, PPCCOM, { CR } },
03084 { "bnsctr-", XLOCB(19,BOF,CBSO,528,0), XLBOCBBB_MASK, NOPOWER4, { CR } },
03085 { "bnsctr-", XLOCB(19,BOFM4,CBSO,528,0), XLBOCBBB_MASK, POWER4, { CR } },
03086 { "bnsctr+", XLOCB(19,BOFP,CBSO,528,0), XLBOCBBB_MASK, NOPOWER4, { CR } },
03087 { "bnsctr+", XLOCB(19,BOFP4,CBSO,528,0), XLBOCBBB_MASK, POWER4, { CR } },
03088 { "bnsctrl", XLOCB(19,BOF,CBSO,528,1), XLBOCBBB_MASK, PPCCOM, { CR } },
03089 { "bnsctrl-",XLOCB(19,BOF,CBSO,528,1), XLBOCBBB_MASK, NOPOWER4, { CR } },
03090 { "bnsctrl-",XLOCB(19,BOFM4,CBSO,528,1), XLBOCBBB_MASK, POWER4, { CR } },
03091 { "bnsctrl+",XLOCB(19,BOFP,CBSO,528,1), XLBOCBBB_MASK, NOPOWER4, { CR } },
03092 { "bnsctrl+",XLOCB(19,BOFP4,CBSO,528,1), XLBOCBBB_MASK, POWER4, { CR } },
03093 { "bnuctr", XLOCB(19,BOF,CBSO,528,0), XLBOCBBB_MASK, PPCCOM, { CR } },
03094 { "bnuctr-",