m68k-opcode.h 85 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678
  1. /* Opcode table for m68000/m68020 and m68881.
  2. Copyright (C) 1989, Free Software Foundation.
  3. This file is part of GDB, the GNU Debugger and GAS, the GNU Assembler.
  4. Both GDB and GAS are free software; you can redistribute and/or modify
  5. it under the terms of the GNU General Public License as published by
  6. the Free Software Foundation; either version 1, or (at your option)
  7. any later version.
  8. GDB and GAS are distributed in the hope that it will be useful,
  9. but WITHOUT ANY WARRANTY; without even the implied warranty of
  10. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  11. GNU General Public License for more details.
  12. You should have received a copy of the GNU General Public License
  13. along with GDB or GAS; see the file COPYING. If not, write to
  14. the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
  15. struct m68k_opcode
  16. {
  17. char *name;
  18. unsigned long opcode;
  19. unsigned long match;
  20. char *args;
  21. };
  22. /* We store four bytes of opcode for all opcodes because that
  23. is the most any of them need. The actual length of an instruction
  24. is always at least 2 bytes, and is as much longer as necessary to
  25. hold the operands it has.
  26. The match component is a mask saying which bits must match
  27. particular opcode in order for an instruction to be an instance
  28. of that opcode.
  29. The args component is a string containing two characters
  30. for each operand of the instruction. The first specifies
  31. the kind of operand; the second, the place it is stored. */
  32. /* Kinds of operands:
  33. D data register only. Stored as 3 bits.
  34. A address register only. Stored as 3 bits.
  35. R either kind of register. Stored as 4 bits.
  36. F floating point coprocessor register only. Stored as 3 bits.
  37. O an offset (or width): immediate data 0-31 or data register.
  38. Stored as 6 bits in special format for BF... insns.
  39. + autoincrement only. Stored as 3 bits (number of the address register).
  40. - autodecrement only. Stored as 3 bits (number of the address register).
  41. Q quick immediate data. Stored as 3 bits.
  42. This matches an immediate operand only when value is in range 1 .. 8.
  43. M moveq immediate data. Stored as 8 bits.
  44. This matches an immediate operand only when value is in range -128..127
  45. T trap vector immediate data. Stored as 4 bits.
  46. k K-factor for fmove.p instruction. Stored as a 7-bit constant or
  47. a three bit register offset, depending on the field type.
  48. # immediate data. Stored in special places (b, w or l)
  49. which say how many bits to store.
  50. ^ immediate data for floating point instructions. Special places
  51. are offset by 2 bytes from '#'...
  52. B pc-relative address, converted to an offset
  53. that is treated as immediate data.
  54. d displacement and register. Stores the register as 3 bits
  55. and stores the displacement in the entire second word.
  56. C the CCR. No need to store it; this is just for filtering validity.
  57. S the SR. No need to store, just as with CCR.
  58. U the USP. No need to store, just as with CCR.
  59. I Coprocessor ID. Not printed if 1. The Coprocessor ID is always
  60. extracted from the 'd' field of word one, which means that an extended
  61. coprocessor opcode can be skipped using the 'i' place, if needed.
  62. s System Control register for the floating point coprocessor.
  63. S List of system control registers for floating point coprocessor.
  64. J Misc register for movec instruction, stored in 'j' format.
  65. Possible values:
  66. 000 SFC Source Function Code reg
  67. 001 DFC Data Function Code reg
  68. 002 CACR Cache Control Register
  69. 800 USP User Stack Pointer
  70. 801 VBR Vector Base reg
  71. 802 CAAR Cache Address Register
  72. 803 MSP Master Stack Pointer
  73. 804 ISP Interrupt Stack Pointer
  74. L Register list of the type d0-d7/a0-a7 etc.
  75. (New! Improved! Can also hold fp0-fp7, as well!)
  76. The assembler tries to see if the registers match the insn by
  77. looking at where the insn wants them stored.
  78. l Register list like L, but with all the bits reversed.
  79. Used for going the other way. . .
  80. They are all stored as 6 bits using an address mode and a register number;
  81. they differ in which addressing modes they match.
  82. * all (modes 0-6,7.*)
  83. ~ alterable memory (modes 2-6,7.0,7.1)(not 0,1,7.~)
  84. % alterable (modes 0-6,7.0,7.1)(not 7.~)
  85. ; data (modes 0,2-6,7.*)(not 1)
  86. @ data, but not immediate (modes 0,2-6,7.? ? ?)(not 1,7.?) This may really be ;, the 68020 book says it is
  87. ! control (modes 2,5,6,7.*-)(not 0,1,3,4,7.4)
  88. & alterable control (modes 2,5,6,7.0,7.1)(not 0,1,7.? ? ?)
  89. $ alterable data (modes 0,2-6,7.0,7.1)(not 1,7.~)
  90. ? alterable control, or data register (modes 0,2,5,6,7.0,7.1)(not 1,3,4,7.~)
  91. / control, or data register (modes 0,2,5,6,7.0,7.1,7.2,7.3)(not 1,3,4,7.4)
  92. */
  93. /* JF: for the 68851 */
  94. /*
  95. I didn't use much imagination in choosing the
  96. following codes, so many of them aren't very
  97. mnemonic. -rab
  98. P pmmu register
  99. Possible values:
  100. 000 TC Translation Control reg
  101. 100 CAL Current Access Level
  102. 101 VAL Validate Access Level
  103. 110 SCC Stack Change Control
  104. 111 AC Access Control
  105. W wide pmmu registers
  106. Possible values:
  107. 001 DRP Dma Root Pointer
  108. 010 SRP Supervisor Root Pointer
  109. 011 CRP Cpu Root Pointer
  110. f function code register
  111. 0 SFC
  112. 1 DFC
  113. V VAL register only
  114. X BADx, BACx
  115. 100 BAD Breakpoint Acknowledge Data
  116. 101 BAC Breakpoint Acknowledge Control
  117. Y PSR
  118. Z PCSR
  119. | memory (modes 2-6, 7.*)
  120. */
  121. /* Places to put an operand, for non-general operands:
  122. s source, low bits of first word.
  123. d dest, shifted 9 in first word
  124. 1 second word, shifted 12
  125. 2 second word, shifted 6
  126. 3 second word, shifted 0
  127. 4 third word, shifted 12
  128. 5 third word, shifted 6
  129. 6 third word, shifted 0
  130. 7 second word, shifted 7
  131. 8 second word, shifted 10
  132. D store in both place 1 and place 3; for divul and divsl.
  133. b second word, low byte
  134. w second word (entire)
  135. l second and third word (entire)
  136. g branch offset for bra and similar instructions.
  137. The place to store depends on the magnitude of offset.
  138. t store in both place 7 and place 8; for floating point operations
  139. c branch offset for cpBcc operations.
  140. The place to store is word two if bit six of word one is zero,
  141. and words two and three if bit six of word one is one.
  142. i Increment by two, to skip over coprocessor extended operands. Only
  143. works with the 'I' format.
  144. k Dynamic K-factor field. Bits 6-4 of word 2, used as a register number.
  145. Also used for dynamic fmovem instruction.
  146. C floating point coprocessor constant - 7 bits. Also used for static
  147. K-factors...
  148. j Movec register #, stored in 12 low bits of second word.
  149. Places to put operand, for general operands:
  150. d destination, shifted 6 bits in first word
  151. b source, at low bit of first word, and immediate uses one byte
  152. w source, at low bit of first word, and immediate uses two bytes
  153. l source, at low bit of first word, and immediate uses four bytes
  154. s source, at low bit of first word.
  155. Used sometimes in contexts where immediate is not allowed anyway.
  156. f single precision float, low bit of 1st word, immediate uses 4 bytes
  157. F double precision float, low bit of 1st word, immediate uses 8 bytes
  158. x extended precision float, low bit of 1st word, immediate uses 12 bytes
  159. p packed float, low bit of 1st word, immediate uses 12 bytes
  160. */
  161. #define one(x) ((x) << 16)
  162. #define two(x, y) (((x) << 16) + y)
  163. /*
  164. *** DANGER WILL ROBINSON ***
  165. The assembler requires that all instances of the same mnemonic must be
  166. consecutive. If they aren't, the assembler will bomb at runtime
  167. */
  168. struct m68k_opcode m68k_opcodes[] =
  169. {
  170. {"abcd", one(0140400), one(0170770), "DsDd"},
  171. {"abcd", one(0140410), one(0170770), "-s-d"},
  172. /* Add instructions */
  173. {"addal", one(0150700), one(0170700), "*lAd"},
  174. {"addaw", one(0150300), one(0170700), "*wAd"},
  175. {"addib", one(0003000), one(0177700), "#b$b"},
  176. {"addil", one(0003200), one(0177700), "#l$l"},
  177. {"addiw", one(0003100), one(0177700), "#w$w"},
  178. {"addqb", one(0050000), one(0170700), "Qd$b"},
  179. {"addql", one(0050200), one(0170700), "Qd%l"},
  180. {"addqw", one(0050100), one(0170700), "Qd%w"},
  181. {"addb", one(0050000), one(0170700), "Qd$b"}, /* addq written as add */
  182. {"addb", one(0003000), one(0177700), "#b$b"}, /* addi written as add */
  183. {"addb", one(0150000), one(0170700), ";bDd"}, /* addb <ea>, Dd */
  184. {"addb", one(0150400), one(0170700), "Dd~b"}, /* addb Dd, <ea> */
  185. {"addw", one(0050100), one(0170700), "Qd%w"}, /* addq written as add */
  186. {"addw", one(0003100), one(0177700), "#w$w"}, /* addi written as add */
  187. {"addw", one(0150300), one(0170700), "*wAd"}, /* adda written as add */
  188. {"addw", one(0150100), one(0170700), "*wDd"}, /* addw <ea>, Dd */
  189. {"addw", one(0150500), one(0170700), "Dd~w"}, /* addw Dd, <ea> */
  190. {"addl", one(0050200), one(0170700), "Qd%l"}, /* addq written as add */
  191. {"addl", one(0003200), one(0177700), "#l$l"}, /* addi written as add */
  192. {"addl", one(0150700), one(0170700), "*lAd"}, /* adda written as add */
  193. {"addl", one(0150200), one(0170700), "*lDd"}, /* addl <ea>, Dd */
  194. {"addl", one(0150600), one(0170700), "Dd~l"}, /* addl Dd, <ea> */
  195. {"addxb", one(0150400), one(0170770), "DsDd"},
  196. {"addxb", one(0150410), one(0170770), "-s-d"},
  197. {"addxl", one(0150600), one(0170770), "DsDd"},
  198. {"addxl", one(0150610), one(0170770), "-s-d"},
  199. {"addxw", one(0150500), one(0170770), "DsDd"},
  200. {"addxw", one(0150510), one(0170770), "-s-d"},
  201. {"andib", one(0001000), one(0177700), "#b$b"},
  202. {"andib", one(0001074), one(0177777), "#bCb"}, /* andi to ccr */
  203. {"andiw", one(0001100), one(0177700), "#w$w"},
  204. {"andiw", one(0001174), one(0177777), "#wSw"}, /* andi to sr */
  205. {"andil", one(0001200), one(0177700), "#l$l"},
  206. {"andb", one(0001000), one(0177700), "#b$b"}, /* andi written as or */
  207. {"andb", one(0001074), one(0177777), "#bCb"}, /* andi to ccr */
  208. {"andb", one(0140000), one(0170700), ";bDd"}, /* memory to register */
  209. {"andb", one(0140400), one(0170700), "Dd~b"}, /* register to memory */
  210. {"andw", one(0001100), one(0177700), "#w$w"}, /* andi written as or */
  211. {"andw", one(0001174), one(0177777), "#wSw"}, /* andi to sr */
  212. {"andw", one(0140100), one(0170700), ";wDd"}, /* memory to register */
  213. {"andw", one(0140500), one(0170700), "Dd~w"}, /* register to memory */
  214. {"andl", one(0001200), one(0177700), "#l$l"}, /* andi written as or */
  215. {"andl", one(0140200), one(0170700), ";lDd"}, /* memory to register */
  216. {"andl", one(0140600), one(0170700), "Dd~l"}, /* register to memory */
  217. {"aslb", one(0160400), one(0170770), "QdDs"},
  218. {"aslb", one(0160440), one(0170770), "DdDs"},
  219. {"asll", one(0160600), one(0170770), "QdDs"},
  220. {"asll", one(0160640), one(0170770), "DdDs"},
  221. {"aslw", one(0160500), one(0170770), "QdDs"},
  222. {"aslw", one(0160540), one(0170770), "DdDs"},
  223. {"aslw", one(0160700), one(0177700), "~s"}, /* Shift memory */
  224. {"asrb", one(0160000), one(0170770), "QdDs"},
  225. {"asrb", one(0160040), one(0170770), "DdDs"},
  226. {"asrl", one(0160200), one(0170770), "QdDs"},
  227. {"asrl", one(0160240), one(0170770), "DdDs"},
  228. {"asrw", one(0160100), one(0170770), "QdDs"},
  229. {"asrw", one(0160140), one(0170770), "DdDs"},
  230. {"asrw", one(0160300), one(0177700), "~s"}, /* Shift memory */
  231. {"bhi", one(0061000), one(0177400), "Bg"},
  232. {"bls", one(0061400), one(0177400), "Bg"},
  233. {"bcc", one(0062000), one(0177400), "Bg"},
  234. {"bcs", one(0062400), one(0177400), "Bg"},
  235. {"bne", one(0063000), one(0177400), "Bg"},
  236. {"beq", one(0063400), one(0177400), "Bg"},
  237. {"bvc", one(0064000), one(0177400), "Bg"},
  238. {"bvs", one(0064400), one(0177400), "Bg"},
  239. {"bpl", one(0065000), one(0177400), "Bg"},
  240. {"bmi", one(0065400), one(0177400), "Bg"},
  241. {"bge", one(0066000), one(0177400), "Bg"},
  242. {"blt", one(0066400), one(0177400), "Bg"},
  243. {"bgt", one(0067000), one(0177400), "Bg"},
  244. {"ble", one(0067400), one(0177400), "Bg"},
  245. {"bchg", one(0000500), one(0170700), "Dd$s"},
  246. {"bchg", one(0004100), one(0177700), "#b$s"},
  247. {"bclr", one(0000600), one(0170700), "Dd$s"},
  248. {"bclr", one(0004200), one(0177700), "#b$s"},
  249. {"bfchg", two(0165300, 0), two(0177700, 0170000), "?sO2O3"},
  250. {"bfclr", two(0166300, 0), two(0177700, 0170000), "?sO2O3"},
  251. {"bfexts", two(0165700, 0), two(0177700, 0100000), "/sO2O3D1"},
  252. {"bfextu", two(0164700, 0), two(0177700, 0100000), "/sO2O3D1"},
  253. {"bfffo", two(0166700, 0), two(0177700, 0100000), "/sO2O3D1"},
  254. {"bfins", two(0167700, 0), two(0177700, 0100000), "D1?sO2O3"},
  255. {"bfset", two(0167300, 0), two(0177700, 0170000), "?sO2O3"},
  256. {"bftst", two(0164300, 0), two(0177700, 0170000), "/sO2O3"},
  257. {"bset", one(0000700), one(0170700), "Dd$s"},
  258. {"bset", one(0004300), one(0177700), "#b$s"},
  259. {"btst", one(0000400), one(0170700), "Dd@s"},
  260. {"btst", one(0004000), one(0177700), "#b@s"},
  261. {"bkpt", one(0044110), one(0177770), "Qs"},
  262. {"bra", one(0060000), one(0177400), "Bg"},
  263. {"bras", one(0060000), one(0177400), "Bg"},
  264. {"bsr", one(0060400), one(0177400), "Bg"},
  265. {"bsrs", one(0060400), one(0177400), "Bg"},
  266. {"callm", one(0003300), one(0177700), "#b!s"},
  267. {"cas2l", two(0007374, 0), two(0177777, 0107070), "D3D6D2D5R1R4"}, /* JF FOO this is really a 3 word ins */
  268. {"cas2w", two(0006374, 0), two(0177777, 0107070), "D3D6D2D5R1R4"}, /* JF ditto */
  269. {"casb", two(0005300, 0), two(0177700, 0177070), "D3D2~s"},
  270. {"casl", two(0007300, 0), two(0177700, 0177070), "D3D2~s"},
  271. {"casw", two(0006300, 0), two(0177700, 0177070), "D3D2~s"},
  272. /* {"chk", one(0040600), one(0170700), ";wDd"}, JF FOO this looks wrong */
  273. {"chk2b", two(0000300, 0004000), two(0177700, 07777), "!sR1"},
  274. {"chk2l", two(0002300, 0004000), two(0177700, 07777), "!sR1"},
  275. {"chk2w", two(0001300, 0004000), two(0177700, 07777), "!sR1"},
  276. {"chkl", one(0040400), one(0170700), ";lDd"},
  277. {"chkw", one(0040600), one(0170700), ";wDd"},
  278. {"clrb", one(0041000), one(0177700), "$s"},
  279. {"clrl", one(0041200), one(0177700), "$s"},
  280. {"clrw", one(0041100), one(0177700), "$s"},
  281. {"cmp2b", two(0000300, 0), two(0177700, 07777), "!sR1"},
  282. {"cmp2l", two(0002300, 0), two(0177700, 07777), "!sR1"},
  283. {"cmp2w", two(0001300, 0), two(0177700, 07777), "!sR1"},
  284. {"cmpal", one(0130700), one(0170700), "*lAd"},
  285. {"cmpaw", one(0130300), one(0170700), "*wAd"},
  286. {"cmpib", one(0006000), one(0177700), "#b;b"},
  287. {"cmpil", one(0006200), one(0177700), "#l;l"},
  288. {"cmpiw", one(0006100), one(0177700), "#w;w"},
  289. {"cmpb", one(0006000), one(0177700), "#b;b"}, /* cmpi written as cmp */
  290. {"cmpb", one(0130000), one(0170700), ";bDd"},
  291. {"cmpw", one(0006100), one(0177700), "#w;w"},
  292. {"cmpw", one(0130100), one(0170700), "*wDd"},
  293. {"cmpw", one(0130300), one(0170700), "*wAd"}, /* cmpa written as cmp */
  294. {"cmpl", one(0006200), one(0177700), "#l;l"},
  295. {"cmpl", one(0130200), one(0170700), "*lDd"},
  296. {"cmpl", one(0130700), one(0170700), "*lAd"},
  297. {"cmpmb", one(0130410), one(0170770), "+s+d"},
  298. {"cmpml", one(0130610), one(0170770), "+s+d"},
  299. {"cmpmw", one(0130510), one(0170770), "+s+d"},
  300. {"dbcc", one(0052310), one(0177770), "DsBw"},
  301. {"dbcs", one(0052710), one(0177770), "DsBw"},
  302. {"dbeq", one(0053710), one(0177770), "DsBw"},
  303. {"dbf", one(0050710), one(0177770), "DsBw"},
  304. {"dbge", one(0056310), one(0177770), "DsBw"},
  305. {"dbgt", one(0057310), one(0177770), "DsBw"},
  306. {"dbhi", one(0051310), one(0177770), "DsBw"},
  307. {"dble", one(0057710), one(0177770), "DsBw"},
  308. {"dbls", one(0051710), one(0177770), "DsBw"},
  309. {"dblt", one(0056710), one(0177770), "DsBw"},
  310. {"dbmi", one(0055710), one(0177770), "DsBw"},
  311. {"dbne", one(0053310), one(0177770), "DsBw"},
  312. {"dbpl", one(0055310), one(0177770), "DsBw"},
  313. {"dbra", one(0050710), one(0177770), "DsBw"},
  314. {"dbt", one(0050310), one(0177770), "DsBw"},
  315. {"dbvc", one(0054310), one(0177770), "DsBw"},
  316. {"dbvs", one(0054710), one(0177770), "DsBw"},
  317. {"divsl", two(0046100, 0006000), two(0177700, 0107770), ";lD3D1"},
  318. {"divsl", two(0046100, 0004000), two(0177700, 0107770), ";lDD"},
  319. {"divsll", two(0046100, 0004000), two(0177700, 0107770), ";lD3D1"},
  320. {"divsw", one(0100700), one(0170700), ";wDd"},
  321. {"divs", one(0100700), one(0170700), ";wDd"},
  322. {"divul", two(0046100, 0002000), two(0177700, 0107770), ";lD3D1"},
  323. {"divul", two(0046100, 0000000), two(0177700, 0107770), ";lDD"},
  324. {"divull", two(0046100, 0000000), two(0177700, 0107770), ";lD3D1"},
  325. {"divuw", one(0100300), one(0170700), ";wDd"},
  326. {"divu", one(0100300), one(0170700), ";wDd"},
  327. {"eorb", one(0005000), one(0177700), "#b$s"}, /* eori written as or */
  328. {"eorb", one(0005074), one(0177777), "#bCs"}, /* eori to ccr */
  329. {"eorb", one(0130400), one(0170700), "Dd$s"}, /* register to memory */
  330. {"eorib", one(0005000), one(0177700), "#b$s"},
  331. {"eorib", one(0005074), one(0177777), "#bCs"}, /* eori to ccr */
  332. {"eoril", one(0005200), one(0177700), "#l$s"},
  333. {"eoriw", one(0005100), one(0177700), "#w$s"},
  334. {"eoriw", one(0005174), one(0177777), "#wSs"}, /* eori to sr */
  335. {"eorl", one(0005200), one(0177700), "#l$s"},
  336. {"eorl", one(0130600), one(0170700), "Dd$s"},
  337. {"eorw", one(0005100), one(0177700), "#w$s"},
  338. {"eorw", one(0005174), one(0177777), "#wSs"}, /* eori to sr */
  339. {"eorw", one(0130500), one(0170700), "Dd$s"},
  340. {"exg", one(0140500), one(0170770), "DdDs"},
  341. {"exg", one(0140510), one(0170770), "AdAs"},
  342. {"exg", one(0140610), one(0170770), "DdAs"},
  343. {"exg", one(0140610), one(0170770), "AsDd"},
  344. {"extw", one(0044200), one(0177770), "Ds"},
  345. {"extl", one(0044300), one(0177770), "Ds"},
  346. {"extbl", one(0044700), one(0177770), "Ds"},
  347. {"extb.l", one(0044700), one(0177770), "Ds"}, /* Not sure we should support this one*/
  348. {"illegal", one(0045374), one(0177777), ""},
  349. {"jmp", one(0047300), one(0177700), "!s"},
  350. {"jsr", one(0047200), one(0177700), "!s"},
  351. {"lea", one(0040700), one(0170700), "!sAd"},
  352. {"linkw", one(0047120), one(0177770), "As#w"},
  353. {"linkl", one(0044010), one(0177770), "As#l"},
  354. {"link", one(0047120), one(0177770), "As#w"},
  355. {"link", one(0044010), one(0177770), "As#l"},
  356. {"lslb", one(0160410), one(0170770), "QdDs"}, /* lsrb #Q, Ds */
  357. {"lslb", one(0160450), one(0170770), "DdDs"}, /* lsrb Dd, Ds */
  358. {"lslw", one(0160510), one(0170770), "QdDs"}, /* lsrb #Q, Ds */
  359. {"lslw", one(0160550), one(0170770), "DdDs"}, /* lsrb Dd, Ds */
  360. {"lslw", one(0161700), one(0177700), "~s"}, /* Shift memory */
  361. {"lsll", one(0160610), one(0170770), "QdDs"}, /* lsrb #Q, Ds */
  362. {"lsll", one(0160650), one(0170770), "DdDs"}, /* lsrb Dd, Ds */
  363. {"lsrb", one(0160010), one(0170770), "QdDs"} /* lsrb #Q, Ds */,
  364. {"lsrb", one(0160050), one(0170770), "DdDs"}, /* lsrb Dd, Ds */
  365. {"lsrl", one(0160210), one(0170770), "QdDs"}, /* lsrb #Q, Ds */
  366. {"lsrl", one(0160250), one(0170770), "DdDs"}, /* lsrb #Q, Ds */
  367. {"lsrw", one(0160110), one(0170770), "QdDs"}, /* lsrb #Q, Ds */
  368. {"lsrw", one(0160150), one(0170770), "DdDs"}, /* lsrb #Q, Ds */
  369. {"lsrw", one(0161300), one(0177700), "~s"}, /* Shift memory */
  370. {"moveal", one(0020100), one(0170700), "*lAd"},
  371. {"moveaw", one(0030100), one(0170700), "*wAd"},
  372. {"moveb", one(0010000), one(0170000), ";b$d"}, /* move */
  373. {"movel", one(0070000), one(0170400), "MsDd"}, /* moveq written as move */
  374. {"movel", one(0020000), one(0170000), "*l$d"},
  375. {"movel", one(0020100), one(0170700), "*lAd"},
  376. {"movel", one(0047140), one(0177770), "AsUd"}, /* move to USP */
  377. {"movel", one(0047150), one(0177770), "UdAs"}, /* move from USP */
  378. {"movec", one(0047173), one(0177777), "R1Jj"},
  379. {"movec", one(0047173), one(0177777), "R1#j"},
  380. {"movec", one(0047172), one(0177777), "JjR1"},
  381. {"movec", one(0047172), one(0177777), "#jR1"},
  382. /* JF added these next four for the assembler */
  383. {"moveml", one(0044300), one(0177700), "Lw&s"}, /* movem reg to mem. */
  384. {"moveml", one(0044340), one(0177770), "lw-s"}, /* movem reg to autodecrement. */
  385. {"moveml", one(0046300), one(0177700), "!sLw"}, /* movem mem to reg. */
  386. {"moveml", one(0046330), one(0177770), "+sLw"}, /* movem autoinc to reg. */
  387. {"moveml", one(0044300), one(0177700), "#w&s"}, /* movem reg to mem. */
  388. {"moveml", one(0044340), one(0177770), "#w-s"}, /* movem reg to autodecrement. */
  389. {"moveml", one(0046300), one(0177700), "!s#w"}, /* movem mem to reg. */
  390. {"moveml", one(0046330), one(0177770), "+s#w"}, /* movem autoinc to reg. */
  391. /* JF added these next four for the assembler */
  392. {"movemw", one(0044200), one(0177700), "Lw&s"}, /* movem reg to mem. */
  393. {"movemw", one(0044240), one(0177770), "lw-s"}, /* movem reg to autodecrement. */
  394. {"movemw", one(0046200), one(0177700), "!sLw"}, /* movem mem to reg. */
  395. {"movemw", one(0046230), one(0177770), "+sLw"}, /* movem autoinc to reg. */
  396. {"movemw", one(0044200), one(0177700), "#w&s"}, /* movem reg to mem. */
  397. {"movemw", one(0044240), one(0177770), "#w-s"}, /* movem reg to autodecrement. */
  398. {"movemw", one(0046200), one(0177700), "!s#w"}, /* movem mem to reg. */
  399. {"movemw", one(0046230), one(0177770), "+s#w"}, /* movem autoinc to reg. */
  400. {"movepl", one(0000510), one(0170770), "dsDd"}, /* memory to register */
  401. {"movepl", one(0000710), one(0170770), "Ddds"}, /* register to memory */
  402. {"movepw", one(0000410), one(0170770), "dsDd"}, /* memory to register */
  403. {"movepw", one(0000610), one(0170770), "Ddds"}, /* register to memory */
  404. {"moveq", one(0070000), one(0170400), "MsDd"},
  405. {"movew", one(0030000), one(0170000), "*w$d"},
  406. {"movew", one(0030100), one(0170700), "*wAd"}, /* movea, written as move */
  407. {"movew", one(0040300), one(0177700), "Ss$s"}, /* Move from sr */
  408. {"movew", one(0041300), one(0177700), "Cs$s"}, /* Move from ccr */
  409. {"movew", one(0042300), one(0177700), ";wCd"}, /* move to ccr */
  410. {"movew", one(0043300), one(0177700), ";wSd"}, /* move to sr */
  411. {"movesb", two(0007000, 0), two(0177700, 07777), "~sR1"}, /* moves from memory */
  412. {"movesb", two(0007000, 04000), two(0177700, 07777), "R1~s"}, /* moves to memory */
  413. {"movesl", two(0007200, 0), two(0177700, 07777), "~sR1"}, /* moves from memory */
  414. {"movesl", two(0007200, 04000), two(0177700, 07777), "R1~s"}, /* moves to memory */
  415. {"movesw", two(0007100, 0), two(0177700, 07777), "~sR1"}, /* moves from memory */
  416. {"movesw", two(0007100, 04000), two(0177700, 07777), "R1~s"}, /* moves to memory */
  417. {"mulsl", two(0046000, 004000), two(0177700, 0107770), ";lD1"},
  418. {"mulsl", two(0046000, 006000), two(0177700, 0107770), ";lD3D1"},
  419. {"mulsw", one(0140700), one(0170700), ";wDd"},
  420. {"muls", one(0140700), one(0170700), ";wDd"},
  421. {"mulul", two(0046000, 000000), two(0177700, 0107770), ";lD1"},
  422. {"mulul", two(0046000, 002000), two(0177700, 0107770), ";lD3D1"},
  423. {"muluw", one(0140300), one(0170700), ";wDd"},
  424. {"mulu", one(0140300), one(0170700), ";wDd"},
  425. {"nbcd", one(0044000), one(0177700), "$s"},
  426. {"negb", one(0042000), one(0177700), "$s"},
  427. {"negl", one(0042200), one(0177700), "$s"},
  428. {"negw", one(0042100), one(0177700), "$s"},
  429. {"negxb", one(0040000), one(0177700), "$s"},
  430. {"negxl", one(0040200), one(0177700), "$s"},
  431. {"negxw", one(0040100), one(0177700), "$s"},
  432. {"nop", one(0047161), one(0177777), ""},
  433. {"notb", one(0043000), one(0177700), "$s"},
  434. {"notl", one(0043200), one(0177700), "$s"},
  435. {"notw", one(0043100), one(0177700), "$s"},
  436. {"orb", one(0000000), one(0177700), "#b$s"}, /* ori written as or */
  437. {"orb", one(0000074), one(0177777), "#bCs"}, /* ori to ccr */
  438. {"orb", one(0100000), one(0170700), ";bDd"}, /* memory to register */
  439. {"orb", one(0100400), one(0170700), "Dd~s"}, /* register to memory */
  440. {"orib", one(0000000), one(0177700), "#b$s"},
  441. {"orib", one(0000074), one(0177777), "#bCs"}, /* ori to ccr */
  442. {"oril", one(0000200), one(0177700), "#l$s"},
  443. {"oriw", one(0000100), one(0177700), "#w$s"},
  444. {"oriw", one(0000174), one(0177777), "#wSs"}, /* ori to sr */
  445. {"orl", one(0000200), one(0177700), "#l$s"},
  446. {"orl", one(0100200), one(0170700), ";lDd"}, /* memory to register */
  447. {"orl", one(0100600), one(0170700), "Dd~s"}, /* register to memory */
  448. {"orw", one(0000100), one(0177700), "#w$s"},
  449. {"orw", one(0000174), one(0177777), "#wSs"}, /* ori to sr */
  450. {"orw", one(0100100), one(0170700), ";wDd"}, /* memory to register */
  451. {"orw", one(0100500), one(0170700), "Dd~s"}, /* register to memory */
  452. {"pack", one(0100500), one(0170770), "DsDd#w"}, /* pack Ds, Dd, #w */
  453. {"pack", one(0100510), one(0170770), "-s-d#w"}, /* pack -(As), -(Ad), #w */
  454. {"pea", one(0044100), one(0177700), "!s"},
  455. {"reset", one(0047160), one(0177777), ""},
  456. {"rolb", one(0160430), one(0170770), "QdDs"}, /* rorb #Q, Ds */
  457. {"rolb", one(0160470), one(0170770), "DdDs"}, /* rorb Dd, Ds */
  458. {"roll", one(0160630), one(0170770), "QdDs"}, /* rorb #Q, Ds */
  459. {"roll", one(0160670), one(0170770), "DdDs"}, /* rorb Dd, Ds */
  460. {"rolw", one(0160530), one(0170770), "QdDs"}, /* rorb #Q, Ds */
  461. {"rolw", one(0160570), one(0170770), "DdDs"}, /* rorb Dd, Ds */
  462. {"rolw", one(0163700), one(0177700), "~s"}, /* Rotate memory */
  463. {"rorb", one(0160030), one(0170770), "QdDs"}, /* rorb #Q, Ds */
  464. {"rorb", one(0160070), one(0170770), "DdDs"}, /* rorb Dd, Ds */
  465. {"rorl", one(0160230), one(0170770), "QdDs"}, /* rorb #Q, Ds */
  466. {"rorl", one(0160270), one(0170770), "DdDs"}, /* rorb Dd, Ds */
  467. {"rorw", one(0160130), one(0170770), "QdDs"}, /* rorb #Q, Ds */
  468. {"rorw", one(0160170), one(0170770), "DdDs"}, /* rorb Dd, Ds */
  469. {"rorw", one(0163300), one(0177700), "~s"}, /* Rotate memory */
  470. {"roxlb", one(0160420), one(0170770), "QdDs"}, /* roxrb #Q, Ds */
  471. {"roxlb", one(0160460), one(0170770), "DdDs"}, /* roxrb Dd, Ds */
  472. {"roxll", one(0160620), one(0170770), "QdDs"}, /* roxrb #Q, Ds */
  473. {"roxll", one(0160660), one(0170770), "DdDs"}, /* roxrb Dd, Ds */
  474. {"roxlw", one(0160520), one(0170770), "QdDs"}, /* roxrb #Q, Ds */
  475. {"roxlw", one(0160560), one(0170770), "DdDs"}, /* roxrb Dd, Ds */
  476. {"roxlw", one(0162700), one(0177700), "~s"}, /* Rotate memory */
  477. {"roxrb", one(0160020), one(0170770), "QdDs"}, /* roxrb #Q, Ds */
  478. {"roxrb", one(0160060), one(0170770), "DdDs"}, /* roxrb Dd, Ds */
  479. {"roxrl", one(0160220), one(0170770), "QdDs"}, /* roxrb #Q, Ds */
  480. {"roxrl", one(0160260), one(0170770), "DdDs"}, /* roxrb Dd, Ds */
  481. {"roxrw", one(0160120), one(0170770), "QdDs"}, /* roxrb #Q, Ds */
  482. {"roxrw", one(0160160), one(0170770), "DdDs"}, /* roxrb Dd, Ds */
  483. {"roxrw", one(0162300), one(0177700), "~s"}, /* Rotate memory */
  484. {"rtd", one(0047164), one(0177777), "#w"},
  485. {"rte", one(0047163), one(0177777), ""},
  486. {"rtm", one(0003300), one(0177760), "Rs"},
  487. {"rtr", one(0047167), one(0177777), ""},
  488. {"rts", one(0047165), one(0177777), ""},
  489. {"scc", one(0052300), one(0177700), "$s"},
  490. {"scs", one(0052700), one(0177700), "$s"},
  491. {"seq", one(0053700), one(0177700), "$s"},
  492. {"sf", one(0050700), one(0177700), "$s"},
  493. {"sge", one(0056300), one(0177700), "$s"},
  494. {"sgt", one(0057300), one(0177700), "$s"},
  495. {"shi", one(0051300), one(0177700), "$s"},
  496. {"sle", one(0057700), one(0177700), "$s"},
  497. {"sls", one(0051700), one(0177700), "$s"},
  498. {"slt", one(0056700), one(0177700), "$s"},
  499. {"smi", one(0055700), one(0177700), "$s"},
  500. {"sne", one(0053300), one(0177700), "$s"},
  501. {"spl", one(0055300), one(0177700), "$s"},
  502. {"st", one(0050300), one(0177700), "$s"},
  503. {"svc", one(0054300), one(0177700), "$s"},
  504. {"svs", one(0054700), one(0177700), "$s"},
  505. {"sbcd", one(0100400), one(0170770), "DsDd"},
  506. {"sbcd", one(0100410), one(0170770), "-s-d"},
  507. {"stop", one(0047162), one(0177777), "#w"},
  508. {"subal", one(0110700), one(0170700), "*lAd"},
  509. {"subaw", one(0110300), one(0170700), "*wAd"},
  510. {"subb", one(0050400), one(0170700), "Qd%s"}, /* subq written as sub */
  511. {"subb", one(0002000), one(0177700), "#b$s"}, /* subi written as sub */
  512. {"subb", one(0110000), one(0170700), ";bDd"}, /* subb ? ?, Dd */
  513. {"subb", one(0110400), one(0170700), "Dd~s"}, /* subb Dd, ? ? */
  514. {"subib", one(0002000), one(0177700), "#b$s"},
  515. {"subil", one(0002200), one(0177700), "#l$s"},
  516. {"subiw", one(0002100), one(0177700), "#w$s"},
  517. {"subl", one(0050600), one(0170700), "Qd%s"},
  518. {"subl", one(0002200), one(0177700), "#l$s"},
  519. {"subl", one(0110700), one(0170700), "*lAd"},
  520. {"subl", one(0110200), one(0170700), "*lDd"},
  521. {"subl", one(0110600), one(0170700), "Dd~s"},
  522. {"subqb", one(0050400), one(0170700), "Qd%s"},
  523. {"subql", one(0050600), one(0170700), "Qd%s"},
  524. {"subqw", one(0050500), one(0170700), "Qd%s"},
  525. {"subw", one(0050500), one(0170700), "Qd%s"},
  526. {"subw", one(0002100), one(0177700), "#w$s"},
  527. {"subw", one(0110100), one(0170700), "*wDd"},
  528. {"subw", one(0110300), one(0170700), "*wAd"}, /* suba written as sub */
  529. {"subw", one(0110500), one(0170700), "Dd~s"},
  530. {"subxb", one(0110400), one(0170770), "DsDd"}, /* subxb Ds, Dd */
  531. {"subxb", one(0110410), one(0170770), "-s-d"}, /* subxb -(As), -(Ad) */
  532. {"subxl", one(0110600), one(0170770), "DsDd"},
  533. {"subxl", one(0110610), one(0170770), "-s-d"},
  534. {"subxw", one(0110500), one(0170770), "DsDd"},
  535. {"subxw", one(0110510), one(0170770), "-s-d"},
  536. {"swap", one(0044100), one(0177770), "Ds"},
  537. {"tas", one(0045300), one(0177700), "$s"},
  538. {"trap", one(0047100), one(0177760), "Ts"},
  539. {"trapcc", one(0052374), one(0177777), ""},
  540. {"trapcs", one(0052774), one(0177777), ""},
  541. {"trapeq", one(0053774), one(0177777), ""},
  542. {"trapf", one(0050774), one(0177777), ""},
  543. {"trapge", one(0056374), one(0177777), ""},
  544. {"trapgt", one(0057374), one(0177777), ""},
  545. {"traphi", one(0051374), one(0177777), ""},
  546. {"traple", one(0057774), one(0177777), ""},
  547. {"trapls", one(0051774), one(0177777), ""},
  548. {"traplt", one(0056774), one(0177777), ""},
  549. {"trapmi", one(0055774), one(0177777), ""},
  550. {"trapne", one(0053374), one(0177777), ""},
  551. {"trappl", one(0055374), one(0177777), ""},
  552. {"trapt", one(0050374), one(0177777), ""},
  553. {"trapvc", one(0054374), one(0177777), ""},
  554. {"trapvs", one(0054774), one(0177777), ""},
  555. {"trapcc.w", one(0052372), one(0177777), ""},
  556. {"trapcs.w", one(0052772), one(0177777), ""},
  557. {"trapeq.w", one(0053772), one(0177777), ""},
  558. {"trapf.w", one(0050772), one(0177777), ""},
  559. {"trapge.w", one(0056372), one(0177777), ""},
  560. {"trapgt.w", one(0057372), one(0177777), ""},
  561. {"traphi.w", one(0051372), one(0177777), ""},
  562. {"traple.w", one(0057772), one(0177777), ""},
  563. {"trapls.w", one(0051772), one(0177777), ""},
  564. {"traplt.w", one(0056772), one(0177777), ""},
  565. {"trapmi.w", one(0055772), one(0177777), ""},
  566. {"trapne.w", one(0053372), one(0177777), ""},
  567. {"trappl.w", one(0055372), one(0177777), ""},
  568. {"trapt.w", one(0050372), one(0177777), ""},
  569. {"trapvc.w", one(0054372), one(0177777), ""},
  570. {"trapvs.w", one(0054772), one(0177777), ""},
  571. {"trapcc.l", one(0052373), one(0177777), ""},
  572. {"trapcs.l", one(0052773), one(0177777), ""},
  573. {"trapeq.l", one(0053773), one(0177777), ""},
  574. {"trapf.l", one(0050773), one(0177777), ""},
  575. {"trapge.l", one(0056373), one(0177777), ""},
  576. {"trapgt.l", one(0057373), one(0177777), ""},
  577. {"traphi.l", one(0051373), one(0177777), ""},
  578. {"traple.l", one(0057773), one(0177777), ""},
  579. {"trapls.l", one(0051773), one(0177777), ""},
  580. {"traplt.l", one(0056773), one(0177777), ""},
  581. {"trapmi.l", one(0055773), one(0177777), ""},
  582. {"trapne.l", one(0053373), one(0177777), ""},
  583. {"trappl.l", one(0055373), one(0177777), ""},
  584. {"trapt.l", one(0050373), one(0177777), ""},
  585. {"trapvc.l", one(0054373), one(0177777), ""},
  586. {"trapvs.l", one(0054773), one(0177777), ""},
  587. {"trapv", one(0047166), one(0177777), ""},
  588. {"tstb", one(0045000), one(0177700), ";b"},
  589. {"tstw", one(0045100), one(0177700), "*w"},
  590. {"tstl", one(0045200), one(0177700), "*l"},
  591. {"unlk", one(0047130), one(0177770), "As"},
  592. {"unpk", one(0100600), one(0170770), "DsDd#w"},
  593. {"unpk", one(0100610), one(0170770), "-s-d#w"},
  594. /* JF floating pt stuff moved down here */
  595. {"fabsb", two(0xF000, 0x5818), two(0xF1C0, 0xFC7F), "Ii;bF7"},
  596. {"fabsd", two(0xF000, 0x5418), two(0xF1C0, 0xFC7F), "Ii;FF7"},
  597. {"fabsl", two(0xF000, 0x4018), two(0xF1C0, 0xFC7F), "Ii;lF7"},
  598. {"fabsp", two(0xF000, 0x4C18), two(0xF1C0, 0xFC7F), "Ii;pF7"},
  599. {"fabss", two(0xF000, 0x4418), two(0xF1C0, 0xFC7F), "Ii;fF7"},
  600. {"fabsw", two(0xF000, 0x5018), two(0xF1C0, 0xFC7F), "Ii;wF7"},
  601. {"fabsx", two(0xF000, 0x0018), two(0xF1C0, 0xE07F), "IiF8F7"},
  602. {"fabsx", two(0xF000, 0x4818), two(0xF1C0, 0xFC7F), "Ii;xF7"},
  603. {"fabsx", two(0xF000, 0x0018), two(0xF1C0, 0xE07F), "IiFt"},
  604. {"facosb", two(0xF000, 0x581C), two(0xF1C0, 0xFC7F), "Ii;bF7"},
  605. {"facosd", two(0xF000, 0x541C), two(0xF1C0, 0xFC7F), "Ii;FF7"},
  606. {"facosl", two(0xF000, 0x401C), two(0xF1C0, 0xFC7F), "Ii;lF7"},
  607. {"facosp", two(0xF000, 0x4C1C), two(0xF1C0, 0xFC7F), "Ii;pF7"},
  608. {"facoss", two(0xF000, 0x441C), two(0xF1C0, 0xFC7F), "Ii;fF7"},
  609. {"facosw", two(0xF000, 0x501C), two(0xF1C0, 0xFC7F), "Ii;wF7"},
  610. {"facosx", two(0xF000, 0x001C), two(0xF1C0, 0xE07F), "IiF8F7"},
  611. {"facosx", two(0xF000, 0x481C), two(0xF1C0, 0xFC7F), "Ii;xF7"},
  612. {"facosx", two(0xF000, 0x001C), two(0xF1C0, 0xE07F), "IiFt"},
  613. {"faddb", two(0xF000, 0x5822), two(0xF1C0, 0xFC7F), "Ii;bF7"},
  614. {"faddd", two(0xF000, 0x5422), two(0xF1C0, 0xFC7F), "Ii;FF7"},
  615. {"faddl", two(0xF000, 0x4022), two(0xF1C0, 0xFC7F), "Ii;lF7"},
  616. {"faddp", two(0xF000, 0x4C22), two(0xF1C0, 0xFC7F), "Ii;pF7"},
  617. {"fadds", two(0xF000, 0x4422), two(0xF1C0, 0xFC7F), "Ii;fF7"},
  618. {"faddw", two(0xF000, 0x5022), two(0xF1C0, 0xFC7F), "Ii;wF7"},
  619. {"faddx", two(0xF000, 0x0022), two(0xF1C0, 0xE07F), "IiF8F7"},
  620. {"faddx", two(0xF000, 0x4822), two(0xF1C0, 0xFC7F), "Ii;xF7"},
  621. /* {"faddx", two(0xF000, 0x0022), two(0xF1C0, 0xE07F), "IiFt"}, JF removed */
  622. {"fasinb", two(0xF000, 0x580C), two(0xF1C0, 0xFC7F), "Ii;bF7"},
  623. {"fasind", two(0xF000, 0x540C), two(0xF1C0, 0xFC7F), "Ii;FF7"},
  624. {"fasinl", two(0xF000, 0x400C), two(0xF1C0, 0xFC7F), "Ii;lF7"},
  625. {"fasinp", two(0xF000, 0x4C0C), two(0xF1C0, 0xFC7F), "Ii;pF7"},
  626. {"fasins", two(0xF000, 0x440C), two(0xF1C0, 0xFC7F), "Ii;fF7"},
  627. {"fasinw", two(0xF000, 0x500C), two(0xF1C0, 0xFC7F), "Ii;wF7"},
  628. {"fasinx", two(0xF000, 0x000C), two(0xF1C0, 0xE07F), "IiF8F7"},
  629. {"fasinx", two(0xF000, 0x480C), two(0xF1C0, 0xFC7F), "Ii;xF7"},
  630. {"fasinx", two(0xF000, 0x000C), two(0xF1C0, 0xE07F), "IiFt"},
  631. {"fatanb", two(0xF000, 0x580A), two(0xF1C0, 0xFC7F), "Ii;bF7"},
  632. {"fatand", two(0xF000, 0x540A), two(0xF1C0, 0xFC7F), "Ii;FF7"},
  633. {"fatanl", two(0xF000, 0x400A), two(0xF1C0, 0xFC7F), "Ii;lF7"},
  634. {"fatanp", two(0xF000, 0x4C0A), two(0xF1C0, 0xFC7F), "Ii;pF7"},
  635. {"fatans", two(0xF000, 0x440A), two(0xF1C0, 0xFC7F), "Ii;fF7"},
  636. {"fatanw", two(0xF000, 0x500A), two(0xF1C0, 0xFC7F), "Ii;wF7"},
  637. {"fatanx", two(0xF000, 0x000A), two(0xF1C0, 0xE07F), "IiF8F7"},
  638. {"fatanx", two(0xF000, 0x480A), two(0xF1C0, 0xFC7F), "Ii;xF7"},
  639. {"fatanx", two(0xF000, 0x000A), two(0xF1C0, 0xE07F), "IiFt"},
  640. {"fatanhb", two(0xF000, 0x580D), two(0xF1C0, 0xFC7F), "Ii;bF7"},
  641. {"fatanhd", two(0xF000, 0x540D), two(0xF1C0, 0xFC7F), "Ii;FF7"},
  642. {"fatanhl", two(0xF000, 0x400D), two(0xF1C0, 0xFC7F), "Ii;lF7"},
  643. {"fatanhp", two(0xF000, 0x4C0D), two(0xF1C0, 0xFC7F), "Ii;pF7"},
  644. {"fatanhs", two(0xF000, 0x440D), two(0xF1C0, 0xFC7F), "Ii;fF7"},
  645. {"fatanhw", two(0xF000, 0x500D), two(0xF1C0, 0xFC7F), "Ii;wF7"},
  646. {"fatanhx", two(0xF000, 0x000D), two(0xF1C0, 0xE07F), "IiF8F7"},
  647. {"fatanhx", two(0xF000, 0x480D), two(0xF1C0, 0xFC7F), "Ii;xF7"},
  648. {"fatanhx", two(0xF000, 0x000D), two(0xF1C0, 0xE07F), "IiFt"},
  649. {"fbeq", one(0xF081), one(0xF1BF), "IdBc"},
  650. {"fbf", one(0xF080), one(0xF1BF), "IdBc"},
  651. {"fbge", one(0xF093), one(0xF1BF), "IdBc"},
  652. {"fbgl", one(0xF096), one(0xF1BF), "IdBc"},
  653. {"fbgle", one(0xF097), one(0xF1BF), "IdBc"},
  654. {"fbgt", one(0xF092), one(0xF1BF), "IdBc"},
  655. {"fble", one(0xF095), one(0xF1BF), "IdBc"},
  656. {"fblt", one(0xF094), one(0xF1BF), "IdBc"},
  657. {"fbne", one(0xF08E), one(0xF1BF), "IdBc"},
  658. {"fbnge", one(0xF09C), one(0xF1BF), "IdBc"},
  659. {"fbngl", one(0xF099), one(0xF1BF), "IdBc"},
  660. {"fbngle", one(0xF098), one(0xF1BF), "IdBc"},
  661. {"fbngt", one(0xF09D), one(0xF1BF), "IdBc"},
  662. {"fbnle", one(0xF09A), one(0xF1BF), "IdBc"},
  663. {"fbnlt", one(0xF09B), one(0xF1BF), "IdBc"},
  664. {"fboge", one(0xF083), one(0xF1BF), "IdBc"},
  665. {"fbogl", one(0xF086), one(0xF1BF), "IdBc"},
  666. {"fbogt", one(0xF082), one(0xF1BF), "IdBc"},
  667. {"fbole", one(0xF085), one(0xF1BF), "IdBc"},
  668. {"fbolt", one(0xF084), one(0xF1BF), "IdBc"},
  669. {"fbor", one(0xF087), one(0xF1BF), "IdBc"},
  670. {"fbseq", one(0xF091), one(0xF1BF), "IdBc"},
  671. {"fbsf", one(0xF090), one(0xF1BF), "IdBc"},
  672. {"fbsne", one(0xF09E), one(0xF1BF), "IdBc"},
  673. {"fbst", one(0xF09F), one(0xF1BF), "IdBc"},
  674. {"fbt", one(0xF08F), one(0xF1BF), "IdBc"},
  675. {"fbueq", one(0xF089), one(0xF1BF), "IdBc"},
  676. {"fbuge", one(0xF08B), one(0xF1BF), "IdBc"},
  677. {"fbugt", one(0xF08A), one(0xF1BF), "IdBc"},
  678. {"fbule", one(0xF08D), one(0xF1BF), "IdBc"},
  679. {"fbult", one(0xF08C), one(0xF1BF), "IdBc"},
  680. {"fbun", one(0xF088), one(0xF1BF), "IdBc"},
  681. {"fcmpb", two(0xF000, 0x5838), two(0xF1C0, 0xFC7F), "Ii;bF7"},
  682. {"fcmpd", two(0xF000, 0x5438), two(0xF1C0, 0xFC7F), "Ii;FF7"},
  683. {"fcmpl", two(0xF000, 0x4038), two(0xF1C0, 0xFC7F), "Ii;lF7"},
  684. {"fcmpp", two(0xF000, 0x4C38), two(0xF1C0, 0xFC7F), "Ii;pF7"},
  685. {"fcmps", two(0xF000, 0x4438), two(0xF1C0, 0xFC7F), "Ii;fF7"},
  686. {"fcmpw", two(0xF000, 0x5038), two(0xF1C0, 0xFC7F), "Ii;wF7"},
  687. {"fcmpx", two(0xF000, 0x0038), two(0xF1C0, 0xE07F), "IiF8F7"},
  688. {"fcmpx", two(0xF000, 0x4838), two(0xF1C0, 0xFC7F), "Ii;xF7"},
  689. /* {"fcmpx", two(0xF000, 0x0038), two(0xF1C0, 0xE07F), "IiFt"}, JF removed */
  690. {"fcosb", two(0xF000, 0x581D), two(0xF1C0, 0xFC7F), "Ii;bF7"},
  691. {"fcosd", two(0xF000, 0x541D), two(0xF1C0, 0xFC7F), "Ii;FF7"},
  692. {"fcosl", two(0xF000, 0x401D), two(0xF1C0, 0xFC7F), "Ii;lF7"},
  693. {"fcosp", two(0xF000, 0x4C1D), two(0xF1C0, 0xFC7F), "Ii;pF7"},
  694. {"fcoss", two(0xF000, 0x441D), two(0xF1C0, 0xFC7F), "Ii;fF7"},
  695. {"fcosw", two(0xF000, 0x501D), two(0xF1C0, 0xFC7F), "Ii;wF7"},
  696. {"fcosx", two(0xF000, 0x001D), two(0xF1C0, 0xE07F), "IiF8F7"},
  697. {"fcosx", two(0xF000, 0x481D), two(0xF1C0, 0xFC7F), "Ii;xF7"},
  698. {"fcosx", two(0xF000, 0x001D), two(0xF1C0, 0xE07F), "IiFt"},
  699. {"fcoshb", two(0xF000, 0x5819), two(0xF1C0, 0xFC7F), "Ii;bF7"},
  700. {"fcoshd", two(0xF000, 0x5419), two(0xF1C0, 0xFC7F), "Ii;FF7"},
  701. {"fcoshl", two(0xF000, 0x4019), two(0xF1C0, 0xFC7F), "Ii;lF7"},
  702. {"fcoshp", two(0xF000, 0x4C19), two(0xF1C0, 0xFC7F), "Ii;pF7"},
  703. {"fcoshs", two(0xF000, 0x4419), two(0xF1C0, 0xFC7F), "Ii;fF7"},
  704. {"fcoshw", two(0xF000, 0x5019), two(0xF1C0, 0xFC7F), "Ii;wF7"},
  705. {"fcoshx", two(0xF000, 0x0019), two(0xF1C0, 0xE07F), "IiF8F7"},
  706. {"fcoshx", two(0xF000, 0x4819), two(0xF1C0, 0xFC7F), "Ii;xF7"},
  707. {"fcoshx", two(0xF000, 0x0019), two(0xF1C0, 0xE07F), "IiFt"},
  708. {"fdbeq", two(0xF048, 0x0001), two(0xF1F8, 0xFFFF), "IiDsBw"},
  709. {"fdbf", two(0xF048, 0x0000), two(0xF1F8, 0xFFFF), "IiDsBw"},
  710. {"fdbge", two(0xF048, 0x0013), two(0xF1F8, 0xFFFF), "IiDsBw"},
  711. {"fdbgl", two(0xF048, 0x0016), two(0xF1F8, 0xFFFF), "IiDsBw"},
  712. {"fdbgle", two(0xF048, 0x0017), two(0xF1F8, 0xFFFF), "IiDsBw"},
  713. {"fdbgt", two(0xF048, 0x0012), two(0xF1F8, 0xFFFF), "IiDsBw"},
  714. {"fdble", two(0xF048, 0x0015), two(0xF1F8, 0xFFFF), "IiDsBw"},
  715. {"fdblt", two(0xF048, 0x0014), two(0xF1F8, 0xFFFF), "IiDsBw"},
  716. {"fdbne", two(0xF048, 0x000E), two(0xF1F8, 0xFFFF), "IiDsBw"},
  717. {"fdbnge", two(0xF048, 0x001C), two(0xF1F8, 0xFFFF), "IiDsBw"},
  718. {"fdbngl", two(0xF048, 0x0019), two(0xF1F8, 0xFFFF), "IiDsBw"},
  719. {"fdbngle", two(0xF048, 0x0018), two(0xF1F8, 0xFFFF), "IiDsBw"},
  720. {"fdbngt", two(0xF048, 0x001D), two(0xF1F8, 0xFFFF), "IiDsBw"},
  721. {"fdbnle", two(0xF048, 0x001A), two(0xF1F8, 0xFFFF), "IiDsBw"},
  722. {"fdbnlt", two(0xF048, 0x001B), two(0xF1F8, 0xFFFF), "IiDsBw"},
  723. {"fdboge", two(0xF048, 0x0003), two(0xF1F8, 0xFFFF), "IiDsBw"},
  724. {"fdbogl", two(0xF048, 0x0006), two(0xF1F8, 0xFFFF), "IiDsBw"},
  725. {"fdbogt", two(0xF048, 0x0002), two(0xF1F8, 0xFFFF), "IiDsBw"},
  726. {"fdbole", two(0xF048, 0x0005), two(0xF1F8, 0xFFFF), "IiDsBw"},
  727. {"fdbolt", two(0xF048, 0x0004), two(0xF1F8, 0xFFFF), "IiDsBw"},
  728. {"fdbor", two(0xF048, 0x0007), two(0xF1F8, 0xFFFF), "IiDsBw"},
  729. {"fdbseq", two(0xF048, 0x0011), two(0xF1F8, 0xFFFF), "IiDsBw"},
  730. {"fdbsf", two(0xF048, 0x0010), two(0xF1F8, 0xFFFF), "IiDsBw"},
  731. {"fdbsne", two(0xF048, 0x001E), two(0xF1F8, 0xFFFF), "IiDsBw"},
  732. {"fdbst", two(0xF048, 0x001F), two(0xF1F8, 0xFFFF), "IiDsBw"},
  733. {"fdbt", two(0xF048, 0x000F), two(0xF1F8, 0xFFFF), "IiDsBw"},
  734. {"fdbueq", two(0xF048, 0x0009), two(0xF1F8, 0xFFFF), "IiDsBw"},
  735. {"fdbuge", two(0xF048, 0x000B), two(0xF1F8, 0xFFFF), "IiDsBw"},
  736. {"fdbugt", two(0xF048, 0x000A), two(0xF1F8, 0xFFFF), "IiDsBw"},
  737. {"fdbule", two(0xF048, 0x000D), two(0xF1F8, 0xFFFF), "IiDsBw"},
  738. {"fdbult", two(0xF048, 0x000C), two(0xF1F8, 0xFFFF), "IiDsBw"},
  739. {"fdbun", two(0xF048, 0x0008), two(0xF1F8, 0xFFFF), "IiDsBw"},
  740. {"fdivb", two(0xF000, 0x5820), two(0xF1C0, 0xFC7F), "Ii;bF7"},
  741. {"fdivd", two(0xF000, 0x5420), two(0xF1C0, 0xFC7F), "Ii;FF7"},
  742. {"fdivl", two(0xF000, 0x4020), two(0xF1C0, 0xFC7F), "Ii;lF7"},
  743. {"fdivp", two(0xF000, 0x4C20), two(0xF1C0, 0xFC7F), "Ii;pF7"},
  744. {"fdivs", two(0xF000, 0x4420), two(0xF1C0, 0xFC7F), "Ii;fF7"},
  745. {"fdivw", two(0xF000, 0x5020), two(0xF1C0, 0xFC7F), "Ii;wF7"},
  746. {"fdivx", two(0xF000, 0x0020), two(0xF1C0, 0xE07F), "IiF8F7"},
  747. {"fdivx", two(0xF000, 0x4820), two(0xF1C0, 0xFC7F), "Ii;xF7"},
  748. /* {"fdivx", two(0xF000, 0x0020), two(0xF1C0, 0xE07F), "IiFt"}, JF */
  749. {"fetoxb", two(0xF000, 0x5810), two(0xF1C0, 0xFC7F), "Ii;bF7"},
  750. {"fetoxd", two(0xF000, 0x5410), two(0xF1C0, 0xFC7F), "Ii;FF7"},
  751. {"fetoxl", two(0xF000, 0x4010), two(0xF1C0, 0xFC7F), "Ii;lF7"},
  752. {"fetoxp", two(0xF000, 0x4C10), two(0xF1C0, 0xFC7F), "Ii;pF7"},
  753. {"fetoxs", two(0xF000, 0x4410), two(0xF1C0, 0xFC7F), "Ii;fF7"},
  754. {"fetoxw", two(0xF000, 0x5010), two(0xF1C0, 0xFC7F), "Ii;wF7"},
  755. {"fetoxx", two(0xF000, 0x0010), two(0xF1C0, 0xE07F), "IiF8F7"},
  756. {"fetoxx", two(0xF000, 0x4810), two(0xF1C0, 0xFC7F), "Ii;xF7"},
  757. {"fetoxx", two(0xF000, 0x0010), two(0xF1C0, 0xE07F), "IiFt"},
  758. {"fetoxm1b", two(0xF000, 0x5808), two(0xF1C0, 0xFC7F), "Ii;bF7"},
  759. {"fetoxm1d", two(0xF000, 0x5408), two(0xF1C0, 0xFC7F), "Ii;FF7"},
  760. {"fetoxm1l", two(0xF000, 0x4008), two(0xF1C0, 0xFC7F), "Ii;lF7"},
  761. {"fetoxm1p", two(0xF000, 0x4C08), two(0xF1C0, 0xFC7F), "Ii;pF7"},
  762. {"fetoxm1s", two(0xF000, 0x4408), two(0xF1C0, 0xFC7F), "Ii;fF7"},
  763. {"fetoxm1w", two(0xF000, 0x5008), two(0xF1C0, 0xFC7F), "Ii;wF7"},
  764. {"fetoxm1x", two(0xF000, 0x0008), two(0xF1C0, 0xE07F), "IiF8F7"},
  765. {"fetoxm1x", two(0xF000, 0x4808), two(0xF1C0, 0xFC7F), "Ii;xF7"},
  766. {"fetoxm1x", two(0xF000, 0x0008), two(0xF1C0, 0xE07F), "IiFt"},
  767. {"fgetexpb", two(0xF000, 0x581E), two(0xF1C0, 0xFC7F), "Ii;bF7"},
  768. {"fgetexpd", two(0xF000, 0x541E), two(0xF1C0, 0xFC7F), "Ii;FF7"},
  769. {"fgetexpl", two(0xF000, 0x401E), two(0xF1C0, 0xFC7F), "Ii;lF7"},
  770. {"fgetexpp", two(0xF000, 0x4C1E), two(0xF1C0, 0xFC7F), "Ii;pF7"},
  771. {"fgetexps", two(0xF000, 0x441E), two(0xF1C0, 0xFC7F), "Ii;fF7"},
  772. {"fgetexpw", two(0xF000, 0x501E), two(0xF1C0, 0xFC7F), "Ii;wF7"},
  773. {"fgetexpx", two(0xF000, 0x001E), two(0xF1C0, 0xE07F), "IiF8F7"},
  774. {"fgetexpx", two(0xF000, 0x481E), two(0xF1C0, 0xFC7F), "Ii;xF7"},
  775. {"fgetexpx", two(0xF000, 0x001E), two(0xF1C0, 0xE07F), "IiFt"},
  776. {"fgetmanb", two(0xF000, 0x581F), two(0xF1C0, 0xFC7F), "Ii;bF7"},
  777. {"fgetmand", two(0xF000, 0x541F), two(0xF1C0, 0xFC7F), "Ii;FF7"},
  778. {"fgetmanl", two(0xF000, 0x401F), two(0xF1C0, 0xFC7F), "Ii;lF7"},
  779. {"fgetmanp", two(0xF000, 0x4C1F), two(0xF1C0, 0xFC7F), "Ii;pF7"},
  780. {"fgetmans", two(0xF000, 0x441F), two(0xF1C0, 0xFC7F), "Ii;fF7"},
  781. {"fgetmanw", two(0xF000, 0x501F), two(0xF1C0, 0xFC7F), "Ii;wF7"},
  782. {"fgetmanx", two(0xF000, 0x001F), two(0xF1C0, 0xE07F), "IiF8F7"},
  783. {"fgetmanx", two(0xF000, 0x481F), two(0xF1C0, 0xFC7F), "Ii;xF7"},
  784. {"fgetmanx", two(0xF000, 0x001F), two(0xF1C0, 0xE07F), "IiFt"},
  785. {"fintb", two(0xF000, 0x5801), two(0xF1C0, 0xFC7F), "Ii;bF7"},
  786. {"fintd", two(0xF000, 0x5401), two(0xF1C0, 0xFC7F), "Ii;FF7"},
  787. {"fintl", two(0xF000, 0x4001), two(0xF1C0, 0xFC7F), "Ii;lF7"},
  788. {"fintp", two(0xF000, 0x4C01), two(0xF1C0, 0xFC7F), "Ii;pF7"},
  789. {"fints", two(0xF000, 0x4401), two(0xF1C0, 0xFC7F), "Ii;fF7"},
  790. {"fintw", two(0xF000, 0x5001), two(0xF1C0, 0xFC7F), "Ii;wF7"},
  791. {"fintx", two(0xF000, 0x0001), two(0xF1C0, 0xE07F), "IiF8F7"},
  792. {"fintx", two(0xF000, 0x4801), two(0xF1C0, 0xFC7F), "Ii;xF7"},
  793. {"fintx", two(0xF000, 0x0001), two(0xF1C0, 0xE07F), "IiFt"},
  794. {"fintrzb", two(0xF000, 0x5803), two(0xF1C0, 0xFC7F), "Ii;bF7"},
  795. {"fintrzd", two(0xF000, 0x5403), two(0xF1C0, 0xFC7F), "Ii;FF7"},
  796. {"fintrzl", two(0xF000, 0x4003), two(0xF1C0, 0xFC7F), "Ii;lF7"},
  797. {"fintrzp", two(0xF000, 0x4C03), two(0xF1C0, 0xFC7F), "Ii;pF7"},
  798. {"fintrzs", two(0xF000, 0x4403), two(0xF1C0, 0xFC7F), "Ii;fF7"},
  799. {"fintrzw", two(0xF000, 0x5003), two(0xF1C0, 0xFC7F), "Ii;wF7"},
  800. {"fintrzx", two(0xF000, 0x0003), two(0xF1C0, 0xE07F), "IiF8F7"},
  801. {"fintrzx", two(0xF000, 0x4803), two(0xF1C0, 0xFC7F), "Ii;xF7"},
  802. {"fintrzx", two(0xF000, 0x0003), two(0xF1C0, 0xE07F), "IiFt"},
  803. {"flog10b", two(0xF000, 0x5815), two(0xF1C0, 0xFC7F), "Ii;bF7"},
  804. {"flog10d", two(0xF000, 0x5415), two(0xF1C0, 0xFC7F), "Ii;FF7"},
  805. {"flog10l", two(0xF000, 0x4015), two(0xF1C0, 0xFC7F), "Ii;lF7"},
  806. {"flog10p", two(0xF000, 0x4C15), two(0xF1C0, 0xFC7F), "Ii;pF7"},
  807. {"flog10s", two(0xF000, 0x4415), two(0xF1C0, 0xFC7F), "Ii;fF7"},
  808. {"flog10w", two(0xF000, 0x5015), two(0xF1C0, 0xFC7F), "Ii;wF7"},
  809. {"flog10x", two(0xF000, 0x0015), two(0xF1C0, 0xE07F), "IiF8F7"},
  810. {"flog10x", two(0xF000, 0x4815), two(0xF1C0, 0xFC7F), "Ii;xF7"},
  811. {"flog10x", two(0xF000, 0x0015), two(0xF1C0, 0xE07F), "IiFt"},
  812. {"flog2b", two(0xF000, 0x5816), two(0xF1C0, 0xFC7F), "Ii;bF7"},
  813. {"flog2d", two(0xF000, 0x5416), two(0xF1C0, 0xFC7F), "Ii;FF7"},
  814. {"flog2l", two(0xF000, 0x4016), two(0xF1C0, 0xFC7F), "Ii;lF7"},
  815. {"flog2p", two(0xF000, 0x4C16), two(0xF1C0, 0xFC7F), "Ii;pF7"},
  816. {"flog2s", two(0xF000, 0x4416), two(0xF1C0, 0xFC7F), "Ii;fF7"},
  817. {"flog2w", two(0xF000, 0x5016), two(0xF1C0, 0xFC7F), "Ii;wF7"},
  818. {"flog2x", two(0xF000, 0x0016), two(0xF1C0, 0xE07F), "IiF8F7"},
  819. {"flog2x", two(0xF000, 0x4816), two(0xF1C0, 0xFC7F), "Ii;xF7"},
  820. {"flog2x", two(0xF000, 0x0016), two(0xF1C0, 0xE07F), "IiFt"},
  821. {"flognb", two(0xF000, 0x5814), two(0xF1C0, 0xFC7F), "Ii;bF7"},
  822. {"flognd", two(0xF000, 0x5414), two(0xF1C0, 0xFC7F), "Ii;FF7"},
  823. {"flognl", two(0xF000, 0x4014), two(0xF1C0, 0xFC7F), "Ii;lF7"},
  824. {"flognp", two(0xF000, 0x4C14), two(0xF1C0, 0xFC7F), "Ii;pF7"},
  825. {"flogns", two(0xF000, 0x4414), two(0xF1C0, 0xFC7F), "Ii;fF7"},
  826. {"flognw", two(0xF000, 0x5014), two(0xF1C0, 0xFC7F), "Ii;wF7"},
  827. {"flognx", two(0xF000, 0x0014), two(0xF1C0, 0xE07F), "IiF8F7"},
  828. {"flognx", two(0xF000, 0x4814), two(0xF1C0, 0xFC7F), "Ii;xF7"},
  829. {"flognx", two(0xF000, 0x0014), two(0xF1C0, 0xE07F), "IiFt"},
  830. {"flognp1b", two(0xF000, 0x5806), two(0xF1C0, 0xFC7F), "Ii;bF7"},
  831. {"flognp1d", two(0xF000, 0x5406), two(0xF1C0, 0xFC7F), "Ii;FF7"},
  832. {"flognp1l", two(0xF000, 0x4006), two(0xF1C0, 0xFC7F), "Ii;lF7"},
  833. {"flognp1p", two(0xF000, 0x4C06), two(0xF1C0, 0xFC7F), "Ii;pF7"},
  834. {"flognp1s", two(0xF000, 0x4406), two(0xF1C0, 0xFC7F), "Ii;fF7"},
  835. {"flognp1w", two(0xF000, 0x5006), two(0xF1C0, 0xFC7F), "Ii;wF7"},
  836. {"flognp1x", two(0xF000, 0x0006), two(0xF1C0, 0xE07F), "IiF8F7"},
  837. {"flognp1x", two(0xF000, 0x4806), two(0xF1C0, 0xFC7F), "Ii;xF7"},
  838. {"flognp1x", two(0xF000, 0x0006), two(0xF1C0, 0xE07F), "IiFt"},
  839. {"fmodb", two(0xF000, 0x5821), two(0xF1C0, 0xFC7F), "Ii;bF7"},
  840. {"fmodd", two(0xF000, 0x5421), two(0xF1C0, 0xFC7F), "Ii;FF7"},
  841. {"fmodl", two(0xF000, 0x4021), two(0xF1C0, 0xFC7F), "Ii;lF7"},
  842. {"fmodp", two(0xF000, 0x4C21), two(0xF1C0, 0xFC7F), "Ii;pF7"},
  843. {"fmods", two(0xF000, 0x4421), two(0xF1C0, 0xFC7F), "Ii;fF7"},
  844. {"fmodw", two(0xF000, 0x5021), two(0xF1C0, 0xFC7F), "Ii;wF7"},
  845. {"fmodx", two(0xF000, 0x0021), two(0xF1C0, 0xE07F), "IiF8F7"},
  846. {"fmodx", two(0xF000, 0x4821), two(0xF1C0, 0xFC7F), "Ii;xF7"},
  847. /* {"fmodx", two(0xF000, 0x0021), two(0xF1C0, 0xE07F), "IiFt"}, JF */
  848. {"fmoveb", two(0xF000, 0x5800), two(0xF1C0, 0xFC7F), "Ii;bF7"}, /* fmove from <ea> to fp<n> */
  849. {"fmoveb", two(0xF000, 0x7800), two(0xF1C0, 0xFC7F), "IiF7@b"}, /* fmove from fp<n> to <ea> */
  850. {"fmoved", two(0xF000, 0x5400), two(0xF1C0, 0xFC7F), "Ii;FF7"}, /* fmove from <ea> to fp<n> */
  851. {"fmoved", two(0xF000, 0x7400), two(0xF1C0, 0xFC7F), "IiF7@F"}, /* fmove from fp<n> to <ea> */
  852. {"fmovel", two(0xF000, 0x4000), two(0xF1C0, 0xFC7F), "Ii;lF7"}, /* fmove from <ea> to fp<n> */
  853. {"fmovel", two(0xF000, 0x6000), two(0xF1C0, 0xFC7F), "IiF7@l"}, /* fmove from fp<n> to <ea> */
  854. /* Warning: The addressing modes on these are probably not right:
  855. esp, Areg direct is only allowed for FPI */
  856. /* fmove.l from/to system control registers: */
  857. {"fmovel", two(0xF000, 0xA000), two(0xF1C0, 0xE3FF), "Iis8@s"},
  858. {"fmovel", two(0xF000, 0x8000), two(0xF1C0, 0xE3FF), "Ii*ls8"},
  859. /* {"fmovel", two(0xF000, 0xA000), two(0xF1C0, 0xE3FF), "Iis8@s"},
  860. {"fmovel", two(0xF000, 0x8000), two(0xF2C0, 0xE3FF), "Ii*ss8"}, */
  861. {"fmovep", two(0xF000, 0x4C00), two(0xF1C0, 0xFC7F), "Ii;pF7"}, /* fmove from <ea> to fp<n> */
  862. {"fmovep", two(0xF000, 0x6C00), two(0xF1C0, 0xFC00), "IiF7@pkC"}, /* fmove.p with k-factors: */
  863. {"fmovep", two(0xF000, 0x7C00), two(0xF1C0, 0xFC0F), "IiF7@pDk"}, /* fmove.p with k-factors: */
  864. {"fmoves", two(0xF000, 0x4400), two(0xF1C0, 0xFC7F), "Ii;fF7"}, /* fmove from <ea> to fp<n> */
  865. {"fmoves", two(0xF000, 0x6400), two(0xF1C0, 0xFC7F), "IiF7@f"}, /* fmove from fp<n> to <ea> */
  866. {"fmovew", two(0xF000, 0x5000), two(0xF1C0, 0xFC7F), "Ii;wF7"}, /* fmove from <ea> to fp<n> */
  867. {"fmovew", two(0xF000, 0x7000), two(0xF1C0, 0xFC7F), "IiF7@w"}, /* fmove from fp<n> to <ea> */
  868. {"fmovex", two(0xF000, 0x0000), two(0xF1C0, 0xE07F), "IiF8F7"}, /* fmove from <ea> to fp<n> */
  869. {"fmovex", two(0xF000, 0x4800), two(0xF1C0, 0xFC7F), "Ii;xF7"}, /* fmove from <ea> to fp<n> */
  870. {"fmovex", two(0xF000, 0x6800), two(0xF1C0, 0xFC7F), "IiF7@x"}, /* fmove from fp<n> to <ea> */
  871. /* JF removed {"fmovex", two(0xF000, 0x0000), two(0xF1C0, 0xE07F), "IiFt"}, / * fmove from <ea> to fp<n> */
  872. {"fmovecrx", two(0xF000, 0x5C00), two(0xF1FF, 0xFC00), "Ii#CF7"}, /* fmovecr.x #ccc, FPn */
  873. {"fmovecr", two(0xF000, 0x5C00), two(0xF1FF, 0xFC00), "Ii#CF7"},
  874. /* Other fmovemx. */
  875. {"fmovemx", two(0xF020, 0xE000), two(0xF1F8, 0xFF00), "IdL3-s"}, /* fmovem.x to autodecrement, static and dynamic */
  876. {"fmovemx", two(0xF020, 0xE000), two(0xF1F8, 0xFF00), "Id#3-s"}, /* fmovem.x to autodecrement, static and dynamic */
  877. {"fmovemx", two(0xF020, 0xE800), two(0xF1F8, 0xFF8F), "IiDk-s"}, /* fmovem.x to autodecrement, static and dynamic */
  878. {"fmovemx", two(0xF000, 0xF000), two(0xF1C0, 0xFF00), "Id#3&s"}, /* fmovem.x to control, static and dynamic: */
  879. {"fmovemx", two(0xF000, 0xF800), two(0xF1C0, 0xFF8F), "IiDk&s"}, /* fmovem.x to control, static and dynamic: */
  880. {"fmovemx", two(0xF000, 0xD000), two(0xF1C0, 0xFF00), "Id&s#3"}, /* fmovem.x from control, static and dynamic: */
  881. {"fmovemx", two(0xF000, 0xD800), two(0xF1C0, 0xFF8F), "Ii&sDk"}, /* fmovem.x from control, static and dynamic: */
  882. {"fmovemx", two(0xF000, 0xF000), two(0xF1C0, 0xFF00), "Idl3&s"}, /* fmovem.x to control, static and dynamic: */
  883. {"fmovemx", two(0xF000, 0xD000), two(0xF1C0, 0xFF00), "Id&sl3"}, /* fmovem.x from control, static and dynamic: */
  884. {"fmovemx", two(0xF018, 0xD000), two(0xF1F8, 0xFF00), "Id+sl3"}, /* fmovem.x from autoincrement, static and dynamic: */
  885. {"fmovemx", two(0xF018, 0xD000), two(0xF1F8, 0xFF00), "Id+s#3"}, /* fmovem.x from autoincrement, static and dynamic: */
  886. {"fmovemx", two(0xF018, 0xD800), two(0xF1F8, 0xFF8F), "Ii+sDk"}, /* fmovem.x from autoincrement, static and dynamic: */
  887. {"fmoveml", two(0xF000, 0xA000), two(0xF1C0, 0xE3FF), "IiL8@s"},
  888. {"fmoveml", two(0xF000, 0xA000), two(0xF1C0, 0xE3FF), "Ii#8@s"},
  889. {"fmoveml", two(0xF000, 0xA000), two(0xF1C0, 0xE3FF), "Iis8@s"},
  890. {"fmoveml", two(0xF000, 0x8000), two(0xF2C0, 0xE3FF), "Ii*sL8"},
  891. {"fmoveml", two(0xF000, 0x8000), two(0xF1C0, 0xE3FF), "Ii*s#8"},
  892. {"fmoveml", two(0xF000, 0x8000), two(0xF1C0, 0xE3FF), "Ii*ss8"},
  893. /* fmovemx with register lists */
  894. {"fmovem", two(0xF020, 0xE000), two(0xF1F8, 0xFF00), "IdL3-s"}, /* fmovem.x to autodecrement, static and dynamic */
  895. {"fmovem", two(0xF000, 0xF000), two(0xF1C0, 0xFF00), "Idl3&s"}, /* fmovem.x to control, static and dynamic: */
  896. {"fmovem", two(0xF018, 0xD000), two(0xF1F8, 0xFF00), "Id+sl3"}, /* fmovem.x from autoincrement, static and dynamic: */
  897. {"fmovem", two(0xF000, 0xD000), two(0xF1C0, 0xFF00), "Id&sl3"}, /* fmovem.x from control, static and dynamic: */
  898. /* Alternate mnemonics for GNU as and GNU CC */
  899. {"fmovem", two(0xF020, 0xE000), two(0xF1F8, 0xFF00), "Id#3-s"}, /* fmovem.x to autodecrement, static and dynamic */
  900. {"fmovem", two(0xF020, 0xE800), two(0xF1F8, 0xFF8F), "IiDk-s"}, /* fmovem.x to autodecrement, static and dynamic */
  901. {"fmovem", two(0xF000, 0xF000), two(0xF1C0, 0xFF00), "Id#3&s"}, /* fmovem.x to control, static and dynamic: */
  902. {"fmovem", two(0xF000, 0xF800), two(0xF1C0, 0xFF8F), "IiDk&s"}, /* fmovem.x to control, static and dynamic: */
  903. {"fmovem", two(0xF018, 0xD000), two(0xF1F8, 0xFF00), "Id+s#3"}, /* fmovem.x from autoincrement, static and dynamic: */
  904. {"fmovem", two(0xF018, 0xD800), two(0xF1F8, 0xFF8F), "Ii+sDk"}, /* fmovem.x from autoincrement, static and dynamic: */
  905. {"fmovem", two(0xF000, 0xD000), two(0xF1C0, 0xFF00), "Id&s#3"}, /* fmovem.x from control, static and dynamic: */
  906. {"fmovem", two(0xF000, 0xD800), two(0xF1C0, 0xFF8F), "Ii&sDk"}, /* fmovem.x from control, static and dynamic: */
  907. /* fmoveml a FP-control register */
  908. {"fmovem", two(0xF000, 0xA000), two(0xF1C0, 0xE3FF), "Iis8@s"},
  909. {"fmovem", two(0xF000, 0x8000), two(0xF1C0, 0xE3FF), "Ii*ss8"},
  910. /* fmoveml a FP-control reglist */
  911. {"fmovem", two(0xF000, 0xA000), two(0xF1C0, 0xE3FF), "IiL8@s"},
  912. {"fmovem", two(0xF000, 0x8000), two(0xF2C0, 0xE3FF), "Ii*sL8"},
  913. {"fmulb", two(0xF000, 0x5823), two(0xF1C0, 0xFC7F), "Ii;bF7"},
  914. {"fmuld", two(0xF000, 0x5423), two(0xF1C0, 0xFC7F), "Ii;FF7"},
  915. {"fmull", two(0xF000, 0x4023), two(0xF1C0, 0xFC7F), "Ii;lF7"},
  916. {"fmulp", two(0xF000, 0x4C23), two(0xF1C0, 0xFC7F), "Ii;pF7"},
  917. {"fmuls", two(0xF000, 0x4423), two(0xF1C0, 0xFC7F), "Ii;fF7"},
  918. {"fmulw", two(0xF000, 0x5023), two(0xF1C0, 0xFC7F), "Ii;wF7"},
  919. {"fmulx", two(0xF000, 0x0023), two(0xF1C0, 0xE07F), "IiF8F7"},
  920. {"fmulx", two(0xF000, 0x4823), two(0xF1C0, 0xFC7F), "Ii;xF7"},
  921. /* {"fmulx", two(0xF000, 0x0023), two(0xF1C0, 0xE07F), "IiFt"}, JF */
  922. {"fnegb", two(0xF000, 0x581A), two(0xF1C0, 0xFC7F), "Ii;bF7"},
  923. {"fnegd", two(0xF000, 0x541A), two(0xF1C0, 0xFC7F), "Ii;FF7"},
  924. {"fnegl", two(0xF000, 0x401A), two(0xF1C0, 0xFC7F), "Ii;lF7"},
  925. {"fnegp", two(0xF000, 0x4C1A), two(0xF1C0, 0xFC7F), "Ii;pF7"},
  926. {"fnegs", two(0xF000, 0x441A), two(0xF1C0, 0xFC7F), "Ii;fF7"},
  927. {"fnegw", two(0xF000, 0x501A), two(0xF1C0, 0xFC7F), "Ii;wF7"},
  928. {"fnegx", two(0xF000, 0x001A), two(0xF1C0, 0xE07F), "IiF8F7"},
  929. {"fnegx", two(0xF000, 0x481A), two(0xF1C0, 0xFC7F), "Ii;xF7"},
  930. {"fnegx", two(0xF000, 0x001A), two(0xF1C0, 0xE07F), "IiFt"},
  931. {"fnop", two(0xF280, 0x0000), two(0xFFFF, 0xFFFF), "Ii"},
  932. {"fremb", two(0xF000, 0x5825), two(0xF1C0, 0xFC7F), "Ii;bF7"},
  933. {"fremd", two(0xF000, 0x5425), two(0xF1C0, 0xFC7F), "Ii;FF7"},
  934. {"freml", two(0xF000, 0x4025), two(0xF1C0, 0xFC7F), "Ii;lF7"},
  935. {"fremp", two(0xF000, 0x4C25), two(0xF1C0, 0xFC7F), "Ii;pF7"},
  936. {"frems", two(0xF000, 0x4425), two(0xF1C0, 0xFC7F), "Ii;fF7"},
  937. {"fremw", two(0xF000, 0x5025), two(0xF1C0, 0xFC7F), "Ii;wF7"},
  938. {"fremx", two(0xF000, 0x0025), two(0xF1C0, 0xE07F), "IiF8F7"},
  939. {"fremx", two(0xF000, 0x4825), two(0xF1C0, 0xFC7F), "Ii;xF7"},
  940. /* {"fremx", two(0xF000, 0x0025), two(0xF1C0, 0xE07F), "IiFt"}, JF */
  941. {"frestore", one(0xF140), one(0xF1C0), "Id&s"},
  942. {"frestore", one(0xF158), one(0xF1F8), "Id+s"},
  943. {"fsave", one(0xF100), one(0xF1C0), "Id&s"},
  944. {"fsave", one(0xF120), one(0xF1F8), "Id-s"},
  945. {"fsincosb", two(0xF000, 0x5830), two(0xF1C0, 0xFC78), "Ii;bF7FC"},
  946. {"fsincosd", two(0xF000, 0x5430), two(0xF1C0, 0xFC78), "Ii;FF7FC"},
  947. {"fsincosl", two(0xF000, 0x4030), two(0xF1C0, 0xFC78), "Ii;lF7FC"},
  948. {"fsincosp", two(0xF000, 0x4C30), two(0xF1C0, 0xFC78), "Ii;pF7FC"},
  949. {"fsincoss", two(0xF000, 0x4430), two(0xF1C0, 0xFC78), "Ii;fF7FC"},
  950. {"fsincosw", two(0xF000, 0x5030), two(0xF1C0, 0xFC78), "Ii;wF7FC"},
  951. {"fsincosx", two(0xF000, 0x0030), two(0xF1C0, 0xE078), "IiF8F7FC"},
  952. {"fsincosx", two(0xF000, 0x4830), two(0xF1C0, 0xFC78), "Ii;xF7FC"},
  953. {"fscaleb", two(0xF000, 0x5826), two(0xF1C0, 0xFC7F), "Ii;bF7"},
  954. {"fscaled", two(0xF000, 0x5426), two(0xF1C0, 0xFC7F), "Ii;FF7"},
  955. {"fscalel", two(0xF000, 0x4026), two(0xF1C0, 0xFC7F), "Ii;lF7"},
  956. {"fscalep", two(0xF000, 0x4C26), two(0xF1C0, 0xFC7F), "Ii;pF7"},
  957. {"fscales", two(0xF000, 0x4426), two(0xF1C0, 0xFC7F), "Ii;fF7"},
  958. {"fscalew", two(0xF000, 0x5026), two(0xF1C0, 0xFC7F), "Ii;wF7"},
  959. {"fscalex", two(0xF000, 0x0026), two(0xF1C0, 0xE07F), "IiF8F7"},
  960. {"fscalex", two(0xF000, 0x4826), two(0xF1C0, 0xFC7F), "Ii;xF7"},
  961. /* {"fscalex", two(0xF000, 0x0026), two(0xF1C0, 0xE07F), "IiFt"}, JF */
  962. {"fseq", two(0xF040, 0x0001), two(0xF1C0, 0xFFFF), "Ii@s"},
  963. {"fsf", two(0xF040, 0x0000), two(0xF1C0, 0xFFFF), "Ii@s"},
  964. {"fsge", two(0xF040, 0x0013), two(0xF1C0, 0xFFFF), "Ii@s"},
  965. {"fsgl", two(0xF040, 0x0016), two(0xF1C0, 0xFFFF), "Ii@s"},
  966. {"fsgle", two(0xF040, 0x0017), two(0xF1C0, 0xFFFF), "Ii@s"},
  967. {"fsgt", two(0xF040, 0x0012), two(0xF1C0, 0xFFFF), "Ii@s"},
  968. {"fsle", two(0xF040, 0x0015), two(0xF1C0, 0xFFFF), "Ii@s"},
  969. {"fslt", two(0xF040, 0x0014), two(0xF1C0, 0xFFFF), "Ii@s"},
  970. {"fsne", two(0xF040, 0x000E), two(0xF1C0, 0xFFFF), "Ii@s"},
  971. {"fsnge", two(0xF040, 0x001C), two(0xF1C0, 0xFFFF), "Ii@s"},
  972. {"fsngl", two(0xF040, 0x0019), two(0xF1C0, 0xFFFF), "Ii@s"},
  973. {"fsngle", two(0xF040, 0x0018), two(0xF1C0, 0xFFFF), "Ii@s"},
  974. {"fsngt", two(0xF040, 0x001D), two(0xF1C0, 0xFFFF), "Ii@s"},
  975. {"fsnle", two(0xF040, 0x001A), two(0xF1C0, 0xFFFF), "Ii@s"},
  976. {"fsnlt", two(0xF040, 0x001B), two(0xF1C0, 0xFFFF), "Ii@s"},
  977. {"fsoge", two(0xF040, 0x0003), two(0xF1C0, 0xFFFF), "Ii@s"},
  978. {"fsogl", two(0xF040, 0x0006), two(0xF1C0, 0xFFFF), "Ii@s"},
  979. {"fsogt", two(0xF040, 0x0002), two(0xF1C0, 0xFFFF), "Ii@s"},
  980. {"fsole", two(0xF040, 0x0005), two(0xF1C0, 0xFFFF), "Ii@s"},
  981. {"fsolt", two(0xF040, 0x0004), two(0xF1C0, 0xFFFF), "Ii@s"},
  982. {"fsor", two(0xF040, 0x0007), two(0xF1C0, 0xFFFF), "Ii@s"},
  983. {"fsseq", two(0xF040, 0x0011), two(0xF1C0, 0xFFFF), "Ii@s"},
  984. {"fssf", two(0xF040, 0x0010), two(0xF1C0, 0xFFFF), "Ii@s"},
  985. {"fssne", two(0xF040, 0x001E), two(0xF1C0, 0xFFFF), "Ii@s"},
  986. {"fsst", two(0xF040, 0x001F), two(0xF1C0, 0xFFFF), "Ii@s"},
  987. {"fst", two(0xF040, 0x000F), two(0xF1C0, 0xFFFF), "Ii@s"},
  988. {"fsueq", two(0xF040, 0x0009), two(0xF1C0, 0xFFFF), "Ii@s"},
  989. {"fsuge", two(0xF040, 0x000B), two(0xF1C0, 0xFFFF), "Ii@s"},
  990. {"fsugt", two(0xF040, 0x000A), two(0xF1C0, 0xFFFF), "Ii@s"},
  991. {"fsule", two(0xF040, 0x000D), two(0xF1C0, 0xFFFF), "Ii@s"},
  992. {"fsult", two(0xF040, 0x000C), two(0xF1C0, 0xFFFF), "Ii@s"},
  993. {"fsun", two(0xF040, 0x0008), two(0xF1C0, 0xFFFF), "Ii@s"},
  994. {"fsgldivb", two(0xF000, 0x5824), two(0xF1C0, 0xFC7F), "Ii;bF7"},
  995. {"fsgldivd", two(0xF000, 0x5424), two(0xF1C0, 0xFC7F), "Ii;FF7"},
  996. {"fsgldivl", two(0xF000, 0x4024), two(0xF1C0, 0xFC7F), "Ii;lF7"},
  997. {"fsgldivp", two(0xF000, 0x4C24), two(0xF1C0, 0xFC7F), "Ii;pF7"},
  998. {"fsgldivs", two(0xF000, 0x4424), two(0xF1C0, 0xFC7F), "Ii;fF7"},
  999. {"fsgldivw", two(0xF000, 0x5024), two(0xF1C0, 0xFC7F), "Ii;wF7"},
  1000. {"fsgldivx", two(0xF000, 0x0024), two(0xF1C0, 0xE07F), "IiF8F7"},
  1001. {"fsgldivx", two(0xF000, 0x4824), two(0xF1C0, 0xFC7F), "Ii;xF7"},
  1002. {"fsgldivx", two(0xF000, 0x0024), two(0xF1C0, 0xE07F), "IiFt"},
  1003. {"fsglmulb", two(0xF000, 0x5827), two(0xF1C0, 0xFC7F), "Ii;bF7"},
  1004. {"fsglmuld", two(0xF000, 0x5427), two(0xF1C0, 0xFC7F), "Ii;FF7"},
  1005. {"fsglmull", two(0xF000, 0x4027), two(0xF1C0, 0xFC7F), "Ii;lF7"},
  1006. {"fsglmulp", two(0xF000, 0x4C27), two(0xF1C0, 0xFC7F), "Ii;pF7"},
  1007. {"fsglmuls", two(0xF000, 0x4427), two(0xF1C0, 0xFC7F), "Ii;fF7"},
  1008. {"fsglmulw", two(0xF000, 0x5027), two(0xF1C0, 0xFC7F), "Ii;wF7"},
  1009. {"fsglmulx", two(0xF000, 0x0027), two(0xF1C0, 0xE07F), "IiF8F7"},
  1010. {"fsglmulx", two(0xF000, 0x4827), two(0xF1C0, 0xFC7F), "Ii;xF7"},
  1011. {"fsglmulx", two(0xF000, 0x0027), two(0xF1C0, 0xE07F), "IiFt"},
  1012. {"fsinb", two(0xF000, 0x580E), two(0xF1C0, 0xFC7F), "Ii;bF7"},
  1013. {"fsind", two(0xF000, 0x540E), two(0xF1C0, 0xFC7F), "Ii;FF7"},
  1014. {"fsinl", two(0xF000, 0x400E), two(0xF1C0, 0xFC7F), "Ii;lF7"},
  1015. {"fsinp", two(0xF000, 0x4C0E), two(0xF1C0, 0xFC7F), "Ii;pF7"},
  1016. {"fsins", two(0xF000, 0x440E), two(0xF1C0, 0xFC7F), "Ii;fF7"},
  1017. {"fsinw", two(0xF000, 0x500E), two(0xF1C0, 0xFC7F), "Ii;wF7"},
  1018. {"fsinx", two(0xF000, 0x000E), two(0xF1C0, 0xE07F), "IiF8F7"},
  1019. {"fsinx", two(0xF000, 0x480E), two(0xF1C0, 0xFC7F), "Ii;xF7"},
  1020. {"fsinx", two(0xF000, 0x000E), two(0xF1C0, 0xE07F), "IiFt"},
  1021. {"fsinhb", two(0xF000, 0x5802), two(0xF1C0, 0xFC7F), "Ii;bF7"},
  1022. {"fsinhd", two(0xF000, 0x5402), two(0xF1C0, 0xFC7F), "Ii;FF7"},
  1023. {"fsinhl", two(0xF000, 0x4002), two(0xF1C0, 0xFC7F), "Ii;lF7"},
  1024. {"fsinhp", two(0xF000, 0x4C02), two(0xF1C0, 0xFC7F), "Ii;pF7"},
  1025. {"fsinhs", two(0xF000, 0x4402), two(0xF1C0, 0xFC7F), "Ii;fF7"},
  1026. {"fsinhw", two(0xF000, 0x5002), two(0xF1C0, 0xFC7F), "Ii;wF7"},
  1027. {"fsinhx", two(0xF000, 0x0002), two(0xF1C0, 0xE07F), "IiF8F7"},
  1028. {"fsinhx", two(0xF000, 0x4802), two(0xF1C0, 0xFC7F), "Ii;xF7"},
  1029. {"fsinhx", two(0xF000, 0x0002), two(0xF1C0, 0xE07F), "IiFt"},
  1030. {"fsqrtb", two(0xF000, 0x5804), two(0xF1C0, 0xFC7F), "Ii;bF7"},
  1031. {"fsqrtd", two(0xF000, 0x5404), two(0xF1C0, 0xFC7F), "Ii;FF7"},
  1032. {"fsqrtl", two(0xF000, 0x4004), two(0xF1C0, 0xFC7F), "Ii;lF7"},
  1033. {"fsqrtp", two(0xF000, 0x4C04), two(0xF1C0, 0xFC7F), "Ii;pF7"},
  1034. {"fsqrts", two(0xF000, 0x4404), two(0xF1C0, 0xFC7F), "Ii;fF7"},
  1035. {"fsqrtw", two(0xF000, 0x5004), two(0xF1C0, 0xFC7F), "Ii;wF7"},
  1036. {"fsqrtx", two(0xF000, 0x0004), two(0xF1C0, 0xE07F), "IiF8F7"},
  1037. {"fsqrtx", two(0xF000, 0x4804), two(0xF1C0, 0xFC7F), "Ii;xF7"},
  1038. {"fsqrtx", two(0xF000, 0x0004), two(0xF1C0, 0xE07F), "IiFt"},
  1039. {"fsubb", two(0xF000, 0x5828), two(0xF1C0, 0xFC7F), "Ii;bF7"},
  1040. {"fsubd", two(0xF000, 0x5428), two(0xF1C0, 0xFC7F), "Ii;FF7"},
  1041. {"fsubl", two(0xF000, 0x4028), two(0xF1C0, 0xFC7F), "Ii;lF7"},
  1042. {"fsubp", two(0xF000, 0x4C28), two(0xF1C0, 0xFC7F), "Ii;pF7"},
  1043. {"fsubs", two(0xF000, 0x4428), two(0xF1C0, 0xFC7F), "Ii;fF7"},
  1044. {"fsubw", two(0xF000, 0x5028), two(0xF1C0, 0xFC7F), "Ii;wF7"},
  1045. {"fsubx", two(0xF000, 0x0028), two(0xF1C0, 0xE07F), "IiF8F7"},
  1046. {"fsubx", two(0xF000, 0x4828), two(0xF1C0, 0xFC7F), "Ii;xF7"},
  1047. {"fsubx", two(0xF000, 0x0028), two(0xF1C0, 0xE07F), "IiFt"},
  1048. {"ftanb", two(0xF000, 0x580F), two(0xF1C0, 0xFC7F), "Ii;bF7"},
  1049. {"ftand", two(0xF000, 0x540F), two(0xF1C0, 0xFC7F), "Ii;FF7"},
  1050. {"ftanl", two(0xF000, 0x400F), two(0xF1C0, 0xFC7F), "Ii;lF7"},
  1051. {"ftanp", two(0xF000, 0x4C0F), two(0xF1C0, 0xFC7F), "Ii;pF7"},
  1052. {"ftans", two(0xF000, 0x440F), two(0xF1C0, 0xFC7F), "Ii;fF7"},
  1053. {"ftanw", two(0xF000, 0x500F), two(0xF1C0, 0xFC7F), "Ii;wF7"},
  1054. {"ftanx", two(0xF000, 0x000F), two(0xF1C0, 0xE07F), "IiF8F7"},
  1055. {"ftanx", two(0xF000, 0x480F), two(0xF1C0, 0xFC7F), "Ii;xF7"},
  1056. {"ftanx", two(0xF000, 0x000F), two(0xF1C0, 0xE07F), "IiFt"},
  1057. {"ftanhb", two(0xF000, 0x5809), two(0xF1C0, 0xFC7F), "Ii;bF7"},
  1058. {"ftanhd", two(0xF000, 0x5409), two(0xF1C0, 0xFC7F), "Ii;FF7"},
  1059. {"ftanhl", two(0xF000, 0x4009), two(0xF1C0, 0xFC7F), "Ii;lF7"},
  1060. {"ftanhp", two(0xF000, 0x4C09), two(0xF1C0, 0xFC7F), "Ii;pF7"},
  1061. {"ftanhs", two(0xF000, 0x4409), two(0xF1C0, 0xFC7F), "Ii;fF7"},
  1062. {"ftanhw", two(0xF000, 0x5009), two(0xF1C0, 0xFC7F), "Ii;wF7"},
  1063. {"ftanhx", two(0xF000, 0x0009), two(0xF1C0, 0xE07F), "IiF8F7"},
  1064. {"ftanhx", two(0xF000, 0x4809), two(0xF1C0, 0xFC7F), "Ii;xF7"},
  1065. {"ftanhx", two(0xF000, 0x0009), two(0xF1C0, 0xE07F), "IiFt"},
  1066. {"ftentoxb", two(0xF000, 0x5812), two(0xF1C0, 0xFC7F), "Ii;bF7"},
  1067. {"ftentoxd", two(0xF000, 0x5412), two(0xF1C0, 0xFC7F), "Ii;FF7"},
  1068. {"ftentoxl", two(0xF000, 0x4012), two(0xF1C0, 0xFC7F), "Ii;lF7"},
  1069. {"ftentoxp", two(0xF000, 0x4C12), two(0xF1C0, 0xFC7F), "Ii;pF7"},
  1070. {"ftentoxs", two(0xF000, 0x4412), two(0xF1C0, 0xFC7F), "Ii;fF7"},
  1071. {"ftentoxw", two(0xF000, 0x5012), two(0xF1C0, 0xFC7F), "Ii;wF7"},
  1072. {"ftentoxx", two(0xF000, 0x0012), two(0xF1C0, 0xE07F), "IiF8F7"},
  1073. {"ftentoxx", two(0xF000, 0x4812), two(0xF1C0, 0xFC7F), "Ii;xF7"},
  1074. {"ftentoxx", two(0xF000, 0x0012), two(0xF1C0, 0xE07F), "IiFt"},
  1075. {"ftrapeq", two(0xF07C, 0x0001), two(0xF1FF, 0xFFFF), "Ii"},
  1076. {"ftrapf", two(0xF07C, 0x0000), two(0xF1FF, 0xFFFF), "Ii"},
  1077. {"ftrapge", two(0xF07C, 0x0013), two(0xF1FF, 0xFFFF), "Ii"},
  1078. {"ftrapgl", two(0xF07C, 0x0016), two(0xF1FF, 0xFFFF), "Ii"},
  1079. {"ftrapgle", two(0xF07C, 0x0017), two(0xF1FF, 0xFFFF), "Ii"},
  1080. {"ftrapgt", two(0xF07C, 0x0012), two(0xF1FF, 0xFFFF), "Ii"},
  1081. {"ftraple", two(0xF07C, 0x0015), two(0xF1FF, 0xFFFF), "Ii"},
  1082. {"ftraplt", two(0xF07C, 0x0014), two(0xF1FF, 0xFFFF), "Ii"},
  1083. {"ftrapne", two(0xF07C, 0x000E), two(0xF1FF, 0xFFFF), "Ii"},
  1084. {"ftrapnge", two(0xF07C, 0x001C), two(0xF1FF, 0xFFFF), "Ii"},
  1085. {"ftrapngl", two(0xF07C, 0x0019), two(0xF1FF, 0xFFFF), "Ii"},
  1086. {"ftrapngle", two(0xF07C, 0x0018), two(0xF1FF, 0xFFFF), "Ii"},
  1087. {"ftrapngt", two(0xF07C, 0x001D), two(0xF1FF, 0xFFFF), "Ii"},
  1088. {"ftrapnle", two(0xF07C, 0x001A), two(0xF1FF, 0xFFFF), "Ii"},
  1089. {"ftrapnlt", two(0xF07C, 0x001B), two(0xF1FF, 0xFFFF), "Ii"},
  1090. {"ftrapoge", two(0xF07C, 0x0003), two(0xF1FF, 0xFFFF), "Ii"},
  1091. {"ftrapogl", two(0xF07C, 0x0006), two(0xF1FF, 0xFFFF), "Ii"},
  1092. {"ftrapogt", two(0xF07C, 0x0002), two(0xF1FF, 0xFFFF), "Ii"},
  1093. {"ftrapole", two(0xF07C, 0x0005), two(0xF1FF, 0xFFFF), "Ii"},
  1094. {"ftrapolt", two(0xF07C, 0x0004), two(0xF1FF, 0xFFFF), "Ii"},
  1095. {"ftrapor", two(0xF07C, 0x0007), two(0xF1FF, 0xFFFF), "Ii"},
  1096. {"ftrapseq", two(0xF07C, 0x0011), two(0xF1FF, 0xFFFF), "Ii"},
  1097. {"ftrapsf", two(0xF07C, 0x0010), two(0xF1FF, 0xFFFF), "Ii"},
  1098. {"ftrapsne", two(0xF07C, 0x001E), two(0xF1FF, 0xFFFF), "Ii"},
  1099. {"ftrapst", two(0xF07C, 0x001F), two(0xF1FF, 0xFFFF), "Ii"},
  1100. {"ftrapt", two(0xF07C, 0x000F), two(0xF1FF, 0xFFFF), "Ii"},
  1101. {"ftrapueq", two(0xF07C, 0x0009), two(0xF1FF, 0xFFFF), "Ii"},
  1102. {"ftrapuge", two(0xF07C, 0x000B), two(0xF1FF, 0xFFFF), "Ii"},
  1103. {"ftrapugt", two(0xF07C, 0x000A), two(0xF1FF, 0xFFFF), "Ii"},
  1104. {"ftrapule", two(0xF07C, 0x000D), two(0xF1FF, 0xFFFF), "Ii"},
  1105. {"ftrapult", two(0xF07C, 0x000C), two(0xF1FF, 0xFFFF), "Ii"},
  1106. {"ftrapun", two(0xF07C, 0x0008), two(0xF1FF, 0xFFFF), "Ii"},
  1107. {"ftrapeqw", two(0xF07A, 0x0001), two(0xF1FF, 0xFFFF), "Ii^w"},
  1108. {"ftrapfw", two(0xF07A, 0x0000), two(0xF1FF, 0xFFFF), "Ii^w"},
  1109. {"ftrapgew", two(0xF07A, 0x0013), two(0xF1FF, 0xFFFF), "Ii^w"},
  1110. {"ftrapglw", two(0xF07A, 0x0016), two(0xF1FF, 0xFFFF), "Ii^w"},
  1111. {"ftrapglew", two(0xF07A, 0x0017), two(0xF1FF, 0xFFFF), "Ii^w"},
  1112. {"ftrapgtw", two(0xF07A, 0x0012), two(0xF1FF, 0xFFFF), "Ii^w"},
  1113. {"ftraplew", two(0xF07A, 0x0015), two(0xF1FF, 0xFFFF), "Ii^w"},
  1114. {"ftrapltw", two(0xF07A, 0x0014), two(0xF1FF, 0xFFFF), "Ii^w"},
  1115. {"ftrapnew", two(0xF07A, 0x000E), two(0xF1FF, 0xFFFF), "Ii^w"},
  1116. {"ftrapngew", two(0xF07A, 0x001C), two(0xF1FF, 0xFFFF), "Ii^w"},
  1117. {"ftrapnglw", two(0xF07A, 0x0019), two(0xF1FF, 0xFFFF), "Ii^w"},
  1118. {"ftrapnglew", two(0xF07A, 0x0018), two(0xF1FF, 0xFFFF), "Ii^w"},
  1119. {"ftrapngtw", two(0xF07A, 0x001D), two(0xF1FF, 0xFFFF), "Ii^w"},
  1120. {"ftrapnlew", two(0xF07A, 0x001A), two(0xF1FF, 0xFFFF), "Ii^w"},
  1121. {"ftrapnltw", two(0xF07A, 0x001B), two(0xF1FF, 0xFFFF), "Ii^w"},
  1122. {"ftrapogew", two(0xF07A, 0x0003), two(0xF1FF, 0xFFFF), "Ii^w"},
  1123. {"ftrapoglw", two(0xF07A, 0x0006), two(0xF1FF, 0xFFFF), "Ii^w"},
  1124. {"ftrapogtw", two(0xF07A, 0x0002), two(0xF1FF, 0xFFFF), "Ii^w"},
  1125. {"ftrapolew", two(0xF07A, 0x0005), two(0xF1FF, 0xFFFF), "Ii^w"},
  1126. {"ftrapoltw", two(0xF07A, 0x0004), two(0xF1FF, 0xFFFF), "Ii^w"},
  1127. {"ftraporw", two(0xF07A, 0x0007), two(0xF1FF, 0xFFFF), "Ii^w"},
  1128. {"ftrapseqw", two(0xF07A, 0x0011), two(0xF1FF, 0xFFFF), "Ii^w"},
  1129. {"ftrapsfw", two(0xF07A, 0x0010), two(0xF1FF, 0xFFFF), "Ii^w"},
  1130. {"ftrapsnew", two(0xF07A, 0x001E), two(0xF1FF, 0xFFFF), "Ii^w"},
  1131. {"ftrapstw", two(0xF07A, 0x001F), two(0xF1FF, 0xFFFF), "Ii^w"},
  1132. {"ftraptw", two(0xF07A, 0x000F), two(0xF1FF, 0xFFFF), "Ii^w"},
  1133. {"ftrapueqw", two(0xF07A, 0x0009), two(0xF1FF, 0xFFFF), "Ii^w"},
  1134. {"ftrapugew", two(0xF07A, 0x000B), two(0xF1FF, 0xFFFF), "Ii^w"},
  1135. {"ftrapugtw", two(0xF07A, 0x000A), two(0xF1FF, 0xFFFF), "Ii^w"},
  1136. {"ftrapulew", two(0xF07A, 0x000D), two(0xF1FF, 0xFFFF), "Ii^w"},
  1137. {"ftrapultw", two(0xF07A, 0x000C), two(0xF1FF, 0xFFFF), "Ii^w"},
  1138. {"ftrapunw", two(0xF07A, 0x0008), two(0xF1FF, 0xFFFF), "Ii^w"},
  1139. {"ftrapeql", two(0xF07B, 0x0001), two(0xF1FF, 0xFFFF), "Ii^l"},
  1140. {"ftrapfl", two(0xF07B, 0x0000), two(0xF1FF, 0xFFFF), "Ii^l"},
  1141. {"ftrapgel", two(0xF07B, 0x0013), two(0xF1FF, 0xFFFF), "Ii^l"},
  1142. {"ftrapgll", two(0xF07B, 0x0016), two(0xF1FF, 0xFFFF), "Ii^l"},
  1143. {"ftrapglel", two(0xF07B, 0x0017), two(0xF1FF, 0xFFFF), "Ii^l"},
  1144. {"ftrapgtl", two(0xF07B, 0x0012), two(0xF1FF, 0xFFFF), "Ii^l"},
  1145. {"ftraplel", two(0xF07B, 0x0015), two(0xF1FF, 0xFFFF), "Ii^l"},
  1146. {"ftrapltl", two(0xF07B, 0x0014), two(0xF1FF, 0xFFFF), "Ii^l"},
  1147. {"ftrapnel", two(0xF07B, 0x000E), two(0xF1FF, 0xFFFF), "Ii^l"},
  1148. {"ftrapngel", two(0xF07B, 0x001C), two(0xF1FF, 0xFFFF), "Ii^l"},
  1149. {"ftrapngll", two(0xF07B, 0x0019), two(0xF1FF, 0xFFFF), "Ii^l"},
  1150. {"ftrapnglel", two(0xF07B, 0x0018), two(0xF1FF, 0xFFFF), "Ii^l"},
  1151. {"ftrapngtl", two(0xF07B, 0x001D), two(0xF1FF, 0xFFFF), "Ii^l"},
  1152. {"ftrapnlel", two(0xF07B, 0x001A), two(0xF1FF, 0xFFFF), "Ii^l"},
  1153. {"ftrapnltl", two(0xF07B, 0x001B), two(0xF1FF, 0xFFFF), "Ii^l"},
  1154. {"ftrapogel", two(0xF07B, 0x0003), two(0xF1FF, 0xFFFF), "Ii^l"},
  1155. {"ftrapogll", two(0xF07B, 0x0006), two(0xF1FF, 0xFFFF), "Ii^l"},
  1156. {"ftrapogtl", two(0xF07B, 0x0002), two(0xF1FF, 0xFFFF), "Ii^l"},
  1157. {"ftrapolel", two(0xF07B, 0x0005), two(0xF1FF, 0xFFFF), "Ii^l"},
  1158. {"ftrapoltl", two(0xF07B, 0x0004), two(0xF1FF, 0xFFFF), "Ii^l"},
  1159. {"ftraporl", two(0xF07B, 0x0007), two(0xF1FF, 0xFFFF), "Ii^l"},
  1160. {"ftrapseql", two(0xF07B, 0x0011), two(0xF1FF, 0xFFFF), "Ii^l"},
  1161. {"ftrapsfl", two(0xF07B, 0x0010), two(0xF1FF, 0xFFFF), "Ii^l"},
  1162. {"ftrapsnel", two(0xF07B, 0x001E), two(0xF1FF, 0xFFFF), "Ii^l"},
  1163. {"ftrapstl", two(0xF07B, 0x001F), two(0xF1FF, 0xFFFF), "Ii^l"},
  1164. {"ftraptl", two(0xF07B, 0x000F), two(0xF1FF, 0xFFFF), "Ii^l"},
  1165. {"ftrapueql", two(0xF07B, 0x0009), two(0xF1FF, 0xFFFF), "Ii^l"},
  1166. {"ftrapugel", two(0xF07B, 0x000B), two(0xF1FF, 0xFFFF), "Ii^l"},
  1167. {"ftrapugtl", two(0xF07B, 0x000A), two(0xF1FF, 0xFFFF), "Ii^l"},
  1168. {"ftrapulel", two(0xF07B, 0x000D), two(0xF1FF, 0xFFFF), "Ii^l"},
  1169. {"ftrapultl", two(0xF07B, 0x000C), two(0xF1FF, 0xFFFF), "Ii^l"},
  1170. {"ftrapunl", two(0xF07B, 0x0008), two(0xF1FF, 0xFFFF), "Ii^l"},
  1171. {"ftstb", two(0xF000, 0x583A), two(0xF1C0, 0xFC7F), "Ii;b"},
  1172. {"ftstd", two(0xF000, 0x543A), two(0xF1C0, 0xFC7F), "Ii;F"},
  1173. {"ftstl", two(0xF000, 0x403A), two(0xF1C0, 0xFC7F), "Ii;l"},
  1174. {"ftstp", two(0xF000, 0x4C3A), two(0xF1C0, 0xFC7F), "Ii;p"},
  1175. {"ftsts", two(0xF000, 0x443A), two(0xF1C0, 0xFC7F), "Ii;f"},
  1176. {"ftstw", two(0xF000, 0x503A), two(0xF1C0, 0xFC7F), "Ii;w"},
  1177. {"ftstx", two(0xF000, 0x003A), two(0xF1C0, 0xE07F), "IiF8"},
  1178. {"ftstx", two(0xF000, 0x483A), two(0xF1C0, 0xFC7F), "Ii;x"},
  1179. {"ftwotoxb", two(0xF000, 0x5811), two(0xF1C0, 0xFC7F), "Ii;bF7"},
  1180. {"ftwotoxd", two(0xF000, 0x5411), two(0xF1C0, 0xFC7F), "Ii;FF7"},
  1181. {"ftwotoxl", two(0xF000, 0x4011), two(0xF1C0, 0xFC7F), "Ii;lF7"},
  1182. {"ftwotoxp", two(0xF000, 0x4C11), two(0xF1C0, 0xFC7F), "Ii;pF7"},
  1183. {"ftwotoxs", two(0xF000, 0x4411), two(0xF1C0, 0xFC7F), "Ii;fF7"},
  1184. {"ftwotoxw", two(0xF000, 0x5011), two(0xF1C0, 0xFC7F), "Ii;wF7"},
  1185. {"ftwotoxx", two(0xF000, 0x0011), two(0xF1C0, 0xE07F), "IiF8F7"},
  1186. {"ftwotoxx", two(0xF000, 0x4811), two(0xF1C0, 0xFC7F), "Ii;xF7"},
  1187. {"ftwotoxx", two(0xF000, 0x0011), two(0xF1C0, 0xE07F), "IiFt"},
  1188. {"fjeq", one(0xF081), one(0xF1FF), "IdBc"},
  1189. {"fjf", one(0xF080), one(0xF1FF), "IdBc"},
  1190. {"fjge", one(0xF093), one(0xF1FF), "IdBc"},
  1191. {"fjgl", one(0xF096), one(0xF1FF), "IdBc"},
  1192. {"fjgle", one(0xF097), one(0xF1FF), "IdBc"},
  1193. {"fjgt", one(0xF092), one(0xF1FF), "IdBc"},
  1194. {"fjle", one(0xF095), one(0xF1FF), "IdBc"},
  1195. {"fjlt", one(0xF094), one(0xF1FF), "IdBc"},
  1196. {"fjne", one(0xF08E), one(0xF1FF), "IdBc"},
  1197. {"fjnge", one(0xF09C), one(0xF1FF), "IdBc"},
  1198. {"fjngl", one(0xF099), one(0xF1FF), "IdBc"},
  1199. {"fjngle", one(0xF098), one(0xF1FF), "IdBc"},
  1200. {"fjngt", one(0xF09D), one(0xF1FF), "IdBc"},
  1201. {"fjnle", one(0xF09A), one(0xF1FF), "IdBc"},
  1202. {"fjnlt", one(0xF09B), one(0xF1FF), "IdBc"},
  1203. {"fjoge", one(0xF083), one(0xF1FF), "IdBc"},
  1204. {"fjogl", one(0xF086), one(0xF1FF), "IdBc"},
  1205. {"fjogt", one(0xF082), one(0xF1FF), "IdBc"},
  1206. {"fjole", one(0xF085), one(0xF1FF), "IdBc"},
  1207. {"fjolt", one(0xF084), one(0xF1FF), "IdBc"},
  1208. {"fjor", one(0xF087), one(0xF1FF), "IdBc"},
  1209. {"fjseq", one(0xF091), one(0xF1FF), "IdBc"},
  1210. {"fjsf", one(0xF090), one(0xF1FF), "IdBc"},
  1211. {"fjsne", one(0xF09E), one(0xF1FF), "IdBc"},
  1212. {"fjst", one(0xF09F), one(0xF1FF), "IdBc"},
  1213. {"fjt", one(0xF08F), one(0xF1FF), "IdBc"},
  1214. {"fjueq", one(0xF089), one(0xF1FF), "IdBc"},
  1215. {"fjuge", one(0xF08B), one(0xF1FF), "IdBc"},
  1216. {"fjugt", one(0xF08A), one(0xF1FF), "IdBc"},
  1217. {"fjule", one(0xF08D), one(0xF1FF), "IdBc"},
  1218. {"fjult", one(0xF08C), one(0xF1FF), "IdBc"},
  1219. {"fjun", one(0xF088), one(0xF1FF), "IdBc"},
  1220. /* The assembler will ignore attempts to force a short offset */
  1221. {"bhis", one(0061000), one(0177400), "Bg"},
  1222. {"blss", one(0061400), one(0177400), "Bg"},
  1223. {"bccs", one(0062000), one(0177400), "Bg"},
  1224. {"bcss", one(0062400), one(0177400), "Bg"},
  1225. {"bnes", one(0063000), one(0177400), "Bg"},
  1226. {"beqs", one(0063400), one(0177400), "Bg"},
  1227. {"bvcs", one(0064000), one(0177400), "Bg"},
  1228. {"bvss", one(0064400), one(0177400), "Bg"},
  1229. {"bpls", one(0065000), one(0177400), "Bg"},
  1230. {"bmis", one(0065400), one(0177400), "Bg"},
  1231. {"bges", one(0066000), one(0177400), "Bg"},
  1232. {"blts", one(0066400), one(0177400), "Bg"},
  1233. {"bgts", one(0067000), one(0177400), "Bg"},
  1234. {"bles", one(0067400), one(0177400), "Bg"},
  1235. /* Alternate mnemonics for SUN */
  1236. {"jbsr", one(0060400), one(0177400), "Bg"},
  1237. {"jbsr", one(0047200), one(0177700), "!s"},
  1238. {"jra", one(0060000), one(0177400), "Bg"},
  1239. {"jra", one(0047300), one(0177700), "!s"},
  1240. {"jhi", one(0061000), one(0177400), "Bg"},
  1241. {"jls", one(0061400), one(0177400), "Bg"},
  1242. {"jcc", one(0062000), one(0177400), "Bg"},
  1243. {"jcs", one(0062400), one(0177400), "Bg"},
  1244. {"jne", one(0063000), one(0177400), "Bg"},
  1245. {"jeq", one(0063400), one(0177400), "Bg"},
  1246. {"jvc", one(0064000), one(0177400), "Bg"},
  1247. {"jvs", one(0064400), one(0177400), "Bg"},
  1248. {"jpl", one(0065000), one(0177400), "Bg"},
  1249. {"jmi", one(0065400), one(0177400), "Bg"},
  1250. {"jge", one(0066000), one(0177400), "Bg"},
  1251. {"jlt", one(0066400), one(0177400), "Bg"},
  1252. {"jgt", one(0067000), one(0177400), "Bg"},
  1253. {"jle", one(0067400), one(0177400), "Bg"},
  1254. /* Short offsets are ignored */
  1255. {"jbsrs", one(0060400), one(0177400), "Bg"},
  1256. {"jras", one(0060000), one(0177400), "Bg"},
  1257. {"jhis", one(0061000), one(0177400), "Bg"},
  1258. {"jlss", one(0061400), one(0177400), "Bg"},
  1259. {"jccs", one(0062000), one(0177400), "Bg"},
  1260. {"jcss", one(0062400), one(0177400), "Bg"},
  1261. {"jnes", one(0063000), one(0177400), "Bg"},
  1262. {"jeqs", one(0063400), one(0177400), "Bg"},
  1263. {"jvcs", one(0064000), one(0177400), "Bg"},
  1264. {"jvss", one(0064400), one(0177400), "Bg"},
  1265. {"jpls", one(0065000), one(0177400), "Bg"},
  1266. {"jmis", one(0065400), one(0177400), "Bg"},
  1267. {"jges", one(0066000), one(0177400), "Bg"},
  1268. {"jlts", one(0066400), one(0177400), "Bg"},
  1269. {"jgts", one(0067000), one(0177400), "Bg"},
  1270. {"jles", one(0067400), one(0177400), "Bg"},
  1271. {"movql", one(0070000), one(0170400), "MsDd"},
  1272. {"moveql", one(0070000), one(0170400), "MsDd"},
  1273. {"moval", one(0020100), one(0170700), "*lAd"},
  1274. {"movaw", one(0030100), one(0170700), "*wAd"},
  1275. {"movb", one(0010000), one(0170000), ";b$d"}, /* mov */
  1276. {"movl", one(0070000), one(0170400), "MsDd"}, /* movq written as mov */
  1277. {"movl", one(0020000), one(0170000), "*l$d"},
  1278. {"movl", one(0020100), one(0170700), "*lAd"},
  1279. {"movl", one(0047140), one(0177770), "AsUd"}, /* mov to USP */
  1280. {"movl", one(0047150), one(0177770), "UdAs"}, /* mov from USP */
  1281. {"movc", one(0047173), one(0177777), "R1Jj"},
  1282. {"movc", one(0047173), one(0177777), "R1#j"},
  1283. {"movc", one(0047172), one(0177777), "JjR1"},
  1284. {"movc", one(0047172), one(0177777), "#jR1"},
  1285. {"movml", one(0044300), one(0177700), "#w&s"}, /* movm reg to mem. */
  1286. {"movml", one(0044340), one(0177770), "#w-s"}, /* movm reg to autodecrement. */
  1287. {"movml", one(0046300), one(0177700), "!s#w"}, /* movm mem to reg. */
  1288. {"movml", one(0046330), one(0177770), "+s#w"}, /* movm autoinc to reg. */
  1289. {"movml", one(0044300), one(0177700), "Lw&s"}, /* movm reg to mem. */
  1290. {"movml", one(0044340), one(0177770), "lw-s"}, /* movm reg to autodecrement. */
  1291. {"movml", one(0046300), one(0177700), "!sLw"}, /* movm mem to reg. */
  1292. {"movml", one(0046330), one(0177770), "+sLw"}, /* movm autoinc to reg. */
  1293. {"movmw", one(0044200), one(0177700), "#w&s"}, /* movm reg to mem. */
  1294. {"movmw", one(0044240), one(0177770), "#w-s"}, /* movm reg to autodecrement. */
  1295. {"movmw", one(0046200), one(0177700), "!s#w"}, /* movm mem to reg. */
  1296. {"movmw", one(0046230), one(0177770), "+s#w"}, /* movm autoinc to reg. */
  1297. {"movmw", one(0044200), one(0177700), "Lw&s"}, /* movm reg to mem. */
  1298. {"movmw", one(0044240), one(0177770), "lw-s"}, /* movm reg to autodecrement. */
  1299. {"movmw", one(0046200), one(0177700), "!sLw"}, /* movm mem to reg. */
  1300. {"movmw", one(0046230), one(0177770), "+sLw"}, /* movm autoinc to reg. */
  1301. {"movpl", one(0000510), one(0170770), "dsDd"}, /* memory to register */
  1302. {"movpl", one(0000710), one(0170770), "Ddds"}, /* register to memory */
  1303. {"movpw", one(0000410), one(0170770), "dsDd"}, /* memory to register */
  1304. {"movpw", one(0000610), one(0170770), "Ddds"}, /* register to memory */
  1305. {"movq", one(0070000), one(0170400), "MsDd"},
  1306. {"movw", one(0030000), one(0170000), "*w$d"},
  1307. {"movw", one(0030100), one(0170700), "*wAd"}, /* mova, written as mov */
  1308. {"movw", one(0040300), one(0177700), "Ss$s"}, /* Move from sr */
  1309. {"movw", one(0041300), one(0177700), "Cs$s"}, /* Move from ccr */
  1310. {"movw", one(0042300), one(0177700), ";wCd"}, /* mov to ccr */
  1311. {"movw", one(0043300), one(0177700), ";wSd"}, /* mov to sr */
  1312. {"movsb", two(0007000, 0), two(0177700, 07777), "~sR1"},
  1313. {"movsb", two(0007000, 04000), two(0177700, 07777), "R1~s"},
  1314. {"movsl", two(0007200, 0), two(0177700, 07777), "~sR1"},
  1315. {"movsl", two(0007200, 04000), two(0177700, 07777), "R1~s"},
  1316. {"movsw", two(0007100, 0), two(0177700, 07777), "~sR1"},
  1317. {"movsw", two(0007100, 04000), two(0177700, 07777), "R1~s"},
  1318. #ifdef m68851
  1319. /* name */ /* opcode */ /* match */ /* args */
  1320. {"pbac", one(0xf0c7), one(0xffbf), "Bc"},
  1321. {"pbacw", one(0xf087), one(0xffbf), "Bc"},
  1322. {"pbas", one(0xf0c6), one(0xffbf), "Bc"},
  1323. {"pbasw", one(0xf086), one(0xffbf), "Bc"},
  1324. {"pbbc", one(0xf0c1), one(0xffbf), "Bc"},
  1325. {"pbbcw", one(0xf081), one(0xffbf), "Bc"},
  1326. {"pbbs", one(0xf0c0), one(0xffbf), "Bc"},
  1327. {"pbbsw", one(0xf080), one(0xffbf), "Bc"},
  1328. {"pbcc", one(0xf0cf), one(0xffbf), "Bc"},
  1329. {"pbccw", one(0xf08f), one(0xffbf), "Bc"},
  1330. {"pbcs", one(0xf0ce), one(0xffbf), "Bc"},
  1331. {"pbcsw", one(0xf08e), one(0xffbf), "Bc"},
  1332. {"pbgc", one(0xf0cd), one(0xffbf), "Bc"},
  1333. {"pbgcw", one(0xf08d), one(0xffbf), "Bc"},
  1334. {"pbgs", one(0xf0cc), one(0xffbf), "Bc"},
  1335. {"pbgsw", one(0xf08c), one(0xffbf), "Bc"},
  1336. {"pbic", one(0xf0cb), one(0xffbf), "Bc"},
  1337. {"pbicw", one(0xf08b), one(0xffbf), "Bc"},
  1338. {"pbis", one(0xf0ca), one(0xffbf), "Bc"},
  1339. {"pbisw", one(0xf08a), one(0xffbf), "Bc"},
  1340. {"pblc", one(0xf0c3), one(0xffbf), "Bc"},
  1341. {"pblcw", one(0xf083), one(0xffbf), "Bc"},
  1342. {"pbls", one(0xf0c2), one(0xffbf), "Bc"},
  1343. {"pblsw", one(0xf082), one(0xffbf), "Bc"},
  1344. {"pbsc", one(0xf0c5), one(0xffbf), "Bc"},
  1345. {"pbscw", one(0xf085), one(0xffbf), "Bc"},
  1346. {"pbss", one(0xf0c4), one(0xffbf), "Bc"},
  1347. {"pbssw", one(0xf084), one(0xffbf), "Bc"},
  1348. {"pbwc", one(0xf0c9), one(0xffbf), "Bc"},
  1349. {"pbwcw", one(0xf089), one(0xffbf), "Bc"},
  1350. {"pbws", one(0xf0c8), one(0xffbf), "Bc"},
  1351. {"pbwsw", one(0xf088), one(0xffbf), "Bc"},
  1352. {"pdbac", two(0xf048, 0x0007), two(0xfff8, 0xffff), "DsBw"},
  1353. {"pdbas", two(0xf048, 0x0006), two(0xfff8, 0xffff), "DsBw"},
  1354. {"pdbbc", two(0xf048, 0x0001), two(0xfff8, 0xffff), "DsBw"},
  1355. {"pdbbs", two(0xf048, 0x0000), two(0xfff8, 0xffff), "DsBw"},
  1356. {"pdbcc", two(0xf048, 0x000f), two(0xfff8, 0xffff), "DsBw"},
  1357. {"pdbcs", two(0xf048, 0x000e), two(0xfff8, 0xffff), "DsBw"},
  1358. {"pdbgc", two(0xf048, 0x000d), two(0xfff8, 0xffff), "DsBw"},
  1359. {"pdbgs", two(0xf048, 0x000c), two(0xfff8, 0xffff), "DsBw"},
  1360. {"pdbic", two(0xf048, 0x000b), two(0xfff8, 0xffff), "DsBw"},
  1361. {"pdbis", two(0xf048, 0x000a), two(0xfff8, 0xffff), "DsBw"},
  1362. {"pdblc", two(0xf048, 0x0003), two(0xfff8, 0xffff), "DsBw"},
  1363. {"pdbls", two(0xf048, 0x0002), two(0xfff8, 0xffff), "DsBw"},
  1364. {"pdbsc", two(0xf048, 0x0005), two(0xfff8, 0xffff), "DsBw"},
  1365. {"pdbss", two(0xf048, 0x0004), two(0xfff8, 0xffff), "DsBw"},
  1366. {"pdbwc", two(0xf048, 0x0009), two(0xfff8, 0xffff), "DsBw"},
  1367. {"pdbws", two(0xf048, 0x0008), two(0xfff8, 0xffff), "DsBw"},
  1368. {"pflusha", two(0xf000, 0x2400), two(0xffff, 0xffff), "" },
  1369. {"pflush", two(0xf000, 0x3010), two(0xffc0, 0xfe10), "T3T9" },
  1370. {"pflush", two(0xf000, 0x3810), two(0xffc0, 0xfe10), "T3T9&s" },
  1371. {"pflush", two(0xf000, 0x3008), two(0xffc0, 0xfe18), "D3T9" },
  1372. {"pflush", two(0xf000, 0x3808), two(0xffc0, 0xfe18), "D3T9&s" },
  1373. {"pflush", two(0xf000, 0x3000), two(0xffc0, 0xfe1e), "f3T9" },
  1374. {"pflush", two(0xf000, 0x3800), two(0xffc0, 0xfe1e), "f3T9&s" },
  1375. {"pflushs", two(0xf000, 0x3410), two(0xfff8, 0xfe10), "T3T9" },
  1376. {"pflushs", two(0xf000, 0x3c00), two(0xfff8, 0xfe00), "T3T9&s" },
  1377. {"pflushs", two(0xf000, 0x3408), two(0xfff8, 0xfe18), "D3T9" },
  1378. {"pflushs", two(0xf000, 0x3c08), two(0xfff8, 0xfe18), "D3T9&s" },
  1379. {"pflushs", two(0xf000, 0x3400), two(0xfff8, 0xfe1e), "f3T9" },
  1380. {"pflushs", two(0xf000, 0x3c00), two(0xfff8, 0xfe1e), "f3T9&s"},
  1381. {"pflushr", two(0xf000, 0xa000), two(0xffc0, 0xffff), "|s" },
  1382. {"ploadr", two(0xf000, 0x2210), two(0xffc0, 0xfff0), "T3&s" },
  1383. {"ploadr", two(0xf000, 0x2208), two(0xffc0, 0xfff8), "D3&s" },
  1384. {"ploadr", two(0xf000, 0x2200), two(0xffc0, 0xfffe), "f3&s" },
  1385. {"ploadw", two(0xf000, 0x2010), two(0xffc0, 0xfff0), "T3&s" },
  1386. {"ploadw", two(0xf000, 0x2008), two(0xffc0, 0xfff8), "D3&s" },
  1387. {"ploadw", two(0xf000, 0x2000), two(0xffc0, 0xfffe), "f3&s" },
  1388. /* TC, CRP, DRP, SRP, CAL, VAL, SCC, AC */
  1389. {"pmove", two(0xf000, 0x4000), two(0xffc0, 0xe3ff), "*sP8" },
  1390. {"pmove", two(0xf000, 0x4200), two(0xffc0, 0xe3ff), "P8%s" },
  1391. {"pmove", two(0xf000, 0x4000), two(0xffc0, 0xe3ff), "|sW8" },
  1392. {"pmove", two(0xf000, 0x4200), two(0xffc0, 0xe3ff), "W8~s" },
  1393. /* BADx, BACx */
  1394. {"pmove", two(0xf000, 0x6200), two(0xffc0, 0xe3e3), "*sX3" },
  1395. {"pmove", two(0xf000, 0x6000), two(0xffc0, 0xe3e3), "X3%s" },
  1396. /* PSR, PCSR */
  1397. /* {"pmove", two(0xf000, 0x6100), two(oxffc0, oxffff), "*sZ8" }, */
  1398. {"pmove", two(0xf000, 0x6000), two(0xffc0, 0xffff), "*sY8" },
  1399. {"pmove", two(0xf000, 0x6200), two(0xffc0, 0xffff), "Y8%s" },
  1400. {"pmove", two(0xf000, 0x6600), two(0xffc0, 0xffff), "Z8%s" },
  1401. {"prestore", one(0xf140), one(0xffc0), "&s"},
  1402. {"prestore", one(0xf158), one(0xfff8), "+s"},
  1403. {"psave", one(0xf100), one(0xffc0), "&s"},
  1404. {"psave", one(0xf100), one(0xffc0), "+s"},
  1405. {"psac", two(0xf040, 0x0007), two(0xffc0, 0xffff), "@s"},
  1406. {"psas", two(0xf040, 0x0006), two(0xffc0, 0xffff), "@s"},
  1407. {"psbc", two(0xf040, 0x0001), two(0xffc0, 0xffff), "@s"},
  1408. {"psbs", two(0xf040, 0x0000), two(0xffc0, 0xffff), "@s"},
  1409. {"pscc", two(0xf040, 0x000f), two(0xffc0, 0xffff), "@s"},
  1410. {"pscs", two(0xf040, 0x000e), two(0xffc0, 0xffff), "@s"},
  1411. {"psgc", two(0xf040, 0x000d), two(0xffc0, 0xffff), "@s"},
  1412. {"psgs", two(0xf040, 0x000c), two(0xffc0, 0xffff), "@s"},
  1413. {"psic", two(0xf040, 0x000b), two(0xffc0, 0xffff), "@s"},
  1414. {"psis", two(0xf040, 0x000a), two(0xffc0, 0xffff), "@s"},
  1415. {"pslc", two(0xf040, 0x0003), two(0xffc0, 0xffff), "@s"},
  1416. {"psls", two(0xf040, 0x0002), two(0xffc0, 0xffff), "@s"},
  1417. {"pssc", two(0xf040, 0x0005), two(0xffc0, 0xffff), "@s"},
  1418. {"psss", two(0xf040, 0x0004), two(0xffc0, 0xffff), "@s"},
  1419. {"pswc", two(0xf040, 0x0009), two(0xffc0, 0xffff), "@s"},
  1420. {"psws", two(0xf040, 0x0008), two(0xffc0, 0xffff), "@s"},
  1421. {"ptestr", two(0xf000, 0x8210), two(0xffc0, 0xe3f0), "T3&sQ8" },
  1422. {"ptestr", two(0xf000, 0x8310), two(0xffc0, 0xe310), "T3&sQ8A9" },
  1423. {"ptestr", two(0xf000, 0x8208), two(0xffc0, 0xe3f8), "D3&sQ8" },
  1424. {"ptestr", two(0xf000, 0x8308), two(0xffc0, 0xe318), "D3&sQ8A9" },
  1425. {"ptestr", two(0xf000, 0x8200), two(0xffc0, 0xe3fe), "f3&sQ8" },
  1426. {"ptestr", two(0xf000, 0x8300), two(0xffc0, 0xe31e), "f3&sQ8A9" },
  1427. {"ptestw", two(0xf000, 0x8010), two(0xffc0, 0xe3f0), "T3&sQ8" },
  1428. {"ptestw", two(0xf000, 0x8110), two(0xffc0, 0xe310), "T3&sQ8A9" },
  1429. {"ptestw", two(0xf000, 0x8008), two(0xffc0, 0xe3f8), "D3&sQ8" },
  1430. {"ptestw", two(0xf000, 0x8108), two(0xffc0, 0xe318), "D3&sQ8A9" },
  1431. {"ptestw", two(0xf000, 0x8000), two(0xffc0, 0xe3fe), "f3&sQ8" },
  1432. {"ptestw", two(0xf000, 0x8100), two(0xffc0, 0xe31e), "f3&sQ8A9" },
  1433. {"ptrapacw", two(0xf07a, 0x0007), two(0xffff, 0xffff), "#w"},
  1434. {"ptrapacl", two(0xf07b, 0x0007), two(0xffff, 0xffff), "#l"},
  1435. {"ptrapac", two(0xf07c, 0x0007), two(0xffff, 0xffff), ""},
  1436. {"ptrapasw", two(0xf07a, 0x0006), two(0xffff, 0xffff), "#w"},
  1437. {"ptrapasl", two(0xf07b, 0x0006), two(0xffff, 0xffff), "#l"},
  1438. {"ptrapas", two(0xf07c, 0x0006), two(0xffff, 0xffff), ""},
  1439. {"ptrapbcw", two(0xf07a, 0x0001), two(0xffff, 0xffff), "#w"},
  1440. {"ptrapbcl", two(0xf07b, 0x0001), two(0xffff, 0xffff), "#l"},
  1441. {"ptrapbc", two(0xf07c, 0x0001), two(0xffff, 0xffff), ""},
  1442. {"ptrapbsw", two(0xf07a, 0x0000), two(0xffff, 0xffff), "#w"},
  1443. {"ptrapbsl", two(0xf07b, 0x0000), two(0xffff, 0xffff), "#l"},
  1444. {"ptrapbs", two(0xf07c, 0x0000), two(0xffff, 0xffff), ""},
  1445. {"ptrapccw", two(0xf07a, 0x000f), two(0xffff, 0xffff), "#w"},
  1446. {"ptrapccl", two(0xf07b, 0x000f), two(0xffff, 0xffff), "#l"},
  1447. {"ptrapcc", two(0xf07c, 0x000f), two(0xffff, 0xffff), ""},
  1448. {"ptrapcsw", two(0xf07a, 0x000e), two(0xffff, 0xffff), "#w"},
  1449. {"ptrapcsl", two(0xf07b, 0x000e), two(0xffff, 0xffff), "#l"},
  1450. {"ptrapcs", two(0xf07c, 0x000e), two(0xffff, 0xffff), ""},
  1451. {"ptrapgcw", two(0xf07a, 0x000d), two(0xffff, 0xffff), "#w"},
  1452. {"ptrapgcl", two(0xf07b, 0x000d), two(0xffff, 0xffff), "#l"},
  1453. {"ptrapgc", two(0xf07c, 0x000d), two(0xffff, 0xffff), ""},
  1454. {"ptrapgsw", two(0xf07a, 0x000c), two(0xffff, 0xffff), "#w"},
  1455. {"ptrapgsl", two(0xf07b, 0x000c), two(0xffff, 0xffff), "#l"},
  1456. {"ptrapgs", two(0xf07c, 0x000c), two(0xffff, 0xffff), ""},
  1457. {"ptrapicw", two(0xf07a, 0x000b), two(0xffff, 0xffff), "#w"},
  1458. {"ptrapicl", two(0xf07b, 0x000b), two(0xffff, 0xffff), "#l"},
  1459. {"ptrapic", two(0xf07c, 0x000b), two(0xffff, 0xffff), ""},
  1460. {"ptrapisw", two(0xf07a, 0x000a), two(0xffff, 0xffff), "#w"},
  1461. {"ptrapisl", two(0xf07b, 0x000a), two(0xffff, 0xffff), "#l"},
  1462. {"ptrapis", two(0xf07c, 0x000a), two(0xffff, 0xffff), ""},
  1463. {"ptraplcw", two(0xf07a, 0x0003), two(0xffff, 0xffff), "#w"},
  1464. {"ptraplcl", two(0xf07b, 0x0003), two(0xffff, 0xffff), "#l"},
  1465. {"ptraplc", two(0xf07c, 0x0003), two(0xffff, 0xffff), ""},
  1466. {"ptraplsw", two(0xf07a, 0x0002), two(0xffff, 0xffff), "#w"},
  1467. {"ptraplsl", two(0xf07b, 0x0002), two(0xffff, 0xffff), "#l"},
  1468. {"ptrapls", two(0xf07c, 0x0002), two(0xffff, 0xffff), ""},
  1469. {"ptrapscw", two(0xf07a, 0x0005), two(0xffff, 0xffff), "#w"},
  1470. {"ptrapscl", two(0xf07b, 0x0005), two(0xffff, 0xffff), "#l"},
  1471. {"ptrapsc", two(0xf07c, 0x0005), two(0xffff, 0xffff), ""},
  1472. {"ptrapssw", two(0xf07a, 0x0004), two(0xffff, 0xffff), "#w"},
  1473. {"ptrapssl", two(0xf07b, 0x0004), two(0xffff, 0xffff), "#l"},
  1474. {"ptrapss", two(0xf07c, 0x0004), two(0xffff, 0xffff), ""},
  1475. {"ptrapwcw", two(0xf07a, 0x0009), two(0xffff, 0xffff), "#w"},
  1476. {"ptrapwcl", two(0xf07b, 0x0009), two(0xffff, 0xffff), "#l"},
  1477. {"ptrapwc", two(0xf07c, 0x0009), two(0xffff, 0xffff), ""},
  1478. {"ptrapwsw", two(0xf07a, 0x0008), two(0xffff, 0xffff), "#w"},
  1479. {"ptrapwsl", two(0xf07b, 0x0008), two(0xffff, 0xffff), "#l"},
  1480. {"ptrapws", two(0xf07c, 0x0008), two(0xffff, 0xffff), ""},
  1481. {"pvalid", two(0xf000, 0x2800), two(0xffc0, 0xffff), "Vs&s"},
  1482. {"pvalid", two(0xf000, 0x2c00), two(0xffc0, 0xfff8), "A3&s" },
  1483. #endif /* m68851 */
  1484. };
  1485. int numopcodes=sizeof(m68k_opcodes)/sizeof(m68k_opcodes[0]);
  1486. struct m68k_opcode *endop = m68k_opcodes+sizeof(m68k_opcodes)/sizeof(m68k_opcodes[0]);