Lines Matching +full:one +full:- +full:to +full:- +full:one

7 #include "disas/dis-asm.h"
9 /* **** floatformat.h from sourceware.org CVS 2005-08-14. */
34 bytes are concatenated according to the byteorder flag, then each of those
67 /* Sign bit is always one bit long. 1 means negative, 0 means positive. */
72 /* Bias added to a "true" exponent to form the biased exponent. It
73 is intentionally signed as, otherwise, -exp_bias can turn into a
75 bit long, the equation (long)(1 - exp_bias) evaluates to
76 4294950914) instead of -16382). */
80 one bits. */
116 /* IA-64 Floating Point register spilt into memory. */
122 /* Convert from FMT to a double.
124 Store the double in *TO. */
129 /* The converse: convert the double *FROM to FMT
130 and store where TO points. */
135 /* Return non-zero iff the data at FROM is a valid number in format FMT. */
142 /* **** m68k-dis.h from sourceware.org CVS 2005-08-14. */
167 #define m68008 m68000 /* Synonym for -m68000. otherwise unused. */
171 #define m68ec030 m68030 /* Similar enough to -m68030 to ignore differences;
177 #define m68882 m68881 /* Synonym for -m68881. otherwise unused. */
211 /* The structure used to hold information for an opcode. */
217 /* The pseudo-size of the instruction(in bytes). Used to determine
218 number of bytes necessary to disassemble the instruction. */
230 /* The structure used to hold information for an opcode alias. */
242 always at least 2 bytes, and is as much longer as necessary to hold
246 opcode in order for an instruction to be an instance of that
254 Characters used: AaBbCcDdEeFfGgHIiJkLlMmnOopQqRrSsTtU VvWwXxYyZz01234|*~%;@!&$?/<>#^+-
263 O an offset (or width): immediate data 0-31 or data register.
266 - autodecrement only. Stored as 3 bits (number of the address register).
270 This matches an immediate operand only when value is in range -128..127
273 k K-factor for fmove.p instruction. Stored as a 7-bit constant or
277 which say how many bits to store.
280 B pc-relative address, converted to an offset
285 C the CCR. No need to store it; this is just for filtering validity.
286 S the SR. No need to store, just as with CCR.
287 U the USP. No need to store, just as with CCR.
288 E the MAC ACC. No need to store, just as with CCR.
290 G the MAC/EMAC MACSR. No need to store, just as with CCR.
292 H the MASK. No need to store, just as with CCR.
296 extracted from the 'd' field of word one, which means that an extended
332 L Register list of the type d0-d7/a0-a7 etc.
333 (New! Improved! Can also hold fp0-fp7, as well!)
334 The assembler tries to see if the registers match the insn by
351 * all (modes 0-6,7.0-4)
352 ~ alterable memory (modes 2-6,7.0,7.1)
353 (not 0,1,7.2-4)
354 % alterable (modes 0-6,7.0,7.1)
355 (not 7.2-4)
356 ; data (modes 0,2-6,7.0-4)
358 @ data, but not immediate (modes 0,2-6,7.0-3)
360 ! control (modes 2,5,6,7.0-3)
363 (not 0,1,3,4,7.2-4)
364 $ alterable data (modes 0,2-6,7.0,7.1)
365 (not 1,7.2-4)
367 (not 1,3,4,7.2-4)
368 / control, or data register (modes 0,2,5,6,7.0-3)
371 (not 0,1,3,7.2-4)
372 < *restore operands (modes 2,3,5,6,7.0-3)
376 m (modes 0-4)
379 p (modes 0-5)
382 q (modes 0,2-5)
383 v (modes 0,2-5,7.0,7.1)
384 b (modes 0,2-5,7.2)
385 w (modes 2-5,7.2)
395 mnemonic. -rab
409 3 68030-only pmmu registers (32 bit)
411 (aka Access Control reg 0 -- AC0 -- on 68ec030)
413 (aka Access Control reg 1 -- AC1 -- on 68ec030)
434 | memory (modes 2-6, 7.*)
437 Stored as 3 bits, range 0-7.
442 /* Places to put an operand, for non-general operands:
466 The place to store depends on the magnitude of offset.
469 The place to store is word two if bit six of word one is zero,
470 and words two and three if bit six of word one is one.
471 i Increment by two, to skip over coprocessor extended operands. Only
473 k Dynamic K-factor field. Bits 6-4 of word 2, used as a register number.
475 C floating point coprocessor constant - 7 bits. Also used for static
476 K-factors...
497 Places to put operand, for general operands:
499 b source, at low bit of first word, and immediate uses one byte
522 /* **** End of m68k-opcode.h */
523 /* **** m68k-dis.c from sourceware.org CVS 2005-08-14. */
566 /* Sign-extend an (unsigned char). */
570 #define COERCE_SIGNED_CHAR(ch) ((int) (((ch) ^ 0x80) & 0xFF) - 128)
574 #define NEXTBYTE(p) (p += 2, fetch_data(info, p), COERCE_SIGNED_CHAR(p[-1]))
577 #define COERCE16(x) ((int) (((x) ^ 0x8000) - 0x8000))
580 COERCE16 ((p[-2] << 8) + p[-1]))
583 #define COERCE32(x) ((bfd_signed_vma) ((x) ^ 0x80000000) - 0x80000000)
586 (COERCE32 ((((((p[-4] << 8) + p[-3]) << 8) + p[-2]) << 8) + p[-1])))
591 (unsigned int) ((((((p[-4] << 8) + p[-3]) << 8) + p[-2]) << 8) + p[-1]))
596 floatformat_to_double (&floatformat_ieee_single_big, (char *) p - 4, &val))
601 floatformat_to_double (&floatformat_ieee_double_big, (char *) p - 8, &val))
606 floatformat_to_double (&floatformat_m68881_ext, (char *) p - 12, &val))
608 /* Need a function to convert from packed to double
609 precision. Actually, it's easier to print a
611 there should be a special case to handle this... */
620 /* Points to first byte not fetched. */
627 /* Make sure that bytes from INFO->PRIVATE_DATA->BUFFER (inclusive)
628 to ADDR (exclusive) are valid. Returns 1 for success, longjmps
634 struct private *priv = (struct private *)info->private_data; in fetch_data2()
635 bfd_vma start = priv->insn_start + (priv->max_fetched - priv->the_buffer); in fetch_data2()
637 status = (*info->read_memory_func) (start, in fetch_data2()
638 priv->max_fetched, in fetch_data2()
639 addr - priv->max_fetched, in fetch_data2()
643 (*info->memory_error_func) (status, start, info); in fetch_data2()
644 siglongjmp(priv->bailout, 1); in fetch_data2()
647 priv->max_fetched = addr; in fetch_data2()
654 if (addr <= ((struct private *) (info->private_data))->max_fetched) { in fetch_data()
661 /* This function is used to print to the bit-bucket. */
677 CODE is a "place to put an argument", or 'x' for a destination
857 if it is a EMAC-load instruction if the EA is mode 2-5, otherwise it
858 is a non-load EMAC instruction and the bits mean register Ry.
955 /* Print a base register REGNO and displacement DISP, on INFO->STREAM.
956 REGNO = -1 for pc, -2 for none (suppressed). */
961 if (regno == -1) in print_base()
963 (*info->fprintf_func) (info->stream, "%%pc@("); in print_base()
964 (*info->print_address_func) (disp, info); in print_base()
970 if (regno == -2) in print_base()
971 (*info->fprintf_func) (info->stream, "@("); in print_base()
972 else if (regno == -3) in print_base()
973 (*info->fprintf_func) (info->stream, "%%zpc@("); in print_base()
975 (*info->fprintf_func) (info->stream, "%s@(", reg_names[regno]); in print_base()
978 (*info->fprintf_func) (info->stream, "%s", buf); in print_base()
982 /* Print an indexed argument. The base register is BASEREG (-1 for pc).
983 P points to extension word, in buffer.
1014 base_disp -= 0x100; in print_indexed()
1015 if (basereg == -1) in print_indexed()
1018 (*info->fprintf_func) (info->stream, ",%s)", buf); in print_indexed()
1023 /* First, compute the displacement to add to the base register. */ in print_indexed()
1026 if (basereg == -1) in print_indexed()
1027 basereg = -3; in print_indexed()
1029 basereg = -2; in print_indexed()
1042 if (basereg == -1) in print_indexed()
1045 /* Handle single-level case (not indirect). */ in print_indexed()
1050 (*info->fprintf_func) (info->stream, ",%s", buf); in print_indexed()
1051 (*info->fprintf_func) (info->stream, ")"); in print_indexed()
1055 /* Two level. Compute displacement to add after indirection. */ in print_indexed()
1069 (*info->fprintf_func) (info->stream, ",%s", buf); in print_indexed()
1073 (*info->fprintf_func) (info->stream, ")@(%s", vmabuf); in print_indexed()
1075 (*info->fprintf_func) (info->stream, ",%s", buf); in print_indexed()
1076 (*info->fprintf_func) (info->stream, ")"); in print_indexed()
1082 return -1 if an invalid operand was found, or -2 if
1084 ADDR is the pc for this arg to be relative to. */
1110 (*info->fprintf_func) (info->stream, "%s", cacheFieldName[val]); in print_insn_arg()
1116 (*info->fprintf_func) in print_insn_arg()
1117 (info->stream, in print_insn_arg()
1123 case '_': /* 32-bit absolute address for move16. */ in print_insn_arg()
1126 (*info->print_address_func) (uval, info); in print_insn_arg()
1131 (*info->fprintf_func) (info->stream, "%%ccr"); in print_insn_arg()
1135 (*info->fprintf_func) (info->stream, "%%sr"); in print_insn_arg()
1139 (*info->fprintf_func) (info->stream, "%%usp"); in print_insn_arg()
1143 (*info->fprintf_func) (info->stream, "%%acc"); in print_insn_arg()
1147 (*info->fprintf_func) (info->stream, "%%macsr"); in print_insn_arg()
1151 (*info->fprintf_func) (info->stream, "%%mask"); in print_insn_arg()
1173 for (regno = sizeof names / sizeof names[0] - 1; regno >= 0; regno--) in print_insn_arg()
1176 (*info->fprintf_func) (info->stream, "%s", names[regno].name); in print_insn_arg()
1180 (*info->fprintf_func) (info->stream, "%d", val); in print_insn_arg()
1189 (*info->fprintf_func) (info->stream, "#%d", val); in print_insn_arg()
1194 /* 0 means -1. */ in print_insn_arg()
1196 val = -1; in print_insn_arg()
1197 (*info->fprintf_func) (info->stream, "#%d", val); in print_insn_arg()
1205 (*info->fprintf_func) (info->stream, "%s", scalefactor_name[val]); in print_insn_arg()
1211 val = val - 0x100; in print_insn_arg()
1212 (*info->fprintf_func) (info->stream, "#%d", val); in print_insn_arg()
1218 (*info->fprintf_func) (info->stream, "#%d", val); in print_insn_arg()
1222 (*info->fprintf_func) (info->stream, "%s", in print_insn_arg()
1227 (*info->fprintf_func) in print_insn_arg()
1228 (info->stream, "%s", in print_insn_arg()
1233 (*info->fprintf_func) in print_insn_arg()
1234 (info->stream, "%s", in print_insn_arg()
1241 (*info->fprintf_func) (info->stream, "%s@", reg_names[regno]); in print_insn_arg()
1243 (*info->fprintf_func) (info->stream, "@(%s)", reg_names[regno]); in print_insn_arg()
1247 (*info->fprintf_func) in print_insn_arg()
1248 (info->stream, "%%fp%d", in print_insn_arg()
1255 (*info->fprintf_func) (info->stream, "%s", reg_names[val & 7]); in print_insn_arg()
1257 (*info->fprintf_func) (info->stream, "%d", val); in print_insn_arg()
1261 (*info->fprintf_func) in print_insn_arg()
1262 (info->stream, "%s@+", in print_insn_arg()
1266 case '-': in print_insn_arg()
1267 (*info->fprintf_func) in print_insn_arg()
1268 (info->stream, "%s@-", in print_insn_arg()
1274 (*info->fprintf_func) in print_insn_arg()
1275 (info->stream, "{%s}", in print_insn_arg()
1281 val -= 128; in print_insn_arg()
1282 (*info->fprintf_func) (info->stream, "{#%d}", val); in print_insn_arg()
1285 return -2; in print_insn_arg()
1306 return -2; in print_insn_arg()
1307 (*info->fprintf_func) (info->stream, "#%d", val); in print_insn_arg()
1324 else if (disp == -1) in print_insn_arg()
1329 if (buffer[1] & 0x40) /* If bit six is one, long offset. */ in print_insn_arg()
1335 return -2; in print_insn_arg()
1337 (*info->print_address_func) (addr + disp, info); in print_insn_arg()
1342 (*info->fprintf_func) in print_insn_arg()
1343 (info->stream, "%s@(%d)", in print_insn_arg()
1348 (*info->fprintf_func) (info->stream, "%s", in print_insn_arg()
1354 (*info->fprintf_func) (info->stream, "%%acc%d", val); in print_insn_arg()
1359 (*info->fprintf_func) (info->stream, "%%accext%s", val==0 ? "01" : "23"); in print_insn_arg()
1365 (*info->fprintf_func) (info->stream, "<<"); in print_insn_arg()
1367 (*info->fprintf_func) (info->stream, ">>"); in print_insn_arg()
1369 return -1; in print_insn_arg()
1377 (*info->fprintf_func) (info->stream, "(cpid=%d) ", val); in print_insn_arg()
1414 return -1; in print_insn_arg()
1422 (*info->fprintf_func) (info->stream, "%s", reg_names[val]); in print_insn_arg()
1426 (*info->fprintf_func) (info->stream, "%s", regname); in print_insn_arg()
1430 (*info->fprintf_func) (info->stream, "%s@", regname); in print_insn_arg()
1434 (*info->fprintf_func) (info->stream, "%s@+", regname); in print_insn_arg()
1438 (*info->fprintf_func) (info->stream, "%s@-", regname); in print_insn_arg()
1443 (*info->fprintf_func) (info->stream, "%s@(%d)", regname, val); in print_insn_arg()
1455 (*info->print_address_func) (val, info); in print_insn_arg()
1460 (*info->print_address_func) (uval, info); in print_insn_arg()
1465 (*info->fprintf_func) (info->stream, "%%pc@("); in print_insn_arg()
1466 (*info->print_address_func) (addr + val, info); in print_insn_arg()
1467 (*info->fprintf_func) (info->stream, ")"); in print_insn_arg()
1471 p = print_indexed (-1, p, addr, info); in print_insn_arg()
1510 return -1; in print_insn_arg()
1513 (*info->fprintf_func) (info->stream, "#%g", flval); in print_insn_arg()
1515 (*info->fprintf_func) (info->stream, "#%d", val); in print_insn_arg()
1519 return -1; in print_insn_arg()
1525 mask bit and if set, add a '&' to the arg. */ in print_insn_arg()
1530 info->fprintf_func (info->stream, "&"); in print_insn_arg()
1546 (*info->fprintf_func) (info->stream, "#0"); in print_insn_arg()
1566 (*info->fprintf_func) (info->stream, "/"); in print_insn_arg()
1568 (*info->fprintf_func) (info->stream, "%s", reg_names[regno]); in print_insn_arg()
1573 (*info->fprintf_func) (info->stream, "-%s", in print_insn_arg()
1584 (*info->fprintf_func) (info->stream, "#0"); in print_insn_arg()
1603 (*info->fprintf_func) (info->stream, "/"); in print_insn_arg()
1605 (*info->fprintf_func) (info->stream, "%%fp%d", regno); in print_insn_arg()
1610 (*info->fprintf_func) (info->stream, "-%%fp%d", regno); in print_insn_arg()
1616 (*info->fprintf_func) (info->stream, "%s", in print_insn_arg()
1621 return -2; in print_insn_arg()
1657 (*info->fprintf_func) in print_insn_arg()
1658 (info->stream, reg == 0x1c ? "%%bad%d" : "%%bac%d", in print_insn_arg()
1663 (*info->fprintf_func) (info->stream, "<mmu register %d>", reg); in print_insn_arg()
1666 (*info->fprintf_func) (info->stream, "%s", name); in print_insn_arg()
1675 (*info->fprintf_func) (info->stream, "%%dfc"); in print_insn_arg()
1677 (*info->fprintf_func) (info->stream, "%%sfc"); in print_insn_arg()
1679 /* xgettext:c-format */ in print_insn_arg()
1680 (*info->fprintf_func) (info->stream, "<function code %d>", fc); in print_insn_arg()
1685 (*info->fprintf_func) (info->stream, "%%val"); in print_insn_arg()
1692 (*info->fprintf_func) (info->stream, "%d", level); in print_insn_arg()
1706 (*info->fprintf_func) (info->stream, "%s%s", in print_insn_arg()
1713 return -2; in print_insn_arg()
1716 return p - p0; in print_insn_arg()
1719 /* Try to match the current instruction to best and if so, return the
1732 bfd_byte *buffer = priv->the_buffer; in match_insn_m68k()
1733 fprintf_function save_printer = info->fprintf_func; in match_insn_m68k()
1735 = info->print_address_func; in match_insn_m68k()
1741 /* Figure out how long the fixed-size portion of the instruction is. in match_insn_m68k()
1743 in the arguments--look for arguments which specify fields in the 2nd in match_insn_m68k()
1745 for (d = best->args; *d; d += 2) in match_insn_m68k()
1747 /* I don't think it is necessary to be checking d[0] here; in match_insn_m68k()
1748 I suspect all this could be moved to the case statement below. */ in match_insn_m68k()
1751 if (d[1] == 'l' && p - buffer < 6) in match_insn_m68k()
1753 else if (p - buffer < 4 && d[1] != 'C' && d[1] != '8') in match_insn_m68k()
1757 if ((d[0] == 'L' || d[0] == 'l') && d[1] == 'w' && p - buffer < 4) in match_insn_m68k()
1769 if (p - buffer < 4) in match_insn_m68k()
1775 if (p - buffer < 6) in match_insn_m68k()
1785 if (p - buffer < 4 && (best->match & 0xFFFF) != 0) in match_insn_m68k()
1788 /* lpstop is another exception. It takes a one word argument but is in match_insn_m68k()
1790 if (p - buffer < 6 in match_insn_m68k()
1791 && (best->match & 0xffff) == 0xffff in match_insn_m68k()
1792 && best->args[0] == '#' in match_insn_m68k()
1793 && best->args[1] == 'w') in match_insn_m68k()
1795 /* Copy the one word argument into the usual location for a one in match_insn_m68k()
1796 word argument, to simplify printing it. We can get away with in match_insn_m68k()
1798 aren't going to print anything based on it. */ in match_insn_m68k()
1807 d = best->args; in match_insn_m68k()
1810 info->print_address_func = dummy_print_address; in match_insn_m68k()
1811 info->fprintf_func = dummy_printer; in match_insn_m68k()
1817 int eaten = print_insn_arg (d, buffer, p, memaddr + (p - buffer), info); in match_insn_m68k()
1821 else if (eaten == -1) in match_insn_m68k()
1823 info->fprintf_func = save_printer; in match_insn_m68k()
1824 info->print_address_func = save_print_address; in match_insn_m68k()
1829 info->fprintf_func (info->stream, in match_insn_m68k()
1830 /* xgettext:c-format */ in match_insn_m68k()
1832 best->name, best->args); in match_insn_m68k()
1833 info->fprintf_func = save_printer; in match_insn_m68k()
1834 info->print_address_func = save_print_address; in match_insn_m68k()
1840 info->fprintf_func = save_printer; in match_insn_m68k()
1841 info->print_address_func = save_print_address; in match_insn_m68k()
1843 d = best->args; in match_insn_m68k()
1845 info->fprintf_func (info->stream, "%s", best->name); in match_insn_m68k()
1848 info->fprintf_func (info->stream, " "); in match_insn_m68k()
1852 p += print_insn_arg (d, buffer, p, memaddr + (p - buffer), info); in match_insn_m68k()
1855 if (*d && *(d - 2) != 'I' && *d != 'k') in match_insn_m68k()
1856 info->fprintf_func (info->stream, ","); in match_insn_m68k()
1859 return p - buffer; in match_insn_m68k()
1863 on INFO->STREAM. Returns length of the instruction, in bytes. */
1896 opc_pointer[i] = opc_pointer[i - 1] + numopcodes[i - 1]; in print_insn_m68k()
1904 info->private_data = (PTR) &priv; in print_insn_m68k()
1905 /* Tell objdump to use two bytes per chunk in print_insn_m68k()
1907 info->bytes_per_chunk = 2; in print_insn_m68k()
1908 info->bytes_per_line = 6; in print_insn_m68k()
1909 info->display_endian = BFD_ENDIAN_BIG; in print_insn_m68k()
1915 return -1; in print_insn_m68k()
1918 switch (info->mach) in print_insn_m68k()
1922 arch_mask = (unsigned int) -1; in print_insn_m68k()
1977 unsigned long opcode = opc->opcode; in print_insn_m68k()
1978 unsigned long match = opc->match; in print_insn_m68k()
1982 /* Only fetch the next two bytes if we need to. */ in print_insn_m68k()
1989 && (opc->arch & arch_mask) != 0) in print_insn_m68k()
1994 for (d = opc->args; *d; d += 2) in print_insn_m68k()
2002 for (d = opc->args; *d; d += 2) in print_insn_m68k()
2006 /* Don't match fmovel with more than one register; in print_insn_m68k()
2010 for (d = opc->args; *d; d += 2) in print_insn_m68k()
2015 if ((val & (val - 1)) != 0) in print_insn_m68k()
2021 /* Don't match FPU insns with non-default coprocessor ID. */ in print_insn_m68k()
2024 for (d = opc->args; *d; d += 2) in print_insn_m68k()
2042 info->fprintf_func (info->stream, "0%o", (buffer[0] << 8) + buffer[1]); in print_insn_m68k()
2045 /* **** End of m68k-dis.c */
2046 /* **** m68k-opc.h from sourceware.org CVS 2005-08-14. */
2068 #define one(x) ((unsigned int) (x) << 16) macro
2077 {"abcd", 2, one(0140400), one(0170770), "DsDd", m68000up },
2078 {"abcd", 2, one(0140410), one(0170770), "-s-d", m68000up },
2080 {"addaw", 2, one(0150300), one(0170700), "*wAd", m68000up },
2081 {"addal", 2, one(0150700), one(0170700), "*lAd", m68000up | mcfisa_a },
2083 {"addib", 4, one(0003000), one(0177700), "#b$s", m68000up },
2084 {"addiw", 4, one(0003100), one(0177700), "#w$s", m68000up },
2085 {"addil", 6, one(0003200), one(0177700), "#l$s", m68000up },
2086 {"addil", 6, one(0003200), one(0177700), "#lDs", mcfisa_a },
2088 {"addqb", 2, one(0050000), one(0170700), "Qd$b", m68000up },
2089 {"addqw", 2, one(0050100), one(0170700), "Qd%w", m68000up },
2090 {"addql", 2, one(0050200), one(0170700), "Qd%l", m68000up | mcfisa_a },
2093 {"addb", 2, one(0050000), one(0170700), "Qd$b", m68000up },
2094 {"addb", 4, one(0003000), one(0177700), "#b$s", m68000up },
2095 {"addb", 2, one(0150000), one(0170700), ";bDd", m68000up },
2096 {"addb", 2, one(0150400), one(0170700), "Dd~b", m68000up },
2097 {"addw", 2, one(0050100), one(0170700), "Qd%w", m68000up },
2098 {"addw", 2, one(0150300), one(0170700), "*wAd", m68000up },
2099 {"addw", 4, one(0003100), one(0177700), "#w$s", m68000up },
2100 {"addw", 2, one(0150100), one(0170700), "*wDd", m68000up },
2101 {"addw", 2, one(0150500), one(0170700), "Dd~w", m68000up },
2102 {"addl", 2, one(0050200), one(0170700), "Qd%l", m68000up | mcfisa_a },
2103 {"addl", 6, one(0003200), one(0177700), "#l$s", m68000up },
2104 {"addl", 6, one(0003200), one(0177700), "#lDs", mcfisa_a },
2105 {"addl", 2, one(0150700), one(0170700), "*lAd", m68000up | mcfisa_a },
2106 {"addl", 2, one(0150200), one(0170700), "*lDd", m68000up | mcfisa_a },
2107 {"addl", 2, one(0150600), one(0170700), "Dd~l", m68000up | mcfisa_a },
2109 {"addxb", 2, one(0150400), one(0170770), "DsDd", m68000up },
2110 {"addxb", 2, one(0150410), one(0170770), "-s-d", m68000up },
2111 {"addxw", 2, one(0150500), one(0170770), "DsDd", m68000up },
2112 {"addxw", 2, one(0150510), one(0170770), "-s-d", m68000up },
2113 {"addxl", 2, one(0150600), one(0170770), "DsDd", m68000up | mcfisa_a },
2114 {"addxl", 2, one(0150610), one(0170770), "-s-d", m68000up },
2116 {"andib", 4, one(0001000), one(0177700), "#b$s", m68000up },
2117 {"andib", 4, one(0001074), one(0177777), "#bCs", m68000up },
2118 {"andiw", 4, one(0001100), one(0177700), "#w$s", m68000up },
2119 {"andiw", 4, one(0001174), one(0177777), "#wSs", m68000up },
2120 {"andil", 6, one(0001200), one(0177700), "#l$s", m68000up },
2121 {"andil", 6, one(0001200), one(0177700), "#lDs", mcfisa_a },
2122 {"andi", 4, one(0001100), one(0177700), "#w$s", m68000up },
2123 {"andi", 4, one(0001074), one(0177777), "#bCs", m68000up },
2124 {"andi", 4, one(0001174), one(0177777), "#wSs", m68000up },
2127 {"andb", 4, one(0001000), one(0177700), "#b$s", m68000up },
2128 {"andb", 4, one(0001074), one(0177777), "#bCs", m68000up },
2129 {"andb", 2, one(0140000), one(0170700), ";bDd", m68000up },
2130 {"andb", 2, one(0140400), one(0170700), "Dd~b", m68000up },
2131 {"andw", 4, one(0001100), one(0177700), "#w$s", m68000up },
2132 {"andw", 4, one(0001174), one(0177777), "#wSs", m68000up },
2133 {"andw", 2, one(0140100), one(0170700), ";wDd", m68000up },
2134 {"andw", 2, one(0140500), one(0170700), "Dd~w", m68000up },
2135 {"andl", 6, one(0001200), one(0177700), "#l$s", m68000up },
2136 {"andl", 6, one(0001200), one(0177700), "#lDs", mcfisa_a },
2137 {"andl", 2, one(0140200), one(0170700), ";lDd", m68000up | mcfisa_a },
2138 {"andl", 2, one(0140600), one(0170700), "Dd~l", m68000up | mcfisa_a },
2139 {"and", 4, one(0001100), one(0177700), "#w$w", m68000up },
2140 {"and", 4, one(0001074), one(0177777), "#bCs", m68000up },
2141 {"and", 4, one(0001174), one(0177777), "#wSs", m68000up },
2142 {"and", 2, one(0140100), one(0170700), ";wDd", m68000up },
2143 {"and", 2, one(0140500), one(0170700), "Dd~w", m68000up },
2145 {"aslb", 2, one(0160400), one(0170770), "QdDs", m68000up },
2146 {"aslb", 2, one(0160440), one(0170770), "DdDs", m68000up },
2147 {"aslw", 2, one(0160500), one(0170770), "QdDs", m68000up },
2148 {"aslw", 2, one(0160540), one(0170770), "DdDs", m68000up },
2149 {"aslw", 2, one(0160700), one(0177700), "~s", m68000up },
2150 {"asll", 2, one(0160600), one(0170770), "QdDs", m68000up | mcfisa_a },
2151 {"asll", 2, one(0160640), one(0170770), "DdDs", m68000up | mcfisa_a },
2153 {"asrb", 2, one(0160000), one(0170770), "QdDs", m68000up },
2154 {"asrb", 2, one(0160040), one(0170770), "DdDs", m68000up },
2155 {"asrw", 2, one(0160100), one(0170770), "QdDs", m68000up },
2156 {"asrw", 2, one(0160140), one(0170770), "DdDs", m68000up },
2157 {"asrw", 2, one(0160300), one(0177700), "~s", m68000up },
2158 {"asrl", 2, one(0160200), one(0170770), "QdDs", m68000up | mcfisa_a },
2159 {"asrl", 2, one(0160240), one(0170770), "DdDs", m68000up | mcfisa_a },
2161 {"bhiw", 2, one(0061000), one(0177777), "BW", m68000up | mcfisa_a },
2162 {"blsw", 2, one(0061400), one(0177777), "BW", m68000up | mcfisa_a },
2163 {"bccw", 2, one(0062000), one(0177777), "BW", m68000up | mcfisa_a },
2164 {"bcsw", 2, one(0062400), one(0177777), "BW", m68000up | mcfisa_a },
2165 {"bnew", 2, one(0063000), one(0177777), "BW", m68000up | mcfisa_a },
2166 {"beqw", 2, one(0063400), one(0177777), "BW", m68000up | mcfisa_a },
2167 {"bvcw", 2, one(0064000), one(0177777), "BW", m68000up | mcfisa_a },
2168 {"bvsw", 2, one(0064400), one(0177777), "BW", m68000up | mcfisa_a },
2169 {"bplw", 2, one(0065000), one(0177777), "BW", m68000up | mcfisa_a },
2170 {"bmiw", 2, one(0065400), one(0177777), "BW", m68000up | mcfisa_a },
2171 {"bgew", 2, one(0066000), one(0177777), "BW", m68000up | mcfisa_a },
2172 {"bltw", 2, one(0066400), one(0177777), "BW", m68000up | mcfisa_a },
2173 {"bgtw", 2, one(0067000), one(0177777), "BW", m68000up | mcfisa_a },
2174 {"blew", 2, one(0067400), one(0177777), "BW", m68000up | mcfisa_a },
2176 {"bhil", 2, one(0061377), one(0177777), "BL", m68020up | cpu32 | mcfisa_b},
2177 {"blsl", 2, one(0061777), one(0177777), "BL", m68020up | cpu32 | mcfisa_b},
2178 {"bccl", 2, one(0062377), one(0177777), "BL", m68020up | cpu32 | mcfisa_b},
2179 {"bcsl", 2, one(0062777), one(0177777), "BL", m68020up | cpu32 | mcfisa_b},
2180 {"bnel", 2, one(0063377), one(0177777), "BL", m68020up | cpu32 | mcfisa_b},
2181 {"beql", 2, one(0063777), one(0177777), "BL", m68020up | cpu32 | mcfisa_b},
2182 {"bvcl", 2, one(0064377), one(0177777), "BL", m68020up | cpu32 | mcfisa_b},
2183 {"bvsl", 2, one(0064777), one(0177777), "BL", m68020up | cpu32 | mcfisa_b},
2184 {"bpll", 2, one(0065377), one(0177777), "BL", m68020up | cpu32 | mcfisa_b},
2185 {"bmil", 2, one(0065777), one(0177777), "BL", m68020up | cpu32 | mcfisa_b},
2186 {"bgel", 2, one(0066377), one(0177777), "BL", m68020up | cpu32 | mcfisa_b},
2187 {"bltl", 2, one(0066777), one(0177777), "BL", m68020up | cpu32 | mcfisa_b},
2188 {"bgtl", 2, one(0067377), one(0177777), "BL", m68020up | cpu32 | mcfisa_b},
2189 {"blel", 2, one(0067777), one(0177777), "BL", m68020up | cpu32 | mcfisa_b},
2191 {"bhis", 2, one(0061000), one(0177400), "BB", m68000up | mcfisa_a },
2192 {"blss", 2, one(0061400), one(0177400), "BB", m68000up | mcfisa_a },
2193 {"bccs", 2, one(0062000), one(0177400), "BB", m68000up | mcfisa_a },
2194 {"bcss", 2, one(0062400), one(0177400), "BB", m68000up | mcfisa_a },
2195 {"bnes", 2, one(0063000), one(0177400), "BB", m68000up | mcfisa_a },
2196 {"beqs", 2, one(0063400), one(0177400), "BB", m68000up | mcfisa_a },
2197 {"bvcs", 2, one(0064000), one(0177400), "BB", m68000up | mcfisa_a },
2198 {"bvss", 2, one(0064400), one(0177400), "BB", m68000up | mcfisa_a },
2199 {"bpls", 2, one(0065000), one(0177400), "BB", m68000up | mcfisa_a },
2200 {"bmis", 2, one(0065400), one(0177400), "BB", m68000up | mcfisa_a },
2201 {"bges", 2, one(0066000), one(0177400), "BB", m68000up | mcfisa_a },
2202 {"blts", 2, one(0066400), one(0177400), "BB", m68000up | mcfisa_a },
2203 {"bgts", 2, one(0067000), one(0177400), "BB", m68000up | mcfisa_a },
2204 {"bles", 2, one(0067400), one(0177400), "BB", m68000up | mcfisa_a },
2206 {"jhi", 2, one(0061000), one(0177400), "Bg", m68000up | mcfisa_a },
2207 {"jls", 2, one(0061400), one(0177400), "Bg", m68000up | mcfisa_a },
2208 {"jcc", 2, one(0062000), one(0177400), "Bg", m68000up | mcfisa_a },
2209 {"jcs", 2, one(0062400), one(0177400), "Bg", m68000up | mcfisa_a },
2210 {"jne", 2, one(0063000), one(0177400), "Bg", m68000up | mcfisa_a },
2211 {"jeq", 2, one(0063400), one(0177400), "Bg", m68000up | mcfisa_a },
2212 {"jvc", 2, one(0064000), one(0177400), "Bg", m68000up | mcfisa_a },
2213 {"jvs", 2, one(0064400), one(0177400), "Bg", m68000up | mcfisa_a },
2214 {"jpl", 2, one(0065000), one(0177400), "Bg", m68000up | mcfisa_a },
2215 {"jmi", 2, one(0065400), one(0177400), "Bg", m68000up | mcfisa_a },
2216 {"jge", 2, one(0066000), one(0177400), "Bg", m68000up | mcfisa_a },
2217 {"jlt", 2, one(0066400), one(0177400), "Bg", m68000up | mcfisa_a },
2218 {"jgt", 2, one(0067000), one(0177400), "Bg", m68000up | mcfisa_a },
2219 {"jle", 2, one(0067400), one(0177400), "Bg", m68000up | mcfisa_a },
2221 {"bchg", 2, one(0000500), one(0170700), "Dd$s", m68000up | mcfisa_a },
2222 {"bchg", 4, one(0004100), one(0177700), "#b$s", m68000up },
2223 {"bchg", 4, one(0004100), one(0177700), "#bqs", mcfisa_a },
2225 {"bclr", 2, one(0000600), one(0170700), "Dd$s", m68000up | mcfisa_a },
2226 {"bclr", 4, one(0004200), one(0177700), "#b$s", m68000up },
2227 {"bclr", 4, one(0004200), one(0177700), "#bqs", mcfisa_a },
2238 {"bgnd", 2, one(0045372), one(0177777), "", cpu32 },
2240 {"bitrev", 2, one(0000300), one(0177770), "Ds", mcfisa_aa},
2242 {"bkpt", 2, one(0044110), one(0177770), "ts", m68010up },
2244 {"braw", 2, one(0060000), one(0177777), "BW", m68000up | mcfisa_a },
2245 {"bral", 2, one(0060377), one(0177777), "BL", m68020up | cpu32 | mcfisa_b},
2246 {"bras", 2, one(0060000), one(0177400), "BB", m68000up | mcfisa_a },
2248 {"bset", 2, one(0000700), one(0170700), "Dd$s", m68000up | mcfisa_a },
2249 {"bset", 2, one(0000700), one(0170700), "Ddvs", mcfisa_a },
2250 {"bset", 4, one(0004300), one(0177700), "#b$s", m68000up },
2251 {"bset", 4, one(0004300), one(0177700), "#bqs", mcfisa_a },
2253 {"bsrw", 2, one(0060400), one(0177777), "BW", m68000up | mcfisa_a },
2254 {"bsrl", 2, one(0060777), one(0177777), "BL", m68020up | cpu32 | mcfisa_b},
2255 {"bsrs", 2, one(0060400), one(0177400), "BB", m68000up | mcfisa_a },
2257 {"btst", 2, one(0000400), one(0170700), "Dd;b", m68000up | mcfisa_a },
2258 {"btst", 4, one(0004000), one(0177700), "#b@s", m68000up },
2259 {"btst", 4, one(0004000), one(0177700), "#bqs", mcfisa_a },
2261 {"byterev", 2, one(0001300), one(0177770), "Ds", mcfisa_aa},
2263 {"callm", 4, one(0003300), one(0177700), "#b!s", m68020 },
2278 {"chkl", 2, one(0040400), one(0170700), ";lDd", m68000up },
2279 {"chkw", 2, one(0040600), one(0170700), ";wDd", m68000up },
2285 {"cinva", 2, one(0xf400|SCOPE_ALL), one(0xff38), "ce", m68040up },
2286 {"cinvl", 2, one(0xf400|SCOPE_LINE), one(0xff38), "ceas", m68040up },
2287 {"cinvp", 2, one(0xf400|SCOPE_PAGE), one(0xff38), "ceas", m68040up },
2289 {"cpusha", 2, one(0xf420|SCOPE_ALL), one(0xff38), "ce", m68040up },
2290 {"cpushl", 2, one(0xf420|SCOPE_LINE), one(0xff38), "ceas", m68040up | mcfisa_a },
2291 {"cpushp", 2, one(0xf420|SCOPE_PAGE), one(0xff38), "ceas", m68040up },
2297 {"clrb", 2, one(0041000), one(0177700), "$s", m68000up | mcfisa_a },
2298 {"clrw", 2, one(0041100), one(0177700), "$s", m68000up | mcfisa_a },
2299 {"clrl", 2, one(0041200), one(0177700), "$s", m68000up | mcfisa_a },
2305 {"cmpaw", 2, one(0130300), one(0170700), "*wAd", m68000up },
2306 {"cmpal", 2, one(0130700), one(0170700), "*lAd", m68000up | mcfisa_a },
2308 {"cmpib", 4, one(0006000), one(0177700), "#b@s", m68000up },
2309 {"cmpib", 4, one(0006000), one(0177700), "#bDs", mcfisa_b },
2310 {"cmpiw", 4, one(0006100), one(0177700), "#w@s", m68000up },
2311 {"cmpiw", 4, one(0006100), one(0177700), "#wDs", mcfisa_b },
2312 {"cmpil", 6, one(0006200), one(0177700), "#l@s", m68000up },
2313 {"cmpil", 6, one(0006200), one(0177700), "#lDs", mcfisa_a },
2315 {"cmpmb", 2, one(0130410), one(0170770), "+s+d", m68000up },
2316 {"cmpmw", 2, one(0130510), one(0170770), "+s+d", m68000up },
2317 {"cmpml", 2, one(0130610), one(0170770), "+s+d", m68000up },
2320 {"cmpb", 4, one(0006000), one(0177700), "#b@s", m68000up },
2321 {"cmpb", 4, one(0006000), one(0177700), "#bDs", mcfisa_b },
2322 {"cmpb", 2, one(0130410), one(0170770), "+s+d", m68000up },
2323 {"cmpb", 2, one(0130000), one(0170700), ";bDd", m68000up },
2324 {"cmpb", 2, one(0130000), one(0170700), "*bDd", mcfisa_b },
2325 {"cmpw", 2, one(0130300), one(0170700), "*wAd", m68000up },
2326 {"cmpw", 4, one(0006100), one(0177700), "#w@s", m68000up },
2327 {"cmpw", 4, one(0006100), one(0177700), "#wDs", mcfisa_b },
2328 {"cmpw", 2, one(0130510), one(0170770), "+s+d", m68000up },
2329 {"cmpw", 2, one(0130100), one(0170700), "*wDd", m68000up | mcfisa_b },
2330 {"cmpl", 2, one(0130700), one(0170700), "*lAd", m68000up | mcfisa_a },
2331 {"cmpl", 6, one(0006200), one(0177700), "#l@s", m68000up },
2332 {"cmpl", 6, one(0006200), one(0177700), "#lDs", mcfisa_a },
2333 {"cmpl", 2, one(0130610), one(0170770), "+s+d", m68000up },
2334 {"cmpl", 2, one(0130200), one(0170700), "*lDd", m68000up | mcfisa_a },
2336 {"dbcc", 2, one(0052310), one(0177770), "DsBw", m68000up },
2337 {"dbcs", 2, one(0052710), one(0177770), "DsBw", m68000up },
2338 {"dbeq", 2, one(0053710), one(0177770), "DsBw", m68000up },
2339 {"dbf", 2, one(0050710), one(0177770), "DsBw", m68000up },
2340 {"dbge", 2, one(0056310), one(0177770), "DsBw", m68000up },
2341 {"dbgt", 2, one(0057310), one(0177770), "DsBw", m68000up },
2342 {"dbhi", 2, one(0051310), one(0177770), "DsBw", m68000up },
2343 {"dble", 2, one(0057710), one(0177770), "DsBw", m68000up },
2344 {"dbls", 2, one(0051710), one(0177770), "DsBw", m68000up },
2345 {"dblt", 2, one(0056710), one(0177770), "DsBw", m68000up },
2346 {"dbmi", 2, one(0055710), one(0177770), "DsBw", m68000up },
2347 {"dbne", 2, one(0053310), one(0177770), "DsBw", m68000up },
2348 {"dbpl", 2, one(0055310), one(0177770), "DsBw", m68000up },
2349 {"dbt", 2, one(0050310), one(0177770), "DsBw", m68000up },
2350 {"dbvc", 2, one(0054310), one(0177770), "DsBw", m68000up },
2351 {"dbvs", 2, one(0054710), one(0177770), "DsBw", m68000up },
2353 {"divsw", 2, one(0100700), one(0170700), ";wDd", m68000up | mcfhwdiv },
2362 {"divuw", 2, one(0100300), one(0170700), ";wDd", m68000up | mcfhwdiv },
2371 {"eorib", 4, one(0005000), one(0177700), "#b$s", m68000up },
2372 {"eorib", 4, one(0005074), one(0177777), "#bCs", m68000up },
2373 {"eoriw", 4, one(0005100), one(0177700), "#w$s", m68000up },
2374 {"eoriw", 4, one(0005174), one(0177777), "#wSs", m68000up },
2375 {"eoril", 6, one(0005200), one(0177700), "#l$s", m68000up },
2376 {"eoril", 6, one(0005200), one(0177700), "#lDs", mcfisa_a },
2377 {"eori", 4, one(0005074), one(0177777), "#bCs", m68000up },
2378 {"eori", 4, one(0005174), one(0177777), "#wSs", m68000up },
2379 {"eori", 4, one(0005100), one(0177700), "#w$s", m68000up },
2382 {"eorb", 4, one(0005000), one(0177700), "#b$s", m68000up },
2383 {"eorb", 4, one(0005074), one(0177777), "#bCs", m68000up },
2384 {"eorb", 2, one(0130400), one(0170700), "Dd$s", m68000up },
2385 {"eorw", 4, one(0005100), one(0177700), "#w$s", m68000up },
2386 {"eorw", 4, one(0005174), one(0177777), "#wSs", m68000up },
2387 {"eorw", 2, one(0130500), one(0170700), "Dd$s", m68000up },
2388 {"eorl", 6, one(0005200), one(0177700), "#l$s", m68000up },
2389 {"eorl", 6, one(0005200), one(0177700), "#lDs", mcfisa_a },
2390 {"eorl", 2, one(0130600), one(0170700), "Dd$s", m68000up | mcfisa_a },
2391 {"eor", 4, one(0005074), one(0177777), "#bCs", m68000up },
2392 {"eor", 4, one(0005174), one(0177777), "#wSs", m68000up },
2393 {"eor", 4, one(0005100), one(0177700), "#w$s", m68000up },
2394 {"eor", 2, one(0130500), one(0170700), "Dd$s", m68000up },
2396 {"exg", 2, one(0140500), one(0170770), "DdDs", m68000up },
2397 {"exg", 2, one(0140510), one(0170770), "AdAs", m68000up },
2398 {"exg", 2, one(0140610), one(0170770), "DdAs", m68000up },
2399 {"exg", 2, one(0140610), one(0170770), "AsDd", m68000up },
2401 {"extw", 2, one(0044200), one(0177770), "Ds", m68000up|mcfisa_a },
2402 {"extl", 2, one(0044300), one(0177770), "Ds", m68000up|mcfisa_a },
2403 {"extbl", 2, one(0044700), one(0177770), "Ds", m68020up|cpu32|mcfisa_a },
2405 {"ff1", 2, one(0002300), one(0177770), "Ds", mcfisa_aa},
2546 {"fbeq", 2, one(0xF081), one(0xF1FF), "IdBW", mfloat | cfloat },
2547 {"fbf", 2, one(0xF080), one(0xF1FF), "IdBW", mfloat | cfloat },
2548 {"fbge", 2, one(0xF093), one(0xF1FF), "IdBW", mfloat | cfloat },
2549 {"fbgl", 2, one(0xF096), one(0xF1FF), "IdBW", mfloat | cfloat },
2550 {"fbgle", 2, one(0xF097), one(0xF1FF), "IdBW", mfloat | cfloat },
2551 {"fbgt", 2, one(0xF092), one(0xF1FF), "IdBW", mfloat | cfloat },
2552 {"fble", 2, one(0xF095), one(0xF1FF), "IdBW", mfloat | cfloat },
2553 {"fblt", 2, one(0xF094), one(0xF1FF), "IdBW", mfloat | cfloat },
2554 {"fbne", 2, one(0xF08E), one(0xF1FF), "IdBW", mfloat | cfloat },
2555 {"fbnge", 2, one(0xF09C), one(0xF1FF), "IdBW", mfloat | cfloat },
2556 {"fbngl", 2, one(0xF099), one(0xF1FF), "IdBW", mfloat | cfloat },
2557 {"fbngle", 2, one(0xF098), one(0xF1FF), "IdBW", mfloat | cfloat },
2558 {"fbngt", 2, one(0xF09D), one(0xF1FF), "IdBW", mfloat | cfloat },
2559 {"fbnle", 2, one(0xF09A), one(0xF1FF), "IdBW", mfloat | cfloat },
2560 {"fbnlt", 2, one(0xF09B), one(0xF1FF), "IdBW", mfloat | cfloat },
2561 {"fboge", 2, one(0xF083), one(0xF1FF), "IdBW", mfloat | cfloat },
2562 {"fbogl", 2, one(0xF086), one(0xF1FF), "IdBW", mfloat | cfloat },
2563 {"fbogt", 2, one(0xF082), one(0xF1FF), "IdBW", mfloat | cfloat },
2564 {"fbole", 2, one(0xF085), one(0xF1FF), "IdBW", mfloat | cfloat },
2565 {"fbolt", 2, one(0xF084), one(0xF1FF), "IdBW", mfloat | cfloat },
2566 {"fbor", 2, one(0xF087), one(0xF1FF), "IdBW", mfloat | cfloat },
2567 {"fbseq", 2, one(0xF091), one(0xF1FF), "IdBW", mfloat | cfloat },
2568 {"fbsf", 2, one(0xF090), one(0xF1FF), "IdBW", mfloat | cfloat },
2569 {"fbsne", 2, one(0xF09E), one(0xF1FF), "IdBW", mfloat | cfloat },
2570 {"fbst", 2, one(0xF09F), one(0xF1FF), "IdBW", mfloat | cfloat },
2571 {"fbt", 2, one(0xF08F), one(0xF1FF), "IdBW", mfloat | cfloat },
2572 {"fbueq", 2, one(0xF089), one(0xF1FF), "IdBW", mfloat | cfloat },
2573 {"fbuge", 2, one(0xF08B), one(0xF1FF), "IdBW", mfloat | cfloat },
2574 {"fbugt", 2, one(0xF08A), one(0xF1FF), "IdBW", mfloat | cfloat },
2575 {"fbule", 2, one(0xF08D), one(0xF1FF), "IdBW", mfloat | cfloat },
2576 {"fbult", 2, one(0xF08C), one(0xF1FF), "IdBW", mfloat | cfloat },
2577 {"fbun", 2, one(0xF088), one(0xF1FF), "IdBW", mfloat | cfloat },
2579 {"fbeql", 2, one(0xF0C1), one(0xF1FF), "IdBC", mfloat | cfloat },
2580 {"fbfl", 2, one(0xF0C0), one(0xF1FF), "IdBC", mfloat | cfloat },
2581 {"fbgel", 2, one(0xF0D3), one(0xF1FF), "IdBC", mfloat | cfloat },
2582 {"fbgll", 2, one(0xF0D6), one(0xF1FF), "IdBC", mfloat | cfloat },
2583 {"fbglel", 2, one(0xF0D7), one(0xF1FF), "IdBC", mfloat | cfloat },
2584 {"fbgtl", 2, one(0xF0D2), one(0xF1FF), "IdBC", mfloat | cfloat },
2585 {"fblel", 2, one(0xF0D5), one(0xF1FF), "IdBC", mfloat | cfloat },
2586 {"fbltl", 2, one(0xF0D4), one(0xF1FF), "IdBC", mfloat | cfloat },
2587 {"fbnel", 2, one(0xF0CE), one(0xF1FF), "IdBC", mfloat | cfloat },
2588 {"fbngel", 2, one(0xF0DC), one(0xF1FF), "IdBC", mfloat | cfloat },
2589 {"fbngll", 2, one(0xF0D9), one(0xF1FF), "IdBC", mfloat | cfloat },
2590 {"fbnglel", 2, one(0xF0D8), one(0xF1FF), "IdBC", mfloat | cfloat },
2591 {"fbngtl", 2, one(0xF0DD), one(0xF1FF), "IdBC", mfloat | cfloat },
2592 {"fbnlel", 2, one(0xF0DA), one(0xF1FF), "IdBC", mfloat | cfloat },
2593 {"fbnltl", 2, one(0xF0DB), one(0xF1FF), "IdBC", mfloat | cfloat },
2594 {"fbogel", 2, one(0xF0C3), one(0xF1FF), "IdBC", mfloat | cfloat },
2595 {"fbogll", 2, one(0xF0C6), one(0xF1FF), "IdBC", mfloat | cfloat },
2596 {"fbogtl", 2, one(0xF0C2), one(0xF1FF), "IdBC", mfloat | cfloat },
2597 {"fbolel", 2, one(0xF0C5), one(0xF1FF), "IdBC", mfloat | cfloat },
2598 {"fboltl", 2, one(0xF0C4), one(0xF1FF), "IdBC", mfloat | cfloat },
2599 {"fborl", 2, one(0xF0C7), one(0xF1FF), "IdBC", mfloat | cfloat },
2600 {"fbseql", 2, one(0xF0D1), one(0xF1FF), "IdBC", mfloat | cfloat },
2601 {"fbsfl", 2, one(0xF0D0), one(0xF1FF), "IdBC", mfloat | cfloat },
2602 {"fbsnel", 2, one(0xF0DE), one(0xF1FF), "IdBC", mfloat | cfloat },
2603 {"fbstl", 2, one(0xF0DF), one(0xF1FF), "IdBC", mfloat | cfloat },
2604 {"fbtl", 2, one(0xF0CF), one(0xF1FF), "IdBC", mfloat | cfloat },
2605 {"fbueql", 2, one(0xF0C9), one(0xF1FF), "IdBC", mfloat | cfloat },
2606 {"fbugel", 2, one(0xF0CB), one(0xF1FF), "IdBC", mfloat | cfloat },
2607 {"fbugtl", 2, one(0xF0CA), one(0xF1FF), "IdBC", mfloat | cfloat },
2608 {"fbulel", 2, one(0xF0CD), one(0xF1FF), "IdBC", mfloat | cfloat },
2609 {"fbultl", 2, one(0xF0CC), one(0xF1FF), "IdBC", mfloat | cfloat },
2610 {"fbunl", 2, one(0xF0C8), one(0xF1FF), "IdBC", mfloat | cfloat },
2612 {"fjeq", 2, one(0xF081), one(0xF1BF), "IdBc", mfloat | cfloat },
2613 {"fjf", 2, one(0xF080), one(0xF1BF), "IdBc", mfloat | cfloat },
2614 {"fjge", 2, one(0xF093), one(0xF1BF), "IdBc", mfloat | cfloat },
2615 {"fjgl", 2, one(0xF096), one(0xF1BF), "IdBc", mfloat | cfloat },
2616 {"fjgle", 2, one(0xF097), one(0xF1BF), "IdBc", mfloat | cfloat },
2617 {"fjgt", 2, one(0xF092), one(0xF1BF), "IdBc", mfloat | cfloat },
2618 {"fjle", 2, one(0xF095), one(0xF1BF), "IdBc", mfloat | cfloat },
2619 {"fjlt", 2, one(0xF094), one(0xF1BF), "IdBc", mfloat | cfloat },
2620 {"fjne", 2, one(0xF08E), one(0xF1BF), "IdBc", mfloat | cfloat },
2621 {"fjnge", 2, one(0xF09C), one(0xF1BF), "IdBc", mfloat | cfloat },
2622 {"fjngl", 2, one(0xF099), one(0xF1BF), "IdBc", mfloat | cfloat },
2623 {"fjngle", 2, one(0xF098), one(0xF1BF), "IdBc", mfloat | cfloat },
2624 {"fjngt", 2, one(0xF09D), one(0xF1BF), "IdBc", mfloat | cfloat },
2625 {"fjnle", 2, one(0xF09A), one(0xF1BF), "IdBc", mfloat | cfloat },
2626 {"fjnlt", 2, one(0xF09B), one(0xF1BF), "IdBc", mfloat | cfloat },
2627 {"fjoge", 2, one(0xF083), one(0xF1BF), "IdBc", mfloat | cfloat },
2628 {"fjogl", 2, one(0xF086), one(0xF1BF), "IdBc", mfloat | cfloat },
2629 {"fjogt", 2, one(0xF082), one(0xF1BF), "IdBc", mfloat | cfloat },
2630 {"fjole", 2, one(0xF085), one(0xF1BF), "IdBc", mfloat | cfloat },
2631 {"fjolt", 2, one(0xF084), one(0xF1BF), "IdBc", mfloat | cfloat },
2632 {"fjor", 2, one(0xF087), one(0xF1BF), "IdBc", mfloat | cfloat },
2633 {"fjseq", 2, one(0xF091), one(0xF1BF), "IdBc", mfloat | cfloat },
2634 {"fjsf", 2, one(0xF090), one(0xF1BF), "IdBc", mfloat | cfloat },
2635 {"fjsne", 2, one(0xF09E), one(0xF1BF), "IdBc", mfloat | cfloat },
2636 {"fjst", 2, one(0xF09F), one(0xF1BF), "IdBc", mfloat | cfloat },
2637 {"fjt", 2, one(0xF08F), one(0xF1BF), "IdBc", mfloat | cfloat },
2638 {"fjueq", 2, one(0xF089), one(0xF1BF), "IdBc", mfloat | cfloat },
2639 {"fjuge", 2, one(0xF08B), one(0xF1BF), "IdBc", mfloat | cfloat },
2640 {"fjugt", 2, one(0xF08A), one(0xF1BF), "IdBc", mfloat | cfloat },
2641 {"fjule", 2, one(0xF08D), one(0xF1BF), "IdBc", mfloat | cfloat },
2642 {"fjult", 2, one(0xF08C), one(0xF1BF), "IdBc", mfloat | cfloat },
2643 {"fjun", 2, one(0xF088), one(0xF1BF), "IdBc", mfloat | cfloat },
2893 register to anything but the floating point instruction register. */
2964 {"fmovemx", 4, two(0xF020, 0xE800), two(0xF1F8, 0xFF8F), "IiDk-s", mfloat },
2971 {"fmovemx", 4, two(0xF020, 0xE000), two(0xF1F8, 0xFF00), "IdL3-s", mfloat },
2972 {"fmovemx", 4, two(0xF020, 0xE000), two(0xF1F8, 0xFF00), "Id#3-s", mfloat },
2988 {"fmovem", 4, two(0xF020, 0xE000), two(0xF1F8, 0xFF00), "IdL3-s", mfloat },
2992 {"fmovem", 4, two(0xF020, 0xE000), two(0xF1F8, 0xFF00), "Id#3-s", mfloat },
2993 {"fmovem", 4, two(0xF020, 0xE800), two(0xF1F8, 0xFF8F), "IiDk-s", mfloat },
3112 {"frestore", 2, one(0xF140), one(0xF1C0), "Id<s", mfloat },
3113 {"frestore", 2, one(0xF140), one(0xF1C0), "Idys", cfloat },
3115 {"fsave", 2, one(0xF100), one(0xF1C0), "Id>s", mfloat },
3116 {"fsave", 2, one(0xF100), one(0xF1C0), "Idzs", cfloat },
3127 /* $ is necessary to prevent the assembler from using PC-relative.
3464 {"halt", 2, one(0045310), one(0177777), "", m68060 | mcfisa_a },
3466 {"illegal", 2, one(0045374), one(0177777), "", m68000up | mcfisa_a },
3467 {"intouch", 2, one(0xf428), one(0xfff8), "As", mcfisa_b },
3469 {"jmp", 2, one(0047300), one(0177700), "!s", m68000up | mcfisa_a },
3471 {"jra", 2, one(0060000), one(0177400), "Bg", m68000up | mcfisa_a },
3472 {"jra", 2, one(0047300), one(0177700), "!s", m68000up | mcfisa_a },
3474 {"jsr", 2, one(0047200), one(0177700), "!s", m68000up | mcfisa_a },
3476 {"jbsr", 2, one(0060400), one(0177400), "Bg", m68000up | mcfisa_a },
3477 {"jbsr", 2, one(0047200), one(0177700), "!s", m68000up | mcfisa_a },
3479 {"lea", 2, one(0040700), one(0170700), "!sAd", m68000up | mcfisa_a },
3483 {"linkw", 4, one(0047120), one(0177770), "As#w", m68000up | mcfisa_a },
3484 {"linkl", 6, one(0044010), one(0177770), "As#l", m68020up | cpu32 },
3485 {"link", 4, one(0047120), one(0177770), "As#W", m68000up | mcfisa_a },
3486 {"link", 6, one(0044010), one(0177770), "As#l", m68020up | cpu32 },
3488 {"lslb", 2, one(0160410), one(0170770), "QdDs", m68000up },
3489 {"lslb", 2, one(0160450), one(0170770), "DdDs", m68000up },
3490 {"lslw", 2, one(0160510), one(0170770), "QdDs", m68000up },
3491 {"lslw", 2, one(0160550), one(0170770), "DdDs", m68000up },
3492 {"lslw", 2, one(0161700), one(0177700), "~s", m68000up },
3493 {"lsll", 2, one(0160610), one(0170770), "QdDs", m68000up | mcfisa_a },
3494 {"lsll", 2, one(0160650), one(0170770), "DdDs", m68000up | mcfisa_a },
3496 {"lsrb", 2, one(0160010), one(0170770), "QdDs", m68000up },
3497 {"lsrb", 2, one(0160050), one(0170770), "DdDs", m68000up },
3498 {"lsrw", 2, one(0160110), one(0170770), "QdDs", m68000up },
3499 {"lsrw", 2, one(0160150), one(0170770), "DdDs", m68000up },
3500 {"lsrw", 2, one(0161300), one(0177700), "~s", m68000up },
3501 {"lsrl", 2, one(0160210), one(0170770), "QdDs", m68000up | mcfisa_a },
3502 {"lsrl", 2, one(0160250), one(0170770), "DdDs", m68000up | mcfisa_a },
3512 {"macw", 4, two(0xa000, 0x0200), two(0xf100, 0x0900), "uNuoMh4/RneG", mcfemac },/* Ry,Rx,+1/-1,<e…
3515 {"macw", 4, two(0xa000, 0x0200), two(0xf130, 0x0900), "uMumMheH", mcfemac },/* Ry,Rx,+1/-1,accX. …
3538 behavior --- it could be a hole in instruction decoding (Motorola
3539 decided not to trap all invalid instructions for performance reasons)
3540 --- but I suspect that it is not.
3542 I reported this to Motorola ISD Technical Communications Support,
3544 this reason I've decided to not allow moveab.
3546 jtc@cygnus.com - 97/01/24. */
3548 {"moveal", 2, one(0020100), one(0170700), "*lAd", m68000up | mcfisa_a },
3549 {"moveaw", 2, one(0030100), one(0170700), "*wAd", m68000up | mcfisa_a },
3551 {"movclrl", 2, one(0xA1C0), one(0xf9f0), "eFRs", mcfemac },
3553 {"movec", 4, one(0047173), one(0177777), "R1Jj", m68010up | mcfisa_a },
3554 {"movec", 4, one(0047173), one(0177777), "R1#j", m68010up | mcfisa_a },
3555 {"movec", 4, one(0047172), one(0177777), "JjR1", m68010up },
3556 {"movec", 4, one(0047172), one(0177777), "#jR1", m68010up },
3558 {"movemw", 4, one(0044200), one(0177700), "Lw&s", m68000up },
3559 {"movemw", 4, one(0044240), one(0177770), "lw-s", m68000up },
3560 {"movemw", 4, one(0044200), one(0177700), "#w>s", m68000up },
3561 {"movemw", 4, one(0046200), one(0177700), "<sLw", m68000up },
3562 {"movemw", 4, one(0046200), one(0177700), "<s#w", m68000up },
3563 {"moveml", 4, one(0044300), one(0177700), "Lw&s", m68000up },
3564 {"moveml", 4, one(0044340), one(0177770), "lw-s", m68000up },
3565 {"moveml", 4, one(0044300), one(0177700), "#w>s", m68000up },
3566 {"moveml", 4, one(0046300), one(0177700), "<sLw", m68000up },
3567 {"moveml", 4, one(0046300), one(0177700), "<s#w", m68000up },
3568 /* FIXME: need specifier for mode 2 and 5 to simplify below insn patterns. */
3569 {"moveml", 4, one(0044320), one(0177770), "Lwas", mcfisa_a },
3570 {"moveml", 4, one(0044320), one(0177770), "#was", mcfisa_a },
3571 {"moveml", 4, one(0044350), one(0177770), "Lwds", mcfisa_a },
3572 {"moveml", 4, one(0044350), one(0177770), "#wds", mcfisa_a },
3573 {"moveml", 4, one(0046320), one(0177770), "asLw", mcfisa_a },
3574 {"moveml", 4, one(0046320), one(0177770), "as#w", mcfisa_a },
3575 {"moveml", 4, one(0046350), one(0177770), "dsLw", mcfisa_a },
3576 {"moveml", 4, one(0046350), one(0177770), "ds#w", mcfisa_a },
3578 {"movepw", 2, one(0000410), one(0170770), "dsDd", m68000up },
3579 {"movepw", 2, one(0000610), one(0170770), "Ddds", m68000up },
3580 {"movepl", 2, one(0000510), one(0170770), "dsDd", m68000up },
3581 {"movepl", 2, one(0000710), one(0170770), "Ddds", m68000up },
3583 {"moveq", 2, one(0070000), one(0170400), "MsDd", m68000up | mcfisa_a },
3584 {"moveq", 2, one(0070000), one(0170400), "#BDd", m68000up | mcfisa_a },
3587 {"moveb", 2, one(0010000), one(0170000), ";b$d", m68000up },
3588 {"moveb", 2, one(0010000), one(0170070), "Ds$d", mcfisa_a },
3589 {"moveb", 2, one(0010020), one(0170070), "as$d", mcfisa_a },
3590 {"moveb", 2, one(0010030), one(0170070), "+s$d", mcfisa_a },
3591 {"moveb", 2, one(0010040), one(0170070), "-s$d", mcfisa_a },
3592 {"moveb", 2, one(0010000), one(0170000), "nsqd", mcfisa_a },
3593 {"moveb", 2, one(0010000), one(0170700), "obDd", mcfisa_a },
3594 {"moveb", 2, one(0010200), one(0170700), "obad", mcfisa_a },
3595 {"moveb", 2, one(0010300), one(0170700), "ob+d", mcfisa_a },
3596 {"moveb", 2, one(0010400), one(0170700), "ob-d", mcfisa_a },
3597 {"moveb", 2, one(0010000), one(0170000), "obnd", mcfisa_b },
3599 {"movew", 2, one(0030000), one(0170000), "*w%d", m68000up },
3600 {"movew", 2, one(0030000), one(0170000), "ms%d", mcfisa_a },
3601 {"movew", 2, one(0030000), one(0170000), "nspd", mcfisa_a },
3602 {"movew", 2, one(0030000), one(0170000), "owmd", mcfisa_a },
3603 {"movew", 2, one(0030000), one(0170000), "ownd", mcfisa_b },
3604 {"movew", 2, one(0040300), one(0177700), "Ss$s", m68000up },
3605 {"movew", 2, one(0040300), one(0177770), "SsDs", mcfisa_a },
3606 {"movew", 2, one(0041300), one(0177700), "Cs$s", m68010up },
3607 {"movew", 2, one(0041300), one(0177770), "CsDs", mcfisa_a },
3608 {"movew", 2, one(0042300), one(0177700), ";wCd", m68000up },
3609 {"movew", 2, one(0042300), one(0177700), "DsCd", mcfisa_a },
3610 {"movew", 4, one(0042374), one(0177777), "#wCd", mcfisa_a },
3611 {"movew", 2, one(0043300), one(0177700), ";wSd", m68000up },
3612 {"movew", 2, one(0043300), one(0177700), "DsSd", mcfisa_a },
3613 {"movew", 4, one(0043374), one(0177777), "#wSd", mcfisa_a },
3615 {"movel", 2, one(0070000), one(0170400), "MsDd", m68000up | mcfisa_a },
3616 {"movel", 2, one(0020000), one(0170000), "*l%d", m68000up },
3617 {"movel", 2, one(0020000), one(0170000), "ms%d", mcfisa_a },
3618 {"movel", 2, one(0020000), one(0170000), "nspd", mcfisa_a },
3619 {"movel", 2, one(0020000), one(0170000), "olmd", mcfisa_a },
3620 {"movel", 2, one(0020000), one(0170000), "olnd", mcfisa_b },
3621 {"movel", 2, one(0047140), one(0177770), "AsUd", m68000up | mcfusp },
3622 {"movel", 2, one(0047150), one(0177770), "UdAs", m68000up | mcfusp },
3623 {"movel", 2, one(0120600), one(0177760), "EsRs", mcfmac },
3624 {"movel", 2, one(0120400), one(0177760), "RsEs", mcfmac },
3625 {"movel", 6, one(0120474), one(0177777), "#lEs", mcfmac },
3626 {"movel", 2, one(0124600), one(0177760), "GsRs", mcfmac },
3627 {"movel", 2, one(0124400), one(0177760), "RsGs", mcfmac },
3628 {"movel", 6, one(0124474), one(0177777), "#lGs", mcfmac },
3629 {"movel", 2, one(0126600), one(0177760), "HsRs", mcfmac },
3630 {"movel", 2, one(0126400), one(0177760), "RsHs", mcfmac },
3631 {"movel", 6, one(0126474), one(0177777), "#lHs", mcfmac },
3632 {"movel", 2, one(0124700), one(0177777), "GsCs", mcfmac },
3634 {"movel", 2, one(0xa180), one(0xf9f0), "eFRs", mcfemac }, /* ACCx,Rx. */
3635 {"movel", 2, one(0xab80), one(0xfbf0), "g]Rs", mcfemac }, /* ACCEXTx,Rx. */
3636 {"movel", 2, one(0xa980), one(0xfff0), "G-Rs", mcfemac }, /* macsr,Rx. */
3637 {"movel", 2, one(0xad80), one(0xfff0), "H-Rs", mcfemac }, /* mask,Rx. */
3638 {"movel", 2, one(0xa110), one(0xf9fc), "efeF", mcfemac }, /* ACCy,ACCx. */
3639 {"movel", 2, one(0xa9c0), one(0xffff), "G-C-", mcfemac }, /* macsr,ccr. */
3640 {"movel", 2, one(0xa100), one(0xf9f0), "RseF", mcfemac }, /* Rx,ACCx. */
3641 {"movel", 6, one(0xa13c), one(0xf9ff), "#leF", mcfemac }, /* #,ACCx. */
3642 {"movel", 2, one(0xab00), one(0xfbc0), "Rsg]", mcfemac }, /* Rx,ACCEXTx. */
3643 {"movel", 6, one(0xab3c), one(0xfbff), "#lg]", mcfemac }, /* #,ACCEXTx. */
3644 {"movel", 2, one(0xa900), one(0xffc0), "RsG-", mcfemac }, /* Rx,macsr. */
3645 {"movel", 6, one(0xa93c), one(0xffff), "#lG-", mcfemac }, /* #,macsr. */
3646 {"movel", 2, one(0xad00), one(0xffc0), "RsH-", mcfemac }, /* Rx,mask. */
3647 {"movel", 6, one(0xad3c), one(0xffff), "#lH-", mcfemac }, /* #,mask. */
3649 {"move", 2, one(0030000), one(0170000), "*w%d", m68000up },
3650 {"move", 2, one(0030000), one(0170000), "ms%d", mcfisa_a },
3651 {"move", 2, one(0030000), one(0170000), "nspd", mcfisa_a },
3652 {"move", 2, one(0030000), one(0170000), "owmd", mcfisa_a },
3653 {"move", 2, one(0030000), one(0170000), "ownd", mcfisa_b },
3654 {"move", 2, one(0040300), one(0177700), "Ss$s", m68000up },
3655 {"move", 2, one(0040300), one(0177770), "SsDs", mcfisa_a },
3656 {"move", 2, one(0041300), one(0177700), "Cs$s", m68010up },
3657 {"move", 2, one(0041300), one(0177770), "CsDs", mcfisa_a },
3658 {"move", 2, one(0042300), one(0177700), ";wCd", m68000up },
3659 {"move", 2, one(0042300), one(0177700), "DsCd", mcfisa_a },
3660 {"move", 4, one(0042374), one(0177777), "#wCd", mcfisa_a },
3661 {"move", 2, one(0043300), one(0177700), ";wSd", m68000up },
3662 {"move", 2, one(0043300), one(0177700), "DsSd", mcfisa_a },
3663 {"move", 4, one(0043374), one(0177777), "#wSd", mcfisa_a },
3665 {"move", 2, one(0047140), one(0177770), "AsUd", m68000up },
3666 {"move", 2, one(0047150), one(0177770), "UdAs", m68000up },
3668 {"mov3ql", 2, one(0120500), one(0170700), "xd%s", mcfisa_b },
3669 {"mvsb", 2, one(0070400), one(0170700), "*bDd", mcfisa_b },
3670 {"mvsw", 2, one(0070500), one(0170700), "*wDd", mcfisa_b },
3671 {"mvzb", 2, one(0070600), one(0170700), "*bDd", mcfisa_b },
3672 {"mvzw", 2, one(0070700), one(0170700), "*wDd", mcfisa_b },
3682 {"move16", 2, one(0xf600), one(0xfff8), "+s_L", m68040up },
3683 {"move16", 2, one(0xf608), one(0xfff8), "_L+s", m68040up },
3684 {"move16", 2, one(0xf610), one(0xfff8), "as_L", m68040up },
3685 {"move16", 2, one(0xf618), one(0xfff8), "_Las", m68040up },
3695 {"msacw", 4, two(0xa000, 0x0300), two(0xf100, 0x0900), "uMumMh4/RneG", mcfemac },/* Ry,Rx,+1/-1,<…
3698 {"msacw", 4, two(0xa000, 0x0300), two(0xf130, 0x0900), "uMumMheH", mcfemac },/* Ry,Rx,+1/-1,accX.…
3715 {"mulsw", 2, one(0140700), one(0170700), ";wDd", m68000up|mcfisa_a },
3720 {"muluw", 2, one(0140300), one(0170700), ";wDd", m68000up|mcfisa_a },
3725 {"nbcd", 2, one(0044000), one(0177700), "$s", m68000up },
3727 {"negb", 2, one(0042000), one(0177700), "$s", m68000up },
3728 {"negw", 2, one(0042100), one(0177700), "$s", m68000up },
3729 {"negl", 2, one(0042200), one(0177700), "$s", m68000up },
3730 {"negl", 2, one(0042200), one(0177700), "Ds", mcfisa_a},
3732 {"negxb", 2, one(0040000), one(0177700), "$s", m68000up },
3733 {"negxw", 2, one(0040100), one(0177700), "$s", m68000up },
3734 {"negxl", 2, one(0040200), one(0177700), "$s", m68000up },
3735 {"negxl", 2, one(0040200), one(0177700), "Ds", mcfisa_a},
3737 {"nop", 2, one(0047161), one(0177777), "", m68000up | mcfisa_a},
3739 {"notb", 2, one(0043000), one(0177700), "$s", m68000up },
3740 {"notw", 2, one(0043100), one(0177700), "$s", m68000up },
3741 {"notl", 2, one(0043200), one(0177700), "$s", m68000up },
3742 {"notl", 2, one(0043200), one(0177700), "Ds", mcfisa_a},
3744 {"orib", 4, one(0000000), one(0177700), "#b$s", m68000up },
3745 {"orib", 4, one(0000074), one(0177777), "#bCs", m68000up },
3746 {"oriw", 4, one(0000100), one(0177700), "#w$s", m68000up },
3747 {"oriw", 4, one(0000174), one(0177777), "#wSs", m68000up },
3748 {"oril", 6, one(0000200), one(0177700), "#l$s", m68000up },
3749 {"oril", 6, one(0000200), one(0177700), "#lDs", mcfisa_a },
3750 {"ori", 4, one(0000074), one(0177777), "#bCs", m68000up },
3751 {"ori", 4, one(0000100), one(0177700), "#w$s", m68000up },
3752 {"ori", 4, one(0000174), one(0177777), "#wSs", m68000up },
3755 {"orb", 4, one(0000000), one(0177700), "#b$s", m68000up },
3756 {"orb", 4, one(0000074), one(0177777), "#bCs", m68000up },
3757 {"orb", 2, one(0100000), one(0170700), ";bDd", m68000up },
3758 {"orb", 2, one(0100400), one(0170700), "Dd~s", m68000up },
3759 {"orw", 4, one(0000100), one(0177700), "#w$s", m68000up },
3760 {"orw", 4, one(0000174), one(0177777), "#wSs", m68000up },
3761 {"orw", 2, one(0100100), one(0170700), ";wDd", m68000up },
3762 {"orw", 2, one(0100500), one(0170700), "Dd~s", m68000up },
3763 {"orl", 6, one(0000200), one(0177700), "#l$s", m68000up },
3764 {"orl", 6, one(0000200), one(0177700), "#lDs", mcfisa_a },
3765 {"orl", 2, one(0100200), one(0170700), ";lDd", m68000up | mcfisa_a },
3766 {"orl", 2, one(0100600), one(0170700), "Dd~s", m68000up | mcfisa_a },
3767 {"or", 4, one(0000074), one(0177777), "#bCs", m68000up },
3768 {"or", 4, one(0000100), one(0177700), "#w$s", m68000up },
3769 {"or", 4, one(0000174), one(0177777), "#wSs", m68000up },
3770 {"or", 2, one(0100100), one(0170700), ";wDd", m68000up },
3771 {"or", 2, one(0100500), one(0170700), "Dd~s", m68000up },
3773 {"pack", 4, one(0100500), one(0170770), "DsDd#w", m68020up },
3774 {"pack", 4, one(0100510), one(0170770), "-s-d#w", m68020up },
3776 {"pbac", 2, one(0xf087), one(0xffbf), "Bc", m68851 },
3777 {"pbacw", 2, one(0xf087), one(0xffff), "BW", m68851 },
3778 {"pbas", 2, one(0xf086), one(0xffbf), "Bc", m68851 },
3779 {"pbasw", 2, one(0xf086), one(0xffff), "BW", m68851 },
3780 {"pbbc", 2, one(0xf081), one(0xffbf), "Bc", m68851 },
3781 {"pbbcw", 2, one(0xf081), one(0xffff), "BW", m68851 },
3782 {"pbbs", 2, one(0xf080), one(0xffbf), "Bc", m68851 },
3783 {"pbbsw", 2, one(0xf080), one(0xffff), "BW", m68851 },
3784 {"pbcc", 2, one(0xf08f), one(0xffbf), "Bc", m68851 },
3785 {"pbccw", 2, one(0xf08f), one(0xffff), "BW", m68851 },
3786 {"pbcs", 2, one(0xf08e), one(0xffbf), "Bc", m68851 },
3787 {"pbcsw", 2, one(0xf08e), one(0xffff), "BW", m68851 },
3788 {"pbgc", 2, one(0xf08d), one(0xffbf), "Bc", m68851 },
3789 {"pbgcw", 2, one(0xf08d), one(0xffff), "BW", m68851 },
3790 {"pbgs", 2, one(0xf08c), one(0xffbf), "Bc", m68851 },
3791 {"pbgsw", 2, one(0xf08c), one(0xffff), "BW", m68851 },
3792 {"pbic", 2, one(0xf08b), one(0xffbf), "Bc", m68851 },
3793 {"pbicw", 2, one(0xf08b), one(0xffff), "BW", m68851 },
3794 {"pbis", 2, one(0xf08a), one(0xffbf), "Bc", m68851 },
3795 {"pbisw", 2, one(0xf08a), one(0xffff), "BW", m68851 },
3796 {"pblc", 2, one(0xf083), one(0xffbf), "Bc", m68851 },
3797 {"pblcw", 2, one(0xf083), one(0xffff), "BW", m68851 },
3798 {"pbls", 2, one(0xf082), one(0xffbf), "Bc", m68851 },
3799 {"pblsw", 2, one(0xf082), one(0xffff), "BW", m68851 },
3800 {"pbsc", 2, one(0xf085), one(0xffbf), "Bc", m68851 },
3801 {"pbscw", 2, one(0xf085), one(0xffff), "BW", m68851 },
3802 {"pbss", 2, one(0xf084), one(0xffbf), "Bc", m68851 },
3803 {"pbssw", 2, one(0xf084), one(0xffff), "BW", m68851 },
3804 {"pbwc", 2, one(0xf089), one(0xffbf), "Bc", m68851 },
3805 {"pbwcw", 2, one(0xf089), one(0xffff), "BW", m68851 },
3806 {"pbws", 2, one(0xf088), one(0xffbf), "Bc", m68851 },
3807 {"pbwsw", 2, one(0xf088), one(0xffff), "BW", m68851 },
3826 {"pea", 2, one(0044100), one(0177700), "!s", m68000up|mcfisa_a },
3828 {"pflusha", 2, one(0xf518), one(0xfff8), "", m68040up },
3837 {"pflush", 2, one(0xf508), one(0xfff8), "as", m68040up },
3838 {"pflush", 2, one(0xf508), one(0xfff8), "As", m68040up },
3840 {"pflushan", 2, one(0xf510), one(0xfff8), "", m68040up },
3841 {"pflushn", 2, one(0xf500), one(0xfff8), "as", m68040up },
3842 {"pflushn", 2, one(0xf500), one(0xfff8), "As", m68040up },
3860 {"plpar", 2, one(0xf5c8), one(0xfff8), "as", m68060 },
3861 {"plpaw", 2, one(0xf588), one(0xfff8), "as", m68060 },
3883 {"prestore", 2, one(0xf140), one(0xffc0), "<s", m68851 },
3885 {"psave", 2, one(0xf100), one(0xffc0), ">s", m68851 },
3910 {"ptestr", 2, one(0xf568), one(0xfff8), "as", m68040 },
3918 {"ptestw", 2, one(0xf548), one(0xfff8), "as", m68040 },
3984 {"pulse", 2, one(0045314), one(0177777), "", m68060 | mcfisa_a },
3993 {"reset", 2, one(0047160), one(0177777), "", m68000up },
3995 {"rolb", 2, one(0160430), one(0170770), "QdDs", m68000up },
3996 {"rolb", 2, one(0160470), one(0170770), "DdDs", m68000up },
3997 {"rolw", 2, one(0160530), one(0170770), "QdDs", m68000up },
3998 {"rolw", 2, one(0160570), one(0170770), "DdDs", m68000up },
3999 {"rolw", 2, one(0163700), one(0177700), "~s", m68000up },
4000 {"roll", 2, one(0160630), one(0170770), "QdDs", m68000up },
4001 {"roll", 2, one(0160670), one(0170770), "DdDs", m68000up },
4003 {"rorb", 2, one(0160030), one(0170770), "QdDs", m68000up },
4004 {"rorb", 2, one(0160070), one(0170770), "DdDs", m68000up },
4005 {"rorw", 2, one(0160130), one(0170770), "QdDs", m68000up },
4006 {"rorw", 2, one(0160170), one(0170770), "DdDs", m68000up },
4007 {"rorw", 2, one(0163300), one(0177700), "~s", m68000up },
4008 {"rorl", 2, one(0160230), one(0170770), "QdDs", m68000up },
4009 {"rorl", 2, one(0160270), one(0170770), "DdDs", m68000up },
4011 {"roxlb", 2, one(0160420), one(0170770), "QdDs", m68000up },
4012 {"roxlb", 2, one(0160460), one(0170770), "DdDs", m68000up },
4013 {"roxlw", 2, one(0160520), one(0170770), "QdDs", m68000up },
4014 {"roxlw", 2, one(0160560), one(0170770), "DdDs", m68000up },
4015 {"roxlw", 2, one(0162700), one(0177700), "~s", m68000up },
4016 {"roxll", 2, one(0160620), one(0170770), "QdDs", m68000up },
4017 {"roxll", 2, one(0160660), one(0170770), "DdDs", m68000up },
4019 {"roxrb", 2, one(0160020), one(0170770), "QdDs", m68000up },
4020 {"roxrb", 2, one(0160060), one(0170770), "DdDs", m68000up },
4021 {"roxrw", 2, one(0160120), one(0170770), "QdDs", m68000up },
4022 {"roxrw", 2, one(0160160), one(0170770), "DdDs", m68000up },
4023 {"roxrw", 2, one(0162300), one(0177700), "~s", m68000up },
4024 {"roxrl", 2, one(0160220), one(0170770), "QdDs", m68000up },
4025 {"roxrl", 2, one(0160260), one(0170770), "DdDs", m68000up },
4027 {"rtd", 4, one(0047164), one(0177777), "#w", m68010up },
4029 {"rte", 2, one(0047163), one(0177777), "", m68000up | mcfisa_a },
4031 {"rtm", 2, one(0003300), one(0177760), "Rs", m68020 },
4033 {"rtr", 2, one(0047167), one(0177777), "", m68000up },
4035 {"rts", 2, one(0047165), one(0177777), "", m68000up | mcfisa_a },
4037 {"satsl", 2, one(0046200), one(0177770), "Ds", mcfisa_b },
4039 {"sbcd", 2, one(0100400), one(0170770), "DsDd", m68000up },
4040 {"sbcd", 2, one(0100410), one(0170770), "-s-d", m68000up },
4042 {"scc", 2, one(0052300), one(0177700), "$s", m68000up },
4043 {"scc", 2, one(0052300), one(0177700), "Ds", mcfisa_a },
4044 {"scs", 2, one(0052700), one(0177700), "$s", m68000up },
4045 {"scs", 2, one(0052700), one(0177700), "Ds", mcfisa_a },
4046 {"seq", 2, one(0053700), one(0177700), "$s", m68000up },
4047 {"seq", 2, one(0053700), one(0177700), "Ds", mcfisa_a },
4048 {"sf", 2, one(0050700), one(0177700), "$s", m68000up },
4049 {"sf", 2, one(0050700), one(0177700), "Ds", mcfisa_a },
4050 {"sge", 2, one(0056300), one(0177700), "$s", m68000up },
4051 {"sge", 2, one(0056300), one(0177700), "Ds", mcfisa_a },
4052 {"sgt", 2, one(0057300), one(0177700), "$s", m68000up },
4053 {"sgt", 2, one(0057300), one(0177700), "Ds", mcfisa_a },
4054 {"shi", 2, one(0051300), one(0177700), "$s", m68000up },
4055 {"shi", 2, one(0051300), one(0177700), "Ds", mcfisa_a },
4056 {"sle", 2, one(0057700), one(0177700), "$s", m68000up },
4057 {"sle", 2, one(0057700), one(0177700), "Ds", mcfisa_a },
4058 {"sls", 2, one(0051700), one(0177700), "$s", m68000up },
4059 {"sls", 2, one(0051700), one(0177700), "Ds", mcfisa_a },
4060 {"slt", 2, one(0056700), one(0177700), "$s", m68000up },
4061 {"slt", 2, one(0056700), one(0177700), "Ds", mcfisa_a },
4062 {"smi", 2, one(0055700), one(0177700), "$s", m68000up },
4063 {"smi", 2, one(0055700), one(0177700), "Ds", mcfisa_a },
4064 {"sne", 2, one(0053300), one(0177700), "$s", m68000up },
4065 {"sne", 2, one(0053300), one(0177700), "Ds", mcfisa_a },
4066 {"spl", 2, one(0055300), one(0177700), "$s", m68000up },
4067 {"spl", 2, one(0055300), one(0177700), "Ds", mcfisa_a },
4068 {"st", 2, one(0050300), one(0177700), "$s", m68000up },
4069 {"st", 2, one(0050300), one(0177700), "Ds", mcfisa_a },
4070 {"svc", 2, one(0054300), one(0177700), "$s", m68000up },
4071 {"svc", 2, one(0054300), one(0177700), "Ds", mcfisa_a },
4072 {"svs", 2, one(0054700), one(0177700), "$s", m68000up },
4073 {"svs", 2, one(0054700), one(0177700), "Ds", mcfisa_a },
4075 {"stop", 4, one(0047162), one(0177777), "#w", m68000up | mcfisa_a },
4079 {"subal", 2, one(0110700), one(0170700), "*lAd", m68000up | mcfisa_a },
4080 {"subaw", 2, one(0110300), one(0170700), "*wAd", m68000up },
4082 {"subib", 4, one(0002000), one(0177700), "#b$s", m68000up },
4083 {"subiw", 4, one(0002100), one(0177700), "#w$s", m68000up },
4084 {"subil", 6, one(0002200), one(0177700), "#l$s", m68000up },
4085 {"subil", 6, one(0002200), one(0177700), "#lDs", mcfisa_a },
4087 {"subqb", 2, one(0050400), one(0170700), "Qd%s", m68000up },
4088 {"subqw", 2, one(0050500), one(0170700), "Qd%s", m68000up },
4089 {"subql", 2, one(0050600), one(0170700), "Qd%s", m68000up | mcfisa_a },
4092 {"subb", 2, one(0050400), one(0170700), "Qd%s", m68000up },
4093 {"subb", 4, one(0002000), one(0177700), "#b$s", m68000up },
4094 {"subb", 2, one(0110000), one(0170700), ";bDd", m68000up },
4095 {"subb", 2, one(0110400), one(0170700), "Dd~s", m68000up },
4096 {"subw", 2, one(0050500), one(0170700), "Qd%s", m68000up },
4097 {"subw", 4, one(0002100), one(0177700), "#w$s", m68000up },
4098 {"subw", 2, one(0110300), one(0170700), "*wAd", m68000up },
4099 {"subw", 2, one(0110100), one(0170700), "*wDd", m68000up },
4100 {"subw", 2, one(0110500), one(0170700), "Dd~s", m68000up },
4101 {"subl", 2, one(0050600), one(0170700), "Qd%s", m68000up | mcfisa_a },
4102 {"subl", 6, one(0002200), one(0177700), "#l$s", m68000up },
4103 {"subl", 6, one(0002200), one(0177700), "#lDs", mcfisa_a },
4104 {"subl", 2, one(0110700), one(0170700), "*lAd", m68000up | mcfisa_a },
4105 {"subl", 2, one(0110200), one(0170700), "*lDd", m68000up | mcfisa_a },
4106 {"subl", 2, one(0110600), one(0170700), "Dd~s", m68000up | mcfisa_a },
4108 {"subxb", 2, one(0110400), one(0170770), "DsDd", m68000up },
4109 {"subxb", 2, one(0110410), one(0170770), "-s-d", m68000up },
4110 {"subxw", 2, one(0110500), one(0170770), "DsDd", m68000up },
4111 {"subxw", 2, one(0110510), one(0170770), "-s-d", m68000up },
4112 {"subxl", 2, one(0110600), one(0170770), "DsDd", m68000up | mcfisa_a },
4113 {"subxl", 2, one(0110610), one(0170770), "-s-d", m68000up },
4115 {"swap", 2, one(0044100), one(0177770), "Ds", m68000up | mcfisa_a },
4123 {"swbeg", 4, one(0045374), one(0177777), "#w", m68000up | mcfisa_a },
4124 {"swbegl", 6, one(0045375), one(0177777), "#l", m68000up | mcfisa_a },
4126 {"tas", 2, one(0045300), one(0177700), "$s", m68000up | mcfisa_b},
4140 {"trap", 2, one(0047100), one(0177760), "Ts", m68000up | mcfisa_a },
4142 {"trapcc", 2, one(0052374), one(0177777), "", m68020up | cpu32 },
4143 {"trapcs", 2, one(0052774), one(0177777), "", m68020up | cpu32 },
4144 {"trapeq", 2, one(0053774), one(0177777), "", m68020up | cpu32 },
4145 {"trapf", 2, one(0050774), one(0177777), "", m68020up | cpu32 | mcfisa_a },
4146 {"trapge", 2, one(0056374), one(0177777), "", m68020up | cpu32 },
4147 {"trapgt", 2, one(0057374), one(0177777), "", m68020up | cpu32 },
4148 {"traphi", 2, one(0051374), one(0177777), "", m68020up | cpu32 },
4149 {"traple", 2, one(0057774), one(0177777), "", m68020up | cpu32 },
4150 {"trapls", 2, one(0051774), one(0177777), "", m68020up | cpu32 },
4151 {"traplt", 2, one(0056774), one(0177777), "", m68020up | cpu32 },
4152 {"trapmi", 2, one(0055774), one(0177777), "", m68020up | cpu32 },
4153 {"trapne", 2, one(0053374), one(0177777), "", m68020up | cpu32 },
4154 {"trappl", 2, one(0055374), one(0177777), "", m68020up | cpu32 },
4155 {"trapt", 2, one(0050374), one(0177777), "", m68020up | cpu32 },
4156 {"trapvc", 2, one(0054374), one(0177777), "", m68020up | cpu32 },
4157 {"trapvs", 2, one(0054774), one(0177777), "", m68020up | cpu32 },
4159 {"trapccw", 4, one(0052372), one(0177777), "#w", m68020up|cpu32 },
4160 {"trapcsw", 4, one(0052772), one(0177777), "#w", m68020up|cpu32 },
4161 {"trapeqw", 4, one(0053772), one(0177777), "#w", m68020up|cpu32 },
4162 {"trapfw", 4, one(0050772), one(0177777), "#w", m68020up|cpu32|mcfisa_a},
4163 {"trapgew", 4, one(0056372), one(0177777), "#w", m68020up|cpu32 },
4164 {"trapgtw", 4, one(0057372), one(0177777), "#w", m68020up|cpu32 },
4165 {"traphiw", 4, one(0051372), one(0177777), "#w", m68020up|cpu32 },
4166 {"traplew", 4, one(0057772), one(0177777), "#w", m68020up|cpu32 },
4167 {"traplsw", 4, one(0051772), one(0177777), "#w", m68020up|cpu32 },
4168 {"trapltw", 4, one(0056772), one(0177777), "#w", m68020up|cpu32 },
4169 {"trapmiw", 4, one(0055772), one(0177777), "#w", m68020up|cpu32 },
4170 {"trapnew", 4, one(0053372), one(0177777), "#w", m68020up|cpu32 },
4171 {"trapplw", 4, one(0055372), one(0177777), "#w", m68020up|cpu32 },
4172 {"traptw", 4, one(0050372), one(0177777), "#w", m68020up|cpu32 },
4173 {"trapvcw", 4, one(0054372), one(0177777), "#w", m68020up|cpu32 },
4174 {"trapvsw", 4, one(0054772), one(0177777), "#w", m68020up|cpu32 },
4176 {"trapccl", 6, one(0052373), one(0177777), "#l", m68020up|cpu32 },
4177 {"trapcsl", 6, one(0052773), one(0177777), "#l", m68020up|cpu32 },
4178 {"trapeql", 6, one(0053773), one(0177777), "#l", m68020up|cpu32 },
4179 {"trapfl", 6, one(0050773), one(0177777), "#l", m68020up|cpu32|mcfisa_a},
4180 {"trapgel", 6, one(0056373), one(0177777), "#l", m68020up|cpu32 },
4181 {"trapgtl", 6, one(0057373), one(0177777), "#l", m68020up|cpu32 },
4182 {"traphil", 6, one(0051373), one(0177777), "#l", m68020up|cpu32 },
4183 {"traplel", 6, one(0057773), one(0177777), "#l", m68020up|cpu32 },
4184 {"traplsl", 6, one(0051773), one(0177777), "#l", m68020up|cpu32 },
4185 {"trapltl", 6, one(0056773), one(0177777), "#l", m68020up|cpu32 },
4186 {"trapmil", 6, one(0055773), one(0177777), "#l", m68020up|cpu32 },
4187 {"trapnel", 6, one(0053373), one(0177777), "#l", m68020up|cpu32 },
4188 {"trappll", 6, one(0055373), one(0177777), "#l", m68020up|cpu32 },
4189 {"traptl", 6, one(0050373), one(0177777), "#l", m68020up|cpu32 },
4190 {"trapvcl", 6, one(0054373), one(0177777), "#l", m68020up|cpu32 },
4191 {"trapvsl", 6, one(0054773), one(0177777), "#l", m68020up|cpu32 },
4193 {"trapv", 2, one(0047166), one(0177777), "", m68000up },
4195 {"tstb", 2, one(0045000), one(0177700), ";b", m68020up|cpu32|mcfisa_a },
4196 {"tstb", 2, one(0045000), one(0177700), "$b", m68000up },
4197 {"tstw", 2, one(0045100), one(0177700), "*w", m68020up|cpu32|mcfisa_a },
4198 {"tstw", 2, one(0045100), one(0177700), "$w", m68000up },
4199 {"tstl", 2, one(0045200), one(0177700), "*l", m68020up|cpu32|mcfisa_a },
4200 {"tstl", 2, one(0045200), one(0177700), "$l", m68000up },
4202 {"unlk", 2, one(0047130), one(0177770), "As", m68000up | mcfisa_a },
4204 {"unpk", 4, one(0100600), one(0170770), "DsDd#w", m68020up },
4205 {"unpk", 4, one(0100610), one(0170770), "-s-d#w", m68020up },
4207 {"wddatab", 2, one(0175400), one(0177700), "~s", mcfisa_a },
4208 {"wddataw", 2, one(0175500), one(0177700), "~s", mcfisa_a },
4209 {"wddatal", 2, one(0175600), one(0177700), "~s", mcfisa_a },
4217 /* These aliases used to be in the above table, each one duplicating
4431 { "tdivul", "divul", }, /* For m68k-svr4. */
4470 /* **** End of m68k-opc.c */
4471 /* **** floatformat.c from sourceware.org CVS 2005-08-14. */
4490 /* This is needed to pick up the NAN macro on some systems. */
4521 going to bother with trying to muck around with whether it is defined in
4571 /* In the i387 double-extended format, if the exponent is all ones, in floatformat_i387_ext_is_valid()
4578 exponent = get_field (ufrom, fmt->byteorder, fmt->totalsize, in floatformat_i387_ext_is_valid()
4579 fmt->exp_start, fmt->exp_len); in floatformat_i387_ext_is_valid()
4580 int_bit = get_field (ufrom, fmt->byteorder, fmt->totalsize, in floatformat_i387_ext_is_valid()
4581 fmt->man_start, 1); in floatformat_i387_ext_is_valid()
4598 /* Note that the bits from 16 to 31 are unused. */
4606 /* Note that the bits from 0 to 15 are unused. */
4630 /* Bits 1 to 16 are unused. */
4638 /* Bits 1 to 16 are unused. */
4686 cur_byte = (total_len / FLOATFORMAT_CHAR_BIT) - cur_byte - 1; in get_field()
4688 ((start + len) % FLOATFORMAT_CHAR_BIT) - FLOATFORMAT_CHAR_BIT; in get_field()
4689 result = *(data + cur_byte) >> (-cur_bitshift); in get_field()
4694 --cur_byte; in get_field()
4699 if (len - cur_bitshift < FLOATFORMAT_CHAR_BIT) in get_field()
4704 & ((1 << (len - cur_bitshift)) - 1)) in get_field()
4712 --cur_byte; in get_field()
4717 /* Convert from FMT to a double.
4719 Store the double in *TO. */
4723 const char *from, double *to) in floatformat_to_double() argument
4733 exponent = get_field (ufrom, fmt->byteorder, fmt->totalsize, in floatformat_to_double()
4734 fmt->exp_start, fmt->exp_len); in floatformat_to_double()
4736 /* If the exponent indicates a NaN, we don't have information to in floatformat_to_double()
4737 decide what to do. So we handle it like IEEE, except that we in floatformat_to_double()
4738 don't try to preserve the type of NaN. FIXME. */ in floatformat_to_double()
4739 if ((unsigned long) exponent == fmt->exp_nan) in floatformat_to_double()
4743 mant_off = fmt->man_start; in floatformat_to_double()
4744 mant_bits_left = fmt->man_len; in floatformat_to_double()
4750 if (get_field (ufrom, fmt->byteorder, fmt->totalsize, in floatformat_to_double()
4759 mant_bits_left -= mant_bits; in floatformat_to_double()
4764 silenced due to a bug in GCC (PR preprocessor/11931). The in floatformat_to_double()
4765 preprocessor fails to recognise the __extension__ keyword in in floatformat_to_double()
4768 compiling with -pedantic. */ in floatformat_to_double()
4774 if (get_field (ufrom, fmt->byteorder, fmt->totalsize, fmt->sign_start, 1)) in floatformat_to_double()
4775 dto = -dto; in floatformat_to_double()
4777 *to = dto; in floatformat_to_double()
4782 mant_bits_left = fmt->man_len; in floatformat_to_double()
4783 mant_off = fmt->man_start; in floatformat_to_double()
4786 special_exponent = exponent == 0 || (unsigned long) exponent == fmt->exp_nan; in floatformat_to_double()
4790 exponent -= fmt->exp_bias; in floatformat_to_double()
4796 increment the exponent by one to account for the integer bit. */ in floatformat_to_double()
4800 if (fmt->intbit == floatformat_intbit_no) in floatformat_to_double()
4810 mant = get_field (ufrom, fmt->byteorder, fmt->totalsize, in floatformat_to_double()
4814 non-IEEE formats? */ in floatformat_to_double()
4817 (- fmt->exp_bias in floatformat_to_double()
4818 - mant_bits in floatformat_to_double()
4819 - (mant_off - fmt->man_start) in floatformat_to_double()
4822 dto += ldexp ((double)mant, exponent - mant_bits); in floatformat_to_double()
4824 exponent -= mant_bits; in floatformat_to_double()
4826 mant_bits_left -= mant_bits; in floatformat_to_double()
4830 if (get_field (ufrom, fmt->byteorder, fmt->totalsize, fmt->sign_start, 1)) in floatformat_to_double()
4831 dto = -dto; in floatformat_to_double()
4832 *to = dto; in floatformat_to_double()
4854 cur_byte = (total_len / FLOATFORMAT_CHAR_BIT) - cur_byte - 1; in put_field()
4856 ((start + len) % FLOATFORMAT_CHAR_BIT) - FLOATFORMAT_CHAR_BIT; in put_field()
4858 ~(((1 << ((start + len) % FLOATFORMAT_CHAR_BIT)) - 1) << (-cur_bitshift)); in put_field()
4860 (stuff_to_put & ((1 << FLOATFORMAT_CHAR_BIT) - 1)) << (-cur_bitshift); in put_field()
4865 --cur_byte; in put_field()
4870 if (len - cur_bitshift < FLOATFORMAT_CHAR_BIT) in put_field()
4874 ~((1 << (len - cur_bitshift)) - 1); in put_field()
4879 & ((1 << FLOATFORMAT_CHAR_BIT) - 1)); in put_field()
4884 --cur_byte; in put_field()
4888 /* The converse: convert the double *FROM to an extended float
4889 and store where TO points. Neither FROM nor TO have any alignment
4894 const double *from, char *to) in floatformat_from_double() argument
4901 unsigned char *uto = (unsigned char *)to; in floatformat_from_double()
4904 memset (uto, 0, fmt->totalsize / FLOATFORMAT_CHAR_BIT); in floatformat_from_double()
4909 put_field (uto, fmt->byteorder, fmt->totalsize, fmt->sign_start, 1, 1); in floatformat_from_double()
4910 dfrom = -dfrom; in floatformat_from_double()
4922 put_field (uto, fmt->byteorder, fmt->totalsize, fmt->exp_start, in floatformat_from_double()
4923 fmt->exp_len, fmt->exp_nan); in floatformat_from_double()
4925 put_field (uto, fmt->byteorder, fmt->totalsize, fmt->man_start, in floatformat_from_double()
4934 put_field (uto, fmt->byteorder, fmt->totalsize, fmt->exp_start, in floatformat_from_double()
4935 fmt->exp_len, fmt->exp_nan); in floatformat_from_double()
4940 if (exponent + fmt->exp_bias - 1 > 0) in floatformat_from_double()
4941 put_field (uto, fmt->byteorder, fmt->totalsize, fmt->exp_start, in floatformat_from_double()
4942 fmt->exp_len, exponent + fmt->exp_bias - 1); in floatformat_from_double()
4946 non-IEEE formats? */ in floatformat_from_double()
4947 put_field (uto, fmt->byteorder, fmt->totalsize, fmt->exp_start, in floatformat_from_double()
4948 fmt->exp_len, 0); in floatformat_from_double()
4949 mant = ldexp (mant, exponent + fmt->exp_bias - 1); in floatformat_from_double()
4952 mant_bits_left = fmt->man_len; in floatformat_from_double()
4953 mant_off = fmt->man_start; in floatformat_from_double()
4961 mant -= mant_long; in floatformat_from_double()
4964 denormalized number, then we need to discard it. */ in floatformat_from_double()
4965 if ((unsigned int) mant_bits_left == fmt->man_len in floatformat_from_double()
4966 && fmt->intbit == floatformat_intbit_no in floatformat_from_double()
4967 && exponent + fmt->exp_bias - 1 > 0) in floatformat_from_double()
4970 mant_bits -= 1; in floatformat_from_double()
4975 mant_long. Move them to the least significant. */ in floatformat_from_double()
4976 mant_long >>= 32 - mant_bits; in floatformat_from_double()
4979 put_field (uto, fmt->byteorder, fmt->totalsize, in floatformat_from_double()
4982 mant_bits_left -= mant_bits; in floatformat_from_double()
4986 /* Return non-zero iff the data at FROM is a valid number in format FMT. */
4991 return fmt->is_valid (fmt, from); in floatformat_is_valid()
4997 /* This is to be run on a host which uses IEEE floating point. */
5009 printf ("Differ(to): %.20g -> %.20g\n", n, result); in ieee_test()
5016 printf ("Differ(from): %.20g -> %.20g\n", n, result); in ieee_test()
5025 printf ("Differ(to+from): %.20g -> %.20g\n", n, result); in ieee_test()
5030 /* This is to be run on a host which uses 68881 format. */ in ieee_test()
5047 ieee_test (-512.0); in main()
5048 ieee_test (-0.004321); in main()
5049 ieee_test (1.2E-70); in main()
5050 ieee_test (1.2E-316); in main()
5051 ieee_test (4.9406564584124654E-324); in main()
5052 ieee_test (- 4.9406564584124654E-324); in main()
5053 ieee_test (- 0.0); in main()
5054 ieee_test (- INFINITY); in main()
5055 ieee_test (- NAN); in main()