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
00028 #include <stdio.h>
00029 #include "sysdep.h"
00030 #include "opcode/alpha.h"
00031 #include "bfd.h"
00032 #include "opintl.h"
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063 static unsigned insert_rba PARAMS((unsigned, int, const char **));
00064 static unsigned insert_rca PARAMS((unsigned, int, const char **));
00065 static unsigned insert_za PARAMS((unsigned, int, const char **));
00066 static unsigned insert_zb PARAMS((unsigned, int, const char **));
00067 static unsigned insert_zc PARAMS((unsigned, int, const char **));
00068 static unsigned insert_bdisp PARAMS((unsigned, int, const char **));
00069 static unsigned insert_jhint PARAMS((unsigned, int, const char **));
00070 static unsigned insert_ev6hwjhint PARAMS((unsigned, int, const char **));
00071
00072 static int extract_rba PARAMS((unsigned, int *));
00073 static int extract_rca PARAMS((unsigned, int *));
00074 static int extract_za PARAMS((unsigned, int *));
00075 static int extract_zb PARAMS((unsigned, int *));
00076 static int extract_zc PARAMS((unsigned, int *));
00077 static int extract_bdisp PARAMS((unsigned, int *));
00078 static int extract_jhint PARAMS((unsigned, int *));
00079 static int extract_ev6hwjhint PARAMS((unsigned, int *));
00080
00081
00082
00083
00084 const struct alpha_operand alpha_operands[] =
00085 {
00086
00087
00088 #define UNUSED 0
00089 { 0, 0, 0, 0, 0, 0 },
00090
00091
00092 #define RA (UNUSED + 1)
00093 { 5, 21, 0, AXP_OPERAND_IR, 0, 0 },
00094 #define RB (RA + 1)
00095 { 5, 16, 0, AXP_OPERAND_IR, 0, 0 },
00096 #define RC (RB + 1)
00097 { 5, 0, 0, AXP_OPERAND_IR, 0, 0 },
00098
00099
00100 #define FA (RC + 1)
00101 { 5, 21, 0, AXP_OPERAND_FPR, 0, 0 },
00102 #define FB (FA + 1)
00103 { 5, 16, 0, AXP_OPERAND_FPR, 0, 0 },
00104 #define FC (FB + 1)
00105 { 5, 0, 0, AXP_OPERAND_FPR, 0, 0 },
00106
00107
00108 #define ZA (FC + 1)
00109 { 5, 21, 0, AXP_OPERAND_FAKE, insert_za, extract_za },
00110 #define ZB (ZA + 1)
00111 { 5, 16, 0, AXP_OPERAND_FAKE, insert_zb, extract_zb },
00112 #define ZC (ZB + 1)
00113 { 5, 0, 0, AXP_OPERAND_FAKE, insert_zc, extract_zc },
00114
00115
00116 #define PRB (ZC + 1)
00117 { 5, 16, 0, AXP_OPERAND_IR|AXP_OPERAND_PARENS, 0, 0 },
00118
00119
00120 #define CPRB (PRB + 1)
00121 { 5, 16, 0,
00122 AXP_OPERAND_IR|AXP_OPERAND_PARENS|AXP_OPERAND_COMMA, 0, 0 },
00123
00124
00125 #define RBA (CPRB + 1)
00126 { 5, 16, 0, AXP_OPERAND_FAKE, insert_rba, extract_rba },
00127
00128
00129 #define RCA (RBA + 1)
00130 { 5, 0, 0, AXP_OPERAND_FAKE, insert_rca, extract_rca },
00131
00132
00133 #define DRC1 (RCA + 1)
00134 { 5, 0, 0,
00135 AXP_OPERAND_IR|AXP_OPERAND_DEFAULT_FIRST, 0, 0 },
00136
00137
00138 #define DRC2 (DRC1 + 1)
00139 { 5, 0, 0,
00140 AXP_OPERAND_IR|AXP_OPERAND_DEFAULT_SECOND, 0, 0 },
00141
00142
00143 #define DFC1 (DRC2 + 1)
00144 { 5, 0, 0,
00145 AXP_OPERAND_FPR|AXP_OPERAND_DEFAULT_FIRST, 0, 0 },
00146
00147
00148 #define DFC2 (DFC1 + 1)
00149 { 5, 0, 0,
00150 AXP_OPERAND_FPR|AXP_OPERAND_DEFAULT_SECOND, 0, 0 },
00151
00152
00153 #define LIT (DFC2 + 1)
00154 { 8, 13, -LIT, AXP_OPERAND_UNSIGNED, 0, 0 },
00155
00156
00157
00158 #define MDISP (LIT + 1)
00159 { 16, 0, -MDISP, AXP_OPERAND_SIGNED, 0, 0 },
00160
00161
00162 #define BDISP (MDISP + 1)
00163 { 21, 0, BFD_RELOC_23_PCREL_S2,
00164 AXP_OPERAND_RELATIVE, insert_bdisp, extract_bdisp },
00165
00166
00167 #define PALFN (BDISP + 1)
00168 { 26, 0, -PALFN, AXP_OPERAND_UNSIGNED, 0, 0 },
00169
00170
00171 #define JMPHINT (PALFN + 1)
00172 { 14, 0, BFD_RELOC_ALPHA_HINT,
00173 AXP_OPERAND_RELATIVE|AXP_OPERAND_DEFAULT_ZERO|AXP_OPERAND_NOOVERFLOW,
00174 insert_jhint, extract_jhint },
00175
00176
00177 #define RETHINT (JMPHINT + 1)
00178 { 14, 0, -RETHINT,
00179 AXP_OPERAND_UNSIGNED|AXP_OPERAND_DEFAULT_ZERO, 0, 0 },
00180
00181
00182 #define EV4HWDISP (RETHINT + 1)
00183 #define EV6HWDISP (EV4HWDISP)
00184 { 12, 0, -EV4HWDISP, AXP_OPERAND_SIGNED, 0, 0 },
00185
00186
00187 #define EV4HWINDEX (EV4HWDISP + 1)
00188 { 5, 0, -EV4HWINDEX, AXP_OPERAND_UNSIGNED, 0, 0 },
00189
00190
00191
00192 #define EV4EXTHWINDEX (EV4HWINDEX + 1)
00193 { 8, 0, -EV4EXTHWINDEX, AXP_OPERAND_UNSIGNED, 0, 0 },
00194
00195
00196 #define EV5HWDISP (EV4EXTHWINDEX + 1)
00197 { 10, 0, -EV5HWDISP, AXP_OPERAND_SIGNED, 0, 0 },
00198
00199
00200 #define EV5HWINDEX (EV5HWDISP + 1)
00201 { 16, 0, -EV5HWINDEX, AXP_OPERAND_UNSIGNED, 0, 0 },
00202
00203
00204
00205 #define EV6HWINDEX (EV5HWINDEX + 1)
00206 { 16, 0, -EV6HWINDEX, AXP_OPERAND_UNSIGNED, 0, 0 },
00207
00208
00209 #define EV6HWJMPHINT (EV6HWINDEX+ 1)
00210 { 8, 0, -EV6HWJMPHINT,
00211 AXP_OPERAND_RELATIVE|AXP_OPERAND_DEFAULT_ZERO|AXP_OPERAND_NOOVERFLOW,
00212 insert_ev6hwjhint, extract_ev6hwjhint }
00213 };
00214
00215 const unsigned alpha_num_operands = sizeof(alpha_operands)/sizeof(*alpha_operands);
00216
00217
00218
00219
00220
00221
00222 static unsigned
00223 insert_rba(insn, value, errmsg)
00224 unsigned insn;
00225 int value ATTRIBUTE_UNUSED;
00226 const char **errmsg ATTRIBUTE_UNUSED;
00227 {
00228 return insn | (((insn >> 21) & 0x1f) << 16);
00229 }
00230
00231 static int
00232 extract_rba(insn, invalid)
00233 unsigned insn;
00234 int *invalid;
00235 {
00236 if (invalid != (int *) NULL
00237 && ((insn >> 21) & 0x1f) != ((insn >> 16) & 0x1f))
00238 *invalid = 1;
00239 return 0;
00240 }
00241
00242
00243
00244
00245 static unsigned
00246 insert_rca(insn, value, errmsg)
00247 unsigned insn;
00248 int value ATTRIBUTE_UNUSED;
00249 const char **errmsg ATTRIBUTE_UNUSED;
00250 {
00251 return insn | ((insn >> 21) & 0x1f);
00252 }
00253
00254 static int
00255 extract_rca(insn, invalid)
00256 unsigned insn;
00257 int *invalid;
00258 {
00259 if (invalid != (int *) NULL
00260 && ((insn >> 21) & 0x1f) != (insn & 0x1f))
00261 *invalid = 1;
00262 return 0;
00263 }
00264
00265
00266
00267
00268 static unsigned
00269 insert_za(insn, value, errmsg)
00270 unsigned insn;
00271 int value ATTRIBUTE_UNUSED;
00272 const char **errmsg ATTRIBUTE_UNUSED;
00273 {
00274 return insn | (31 << 21);
00275 }
00276
00277 static int
00278 extract_za(insn, invalid)
00279 unsigned insn;
00280 int *invalid;
00281 {
00282 if (invalid != (int *) NULL && ((insn >> 21) & 0x1f) != 31)
00283 *invalid = 1;
00284 return 0;
00285 }
00286
00287 static unsigned
00288 insert_zb(insn, value, errmsg)
00289 unsigned insn;
00290 int value ATTRIBUTE_UNUSED;
00291 const char **errmsg ATTRIBUTE_UNUSED;
00292 {
00293 return insn | (31 << 16);
00294 }
00295
00296 static int
00297 extract_zb(insn, invalid)
00298 unsigned insn;
00299 int *invalid;
00300 {
00301 if (invalid != (int *) NULL && ((insn >> 16) & 0x1f) != 31)
00302 *invalid = 1;
00303 return 0;
00304 }
00305
00306 static unsigned
00307 insert_zc(insn, value, errmsg)
00308 unsigned insn;
00309 int value ATTRIBUTE_UNUSED;
00310 const char **errmsg ATTRIBUTE_UNUSED;
00311 {
00312 return insn | 31;
00313 }
00314
00315 static int
00316 extract_zc(insn, invalid)
00317 unsigned insn;
00318 int *invalid;
00319 {
00320 if (invalid != (int *) NULL && (insn & 0x1f) != 31)
00321 *invalid = 1;
00322 return 0;
00323 }
00324
00325
00326
00327
00328 static unsigned
00329 insert_bdisp(insn, value, errmsg)
00330 unsigned insn;
00331 int value;
00332 const char **errmsg;
00333 {
00334 if (errmsg != (const char **)NULL && (value & 3))
00335 *errmsg = _("branch operand unaligned");
00336 return insn | ((value / 4) & 0x1FFFFF);
00337 }
00338
00339 static int
00340 extract_bdisp(insn, invalid)
00341 unsigned insn;
00342 int *invalid ATTRIBUTE_UNUSED;
00343 {
00344 return 4 * (((insn & 0x1FFFFF) ^ 0x100000) - 0x100000);
00345 }
00346
00347
00348
00349
00350 static unsigned
00351 insert_jhint(insn, value, errmsg)
00352 unsigned insn;
00353 int value;
00354 const char **errmsg;
00355 {
00356 if (errmsg != (const char **)NULL && (value & 3))
00357 *errmsg = _("jump hint unaligned");
00358 return insn | ((value / 4) & 0x3FFF);
00359 }
00360
00361 static int
00362 extract_jhint(insn, invalid)
00363 unsigned insn;
00364 int *invalid ATTRIBUTE_UNUSED;
00365 {
00366 return 4 * (((insn & 0x3FFF) ^ 0x2000) - 0x2000);
00367 }
00368
00369
00370
00371 static unsigned
00372 insert_ev6hwjhint(insn, value, errmsg)
00373 unsigned insn;
00374 int value;
00375 const char **errmsg;
00376 {
00377 if (errmsg != (const char **)NULL && (value & 3))
00378 *errmsg = _("jump hint unaligned");
00379 return insn | ((value / 4) & 0x1FFF);
00380 }
00381
00382 static int
00383 extract_ev6hwjhint(insn, invalid)
00384 unsigned insn;
00385 int *invalid ATTRIBUTE_UNUSED;
00386 {
00387 return 4 * (((insn & 0x1FFF) ^ 0x1000) - 0x1000);
00388 }
00389
00390
00391
00392
00393
00394 #define OP(x) (((x) & 0x3F) << 26)
00395 #define OP_MASK 0xFC000000
00396
00397
00398 #define BRA_(oo) OP(oo)
00399 #define BRA_MASK OP_MASK
00400 #define BRA(oo) BRA_(oo), BRA_MASK
00401
00402
00403 #define FP_(oo,fff) (OP(oo) | (((fff) & 0x7FF) << 5))
00404 #define FP_MASK (OP_MASK | 0xFFE0)
00405 #define FP(oo,fff) FP_(oo,fff), FP_MASK
00406
00407
00408 #define MEM_(oo) OP(oo)
00409 #define MEM_MASK OP_MASK
00410 #define MEM(oo) MEM_(oo), MEM_MASK
00411
00412
00413 #define MFC_(oo,ffff) (OP(oo) | ((ffff) & 0xFFFF))
00414 #define MFC_MASK (OP_MASK | 0xFFFF)
00415 #define MFC(oo,ffff) MFC_(oo,ffff), MFC_MASK
00416
00417
00418 #define MBR_(oo,h) (OP(oo) | (((h) & 3) << 14))
00419 #define MBR_MASK (OP_MASK | 0xC000)
00420 #define MBR(oo,h) MBR_(oo,h), MBR_MASK
00421
00422
00423
00424 #define OPR_(oo,ff) (OP(oo) | (((ff) & 0x7F) << 5))
00425 #define OPRL_(oo,ff) (OPR_((oo),(ff)) | 0x1000)
00426 #define OPR_MASK (OP_MASK | 0x1FE0)
00427 #define OPR(oo,ff) OPR_(oo,ff), OPR_MASK
00428 #define OPRL(oo,ff) OPRL_(oo,ff), OPR_MASK
00429
00430
00431 #define PCD_(oo) OP(oo)
00432 #define PCD_MASK OP_MASK
00433 #define PCD(oo) PCD_(oo), PCD_MASK
00434
00435
00436 #define SPCD_(oo,ffff) (OP(oo) | ((ffff) & 0x3FFFFFF))
00437 #define SPCD_MASK 0xFFFFFFFF
00438 #define SPCD(oo,ffff) SPCD_(oo,ffff), SPCD_MASK
00439
00440
00441 #define EV4HWMEM_(oo,f) (OP(oo) | (((f) & 0xF) << 12))
00442 #define EV4HWMEM_MASK (OP_MASK | 0xF000)
00443 #define EV4HWMEM(oo,f) EV4HWMEM_(oo,f), EV4HWMEM_MASK
00444
00445 #define EV5HWMEM_(oo,f) (OP(oo) | (((f) & 0x3F) << 10))
00446 #define EV5HWMEM_MASK (OP_MASK | 0xF800)
00447 #define EV5HWMEM(oo,f) EV5HWMEM_(oo,f), EV5HWMEM_MASK
00448
00449 #define EV6HWMEM_(oo,f) (OP(oo) | (((f) & 0xF) << 12))
00450 #define EV6HWMEM_MASK (OP_MASK | 0xF000)
00451 #define EV6HWMEM(oo,f) EV6HWMEM_(oo,f), EV6HWMEM_MASK
00452
00453 #define EV6HWMBR_(oo,h) (OP(oo) | (((h) & 7) << 13))
00454 #define EV6HWMBR_MASK (OP_MASK | 0xE000)
00455 #define EV6HWMBR(oo,h) EV6HWMBR_(oo,h), EV6HWMBR_MASK
00456
00457
00458 #define BASE AXP_OPCODE_BASE
00459 #define EV4 AXP_OPCODE_EV4
00460 #define EV5 AXP_OPCODE_EV5
00461 #define EV6 AXP_OPCODE_EV6
00462 #define BWX AXP_OPCODE_BWX
00463 #define CIX AXP_OPCODE_CIX
00464 #define MAX AXP_OPCODE_MAX
00465
00466
00467 #define ARG_NONE { 0 }
00468 #define ARG_BRA { RA, BDISP }
00469 #define ARG_FBRA { FA, BDISP }
00470 #define ARG_FP { FA, FB, DFC1 }
00471 #define ARG_FPZ1 { ZA, FB, DFC1 }
00472 #define ARG_MEM { RA, MDISP, PRB }
00473 #define ARG_FMEM { FA, MDISP, PRB }
00474 #define ARG_OPR { RA, RB, DRC1 }
00475 #define ARG_OPRL { RA, LIT, DRC1 }
00476 #define ARG_OPRZ1 { ZA, RB, DRC1 }
00477 #define ARG_OPRLZ1 { ZA, LIT, RC }
00478 #define ARG_PCD { PALFN }
00479 #define ARG_EV4HWMEM { RA, EV4HWDISP, PRB }
00480 #define ARG_EV4HWMPR { RA, RBA, EV4HWINDEX }
00481 #define ARG_EV5HWMEM { RA, EV5HWDISP, PRB }
00482 #define ARG_EV6HWMEM { RA, EV6HWDISP, PRB }
00483
00484
00485
00486
00487
00488
00489
00490
00491
00492
00493
00494
00495
00496
00497
00498
00499
00500
00501
00502
00503
00504
00505
00506
00507
00508
00509
00510
00511
00512
00513
00514
00515
00516
00517
00518
00519
00520
00521
00522
00523
00524
00525
00526
00527
00528
00529 const struct alpha_opcode alpha_opcodes[] = {
00530 { "halt", SPCD(0x00,0x0000), BASE, ARG_NONE },
00531 { "draina", SPCD(0x00,0x0002), BASE, ARG_NONE },
00532 { "bpt", SPCD(0x00,0x0080), BASE, ARG_NONE },
00533 { "bugchk", SPCD(0x00,0x0081), BASE, ARG_NONE },
00534 { "callsys", SPCD(0x00,0x0083), BASE, ARG_NONE },
00535 { "chmk", SPCD(0x00,0x0083), BASE, ARG_NONE },
00536 { "imb", SPCD(0x00,0x0086), BASE, ARG_NONE },
00537 { "rduniq", SPCD(0x00,0x009e), BASE, ARG_NONE },
00538 { "wruniq", SPCD(0x00,0x009f), BASE, ARG_NONE },
00539 { "gentrap", SPCD(0x00,0x00aa), BASE, ARG_NONE },
00540 { "call_pal", PCD(0x00), BASE, ARG_PCD },
00541 { "pal", PCD(0x00), BASE, ARG_PCD },
00542
00543 { "lda", MEM(0x08), BASE, { RA, MDISP, ZB } },
00544 { "lda", MEM(0x08), BASE, ARG_MEM },
00545 { "ldah", MEM(0x09), BASE, { RA, MDISP, ZB } },
00546 { "ldah", MEM(0x09), BASE, ARG_MEM },
00547 { "ldbu", MEM(0x0A), BWX, ARG_MEM },
00548 { "unop", MEM_(0x0B) | (30 << 16),
00549 MEM_MASK, BASE, { ZA } },
00550 { "ldq_u", MEM(0x0B), BASE, ARG_MEM },
00551 { "ldwu", MEM(0x0C), BWX, ARG_MEM },
00552 { "stw", MEM(0x0D), BWX, ARG_MEM },
00553 { "stb", MEM(0x0E), BWX, ARG_MEM },
00554 { "stq_u", MEM(0x0F), BASE, ARG_MEM },
00555
00556 { "sextl", OPR(0x10,0x00), BASE, ARG_OPRZ1 },
00557 { "sextl", OPRL(0x10,0x00), BASE, ARG_OPRLZ1 },
00558 { "addl", OPR(0x10,0x00), BASE, ARG_OPR },
00559 { "addl", OPRL(0x10,0x00), BASE, ARG_OPRL },
00560 { "s4addl", OPR(0x10,0x02), BASE, ARG_OPR },
00561 { "s4addl", OPRL(0x10,0x02), BASE, ARG_OPRL },
00562 { "negl", OPR(0x10,0x09), BASE, ARG_OPRZ1 },
00563 { "negl", OPRL(0x10,0x09), BASE, ARG_OPRLZ1 },
00564 { "subl", OPR(0x10,0x09), BASE, ARG_OPR },
00565 { "subl", OPRL(0x10,0x09), BASE, ARG_OPRL },
00566 { "s4subl", OPR(0x10,0x0B), BASE, ARG_OPR },
00567 { "s4subl", OPRL(0x10,0x0B), BASE, ARG_OPRL },
00568 { "cmpbge", OPR(0x10,0x0F), BASE, ARG_OPR },
00569 { "cmpbge", OPRL(0x10,0x0F), BASE, ARG_OPRL },
00570 { "s8addl", OPR(0x10,0x12), BASE, ARG_OPR },
00571 { "s8addl", OPRL(0x10,0x12), BASE, ARG_OPRL },
00572 { "s8subl", OPR(0x10,0x1B), BASE, ARG_OPR },
00573 { "s8subl", OPRL(0x10,0x1B), BASE, ARG_OPRL },
00574 { "cmpult", OPR(0x10,0x1D), BASE, ARG_OPR },
00575 { "cmpult", OPRL(0x10,0x1D), BASE, ARG_OPRL },
00576 { "addq", OPR(0x10,0x20), BASE, ARG_OPR },
00577 { "addq", OPRL(0x10,0x20), BASE, ARG_OPRL },
00578 { "s4addq", OPR(0x10,0x22), BASE, ARG_OPR },
00579 { "s4addq", OPRL(0x10,0x22), BASE, ARG_OPRL },
00580 { "negq", OPR(0x10,0x29), BASE, ARG_OPRZ1 },
00581 { "negq", OPRL(0x10,0x29), BASE, ARG_OPRLZ1 },
00582 { "subq", OPR(0x10,0x29), BASE, ARG_OPR },
00583 { "subq", OPRL(0x10,0x29), BASE, ARG_OPRL },
00584 { "s4subq", OPR(0x10,0x2B), BASE, ARG_OPR },
00585 { "s4subq", OPRL(0x10,0x2B), BASE, ARG_OPRL },
00586 { "cmpeq", OPR(0x10,0x2D), BASE, ARG_OPR },
00587 { "cmpeq", OPRL(0x10,0x2D), BASE, ARG_OPRL },
00588 { "s8addq", OPR(0x10,0x32), BASE, ARG_OPR },
00589 { "s8addq", OPRL(0x10,0x32), BASE, ARG_OPRL },
00590 { "s8subq", OPR(0x10,0x3B), BASE, ARG_OPR },
00591 { "s8subq", OPRL(0x10,0x3B), BASE, ARG_OPRL },
00592 { "cmpule", OPR(0x10,0x3D), BASE, ARG_OPR },
00593 { "cmpule", OPRL(0x10,0x3D), BASE, ARG_OPRL },
00594 { "addl/v", OPR(0x10,0x40), BASE, ARG_OPR },
00595 { "addl/v", OPRL(0x10,0x40), BASE, ARG_OPRL },
00596 { "negl/v", OPR(0x10,0x49), BASE, ARG_OPRZ1 },
00597 { "negl/v", OPRL(0x10,0x49), BASE, ARG_OPRLZ1 },
00598 { "subl/v", OPR(0x10,0x49), BASE, ARG_OPR },
00599 { "subl/v", OPRL(0x10,0x49), BASE, ARG_OPRL },
00600 { "cmplt", OPR(0x10,0x4D), BASE, ARG_OPR },
00601 { "cmplt", OPRL(0x10,0x4D), BASE, ARG_OPRL },
00602 { "addq/v", OPR(0x10,0x60), BASE, ARG_OPR },
00603 { "addq/v", OPRL(0x10,0x60), BASE, ARG_OPRL },
00604 { "negq/v", OPR(0x10,0x69), BASE, ARG_OPRZ1 },
00605 { "negq/v", OPRL(0x10,0x69), BASE, ARG_OPRLZ1 },
00606 { "subq/v", OPR(0x10,0x69), BASE, ARG_OPR },
00607 { "subq/v", OPRL(0x10,0x69), BASE, ARG_OPRL },
00608 { "cmple", OPR(0x10,0x6D), BASE, ARG_OPR },
00609 { "cmple", OPRL(0x10,0x6D), BASE, ARG_OPRL },
00610
00611 { "and", OPR(0x11,0x00), BASE, ARG_OPR },
00612 { "and", OPRL(0x11,0x00), BASE, ARG_OPRL },
00613 { "andnot", OPR(0x11,0x08), BASE, ARG_OPR },
00614 { "andnot", OPRL(0x11,0x08), BASE, ARG_OPRL },
00615 { "bic", OPR(0x11,0x08), BASE, ARG_OPR },
00616 { "bic", OPRL(0x11,0x08), BASE, ARG_OPRL },
00617 { "cmovlbs", OPR(0x11,0x14), BASE, ARG_OPR },
00618 { "cmovlbs", OPRL(0x11,0x14), BASE, ARG_OPRL },
00619 { "cmovlbc", OPR(0x11,0x16), BASE, ARG_OPR },
00620 { "cmovlbc", OPRL(0x11,0x16), BASE, ARG_OPRL },
00621 { "nop", OPR(0x11,0x20), BASE, { ZA, ZB, ZC } },
00622 { "clr", OPR(0x11,0x20), BASE, { ZA, ZB, RC } },
00623 { "mov", OPR(0x11,0x20), BASE, { ZA, RB, RC } },
00624 { "mov", OPR(0x11,0x20), BASE, { RA, RBA, RC } },
00625 { "mov", OPRL(0x11,0x20), BASE, { ZA, LIT, RC } },
00626 { "or", OPR(0x11,0x20), BASE, ARG_OPR },
00627 { "or", OPRL(0x11,0x20), BASE, ARG_OPRL },
00628 { "bis", OPR(0x11,0x20), BASE, ARG_OPR },
00629 { "bis", OPRL(0x11,0x20), BASE, ARG_OPRL },
00630 { "cmoveq", OPR(0x11,0x24), BASE, ARG_OPR },
00631 { "cmoveq", OPRL(0x11,0x24), BASE, ARG_OPRL },
00632 { "cmovne", OPR(0x11,0x26), BASE, ARG_OPR },
00633 { "cmovne", OPRL(0x11,0x26), BASE, ARG_OPRL },
00634 { "not", OPR(0x11,0x28), BASE, ARG_OPRZ1 },
00635 { "not", OPRL(0x11,0x28), BASE, ARG_OPRLZ1 },
00636 { "ornot", OPR(0x11,0x28), BASE, ARG_OPR },
00637 { "ornot", OPRL(0x11,0x28), BASE, ARG_OPRL },
00638 { "xor", OPR(0x11,0x40), BASE, ARG_OPR },
00639 { "xor", OPRL(0x11,0x40), BASE, ARG_OPRL },
00640 { "cmovlt", OPR(0x11,0x44), BASE, ARG_OPR },
00641 { "cmovlt", OPRL(0x11,0x44), BASE, ARG_OPRL },
00642 { "cmovge", OPR(0x11,0x46), BASE, ARG_OPR },
00643 { "cmovge", OPRL(0x11,0x46), BASE, ARG_OPRL },
00644 { "eqv", OPR(0x11,0x48), BASE, ARG_OPR },
00645 { "eqv", OPRL(0x11,0x48), BASE, ARG_OPRL },
00646 { "xornot", OPR(0x11,0x48), BASE, ARG_OPR },
00647 { "xornot", OPRL(0x11,0x48), BASE, ARG_OPRL },
00648 { "amask", OPR(0x11,0x61), BASE, ARG_OPRZ1 },
00649 { "amask", OPRL(0x11,0x61), BASE, ARG_OPRLZ1 },
00650 { "cmovle", OPR(0x11,0x64), BASE, ARG_OPR },
00651 { "cmovle", OPRL(0x11,0x64), BASE, ARG_OPRL },
00652 { "cmovgt", OPR(0x11,0x66), BASE, ARG_OPR },
00653 { "cmovgt", OPRL(0x11,0x66), BASE, ARG_OPRL },
00654 { "implver", OPRL_(0x11,0x6C)|(31<<21)|(1<<13),
00655 0xFFFFFFE0, BASE, { RC } },
00656
00657 { "mskbl", OPR(0x12,0x02), BASE, ARG_OPR },
00658 { "mskbl", OPRL(0x12,0x02), BASE, ARG_OPRL },
00659 { "extbl", OPR(0x12,0x06), BASE, ARG_OPR },
00660 { "extbl", OPRL(0x12,0x06), BASE, ARG_OPRL },
00661 { "insbl", OPR(0x12,0x0B), BASE, ARG_OPR },
00662 { "insbl", OPRL(0x12,0x0B), BASE, ARG_OPRL },
00663 { "mskwl", OPR(0x12,0x12), BASE, ARG_OPR },
00664 { "mskwl", OPRL(0x12,0x12), BASE, ARG_OPRL },
00665 { "extwl", OPR(0x12,0x16), BASE, ARG_OPR },
00666 { "extwl", OPRL(0x12,0x16), BASE, ARG_OPRL },
00667 { "inswl", OPR(0x12,0x1B), BASE, ARG_OPR },
00668 { "inswl", OPRL(0x12,0x1B), BASE, ARG_OPRL },
00669 { "mskll", OPR(0x12,0x22), BASE, ARG_OPR },
00670 { "mskll", OPRL(0x12,0x22), BASE, ARG_OPRL },
00671 { "extll", OPR(0x12,0x26), BASE, ARG_OPR },
00672 { "extll", OPRL(0x12,0x26), BASE, ARG_OPRL },
00673 { "insll", OPR(0x12,0x2B), BASE, ARG_OPR },
00674 { "insll", OPRL(0x12,0x2B), BASE, ARG_OPRL },
00675 { "zap", OPR(0x12,0x30), BASE, ARG_OPR },
00676 { "zap", OPRL(0x12,0x30), BASE, ARG_OPRL },
00677 { "zapnot", OPR(0x12,0x31), BASE, ARG_OPR },
00678 { "zapnot", OPRL(0x12,0x31), BASE, ARG_OPRL },
00679 { "mskql", OPR(0x12,0x32), BASE, ARG_OPR },
00680 { "mskql", OPRL(0x12,0x32), BASE, ARG_OPRL },
00681 { "srl", OPR(0x12,0x34), BASE, ARG_OPR },
00682 { "srl", OPRL(0x12,0x34), BASE, ARG_OPRL },
00683 { "extql", OPR(0x12,0x36), BASE, ARG_OPR },
00684 { "extql", OPRL(0x12,0x36), BASE, ARG_OPRL },
00685 { "sll", OPR(0x12,0x39), BASE, ARG_OPR },
00686 { "sll", OPRL(0x12,0x39), BASE, ARG_OPRL },
00687 { "insql", OPR(0x12,0x3B), BASE, ARG_OPR },
00688 { "insql", OPRL(0x12,0x3B), BASE, ARG_OPRL },
00689 { "sra", OPR(0x12,0x3C), BASE, ARG_OPR },
00690 { "sra", OPRL(0x12,0x3C), BASE, ARG_OPRL },
00691 { "mskwh", OPR(0x12,0x52), BASE, ARG_OPR },
00692 { "mskwh", OPRL(0x12,0x52), BASE, ARG_OPRL },
00693 { "inswh", OPR(0x12,0x57), BASE, ARG_OPR },
00694 { "inswh", OPRL(0x12,0x57), BASE, ARG_OPRL },
00695 { "extwh", OPR(0x12,0x5A), BASE, ARG_OPR },
00696 { "extwh", OPRL(0x12,0x5A), BASE, ARG_OPRL },
00697 { "msklh", OPR(0x12,0x62), BASE, ARG_OPR },
00698 { "msklh", OPRL(0x12,0x62), BASE, ARG_OPRL },
00699 { "inslh", OPR(0x12,0x67), BASE, ARG_OPR },
00700 { "inslh", OPRL(0x12,0x67), BASE, ARG_OPRL },
00701 { "extlh", OPR(0x12,0x6A), BASE, ARG_OPR },
00702 { "extlh", OPRL(0x12,0x6A), BASE, ARG_OPRL },
00703 { "mskqh", OPR(0x12,0x72), BASE, ARG_OPR },
00704 { "mskqh", OPRL(0x12,0x72), BASE, ARG_OPRL },
00705 { "insqh", OPR(0x12,0x77), BASE, ARG_OPR },
00706 { "insqh", OPRL(0x12,0x77), BASE, ARG_OPRL },
00707 { "extqh", OPR(0x12,0x7A), BASE, ARG_OPR },
00708 { "extqh", OPRL(0x12,0x7A), BASE, ARG_OPRL },
00709
00710 { "mull", OPR(0x13,0x00), BASE, ARG_OPR },
00711 { "mull", OPRL(0x13,0x00), BASE, ARG_OPRL },
00712 { "mulq", OPR(0x13,0x20), BASE, ARG_OPR },
00713 { "mulq", OPRL(0x13,0x20), BASE, ARG_OPRL },
00714 { "umulh", OPR(0x13,0x30), BASE, ARG_OPR },
00715 { "umulh", OPRL(0x13,0x30), BASE, ARG_OPRL },
00716 { "mull/v", OPR(0x13,0x40), BASE, ARG_OPR },
00717 { "mull/v", OPRL(0x13,0x40), BASE, ARG_OPRL },
00718 { "mulq/v", OPR(0x13,0x60), BASE, ARG_OPR },
00719 { "mulq/v", OPRL(0x13,0x60), BASE, ARG_OPRL },
00720
00721 { "itofs", FP(0x14,0x004), CIX, { RA, ZB, FC } },
00722 { "sqrtf/c", FP(0x14,0x00A), CIX, ARG_FPZ1 },
00723 { "sqrts/c", FP(0x14,0x00B), CIX, ARG_FPZ1 },
00724 { "itoff", FP(0x14,0x014), CIX, { RA, ZB, FC } },
00725 { "itoft", FP(0x14,0x024), CIX, { RA, ZB, FC } },
00726 { "sqrtg/c", FP(0x14,0x02A), CIX, ARG_FPZ1 },
00727 { "sqrtt/c", FP(0x14,0x02B), CIX, ARG_FPZ1 },
00728 { "sqrts/m", FP(0x14,0x04B), CIX, ARG_FPZ1 },
00729 { "sqrtt/m", FP(0x14,0x06B), CIX, ARG_FPZ1 },
00730 { "sqrtf", FP(0x14,0x08A), CIX, ARG_FPZ1 },
00731 { "sqrts", FP(0x14,0x08B), CIX, ARG_FPZ1 },
00732 { "sqrtg", FP(0x14,0x0AA), CIX, ARG_FPZ1 },
00733 { "sqrtt", FP(0x14,0x0AB), CIX, ARG_FPZ1 },
00734 { "sqrts/d", FP(0x14,0x0CB), CIX, ARG_FPZ1 },
00735 { "sqrtt/d", FP(0x14,0x0EB), CIX, ARG_FPZ1 },
00736 { "sqrtf/uc", FP(0x14,0x10A), CIX, ARG_FPZ1 },
00737 { "sqrts/uc", FP(0x14,0x10B), CIX, ARG_FPZ1 },
00738 { "sqrtg/uc", FP(0x14,0x12A), CIX, ARG_FPZ1 },
00739 { "sqrtt/uc", FP(0x14,0x12B), CIX, ARG_FPZ1 },
00740 { "sqrts/um", FP(0x14,0x14B), CIX, ARG_FPZ1 },
00741 { "sqrtt/um", FP(0x14,0x16B), CIX, ARG_FPZ1 },
00742 { "sqrtf/u", FP(0x14,0x18A), CIX, ARG_FPZ1 },
00743 { "sqrts/u", FP(0x14,0x18B), CIX, ARG_FPZ1 },
00744 { "sqrtg/u", FP(0x14,0x1AA), CIX, ARG_FPZ1 },
00745 { "sqrtt/u", FP(0x14,0x1AB), CIX, ARG_FPZ1 },
00746 { "sqrts/ud", FP(0x14,0x1CB), CIX, ARG_FPZ1 },
00747 { "sqrtt/ud", FP(0x14,0x1EB), CIX, ARG_FPZ1 },
00748 { "sqrtf/sc", FP(0x14,0x40A), CIX, ARG_FPZ1 },
00749 { "sqrtg/sc", FP(0x14,0x42A), CIX, ARG_FPZ1 },
00750 { "sqrtf/s", FP(0x14,0x48A), CIX, ARG_FPZ1 },
00751 { "sqrtg/s", FP(0x14,0x4AA), CIX, ARG_FPZ1 },
00752 { "sqrtf/suc", FP(0x14,0x50A), CIX, ARG_FPZ1 },
00753 { "sqrts/suc", FP(0x14,0x50B), CIX, ARG_FPZ1 },
00754 { "sqrtg/suc", FP(0x14,0x52A), CIX, ARG_FPZ1 },
00755 { "sqrtt/suc", FP(0x14,0x52B), CIX, ARG_FPZ1 },
00756 { "sqrts/sum", FP(0x14,0x54B), CIX, ARG_FPZ1 },
00757 { "sqrtt/sum", FP(0x14,0x56B), CIX, ARG_FPZ1 },
00758 { "sqrtf/su", FP(0x14,0x58A), CIX, ARG_FPZ1 },
00759 { "sqrts/su", FP(0x14,0x58B), CIX, ARG_FPZ1 },
00760 { "sqrtg/su", FP(0x14,0x5AA), CIX, ARG_FPZ1 },
00761 { "sqrtt/su", FP(0x14,0x5AB), CIX, ARG_FPZ1 },
00762 { "sqrts/sud", FP(0x14,0x5CB), CIX, ARG_FPZ1 },
00763 { "sqrtt/sud", FP(0x14,0x5EB), CIX, ARG_FPZ1 },
00764 { "sqrts/suic", FP(0x14,0x70B), CIX, ARG_FPZ1 },
00765 { "sqrtt/suic", FP(0x14,0x72B), CIX, ARG_FPZ1 },
00766 { "sqrts/suim", FP(0x14,0x74B), CIX, ARG_FPZ1 },
00767 { "sqrtt/suim", FP(0x14,0x76B), CIX, ARG_FPZ1 },
00768 { "sqrts/sui", FP(0x14,0x78B), CIX, ARG_FPZ1 },
00769 { "sqrtt/sui", FP(0x14,0x7AB), CIX, ARG_FPZ1 },
00770 { "sqrts/suid", FP(0x14,0x7CB), CIX, ARG_FPZ1 },
00771 { "sqrtt/suid", FP(0x14,0x7EB), CIX, ARG_FPZ1 },
00772
00773 { "addf/c", FP(0x15,0x000), BASE, ARG_FP },
00774 { "subf/c", FP(0x15,0x001), BASE, ARG_FP },
00775 { "mulf/c", FP(0x15,0x002), BASE, ARG_FP },
00776 { "divf/c", FP(0x15,0x003), BASE, ARG_FP },
00777 { "cvtdg/c", FP(0x15,0x01E), BASE, ARG_FPZ1 },
00778 { "addg/c", FP(0x15,0x020), BASE, ARG_FP },
00779 { "subg/c", FP(0x15,0x021), BASE, ARG_FP },
00780 { "mulg/c", FP(0x15,0x022), BASE, ARG_FP },
00781 { "divg/c", FP(0x15,0x023), BASE, ARG_FP },
00782 { "cvtgf/c", FP(0x15,0x02C), BASE, ARG_FPZ1 },
00783 { "cvtgd/c", FP(0x15,0x02D), BASE, ARG_FPZ1 },
00784 { "cvtgq/c", FP(0x15,0x02F), BASE, ARG_FPZ1 },
00785 { "cvtqf/c", FP(0x15,0x03C), BASE, ARG_FPZ1 },
00786 { "cvtqg/c", FP(0x15,0x03E), BASE, ARG_FPZ1 },
00787 { "addf", FP(0x15,0x080), BASE, ARG_FP },
00788 { "negf", FP(0x15,0x081), BASE, ARG_FPZ1 },
00789 { "subf", FP(0x15,0x081), BASE, ARG_FP },
00790 { "mulf", FP(0x15,0x082), BASE, ARG_FP },
00791 { "divf", FP(0x15,0x083), BASE, ARG_FP },
00792 { "cvtdg", FP(0x15,0x09E), BASE, ARG_FPZ1 },
00793 { "addg", FP(0x15,0x0A0), BASE, ARG_FP },
00794 { "negg", FP(0x15,0x0A1), BASE, ARG_FPZ1 },
00795 { "subg", FP(0x15,0x0A1), BASE, ARG_FP },
00796 { "mulg", FP(0x15,0x0A2), BASE, ARG_FP },
00797 { "divg", FP(0x15,0x0A3), BASE, ARG_FP },
00798 { "cmpgeq", FP(0x15,0x0A5), BASE, ARG_FP },
00799 { "cmpglt", FP(0x15,0x0A6), BASE, ARG_FP },
00800 { "cmpgle", FP(0x15,0x0A7), BASE, ARG_FP },
00801 { "cvtgf", FP(0x15,0x0AC), BASE, ARG_FPZ1 },
00802 { "cvtgd", FP(0x15,0x0AD), BASE, ARG_FPZ1 },
00803 { "cvtgq", FP(0x15,0x0AF), BASE, ARG_FPZ1 },
00804 { "cvtqf", FP(0x15,0x0BC), BASE, ARG_FPZ1 },
00805 { "cvtqg", FP(0x15,0x0BE), BASE, ARG_FPZ1 },
00806 { "addf/uc", FP(0x15,0x100), BASE, ARG_FP },
00807 { "subf/uc", FP(0x15,0x101), BASE, ARG_FP },
00808 { "mulf/uc", FP(0x15,0x102), BASE, ARG_FP },
00809 { "divf/uc", FP(0x15,0x103), BASE, ARG_FP },
00810 { "cvtdg/uc", FP(0x15,0x11E), BASE, ARG_FPZ1 },
00811 { "addg/uc", FP(0x15,0x120), BASE, ARG_FP },
00812 { "subg/uc", FP(0x15,0x121), BASE, ARG_FP },
00813 { "mulg/uc", FP(0x15,0x122), BASE, ARG_FP },
00814 { "divg/uc", FP(0x15,0x123), BASE, ARG_FP },
00815 { "cvtgf/uc", FP(0x15,0x12C), BASE, ARG_FPZ1 },
00816 { "cvtgd/uc", FP(0x15,0x12D), BASE, ARG_FPZ1 },
00817 { "cvtgq/vc", FP(0x15,0x12F), BASE, ARG_FPZ1 },
00818 { "addf/u", FP(0x15,0x180), BASE, ARG_FP },
00819 { "subf/u", FP(0x15,0x181), BASE, ARG_FP },
00820 { "mulf/u", FP(0x15,0x182), BASE, ARG_FP },
00821 { "divf/u", FP(0x15,0x183), BASE, ARG_FP },
00822 { "cvtdg/u", FP(0x15,0x19E), BASE, ARG_FPZ1 },
00823 { "addg/u", FP(0x15,0x1A0), BASE, ARG_FP },
00824 { "subg/u", FP(0x15,0x1A1), BASE, ARG_FP },
00825 { "mulg/u", FP(0x15,0x1A2), BASE, ARG_FP },
00826 { "divg/u", FP(0x15,0x1A3), BASE, ARG_FP },
00827 { "cvtgf/u", FP(0x15,0x1AC), BASE, ARG_FPZ1 },
00828 { "cvtgd/u", FP(0x15,0x1AD), BASE, ARG_FPZ1 },
00829 { "cvtgq/v", FP(0x15,0x1AF), BASE, ARG_FPZ1 },
00830 { "addf/sc", FP(0x15,0x400), BASE, ARG_FP },
00831 { "subf/sc", FP(0x15,0x401), BASE, ARG_FP },
00832 { "mulf/sc", FP(0x15,0x402), BASE, ARG_FP },
00833 { "divf/sc", FP(0x15,0x403), BASE, ARG_FP },
00834 { "cvtdg/sc", FP(0x15,0x41E), BASE, ARG_FPZ1 },
00835 { "addg/sc", FP(0x15,0x420), BASE, ARG_FP },
00836 { "subg/sc", FP(0x15,0x421), BASE, ARG_FP },
00837 { "mulg/sc", FP(0x15,0x422), BASE, ARG_FP },
00838 { "divg/sc", FP(0x15,0x423), BASE, ARG_FP },
00839 { "cvtgf/sc", FP(0x15,0x42C), BASE, ARG_FPZ1 },
00840 { "cvtgd/sc", FP(0x15,0x42D), BASE, ARG_FPZ1 },
00841 { "cvtgq/sc", FP(0x15,0x42F), BASE, ARG_FPZ1 },
00842 { "addf/s", FP(0x15,0x480), BASE, ARG_FP },
00843 { "negf/s", FP(0x15,0x481), BASE, ARG_FPZ1 },
00844 { "subf/s", FP(0x15,0x481), BASE, ARG_FP },
00845 { "mulf/s", FP(0x15,0x482), BASE, ARG_FP },
00846 { "divf/s", FP(0x15,0x483), BASE, ARG_FP },
00847 { "cvtdg/s", FP(0x15,0x49E), BASE, ARG_FPZ1 },
00848 { "addg/s", FP(0x15,0x4A0), BASE, ARG_FP },
00849 { "negg/s", FP(0x15,0x4A1), BASE, ARG_FPZ1 },
00850 { "subg/s", FP(0x15,0x4A1), BASE, ARG_FP },
00851 { "mulg/s", FP(0x15,0x4A2), BASE, ARG_FP },
00852 { "divg/s", FP(0x15,0x4A3), BASE, ARG_FP },
00853 { "cmpgeq/s", FP(0x15,0x4A5), BASE, ARG_FP },
00854 { "cmpglt/s", FP(0x15,0x4A6), BASE, ARG_FP },
00855 { "cmpgle/s", FP(0x15,0x4A7), BASE, ARG_FP },
00856 { "cvtgf/s", FP(0x15,0x4AC), BASE, ARG_FPZ1 },
00857 { "cvtgd/s", FP(0x15,0x4AD), BASE, ARG_FPZ1 },
00858 { "cvtgq/s", FP(0x15,0x4AF), BASE, ARG_FPZ1 },
00859 { "addf/suc", FP(0x15,0x500), BASE, ARG_FP },
00860 { "subf/suc", FP(0x15,0x501), BASE, ARG_FP },
00861 { "mulf/suc", FP(0x15,0x502), BASE, ARG_FP },
00862 { "divf/suc", FP(0x15,0x503), BASE, ARG_FP },
00863 { "cvtdg/suc", FP(0x15,0x51E), BASE, ARG_FPZ1 },
00864 { "addg/suc", FP(0x15,0x520), BASE, ARG_FP },
00865 { "subg/suc", FP(0x15,0x521), BASE, ARG_FP },
00866 { "mulg/suc", FP(0x15,0x522), BASE, ARG_FP },
00867 { "divg/suc", FP(0x15,0x523), BASE, ARG_FP },
00868 { "cvtgf/suc", FP(0x15,0x52C), BASE, ARG_FPZ1 },
00869 { "cvtgd/suc", FP(0x15,0x52D), BASE, ARG_FPZ1 },
00870 { "cvtgq/svc", FP(0x15,0x52F), BASE, ARG_FPZ1 },
00871 { "addf/su", FP(0x15,0x580), BASE, ARG_FP },
00872 { "subf/su", FP(0x15,0x581), BASE, ARG_FP },
00873 { "mulf/su", FP(0x15,0x582), BASE, ARG_FP },
00874 { "divf/su", FP(0x15,0x583), BASE, ARG_FP },
00875 { "cvtdg/su", FP(0x15,0x59E), BASE, ARG_FPZ1 },
00876 { "addg/su", FP(0x15,0x5A0), BASE, ARG_FP },
00877 { "subg/su", FP(0x15,0x5A1), BASE, ARG_FP },
00878 { "mulg/su", FP(0x15,0x5A2), BASE, ARG_FP },
00879 { "divg/su", FP(0x15,0x5A3), BASE, ARG_FP },
00880 { "cvtgf/su", FP(0x15,0x5AC), BASE, ARG_FPZ1 },
00881 { "cvtgd/su", FP(0x15,0x5AD), BASE, ARG_FPZ1 },
00882 { "cvtgq/sv", FP(0x15,0x5AF), BASE, ARG_FPZ1 },
00883
00884 { "adds/c", FP(0x16,0x000), BASE, ARG_FP },
00885 { "subs/c", FP(0x16,0x001), BASE, ARG_FP },
00886 { "muls/c", FP(0x16,0x002), BASE, ARG_FP },
00887 { "divs/c", FP(0x16,0x003), BASE, ARG_FP },
00888 { "addt/c", FP(0x16,0x020), BASE, ARG_FP },
00889 { "subt/c", FP(0x16,0x021), BASE, ARG_FP },
00890 { "mult/c", FP(0x16,0x022), BASE, ARG_FP },
00891 { "divt/c", FP(0x16,0x023), BASE, ARG_FP },
00892 { "cvtts/c", FP(0x16,0x02C), BASE, ARG_FPZ1 },
00893 { "cvttq/c", FP(0x16,0x02F), BASE, ARG_FPZ1 },
00894 { "cvtqs/c", FP(0x16,0x03C), BASE, ARG_FPZ1 },
00895 { "cvtqt/c", FP(0x16,0x03E), BASE, ARG_FPZ1 },
00896 { "adds/m", FP(0x16,0x040), BASE, ARG_FP },
00897 { "subs/m", FP(0x16,0x041), BASE, ARG_FP },
00898 { "muls/m", FP(0x16,0x042), BASE, ARG_FP },
00899 { "divs/m", FP(0x16,0x043), BASE, ARG_FP },
00900 { "addt/m", FP(0x16,0x060), BASE, ARG_FP },
00901 { "subt/m", FP(0x16,0x061), BASE, ARG_FP },
00902 { "mult/m", FP(0x16,0x062), BASE, ARG_FP },
00903 { "divt/m", FP(0x16,0x063), BASE, ARG_FP },
00904 { "cvtts/m", FP(0x16,0x06C), BASE, ARG_FPZ1 },
00905 { "cvttq/m", FP(0x16,0x06F), BASE, ARG_FPZ1 },
00906 { "cvtqs/m", FP(0x16,0x07C), BASE, ARG_FPZ1 },
00907 { "cvtqt/m", FP(0x16,0x07E), BASE, ARG_FPZ1 },
00908 { "adds", FP(0x16,0x080), BASE, ARG_FP },
00909 { "negs", FP(0x16,0x081), BASE, ARG_FPZ1 },
00910 { "subs", FP(0x16,0x081), BASE, ARG_FP },
00911 { "muls", FP(0x16,0x082), BASE, ARG_FP },
00912 { "divs", FP(0x16,0x083), BASE, ARG_FP },
00913 { "addt", FP(0x16,0x0A0), BASE, ARG_FP },
00914 { "negt", FP(0x16,0x0A1), BASE, ARG_FPZ1 },
00915 { "subt", FP(0x16,0x0A1), BASE, ARG_FP },
00916 { "mult", FP(0x16,0x0A2), BASE, ARG_FP },
00917 { "divt", FP(0x16,0x0A3), BASE, ARG_FP },
00918 { "cmptun", FP(0x16,0x0A4), BASE, ARG_FP },
00919 { "cmpteq", FP(0x16,0x0A5), BASE, ARG_FP },
00920 { "cmptlt", FP(0x16,0x0A6), BASE, ARG_FP },
00921 { "cmptle", FP(0x16,0x0A7), BASE, ARG_FP },
00922 { "cvtts", FP(0x16,0x0AC), BASE, ARG_FPZ1 },
00923 { "cvttq", FP(0x16,0x0AF), BASE, ARG_FPZ1 },
00924 { "cvtqs", FP(0x16,0x0BC), BASE, ARG_FPZ1 },
00925 { "cvtqt", FP(0x16,0x0BE), BASE, ARG_FPZ1 },
00926 { "adds/d", FP(0x16,0x0C0), BASE, ARG_FP },
00927 { "subs/d", FP(0x16,0x0C1), BASE, ARG_FP },
00928 { "muls/d", FP(0x16,0x0C2), BASE, ARG_FP },
00929 { "divs/d", FP(0x16,0x0C3), BASE, ARG_FP },
00930 { "addt/d", FP(0x16,0x0E0), BASE, ARG_FP },
00931 { "subt/d", FP(0x16,0x0E1), BASE, ARG_FP },
00932 { "mult/d", FP(0x16,0x0E2), BASE, ARG_FP },
00933 { "divt/d", FP(0x16,0x0E3), BASE, ARG_FP },
00934 { "cvtts/d", FP(0x16,0x0EC), BASE, ARG_FPZ1 },
00935 { "cvttq/d", FP(0x16,0x0EF), BASE, ARG_FPZ1 },
00936 { "cvtqs/d", FP(0x16,0x0FC), BASE, ARG_FPZ1 },
00937 { "cvtqt/d", FP(0x16,0x0FE), BASE, ARG_FPZ1 },
00938 { "adds/uc", FP(0x16,0x100), BASE, ARG_FP },
00939 { "subs/uc", FP(0x16,0x101), BASE, ARG_FP },
00940 { "muls/uc", FP(0x16,0x102), BASE, ARG_FP },
00941 { "divs/uc", FP(0x16,0x103), BASE, ARG_FP },
00942 { "addt/uc", FP(0x16,0x120), BASE, ARG_FP },
00943 { "subt/uc", FP(0x16,0x121), BASE, ARG_FP },
00944 { "mult/uc", FP(0x16,0x122), BASE, ARG_FP },
00945 { "divt/uc", FP(0x16,0x123), BASE, ARG_FP },
00946 { "cvtts/uc", FP(0x16,0x12C), BASE, ARG_FPZ1 },
00947 { "cvttq/vc", FP(0x16,0x12F), BASE, ARG_FPZ1 },
00948 { "adds/um", FP(0x16,0x140), BASE, ARG_FP },
00949 { "subs/um", FP(0x16,0x141), BASE, ARG_FP },
00950 { "muls/um", FP(0x16,0x142), BASE, ARG_FP },
00951 { "divs/um", FP(0x16,0x143), BASE, ARG_FP },
00952 { "addt/um", FP(0x16,0x160), BASE, ARG_FP },
00953 { "subt/um", FP(0x16,0x161), BASE, ARG_FP },
00954 { "mult/um", FP(0x16,0x162), BASE, ARG_FP },
00955 { "divt/um", FP(0x16,0x163), BASE, ARG_FP },
00956 { "cvtts/um", FP(0x16,0x16C), BASE, ARG_FPZ1 },
00957 { "cvttq/vm", FP(0x16,0x16F), BASE, ARG_FPZ1 },
00958 { "adds/u", FP(0x16,0x180), BASE, ARG_FP },
00959 { "subs/u", FP(0x16,0x181), BASE, ARG_FP },
00960 { "muls/u", FP(0x16,0x182), BASE, ARG_FP },
00961 { "divs/u", FP(0x16,0x183), BASE, ARG_FP },
00962 { "addt/u", FP(0x16,0x1A0), BASE, ARG_FP },
00963 { "subt/u", FP(0x16,0x1A1), BASE, ARG_FP },
00964 { "mult/u", FP(0x16,0x1A2), BASE, ARG_FP },
00965 { "divt/u", FP(0x16,0x1A3), BASE, ARG_FP },
00966 { "cvtts/u", FP(0x16,0x1AC), BASE, ARG_FPZ1 },
00967 { "cvttq/v", FP(0x16,0x1AF), BASE, ARG_FPZ1 },
00968 { "adds/ud", FP(0x16,0x1C0), BASE, ARG_FP },
00969 { "subs/ud", FP(0x16,0x1C1), BASE, ARG_FP },
00970 { "muls/ud", FP(0x16,0x1C2), BASE, ARG_FP },
00971 { "divs/ud", FP(0x16,0x1C3), BASE, ARG_FP },
00972 { "addt/ud", FP(0x16,0x1E0), BASE, ARG_FP },
00973 { "subt/ud", FP(0x16,0x1E1), BASE, ARG_FP },
00974 { "mult/ud", FP(0x16,0x1E2), BASE, ARG_FP },
00975 { "divt/ud", FP(0x16,0x1E3), BASE, ARG_FP },
00976 { "cvtts/ud", FP(0x16,0x1EC), BASE, ARG_FPZ1 },
00977 { "cvttq/vd", FP(0x16,0x1EF), BASE, ARG_FPZ1 },
00978 { "cvtst", FP(0x16,0x2AC), BASE, ARG_FPZ1 },
00979 { "adds/suc", FP(0x16,0x500), BASE, ARG_FP },
00980 { "subs/suc", FP(0x16,0x501), BASE, ARG_FP },
00981 { "muls/suc", FP(0x16,0x502), BASE, ARG_FP },
00982 { "divs/suc", FP(0x16,0x503), BASE, ARG_FP },
00983 { "addt/suc", FP(0x16,0x520), BASE, ARG_FP },
00984 { "subt/suc", FP(0x16,0x521), BASE, ARG_FP },
00985 { "mult/suc", FP(0x16,0x522), BASE, ARG_FP },
00986 { "divt/suc", FP(0x16,0x523), BASE, ARG_FP },
00987 { "cvtts/suc", FP(0x16,0x52C), BASE, ARG_FPZ1 },
00988 { "cvttq/svc", FP(0x16,0x52F), BASE, ARG_FPZ1 },
00989 { "adds/sum", FP(0x16,0x540), BASE, ARG_FP },
00990 { "subs/sum", FP(0x16,0x541), BASE, ARG_FP },
00991 { "muls/sum", FP(0x16,0x542), BASE, ARG_FP },
00992 { "divs/sum", FP(0x16,0x543), BASE, ARG_FP },
00993 { "addt/sum", FP(0x16,0x560), BASE, ARG_FP },
00994 { "subt/sum", FP(0x16,0x561), BASE, ARG_FP },
00995 { "mult/sum", FP(0x16,0x562), BASE, ARG_FP },
00996 { "divt/sum", FP(0x16,0x563), BASE, ARG_FP },
00997 { "cvtts/sum", FP(0x16,0x56C), BASE, ARG_FPZ1 },
00998 { "cvttq/svm", FP(0x16,0x56F), BASE, ARG_FPZ1 },
00999 { "adds/su", FP(0x16,0x580), BASE, ARG_FP },
01000 { "negs/su", FP(0x16,0x581), BASE, ARG_FPZ1 },
01001 { "subs/su", FP(0x16,0x581), BASE, ARG_FP },
01002 { "muls/su", FP(0x16,0x582), BASE, ARG_FP },
01003 { "divs/su", FP(0x16,0x583), BASE, ARG_FP },
01004 { "addt/su", FP(0x16,0x5A0), BASE, ARG_FP },
01005 { "negt/su", FP(0x16,0x5A1), BASE, ARG_FPZ1 },
01006 { "subt/su", FP(0x16,0x5A1), BASE, ARG_FP },
01007 { "mult/su", FP(0x16,0x5A2), BASE, ARG_FP },
01008 { "divt/su", FP(0x16,0x5A3), BASE, ARG_FP },
01009 { "cmptun/su", FP(0x16,0x5A4), BASE, ARG_FP },
01010 { "cmpteq/su", FP(0x16,0x5A5), BASE, ARG_FP },
01011 { "cmptlt/su", FP(0x16,0x5A6), BASE, ARG_FP },
01012 { "cmptle/su", FP(0x16,0x5A7), BASE, ARG_FP },
01013 { "cvtts/su", FP(0x16,0x5AC), BASE, ARG_FPZ1 },
01014 { "cvttq/sv", FP(0x16,0x5AF), BASE, ARG_FPZ1 },
01015 { "adds/sud", FP(0x16,0x5C0), BASE, ARG_FP },
01016 { "subs/sud", FP(0x16,0x5C1), BASE, ARG_FP },
01017 { "muls/sud", FP(0x16,0x5C2), BASE, ARG_FP },
01018 { "divs/sud", FP(0x16,0x5C3), BASE, ARG_FP },
01019 { "addt/sud", FP(0x16,0x5E0), BASE, ARG_FP },
01020 { "subt/sud", FP(0x16,0x5E1), BASE, ARG_FP },
01021 { "mult/sud", FP(0x16,0x5E2), BASE, ARG_FP },
01022 { "divt/sud", FP(0x16,0x5E3), BASE, ARG_FP },
01023 { "cvtts/sud", FP(0x16,0x5EC), BASE, ARG_FPZ1 },
01024 { "cvttq/svd", FP(0x16,0x5EF), BASE, ARG_FPZ1 },
01025 { "cvtst/s", FP(0x16,0x6AC), BASE, ARG_FPZ1 },
01026 { "adds/suic", FP(0x16,0x700), BASE, ARG_FP },
01027 { "subs/suic", FP(0x16,0x701), BASE, ARG_FP },
01028 { "muls/suic", FP(0x16,0x702), BASE, ARG_FP },
01029 { "divs/suic", FP(0x16,0x703), BASE, ARG_FP },
01030 { "addt/suic", FP(0x16,0x720), BASE, ARG_FP },
01031 { "subt/suic", FP(0x16,0x721), BASE, ARG_FP },
01032 { "mult/suic", FP(0x16,0x722), BASE, ARG_FP },
01033 { "divt/suic", FP(0x16,0x723), BASE, ARG_FP },
01034 { "cvtts/suic", FP(0x16,0x72C), BASE, ARG_FPZ1 },
01035 { "cvttq/svic", FP(0x16,0x72F), BASE, ARG_FPZ1 },
01036 { "cvtqs/suic", FP(0x16,0x73C), BASE, ARG_FPZ1 },
01037 { "cvtqt/suic", FP(0x16,0x73E), BASE, ARG_FPZ1 },
01038 { "adds/suim", FP(0x16,0x740), BASE, ARG_FP },
01039 { "subs/suim", FP(0x16,0x741), BASE, ARG_FP },
01040 { "muls/suim", FP(0x16,0x742), BASE, ARG_FP },
01041 { "divs/suim", FP(0x16,0x743), BASE, ARG_FP },
01042 { "addt/suim", FP(0x16,0x760), BASE, ARG_FP },
01043 { "subt/suim", FP(0x16,0x761), BASE, ARG_FP },
01044 { "mult/suim", FP(0x16,0x762), BASE, ARG_FP },
01045 { "divt/suim", FP(0x16,0x763), BASE, ARG_FP },
01046 { "cvtts/suim", FP(0x16,0x76C), BASE, ARG_FPZ1 },
01047 { "cvttq/svim", FP(0x16,0x76F), BASE, ARG_FPZ1 },
01048 { "cvtqs/suim", FP(0x16,0x77C), BASE, ARG_FPZ1 },
01049 { "cvtqt/suim", FP(0x16,0x77E), BASE, ARG_FPZ1 },
01050 { "adds/sui", FP(0x16,0x780), BASE, ARG_FP },
01051 { "negs/sui", FP(0x16,0x781), BASE, ARG_FPZ1 },
01052 { "subs/sui", FP(0x16,0x781), BASE, ARG_FP },
01053 { "muls/sui", FP(0x16,0x782), BASE, ARG_FP },
01054 { "divs/sui", FP(0x16,0x783), BASE, ARG_FP },
01055 { "addt/sui", FP(0x16,0x7A0), BASE, ARG_FP },
01056 { "negt/sui", FP(0x16,0x7A1), BASE, ARG_FPZ1 },
01057 { "subt/sui", FP(0x16,0x7A1), BASE, ARG_FP },
01058 { "mult/sui", FP(0x16,0x7A2), BASE, ARG_FP },
01059 { "divt/sui", FP(0x16,0x7A3), BASE, ARG_FP },
01060 { "cvtts/sui", FP(0x16,0x7AC), BASE, ARG_FPZ1 },
01061 { "cvttq/svi", FP(0x16,0x7AF), BASE, ARG_FPZ1 },
01062 { "cvtqs/sui", FP(0x16,0x7BC), BASE, ARG_FPZ1 },
01063 { "cvtqt/sui", FP(0x16,0x7BE), BASE, ARG_FPZ1 },
01064 { "adds/suid", FP(0x16,0x7C0), BASE, ARG_FP },
01065 { "subs/suid", FP(0x16,0x7C1), BASE, ARG_FP },
01066 { "muls/suid", FP(0x16,0x7C2), BASE, ARG_FP },
01067 { "divs/suid", FP(0x16,0x7C3), BASE, ARG_FP },
01068 { "addt/suid", FP(0x16,0x7E0), BASE, ARG_FP },
01069 { "subt/suid", FP(0x16,0x7E1), BASE, ARG_FP },
01070 { "mult/suid", FP(0x16,0x7E2), BASE, ARG_FP },
01071 { "divt/suid", FP(0x16,0x7E3), BASE, ARG_FP },
01072 { "cvtts/suid", FP(0x16,0x7EC), BASE, ARG_FPZ1 },
01073 { "cvttq/svid", FP(0x16,0x7EF), BASE, ARG_FPZ1 },
01074 { "cvtqs/suid", FP(0x16,0x7FC), BASE, ARG_FPZ1 },
01075 { "cvtqt/suid", FP(0x16,0x7FE), BASE, ARG_FPZ1 },
01076
01077 { "cvtlq", FP(0x17,0x010), BASE, ARG_FPZ1 },
01078 { "fnop", FP(0x17,0x020), BASE, { ZA, ZB, ZC } },
01079 { "fclr", FP(0x17,0x020), BASE, { ZA, ZB, FC } },
01080 { "fabs", FP(0x17,0x020), BASE, ARG_FPZ1 },
01081 { "fmov", FP(0x17,0x020), BASE, { FA, RBA, FC } },
01082 { "cpys", FP(0x17,0x020), BASE, ARG_FP },
01083 { "fneg", FP(0x17,0x021), BASE, { FA, RBA, FC } },
01084 { "cpysn", FP(0x17,0x021), BASE, ARG_FP },
01085 { "cpyse", FP(0x17,0x022), BASE, ARG_FP },
01086 { "mt_fpcr", FP(0x17,0x024), BASE, { FA, RBA, RCA } },
01087 { "mf_fpcr", FP(0x17,0x025), BASE, { FA, RBA, RCA } },
01088 { "fcmoveq", FP(0x17,0x02A), BASE, ARG_FP },
01089 { "fcmovne", FP(0x17,0x02B), BASE, ARG_FP },
01090 { "fcmovlt", FP(0x17,0x02C), BASE, ARG_FP },
01091 { "fcmovge", FP(0x17,0x02D), BASE, ARG_FP },
01092 { "fcmovle", FP(0x17,0x02E), BASE, ARG_FP },
01093 { "fcmovgt", FP(0x17,0x02F), BASE, ARG_FP },
01094 { "cvtql", FP(0x17,0x030), BASE, ARG_FPZ1 },
01095 { "cvtql/v", FP(0x17,0x130), BASE, ARG_FPZ1 },
01096 { "cvtql/sv", FP(0x17,0x530), BASE, ARG_FPZ1 },
01097
01098 { "trapb", MFC(0x18,0x0000), BASE, ARG_NONE },
01099 { "draint", MFC(0x18,0x0000), BASE, ARG_NONE },
01100 { "excb", MFC(0x18,0x0400), BASE, ARG_NONE },
01101 { "mb", MFC(0x18,0x4000), BASE, ARG_NONE },
01102 { "wmb", MFC(0x18,0x4400), BASE, ARG_NONE },
01103 { "fetch", MFC(0x18,0x8000), BASE, { ZA, PRB } },
01104 { "fetch_m", MFC(0x18,0xA000), BASE, { ZA, PRB } },
01105 { "rpcc", MFC(0x18,0xC000), BASE, { RA, ZB } },
01106 { "rpcc", MFC(0x18,0xC000), BASE, { RA, RB } },
01107 { "rc", MFC(0x18,0xE000), BASE, { RA } },
01108 { "ecb", MFC(0x18,0xE800), BASE, { ZA, PRB } },
01109 { "rs", MFC(0x18,0xF000), BASE, { RA } },
01110 { "wh64", MFC(0x18,0xF800), BASE, { ZA, PRB } },
01111 { "wh64en", MFC(0x18,0xFC00), BASE, { ZA, PRB } },
01112
01113 { "hw_mfpr", OPR(0x19,0x00), EV4, { RA, RBA, EV4EXTHWINDEX } },
01114 { "hw_mfpr", OP(0x19), OP_MASK, EV5, { RA, RBA, EV5HWINDEX } },
01115 { "hw_mfpr", OP(0x19), OP_MASK, EV6, { RA, ZB, EV6HWINDEX } },
01116 { "hw_mfpr/i", OPR(0x19,0x01), EV4, ARG_EV4HWMPR },
01117 { "hw_mfpr/a", OPR(0x19,0x02), EV4, ARG_EV4HWMPR },
01118 { "hw_mfpr/ai", OPR(0x19,0x03), EV4, ARG_EV4HWMPR },
01119 { "hw_mfpr/p", OPR(0x19,0x04), EV4, ARG_EV4HWMPR },
01120 { "hw_mfpr/pi", OPR(0x19,0x05), EV4, ARG_EV4HWMPR },
01121 { "hw_mfpr/pa", OPR(0x19,0x06), EV4, ARG_EV4HWMPR },
01122 { "hw_mfpr/pai", OPR(0x19,0x07), EV4, ARG_EV4HWMPR },
01123 { "pal19", PCD(0x19), BASE, ARG_PCD },
01124
01125 { "jmp", MBR_(0x1A,0), MBR_MASK | 0x3FFF,
01126 BASE, { ZA, CPRB } },
01127 { "jmp", MBR(0x1A,0), BASE, { RA, CPRB, JMPHINT } },
01128 { "jsr", MBR(0x1A,1), BASE, { RA, CPRB, JMPHINT } },
01129 { "ret", MBR_(0x1A,2) | (31 << 21) | (26 << 16) | 1,
01130 0xFFFFFFFF, BASE, { 0 } },
01131 { "ret", MBR(0x1A,2), BASE, { RA, CPRB, RETHINT } },
01132 { "jcr", MBR(0x1A,3), BASE, { RA, CPRB, RETHINT } },
01133 { "jsr_coroutine", MBR(0x1A,3), BASE, { RA, CPRB, RETHINT } },
01134
01135 { "hw_ldl", EV4HWMEM(0x1B,0x0), EV4, ARG_EV4HWMEM },
01136 { "hw_ldl", EV5HWMEM(0x1B,0x00), EV5, ARG_EV5HWMEM },
01137 { "hw_ldl", EV6HWMEM(0x1B,0x8), EV6, ARG_EV6HWMEM },
01138 { "hw_ldl/a", EV4HWMEM(0x1B,0x4), EV4, ARG_EV4HWMEM },
01139 { "hw_ldl/a", EV5HWMEM(0x1B,0x10), EV5, ARG_EV5HWMEM },
01140 { "hw_ldl/a", EV6HWMEM(0x1B,0xC), EV6, ARG_EV6HWMEM },
01141 { "hw_ldl/al", EV5HWMEM(0x1B,0x11), EV5, ARG_EV5HWMEM },
01142 { "hw_ldl/ar", EV4HWMEM(0x1B,0x6), EV4, ARG_EV4HWMEM },
01143 { "hw_ldl/av", EV5HWMEM(0x1B,0x12), EV5, ARG_EV5HWMEM },
01144 { "hw_ldl/avl", EV5HWMEM(0x1B,0x13), EV5, ARG_EV5HWMEM },
01145 { "hw_ldl/aw", EV5HWMEM(0x1B,0x18), EV5, ARG_EV5HWMEM },
01146 { "hw_ldl/awl", EV5HWMEM(0x1B,0x19), EV5, ARG_EV5HWMEM },
01147 { "hw_ldl/awv", EV5HWMEM(0x1B,0x1a), EV5, ARG_EV5HWMEM },
01148 { "hw_ldl/awvl", EV5HWMEM(0x1B,0x1b), EV5, ARG_EV5HWMEM },
01149 { "hw_ldl/l", EV5HWMEM(0x1B,0x01), EV5, ARG_EV5HWMEM },
01150 { "hw_ldl/p", EV4HWMEM(0x1B,0x8), EV4, ARG_EV4HWMEM },
01151 { "hw_ldl/p", EV5HWMEM(0x1B,0x20), EV5, ARG_EV5HWMEM },
01152 { "hw_ldl/p", EV6HWMEM(0x1B,0x0), EV6, ARG_EV6HWMEM },
01153 { "hw_ldl/pa", EV4HWMEM(0x1B,0xC), EV4, ARG_EV4HWMEM },
01154 { "hw_ldl/pa", EV5HWMEM(0x1B,0x30), EV5, ARG_EV5HWMEM },
01155 { "hw_ldl/pal", EV5HWMEM(0x1B,0x31), EV5, ARG_EV5HWMEM },
01156 { "hw_ldl/par", EV4HWMEM(0x1B,0xE), EV4, ARG_EV4HWMEM },
01157 { "hw_ldl/pav", EV5HWMEM(0x1B,0x32), EV5, ARG_EV5HWMEM },
01158 { "hw_ldl/pavl", EV5HWMEM(0x1B,0x33), EV5, ARG_EV5HWMEM },
01159 { "hw_ldl/paw", EV5HWMEM(0x1B,0x38), EV5, ARG_EV5HWMEM },
01160 { "hw_ldl/pawl", EV5HWMEM(0x1B,0x39), EV5, ARG_EV5HWMEM },
01161 { "hw_ldl/pawv", EV5HWMEM(0x1B,0x3a), EV5, ARG_EV5HWMEM },
01162 { "hw_ldl/pawvl", EV5HWMEM(0x1B,0x3b), EV5, ARG_EV5HWMEM },
01163 { "hw_ldl/pl", EV5HWMEM(0x1B,0x21), EV5, ARG_EV5HWMEM },
01164 { "hw_ldl/pr", EV4HWMEM(0x1B,0xA), EV4, ARG_EV4HWMEM },
01165 { "hw_ldl/pv", EV5HWMEM(0x1B,0x22), EV5, ARG_EV5HWMEM },
01166 { "hw_ldl/pvl", EV5HWMEM(0x1B,0x23), EV5, ARG_EV5HWMEM },
01167 { "hw_ldl/pw", EV5HWMEM(0x1B,0x28), EV5, ARG_EV5HWMEM },
01168 { "hw_ldl/pwl", EV5HWMEM(0x1B,0x29), EV5, ARG_EV5HWMEM },
01169 { "hw_ldl/pwv", EV5HWMEM(0x1B,0x2a), EV5, ARG_EV5HWMEM },
01170 { "hw_ldl/pwvl", EV5HWMEM(0x1B,0x2b), EV5, ARG_EV5HWMEM },
01171 { "hw_ldl/r", EV4HWMEM(0x1B,0x2), EV4, ARG_EV4HWMEM },
01172 { "hw_ldl/v", EV5HWMEM(0x1B,0x02), EV5, ARG_EV5HWMEM },
01173 { "hw_ldl/v", EV6HWMEM(0x1B,0x4), EV6, ARG_EV6HWMEM },
01174 { "hw_ldl/vl", EV5HWMEM(0x1B,0x03), EV5, ARG_EV5HWMEM },
01175 { "hw_ldl/w", EV5HWMEM(0x1B,0x08), EV5, ARG_EV5HWMEM },
01176 { "hw_ldl/w", EV6HWMEM(0x1B,0xA), EV6, ARG_EV6HWMEM },
01177 { "hw_ldl/wa", EV6HWMEM(0x1B,0xE), EV6, ARG_EV6HWMEM },
01178 { "hw_ldl/wl", EV5HWMEM(0x1B,0x09), EV5, ARG_EV5HWMEM },
01179 { "hw_ldl/wv", EV5HWMEM(0x1B,0x0a), EV5, ARG_EV5HWMEM },
01180 { "hw_ldl/wvl", EV5HWMEM(0x1B,0x0b), EV5, ARG_EV5HWMEM },
01181 { "hw_ldl_l", EV5HWMEM(0x1B,0x01), EV5, ARG_EV5HWMEM },
01182 { "hw_ldl_l/a", EV5HWMEM(0x1B,0x11), EV5, ARG_EV5HWMEM },
01183 { "hw_ldl_l/av", EV5HWMEM(0x1B,0x13), EV5, ARG_EV5HWMEM },
01184 { "hw_ldl_l/aw", EV5HWMEM(0x1B,0x19), EV5, ARG_EV5HWMEM },
01185 { "hw_ldl_l/awv", EV5HWMEM(0x1B,0x1b), EV5, ARG_EV5HWMEM },
01186 { "hw_ldl_l/p", EV5HWMEM(0x1B,0x21), EV5, ARG_EV5HWMEM },
01187 { "hw_ldl_l/p", EV6HWMEM(0x1B,0x2), EV6, ARG_EV6HWMEM },
01188 { "hw_ldl_l/pa", EV5HWMEM(0x1B,0x31), EV5, ARG_EV5HWMEM },
01189 { "hw_ldl_l/pav", EV5HWMEM(0x1B,0x33), EV5, ARG_EV5HWMEM },
01190 { "hw_ldl_l/paw", EV5HWMEM(0x1B,0x39), EV5, ARG_EV5HWMEM },
01191 { "hw_ldl_l/pawv", EV5HWMEM(0x1B,0x3b), EV5, ARG_EV5HWMEM },
01192 { "hw_ldl_l/pv", EV5HWMEM(0x1B,0x23), EV5, ARG_EV5HWMEM },
01193 { "hw_ldl_l/pw", EV5HWMEM(0x1B,0x29), EV5, ARG_EV5HWMEM },
01194 { "hw_ldl_l/pwv", EV5HWMEM(0x1B,0x2b), EV5, ARG_EV5HWMEM },
01195 { "hw_ldl_l/v", EV5HWMEM(0x1B,0x03), EV5, ARG_EV5HWMEM },
01196 { "hw_ldl_l/w", EV5HWMEM(0x1B,0x09), EV5, ARG_EV5HWMEM },
01197 { "hw_ldl_l/wv", EV5HWMEM(0x1B,0x0b), EV5, ARG_EV5HWMEM },
01198 { "hw_ldq", EV4HWMEM(0x1B,0x1), EV4, ARG_EV4HWMEM },
01199 { "hw_ldq", EV5HWMEM(0x1B,0x04), EV5, ARG_EV5HWMEM },
01200 { "hw_ldq", EV6HWMEM(0x1B,0x9), EV6, ARG_EV6HWMEM },
01201 { "hw_ldq/a", EV4HWMEM(0x1B,0x5), EV4, ARG_EV4HWMEM },
01202 { "hw_ldq/a", EV5HWMEM(0x1B,0x14), EV5, ARG_EV5HWMEM },
01203 { "hw_ldq/a", EV6HWMEM(0x1B,0xD), EV6, ARG_EV6HWMEM },
01204 { "hw_ldq/al", EV5HWMEM(0x1B,0x15), EV5, ARG_EV5HWMEM },
01205 { "hw_ldq/ar", EV4HWMEM(0x1B,0x7), EV4, ARG_EV4HWMEM },
01206 { "hw_ldq/av", EV5HWMEM(0x1B,0x16), EV5, ARG_EV5HWMEM },
01207 { "hw_ldq/avl", EV5HWMEM(0x1B,0x17), EV5, ARG_EV5HWMEM },
01208 { "hw_ldq/aw", EV5HWMEM(0x1B,0x1c), EV5, ARG_EV5HWMEM },
01209 { "hw_ldq/awl", EV5HWMEM(0x1B,0x1d), EV5, ARG_EV5HWMEM },
01210 { "hw_ldq/awv", EV5HWMEM(0x1B,0x1e), EV5, ARG_EV5HWMEM },
01211 { "hw_ldq/awvl", EV5HWMEM(0x1B,0x1f), EV5, ARG_EV5HWMEM },
01212 { "hw_ldq/l", EV5HWMEM(0x1B,0x05), EV5, ARG_EV5HWMEM },
01213 { "hw_ldq/p", EV4HWMEM(0x1B,0x9), EV4, ARG_EV4HWMEM },
01214 { "hw_ldq/p", EV5HWMEM(0x1B,0x24), EV5, ARG_EV5HWMEM },
01215 { "hw_ldq/p", EV6HWMEM(0x1B,0x1), EV6, ARG_EV6HWMEM },
01216 { "hw_ldq/pa", EV4HWMEM(0x1B,0xD), EV4, ARG_EV4HWMEM },
01217 { "hw_ldq/pa", EV5HWMEM(0x1B,0x34), EV5, ARG_EV5HWMEM },
01218 { "hw_ldq/pal", EV5HWMEM(0x1B,0x35), EV5, ARG_EV5HWMEM },
01219 { "hw_ldq/par", EV4HWMEM(0x1B,0xF), EV4, ARG_EV4HWMEM },
01220 { "hw_ldq/pav", EV5HWMEM(0x1B,0x36), EV5, ARG_EV5HWMEM },
01221 { "hw_ldq/pavl", EV5HWMEM(0x1B,0x37), EV5, ARG_EV5HWMEM },
01222 { "hw_ldq/paw", EV5HWMEM(0x1B,0x3c), EV5, ARG_EV5HWMEM },
01223 { "hw_ldq/pawl", EV5HWMEM(0x1B,0x3d), EV5, ARG_EV5HWMEM },
01224 { "hw_ldq/pawv", EV5HWMEM(0x1B,0x3e), EV5, ARG_EV5HWMEM },
01225 { "hw_ldq/pawvl", EV5HWMEM(0x1B,0x3f), EV5, ARG_EV5HWMEM },
01226 { "hw_ldq/pl", EV5HWMEM(0x1B,0x25), EV5, ARG_EV5HWMEM },
01227 { "hw_ldq/pr", EV4HWMEM(0x1B,0xB), EV4, ARG_EV4HWMEM },
01228 { "hw_ldq/pv", EV5HWMEM(0x1B,0x26), EV5, ARG_EV5HWMEM },
01229 { "hw_ldq/pvl", EV5HWMEM(0x1B,0x27), EV5, ARG_EV5HWMEM },
01230 { "hw_ldq/pw", EV5HWMEM(0x1B,0x2c), EV5, ARG_EV5HWMEM },
01231 { "hw_ldq/pwl", EV5HWMEM(0x1B,0x2d), EV5, ARG_EV5HWMEM },
01232 { "hw_ldq/pwv", EV5HWMEM(0x1B,0x2e), EV5, ARG_EV5HWMEM },
01233 { "hw_ldq/pwvl", EV5HWMEM(0x1B,0x2f), EV5, ARG_EV5HWMEM },
01234 { "hw_ldq/r", EV4HWMEM(0x1B,0x3), EV4, ARG_EV4HWMEM },
01235 { "hw_ldq/v", EV5HWMEM(0x1B,0x06), EV5, ARG_EV5HWMEM },
01236 { "hw_ldq/v", EV6HWMEM(0x1B,0x5), EV6, ARG_EV6HWMEM },
01237 { "hw_ldq/vl", EV5HWMEM(0x1B,0x07), EV5, ARG_EV5HWMEM },
01238 { "hw_ldq/w", EV5HWMEM(0x1B,0x0c), EV5, ARG_EV5HWMEM },
01239 { "hw_ldq/w", EV6HWMEM(0x1B,0xB), EV6, ARG_EV6HWMEM },
01240 { "hw_ldq/wa", EV6HWMEM(0x1B,0xF), EV6, ARG_EV6HWMEM },
01241 { "hw_ldq/wl", EV5HWMEM(0x1B,0x0d), EV5, ARG_EV5HWMEM },
01242 { "hw_ldq/wv", EV5HWMEM(0x1B,0x0e), EV5, ARG_EV5HWMEM },
01243 { "hw_ldq/wvl", EV5HWMEM(0x1B,0x0f), EV5, ARG_EV5HWMEM },
01244 { "hw_ldq_l", EV5HWMEM(0x1B,0x05), EV5, ARG_EV5HWMEM },
01245 { "hw_ldq_l/a", EV5HWMEM(0x1B,0x15), EV5, ARG_EV5HWMEM },
01246 { "hw_ldq_l/av", EV5HWMEM(0x1B,0x17), EV5, ARG_EV5HWMEM },
01247 { "hw_ldq_l/aw", EV5HWMEM(0x1B,0x1d), EV5, ARG_EV5HWMEM },
01248 { "hw_ldq_l/awv", EV5HWMEM(0x1B,0x1f), EV5, ARG_EV5HWMEM },
01249 { "hw_ldq_l/p", EV5HWMEM(0x1B,0x25), EV5, ARG_EV5HWMEM },
01250 { "hw_ldq_l/p", EV6HWMEM(0x1B,0x3), EV6, ARG_EV6HWMEM },
01251 { "hw_ldq_l/pa", EV5HWMEM(0x1B,0x35), EV5, ARG_EV5HWMEM },
01252 { "hw_ldq_l/pav", EV5HWMEM(0x1B,0x37), EV5, ARG_EV5HWMEM },
01253 { "hw_ldq_l/paw", EV5HWMEM(0x1B,0x3d), EV5, ARG_EV5HWMEM },
01254 { "hw_ldq_l/pawv", EV5HWMEM(0x1B,0x3f), EV5, ARG_EV5HWMEM },
01255 { "hw_ldq_l/pv", EV5HWMEM(0x1B,0x27), EV5, ARG_EV5HWMEM },
01256 { "hw_ldq_l/pw", EV5HWMEM(0x1B,0x2d), EV5, ARG_EV5HWMEM },
01257 { "hw_ldq_l/pwv", EV5HWMEM(0x1B,0x2f), EV5, ARG_EV5HWMEM },
01258 { "hw_ldq_l/v", EV5HWMEM(0x1B,0x07), EV5, ARG_EV5HWMEM },
01259 { "hw_ldq_l/w", EV5HWMEM(0x1B,0x0d), EV5, ARG_EV5HWMEM },
01260 { "hw_ldq_l/wv", EV5HWMEM(0x1B,0x0f), EV5, ARG_EV5HWMEM },
01261 { "hw_ld", EV4HWMEM(0x1B,0x0), EV4, ARG_EV4HWMEM },
01262 { "hw_ld", EV5HWMEM(0x1B,0x00), EV5, ARG_EV5HWMEM },
01263 { "hw_ld/a", EV4HWMEM(0x1B,0x4), EV4, ARG_EV4HWMEM },
01264 { "hw_ld/a", EV5HWMEM(0x1B,0x10), EV5, ARG_EV5HWMEM },
01265 { "hw_ld/al", EV5HWMEM(0x1B,0x11), EV5, ARG_EV5HWMEM },
01266 { "hw_ld/aq", EV4HWMEM(0x1B,0x5), EV4, ARG_EV4HWMEM },
01267 { "hw_ld/aq", EV5HWMEM(0x1B,0x14), EV5, ARG_EV5HWMEM },
01268 { "hw_ld/aql", EV5HWMEM(0x1B,0x15), EV5, ARG_EV5HWMEM },
01269 { "hw_ld/aqv", EV5HWMEM(0x1B,0x16), EV5, ARG_EV5HWMEM },
01270 { "hw_ld/aqvl", EV5HWMEM(0x1B,0x17), EV5, ARG_EV5HWMEM },
01271 { "hw_ld/ar", EV4HWMEM(0x1B,0x6), EV4, ARG_EV4HWMEM },
01272 { "hw_ld/arq", EV4HWMEM(0x1B,0x7), EV4, ARG_EV4HWMEM },
01273 { "hw_ld/av", EV5HWMEM(0x1B,0x12), EV5, ARG_EV5HWMEM },
01274 { "hw_ld/avl", EV5HWMEM(0x1B,0x13), EV5, ARG_EV5HWMEM },
01275 { "hw_ld/aw", EV5HWMEM(0x1B,0x18), EV5, ARG_EV5HWMEM },
01276 { "hw_ld/awl", EV5HWMEM(0x1B,0x19), EV5, ARG_EV5HWMEM },
01277 { "hw_ld/awq", EV5HWMEM(0x1B,0x1c), EV5, ARG_EV5HWMEM },
01278 { "hw_ld/awql", EV5HWMEM(0x1B,0x1d), EV5, ARG_EV5HWMEM },
01279 { "hw_ld/awqv", EV5HWMEM(0x1B,0x1e), EV5, ARG_EV5HWMEM },
01280 { "hw_ld/awqvl", EV5HWMEM(0x1B,0x1f), EV5, ARG_EV5HWMEM },
01281 { "hw_ld/awv", EV5HWMEM(0x1B,0x1a), EV5, ARG_EV5HWMEM },
01282 { "hw_ld/awvl", EV5HWMEM(0x1B,0x1b), EV5, ARG_EV5HWMEM },
01283 { "hw_ld/l", EV5HWMEM(0x1B,0x01), EV5, ARG_EV5HWMEM },
01284 { "hw_ld/p", EV4HWMEM(0x1B,0x8), EV4, ARG_EV4HWMEM },
01285 { "hw_ld/p", EV5HWMEM(0x1B,0x20), EV5, ARG_EV5HWMEM },
01286 { "hw_ld/pa", EV4HWMEM(0x1B,0xC), EV4, ARG_EV4HWMEM },
01287 { "hw_ld/pa", EV5HWMEM(0x1B,0x30), EV5, ARG_EV5HWMEM },
01288 { "hw_ld/pal", EV5HWMEM(0x1B,0x31), EV5, ARG_EV5HWMEM },
01289 { "hw_ld/paq", EV4HWMEM(0x1B,0xD), EV4, ARG_EV4HWMEM },
01290 { "hw_ld/paq", EV5HWMEM(0x1B,0x34), EV5, ARG_EV5HWMEM },
01291 { "hw_ld/paql", EV5HWMEM(0x1B,0x35), EV5, ARG_EV5HWMEM },
01292 { "hw_ld/paqv", EV5HWMEM(0x1B,0x36), EV5, ARG_EV5HWMEM },
01293 { "hw_ld/paqvl", EV5HWMEM(0x1B,0x37), EV5, ARG_EV5HWMEM },
01294 { "hw_ld/par", EV4HWMEM(0x1B,0xE), EV4, ARG_EV4HWMEM },
01295 { "hw_ld/parq", EV4HWMEM(0x1B,0xF), EV4, ARG_EV4HWMEM },
01296 { "hw_ld/pav", EV5HWMEM(0x1B,0x32), EV5, ARG_EV5HWMEM },
01297 { "hw_ld/pavl", EV5HWMEM(0x1B,0x33), EV5, ARG_EV5HWMEM },
01298 { "hw_ld/paw", EV5HWMEM(0x1B,0x38), EV5, ARG_EV5HWMEM },
01299 { "hw_ld/pawl", EV5HWMEM(0x1B,0x39), EV5, ARG_EV5HWMEM },
01300 { "hw_ld/pawq", EV5HWMEM(0x1B,0x3c), EV5, ARG_EV5HWMEM },
01301 { "hw_ld/pawql", EV5HWMEM(0x1B,0x3d), EV5, ARG_EV5HWMEM },
01302 { "hw_ld/pawqv", EV5HWMEM(0x1B,0x3e), EV5, ARG_EV5HWMEM },
01303 { "hw_ld/pawqvl", EV5HWMEM(0x1B,0x3f), EV5, ARG_EV5HWMEM },
01304 { "hw_ld/pawv", EV5HWMEM(0x1B,0x3a), EV5, ARG_EV5HWMEM },
01305 { "hw_ld/pawvl", EV5HWMEM(0x1B,0x3b), EV5, ARG_EV5HWMEM },
01306 { "hw_ld/pl", EV5HWMEM(0x1B,0x21), EV5, ARG_EV5HWMEM },
01307 { "hw_ld/pq", EV4HWMEM(0x1B,0x9), EV4, ARG_EV4HWMEM },
01308 { "hw_ld/pq", EV5HWMEM(0x1B,0x24), EV5, ARG_EV5HWMEM },
01309 { "hw_ld/pql", EV5HWMEM(0x1B,0x25), EV5, ARG_EV5HWMEM },
01310 { "hw_ld/pqv", EV5HWMEM(0x1B,0x26), EV5, ARG_EV5HWMEM },
01311 { "hw_ld/pqvl", EV5HWMEM(0x1B,0x27), EV5, ARG_EV5HWMEM },
01312 { "hw_ld/pr", EV4HWMEM(0x1B,0xA), EV4, ARG_EV4HWMEM },
01313 { "hw_ld/prq", EV4HWMEM(0x1B,0xB), EV4, ARG_EV4HWMEM },
01314 { "hw_ld/pv", EV5HWMEM(0x1B,0x22), EV5, ARG_EV5HWMEM },
01315 { "hw_ld/pvl", EV5HWMEM(0x1B,0x23), EV5, ARG_EV5HWMEM },
01316 { "hw_ld/pw", EV5HWMEM(0x1B,0x28), EV5, ARG_EV5HWMEM },
01317 { "hw_ld/pwl", EV5HWMEM(0x1B,0x29), EV5, ARG_EV5HWMEM },
01318 { "hw_ld/pwq", EV5HWMEM(0x1B,0x2c), EV5, ARG_EV5HWMEM },
01319 { "hw_ld/pwql", EV5HWMEM(0x1B,0x2d), EV5, ARG_EV5HWMEM },
01320 { "hw_ld/pwqv", EV5HWMEM(0x1B,0x2e), EV5, ARG_EV5HWMEM },
01321 { "hw_ld/pwqvl", EV5HWMEM(0x1B,0x2f), EV5, ARG_EV5HWMEM },
01322 { "hw_ld/pwv", EV5HWMEM(0x1B,0x2a), EV5, ARG_EV5HWMEM },
01323 { "hw_ld/pwvl", EV5HWMEM(0x1B,0x2b), EV5, ARG_EV5HWMEM },
01324 { "hw_ld/q", EV4HWMEM(0x1B,0x1), EV4, ARG_EV4HWMEM },
01325 { "hw_ld/q", EV5HWMEM(0x1B,0x04), EV5, ARG_EV5HWMEM },
01326 { "hw_ld/ql", EV5HWMEM(0x1B,0x05), EV5, ARG_EV5HWMEM },
01327 { "hw_ld/qv", EV5HWMEM(0x1B,0x06), EV5, ARG_EV5HWMEM },
01328 { "hw_ld/qvl", EV5HWMEM(0x1B,0x07), EV5, ARG_EV5HWMEM },
01329 { "hw_ld/r", EV4HWMEM(0x1B,0x2), EV4, ARG_EV4HWMEM },
01330 { "hw_ld/rq", EV4HWMEM(0x1B,0x3), EV4, ARG_EV4HWMEM },
01331 { "hw_ld/v", EV5HWMEM(0x1B,0x02), EV5, ARG_EV5HWMEM },
01332 { "hw_ld/vl", EV5HWMEM(0x1B,0x03), EV5, ARG_EV5HWMEM },
01333 { "hw_ld/w", EV5HWMEM(0x1B,0x08), EV5, ARG_EV5HWMEM },
01334 { "hw_ld/wl", EV5HWMEM(0x1B,0x09), EV5, ARG_EV5HWMEM },
01335 { "hw_ld/wq", EV5HWMEM(0x1B,0x0c), EV5, ARG_EV5HWMEM },
01336 { "hw_ld/wql", EV5HWMEM(0x1B,0x0d), EV5, ARG_EV5HWMEM },
01337 { "hw_ld/wqv", EV5HWMEM(0x1B,0x0e), EV5, ARG_EV5HWMEM },
01338 { "hw_ld/wqvl", EV5HWMEM(0x1B,0x0f), EV5, ARG_EV5HWMEM },
01339 { "hw_ld/wv", EV5HWMEM(0x1B,0x0a), EV5, ARG_EV5HWMEM },
01340 { "hw_ld/wvl", EV5HWMEM(0x1B,0x0b), EV5, ARG_EV5HWMEM },
01341 { "pal1b", PCD(0x1B), BASE, ARG_PCD },
01342
01343 { "sextb", OPR(0x1C, 0x00), BWX, ARG_OPRZ1 },
01344 { "sextw", OPR(0x1C, 0x01), BWX, ARG_OPRZ1 },
01345 { "ctpop", OPR(0x1C, 0x30), CIX, ARG_OPRZ1 },
01346 { "perr", OPR(0x1C, 0x31), MAX, ARG_OPR },
01347 { "ctlz", OPR(0x1C, 0x32), CIX, ARG_OPRZ1 },
01348 { "cttz", OPR(0x1C, 0x33), CIX, ARG_OPRZ1 },
01349 { "unpkbw", OPR(0x1C, 0x34), MAX, ARG_OPRZ1 },
01350 { "unpkbl", OPR(0x1C, 0x35), MAX, ARG_OPRZ1 },
01351 { "pkwb", OPR(0x1C, 0x36), MAX, ARG_OPRZ1 },
01352 { "pklb", OPR(0x1C, 0x37), MAX, ARG_OPRZ1 },
01353 { "minsb8", OPR(0x1C, 0x38), MAX, ARG_OPR },
01354 { "minsb8", OPRL(0x1C, 0x38), MAX, ARG_OPRL },
01355 { "minsw4", OPR(0x1C, 0x39), MAX, ARG_OPR },
01356 { "minsw4", OPRL(0x1C, 0x39), MAX, ARG_OPRL },
01357 { "minub8", OPR(0x1C, 0x3A), MAX, ARG_OPR },
01358 { "minub8", OPRL(0x1C, 0x3A), MAX, ARG_OPRL },
01359 { "minuw4", OPR(0x1C, 0x3B), MAX, ARG_OPR },
01360 { "minuw4", OPRL(0x1C, 0x3B), MAX, ARG_OPRL },
01361 { "maxub8", OPR(0x1C, 0x3C), MAX, ARG_OPR },
01362 { "maxub8", OPRL(0x1C, 0x3C), MAX, ARG_OPRL },
01363 { "maxuw4", OPR(0x1C, 0x3D), MAX, ARG_OPR },
01364 { "maxuw4", OPRL(0x1C, 0x3D), MAX, ARG_OPRL },
01365 { "maxsb8", OPR(0x1C, 0x3E), MAX, ARG_OPR },
01366 { "maxsb8", OPRL(0x1C, 0x3E), MAX, ARG_OPRL },
01367 { "maxsw4", OPR(0x1C, 0x3F), MAX, ARG_OPR },
01368 { "maxsw4", OPRL(0x1C, 0x3F), MAX, ARG_OPRL },
01369 { "ftoit", FP(0x1C, 0x70), CIX, { FA, ZB, RC } },
01370 { "ftois", FP(0x1C, 0x78), CIX, { FA, ZB, RC } },
01371
01372 { "hw_mtpr", OPR(0x1D,0x00), EV4, { RA, RBA, EV4EXTHWINDEX } },
01373 { "hw_mtpr", OP(0x1D), OP_MASK, EV5, { RA, RBA, EV5HWINDEX } },
01374 { "hw_mtpr", OP(0x1D), OP_MASK, EV6, { ZA, RB, EV6HWINDEX } },
01375 { "hw_mtpr/i", OPR(0x1D,0x01), EV4, ARG_EV4HWMPR },
01376 { "hw_mtpr/a", OPR(0x1D,0x02), EV4, ARG_EV4HWMPR },
01377 { "hw_mtpr/ai", OPR(0x1D,0x03), EV4, ARG_EV4HWMPR },
01378 { "hw_mtpr/p", OPR(0x1D,0x04), EV4, ARG_EV4HWMPR },
01379 { "hw_mtpr/pi", OPR(0x1D,0x05), EV4, ARG_EV4HWMPR },
01380 { "hw_mtpr/pa", OPR(0x1D,0x06), EV4, ARG_EV4HWMPR },
01381 { "hw_mtpr/pai", OPR(0x1D,0x07), EV4, ARG_EV4HWMPR },
01382 { "pal1d", PCD(0x1D), BASE, ARG_PCD },
01383
01384 { "hw_rei", SPCD(0x1E,0x3FF8000), EV4|EV5, ARG_NONE },
01385 { "hw_rei_stall", SPCD(0x1E,0x3FFC000), EV5, ARG_NONE },
01386 { "hw_jmp", EV6HWMBR(0x1E,0x0), EV6, { ZA, PRB, EV6HWJMPHINT } },
01387 { "hw_jsr", EV6HWMBR(0x1E,0x2), EV6, { ZA, PRB, EV6HWJMPHINT } },
01388 { "hw_ret", EV6HWMBR(0x1E,0x4), EV6, { ZA, PRB } },
01389 { "hw_jcr", EV6HWMBR(0x1E,0x6), EV6, { ZA, PRB } },
01390 { "hw_coroutine", EV6HWMBR(0x1E,0x6), EV6, { ZA, PRB } },
01391 { "hw_jmp/stall", EV6HWMBR(0x1E,0x1), EV6, { ZA, PRB, EV6HWJMPHINT } },
01392 { "hw_jsr/stall", EV6HWMBR(0x1E,0x3), EV6, { ZA, PRB, EV6HWJMPHINT } },
01393 { "hw_ret/stall", EV6HWMBR(0x1E,0x5), EV6, { ZA, PRB } },
01394 { "hw_jcr/stall", EV6HWMBR(0x1E,0x7), EV6, { ZA, PRB } },
01395 { "hw_coroutine/stall", EV6HWMBR(0x1E,0x7), EV6, { ZA, PRB } },
01396 { "pal1e", PCD(0x1E), BASE, ARG_PCD },
01397
01398 { "hw_stl", EV4HWMEM(0x1F,0x0), EV4, ARG_EV4HWMEM },
01399 { "hw_stl", EV5HWMEM(0x1F,0x00), EV5, ARG_EV5HWMEM },
01400 { "hw_stl", EV6HWMEM(0x1F,0x4), EV6, ARG_EV6HWMEM },
01401 { "hw_stl/a", EV4HWMEM(0x1F,0x4), EV4, ARG_EV4HWMEM },
01402 { "hw_stl/a", EV5HWMEM(0x1F,0x10), EV5, ARG_EV5HWMEM },
01403 { "hw_stl/a", EV6HWMEM(0x1F,0xC), EV6, ARG_EV6HWMEM },
01404 { "hw_stl/ac", EV5HWMEM(0x1F,0x11), EV5, ARG_EV5HWMEM },
01405 { "hw_stl/ar", EV4HWMEM(0x1F,0x6), EV4, ARG_EV4HWMEM },
01406 { "hw_stl/av", EV5HWMEM(0x1F,0x12), EV5, ARG_EV5HWMEM },
01407 { "hw_stl/avc", EV5HWMEM(0x1F,0x13), EV5, ARG_EV5HWMEM },
01408 { "hw_stl/c", EV5HWMEM(0x1F,0x01), EV5, ARG_EV5HWMEM },
01409 { "hw_stl/p", EV4HWMEM(0x1F,0x8), EV4, ARG_EV4HWMEM },
01410 { "hw_stl/p", EV5HWMEM(0x1F,0x20), EV5, ARG_EV5HWMEM },
01411 { "hw_stl/p", EV6HWMEM(0x1F,0x0), EV6, ARG_EV6HWMEM },
01412 { "hw_stl/pa", EV4HWMEM(0x1F,0xC), EV4, ARG_EV4HWMEM },
01413 { "hw_stl/pa", EV5HWMEM(0x1F,0x30), EV5, ARG_EV5HWMEM },
01414 { "hw_stl/pac", EV5HWMEM(0x1F,0x31), EV5, ARG_EV5HWMEM },
01415 { "hw_stl/pav", EV5HWMEM(0x1F,0x32), EV5, ARG_EV5HWMEM },
01416 { "hw_stl/pavc", EV5HWMEM(0x1F,0x33), EV5, ARG_EV5HWMEM },
01417 { "hw_stl/pc", EV5HWMEM(0x1F,0x21), EV5, ARG_EV5HWMEM },
01418 { "hw_stl/pr", EV4HWMEM(0x1F,0xA), EV4, ARG_EV4HWMEM },
01419 { "hw_stl/pv", EV5HWMEM(0x1F,0x22), EV5, ARG_EV5HWMEM },
01420 { "hw_stl/pvc", EV5HWMEM(0x1F,0x23), EV5, ARG_EV5HWMEM },
01421 { "hw_stl/r", EV4HWMEM(0x1F,0x2), EV4, ARG_EV4HWMEM },
01422 { "hw_stl/v", EV5HWMEM(0x1F,0x02), EV5, ARG_EV5HWMEM },
01423 { "hw_stl/vc", EV5HWMEM(0x1F,0x03), EV5, ARG_EV5HWMEM },
01424 { "hw_stl_c", EV5HWMEM(0x1F,0x01), EV5, ARG_EV5HWMEM },
01425 { "hw_stl_c/a", EV5HWMEM(0x1F,0x11), EV5, ARG_EV5HWMEM },
01426 { "hw_stl_c/av", EV5HWMEM(0x1F,0x13), EV5, ARG_EV5HWMEM },
01427 { "hw_stl_c/p", EV5HWMEM(0x1F,0x21), EV5, ARG_EV5HWMEM },
01428 { "hw_stl_c/p", EV6HWMEM(0x1F,0x2), EV6, ARG_EV6HWMEM },
01429 { "hw_stl_c/pa", EV5HWMEM(0x1F,0x31), EV5, ARG_EV5HWMEM },
01430 { "hw_stl_c/pav", EV5HWMEM(0x1F,0x33), EV5, ARG_EV5HWMEM },
01431 { "hw_stl_c/pv", EV5HWMEM(0x1F,0x23), EV5, ARG_EV5HWMEM },
01432 { "hw_stl_c/v", EV5HWMEM(0x1F,0x03), EV5, ARG_EV5HWMEM },
01433 { "hw_stq", EV4HWMEM(0x1F,0x1), EV4, ARG_EV4HWMEM },
01434 { "hw_stq", EV5HWMEM(0x1F,0x04), EV5, ARG_EV5HWMEM },
01435 { "hw_stq", EV6HWMEM(0x1F,0x5), EV6, ARG_EV6HWMEM },
01436 { "hw_stq/a", EV4HWMEM(0x1F,0x5), EV4, ARG_EV4HWMEM },
01437 { "hw_stq/a", EV5HWMEM(0x1F,0x14), EV5, ARG_EV5HWMEM },
01438 { "hw_stq/a", EV6HWMEM(0x1F,0xD), EV6, ARG_EV6HWMEM },
01439 { "hw_stq/ac", EV5HWMEM(0x1F,0x15), EV5, ARG_EV5HWMEM },
01440 { "hw_stq/ar", EV4HWMEM(0x1F,0x7), EV4, ARG_EV4HWMEM },
01441 { "hw_stq/av", EV5HWMEM(0x1F,0x16), EV5, ARG_EV5HWMEM },
01442 { "hw_stq/avc", EV5HWMEM(0x1F,0x17), EV5, ARG_EV5HWMEM },
01443 { "hw_stq/c", EV5HWMEM(0x1F,0x05), EV5, ARG_EV5HWMEM },
01444 { "hw_stq/p", EV4HWMEM(0x1F,0x9), EV4, ARG_EV4HWMEM },
01445 { "hw_stq/p", EV5HWMEM(0x1F,0x24), EV5, ARG_EV5HWMEM },
01446 { "hw_stq/p", EV6HWMEM(0x1F,0x1), EV6, ARG_EV6HWMEM },
01447 { "hw_stq/pa", EV4HWMEM(0x1F,0xD), EV4, ARG_EV4HWMEM },
01448 { "hw_stq/pa", EV5HWMEM(0x1F,0x34), EV5, ARG_EV5HWMEM },
01449 { "hw_stq/pac", EV5HWMEM(0x1F,0x35), EV5, ARG_EV5HWMEM },
01450 { "hw_stq/par", EV4HWMEM(0x1F,0xE), EV4, ARG_EV4HWMEM },
01451 { "hw_stq/par", EV4HWMEM(0x1F,0xF), EV4, ARG_EV4HWMEM },
01452 { "hw_stq/pav", EV5HWMEM(0x1F,0x36), EV5, ARG_EV5HWMEM },
01453 { "hw_stq/pavc", EV5HWMEM(0x1F,0x37), EV5, ARG_EV5HWMEM },
01454 { "hw_stq/pc", EV5HWMEM(0x1F,0x25), EV5, ARG_EV5HWMEM },
01455 { "hw_stq/pr", EV4HWMEM(0x1F,0xB), EV4, ARG_EV4HWMEM },
01456 { "hw_stq/pv", EV5HWMEM(0x1F,0x26), EV5, ARG_EV5HWMEM },
01457 { "hw_stq/pvc", EV5HWMEM(0x1F,0x27), EV5, ARG_EV5HWMEM },
01458 { "hw_stq/r", EV4HWMEM(0x1F,0x3), EV4, ARG_EV4HWMEM },
01459 { "hw_stq/v", EV5HWMEM(0x1F,0x06), EV5, ARG_EV5HWMEM },
01460 { "hw_stq/vc", EV5HWMEM(0x1F,0x07), EV5, ARG_EV5HWMEM },
01461 { "hw_stq_c", EV5HWMEM(0x1F,0x05), EV5, ARG_EV5HWMEM },
01462 { "hw_stq_c/a", EV5HWMEM(0x1F,0x15), EV5, ARG_EV5HWMEM },
01463 { "hw_stq_c/av", EV5HWMEM(0x1F,0x17), EV5, ARG_EV5HWMEM },
01464 { "hw_stq_c/p", EV5HWMEM(0x1F,0x25), EV5, ARG_EV5HWMEM },
01465 { "hw_stq_c/p", EV6HWMEM(0x1F,0x3), EV6, ARG_EV6HWMEM },
01466 { "hw_stq_c/pa", EV5HWMEM(0x1F,0x35), EV5, ARG_EV5HWMEM },
01467 { "hw_stq_c/pav", EV5HWMEM(0x1F,0x37), EV5, ARG_EV5HWMEM },
01468 { "hw_stq_c/pv", EV5HWMEM(0x1F,0x27), EV5, ARG_EV5HWMEM },
01469 { "hw_stq_c/v", EV5HWMEM(0x1F,0x07), EV5, ARG_EV5HWMEM },
01470 { "hw_st", EV4HWMEM(0x1F,0x0), EV4, ARG_EV4HWMEM },
01471 { "hw_st", EV5HWMEM(0x1F,0x00), EV5, ARG_EV5HWMEM },
01472 { "hw_st/a", EV4HWMEM(0x1F,0x4), EV4, ARG_EV4HWMEM },
01473 { "hw_st/a", EV5HWMEM(0x1F,0x10), EV5, ARG_EV5HWMEM },
01474 { "hw_st/ac", EV5HWMEM(0x1F,0x11), EV5, ARG_EV5HWMEM },
01475 { "hw_st/aq", EV4HWMEM(0x1F,0x5), EV4, ARG_EV4HWMEM },
01476 { "hw_st/aq", EV5HWMEM(0x1F,0x14), EV5, ARG_EV5HWMEM },
01477 { "hw_st/aqc", EV5HWMEM(0x1F,0x15), EV5, ARG_EV5HWMEM },
01478 { "hw_st/aqv", EV5HWMEM(0x1F,0x16), EV5, ARG_EV5HWMEM },
01479 { "hw_st/aqvc", EV5HWMEM(0x1F,0x17), EV5, ARG_EV5HWMEM },
01480 { "hw_st/ar", EV4HWMEM(0x1F,0x6), EV4, ARG_EV4HWMEM },
01481 { "hw_st/arq", EV4HWMEM(0x1F,0x7), EV4, ARG_EV4HWMEM },
01482 { "hw_st/av", EV5HWMEM(0x1F,0x12), EV5, ARG_EV5HWMEM },
01483 { "hw_st/avc", EV5HWMEM(0x1F,0x13), EV5, ARG_EV5HWMEM },
01484 { "hw_st/c", EV5HWMEM(0x1F,0x01), EV5, ARG_EV5HWMEM },
01485 { "hw_st/p", EV4HWMEM(0x1F,0x8), EV4, ARG_EV4HWMEM },
01486 { "hw_st/p", EV5HWMEM(0x1F,0x20), EV5, ARG_EV5HWMEM },
01487 { "hw_st/pa", EV4HWMEM(0x1F,0xC), EV4, ARG_EV4HWMEM },
01488 { "hw_st/pa", EV5HWMEM(0x1F,0x30), EV5, ARG_EV5HWMEM },
01489 { "hw_st/pac", EV5HWMEM(0x1F,0x31), EV5, ARG_EV5HWMEM },
01490 { "hw_st/paq", EV4HWMEM(0x1F,0xD), EV4, ARG_EV4HWMEM },
01491 { "hw_st/paq", EV5HWMEM(0x1F,0x34), EV5, ARG_EV5HWMEM },
01492 { "hw_st/paqc", EV5HWMEM(0x1F,0x35), EV5, ARG_EV5HWMEM },
01493 { "hw_st/paqv", EV5HWMEM(0x1F,0x36), EV5, ARG_EV5HWMEM },
01494 { "hw_st/paqvc", EV5HWMEM(0x1F,0x37), EV5, ARG_EV5HWMEM },
01495 { "hw_st/par", EV4HWMEM(0x1F,0xE), EV4, ARG_EV4HWMEM },
01496 { "hw_st/parq", EV4HWMEM(0x1F,0xF), EV4, ARG_EV4HWMEM },
01497 { "hw_st/pav", EV5HWMEM(0x1F,0x32), EV5, ARG_EV5HWMEM },
01498 { "hw_st/pavc", EV5HWMEM(0x1F,0x33), EV5, ARG_EV5HWMEM },
01499 { "hw_st/pc", EV5HWMEM(0x1F,0x21), EV5, ARG_EV5HWMEM },
01500 { "hw_st/pq", EV4HWMEM(0x1F,0x9), EV4, ARG_EV4HWMEM },
01501 { "hw_st/pq", EV5HWMEM(0x1F,0x24), EV5, ARG_EV5HWMEM },
01502 { "hw_st/pqc", EV5HWMEM(0x1F,0x25), EV5, ARG_EV5HWMEM },
01503 { "hw_st/pqv", EV5HWMEM(0x1F,0x26), EV5, ARG_EV5HWMEM },
01504 { "hw_st/pqvc", EV5HWMEM(0x1F,0x27), EV5, ARG_EV5HWMEM },
01505 { "hw_st/pr", EV4HWMEM(0x1F,0xA), EV4, ARG_EV4HWMEM },
01506 { "hw_st/prq", EV4HWMEM(0x1F,0xB), EV4, ARG_EV4HWMEM },
01507 { "hw_st/pv", EV5HWMEM(0x1F,0x22), EV5, ARG_EV5HWMEM },
01508 { "hw_st/pvc", EV5HWMEM(0x1F,0x23), EV5, ARG_EV5HWMEM },
01509 { "hw_st/q", EV4HWMEM(0x1F,0x1), EV4, ARG_EV4HWMEM },
01510 { "hw_st/q", EV5HWMEM(0x1F,0x04), EV5, ARG_EV5HWMEM },
01511 { "hw_st/qc", EV5HWMEM(0x1F,0x05), EV5, ARG_EV5HWMEM },
01512 { "hw_st/qv", EV5HWMEM(0x1F,0x06), EV5, ARG_EV5HWMEM },
01513 { "hw_st/qvc", EV5HWMEM(0x1F,0x07), EV5, ARG_EV5HWMEM },
01514 { "hw_st/r", EV4HWMEM(0x1F,0x2), EV4, ARG_EV4HWMEM },
01515 { "hw_st/v", EV5HWMEM(0x1F,0x02), EV5, ARG_EV5HWMEM },
01516 { "hw_st/vc", EV5HWMEM(0x1F,0x03), EV5, ARG_EV5HWMEM },
01517 { "pal1f", PCD(0x1F), BASE, ARG_PCD },
01518
01519 { "ldf", MEM(0x20), BASE, ARG_FMEM },
01520 { "ldg", MEM(0x21), BASE, ARG_FMEM },
01521 { "lds", MEM(0x22), BASE, ARG_FMEM },
01522 { "ldt", MEM(0x23), BASE, ARG_FMEM },
01523 { "stf", MEM(0x24), BASE, ARG_FMEM },
01524 { "stg", MEM(0x25), BASE, ARG_FMEM },
01525 { "sts", MEM(0x26), BASE, ARG_FMEM },
01526 { "stt", MEM(0x27), BASE, ARG_FMEM },
01527
01528 { "ldl", MEM(0x28), BASE, ARG_MEM },
01529 { "ldq", MEM(0x29), BASE, ARG_MEM },
01530 { "ldl_l", MEM(0x2A), BASE, ARG_MEM },
01531 { "ldq_l", MEM(0x2B), BASE, ARG_MEM },
01532 { "stl", MEM(0x2C), BASE, ARG_MEM },
01533 { "stq", MEM(0x2D), BASE, ARG_MEM },
01534 { "stl_c", MEM(0x2E), BASE, ARG_MEM },
01535 { "stq_c", MEM(0x2F), BASE, ARG_MEM },
01536
01537 { "br", BRA(0x30), BASE, { ZA, BDISP } },
01538 { "br", BRA(0x30), BASE, ARG_BRA },
01539 { "fbeq", BRA(0x31), BASE, ARG_FBRA },
01540 { "fblt", BRA(0x32), BASE, ARG_FBRA },
01541 { "fble", BRA(0x33), BASE, ARG_FBRA },
01542 { "bsr", BRA(0x34), BASE, ARG_BRA },
01543 { "fbne", BRA(0x35), BASE, ARG_FBRA },
01544 { "fbge", BRA(0x36), BASE, ARG_FBRA },
01545 { "fbgt", BRA(0x37), BASE, ARG_FBRA },
01546 { "blbc", BRA(0x38), BASE, ARG_BRA },
01547 { "beq", BRA(0x39), BASE, ARG_BRA },
01548 { "blt", BRA(0x3A), BASE, ARG_BRA },
01549 { "ble", BRA(0x3B), BASE, ARG_BRA },
01550 { "blbs", BRA(0x3C), BASE, ARG_BRA },
01551 { "bne", BRA(0x3D), BASE, ARG_BRA },
01552 { "bge", BRA(0x3E), BASE, ARG_BRA },
01553 { "bgt", BRA(0x3F), BASE, ARG_BRA },
01554 };
01555
01556 const unsigned alpha_num_opcodes = sizeof(alpha_opcodes)/sizeof(*alpha_opcodes);