23 #include <linux/stddef.h>
24 #include <linux/kernel.h>
29 #define ATTRIBUTE_UNUSED
45 static unsigned long insert_bat (
unsigned long,
long,
int,
const char **);
46 static long extract_bat (
unsigned long,
int,
int *);
47 static unsigned long insert_bba (
unsigned long,
long,
int,
const char **);
48 static long extract_bba (
unsigned long,
int,
int *);
49 static unsigned long insert_bd (
unsigned long,
long,
int,
const char **);
50 static long extract_bd (
unsigned long,
int,
int *);
51 static unsigned long insert_bdm (
unsigned long,
long,
int,
const char **);
52 static long extract_bdm (
unsigned long,
int,
int *);
53 static unsigned long insert_bdp (
unsigned long,
long,
int,
const char **);
54 static long extract_bdp (
unsigned long,
int,
int *);
55 static unsigned long insert_bo (
unsigned long,
long,
int,
const char **);
56 static long extract_bo (
unsigned long,
int,
int *);
57 static unsigned long insert_boe (
unsigned long,
long,
int,
const char **);
58 static long extract_boe (
unsigned long,
int,
int *);
59 static unsigned long insert_dq (
unsigned long,
long,
int,
const char **);
60 static long extract_dq (
unsigned long,
int,
int *);
61 static unsigned long insert_ds (
unsigned long,
long,
int,
const char **);
62 static long extract_ds (
unsigned long,
int,
int *);
63 static unsigned long insert_de (
unsigned long,
long,
int,
const char **);
64 static long extract_de (
unsigned long,
int,
int *);
65 static unsigned long insert_des (
unsigned long,
long,
int,
const char **);
66 static long extract_des (
unsigned long,
int,
int *);
67 static unsigned long insert_fxm (
unsigned long,
long,
int,
const char **);
68 static long extract_fxm (
unsigned long,
int,
int *);
69 static unsigned long insert_li (
unsigned long,
long,
int,
const char **);
70 static long extract_li (
unsigned long,
int,
int *);
71 static unsigned long insert_mbe (
unsigned long,
long,
int,
const char **);
72 static long extract_mbe (
unsigned long,
int,
int *);
73 static unsigned long insert_mb6 (
unsigned long,
long,
int,
const char **);
74 static long extract_mb6 (
unsigned long,
int,
int *);
75 static unsigned long insert_nb (
unsigned long,
long,
int,
const char **);
76 static long extract_nb (
unsigned long,
int,
int *);
77 static unsigned long insert_nsi (
unsigned long,
long,
int,
const char **);
78 static long extract_nsi (
unsigned long,
int,
int *);
79 static unsigned long insert_ral (
unsigned long,
long,
int,
const char **);
80 static unsigned long insert_ram (
unsigned long,
long,
int,
const char **);
81 static unsigned long insert_raq (
unsigned long,
long,
int,
const char **);
82 static unsigned long insert_ras (
unsigned long,
long,
int,
const char **);
83 static unsigned long insert_rbs (
unsigned long,
long,
int,
const char **);
84 static long extract_rbs (
unsigned long,
int,
int *);
85 static unsigned long insert_rsq (
unsigned long,
long,
int,
const char **);
86 static unsigned long insert_rtq (
unsigned long,
long,
int,
const char **);
87 static unsigned long insert_sh6 (
unsigned long,
long,
int,
const char **);
88 static long extract_sh6 (
unsigned long,
int,
int *);
89 static unsigned long insert_spr (
unsigned long,
long,
int,
const char **);
90 static long extract_spr (
unsigned long,
int,
int *);
91 static unsigned long insert_sprg (
unsigned long,
long,
int,
const char **);
92 static long extract_sprg (
unsigned long,
int,
int *);
93 static unsigned long insert_tbr (
unsigned long,
long,
int,
const char **);
94 static long extract_tbr (
unsigned long,
int,
int *);
95 static unsigned long insert_ev2 (
unsigned long,
long,
int,
const char **);
96 static long extract_ev2 (
unsigned long,
int,
int *);
97 static unsigned long insert_ev4 (
unsigned long,
long,
int,
const char **);
98 static long extract_ev4 (
unsigned long,
int,
int *);
99 static unsigned long insert_ev8 (
unsigned long,
long,
int,
const char **);
100 static long extract_ev8 (
unsigned long,
int,
int *);
121 #define BA UNUSED + 1
122 #define BA_MASK (0x1f << 16)
132 #define BB_MASK (0x1f << 11)
153 { 16, 0, insert_bdm, extract_bdm,
159 { 16, 0, insert_bdm, extract_bdm,
165 { 16, 0, insert_bdp, extract_bdp,
171 { 16, 0, insert_bdp, extract_bdp,
189 #define BI_MASK (0x1f << 16)
195 #define BO_MASK (0x1f << 21)
196 { 5, 21, insert_bo, extract_bo, 0 },
201 { 5, 21, insert_boe, extract_boe, 0 },
226 #define CRFS CRFD + 1
252 { 16, 0, insert_dq, extract_dq,
258 { 16, 0, insert_ds, extract_ds,
279 #define FRA_MASK (0x1f << 16)
284 #define FRB_MASK (0x1f << 11)
289 #define FRC_MASK (0x1f << 6)
300 #define FXM_MASK (0xff << 12)
301 { 8, 12, insert_fxm, extract_fxm, 0 },
312 #define SVC_LEV L + 1
316 #define LEV SVC_LEV + 1
335 #define MB_MASK (0x1f << 6)
340 #define ME_MASK (0x1f << 1)
349 { 32, 0, insert_mbe, extract_mbe, 0 },
355 #define MB6_MASK (0x3f << 5)
356 { 6, 5, insert_mb6, extract_mb6, 0 },
365 { 6, 11, insert_nb, extract_nb, 0 },
370 { 16, 0, insert_nsi, extract_nsi,
375 #define RA_MASK (0x1f << 16)
405 #define RAOPT RAS + 1
410 #define RB_MASK (0x1f << 11)
424 #define RT_MASK (0x1f << 21)
444 #define SH_MASK (0x1f << 11)
449 #define SH6_MASK ((0x1f << 11) | (1 << 1))
450 { 6, 1, insert_sh6, extract_sh6, 0 },
462 #define SISIGNOPT SI + 1
467 #define SPR SISIGNOPT + 1
469 #define SPR_MASK (0x3ff << 11)
470 { 10, 11, insert_spr, extract_spr, 0 },
473 #define SPRBAT SPR + 1
474 #define SPRBAT_MASK (0x3 << 17)
478 #define SPRG SPRBAT + 1
479 { 5, 16, insert_sprg, extract_sprg, 0 },
487 #define STRM_MASK (0x3 << 21)
501 #define TO_MASK (0x1f << 21)
514 #define VA_MASK (0x1f << 16)
519 #define VB_MASK (0x1f << 11)
524 #define VC_MASK (0x1f << 6)
530 #define VD_MASK (0x1f << 21)
538 #define UIMM SIMM + 1
546 #define EVUIMM SHB + 1
550 #define EVUIMM_2 EVUIMM + 1
554 #define EVUIMM_4 EVUIMM_2 + 1
558 #define EVUIMM_8 EVUIMM_4 + 1
562 #define WS EVUIMM_8 + 1
563 #define WS_MASK (0x7 << 11)
567 #define MTMSRD_L WS + 1
572 #define DCM MTMSRD_L + 1
599 #define XRT_L SH16 + 1
616 insert_bat (
unsigned long insn,
618 int dialect ATTRIBUTE_UNUSED,
619 const char **errmsg ATTRIBUTE_UNUSED)
621 return insn | (((insn >> 21) & 0x1f) << 16);
625 extract_bat (
unsigned long insn,
629 if (((insn >> 21) & 0x1f) != ((insn >> 16) & 0x1f))
641 insert_bba (
unsigned long insn,
642 long value ATTRIBUTE_UNUSED,
643 int dialect ATTRIBUTE_UNUSED,
644 const char **errmsg ATTRIBUTE_UNUSED)
646 return insn | (((insn >> 16) & 0x1f) << 11);
650 extract_bba (
unsigned long insn,
651 int dialect ATTRIBUTE_UNUSED,
654 if (((insn >> 16) & 0x1f) != ((insn >> 11) & 0x1f))
663 insert_bd (
unsigned long insn,
665 int dialect ATTRIBUTE_UNUSED,
666 const char **errmsg ATTRIBUTE_UNUSED)
668 return insn | (value & 0xfffc);
672 extract_bd (
unsigned long insn,
673 int dialect ATTRIBUTE_UNUSED,
674 int *invalid ATTRIBUTE_UNUSED)
676 return ((insn & 0xfffc) ^ 0x8000) - 0x8000;
693 insert_bdm (
unsigned long insn,
696 const char **errmsg ATTRIBUTE_UNUSED)
700 if ((value & 0x8000) != 0)
705 if ((insn & (0x14 << 21)) == (0x04 << 21))
707 else if ((insn & (0x14 << 21)) == (0x10 << 21))
710 return insn | (value & 0xfffc);
714 extract_bdm (
unsigned long insn,
718 if ((dialect & PPC_OPCODE_POWER4) == 0)
720 if (((insn & (1 << 21)) == 0) != ((insn & (1 << 15)) == 0))
725 if ((insn & (0x17 << 21)) != (0x06 << 21)
726 && (insn & (0x1d << 21)) != (0x18 << 21))
730 return ((insn & 0xfffc) ^ 0x8000) - 0x8000;
738 insert_bdp (
unsigned long insn,
741 const char **errmsg ATTRIBUTE_UNUSED)
743 if ((dialect & PPC_OPCODE_POWER4) == 0)
745 if ((value & 0x8000) == 0)
750 if ((insn & (0x14 << 21)) == (0x04 << 21))
752 else if ((insn & (0x14 << 21)) == (0x10 << 21))
755 return insn | (value & 0xfffc);
759 extract_bdp (
unsigned long insn,
763 if ((dialect & PPC_OPCODE_POWER4) == 0)
765 if (((insn & (1 << 21)) == 0) == ((insn & (1 << 15)) == 0))
770 if ((insn & (0x17 << 21)) != (0x07 << 21)
771 && (insn & (0x1d << 21)) != (0x19 << 21))
775 return ((insn & 0xfffc) ^ 0x8000) - 0x8000;
781 valid_bo (
long value,
int dialect)
783 if ((dialect & PPC_OPCODE_POWER4) == 0)
793 switch (value & 0x14)
799 return (value & 0x2) == 0;
801 return (value & 0x8) == 0;
803 return value == 0x14;
820 if ((value & 0x14) == 0)
821 return (value & 0x1) == 0;
822 else if ((value & 0x14) == 0x14)
823 return value == 0x14;
833 insert_bo (
unsigned long insn,
838 if (!valid_bo (value, dialect))
839 *errmsg =
_(
"invalid conditional option");
840 return insn | ((value & 0x1f) << 21);
844 extract_bo (
unsigned long insn,
850 value = (insn >> 21) & 0x1f;
851 if (!valid_bo (value, dialect))
861 insert_boe (
unsigned long insn,
866 if (!valid_bo (value, dialect))
867 *errmsg =
_(
"invalid conditional option");
868 else if ((value & 1) != 0)
869 *errmsg =
_(
"attempt to set y bit when using + or - modifier");
871 return insn | ((value & 0x1f) << 21);
875 extract_boe (
unsigned long insn,
881 value = (insn >> 21) & 0x1f;
882 if (!valid_bo (value, dialect))
891 insert_dq (
unsigned long insn,
893 int dialect ATTRIBUTE_UNUSED,
896 if ((value & 0xf) != 0)
897 *errmsg =
_(
"offset not a multiple of 16");
898 return insn | (value & 0xfff0);
902 extract_dq (
unsigned long insn,
903 int dialect ATTRIBUTE_UNUSED,
904 int *invalid ATTRIBUTE_UNUSED)
906 return ((insn & 0xfff0) ^ 0x8000) - 0x8000;
910 insert_ev2 (
unsigned long insn,
912 int dialect ATTRIBUTE_UNUSED,
915 if ((value & 1) != 0)
916 *errmsg =
_(
"offset not a multiple of 2");
917 if ((value > 62) != 0)
918 *errmsg =
_(
"offset greater than 62");
919 return insn | ((value & 0x3e) << 10);
923 extract_ev2 (
unsigned long insn,
924 int dialect ATTRIBUTE_UNUSED,
925 int *invalid ATTRIBUTE_UNUSED)
927 return (insn >> 10) & 0x3e;
931 insert_ev4 (
unsigned long insn,
933 int dialect ATTRIBUTE_UNUSED,
936 if ((value & 3) != 0)
937 *errmsg =
_(
"offset not a multiple of 4");
938 if ((value > 124) != 0)
939 *errmsg =
_(
"offset greater than 124");
940 return insn | ((value & 0x7c) << 9);
944 extract_ev4 (
unsigned long insn,
945 int dialect ATTRIBUTE_UNUSED,
946 int *invalid ATTRIBUTE_UNUSED)
948 return (insn >> 9) & 0x7c;
952 insert_ev8 (
unsigned long insn,
954 int dialect ATTRIBUTE_UNUSED,
957 if ((value & 7) != 0)
958 *errmsg =
_(
"offset not a multiple of 8");
959 if ((value > 248) != 0)
960 *errmsg =
_(
"offset greater than 248");
961 return insn | ((value & 0xf8) << 8);
965 extract_ev8 (
unsigned long insn,
966 int dialect ATTRIBUTE_UNUSED,
967 int *invalid ATTRIBUTE_UNUSED)
969 return (insn >> 8) & 0xf8;
976 insert_ds (
unsigned long insn,
978 int dialect ATTRIBUTE_UNUSED,
981 if ((value & 3) != 0)
982 *errmsg =
_(
"offset not a multiple of 4");
983 return insn | (value & 0xfffc);
987 extract_ds (
unsigned long insn,
988 int dialect ATTRIBUTE_UNUSED,
989 int *invalid ATTRIBUTE_UNUSED)
991 return ((insn & 0xfffc) ^ 0x8000) - 0x8000;
997 insert_de (
unsigned long insn,
999 int dialect ATTRIBUTE_UNUSED,
1000 const char **errmsg)
1002 if (value > 2047 || value < -2048)
1003 *errmsg =
_(
"offset not between -2048 and 2047");
1004 return insn | ((value << 4) & 0xfff0);
1008 extract_de (
unsigned long insn,
1009 int dialect ATTRIBUTE_UNUSED,
1010 int *invalid ATTRIBUTE_UNUSED)
1012 return (insn & 0xfff0) >> 4;
1017 static unsigned long
1018 insert_des (
unsigned long insn,
1020 int dialect ATTRIBUTE_UNUSED,
1021 const char **errmsg)
1023 if (value > 8191 || value < -8192)
1024 *errmsg =
_(
"offset not between -8192 and 8191");
1025 else if ((value & 3) != 0)
1026 *errmsg =
_(
"offset not a multiple of 4");
1027 return insn | ((value << 2) & 0xfff0);
1031 extract_des (
unsigned long insn,
1032 int dialect ATTRIBUTE_UNUSED,
1033 int *invalid ATTRIBUTE_UNUSED)
1035 return (((insn >> 2) & 0x3ffc) ^ 0x2000) - 0x2000;
1040 static unsigned long
1041 insert_fxm (
unsigned long insn,
1044 const char **errmsg)
1048 if ((insn & (1 << 20)) != 0)
1050 if (value == 0 || (value & -value) != value)
1052 *errmsg =
_(
"invalid mask field");
1061 else if (value == 0)
1069 else if ((value & -value) == value
1070 && ((dialect & PPC_OPCODE_POWER4) != 0
1072 && (insn & (0x3ff << 1)) == 19 << 1)))
1076 else if ((insn & (0x3ff << 1)) == 19 << 1)
1078 *errmsg =
_(
"ignoring invalid mfcr mask");
1082 return insn | ((value & 0xff) << 12);
1086 extract_fxm (
unsigned long insn,
1087 int dialect ATTRIBUTE_UNUSED,
1090 long mask = (insn >> 12) & 0xff;
1093 if ((insn & (1 << 20)) != 0)
1096 if (mask == 0 || (mask & -mask) !=
mask)
1101 else if ((insn & (0x3ff << 1)) == 19 << 1)
1113 static unsigned long
1114 insert_li (
unsigned long insn,
1116 int dialect ATTRIBUTE_UNUSED,
1117 const char **errmsg)
1119 if ((value & 3) != 0)
1120 *errmsg =
_(
"ignoring least significant bits in branch offset");
1121 return insn | (value & 0x3fffffc);
1125 extract_li (
unsigned long insn,
1126 int dialect ATTRIBUTE_UNUSED,
1127 int *invalid ATTRIBUTE_UNUSED)
1129 return ((insn & 0x3fffffc) ^ 0x2000000) - 0x2000000;
1137 static unsigned long
1138 insert_mbe (
unsigned long insn,
1140 int dialect ATTRIBUTE_UNUSED,
1141 const char **errmsg)
1143 unsigned long uval,
mask;
1150 *errmsg =
_(
"illegal bitmask");
1156 if ((uval & 1) != 0)
1166 for (mx = 0, mask = 1L << 31; mx < 32; ++mx, mask >>= 1)
1168 if ((uval & mask) && !last)
1174 else if (!(uval & mask) && last)
1184 if (count != 2 && (count != 0 || ! last))
1185 *errmsg =
_(
"illegal bitmask");
1187 return insn | (mb << 6) | ((me - 1) << 1);
1191 extract_mbe (
unsigned long insn,
1192 int dialect ATTRIBUTE_UNUSED,
1201 mb = (insn >> 6) & 0x1f;
1202 me = (insn >> 1) & 0x1f;
1206 for (i = mb; i <= me; i++)
1207 ret |= 1L << (31 - i);
1209 else if (mb == me + 1)
1214 for (i = me + 1; i <
mb; i++)
1215 ret &= ~(1L << (31 - i));
1223 static unsigned long
1224 insert_mb6 (
unsigned long insn,
1226 int dialect ATTRIBUTE_UNUSED,
1227 const char **errmsg ATTRIBUTE_UNUSED)
1229 return insn | ((value & 0x1f) << 6) | (value & 0x20);
1233 extract_mb6 (
unsigned long insn,
1234 int dialect ATTRIBUTE_UNUSED,
1235 int *invalid ATTRIBUTE_UNUSED)
1237 return ((insn >> 6) & 0x1f) | (insn & 0x20);
1243 static unsigned long
1244 insert_nb (
unsigned long insn,
1246 int dialect ATTRIBUTE_UNUSED,
1247 const char **errmsg)
1249 if (value < 0 || value > 32)
1250 *errmsg =
_(
"value out of range");
1253 return insn | ((value & 0x1f) << 11);
1257 extract_nb (
unsigned long insn,
1258 int dialect ATTRIBUTE_UNUSED,
1259 int *invalid ATTRIBUTE_UNUSED)
1263 ret = (insn >> 11) & 0x1f;
1274 static unsigned long
1275 insert_nsi (
unsigned long insn,
1277 int dialect ATTRIBUTE_UNUSED,
1278 const char **errmsg ATTRIBUTE_UNUSED)
1280 return insn | (-value & 0xffff);
1284 extract_nsi (
unsigned long insn,
1285 int dialect ATTRIBUTE_UNUSED,
1289 return -(((insn & 0xffff) ^ 0x8000) - 0x8000);
1296 static unsigned long
1297 insert_ral (
unsigned long insn,
1299 int dialect ATTRIBUTE_UNUSED,
1300 const char **errmsg)
1303 || (
unsigned long) value == ((insn >> 21) & 0x1f))
1304 *errmsg =
"invalid register operand when updating";
1305 return insn | ((value & 0x1f) << 16);
1311 static unsigned long
1312 insert_ram (
unsigned long insn,
1314 int dialect ATTRIBUTE_UNUSED,
1315 const char **errmsg)
1317 if ((
unsigned long) value >= ((insn >> 21) & 0x1f))
1318 *errmsg =
_(
"index register in load range");
1319 return insn | ((value & 0x1f) << 16);
1325 static unsigned long
1326 insert_raq (
unsigned long insn,
1328 int dialect ATTRIBUTE_UNUSED,
1329 const char **errmsg)
1331 long rtvalue = (insn &
RT_MASK) >> 21;
1333 if (value == rtvalue)
1334 *errmsg =
_(
"source and target register operands must be different");
1335 return insn | ((value & 0x1f) << 16);
1342 static unsigned long
1343 insert_ras (
unsigned long insn,
1345 int dialect ATTRIBUTE_UNUSED,
1346 const char **errmsg)
1349 *errmsg =
_(
"invalid register operand when updating");
1350 return insn | ((value & 0x1f) << 16);
1359 static unsigned long
1360 insert_rbs (
unsigned long insn,
1361 long value ATTRIBUTE_UNUSED,
1362 int dialect ATTRIBUTE_UNUSED,
1363 const char **errmsg ATTRIBUTE_UNUSED)
1365 return insn | (((insn >> 21) & 0x1f) << 11);
1369 extract_rbs (
unsigned long insn,
1370 int dialect ATTRIBUTE_UNUSED,
1373 if (((insn >> 21) & 0x1f) != ((insn >> 11) & 0x1f))
1381 static unsigned long
1382 insert_rtq (
unsigned long insn,
1384 int dialect ATTRIBUTE_UNUSED,
1385 const char **errmsg)
1387 if ((value & 1) != 0)
1388 *errmsg =
_(
"target register operand must be even");
1389 return insn | ((value & 0x1f) << 21);
1395 static unsigned long
1396 insert_rsq (
unsigned long insn,
1397 long value ATTRIBUTE_UNUSED,
1398 int dialect ATTRIBUTE_UNUSED,
1399 const char **errmsg)
1401 if ((value & 1) != 0)
1402 *errmsg =
_(
"source register operand must be even");
1403 return insn | ((value & 0x1f) << 21);
1408 static unsigned long
1409 insert_sh6 (
unsigned long insn,
1411 int dialect ATTRIBUTE_UNUSED,
1412 const char **errmsg ATTRIBUTE_UNUSED)
1414 return insn | ((value & 0x1f) << 11) | ((value & 0x20) >> 4);
1418 extract_sh6 (
unsigned long insn,
1419 int dialect ATTRIBUTE_UNUSED,
1420 int *invalid ATTRIBUTE_UNUSED)
1422 return ((insn >> 11) & 0x1f) | ((insn << 4) & 0x20);
1428 static unsigned long
1429 insert_spr (
unsigned long insn,
1431 int dialect ATTRIBUTE_UNUSED,
1432 const char **errmsg ATTRIBUTE_UNUSED)
1434 return insn | ((value & 0x1f) << 16) | ((value & 0x3e0) << 6);
1438 extract_spr (
unsigned long insn,
1439 int dialect ATTRIBUTE_UNUSED,
1440 int *invalid ATTRIBUTE_UNUSED)
1442 return ((insn >> 16) & 0x1f) | ((insn >> 6) & 0x3e0);
1447 static unsigned long
1448 insert_sprg (
unsigned long insn,
1451 const char **errmsg)
1459 *errmsg =
_(
"invalid sprg number");
1463 if (value <= 3 || (insn & 0x100) != 0)
1466 return insn | ((value & 0x17) << 16);
1470 extract_sprg (
unsigned long insn,
1474 unsigned long val = (insn >> 16) & 0x1f;
1479 || (val < 0x10 && (insn & 0x100) != 0)
1496 static unsigned long
1497 insert_tbr (
unsigned long insn,
1499 int dialect ATTRIBUTE_UNUSED,
1500 const char **errmsg ATTRIBUTE_UNUSED)
1504 return insn | ((value & 0x1f) << 16) | ((value & 0x3e0) << 6);
1508 extract_tbr (
unsigned long insn,
1509 int dialect ATTRIBUTE_UNUSED,
1510 int *invalid ATTRIBUTE_UNUSED)
1514 ret = ((insn >> 16) & 0x1f) | ((insn >> 6) & 0x3e0);
1523 #define OP(x) ((((unsigned long)(x)) & 0x3f) << 26)
1524 #define OP_MASK OP (0x3f)
1529 #define OPTO(x,to) (OP (x) | ((((unsigned long)(to)) & 0x1f) << 21))
1530 #define OPTO_MASK (OP_MASK | TO_MASK)
1535 #define OPL(x,l) (OP (x) | ((((unsigned long)(l)) & 1) << 21))
1536 #define OPL_MASK OPL (0x3f,1)
1539 #define A(op, xop, rc) (OP (op) | ((((unsigned long)(xop)) & 0x1f) << 1) | (((unsigned long)(rc)) & 1))
1540 #define A_MASK A (0x3f, 0x1f, 1)
1543 #define AFRB_MASK (A_MASK | FRB_MASK)
1546 #define AFRC_MASK (A_MASK | FRC_MASK)
1549 #define AFRAFRC_MASK (A_MASK | FRA_MASK | FRC_MASK)
1552 #define AFRALFRC_MASK (AFRAFRC_MASK & ~((unsigned long) 1 << 16))
1555 #define B(op, aa, lk) (OP (op) | ((((unsigned long)(aa)) & 1) << 1) | ((lk) & 1))
1556 #define B_MASK B (0x3f, 1, 1)
1559 #define BBO(op, bo, aa, lk) (B ((op), (aa), (lk)) | ((((unsigned long)(bo)) & 0x1f) << 21))
1560 #define BBO_MASK BBO (0x3f, 0x1f, 1, 1)
1565 #define Y_MASK (((unsigned long) 1) << 21)
1566 #define AT1_MASK (((unsigned long) 3) << 21)
1567 #define AT2_MASK (((unsigned long) 9) << 21)
1568 #define BBOY_MASK (BBO_MASK &~ Y_MASK)
1569 #define BBOAT_MASK (BBO_MASK &~ AT1_MASK)
1573 #define BBOCB(op, bo, cb, aa, lk) \
1574 (BBO ((op), (bo), (aa), (lk)) | ((((unsigned long)(cb)) & 0x3) << 16))
1575 #define BBOCB_MASK BBOCB (0x3f, 0x1f, 0x3, 1, 1)
1578 #define BBOYCB_MASK (BBOCB_MASK &~ Y_MASK)
1579 #define BBOATCB_MASK (BBOCB_MASK &~ AT1_MASK)
1580 #define BBOAT2CB_MASK (BBOCB_MASK &~ AT2_MASK)
1583 #define BBOYBI_MASK (BBOYCB_MASK | BI_MASK)
1584 #define BBOATBI_MASK (BBOAT2CB_MASK | BI_MASK)
1587 #define CTX(op, xop) (OP (op) | (((unsigned long)(xop)) & 0x7))
1588 #define CTX_MASK CTX(0x3f, 0x7)
1591 #define UCTX(op, xop) (OP (op) | (((unsigned long)(xop)) & 0x1f))
1592 #define UCTX_MASK UCTX(0x3f, 0x1f)
1595 #define DRA_MASK (OP_MASK | RA_MASK)
1598 #define DSO(op, xop) (OP (op) | ((xop) & 0x3))
1599 #define DS_MASK DSO (0x3f, 3)
1602 #define DEO(op, xop) (OP (op) | ((xop) & 0xf))
1603 #define DE_MASK DEO (0x3e, 0xf)
1606 #define EVSEL(op, xop) (OP (op) | (((unsigned long)(xop)) & 0xff) << 3)
1607 #define EVSEL_MASK EVSEL(0x3f, 0xff)
1610 #define M(op, rc) (OP (op) | ((rc) & 1))
1611 #define M_MASK M (0x3f, 1)
1614 #define MME(op, me, rc) (M ((op), (rc)) | ((((unsigned long)(me)) & 0x1f) << 1))
1617 #define MMBME_MASK (M_MASK | MB_MASK | ME_MASK)
1620 #define MSHME_MASK (M_MASK | SH_MASK | ME_MASK)
1623 #define MD(op, xop, rc) (OP (op) | ((((unsigned long)(xop)) & 0x7) << 2) | ((rc) & 1))
1624 #define MD_MASK MD (0x3f, 0x7, 1)
1627 #define MDMB_MASK (MD_MASK | MB6_MASK)
1630 #define MDSH_MASK (MD_MASK | SH6_MASK)
1633 #define MDS(op, xop, rc) (OP (op) | ((((unsigned long)(xop)) & 0xf) << 1) | ((rc) & 1))
1634 #define MDS_MASK MDS (0x3f, 0xf, 1)
1637 #define MDSMB_MASK (MDS_MASK | MB6_MASK)
1640 #define SC(op, sa, lk) (OP (op) | ((((unsigned long)(sa)) & 1) << 1) | ((lk) & 1))
1641 #define SC_MASK (OP_MASK | (((unsigned long)0x3ff) << 16) | (((unsigned long)1) << 1) | 1)
1644 #define VX(op, xop) (OP (op) | (((unsigned long)(xop)) & 0x7ff))
1647 #define VX_MASK VX(0x3f, 0x7ff)
1650 #define VXA(op, xop) (OP (op) | (((unsigned long)(xop)) & 0x03f))
1653 #define VXA_MASK VXA(0x3f, 0x3f)
1656 #define VXR(op, xop, rc) (OP (op) | (((rc) & 1) << 10) | (((unsigned long)(xop)) & 0x3ff))
1659 #define VXR_MASK VXR(0x3f, 0x3ff, 1)
1662 #define X(op, xop) (OP (op) | ((((unsigned long)(xop)) & 0x3ff) << 1))
1665 #define Z(op, xop) (OP (op) | ((((unsigned long)(xop)) & 0x1ff) << 1))
1668 #define XRC(op, xop, rc) (X ((op), (xop)) | ((rc) & 1))
1671 #define ZRC(op, xop, rc) (Z ((op), (xop)) | ((rc) & 1))
1674 #define X_MASK XRC (0x3f, 0x3ff, 1)
1677 #define Z_MASK ZRC (0x3f, 0x1ff, 1)
1680 #define XRA_MASK (X_MASK | RA_MASK)
1683 #define XRB_MASK (X_MASK | RB_MASK)
1686 #define XRT_MASK (X_MASK | RT_MASK)
1689 #define XLRT_MASK (XRT_MASK & ~((unsigned long) 0x3 << 21))
1692 #define XRARB_MASK (X_MASK | RA_MASK | RB_MASK)
1695 #define XRLARB_MASK (XRARB_MASK & ~((unsigned long) 1 << 16))
1698 #define XRTRA_MASK (X_MASK | RT_MASK | RA_MASK)
1701 #define XRTLRA_MASK (XRTRA_MASK & ~((unsigned long) 1 << 21))
1704 #define XOPL(op, xop, l) (X ((op), (xop)) | ((((unsigned long)(l)) & 1) << 21))
1707 #define XCMP_MASK (X_MASK | (((unsigned long)1) << 22))
1711 #define XCMPL_MASK (XCMP_MASK | (((unsigned long)1) << 21))
1714 #define XTO(op, xop, to) (X ((op), (xop)) | ((((unsigned long)(to)) & 0x1f) << 21))
1715 #define XTO_MASK (X_MASK | TO_MASK)
1718 #define XTLB(op, xop, sh) (X ((op), (xop)) | ((((unsigned long)(sh)) & 0x1f) << 11))
1719 #define XTLB_MASK (X_MASK | SH_MASK)
1722 #define XSYNC(op, xop, l) (X ((op), (xop)) | ((((unsigned long)(l)) & 3) << 21))
1725 #define XSYNC_MASK (0xff9fffff)
1728 #define XEH_MASK (X_MASK & ~((unsigned long )1))
1731 #define XDSS(op, xop, a) (X ((op), (xop)) | ((((unsigned long)(a)) & 1) << 25))
1732 #define XDSS_MASK XDSS(0x3f, 0x3ff, 1)
1735 #define XFL(op, xop, rc) (OP (op) | ((((unsigned long)(xop)) & 0x3ff) << 1) | (((unsigned long)(rc)) & 1))
1736 #define XFL_MASK (XFL (0x3f, 0x3ff, 1) | (((unsigned long)1) << 25) | (((unsigned long)1) << 16))
1739 #define XISEL(op, xop) (OP (op) | ((((unsigned long)(xop)) & 0x1f) << 1))
1740 #define XISEL_MASK XISEL(0x3f, 0x1f)
1743 #define XL(op, xop) (OP (op) | ((((unsigned long)(xop)) & 0x3ff) << 1))
1746 #define XLLK(op, xop, lk) (XL ((op), (xop)) | ((lk) & 1))
1749 #define XL_MASK XLLK (0x3f, 0x3ff, 1)
1752 #define XLO(op, bo, xop, lk) \
1753 (XLLK ((op), (xop), (lk)) | ((((unsigned long)(bo)) & 0x1f) << 21))
1754 #define XLO_MASK (XL_MASK | BO_MASK)
1758 #define XLYLK(op, xop, y, lk) (XLLK ((op), (xop), (lk)) | ((((unsigned long)(y)) & 1) << 21))
1759 #define XLYLK_MASK (XL_MASK | Y_MASK)
1763 #define XLOCB(op, bo, cb, xop, lk) \
1764 (XLO ((op), (bo), (xop), (lk)) | ((((unsigned long)(cb)) & 3) << 16))
1765 #define XLOCB_MASK XLOCB (0x3f, 0x1f, 0x3, 0x3ff, 1)
1768 #define XLBB_MASK (XL_MASK | BB_MASK)
1769 #define XLYBB_MASK (XLYLK_MASK | BB_MASK)
1770 #define XLBOCBBB_MASK (XLOCB_MASK | BB_MASK)
1773 #define XLBH_MASK (XL_MASK | (0x1c << 11))
1776 #define XLBOBB_MASK (XL_MASK | BO_MASK | BB_MASK)
1779 #define XLBOBIBB_MASK (XL_MASK | BO_MASK | BI_MASK | BB_MASK)
1782 #define XO(op, xop, oe, rc) \
1783 (OP (op) | ((((unsigned long)(xop)) & 0x1ff) << 1) | ((((unsigned long)(oe)) & 1) << 10) | (((unsigned long)(rc)) & 1))
1784 #define XO_MASK XO (0x3f, 0x1ff, 1, 1)
1787 #define XORB_MASK (XO_MASK | RB_MASK)
1790 #define XS(op, xop, rc) (OP (op) | ((((unsigned long)(xop)) & 0x1ff) << 2) | (((unsigned long)(rc)) & 1))
1791 #define XS_MASK XS (0x3f, 0x1ff, 1)
1794 #define XFXFXM_MASK (X_MASK | (1 << 11) | (1 << 20))
1797 #define XFXM(op, xop, fxm, p4) \
1798 (X ((op), (xop)) | ((((unsigned long)(fxm)) & 0xff) << 12) \
1799 | ((unsigned long)(p4) << 20))
1802 #define XSPR(op, xop, spr) \
1803 (X ((op), (xop)) | ((((unsigned long)(spr)) & 0x1f) << 16) | ((((unsigned long)(spr)) & 0x3e0) << 6))
1804 #define XSPR_MASK (X_MASK | SPR_MASK)
1808 #define XSPRBAT_MASK (XSPR_MASK &~ SPRBAT_MASK)
1812 #define XSPRG_MASK (XSPR_MASK & ~(0x17 << 16))
1815 #define XE_MASK (0xffff7fff)
1818 #define XUC(op, xop) (OP (op) | (((unsigned long)(xop)) & 0x1f))
1819 #define XUC_MASK XUC(0x3f, 0x1f)
1822 #define BODNZF (0x0)
1823 #define BODNZFP (0x1)
1825 #define BODZFP (0x3)
1826 #define BODNZT (0x8)
1827 #define BODNZTP (0x9)
1829 #define BODZTP (0xb)
1840 #define BODNZ (0x10)
1841 #define BODNZP (0x11)
1843 #define BODZP (0x13)
1844 #define BODNZM4 (0x18)
1845 #define BODNZP4 (0x19)
1846 #define BODZM4 (0x1a)
1847 #define BODZP4 (0x1b)
1878 #define PPC PPC_OPCODE_PPC
1879 #define PPCCOM PPC_OPCODE_PPC | PPC_OPCODE_COMMON
1880 #define NOPOWER4 PPC_OPCODE_NOPOWER4 | PPCCOM
1881 #define POWER4 PPC_OPCODE_POWER4
1882 #define POWER5 PPC_OPCODE_POWER5
1883 #define POWER6 PPC_OPCODE_POWER6
1884 #define CELL PPC_OPCODE_CELL
1885 #define PPC32 PPC_OPCODE_32 | PPC_OPCODE_PPC
1886 #define PPC64 PPC_OPCODE_64 | PPC_OPCODE_PPC
1887 #define PPC403 PPC_OPCODE_403
1888 #define PPC405 PPC403
1889 #define PPC440 PPC_OPCODE_440
1892 #define PPCVEC PPC_OPCODE_ALTIVEC
1893 #define POWER PPC_OPCODE_POWER
1894 #define POWER2 PPC_OPCODE_POWER | PPC_OPCODE_POWER2
1895 #define PPCPWR2 PPC_OPCODE_PPC | PPC_OPCODE_POWER | PPC_OPCODE_POWER2
1896 #define POWER32 PPC_OPCODE_POWER | PPC_OPCODE_32
1897 #define COM PPC_OPCODE_POWER | PPC_OPCODE_PPC | PPC_OPCODE_COMMON
1898 #define COM32 PPC_OPCODE_POWER | PPC_OPCODE_PPC | PPC_OPCODE_COMMON | PPC_OPCODE_32
1899 #define M601 PPC_OPCODE_POWER | PPC_OPCODE_601
1900 #define PWRCOM PPC_OPCODE_POWER | PPC_OPCODE_601 | PPC_OPCODE_COMMON
1901 #define MFDEC1 PPC_OPCODE_POWER
1902 #define MFDEC2 PPC_OPCODE_PPC | PPC_OPCODE_601 | PPC_OPCODE_BOOKE
1903 #define BOOKE PPC_OPCODE_BOOKE
1904 #define BOOKE64 PPC_OPCODE_BOOKE64
1905 #define CLASSIC PPC_OPCODE_CLASSIC
1906 #define PPCE300 PPC_OPCODE_E300
1907 #define PPCSPE PPC_OPCODE_SPE
1908 #define PPCISEL PPC_OPCODE_ISEL
1909 #define PPCEFS PPC_OPCODE_EFS
1910 #define PPCBRLK PPC_OPCODE_BRLOCK
1911 #define PPCPMR PPC_OPCODE_PMR
1912 #define PPCCHLK PPC_OPCODE_CACHELCK
1913 #define PPCCHLK64 PPC_OPCODE_CACHELCK | PPC_OPCODE_BOOKE64
1914 #define PPCRFMCI PPC_OPCODE_RFMCI
1983 {
"macchw",
XO(4,172,0,0),
XO_MASK,
PPC405|
PPC440, {
RT,
RA,
RB } },
1984 {
"macchw.",
XO(4,172,0,1),
XO_MASK,
PPC405|
PPC440, {
RT,
RA,
RB } },
1985 {
"macchwo",
XO(4,172,1,0),
XO_MASK,
PPC405|
PPC440, {
RT,
RA,
RB } },
1986 {
"macchwo.",
XO(4,172,1,1),
XO_MASK,
PPC405|
PPC440, {
RT,
RA,
RB } },
1987 {
"macchws",
XO(4,236,0,0),
XO_MASK,
PPC405|
PPC440, {
RT,
RA,
RB } },
1988 {
"macchws.",
XO(4,236,0,1),
XO_MASK,
PPC405|
PPC440, {
RT,
RA,
RB } },
1989 {
"macchwso",
XO(4,236,1,0),
XO_MASK,
PPC405|
PPC440, {
RT,
RA,
RB } },
1990 {
"macchwso.",
XO(4,236,1,1),
XO_MASK,
PPC405|
PPC440, {
RT,
RA,
RB } },
1991 {
"macchwsu",
XO(4,204,0,0),
XO_MASK,
PPC405|
PPC440, {
RT,
RA,
RB } },
1992 {
"macchwsu.",
XO(4,204,0,1),
XO_MASK,
PPC405|
PPC440, {
RT,
RA,
RB } },
1993 {
"macchwsuo",
XO(4,204,1,0),
XO_MASK,
PPC405|
PPC440, {
RT,
RA,
RB } },
1994 {
"macchwsuo.",
XO(4,204,1,1),
XO_MASK,
PPC405|
PPC440, {
RT,
RA,
RB } },
1995 {
"macchwu",
XO(4,140,0,0),
XO_MASK,
PPC405|
PPC440, {
RT,
RA,
RB } },
1996 {
"macchwu.",
XO(4,140,0,1),
XO_MASK,
PPC405|
PPC440, {
RT,
RA,
RB } },
1997 {
"macchwuo",
XO(4,140,1,0),
XO_MASK,
PPC405|
PPC440, {
RT,
RA,
RB } },
1998 {
"macchwuo.",
XO(4,140,1,1),
XO_MASK,
PPC405|
PPC440, {
RT,
RA,
RB } },
1999 {
"machhw",
XO(4,44,0,0),
XO_MASK,
PPC405|
PPC440, {
RT,
RA,
RB } },
2000 {
"machhw.",
XO(4,44,0,1),
XO_MASK,
PPC405|
PPC440, {
RT,
RA,
RB } },
2001 {
"machhwo",
XO(4,44,1,0),
XO_MASK,
PPC405|
PPC440, {
RT,
RA,
RB } },
2002 {
"machhwo.",
XO(4,44,1,1),
XO_MASK,
PPC405|
PPC440, {
RT,
RA,
RB } },
2003 {
"machhws",
XO(4,108,0,0),
XO_MASK,
PPC405|
PPC440, {
RT,
RA,
RB } },
2004 {
"machhws.",
XO(4,108,0,1),
XO_MASK,
PPC405|
PPC440, {
RT,
RA,
RB } },
2005 {
"machhwso",
XO(4,108,1,0),
XO_MASK,
PPC405|
PPC440, {
RT,
RA,
RB } },
2006 {
"machhwso.",
XO(4,108,1,1),
XO_MASK,
PPC405|
PPC440, {
RT,
RA,
RB } },
2007 {
"machhwsu",
XO(4,76,0,0),
XO_MASK,
PPC405|
PPC440, {
RT,
RA,
RB } },
2008 {
"machhwsu.",
XO(4,76,0,1),
XO_MASK,
PPC405|
PPC440, {
RT,
RA,
RB } },
2009 {
"machhwsuo",
XO(4,76,1,0),
XO_MASK,
PPC405|
PPC440, {
RT,
RA,
RB } },
2010 {
"machhwsuo.",
XO(4,76,1,1),
XO_MASK,
PPC405|
PPC440, {
RT,
RA,
RB } },
2011 {
"machhwu",
XO(4,12,0,0),
XO_MASK,
PPC405|
PPC440, {
RT,
RA,
RB } },
2012 {
"machhwu.",
XO(4,12,0,1),
XO_MASK,
PPC405|
PPC440, {
RT,
RA,
RB } },
2013 {
"machhwuo",
XO(4,12,1,0),
XO_MASK,
PPC405|
PPC440, {
RT,
RA,
RB } },
2014 {
"machhwuo.",
XO(4,12,1,1),
XO_MASK,
PPC405|
PPC440, {
RT,
RA,
RB } },
2015 {
"maclhw",
XO(4,428,0,0),
XO_MASK,
PPC405|
PPC440, {
RT,
RA,
RB } },
2016 {
"maclhw.",
XO(4,428,0,1),
XO_MASK,
PPC405|
PPC440, {
RT,
RA,
RB } },
2017 {
"maclhwo",
XO(4,428,1,0),
XO_MASK,
PPC405|
PPC440, {
RT,
RA,
RB } },
2018 {
"maclhwo.",
XO(4,428,1,1),
XO_MASK,
PPC405|
PPC440, {
RT,
RA,
RB } },
2019 {
"maclhws",
XO(4,492,0,0),
XO_MASK,
PPC405|
PPC440, {
RT,
RA,
RB } },
2020 {
"maclhws.",
XO(4,492,0,1),
XO_MASK,
PPC405|
PPC440, {
RT,
RA,
RB } },
2021 {
"maclhwso",
XO(4,492,1,0),
XO_MASK,
PPC405|
PPC440, {
RT,
RA,
RB } },
2022 {
"maclhwso.",
XO(4,492,1,1),
XO_MASK,
PPC405|
PPC440, {
RT,
RA,
RB } },
2023 {
"maclhwsu",
XO(4,460,0,0),
XO_MASK,
PPC405|
PPC440, {
RT,
RA,
RB } },
2024 {
"maclhwsu.",
XO(4,460,0,1),
XO_MASK,
PPC405|
PPC440, {
RT,
RA,
RB } },
2025 {
"maclhwsuo",
XO(4,460,1,0),
XO_MASK,
PPC405|
PPC440, {
RT,
RA,
RB } },
2026 {
"maclhwsuo.",
XO(4,460,1,1),
XO_MASK,
PPC405|
PPC440, {
RT,
RA,
RB } },
2027 {
"maclhwu",
XO(4,396,0,0),
XO_MASK,
PPC405|
PPC440, {
RT,
RA,
RB } },
2028 {
"maclhwu.",
XO(4,396,0,1),
XO_MASK,
PPC405|
PPC440, {
RT,
RA,
RB } },
2029 {
"maclhwuo",
XO(4,396,1,0),
XO_MASK,
PPC405|
PPC440, {
RT,
RA,
RB } },
2030 {
"maclhwuo.",
XO(4,396,1,1),
XO_MASK,
PPC405|
PPC440, {
RT,
RA,
RB } },
2043 {
"nmacchw",
XO(4,174,0,0),
XO_MASK,
PPC405|
PPC440, {
RT,
RA,
RB } },
2044 {
"nmacchw.",
XO(4,174,0,1),
XO_MASK,
PPC405|
PPC440, {
RT,
RA,
RB } },
2045 {
"nmacchwo",
XO(4,174,1,0),
XO_MASK,
PPC405|
PPC440, {
RT,
RA,
RB } },
2046 {
"nmacchwo.",
XO(4,174,1,1),
XO_MASK,
PPC405|
PPC440, {
RT,
RA,
RB } },
2047 {
"nmacchws",
XO(4,238,0,0),
XO_MASK,
PPC405|
PPC440, {
RT,
RA,
RB } },
2048 {
"nmacchws.",
XO(4,238,0,1),
XO_MASK,
PPC405|
PPC440, {
RT,
RA,
RB } },
2049 {
"nmacchwso",
XO(4,238,1,0),
XO_MASK,
PPC405|
PPC440, {
RT,
RA,
RB } },
2050 {
"nmacchwso.",
XO(4,238,1,1),
XO_MASK,
PPC405|
PPC440, {
RT,
RA,
RB } },
2051 {
"nmachhw",
XO(4,46,0,0),
XO_MASK,
PPC405|
PPC440, {
RT,
RA,
RB } },
2052 {
"nmachhw.",
XO(4,46,0,1),
XO_MASK,
PPC405|
PPC440, {
RT,
RA,
RB } },
2053 {
"nmachhwo",
XO(4,46,1,0),
XO_MASK,
PPC405|
PPC440, {
RT,
RA,
RB } },
2054 {
"nmachhwo.",
XO(4,46,1,1),
XO_MASK,
PPC405|
PPC440, {
RT,
RA,
RB } },
2055 {
"nmachhws",
XO(4,110,0,0),
XO_MASK,
PPC405|
PPC440, {
RT,
RA,
RB } },
2056 {
"nmachhws.",
XO(4,110,0,1),
XO_MASK,
PPC405|
PPC440, {
RT,
RA,
RB } },
2057 {
"nmachhwso",
XO(4,110,1,0),
XO_MASK,
PPC405|
PPC440, {
RT,
RA,
RB } },
2058 {
"nmachhwso.",
XO(4,110,1,1),
XO_MASK,
PPC405|
PPC440, {
RT,
RA,
RB } },
2059 {
"nmaclhw",
XO(4,430,0,0),
XO_MASK,
PPC405|
PPC440, {
RT,
RA,
RB } },
2060 {
"nmaclhw.",
XO(4,430,0,1),
XO_MASK,
PPC405|
PPC440, {
RT,
RA,
RB } },
2061 {
"nmaclhwo",
XO(4,430,1,0),
XO_MASK,
PPC405|
PPC440, {
RT,
RA,
RB } },
2062 {
"nmaclhwo.",
XO(4,430,1,1),
XO_MASK,
PPC405|
PPC440, {
RT,
RA,
RB } },
2063 {
"nmaclhws",
XO(4,494,0,0),
XO_MASK,
PPC405|
PPC440, {
RT,
RA,
RB } },
2064 {
"nmaclhws.",
XO(4,494,0,1),
XO_MASK,
PPC405|
PPC440, {
RT,
RA,
RB } },
2065 {
"nmaclhwso",
XO(4,494,1,0),
XO_MASK,
PPC405|
PPC440, {
RT,
RA,
RB } },
2066 {
"nmaclhwso.",
XO(4,494,1,1),
XO_MASK,
PPC405|
PPC440, {
RT,
RA,
RB } },
2580 {
"blt-",
BBOCB(16,
BOT,
CBLT,0,0),
BBOATCB_MASK,
PPCCOM, {
CR,
BDM } },
2581 {
"blt+",
BBOCB(16,
BOT,
CBLT,0,0),
BBOATCB_MASK,
PPCCOM, {
CR,
BDP } },
2582 {
"blt",
BBOCB(16,
BOT,
CBLT,0,0),
BBOATCB_MASK,
COM, {
CR,
BD } },
2583 {
"bltl-",
BBOCB(16,
BOT,
CBLT,0,1),
BBOATCB_MASK,
PPCCOM, {
CR,
BDM } },
2584 {
"bltl+",
BBOCB(16,
BOT,
CBLT,0,1),
BBOATCB_MASK,
PPCCOM, {
CR,
BDP } },
2585 {
"bltl",
BBOCB(16,
BOT,
CBLT,0,1),
BBOATCB_MASK,
COM, {
CR,
BD } },
2586 {
"blta-",
BBOCB(16,
BOT,
CBLT,1,0),
BBOATCB_MASK,
PPCCOM, {
CR,
BDMA } },
2587 {
"blta+",
BBOCB(16,
BOT,
CBLT,1,0),
BBOATCB_MASK,
PPCCOM, {
CR,
BDPA } },
2588 {
"blta",
BBOCB(16,
BOT,
CBLT,1,0),
BBOATCB_MASK,
COM, {
CR,
BDA } },
2589 {
"bltla-",
BBOCB(16,
BOT,
CBLT,1,1),
BBOATCB_MASK,
PPCCOM, {
CR,
BDMA } },
2590 {
"bltla+",
BBOCB(16,
BOT,
CBLT,1,1),
BBOATCB_MASK,
PPCCOM, {
CR,
BDPA } },
2591 {
"bltla",
BBOCB(16,
BOT,
CBLT,1,1),
BBOATCB_MASK,
COM, {
CR,
BDA } },
2592 {
"bgt-",
BBOCB(16,
BOT,
CBGT,0,0),
BBOATCB_MASK,
PPCCOM, {
CR,
BDM } },
2593 {
"bgt+",
BBOCB(16,
BOT,
CBGT,0,0),
BBOATCB_MASK,
PPCCOM, {
CR,
BDP } },
2594 {
"bgt",
BBOCB(16,
BOT,
CBGT,0,0),
BBOATCB_MASK,
COM, {
CR,
BD } },
2595 {
"bgtl-",
BBOCB(16,
BOT,
CBGT,0,1),
BBOATCB_MASK,
PPCCOM, {
CR,
BDM } },
2596 {
"bgtl+",
BBOCB(16,
BOT,
CBGT,0,1),
BBOATCB_MASK,
PPCCOM, {
CR,
BDP } },
2597 {
"bgtl",
BBOCB(16,
BOT,
CBGT,0,1),
BBOATCB_MASK,
COM, {
CR,
BD } },
2598 {
"bgta-",
BBOCB(16,
BOT,
CBGT,1,0),
BBOATCB_MASK,
PPCCOM, {
CR,
BDMA } },
2599 {
"bgta+",
BBOCB(16,
BOT,
CBGT,1,0),
BBOATCB_MASK,
PPCCOM, {
CR,
BDPA } },
2600 {
"bgta",
BBOCB(16,
BOT,
CBGT,1,0),
BBOATCB_MASK,
COM, {
CR,
BDA } },
2601 {
"bgtla-",
BBOCB(16,
BOT,
CBGT,1,1),
BBOATCB_MASK,
PPCCOM, {
CR,
BDMA } },
2602 {
"bgtla+",
BBOCB(16,
BOT,
CBGT,1,1),
BBOATCB_MASK,
PPCCOM, {
CR,
BDPA } },
2603 {
"bgtla",
BBOCB(16,
BOT,
CBGT,1,1),
BBOATCB_MASK,
COM, {
CR,
BDA } },
2604 {
"beq-",
BBOCB(16,
BOT,
CBEQ,0,0),
BBOATCB_MASK,
PPCCOM, {
CR,
BDM } },
2605 {
"beq+",
BBOCB(16,
BOT,
CBEQ,0,0),
BBOATCB_MASK,
PPCCOM, {
CR,
BDP } },
2606 {
"beq",
BBOCB(16,
BOT,
CBEQ,0,0),
BBOATCB_MASK,
COM, {
CR,
BD } },
2607 {
"beql-",
BBOCB(16,
BOT,
CBEQ,0,1),
BBOATCB_MASK,
PPCCOM, {
CR,
BDM } },
2608 {
"beql+",
BBOCB(16,
BOT,
CBEQ,0,1),
BBOATCB_MASK,
PPCCOM, {
CR,
BDP } },
2609 {
"beql",
BBOCB(16,
BOT,
CBEQ,0,1),
BBOATCB_MASK,
COM, {
CR,
BD } },
2610 {
"beqa-",
BBOCB(16,
BOT,
CBEQ,1,0),
BBOATCB_MASK,
PPCCOM, {
CR,
BDMA } },
2611 {
"beqa+",
BBOCB(16,
BOT,
CBEQ,1,0),
BBOATCB_MASK,
PPCCOM, {
CR,
BDPA } },
2612 {
"beqa",
BBOCB(16,
BOT,
CBEQ,1,0),
BBOATCB_MASK,
COM, {
CR,
BDA } },
2613 {
"beqla-",
BBOCB(16,
BOT,
CBEQ,1,1),
BBOATCB_MASK,
PPCCOM, {
CR,
BDMA } },
2614 {
"beqla+",
BBOCB(16,
BOT,
CBEQ,1,1),
BBOATCB_MASK,
PPCCOM, {
CR,
BDPA } },
2615 {
"beqla",
BBOCB(16,
BOT,
CBEQ,1,1),
BBOATCB_MASK,
COM, {
CR,
BDA } },
2616 {
"bso-",
BBOCB(16,
BOT,
CBSO,0,0),
BBOATCB_MASK,
PPCCOM, {
CR,
BDM } },
2617 {
"bso+",
BBOCB(16,
BOT,
CBSO,0,0),
BBOATCB_MASK,
PPCCOM, {
CR,
BDP } },
2618 {
"bso",
BBOCB(16,
BOT,
CBSO,0,0),
BBOATCB_MASK,
COM, {
CR,
BD } },
2619 {
"bsol-",
BBOCB(16,
BOT,
CBSO,0,1),
BBOATCB_MASK,
PPCCOM, {
CR,
BDM } },
2620 {
"bsol+",
BBOCB(16,
BOT,
CBSO,0,1),
BBOATCB_MASK,
PPCCOM, {
CR,
BDP } },
2621 {
"bsol",
BBOCB(16,
BOT,
CBSO,0,1),
BBOATCB_MASK,
COM, {
CR,
BD } },
2622 {
"bsoa-",
BBOCB(16,
BOT,
CBSO,1,0),
BBOATCB_MASK,
PPCCOM, {
CR,
BDMA } },
2623 {
"bsoa+",
BBOCB(16,
BOT,
CBSO,1,0),
BBOATCB_MASK,
PPCCOM, {
CR,
BDPA } },
2624 {
"bsoa",
BBOCB(16,
BOT,
CBSO,1,0),
BBOATCB_MASK,
COM, {
CR,
BDA } },
2625 {
"bsola-",
BBOCB(16,
BOT,
CBSO,1,1),
BBOATCB_MASK,
PPCCOM, {
CR,
BDMA } },
2626 {
"bsola+",
BBOCB(16,
BOT,
CBSO,1,1),
BBOATCB_MASK,
PPCCOM, {
CR,
BDPA } },
2627 {
"bsola",
BBOCB(16,
BOT,
CBSO,1,1),
BBOATCB_MASK,
COM, {
CR,
BDA } },
2628 {
"bun-",
BBOCB(16,
BOT,
CBSO,0,0),
BBOATCB_MASK,
PPCCOM, {
CR,
BDM } },
2629 {
"bun+",
BBOCB(16,
BOT,
CBSO,0,0),
BBOATCB_MASK,
PPCCOM, {
CR,
BDP } },
2630 {
"bun",
BBOCB(16,
BOT,
CBSO,0,0),
BBOATCB_MASK,
PPCCOM, {
CR,
BD } },
2631 {
"bunl-",
BBOCB(16,
BOT,
CBSO,0,1),
BBOATCB_MASK,
PPCCOM, {
CR,
BDM } },
2632 {
"bunl+",
BBOCB(16,
BOT,
CBSO,0,1),
BBOATCB_MASK,
PPCCOM, {
CR,
BDP } },
2633 {
"bunl",
BBOCB(16,
BOT,
CBSO,0,1),
BBOATCB_MASK,
PPCCOM, {
CR,
BD } },
2634 {
"buna-",
BBOCB(16,
BOT,
CBSO,1,0),
BBOATCB_MASK,
PPCCOM, {
CR,
BDMA } },
2635 {
"buna+",
BBOCB(16,
BOT,
CBSO,1,0),
BBOATCB_MASK,
PPCCOM, {
CR,
BDPA } },
2636 {
"buna",
BBOCB(16,
BOT,
CBSO,1,0),
BBOATCB_MASK,
PPCCOM, {
CR,
BDA } },
2637 {
"bunla-",
BBOCB(16,
BOT,
CBSO,1,1),
BBOATCB_MASK,
PPCCOM, {
CR,
BDMA } },
2638 {
"bunla+",
BBOCB(16,
BOT,
CBSO,1,1),
BBOATCB_MASK,
PPCCOM, {
CR,
BDPA } },
2639 {
"bunla",
BBOCB(16,
BOT,
CBSO,1,1),
BBOATCB_MASK,
PPCCOM, {
CR,
BDA } },
2640 {
"bge-",
BBOCB(16,
BOF,
CBLT,0,0),
BBOATCB_MASK,
PPCCOM, {
CR,
BDM } },
2641 {
"bge+",
BBOCB(16,
BOF,
CBLT,0,0),
BBOATCB_MASK,
PPCCOM, {
CR,
BDP } },
2642 {
"bge",
BBOCB(16,
BOF,
CBLT,0,0),
BBOATCB_MASK,
COM, {
CR,
BD } },
2643 {
"bgel-",
BBOCB(16,
BOF,
CBLT,0,1),
BBOATCB_MASK,
PPCCOM, {
CR,
BDM } },
2644 {
"bgel+",
BBOCB(16,
BOF,
CBLT,0,1),
BBOATCB_MASK,
PPCCOM, {
CR,
BDP } },
2645 {
"bgel",
BBOCB(16,
BOF,
CBLT,0,1),
BBOATCB_MASK,
COM, {
CR,
BD } },
2646 {
"bgea-",
BBOCB(16,
BOF,
CBLT,1,0),
BBOATCB_MASK,
PPCCOM, {
CR,
BDMA } },
2647 {
"bgea+",
BBOCB(16,
BOF,
CBLT,1,0),
BBOATCB_MASK,
PPCCOM, {
CR,
BDPA } },
2648 {
"bgea",
BBOCB(16,
BOF,
CBLT,1,0),
BBOATCB_MASK,
COM, {
CR,
BDA } },
2649 {
"bgela-",
BBOCB(16,
BOF,
CBLT,1,1),
BBOATCB_MASK,
PPCCOM, {
CR,
BDMA } },
2650 {
"bgela+",
BBOCB(16,
BOF,
CBLT,1,1),
BBOATCB_MASK,
PPCCOM, {
CR,
BDPA } },
2651 {
"bgela",
BBOCB(16,
BOF,
CBLT,1,1),
BBOATCB_MASK,
COM, {
CR,
BDA } },
2652 {
"bnl-",
BBOCB(16,
BOF,
CBLT,0,0),
BBOATCB_MASK,
PPCCOM, {
CR,
BDM } },
2653 {
"bnl+",
BBOCB(16,
BOF,
CBLT,0,0),
BBOATCB_MASK,
PPCCOM, {
CR,
BDP } },
2654 {
"bnl",
BBOCB(16,
BOF,
CBLT,0,0),
BBOATCB_MASK,
COM, {
CR,
BD } },
2655 {
"bnll-",
BBOCB(16,
BOF,
CBLT,0,1),
BBOATCB_MASK,
PPCCOM, {
CR,
BDM } },
2656 {
"bnll+",
BBOCB(16,
BOF,
CBLT,0,1),
BBOATCB_MASK,
PPCCOM, {
CR,
BDP } },
2657 {
"bnll",
BBOCB(16,
BOF,
CBLT,0,1),
BBOATCB_MASK,
COM, {
CR,
BD } },
2658 {
"bnla-",
BBOCB(16,
BOF,
CBLT,1,0),
BBOATCB_MASK,
PPCCOM, {
CR,
BDMA } },
2659 {
"bnla+",
BBOCB(16,
BOF,
CBLT,1,0),
BBOATCB_MASK,
PPCCOM, {
CR,
BDPA } },
2660 {
"bnla",
BBOCB(16,
BOF,
CBLT,1,0),
BBOATCB_MASK,
COM, {
CR,
BDA } },
2661 {
"bnlla-",
BBOCB(16,
BOF,
CBLT,1,1),
BBOATCB_MASK,
PPCCOM, {
CR,
BDMA } },
2662 {
"bnlla+",
BBOCB(16,
BOF,
CBLT,1,1),
BBOATCB_MASK,
PPCCOM, {
CR,
BDPA } },
2663 {
"bnlla",
BBOCB(16,
BOF,
CBLT,1,1),
BBOATCB_MASK,
COM, {
CR,
BDA } },
2664 {
"ble-",
BBOCB(16,
BOF,
CBGT,0,0),
BBOATCB_MASK,
PPCCOM, {
CR,
BDM } },
2665 {
"ble+",
BBOCB(16,
BOF,
CBGT,0,0),
BBOATCB_MASK,
PPCCOM, {
CR,
BDP } },
2666 {
"ble",
BBOCB(16,
BOF,
CBGT,0,0),
BBOATCB_MASK,
COM, {
CR,
BD } },
2667 {
"blel-",
BBOCB(16,
BOF,
CBGT,0,1),
BBOATCB_MASK,
PPCCOM, {
CR,
BDM } },
2668 {
"blel+",
BBOCB(16,
BOF,
CBGT,0,1),
BBOATCB_MASK,
PPCCOM, {
CR,
BDP } },
2669 {
"blel",
BBOCB(16,
BOF,
CBGT,0,1),
BBOATCB_MASK,
COM, {
CR,
BD } },
2670 {
"blea-",
BBOCB(16,
BOF,
CBGT,1,0),
BBOATCB_MASK,
PPCCOM, {
CR,
BDMA } },
2671 {
"blea+",
BBOCB(16,
BOF,
CBGT,1,0),
BBOATCB_MASK,
PPCCOM, {
CR,
BDPA } },
2672 {
"blea",
BBOCB(16,
BOF,
CBGT,1,0),
BBOATCB_MASK,
COM, {
CR,
BDA } },
2673 {
"blela-",
BBOCB(16,
BOF,
CBGT,1,1),
BBOATCB_MASK,
PPCCOM, {
CR,
BDMA } },
2674 {
"blela+",
BBOCB(16,
BOF,
CBGT,1,1),
BBOATCB_MASK,
PPCCOM, {
CR,
BDPA } },
2675 {
"blela",
BBOCB(16,
BOF,
CBGT,1,1),
BBOATCB_MASK,
COM, {
CR,
BDA } },
2676 {
"bng-",
BBOCB(16,
BOF,
CBGT,0,0),
BBOATCB_MASK,
PPCCOM, {
CR,
BDM } },
2677 {
"bng+",
BBOCB(16,
BOF,
CBGT,0,0),
BBOATCB_MASK,
PPCCOM, {
CR,
BDP } },
2678 {
"bng",
BBOCB(16,
BOF,
CBGT,0,0),
BBOATCB_MASK,
COM, {
CR,
BD } },
2679 {
"bngl-",
BBOCB(16,
BOF,
CBGT,0,1),
BBOATCB_MASK,
PPCCOM, {
CR,
BDM } },
2680 {
"bngl+",
BBOCB(16,
BOF,
CBGT,0,1),
BBOATCB_MASK,
PPCCOM, {
CR,
BDP } },
2681 {
"bngl",
BBOCB(16,
BOF,
CBGT,0,1),
BBOATCB_MASK,
COM, {
CR,
BD } },
2682 {
"bnga-",
BBOCB(16,
BOF,
CBGT,1,0),
BBOATCB_MASK,
PPCCOM, {
CR,
BDMA } },
2683 {
"bnga+",
BBOCB(16,
BOF,
CBGT,1,0),
BBOATCB_MASK,
PPCCOM, {
CR,
BDPA } },
2684 {
"bnga",
BBOCB(16,
BOF,
CBGT,1,0),
BBOATCB_MASK,
COM, {
CR,
BDA } },
2685 {
"bngla-",
BBOCB(16,
BOF,
CBGT,1,1),
BBOATCB_MASK,
PPCCOM, {
CR,
BDMA } },
2686 {
"bngla+",
BBOCB(16,
BOF,
CBGT,1,1),
BBOATCB_MASK,
PPCCOM, {
CR,
BDPA } },
2687 {
"bngla",
BBOCB(16,
BOF,
CBGT,1,1),
BBOATCB_MASK,
COM, {
CR,
BDA } },
2688 {
"bne-",
BBOCB(16,
BOF,
CBEQ,0,0),
BBOATCB_MASK,
PPCCOM, {
CR,
BDM } },
2689 {
"bne+",
BBOCB(16,
BOF,
CBEQ,0,0),
BBOATCB_MASK,
PPCCOM, {
CR,
BDP } },
2690 {
"bne",
BBOCB(16,
BOF,
CBEQ,0,0),
BBOATCB_MASK,
COM, {
CR,
BD } },
2691 {
"bnel-",
BBOCB(16,
BOF,
CBEQ,0,1),
BBOATCB_MASK,
PPCCOM, {
CR,
BDM } },
2692 {
"bnel+",
BBOCB(16,
BOF,
CBEQ,0,1),
BBOATCB_MASK,
PPCCOM, {
CR,
BDP } },
2693 {
"bnel",
BBOCB(16,
BOF,
CBEQ,0,1),
BBOATCB_MASK,
COM, {
CR,
BD } },
2694 {
"bnea-",
BBOCB(16,
BOF,
CBEQ,1,0),
BBOATCB_MASK,
PPCCOM, {
CR,
BDMA } },
2695 {
"bnea+",
BBOCB(16,
BOF,
CBEQ,1,0),
BBOATCB_MASK,
PPCCOM, {
CR,
BDPA } },
2696 {
"bnea",
BBOCB(16,
BOF,
CBEQ,1,0),
BBOATCB_MASK,
COM, {
CR,
BDA } },
2697 {
"bnela-",
BBOCB(16,
BOF,
CBEQ,1,1),
BBOATCB_MASK,
PPCCOM, {
CR,
BDMA } },
2698 {
"bnela+",
BBOCB(16,
BOF,
CBEQ,1,1),
BBOATCB_MASK,
PPCCOM, {
CR,
BDPA } },
2699 {
"bnela",
BBOCB(16,
BOF,
CBEQ,1,1),
BBOATCB_MASK,
COM, {
CR,
BDA } },
2700 {
"bns-",
BBOCB(16,
BOF,
CBSO,0,0),
BBOATCB_MASK,
PPCCOM, {
CR,
BDM } },
2701 {
"bns+",
BBOCB(16,
BOF,
CBSO,0,0),
BBOATCB_MASK,
PPCCOM, {
CR,
BDP } },
2702 {
"bns",
BBOCB(16,
BOF,
CBSO,0,0),
BBOATCB_MASK,
COM, {
CR,
BD } },
2703 {
"bnsl-",
BBOCB(16,
BOF,
CBSO,0,1),
BBOATCB_MASK,
PPCCOM, {
CR,
BDM } },
2704 {
"bnsl+",
BBOCB(16,
BOF,
CBSO,0,1),
BBOATCB_MASK,
PPCCOM, {
CR,
BDP } },
2705 {
"bnsl",
BBOCB(16,
BOF,
CBSO,0,1),
BBOATCB_MASK,
COM, {
CR,
BD } },
2706 {
"bnsa-",
BBOCB(16,
BOF,
CBSO,1,0),
BBOATCB_MASK,
PPCCOM, {
CR,
BDMA } },
2707 {
"bnsa+",
BBOCB(16,
BOF,
CBSO,1,0),
BBOATCB_MASK,
PPCCOM, {
CR,
BDPA } },
2708 {
"bnsa",
BBOCB(16,
BOF,
CBSO,1,0),
BBOATCB_MASK,
COM, {
CR,
BDA } },
2709 {
"bnsla-",
BBOCB(16,
BOF,
CBSO,1,1),
BBOATCB_MASK,
PPCCOM, {
CR,
BDMA } },
2710 {
"bnsla+",
BBOCB(16,
BOF,
CBSO,1,1),
BBOATCB_MASK,
PPCCOM, {
CR,
BDPA } },
2711 {
"bnsla",
BBOCB(16,
BOF,
CBSO,1,1),
BBOATCB_MASK,
COM, {
CR,
BDA } },
2712 {
"bnu-",
BBOCB(16,
BOF,
CBSO,0,0),
BBOATCB_MASK,
PPCCOM, {
CR,
BDM } },
2713 {
"bnu+",
BBOCB(16,
BOF,
CBSO,0,0),
BBOATCB_MASK,
PPCCOM, {
CR,
BDP } },
2714 {
"bnu",
BBOCB(16,
BOF,
CBSO,0,0),
BBOATCB_MASK,
PPCCOM, {
CR,
BD } },
2715 {
"bnul-",
BBOCB(16,
BOF,
CBSO,0,1),
BBOATCB_MASK,
PPCCOM, {
CR,
BDM } },
2716 {
"bnul+",
BBOCB(16,
BOF,
CBSO,0,1),
BBOATCB_MASK,
PPCCOM, {
CR,
BDP } },
2717 {
"bnul",
BBOCB(16,
BOF,
CBSO,0,1),
BBOATCB_MASK,
PPCCOM, {
CR,
BD } },
2718 {
"bnua-",
BBOCB(16,
BOF,
CBSO,1,0),
BBOATCB_MASK,
PPCCOM, {
CR,
BDMA } },
2719 {
"bnua+",
BBOCB(16,
BOF,
CBSO,1,0),
BBOATCB_MASK,
PPCCOM, {
CR,
BDPA } },
2720 {
"bnua",
BBOCB(16,
BOF,
CBSO,1,0),
BBOATCB_MASK,
PPCCOM, {
CR,
BDA } },
2721 {
"bnula-",
BBOCB(16,
BOF,
CBSO,1,1),
BBOATCB_MASK,
PPCCOM, {
CR,
BDMA } },
2722 {
"bnula+",
BBOCB(16,
BOF,
CBSO,1,1),
BBOATCB_MASK,
PPCCOM, {
CR,
BDPA } },
2723 {
"bnula",
BBOCB(16,
BOF,
CBSO,1,1),
BBOATCB_MASK,
PPCCOM, {
CR,
BDA } },
3053 {
"rfid",
XL(19,18), 0xffffffff,
PPC64, { 0 } },
3057 {
"rfmci",
X(19,38), 0xffffffff,
PPCRFMCI, { 0 } },
3059 {
"rfi",
XL(19,50), 0xffffffff,
COM, { 0 } },
3062 {
"rfsvc",
XL(19,82), 0xffffffff,
POWER, { 0 } },
3066 {
"isync",
XL(19,150), 0xffffffff,
PPCCOM, { 0 } },
3067 {
"ics",
XL(19,150), 0xffffffff,
PWRCOM, { 0 } },
3076 {
"hrfid",
XL(19,274), 0xffffffff,
POWER5 |
CELL, { 0 } },
3081 {
"doze",
XL(19,402), 0xffffffff,
POWER6, { 0 } },
3085 {
"nap",
XL(19,434), 0xffffffff,
POWER6, { 0 } },
3090 {
"sleep",
XL(19,466), 0xffffffff,
POWER6, { 0 } },
3091 {
"rvwinkle",
XL(19,498), 0xffffffff,
POWER6, { 0 } },
3246 {
"rlwimi",
M(20,0),
M_MASK,
PPCCOM, {
RA,
RS,
SH,
MBE,
ME } },
3247 {
"rlimi",
M(20,0),
M_MASK,
PWRCOM, {
RA,
RS,
SH,
MBE,
ME } },
3249 {
"rlwimi.",
M(20,1),
M_MASK,
PPCCOM, {
RA,
RS,
SH,
MBE,
ME } },
3250 {
"rlimi.",
M(20,1),
M_MASK,
PWRCOM, {
RA,
RS,
SH,
MBE,
ME } },
3254 {
"rlwinm",
M(21,0),
M_MASK,
PPCCOM, {
RA,
RS,
SH,
MBE,
ME } },
3255 {
"rlinm",
M(21,0),
M_MASK,
PWRCOM, {
RA,
RS,
SH,
MBE,
ME } },
3258 {
"rlwinm.",
M(21,1),
M_MASK,
PPCCOM, {
RA,
RS,
SH,
MBE,
ME } },
3259 {
"rlinm.",
M(21,1),
M_MASK,
PWRCOM, {
RA,
RS,
SH,
MBE,
ME } },
3261 {
"rlmi",
M(22,0),
M_MASK,
M601, {
RA,
RS,
RB,
MBE,
ME } },
3262 {
"rlmi.",
M(22,1),
M_MASK,
M601, {
RA,
RS,
RB,
MBE,
ME } },
3270 {
"rlwnm",
M(23,0),
M_MASK,
PPCCOM, {
RA,
RS,
RB,
MBE,
ME } },
3271 {
"rlnm",
M(23,0),
M_MASK,
PWRCOM, {
RA,
RS,
RB,
MBE,
ME } },
3273 {
"rlwnm.",
M(23,1),
M_MASK,
PPCCOM, {
RA,
RS,
RB,
MBE,
ME } },
3274 {
"rlnm.",
M(23,1),
M_MASK,
PWRCOM, {
RA,
RS,
RB,
MBE,
ME } },
3276 {
"nop",
OP(24), 0xffffffff,
PPCCOM, { 0 } },
3297 {
"rldicl",
MD(30,0,0),
MD_MASK,
PPC64, {
RA,
RS,
SH6,
MB6 } },
3300 {
"rldicl.",
MD(30,0,1),
MD_MASK,
PPC64, {
RA,
RS,
SH6,
MB6 } },
3302 {
"rldicr",
MD(30,1,0),
MD_MASK,
PPC64, {
RA,
RS,
SH6,
ME6 } },
3303 {
"rldicr.",
MD(30,1,1),
MD_MASK,
PPC64, {
RA,
RS,
SH6,
ME6 } },
3305 {
"rldic",
MD(30,2,0),
MD_MASK,
PPC64, {
RA,
RS,
SH6,
MB6 } },
3306 {
"rldic.",
MD(30,2,1),
MD_MASK,
PPC64, {
RA,
RS,
SH6,
MB6 } },
3308 {
"rldimi",
MD(30,3,0),
MD_MASK,
PPC64, {
RA,
RS,
SH6,
MB6 } },
3309 {
"rldimi.",
MD(30,3,1),
MD_MASK,
PPC64, {
RA,
RS,
SH6,
MB6 } },
3312 {
"rldcl",
MDS(30,8,0),
MDS_MASK,
PPC64, {
RA,
RS,
RB,
MB6 } },
3314 {
"rldcl.",
MDS(30,8,1),
MDS_MASK,
PPC64, {
RA,
RS,
RB,
MB6 } },
3316 {
"rldcr",
MDS(30,9,0),
MDS_MASK,
PPC64, {
RA,
RS,
RB,
ME6 } },
3317 {
"rldcr.",
MDS(30,9,1),
MDS_MASK,
PPC64, {
RA,
RS,
RB,
ME6 } },
3356 {
"subfc",
XO(31,8,0,0),
XO_MASK,
PPCCOM, {
RT,
RA,
RB } },
3357 {
"sf",
XO(31,8,0,0),
XO_MASK,
PWRCOM, {
RT,
RA,
RB } },
3358 {
"subc",
XO(31,8,0,0),
XO_MASK,
PPC, {
RT,
RB,
RA } },
3359 {
"subfc.",
XO(31,8,0,1),
XO_MASK,
PPCCOM, {
RT,
RA,
RB } },
3360 {
"sf.",
XO(31,8,0,1),
XO_MASK,
PWRCOM, {
RT,
RA,
RB } },
3361 {
"subc.",
XO(31,8,0,1),
XO_MASK,
PPCCOM, {
RT,
RB,
RA } },
3362 {
"subfco",
XO(31,8,1,0),
XO_MASK,
PPCCOM, {
RT,
RA,
RB } },
3363 {
"sfo",
XO(31,8,1,0),
XO_MASK,
PWRCOM, {
RT,
RA,
RB } },
3364 {
"subco",
XO(31,8,1,0),
XO_MASK,
PPC, {
RT,
RB,
RA } },
3365 {
"subfco.",
XO(31,8,1,1),
XO_MASK,
PPCCOM, {
RT,
RA,
RB } },
3366 {
"sfo.",
XO(31,8,1,1),
XO_MASK,
PWRCOM, {
RT,
RA,
RB } },
3367 {
"subco.",
XO(31,8,1,1),
XO_MASK,
PPC, {
RT,
RB,
RA } },
3369 {
"mulhdu",
XO(31,9,0,0),
XO_MASK,
PPC64, {
RT,
RA,
RB } },
3370 {
"mulhdu.",
XO(31,9,0,1),
XO_MASK,
PPC64, {
RT,
RA,
RB } },
3372 {
"addc",
XO(31,10,0,0),
XO_MASK,
PPCCOM, {
RT,
RA,
RB } },
3373 {
"a",
XO(31,10,0,0),
XO_MASK,
PWRCOM, {
RT,
RA,
RB } },
3374 {
"addc.",
XO(31,10,0,1),
XO_MASK,
PPCCOM, {
RT,
RA,
RB } },
3375 {
"a.",
XO(31,10,0,1),
XO_MASK,
PWRCOM, {
RT,
RA,
RB } },
3376 {
"addco",
XO(31,10,1,0),
XO_MASK,
PPCCOM, {
RT,
RA,
RB } },
3377 {
"ao",
XO(31,10,1,0),
XO_MASK,
PWRCOM, {
RT,
RA,
RB } },
3378 {
"addco.",
XO(31,10,1,1),
XO_MASK,
PPCCOM, {
RT,
RA,
RB } },
3379 {
"ao.",
XO(31,10,1,1),
XO_MASK,
PWRCOM, {
RT,
RA,
RB } },
3381 {
"mulhwu",
XO(31,11,0,0),
XO_MASK,
PPC, {
RT,
RA,
RB } },
3382 {
"mulhwu.",
XO(31,11,0,1),
XO_MASK,
PPC, {
RT,
RA,
RB } },
3431 {
"subf",
XO(31,40,0,0),
XO_MASK,
PPC, {
RT,
RA,
RB } },
3432 {
"sub",
XO(31,40,0,0),
XO_MASK,
PPC, {
RT,
RB,
RA } },
3433 {
"subf.",
XO(31,40,0,1),
XO_MASK,
PPC, {
RT,
RA,
RB } },
3434 {
"sub.",
XO(31,40,0,1),
XO_MASK,
PPC, {
RT,
RB,
RA } },
3435 {
"subfo",
XO(31,40,1,0),
XO_MASK,
PPC, {
RT,
RA,
RB } },
3436 {
"subo",
XO(31,40,1,0),
XO_MASK,
PPC, {
RT,
RB,
RA } },
3437 {
"subfo.",
XO(31,40,1,1),
XO_MASK,
PPC, {
RT,
RA,
RB } },
3438 {
"subo.",
XO(31,40,1,1),
XO_MASK,
PPC, {
RT,
RB,
RA } },
3473 {
"mulhd",
XO(31,73,0,0),
XO_MASK,
PPC64, {
RT,
RA,
RB } },
3474 {
"mulhd.",
XO(31,73,0,1),
XO_MASK,
PPC64, {
RT,
RA,
RB } },
3476 {
"mulhw",
XO(31,75,0,0),
XO_MASK,
PPC, {
RT,
RA,
RB } },
3477 {
"mulhw.",
XO(31,75,0,1),
XO_MASK,
PPC, {
RT,
RA,
RB } },
3502 {
"mul",
XO(31,107,0,0),
XO_MASK,
M601, {
RT,
RA,
RB } },
3503 {
"mul.",
XO(31,107,0,1),
XO_MASK,
M601, {
RT,
RA,
RB } },
3504 {
"mulo",
XO(31,107,1,0),
XO_MASK,
M601, {
RT,
RA,
RB } },
3505 {
"mulo.",
XO(31,107,1,1),
XO_MASK,
M601, {
RT,
RA,
RB } },
3528 {
"subfe",
XO(31,136,0,0),
XO_MASK,
PPCCOM, {
RT,
RA,
RB } },
3529 {
"sfe",
XO(31,136,0,0),
XO_MASK,
PWRCOM, {
RT,
RA,
RB } },
3530 {
"subfe.",
XO(31,136,0,1),
XO_MASK,
PPCCOM, {
RT,
RA,
RB } },
3531 {
"sfe.",
XO(31,136,0,1),
XO_MASK,
PWRCOM, {
RT,
RA,
RB } },
3532 {
"subfeo",
XO(31,136,1,0),
XO_MASK,
PPCCOM, {
RT,
RA,
RB } },
3533 {
"sfeo",
XO(31,136,1,0),
XO_MASK,
PWRCOM, {
RT,
RA,
RB } },
3534 {
"subfeo.",
XO(31,136,1,1),
XO_MASK,
PPCCOM, {
RT,
RA,
RB } },
3535 {
"sfeo.",
XO(31,136,1,1),
XO_MASK,
PWRCOM, {
RT,
RA,
RB } },
3537 {
"adde",
XO(31,138,0,0),
XO_MASK,
PPCCOM, {
RT,
RA,
RB } },
3538 {
"ae",
XO(31,138,0,0),
XO_MASK,
PWRCOM, {
RT,
RA,
RB } },
3539 {
"adde.",
XO(31,138,0,1),
XO_MASK,
PPCCOM, {
RT,
RA,
RB } },
3540 {
"ae.",
XO(31,138,0,1),
XO_MASK,
PWRCOM, {
RT,
RA,
RB } },
3541 {
"addeo",
XO(31,138,1,0),
XO_MASK,
PPCCOM, {
RT,
RA,
RB } },
3542 {
"aeo",
XO(31,138,1,0),
XO_MASK,
PWRCOM, {
RT,
RA,
RB } },
3543 {
"addeo.",
XO(31,138,1,1),
XO_MASK,
PPCCOM, {
RT,
RA,
RB } },
3544 {
"aeo.",
XO(31,138,1,1),
XO_MASK,
PWRCOM, {
RT,
RA,
RB } },
3635 {
"mulld",
XO(31,233,0,0),
XO_MASK,
PPC64, {
RT,
RA,
RB } },
3636 {
"mulld.",
XO(31,233,0,1),
XO_MASK,
PPC64, {
RT,
RA,
RB } },
3637 {
"mulldo",
XO(31,233,1,0),
XO_MASK,
PPC64, {
RT,
RA,
RB } },
3638 {
"mulldo.",
XO(31,233,1,1),
XO_MASK,
PPC64, {
RT,
RA,
RB } },
3649 {
"mullw",
XO(31,235,0,0),
XO_MASK,
PPCCOM, {
RT,
RA,
RB } },
3650 {
"muls",
XO(31,235,0,0),
XO_MASK,
PWRCOM, {
RT,
RA,
RB } },
3651 {
"mullw.",
XO(31,235,0,1),
XO_MASK,
PPCCOM, {
RT,
RA,
RB } },
3652 {
"muls.",
XO(31,235,0,1),
XO_MASK,
PWRCOM, {
RT,
RA,
RB } },
3653 {
"mullwo",
XO(31,235,1,0),
XO_MASK,
PPCCOM, {
RT,
RA,
RB } },
3654 {
"mulso",
XO(31,235,1,0),
XO_MASK,
PWRCOM, {
RT,
RA,
RB } },
3655 {
"mullwo.",
XO(31,235,1,1),
XO_MASK,
PPCCOM, {
RT,
RA,
RB } },
3656 {
"mulso.",
XO(31,235,1,1),
XO_MASK,
PWRCOM, {
RT,
RA,
RB } },
3675 {
"doz",
XO(31,264,0,0),
XO_MASK,
M601, {
RT,
RA,
RB } },
3676 {
"doz.",
XO(31,264,0,1),
XO_MASK,
M601, {
RT,
RA,
RB } },
3677 {
"dozo",
XO(31,264,1,0),
XO_MASK,
M601, {
RT,
RA,
RB } },
3678 {
"dozo.",
XO(31,264,1,1),
XO_MASK,
M601, {
RT,
RA,
RB } },
3680 {
"add",
XO(31,266,0,0),
XO_MASK,
PPCCOM, {
RT,
RA,
RB } },
3681 {
"cax",
XO(31,266,0,0),
XO_MASK,
PWRCOM, {
RT,
RA,
RB } },
3682 {
"add.",
XO(31,266,0,1),
XO_MASK,
PPCCOM, {
RT,
RA,
RB } },
3683 {
"cax.",
XO(31,266,0,1),
XO_MASK,
PWRCOM, {
RT,
RA,
RB } },
3684 {
"addo",
XO(31,266,1,0),
XO_MASK,
PPCCOM, {
RT,
RA,
RB } },
3685 {
"caxo",
XO(31,266,1,0),
XO_MASK,
PWRCOM, {
RT,
RA,
RB } },
3686 {
"addo.",
XO(31,266,1,1),
XO_MASK,
PPCCOM, {
RT,
RA,
RB } },
3687 {
"caxo.",
XO(31,266,1,1),
XO_MASK,
PWRCOM, {
RT,
RA,
RB } },
3755 {
"div",
XO(31,331,0,0),
XO_MASK,
M601, {
RT,
RA,
RB } },
3756 {
"div.",
XO(31,331,0,1),
XO_MASK,
M601, {
RT,
RA,
RB } },
3757 {
"divo",
XO(31,331,1,0),
XO_MASK,
M601, {
RT,
RA,
RB } },
3758 {
"divo.",
XO(31,331,1,1),
XO_MASK,
M601, {
RT,
RA,
RB } },
3970 {
"divs",
XO(31,363,0,0),
XO_MASK,
M601, {
RT,
RA,
RB } },
3971 {
"divs.",
XO(31,363,0,1),
XO_MASK,
M601, {
RT,
RA,
RB } },
3972 {
"divso",
XO(31,363,1,0),
XO_MASK,
M601, {
RT,
RA,
RB } },
3973 {
"divso.",
XO(31,363,1,1),
XO_MASK,
M601, {
RT,
RA,
RB } },
3975 {
"tlbia",
X(31,370), 0xffffffff,
PPC, { 0 } },
3987 {
"subfe64",
XO(31,392,0,0),
XO_MASK,
BOOKE64, {
RT,
RA,
RB } },
3988 {
"subfe64o",
XO(31,392,1,0),
XO_MASK,
BOOKE64, {
RT,
RA,
RB } },
3990 {
"adde64",
XO(31,394,0,0),
XO_MASK,
BOOKE64, {
RT,
RA,
RB } },
3991 {
"adde64o",
XO(31,394,1,0),
XO_MASK,
BOOKE64, {
RT,
RA,
RB } },
4073 {
"divdu",
XO(31,457,0,0),
XO_MASK,
PPC64, {
RT,
RA,
RB } },
4074 {
"divdu.",
XO(31,457,0,1),
XO_MASK,
PPC64, {
RT,
RA,
RB } },
4075 {
"divduo",
XO(31,457,1,0),
XO_MASK,
PPC64, {
RT,
RA,
RB } },
4076 {
"divduo.",
XO(31,457,1,1),
XO_MASK,
PPC64, {
RT,
RA,
RB } },
4081 {
"divwu",
XO(31,459,0,0),
XO_MASK,
PPC, {
RT,
RA,
RB } },
4082 {
"divwu.",
XO(31,459,0,1),
XO_MASK,
PPC, {
RT,
RA,
RB } },
4083 {
"divwuo",
XO(31,459,1,0),
XO_MASK,
PPC, {
RT,
RA,
RB } },
4084 {
"divwuo.",
XO(31,459,1,1),
XO_MASK,
PPC, {
RT,
RA,
RB } },
4260 {
"divd",
XO(31,489,0,0),
XO_MASK,
PPC64, {
RT,
RA,
RB } },
4261 {
"divd.",
XO(31,489,0,1),
XO_MASK,
PPC64, {
RT,
RA,
RB } },
4262 {
"divdo",
XO(31,489,1,0),
XO_MASK,
PPC64, {
RT,
RA,
RB } },
4263 {
"divdo.",
XO(31,489,1,1),
XO_MASK,
PPC64, {
RT,
RA,
RB } },
4268 {
"divw",
XO(31,491,0,0),
XO_MASK,
PPC, {
RT,
RA,
RB } },
4269 {
"divw.",
XO(31,491,0,1),
XO_MASK,
PPC, {
RT,
RA,
RB } },
4270 {
"divwo",
XO(31,491,1,0),
XO_MASK,
PPC, {
RT,
RA,
RB } },
4271 {
"divwo.",
XO(31,491,1,1),
XO_MASK,
PPC, {
RT,
RA,
RB } },
4275 {
"slbia",
X(31,498), 0xffffffff,
PPC64, { 0 } },
4318 {
"tlbsync",
X(31,566), 0xffffffff,
PPC, { 0 } },
4329 {
"lwsync",
XSYNC(31,598,1), 0xffffffff,
PPC, { 0 } },
4330 {
"ptesync",
XSYNC(31,598,2), 0xffffffff,
PPC64, { 0 } },
4331 {
"msync",
X(31,598), 0xffffffff,
BOOKE, { 0 } },
4333 {
"dcs",
X(31,598), 0xffffffff,
PWRCOM, { 0 } },
4441 {
"eieio",
X(31,854), 0xffffffff,
PPC, { 0 } },
4627 {
"dqua",
ZRC(59,3,0),
Z_MASK,
POWER6, {
FRT,
FRA,
FRB,
RMC } },
4628 {
"dqua.",
ZRC(59,3,1),
Z_MASK,
POWER6, {
FRT,
FRA,
FRB,
RMC } },
4651 {
"fmsubs",
A(59,28,0),
A_MASK,
PPC, {
FRT,
FRA,
FRC,
FRB } },
4652 {
"fmsubs.",
A(59,28,1),
A_MASK,
PPC, {
FRT,
FRA,
FRC,
FRB } },
4654 {
"fmadds",
A(59,29,0),
A_MASK,
PPC, {
FRT,
FRA,
FRC,
FRB } },
4655 {
"fmadds.",
A(59,29,1),
A_MASK,
PPC, {
FRT,
FRA,
FRC,
FRB } },
4657 {
"fnmsubs",
A(59,30,0),
A_MASK,
PPC, {
FRT,
FRA,
FRC,
FRB } },
4658 {
"fnmsubs.",
A(59,30,1),
A_MASK,
PPC, {
FRT,
FRA,
FRC,
FRB } },
4660 {
"fnmadds",
A(59,31,0),
A_MASK,
PPC, {
FRT,
FRA,
FRC,
FRB } },
4661 {
"fnmadds.",
A(59,31,1),
A_MASK,
PPC, {
FRT,
FRA,
FRC,
FRB } },
4666 {
"drrnd",
ZRC(59,35,0),
Z_MASK,
POWER6, {
FRT,
FRA,
FRB,
RMC } },
4667 {
"drrnd.",
ZRC(59,35,1),
Z_MASK,
POWER6, {
FRT,
FRA,
FRB,
RMC } },
4672 {
"dquai",
ZRC(59,67,0),
Z_MASK,
POWER6, {
TE,
FRT,
FRB,
RMC } },
4673 {
"dquai.",
ZRC(59,67,1),
Z_MASK,
POWER6, {
TE,
FRT,
FRB,
RMC } },
4678 {
"drintx",
ZRC(59,99,0),
Z_MASK,
POWER6, {
R,
FRT,
FRB,
RMC } },
4679 {
"drintx.",
ZRC(59,99,1),
Z_MASK,
POWER6, {
R,
FRT,
FRB,
RMC } },
4687 {
"drintn",
ZRC(59,227,0),
Z_MASK,
POWER6, {
R,
FRT,
FRB,
RMC } },
4688 {
"drintn.",
ZRC(59,227,1),
Z_MASK,
POWER6, {
R,
FRT,
FRB,
RMC } },
4754 {
"dquaq",
ZRC(63,3,0),
Z_MASK,
POWER6, {
FRT,
FRA,
FRB,
RMC } },
4755 {
"dquaq.",
ZRC(63,3,1),
Z_MASK,
POWER6, {
FRT,
FRA,
FRB,
RMC } },
4791 {
"fsel",
A(63,23,0),
A_MASK,
PPC, {
FRT,
FRA,
FRC,
FRB } },
4792 {
"fsel.",
A(63,23,1),
A_MASK,
PPC, {
FRT,
FRA,
FRC,
FRB } },
4805 {
"fmsub",
A(63,28,0),
A_MASK,
PPCCOM, {
FRT,
FRA,
FRC,
FRB } },
4806 {
"fms",
A(63,28,0),
A_MASK,
PWRCOM, {
FRT,
FRA,
FRC,
FRB } },
4807 {
"fmsub.",
A(63,28,1),
A_MASK,
PPCCOM, {
FRT,
FRA,
FRC,
FRB } },
4808 {
"fms.",
A(63,28,1),
A_MASK,
PWRCOM, {
FRT,
FRA,
FRC,
FRB } },
4810 {
"fmadd",
A(63,29,0),
A_MASK,
PPCCOM, {
FRT,
FRA,
FRC,
FRB } },
4811 {
"fma",
A(63,29,0),
A_MASK,
PWRCOM, {
FRT,
FRA,
FRC,
FRB } },
4812 {
"fmadd.",
A(63,29,1),
A_MASK,
PPCCOM, {
FRT,
FRA,
FRC,
FRB } },
4813 {
"fma.",
A(63,29,1),
A_MASK,
PWRCOM, {
FRT,
FRA,
FRC,
FRB } },
4815 {
"fnmsub",
A(63,30,0),
A_MASK,
PPCCOM, {
FRT,
FRA,
FRC,
FRB } },
4816 {
"fnms",
A(63,30,0),
A_MASK,
PWRCOM, {
FRT,
FRA,
FRC,
FRB } },
4817 {
"fnmsub.",
A(63,30,1),
A_MASK,
PPCCOM, {
FRT,
FRA,
FRC,
FRB } },
4818 {
"fnms.",
A(63,30,1),
A_MASK,
PWRCOM, {
FRT,
FRA,
FRC,
FRB } },
4820 {
"fnmadd",
A(63,31,0),
A_MASK,
PPCCOM, {
FRT,
FRA,
FRC,
FRB } },
4821 {
"fnma",
A(63,31,0),
A_MASK,
PWRCOM, {
FRT,
FRA,
FRC,
FRB } },
4822 {
"fnmadd.",
A(63,31,1),
A_MASK,
PPCCOM, {
FRT,
FRA,
FRC,
FRB } },
4823 {
"fnma.",
A(63,31,1),
A_MASK,
PWRCOM, {
FRT,
FRA,
FRC,
FRB } },
4830 {
"drrndq",
ZRC(63,35,0),
Z_MASK,
POWER6, {
FRT,
FRA,
FRB,
RMC } },
4831 {
"drrndq.",
ZRC(63,35,1),
Z_MASK,
POWER6, {
FRT,
FRA,
FRB,
RMC } },
4844 {
"dquaiq",
ZRC(63,67,0),
Z_MASK,
POWER6, {
TE,
FRT,
FRB,
RMC } },
4845 {
"dquaiq.",
ZRC(63,67,1),
Z_MASK,
POWER6, {
FRT,
FRA,
FRB,
RMC } },
4856 {
"drintxq",
ZRC(63,99,0),
Z_MASK,
POWER6, {
R,
FRT,
FRB,
RMC } },
4857 {
"drintxq.",
ZRC(63,99,1),
Z_MASK,
POWER6, {
R,
FRT,
FRB,
RMC } },
4871 {
"drintnq",
ZRC(63,227,0),
Z_MASK,
POWER6, {
R,
FRT,
FRB,
RMC } },
4872 {
"drintnq.",
ZRC(63,227,1),
Z_MASK,
POWER6, {
R,
FRT,
FRB,
RMC } },
4952 {
"extldi", 4,
PPC64,
"rldicr %0,%1,%3,(%2)-1" },
4953 {
"extldi.", 4,
PPC64,
"rldicr. %0,%1,%3,(%2)-1" },
4954 {
"extrdi", 4,
PPC64,
"rldicl %0,%1,(%2)+(%3),64-(%2)" },
4955 {
"extrdi.", 4,
PPC64,
"rldicl. %0,%1,(%2)+(%3),64-(%2)" },
4956 {
"insrdi", 4,
PPC64,
"rldimi %0,%1,64-((%2)+(%3)),%3" },
4957 {
"insrdi.", 4,
PPC64,
"rldimi. %0,%1,64-((%2)+(%3)),%3" },
4958 {
"rotrdi", 3,
PPC64,
"rldicl %0,%1,(-(%2)!63)&((%2)|63),0" },
4959 {
"rotrdi.", 3,
PPC64,
"rldicl. %0,%1,(-(%2)!63)&((%2)|63),0" },
4960 {
"sldi", 3,
PPC64,
"rldicr %0,%1,%2,63-(%2)" },
4961 {
"sldi.", 3,
PPC64,
"rldicr. %0,%1,%2,63-(%2)" },
4962 {
"srdi", 3,
PPC64,
"rldicl %0,%1,(-(%2)!63)&((%2)|63),%2" },
4963 {
"srdi.", 3,
PPC64,
"rldicl. %0,%1,(-(%2)!63)&((%2)|63),%2" },
4964 {
"clrrdi", 3,
PPC64,
"rldicr %0,%1,0,63-(%2)" },
4965 {
"clrrdi.", 3,
PPC64,
"rldicr. %0,%1,0,63-(%2)" },
4966 {
"clrlsldi",4,
PPC64,
"rldic %0,%1,%3,(%2)-(%3)" },
4967 {
"clrlsldi.",4,
PPC64,
"rldic. %0,%1,%3,(%2)-(%3)" },
4969 {
"extlwi", 4,
PPCCOM,
"rlwinm %0,%1,%3,0,(%2)-1" },
4970 {
"extlwi.", 4,
PPCCOM,
"rlwinm. %0,%1,%3,0,(%2)-1" },
4971 {
"extrwi", 4,
PPCCOM,
"rlwinm %0,%1,((%2)+(%3))&((%2)+(%3)<>32),32-(%2),31" },
4972 {
"extrwi.", 4,
PPCCOM,
"rlwinm. %0,%1,((%2)+(%3))&((%2)+(%3)<>32),32-(%2),31" },
4973 {
"inslwi", 4,
PPCCOM,
"rlwimi %0,%1,(-(%3)!31)&((%3)|31),%3,(%2)+(%3)-1" },
4974 {
"inslwi.", 4,
PPCCOM,
"rlwimi. %0,%1,(-(%3)!31)&((%3)|31),%3,(%2)+(%3)-1"},
4975 {
"insrwi", 4,
PPCCOM,
"rlwimi %0,%1,32-((%2)+(%3)),%3,(%2)+(%3)-1" },
4976 {
"insrwi.", 4,
PPCCOM,
"rlwimi. %0,%1,32-((%2)+(%3)),%3,(%2)+(%3)-1"},
4977 {
"rotrwi", 3,
PPCCOM,
"rlwinm %0,%1,(-(%2)!31)&((%2)|31),0,31" },
4978 {
"rotrwi.", 3,
PPCCOM,
"rlwinm. %0,%1,(-(%2)!31)&((%2)|31),0,31" },
4979 {
"slwi", 3,
PPCCOM,
"rlwinm %0,%1,%2,0,31-(%2)" },
4980 {
"sli", 3,
PWRCOM,
"rlinm %0,%1,%2,0,31-(%2)" },
4981 {
"slwi.", 3,
PPCCOM,
"rlwinm. %0,%1,%2,0,31-(%2)" },
4982 {
"sli.", 3,
PWRCOM,
"rlinm. %0,%1,%2,0,31-(%2)" },
4983 {
"srwi", 3,
PPCCOM,
"rlwinm %0,%1,(-(%2)!31)&((%2)|31),%2,31" },
4984 {
"sri", 3,
PWRCOM,
"rlinm %0,%1,(-(%2)!31)&((%2)|31),%2,31" },
4985 {
"srwi.", 3,
PPCCOM,
"rlwinm. %0,%1,(-(%2)!31)&((%2)|31),%2,31" },
4986 {
"sri.", 3,
PWRCOM,
"rlinm. %0,%1,(-(%2)!31)&((%2)|31),%2,31" },
4987 {
"clrrwi", 3,
PPCCOM,
"rlwinm %0,%1,0,0,31-(%2)" },
4988 {
"clrrwi.", 3,
PPCCOM,
"rlwinm. %0,%1,0,0,31-(%2)" },
4989 {
"clrlslwi",4,
PPCCOM,
"rlwinm %0,%1,%3,(%2)-(%3),31-(%3)" },
4990 {
"clrlslwi.",4,
PPCCOM,
"rlwinm. %0,%1,%3,(%2)-(%3),31-(%3)" },