m68k-opcode.h 69 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256
  1. struct m68k_opcode
  2. {
  3. char *name;
  4. unsigned long opcode;
  5. unsigned long match;
  6. char *args;
  7. };
  8. /* We store four bytes of opcode for all opcodes because that
  9. is the most any of them need. The actual length of an instruction
  10. is always at least 2 bytes, and is as much longer as necessary to
  11. hold the operands it has.
  12. The match component is a mask saying which bits must match
  13. particular opcode in order for an instruction to be an instance
  14. of that opcode.
  15. The args component is a string containing two characters
  16. for each operand of the instruction. The first specifies
  17. the kind of operand; the second, the place it is stored. */
  18. /* Kinds of operands:
  19. D data register only. Stored as 3 bits.
  20. A address register only. Stored as 3 bits.
  21. F floating point coprocessor register only. Stored as 3 bits.
  22. R either kind of register. Stored as 4 bits.
  23. O an offset (or width): immediate data 0-31 or data register.
  24. Stored as 6 bits in special format for BF... insns.
  25. + autoincrement only. Stored as 3 bits (number of the address register).
  26. - autodecrement only. Stored as 3 bits (number of the address register).
  27. Q quick immediate data. Stored as 3 bits.
  28. This matches an immediate operand only when value is in range 1 .. 8.
  29. M moveq immediate data. Stored as 8 bits.
  30. This matches an immediate operand only when value is in range -128..127
  31. T trap vector immediate data. Stored as 4 bits.
  32. k K-factor for fmove.p instruction. Stored as a 7-bit constant or
  33. a three bit register offset, depending on the field type.
  34. # immediate data. Stored in special places (b, w or l)
  35. which say how many bits to store.
  36. ^ immediate data for floating point instructions. Special places
  37. are offset by 2 bytes from '#'...
  38. B pc-relative address, converted to an offset
  39. that is treated as immediate data.
  40. d displacement and register. Stores the register as 3 bits
  41. and stores the displacement in the entire second word.
  42. C the CCR. No need to store it; this is just for filtering validity.
  43. S the SR. No need to store, just as with CCR.
  44. U the USP. No need to store, just as with CCR.
  45. I Coprocessor ID. Not printed if 1. The Coprocessor ID is always
  46. extracted from the 'd' field of word one, which means that an extended
  47. coprocessor opcode can be skipped using the 'i' place, if needed.
  48. s System Control register for the floating point coprocessor.
  49. These specifiy various classes of addressing modes.
  50. They are all stored as 6 bits using an address mode and a register number;
  51. they differ in which addressing modes they match.
  52. * all (modes 0-6,7.*)
  53. ~ alterable memory (modes 2-6,7.0,7.1)(not 0,1,7.~)
  54. % alterable (modes 0-6,7.0,7.1)(not 7.~)
  55. ; data (modes 0,2-6,7.*)(not 1)
  56. @ data, but not immediate (modes 0,2-6,7.???)(not 1,7.?) This may really be ;, the 68020 book says it is
  57. ! control (modes 2,5,6,7.*-)(not 0,1,3,4,7.4)
  58. & alterable control (modes 2,5,6,7.0,7.1)(not 0,1,7.???)
  59. $ alterable data (modes 0,2-6,7.0,7.1)(not 1,7.~)
  60. ? alterable control, or data register (modes 0,2,5,6,7.0,7.1)(not 1,3,4,7.~)
  61. / control, or data register (modes 0,2,5,6,7.0,7.1,7.2,7.3)(not 1,3,4,7.4)
  62. */
  63. /* Places to put an operand, for non-general operands:
  64. s source, low bits of first word.
  65. d dest, shifted 9 in first word
  66. 1 second word, shifted 12
  67. 2 second word, shifted 6
  68. 3 second word, shifted 0
  69. 4 third word, shifted 12
  70. 5 third word, shifted 6
  71. 6 third word, shifted 0
  72. 7 second word, shifted 7
  73. 8 second word, shifted 10
  74. D store in both place 1 and place 3; for divul and divsl.
  75. b second word, low byte
  76. w second word (entire)
  77. l second and third word (entire)
  78. g branch offset for bra and similar instructions.
  79. The place to store depends on the magnitude of offset.
  80. t store in both place 7 and place 8; for floating point operations
  81. c branch offset for cpBcc operations.
  82. The place to store is word two if bit six of word one is zero,
  83. and words two and three if bit six of word one is one.
  84. i Increment by two, to skip over coprocessor extended operands. Only
  85. works with the 'I' format.
  86. k Dynamic K-factor field. Bits 6-4 of word 2, used as a register number.
  87. Also used for dynamic fmovem instruction.
  88. C floating point coprocessor constant - 7 bits. Also used for static
  89. K-factors...
  90. Places to put operand, for general operands:
  91. d destination, shifted 6 bits in first word
  92. b source, at low bit of first word, and immediate uses one byte
  93. w source, at low bit of first word, and immediate uses two bytes
  94. l source, at low bit of first word, and immediate uses four bytes
  95. s source, at low bit of first word.
  96. Used sometimes in contexts where immediate is not allowed anyway.
  97. f single precision float, low bit of 1st word, immediate uses 4 bytes
  98. F double precision float, low bit of 1st word, immediate uses 8 bytes
  99. x extended precision float, low bit of 1st word, immediate uses 12 bytes
  100. p packed float, low bit of 1st word, immediate uses 12 bytes
  101. */
  102. #define one(x) ((x) << 16)
  103. #define two(x, y) (((x) << 16) + y)
  104. /* The assembler requires that this array be sorted as follows:
  105. all instances of the same mnemonic must be consecutive.
  106. All instances of the same mnemonic with the same number of operands
  107. must be consecutive.
  108. */
  109. struct m68k_opcode m68k_opcodes[] =
  110. {
  111. {"abcd", one (0140400), one (0170770), "DsDd"},
  112. {"abcd", one (0140410), one (0170770), "-s-d"},
  113. /* Add instructions */
  114. {"addal", one (0150700), one (0170700), "*lAd"},
  115. {"addaw", one (0150300), one (0170700), "*wAd"},
  116. {"addib", one (0003000), one (0177700), "#b$b"},
  117. {"addil", one (0003200), one (0177700), "#l$l"},
  118. {"addiw", one (0003100), one (0177700), "#w$w"},
  119. {"addqb", one (0050000), one (0170700), "Qd$b"},
  120. {"addql", one (0050200), one (0170700), "Qd%l"},
  121. {"addqw", one (0050100), one (0170700), "Qd%w"},
  122. {"addb", one (0003000), one (0177700), "#b$b"}, /* addi written as add */
  123. {"addb", one (0050000), one (0170700), "Qd$b"}, /* addq written as add */
  124. {"addb", one (0150000), one (0170700), ";bDd"}, /* addb <ea>, Dd */
  125. {"addb", one (0150400), one (0170700), "Dd~b"}, /* addb Dd, <ea> */
  126. {"addw", one (0003100), one (0177700), "#w$w"}, /* addi written as add */
  127. {"addw", one (0150300), one (0170700), "*wAd"}, /* adda written as add */
  128. {"addw", one (0050100), one (0170700), "Qd%w"}, /* addq written as add */
  129. {"addw", one (0150100), one (0170700), "*wDd"}, /* addw <ea>, Dd */
  130. {"addw", one (0150500), one (0170700), "Dd~w"}, /* addw Dd, <ea> */
  131. {"addl", one (0003200), one (0177700), "#l$l"}, /* addi written as add */
  132. {"addl", one (0150700), one (0170700), "*lAd"}, /* adda written as add */
  133. {"addl", one (0050200), one (0170700), "Qd%l"}, /* addq written as add */
  134. {"addl", one (0150200), one (0170700), "*lDd"}, /* addl <ea>, Dd */
  135. {"addl", one (0150600), one (0170700), "Dd~l"}, /* addl Dd, <ea> */
  136. {"addxb", one (0150400), one (0170770), "DsDd"},
  137. {"addxb", one (0150410), one (0170770), "-s-d"},
  138. {"addxl", one (0150600), one (0170770), "DsDd"},
  139. {"addxl", one (0150610), one (0170770), "-s-d"},
  140. {"addxw", one (0150500), one (0170770), "DsDd"},
  141. {"addxw", one (0150510), one (0170770), "-s-d"},
  142. {"andib", one (0001000), one (0177700), "#b$b"},
  143. {"andib", one (0001074), one (0177777), "#bCb"}, /* andi to ccr */
  144. {"andiw", one (0001100), one (0177700), "#w$w"},
  145. {"andiw", one (0001174), one (0177777), "#wSw"}, /* andi to sr */
  146. {"andil", one (0001200), one (0177700), "#l$l"},
  147. {"andb", one (0001000), one (0177700), "#b$b"}, /* andi written as or */
  148. {"andb", one (0001074), one (0177777), "#bCb"}, /* andi to ccr */
  149. {"andb", one (0140000), one (0170700), ";bDd"}, /* memory to register */
  150. {"andb", one (0140400), one (0170700), "Dd~b"}, /* register to memory */
  151. {"andw", one (0001100), one (0177700), "#w$w"}, /* andi written as or */
  152. {"andw", one (0001174), one (0177777), "#wSw"}, /* andi to sr */
  153. {"andw", one (0140100), one (0170700), ";wDd"}, /* memory to register */
  154. {"andw", one (0140500), one (0170700), "Dd~w"}, /* register to memory */
  155. {"andl", one (0001200), one (0177700), "#l$l"}, /* andi written as or */
  156. {"andl", one (0140200), one (0170700), ";lDd"}, /* memory to register */
  157. {"andl", one (0140600), one (0170700), "Dd~l"}, /* register to memory */
  158. {"aslb", one (0160400), one (0170770), "QdDs"},
  159. {"aslb", one (0160440), one (0170770), "DdDs"},
  160. {"asll", one (0160600), one (0170770), "QdDs"},
  161. {"asll", one (0160640), one (0170770), "DdDs"},
  162. {"aslw", one (0160500), one (0170770), "QdDs"},
  163. {"aslw", one (0160540), one (0170770), "DdDs"},
  164. {"aslw", one (0160700), one (0177700), "~s"}, /* Shift memory */
  165. {"asrb", one (0160000), one (0170770), "QdDs"},
  166. {"asrb", one (0160040), one (0170770), "DdDs"},
  167. {"asrl", one (0160200), one (0170770), "QdDs"},
  168. {"asrl", one (0160240), one (0170770), "DdDs"},
  169. {"asrw", one (0160100), one (0170770), "QdDs"},
  170. {"asrw", one (0160140), one (0170770), "DdDs"},
  171. {"asrw", one (0160300), one (0177700), "~s"}, /* Shift memory */
  172. {"bhi", one (0061000), one (0177400), "Bg"},
  173. {"bls", one (0061400), one (0177400), "Bg"},
  174. {"bcc", one (0062000), one (0177400), "Bg"},
  175. {"bcs", one (0062400), one (0177400), "Bg"},
  176. {"bne", one (0063000), one (0177400), "Bg"},
  177. {"beq", one (0063400), one (0177400), "Bg"},
  178. {"bvc", one (0064000), one (0177400), "Bg"},
  179. {"bvs", one (0064400), one (0177400), "Bg"},
  180. {"bpl", one (0065000), one (0177400), "Bg"},
  181. {"bmi", one (0065400), one (0177400), "Bg"},
  182. {"bge", one (0066000), one (0177400), "Bg"},
  183. {"blt", one (0066400), one (0177400), "Bg"},
  184. {"bgt", one (0067000), one (0177400), "Bg"},
  185. {"ble", one (0067400), one (0177400), "Bg"},
  186. {"bchg", one (0000500), one (0170700), "Dd$s"},
  187. {"bchg", one (0004100), one (0177700), "#b$s"},
  188. {"bclr", one (0000600), one (0170700), "Dd$s"},
  189. {"bclr", one (0004200), one (0177700), "#b$s"},
  190. {"bfchg", one (0165300), one (0177700), "?sO2O3"},
  191. {"bfclr", one (0166300), one (0177700), "?sO2O3"},
  192. {"bfexts", one (0165700), one (0177700), "/sO2O3D1"},
  193. {"bfextu", one (0164700), one (0177700), "/sO2O3D1"},
  194. {"bfffo", one (0166700), one (0177700), "/sO2O3D1"},
  195. {"bfins", one (0167700), one (0177700), "D1?sO2O3"},
  196. {"bfset", one (0167300), one (0177700), "?sO2O3"},
  197. {"bftst", one (0164300), one (0177700), "/sO2O3"},
  198. {"bset", one (0000700), one (0170700), "Dd$s"},
  199. {"bset", one (0004300), one (0177700), "#b$s"},
  200. {"btst", one (0000400), one (0170700), "Dd@s"},
  201. {"btst", one (0004000), one (0177700), "#b@s"},
  202. {"bkpt", one (0044110), one (0177770), "Qs"},
  203. {"bra", one (0060000), one (0177400), "Bg"},
  204. {"bsr", one (0060400), one (0177400), "Bg"},
  205. {"callm", one (0003300), one (0177700), "#b!s"},
  206. {"cas2l", one (0007374), one (0177777), "D3D6D2D4R1R3"},
  207. {"cas2w", one (0006374), one (0177777), "D3D6D2D4R1R3"},
  208. {"casb", one (0005300), one (0177700), "D3D2~s"},
  209. {"casl", one (0007300), one (0177700), "D3D2~s"},
  210. {"casw", one (0006300), one (0177700), "D3D2~s"},
  211. /* {"chk", one (0040600), one (0170700), ";wDd"}, FOO this looks wrong */
  212. {"chk2b", two (0000300, 0004000), two (0177700, 07777), "!sR1"},
  213. {"chk2l", two (0002300, 0004000), two (0177700, 07777), "!sR1"},
  214. {"chk2w", two (0001300, 0004000), two (0177700, 07777), "!sR1"},
  215. {"chkl", one (0040400), one (0170700), ";lDd"},
  216. {"chkw", one (0040600), one (0170700), ";wDd"},
  217. {"clrb", one (0041000), one (0177700), "$s"},
  218. {"clrl", one (0041200), one (0177700), "$s"},
  219. {"clrw", one (0041100), one (0177700), "$s"},
  220. {"cmp2b", two (0000300, 0), two (0177700, 07777), "!sR1"},
  221. {"cmp2l", two (0002300, 0), two (0177700, 07777), "!sR1"},
  222. {"cmp2w", two (0001300, 0), two (0177700, 07777), "!sR1"},
  223. {"cmpal", one (0130700), one (0170700), "*lAd"},
  224. {"cmpaw", one (0130300), one (0170700), "*wAd"},
  225. {"cmpib", one (0006000), one (0177700), "#b;b"},
  226. {"cmpil", one (0006200), one (0177700), "#l;l"},
  227. {"cmpiw", one (0006100), one (0177700), "#w;w"},
  228. {"cmpb", one (0006000), one (0177700), "#b;b"}, /* cmpi written as cmp */
  229. {"cmpb", one (0130000), one (0170700), ";bDd"},
  230. {"cmpw", one (0006100), one (0177700), "#w;w"},
  231. {"cmpw", one (0130100), one (0170700), "*wDd"},
  232. {"cmpw", one (0130300), one (0170700), "*wAd"}, /* cmpa written as cmp */
  233. {"cmpl", one (0006200), one (0177700), "#l;l"},
  234. {"cmpl", one (0130200), one (0170700), "*lDd"},
  235. {"cmpl", one (0130700), one (0170700), "*lAd"},
  236. {"cmpmb", one (0130410), one (0170770), "+s+d"},
  237. {"cmpml", one (0130610), one (0170770), "+s+d"},
  238. {"cmpmw", one (0130510), one (0170770), "+s+d"},
  239. {"dbcc", one (0052310), one (0177770), "DsBw"},
  240. {"dbcs", one (0052710), one (0177770), "DsBw"},
  241. {"dbeq", one (0053710), one (0177770), "DsBw"},
  242. {"dbf", one (0050710), one (0177770), "DsBw"},
  243. {"dbge", one (0056310), one (0177770), "DsBw"},
  244. {"dbgt", one (0057310), one (0177770), "DsBw"},
  245. {"dbhi", one (0051310), one (0177770), "DsBw"},
  246. {"dble", one (0057710), one (0177770), "DsBw"},
  247. {"dbls", one (0051710), one (0177770), "DsBw"},
  248. {"dblt", one (0056710), one (0177770), "DsBw"},
  249. {"dbmi", one (0055710), one (0177770), "DsBw"},
  250. {"dbne", one (0053310), one (0177770), "DsBw"},
  251. {"dbpl", one (0055310), one (0177770), "DsBw"},
  252. {"dbra", one (0050710), one (0177770), "DsBw"},
  253. {"dbt", one (0050310), one (0177770), "DsBw"},
  254. {"dbvc", one (0054310), one (0177770), "DsBw"},
  255. {"dbvs", one (0054710), one (0177770), "DsBw"},
  256. {"divsl", two (0046100, 0004000), two (0177700, 0107770), ";lD3D1"},
  257. {"divsl", two (0046100, 0004000), two (0177700, 0107770), ";lDD"},
  258. {"divsll", two (0046100, 0006000), two (0177700, 0107770), ";lD3D1"},
  259. {"divsw", one (0100700), one (0170700), ";wDd"},
  260. {"divs", one (0100700), one (0170700), ";wDd"},
  261. {"divul", two (0046100, 0000000), two (0177700, 0107770), ";lD3D1"},
  262. {"divul", two (0046100, 0000000), two (0177700, 0107770), ";lDD"},
  263. {"divull", two (0046100, 0002000), two (0177700, 0107770), ";lD3D1"},
  264. {"divuw", one (0100300), one (0170700), ";wDd"},
  265. {"divu", one (0100300), one (0170700), ";wDd"},
  266. {"eorb", one (0005000), one (0177700), "#b$s"}, /* eori written as or */
  267. {"eorb", one (0005074), one (0177777), "#bCs"}, /* eori to ccr */
  268. {"eorb", one (0130400), one (0170700), "Dd$s"}, /* register to memory */
  269. {"eorib", one (0005000), one (0177700), "#b$s"},
  270. {"eorib", one (0005074), one (0177777), "#bCs"}, /* eori to ccr */
  271. {"eoril", one (0005200), one (0177700), "#l$s"},
  272. {"eoriw", one (0005100), one (0177700), "#w$s"},
  273. {"eoriw", one (0005174), one (0177777), "#wSs"}, /* eori to sr */
  274. {"eorl", one (0005200), one (0177700), "#l$s"},
  275. {"eorl", one (0130600), one (0170700), "Dd$s"},
  276. {"eorw", one (0005100), one (0177700), "#w$s"},
  277. {"eorw", one (0005174), one (0177777), "#wSs"}, /* eori to sr */
  278. {"eorw", one (0130500), one (0170700), "Dd$s"},
  279. {"exg", one (0140500), one (0170770), "DsDd"},
  280. {"exg", one (0140510), one (0170770), "AsAd"},
  281. {"exg", one (0140610), one (0170770), "DsAd"},
  282. {"exg", one (0140610), one (0170770), "AdDs"},
  283. {"extw", one (0044200), one (0177770), "Ds"},
  284. {"extl", one (0044300), one (0177770), "Ds"},
  285. {"extbl", one (0044700), one (0177770), "Ds"},
  286. {"extb.l", one (0044700), one (0177770), "Ds"}, /* Not sure we should support this one */
  287. {"fabsb", two (0xF000, 0x5818), two (0xF1C0, 0xFC7F), "Ii;bF7"},
  288. {"fabsd", two (0xF000, 0x5418), two (0xF1C0, 0xFC7F), "Ii;FF7"},
  289. {"fabsl", two( 0xF000, 0x4018), two( 0xF1C0, 0xFC7F), "Ii;lF7"},
  290. {"fabsp", two (0xF000, 0x4C18), two (0xF1C0, 0xFC7F), "Ii;pF7"},
  291. {"fabss", two (0xF000, 0x4418), two (0xF1C0, 0xFC7F), "Ii;fF7"},
  292. {"fabsw", two (0xF000, 0x5018), two (0xF1C0, 0xFC7F), "Ii;wF7"},
  293. {"fabsx", two (0xF000, 0x0018), two (0xF1C0, 0xE07F), "IiF8F7"},
  294. {"fabsx", two (0xF000, 0x0018), two (0xF1C0, 0xE07F), "IiFt"},
  295. {"fabsx", two (0xF000, 0x4818), two (0xF1C0, 0xFC7F), "Ii;xF7"},
  296. {"facosb", two (0xF000, 0x581C), two (0xF1C0, 0xFC7F), "Ii;bF7"},
  297. {"facosd", two (0xF000, 0x541C), two (0xF1C0, 0xFC7F), "Ii;FF7"},
  298. {"facosl", two (0xF000, 0x401C), two (0xF1C0, 0xFC7F), "Ii;lF7"},
  299. {"facosp", two (0xF000, 0x4C1C), two (0xF1C0, 0xFC7F), "Ii;pF7"},
  300. {"facoss", two (0xF000, 0x441C), two (0xF1C0, 0xFC7F), "Ii;fF7"},
  301. {"facosw", two (0xF000, 0x501C), two (0xF1C0, 0xFC7F), "Ii;wF7"},
  302. {"facosx", two (0xF000, 0x001C), two (0xF1C0, 0xE07F), "IiF8F7"},
  303. {"facosx", two (0xF000, 0x001C), two (0xF1C0, 0xE07F), "IiFt"},
  304. {"facosx", two (0xF000, 0x481C), two (0xF1C0, 0xFC7F), "Ii;xF7"},
  305. {"faddb", two (0xF000, 0x5822), two( 0xF1C0, 0xFC7F), "Ii;bF7"},
  306. {"faddd", two (0xF000, 0x5422), two( 0xF1C0, 0xFC7F), "Ii;FF7"},
  307. {"faddl", two (0xF000, 0x4022), two( 0xF1C0, 0xFC7F), "Ii;lF7"},
  308. {"faddp", two (0xF000, 0x4C22), two( 0xF1C0, 0xFC7F), "Ii;pF7"},
  309. {"fadds", two (0xF000, 0x4422), two( 0xF1C0, 0xFC7F), "Ii;fF7"},
  310. {"faddw", two (0xF000, 0x5022), two( 0xF1C0, 0xFC7F), "Ii;wF7"},
  311. {"faddx", two (0xF000, 0x0022), two( 0xF1C0, 0xE07F), "IiF8F7"},
  312. {"faddx", two (0xF000, 0x0022), two( 0xF1C0, 0xE07F), "IiFt"},
  313. {"faddx", two (0xF000, 0x4822), two( 0xF1C0, 0xFC7F), "Ii;xF7"},
  314. {"fasinb", two (0xF000, 0x580C), two( 0xF1C0, 0xFC7F), "Ii;bF7"},
  315. {"fasind", two (0xF000, 0x540C), two( 0xF1C0, 0xFC7F), "Ii;FF7"},
  316. {"fasinl", two (0xF000, 0x400C), two( 0xF1C0, 0xFC7F), "Ii;lF7"},
  317. {"fasinp", two (0xF000, 0x4C0C), two( 0xF1C0, 0xFC7F), "Ii;pF7"},
  318. {"fasins", two (0xF000, 0x440C), two( 0xF1C0, 0xFC7F), "Ii;fF7"},
  319. {"fasinw", two (0xF000, 0x500C), two( 0xF1C0, 0xFC7F), "Ii;wF7"},
  320. {"fasinx", two (0xF000, 0x000C), two( 0xF1C0, 0xE07F), "IiF8F7"},
  321. {"fasinx", two (0xF000, 0x000C), two( 0xF1C0, 0xE07F), "IiFt"},
  322. {"fasinx", two (0xF000, 0x480C), two( 0xF1C0, 0xFC7F), "Ii;xF7"},
  323. {"fatanb", two (0xF000, 0x580A), two( 0xF1C0, 0xFC7F), "Ii;bF7"},
  324. {"fatand", two (0xF000, 0x540A), two( 0xF1C0, 0xFC7F), "Ii;FF7"},
  325. {"fatanl", two (0xF000, 0x400A), two( 0xF1C0, 0xFC7F), "Ii;lF7"},
  326. {"fatanp", two (0xF000, 0x4C0A), two( 0xF1C0, 0xFC7F), "Ii;pF7"},
  327. {"fatans", two (0xF000, 0x440A), two( 0xF1C0, 0xFC7F), "Ii;fF7"},
  328. {"fatanw", two (0xF000, 0x500A), two( 0xF1C0, 0xFC7F), "Ii;wF7"},
  329. {"fatanx", two (0xF000, 0x000A), two( 0xF1C0, 0xE07F), "IiF8F7"},
  330. {"fatanx", two (0xF000, 0x000A), two( 0xF1C0, 0xE07F), "IiFt"},
  331. {"fatanx", two (0xF000, 0x480A), two( 0xF1C0, 0xFC7F), "Ii;xF7"},
  332. {"fatanhb", two (0xF000, 0x580D), two( 0xF1C0, 0xFC7F), "Ii;bF7"},
  333. {"fatanhd", two (0xF000, 0x540D), two( 0xF1C0, 0xFC7F), "Ii;FF7"},
  334. {"fatanhl", two (0xF000, 0x400D), two( 0xF1C0, 0xFC7F), "Ii;lF7"},
  335. {"fatanhp", two (0xF000, 0x4C0D), two( 0xF1C0, 0xFC7F), "Ii;pF7"},
  336. {"fatanhs", two (0xF000, 0x440D), two( 0xF1C0, 0xFC7F), "Ii;fF7"},
  337. {"fatanhw", two (0xF000, 0x500D), two( 0xF1C0, 0xFC7F), "Ii;wF7"},
  338. {"fatanhx", two (0xF000, 0x000D), two( 0xF1C0, 0xE07F), "IiF8F7"},
  339. {"fatanhx", two (0xF000, 0x000D), two( 0xF1C0, 0xE07F), "IiFt"},
  340. {"fatanhx", two (0xF000, 0x480D), two( 0xF1C0, 0xFC7F), "Ii;xF7"},
  341. {"fbeq", one (0xF081), one (0xF1FF), "IdBc"},
  342. {"fbf", one (0xF080), one (0xF1FF), "IdBc"},
  343. {"fbge", one (0xF093), one (0xF1FF), "IdBc"},
  344. {"fbgl", one (0xF096), one (0xF1FF), "IdBc"},
  345. {"fbgle", one (0xF097), one (0xF1FF), "IdBc"},
  346. {"fbgt", one (0xF092), one (0xF1FF), "IdBc"},
  347. {"fble", one (0xF095), one (0xF1FF), "IdBc"},
  348. {"fblt", one (0xF094), one (0xF1FF), "IdBc"},
  349. {"fbne", one (0xF08E), one (0xF1FF), "IdBc"},
  350. {"fbnge", one (0xF09C), one (0xF1FF), "IdBc"},
  351. {"fbngl", one (0xF099), one (0xF1FF), "IdBc"},
  352. {"fbngle", one (0xF098), one (0xF1FF), "IdBc"},
  353. {"fbngt", one (0xF09D), one (0xF1FF), "IdBc"},
  354. {"fbnle", one (0xF09A), one (0xF1FF), "IdBc"},
  355. {"fbnlt", one (0xF09B), one (0xF1FF), "IdBc"},
  356. {"fboge", one (0xF083), one (0xF1FF), "IdBc"},
  357. {"fbogl", one (0xF086), one (0xF1FF), "IdBc"},
  358. {"fbogt", one (0xF082), one (0xF1FF), "IdBc"},
  359. {"fbole", one (0xF085), one (0xF1FF), "IdBc"},
  360. {"fbolt", one (0xF084), one (0xF1FF), "IdBc"},
  361. {"fbor", one (0xF087), one (0xF1FF), "IdBc"},
  362. {"fbseq", one (0xF091), one (0xF1FF), "IdBc"},
  363. {"fbsf", one (0xF090), one (0xF1FF), "IdBc"},
  364. {"fbsne", one (0xF09E), one (0xF1FF), "IdBc"},
  365. {"fbst", one (0xF09F), one (0xF1FF), "IdBc"},
  366. {"fbt", one (0xF08F), one (0xF1FF), "IdBc"},
  367. {"fbueq", one (0xF089), one (0xF1FF), "IdBc"},
  368. {"fbuge", one (0xF08B), one (0xF1FF), "IdBc"},
  369. {"fbugt", one (0xF08A), one (0xF1FF), "IdBc"},
  370. {"fbule", one (0xF08D), one (0xF1FF), "IdBc"},
  371. {"fbult", one (0xF08C), one (0xF1FF), "IdBc"},
  372. {"fbun", one (0xF088), one (0xF1FF), "IdBc"},
  373. {"fcmpb", two (0xF000, 0x5838), two( 0xF1C0, 0xFC7F), "Ii;bF7"},
  374. {"fcmpd", two (0xF000, 0x5438), two( 0xF1C0, 0xFC7F), "Ii;FF7"},
  375. {"fcmpl", two (0xF000, 0x4038), two( 0xF1C0, 0xFC7F), "Ii;lF7"},
  376. {"fcmpp", two (0xF000, 0x4C38), two( 0xF1C0, 0xFC7F), "Ii;pF7"},
  377. {"fcmps", two (0xF000, 0x4438), two( 0xF1C0, 0xFC7F), "Ii;fF7"},
  378. {"fcmpw", two (0xF000, 0x5038), two( 0xF1C0, 0xFC7F), "Ii;wF7"},
  379. {"fcmpx", two (0xF000, 0x0038), two( 0xF1C0, 0xE07F), "IiF8F7"},
  380. {"fcmpx", two (0xF000, 0x0038), two( 0xF1C0, 0xE07F), "IiFt"},
  381. {"fcmpx", two (0xF000, 0x4838), two( 0xF1C0, 0xFC7F), "Ii;xF7"},
  382. {"fcosb", two (0xF000, 0x581D), two( 0xF1C0, 0xFC7F), "Ii;bF7"},
  383. {"fcosd", two (0xF000, 0x541D), two( 0xF1C0, 0xFC7F), "Ii;FF7"},
  384. {"fcosl", two (0xF000, 0x401D), two( 0xF1C0, 0xFC7F), "Ii;lF7"},
  385. {"fcosp", two (0xF000, 0x4C1D), two( 0xF1C0, 0xFC7F), "Ii;pF7"},
  386. {"fcoss", two (0xF000, 0x441D), two( 0xF1C0, 0xFC7F), "Ii;fF7"},
  387. {"fcosw", two (0xF000, 0x501D), two( 0xF1C0, 0xFC7F), "Ii;wF7"},
  388. {"fcosx", two (0xF000, 0x001D), two( 0xF1C0, 0xE07F), "IiF8F7"},
  389. {"fcosx", two (0xF000, 0x001D), two( 0xF1C0, 0xE07F), "IiFt"},
  390. {"fcosx", two (0xF000, 0x481D), two( 0xF1C0, 0xFC7F), "Ii;xF7"},
  391. {"fcoshb", two (0xF000, 0x5819), two( 0xF1C0, 0xFC7F), "Ii;bF7"},
  392. {"fcoshd", two (0xF000, 0x5419), two( 0xF1C0, 0xFC7F), "Ii;FF7"},
  393. {"fcoshl", two (0xF000, 0x4019), two( 0xF1C0, 0xFC7F), "Ii;lF7"},
  394. {"fcoshp", two (0xF000, 0x4C19), two( 0xF1C0, 0xFC7F), "Ii;pF7"},
  395. {"fcoshs", two (0xF000, 0x4419), two( 0xF1C0, 0xFC7F), "Ii;fF7"},
  396. {"fcoshw", two (0xF000, 0x5019), two( 0xF1C0, 0xFC7F), "Ii;wF7"},
  397. {"fcoshx", two (0xF000, 0x0019), two( 0xF1C0, 0xE07F), "IiF8F7"},
  398. {"fcoshx", two (0xF000, 0x0019), two( 0xF1C0, 0xE07F), "IiFt"},
  399. {"fcoshx", two (0xF000, 0x4819), two( 0xF1C0, 0xFC7F), "Ii;xF7"},
  400. {"fdbeq", two (0xF048, 0x0001), two (0xF1F8, 0xFFFF), "IiDsBw"},
  401. {"fdbf", two (0xF048, 0x0000), two (0xF1F8, 0xFFFF), "IiDsBw"},
  402. {"fdbge", two (0xF048, 0x0013), two (0xF1F8, 0xFFFF), "IiDsBw"},
  403. {"fdbgl", two (0xF048, 0x0016), two (0xF1F8, 0xFFFF), "IiDsBw"},
  404. {"fdbgle", two (0xF048, 0x0017), two (0xF1F8, 0xFFFF), "IiDsBw"},
  405. {"fdbgt", two (0xF048, 0x0012), two (0xF1F8, 0xFFFF), "IiDsBw"},
  406. {"fdble", two (0xF048, 0x0015), two (0xF1F8, 0xFFFF), "IiDsBw"},
  407. {"fdblt", two (0xF048, 0x0014), two (0xF1F8, 0xFFFF), "IiDsBw"},
  408. {"fdbne", two (0xF048, 0x000E), two (0xF1F8, 0xFFFF), "IiDsBw"},
  409. {"fdbnge", two (0xF048, 0x001C), two (0xF1F8, 0xFFFF), "IiDsBw"},
  410. {"fdbngl", two (0xF048, 0x0019), two (0xF1F8, 0xFFFF), "IiDsBw"},
  411. {"fdbngle", two (0xF048, 0x0018), two (0xF1F8, 0xFFFF), "IiDsBw"},
  412. {"fdbngt", two (0xF048, 0x001D), two (0xF1F8, 0xFFFF), "IiDsBw"},
  413. {"fdbnle", two (0xF048, 0x001A), two (0xF1F8, 0xFFFF), "IiDsBw"},
  414. {"fdbnlt", two (0xF048, 0x001B), two (0xF1F8, 0xFFFF), "IiDsBw"},
  415. {"fdboge", two (0xF048, 0x0003), two (0xF1F8, 0xFFFF), "IiDsBw"},
  416. {"fdbogl", two (0xF048, 0x0006), two (0xF1F8, 0xFFFF), "IiDsBw"},
  417. {"fdbogt", two (0xF048, 0x0002), two (0xF1F8, 0xFFFF), "IiDsBw"},
  418. {"fdbole", two (0xF048, 0x0005), two (0xF1F8, 0xFFFF), "IiDsBw"},
  419. {"fdbolt", two (0xF048, 0x0004), two (0xF1F8, 0xFFFF), "IiDsBw"},
  420. {"fdbor", two (0xF048, 0x0007), two (0xF1F8, 0xFFFF), "IiDsBw"},
  421. {"fdbseq", two (0xF048, 0x0011), two (0xF1F8, 0xFFFF), "IiDsBw"},
  422. {"fdbsf", two (0xF048, 0x0010), two (0xF1F8, 0xFFFF), "IiDsBw"},
  423. {"fdbsne", two (0xF048, 0x001E), two (0xF1F8, 0xFFFF), "IiDsBw"},
  424. {"fdbst", two (0xF048, 0x001F), two (0xF1F8, 0xFFFF), "IiDsBw"},
  425. {"fdbt", two (0xF048, 0x000F), two (0xF1F8, 0xFFFF), "IiDsBw"},
  426. {"fdbueq", two (0xF048, 0x0009), two (0xF1F8, 0xFFFF), "IiDsBw"},
  427. {"fdbuge", two (0xF048, 0x000B), two (0xF1F8, 0xFFFF), "IiDsBw"},
  428. {"fdbugt", two (0xF048, 0x000A), two (0xF1F8, 0xFFFF), "IiDsBw"},
  429. {"fdbule", two (0xF048, 0x000D), two (0xF1F8, 0xFFFF), "IiDsBw"},
  430. {"fdbult", two (0xF048, 0x000C), two (0xF1F8, 0xFFFF), "IiDsBw"},
  431. {"fdbun", two (0xF048, 0x0008), two (0xF1F8, 0xFFFF), "IiDsBw"},
  432. {"fdivb", two (0xF000, 0x5820), two( 0xF1C0, 0xFC7F), "Ii;bF7"},
  433. {"fdivd", two (0xF000, 0x5420), two( 0xF1C0, 0xFC7F), "Ii;FF7"},
  434. {"fdivl", two (0xF000, 0x4020), two( 0xF1C0, 0xFC7F), "Ii;lF7"},
  435. {"fdivp", two (0xF000, 0x4C20), two( 0xF1C0, 0xFC7F), "Ii;pF7"},
  436. {"fdivs", two (0xF000, 0x4420), two( 0xF1C0, 0xFC7F), "Ii;fF7"},
  437. {"fdivw", two (0xF000, 0x5020), two( 0xF1C0, 0xFC7F), "Ii;wF7"},
  438. {"fdivx", two (0xF000, 0x0020), two( 0xF1C0, 0xE07F), "IiF8F7"},
  439. {"fdivx", two (0xF000, 0x0020), two( 0xF1C0, 0xE07F), "IiFt"},
  440. {"fdivx", two (0xF000, 0x4820), two( 0xF1C0, 0xFC7F), "Ii;xF7"},
  441. {"fetoxb", two (0xF000, 0x5810), two( 0xF1C0, 0xFC7F), "Ii;bF7"},
  442. {"fetoxd", two (0xF000, 0x5410), two( 0xF1C0, 0xFC7F), "Ii;FF7"},
  443. {"fetoxl", two (0xF000, 0x4010), two( 0xF1C0, 0xFC7F), "Ii;lF7"},
  444. {"fetoxp", two (0xF000, 0x4C10), two( 0xF1C0, 0xFC7F), "Ii;pF7"},
  445. {"fetoxs", two (0xF000, 0x4410), two( 0xF1C0, 0xFC7F), "Ii;fF7"},
  446. {"fetoxw", two (0xF000, 0x5010), two( 0xF1C0, 0xFC7F), "Ii;wF7"},
  447. {"fetoxx", two (0xF000, 0x0010), two( 0xF1C0, 0xE07F), "IiF8F7"},
  448. {"fetoxx", two (0xF000, 0x0010), two( 0xF1C0, 0xE07F), "IiFt"},
  449. {"fetoxx", two (0xF000, 0x4810), two( 0xF1C0, 0xFC7F), "Ii;xF7"},
  450. {"fetoxm1b", two (0xF000, 0x5808), two( 0xF1C0, 0xFC7F), "Ii;bF7"},
  451. {"fetoxm1d", two (0xF000, 0x5408), two( 0xF1C0, 0xFC7F), "Ii;FF7"},
  452. {"fetoxm1l", two (0xF000, 0x4008), two( 0xF1C0, 0xFC7F), "Ii;lF7"},
  453. {"fetoxm1p", two (0xF000, 0x4C08), two( 0xF1C0, 0xFC7F), "Ii;pF7"},
  454. {"fetoxm1s", two (0xF000, 0x4408), two( 0xF1C0, 0xFC7F), "Ii;fF7"},
  455. {"fetoxm1w", two (0xF000, 0x5008), two( 0xF1C0, 0xFC7F), "Ii;wF7"},
  456. {"fetoxm1x", two (0xF000, 0x0008), two( 0xF1C0, 0xE07F), "IiF8F7"},
  457. {"fetoxm1x", two (0xF000, 0x0008), two( 0xF1C0, 0xE07F), "IiFt"},
  458. {"fetoxm1x", two (0xF000, 0x4808), two( 0xF1C0, 0xFC7F), "Ii;xF7"},
  459. {"fgetexpb", two (0xF000, 0x581E), two( 0xF1C0, 0xFC7F), "Ii;bF7"},
  460. {"fgetexpd", two (0xF000, 0x541E), two( 0xF1C0, 0xFC7F), "Ii;FF7"},
  461. {"fgetexpl", two (0xF000, 0x401E), two( 0xF1C0, 0xFC7F), "Ii;lF7"},
  462. {"fgetexpp", two (0xF000, 0x4C1E), two( 0xF1C0, 0xFC7F), "Ii;pF7"},
  463. {"fgetexps", two (0xF000, 0x441E), two( 0xF1C0, 0xFC7F), "Ii;fF7"},
  464. {"fgetexpw", two (0xF000, 0x501E), two( 0xF1C0, 0xFC7F), "Ii;wF7"},
  465. {"fgetexpx", two (0xF000, 0x001E), two( 0xF1C0, 0xE07F), "IiF8F7"},
  466. {"fgetexpx", two (0xF000, 0x001E), two( 0xF1C0, 0xE07F), "IiFt"},
  467. {"fgetexpx", two (0xF000, 0x481E), two( 0xF1C0, 0xFC7F), "Ii;xF7"},
  468. {"fgetmanb", two (0xF000, 0x581F), two( 0xF1C0, 0xFC7F), "Ii;bF7"},
  469. {"fgetmand", two (0xF000, 0x541F), two( 0xF1C0, 0xFC7F), "Ii;FF7"},
  470. {"fgetmanl", two (0xF000, 0x401F), two( 0xF1C0, 0xFC7F), "Ii;lF7"},
  471. {"fgetmanp", two (0xF000, 0x4C1F), two( 0xF1C0, 0xFC7F), "Ii;pF7"},
  472. {"fgetmans", two (0xF000, 0x441F), two( 0xF1C0, 0xFC7F), "Ii;fF7"},
  473. {"fgetmanw", two (0xF000, 0x501F), two( 0xF1C0, 0xFC7F), "Ii;wF7"},
  474. {"fgetmanx", two (0xF000, 0x001F), two( 0xF1C0, 0xE07F), "IiF8F7"},
  475. {"fgetmanx", two (0xF000, 0x001F), two( 0xF1C0, 0xE07F), "IiFt"},
  476. {"fgetmanx", two (0xF000, 0x481F), two( 0xF1C0, 0xFC7F), "Ii;xF7"},
  477. {"fintb", two (0xF000, 0x5801), two( 0xF1C0, 0xFC7F), "Ii;bF7"},
  478. {"fintd", two (0xF000, 0x5401), two( 0xF1C0, 0xFC7F), "Ii;FF7"},
  479. {"fintl", two (0xF000, 0x4001), two( 0xF1C0, 0xFC7F), "Ii;lF7"},
  480. {"fintp", two (0xF000, 0x4C01), two( 0xF1C0, 0xFC7F), "Ii;pF7"},
  481. {"fints", two (0xF000, 0x4401), two( 0xF1C0, 0xFC7F), "Ii;fF7"},
  482. {"fintw", two (0xF000, 0x5001), two( 0xF1C0, 0xFC7F), "Ii;wF7"},
  483. {"fintx", two (0xF000, 0x0001), two( 0xF1C0, 0xE07F), "IiF8F7"},
  484. {"fintx", two (0xF000, 0x0001), two( 0xF1C0, 0xE07F), "IiFt"},
  485. {"fintx", two (0xF000, 0x4801), two( 0xF1C0, 0xFC7F), "Ii;xF7"},
  486. {"fintrzb", two (0xF000, 0x5803), two( 0xF1C0, 0xFC7F), "Ii;bF7"},
  487. {"fintrzd", two (0xF000, 0x5403), two( 0xF1C0, 0xFC7F), "Ii;FF7"},
  488. {"fintrzl", two (0xF000, 0x4003), two( 0xF1C0, 0xFC7F), "Ii;lF7"},
  489. {"fintrzp", two (0xF000, 0x4C03), two( 0xF1C0, 0xFC7F), "Ii;pF7"},
  490. {"fintrzs", two (0xF000, 0x4403), two( 0xF1C0, 0xFC7F), "Ii;fF7"},
  491. {"fintrzw", two (0xF000, 0x5003), two( 0xF1C0, 0xFC7F), "Ii;wF7"},
  492. {"fintrzx", two (0xF000, 0x0003), two( 0xF1C0, 0xE07F), "IiF8F7"},
  493. {"fintrzx", two (0xF000, 0x0003), two( 0xF1C0, 0xE07F), "IiFt"},
  494. {"fintrzx", two (0xF000, 0x4803), two( 0xF1C0, 0xFC7F), "Ii;xF7"},
  495. {"flog10b", two (0xF000, 0x5815), two( 0xF1C0, 0xFC7F), "Ii;bF7"},
  496. {"flog10d", two (0xF000, 0x5415), two( 0xF1C0, 0xFC7F), "Ii;FF7"},
  497. {"flog10l", two (0xF000, 0x4015), two( 0xF1C0, 0xFC7F), "Ii;lF7"},
  498. {"flog10p", two (0xF000, 0x4C15), two( 0xF1C0, 0xFC7F), "Ii;pF7"},
  499. {"flog10s", two (0xF000, 0x4415), two( 0xF1C0, 0xFC7F), "Ii;fF7"},
  500. {"flog10w", two (0xF000, 0x5015), two( 0xF1C0, 0xFC7F), "Ii;wF7"},
  501. {"flog10x", two (0xF000, 0x0015), two( 0xF1C0, 0xE07F), "IiF8F7"},
  502. {"flog10x", two (0xF000, 0x0015), two( 0xF1C0, 0xE07F), "IiFt"},
  503. {"flog10x", two (0xF000, 0x4815), two( 0xF1C0, 0xFC7F), "Ii;xF7"},
  504. {"flog2b", two (0xF000, 0x5816), two( 0xF1C0, 0xFC7F), "Ii;bF7"},
  505. {"flog2d", two (0xF000, 0x5416), two( 0xF1C0, 0xFC7F), "Ii;FF7"},
  506. {"flog2l", two (0xF000, 0x4016), two( 0xF1C0, 0xFC7F), "Ii;lF7"},
  507. {"flog2p", two (0xF000, 0x4C16), two( 0xF1C0, 0xFC7F), "Ii;pF7"},
  508. {"flog2s", two (0xF000, 0x4416), two( 0xF1C0, 0xFC7F), "Ii;fF7"},
  509. {"flog2w", two (0xF000, 0x5016), two( 0xF1C0, 0xFC7F), "Ii;wF7"},
  510. {"flog2x", two (0xF000, 0x0016), two( 0xF1C0, 0xE07F), "IiF8F7"},
  511. {"flog2x", two (0xF000, 0x0016), two( 0xF1C0, 0xE07F), "IiFt"},
  512. {"flog2x", two (0xF000, 0x4816), two( 0xF1C0, 0xFC7F), "Ii;xF7"},
  513. {"flognb", two (0xF000, 0x5814), two( 0xF1C0, 0xFC7F), "Ii;bF7"},
  514. {"flognd", two (0xF000, 0x5414), two( 0xF1C0, 0xFC7F), "Ii;FF7"},
  515. {"flognl", two (0xF000, 0x4014), two( 0xF1C0, 0xFC7F), "Ii;lF7"},
  516. {"flognp", two (0xF000, 0x4C14), two( 0xF1C0, 0xFC7F), "Ii;pF7"},
  517. {"flogns", two (0xF000, 0x4414), two( 0xF1C0, 0xFC7F), "Ii;fF7"},
  518. {"flognw", two (0xF000, 0x5014), two( 0xF1C0, 0xFC7F), "Ii;wF7"},
  519. {"flognx", two (0xF000, 0x0014), two( 0xF1C0, 0xE07F), "IiF8F7"},
  520. {"flognx", two (0xF000, 0x0014), two( 0xF1C0, 0xE07F), "IiFt"},
  521. {"flognx", two (0xF000, 0x4814), two( 0xF1C0, 0xFC7F), "Ii;xF7"},
  522. {"flognp1b", two (0xF000, 0x5806), two( 0xF1C0, 0xFC7F), "Ii;bF7"},
  523. {"flognp1d", two (0xF000, 0x5406), two( 0xF1C0, 0xFC7F), "Ii;FF7"},
  524. {"flognp1l", two (0xF000, 0x4006), two( 0xF1C0, 0xFC7F), "Ii;lF7"},
  525. {"flognp1p", two (0xF000, 0x4C06), two( 0xF1C0, 0xFC7F), "Ii;pF7"},
  526. {"flognp1s", two (0xF000, 0x4406), two( 0xF1C0, 0xFC7F), "Ii;fF7"},
  527. {"flognp1w", two (0xF000, 0x5006), two( 0xF1C0, 0xFC7F), "Ii;wF7"},
  528. {"flognp1x", two (0xF000, 0x0006), two( 0xF1C0, 0xE07F), "IiF8F7"},
  529. {"flognp1x", two (0xF000, 0x0006), two( 0xF1C0, 0xE07F), "IiFt"},
  530. {"flognp1x", two (0xF000, 0x4806), two( 0xF1C0, 0xFC7F), "Ii;xF7"},
  531. {"fmodb", two (0xF000, 0x5821), two( 0xF1C0, 0xFC7F), "Ii;bF7"},
  532. {"fmodd", two (0xF000, 0x5421), two( 0xF1C0, 0xFC7F), "Ii;FF7"},
  533. {"fmodl", two (0xF000, 0x4021), two( 0xF1C0, 0xFC7F), "Ii;lF7"},
  534. {"fmodp", two (0xF000, 0x4C21), two( 0xF1C0, 0xFC7F), "Ii;pF7"},
  535. {"fmods", two (0xF000, 0x4421), two( 0xF1C0, 0xFC7F), "Ii;fF7"},
  536. {"fmodw", two (0xF000, 0x5021), two( 0xF1C0, 0xFC7F), "Ii;wF7"},
  537. {"fmodx", two (0xF000, 0x0021), two( 0xF1C0, 0xE07F), "IiF8F7"},
  538. {"fmodx", two (0xF000, 0x0021), two( 0xF1C0, 0xE07F), "IiFt"},
  539. {"fmodx", two (0xF000, 0x4821), two( 0xF1C0, 0xFC7F), "Ii;xF7"},
  540. {"fmoveb", two (0xF000, 0x5800), two (0xF1C0, 0xFC7F), "Ii;bF7"}, /* fmove from <ea> to fp<n> */
  541. {"fmoveb", two (0xF000, 0x7800), two (0xF1C0, 0xFC7F), "IiF7@b"}, /* fmove from fp<n> to <ea> */
  542. {"fmoved", two (0xF000, 0x5400), two (0xF1C0, 0xFC7F), "Ii;FF7"}, /* fmove from <ea> to fp<n> */
  543. {"fmoved", two (0xF000, 0x7400), two (0xF1C0, 0xFC7F), "IiF7@F"}, /* fmove from fp<n> to <ea> */
  544. {"fmovel", two (0xF000, 0x4000), two (0xF1C0, 0xFC7F), "Ii;lF7"}, /* fmove from <ea> to fp<n> */
  545. {"fmovel", two (0xF000, 0x6000), two (0xF1C0, 0xFC7F), "IiF7@l"}, /* fmove from fp<n> to <ea> */
  546. {"fmovep", two (0xF000, 0x4C00), two (0xF1C0, 0xFC7F), "Ii;pF7"}, /* fmove from <ea> to fp<n> */
  547. {"fmovep", two (0xF000, 0x6C00), two (0xF1C0, 0xFC00), "IiF7@pkC"}, /* fmove.p with k-factors: */
  548. {"fmovep", two (0xF000, 0x7C00), two (0xF1C0, 0xFC0F), "IiF7@pkk"}, /* fmove.p with k-factors: */
  549. {"fmoves", two (0xF000, 0x4400), two (0xF1C0, 0xFC7F), "Ii;fF7"}, /* fmove from <ea> to fp<n> */
  550. {"fmoves", two (0xF000, 0x6400), two (0xF1C0, 0xFC7F), "IiF7@f"}, /* fmove from fp<n> to <ea> */
  551. {"fmovew", two (0xF000, 0x5000), two (0xF1C0, 0xFC7F), "Ii;wF7"}, /* fmove from <ea> to fp<n> */
  552. {"fmovew", two (0xF000, 0x7000), two (0xF1C0, 0xFC7F), "IiF7@w"}, /* fmove from fp<n> to <ea> */
  553. {"fmovex", two (0xF000, 0x0000), two (0xF1C0, 0xE07F), "IiF8F7"}, /* fmove from <ea> to fp<n> */
  554. {"fmovex", two (0xF000, 0x0000), two (0xF1C0, 0xE07F), "IiFt"}, /* fmove from <ea> to fp<n> */
  555. {"fmovex", two (0xF000, 0x4800), two (0xF1C0, 0xFC7F), "Ii;xF7"}, /* fmove from <ea> to fp<n> */
  556. {"fmovex", two (0xF000, 0x6800), two (0xF1C0, 0xFC7F), "IiF7@x"}, /* fmove from fp<n> to <ea> */
  557. /* fmove.l from/to system control registers: */
  558. /* fmove.l and fmovem.l are the same instruction. fmovem.l makes sense in
  559. more cases, so I've dumped fmove.l pro tem, but this is the wrong
  560. way to solve the problem in the long run. Hmmm. */
  561. /* {"fmove.l", two (0xF000, 0xA000), two (0xF1C0, 0xE3FF), "Iis8@s"}, */
  562. /* {"fmove.l", two (0xF000, 0x8000), two (0xF1C0, 0xE3FF), "Ii@ss8"}, */
  563. {"fmovecrx", two (0xF000, 0x5C00), two (0xF1FF, 0xFC00), "Ii#CF7"}, /* fmovecr.x #ccc, FPn */
  564. {"fmovemx", two (0xF020, 0xE000), two (0xF1F8, 0xFF00), "Id#b-s"}, /* fmovem.x to autodecrement, static and dynamic */
  565. {"fmovemx", two (0xF020, 0xE800), two (0xF1F8, 0xFF8F), "IiDk-s"}, /* fmovem.x to autodecrement, static and dynamic */
  566. {"fmovemx", two (0xF000, 0xF000), two (0xF1C0, 0xFF00), "Id#b&s"}, /* fmovem.x to control, static and dynamic: */
  567. {"fmovemx", two (0xF000, 0xF800), two (0xF1C0, 0xFF8F), "IiDk&s"}, /* fmovem.x to control, static and dynamic: */
  568. {"fmovemx", two (0xF018, 0xD000), two (0xF1F8, 0xFF00), "Id#b+s"}, /* fmovem.x from autoincrement, static and dynamic: */
  569. {"fmovemx", two (0xF018, 0xD800), two (0xF1F8, 0xFF8F), "IiDk+s"}, /* fmovem.x from autoincrement, static and dynamic: */
  570. {"fmovemx", two (0xF000, 0xD000), two (0xF1C0, 0xFF00), "Id#b&s"}, /* fmovem.x from control, static and dynamic: */
  571. {"fmovemx", two (0xF000, 0xD800), two (0xF1C0, 0xFF8F), "IiDk&s"}, /* fmovem.x from control, static and dynamic: */
  572. /* fmoveml and fmovel are the same instruction. This may cause some
  573. confusion in the assembler. */
  574. {"fmoveml", two (0xF000, 0xA000), two (0xF1C0, 0xE3FF), "Ii#8%s"}, /* fmovem.l to/from system control register(s): */
  575. {"fmoveml", two (0xF000, 0x8000), two (0xF1C0, 0xE3FF), "Ii%s#8"}, /* fmovem.l to/from system control register(s): */
  576. {"fmulb", two (0xF000, 0x5823), two( 0xF1C0, 0xFC7F), "Ii;bF7"},
  577. {"fmuld", two (0xF000, 0x5423), two( 0xF1C0, 0xFC7F), "Ii;FF7"},
  578. {"fmull", two (0xF000, 0x4023), two( 0xF1C0, 0xFC7F), "Ii;lF7"},
  579. {"fmulp", two (0xF000, 0x4C23), two( 0xF1C0, 0xFC7F), "Ii;pF7"},
  580. {"fmuls", two (0xF000, 0x4423), two( 0xF1C0, 0xFC7F), "Ii;fF7"},
  581. {"fmulw", two (0xF000, 0x5023), two( 0xF1C0, 0xFC7F), "Ii;wF7"},
  582. {"fmulx", two (0xF000, 0x0023), two( 0xF1C0, 0xE07F), "IiF8F7"},
  583. {"fmulx", two (0xF000, 0x0023), two( 0xF1C0, 0xE07F), "IiFt"},
  584. {"fmulx", two (0xF000, 0x4823), two( 0xF1C0, 0xFC7F), "Ii;xF7"},
  585. {"fnegb", two (0xF000, 0x581A), two( 0xF1C0, 0xFC7F), "Ii;bF7"},
  586. {"fnegd", two (0xF000, 0x541A), two( 0xF1C0, 0xFC7F), "Ii;FF7"},
  587. {"fnegl", two (0xF000, 0x401A), two( 0xF1C0, 0xFC7F), "Ii;lF7"},
  588. {"fnegp", two (0xF000, 0x4C1A), two( 0xF1C0, 0xFC7F), "Ii;pF7"},
  589. {"fnegs", two (0xF000, 0x441A), two( 0xF1C0, 0xFC7F), "Ii;fF7"},
  590. {"fnegw", two (0xF000, 0x501A), two( 0xF1C0, 0xFC7F), "Ii;wF7"},
  591. {"fnegx", two (0xF000, 0x001A), two( 0xF1C0, 0xE07F), "IiF8F7"},
  592. {"fnegx", two (0xF000, 0x001A), two( 0xF1C0, 0xE07F), "IiFt"},
  593. {"fnegx", two (0xF000, 0x481A), two( 0xF1C0, 0xFC7F), "Ii;xF7"},
  594. {"fremb", two (0xF000, 0x5825), two( 0xF1C0, 0xFC7F), "Ii;bF7"},
  595. {"fremd", two (0xF000, 0x5425), two( 0xF1C0, 0xFC7F), "Ii;FF7"},
  596. {"freml", two (0xF000, 0x4025), two( 0xF1C0, 0xFC7F), "Ii;lF7"},
  597. {"fremp", two (0xF000, 0x4C25), two( 0xF1C0, 0xFC7F), "Ii;pF7"},
  598. {"frems", two (0xF000, 0x4425), two( 0xF1C0, 0xFC7F), "Ii;fF7"},
  599. {"fremw", two (0xF000, 0x5025), two( 0xF1C0, 0xFC7F), "Ii;wF7"},
  600. {"fremx", two (0xF000, 0x0025), two( 0xF1C0, 0xE07F), "IiF8F7"},
  601. {"fremx", two (0xF000, 0x0025), two( 0xF1C0, 0xE07F), "IiFt"},
  602. {"fremx", two (0xF000, 0x4825), two( 0xF1C0, 0xFC7F), "Ii;xF7"},
  603. /* Need special mode for autoincrement/decrement? */
  604. {"frestore", one (0xF140), one (0xF1C0), "Id&s"},
  605. {"fsave", one (0xF100), one( 0xF1C0), "Id&s"},
  606. {"fsincosb", two (0xF000, 0x5830), two( 0xF1C0, 0xFC78), "Ii;bF7FC"},
  607. {"fsincosd", two (0xF000, 0x5430), two( 0xF1C0, 0xFC78), "Ii;FF7FC"},
  608. {"fsincosl", two (0xF000, 0x4030), two( 0xF1C0, 0xFC78), "Ii;lF7FC"},
  609. {"fsincosp", two (0xF000, 0x4C30), two( 0xF1C0, 0xFC78), "Ii;pF7FC"},
  610. {"fsincoss", two (0xF000, 0x4430), two( 0xF1C0, 0xFC78), "Ii;fF7FC"},
  611. {"fsincosw", two (0xF000, 0x5030), two( 0xF1C0, 0xFC78), "Ii;wF7FC"},
  612. {"fsincosx", two (0xF000, 0x0030), two( 0xF1C0, 0xE078), "IiF8F7FC"},
  613. {"fsincosx", two (0xF000, 0x4830), two( 0xF1C0, 0xFC78), "Ii;xF7FC"},
  614. {"fscaleb", two (0xF000, 0x5826), two( 0xF1C0, 0xFC7F), "Ii;bF7"},
  615. {"fscaled", two (0xF000, 0x5426), two( 0xF1C0, 0xFC7F), "Ii;FF7"},
  616. {"fscalel", two (0xF000, 0x4026), two( 0xF1C0, 0xFC7F), "Ii;lF7"},
  617. {"fscalep", two (0xF000, 0x4C26), two( 0xF1C0, 0xFC7F), "Ii;pF7"},
  618. {"fscales", two (0xF000, 0x4426), two( 0xF1C0, 0xFC7F), "Ii;fF7"},
  619. {"fscalew", two (0xF000, 0x5026), two( 0xF1C0, 0xFC7F), "Ii;wF7"},
  620. {"fscalex", two (0xF000, 0x0026), two( 0xF1C0, 0xE07F), "IiF8F7"},
  621. {"fscalex", two (0xF000, 0x0026), two( 0xF1C0, 0xE07F), "IiFt"},
  622. {"fscalex", two (0xF000, 0x4826), two( 0xF1C0, 0xFC7F), "Ii;xF7"},
  623. {"fseq", two (0xF040, 0x0001), two (0xF1C0, 0xFFFF), "Ii@s"},
  624. {"fsf", two (0xF040, 0x0000), two (0xF1C0, 0xFFFF), "Ii@s"},
  625. {"fsge", two (0xF040, 0x0013), two (0xF1C0, 0xFFFF), "Ii@s"},
  626. {"fsgl", two (0xF040, 0x0016), two (0xF1C0, 0xFFFF), "Ii@s"},
  627. {"fsgle", two (0xF040, 0x0017), two (0xF1C0, 0xFFFF), "Ii@s"},
  628. {"fsgt", two (0xF040, 0x0012), two (0xF1C0, 0xFFFF), "Ii@s"},
  629. {"fsle", two (0xF040, 0x0015), two (0xF1C0, 0xFFFF), "Ii@s"},
  630. {"fslt", two (0xF040, 0x0014), two (0xF1C0, 0xFFFF), "Ii@s"},
  631. {"fsne", two (0xF040, 0x000E), two (0xF1C0, 0xFFFF), "Ii@s"},
  632. {"fsnge", two (0xF040, 0x001C), two (0xF1C0, 0xFFFF), "Ii@s"},
  633. {"fsngl", two (0xF040, 0x0019), two (0xF1C0, 0xFFFF), "Ii@s"},
  634. {"fsngle", two (0xF040, 0x0018), two (0xF1C0, 0xFFFF), "Ii@s"},
  635. {"fsngt", two (0xF040, 0x001D), two (0xF1C0, 0xFFFF), "Ii@s"},
  636. {"fsnle", two (0xF040, 0x001A), two (0xF1C0, 0xFFFF), "Ii@s"},
  637. {"fsnlt", two (0xF040, 0x001B), two (0xF1C0, 0xFFFF), "Ii@s"},
  638. {"fsoge", two (0xF040, 0x0003), two (0xF1C0, 0xFFFF), "Ii@s"},
  639. {"fsogl", two (0xF040, 0x0006), two (0xF1C0, 0xFFFF), "Ii@s"},
  640. {"fsogt", two (0xF040, 0x0002), two (0xF1C0, 0xFFFF), "Ii@s"},
  641. {"fsole", two (0xF040, 0x0005), two (0xF1C0, 0xFFFF), "Ii@s"},
  642. {"fsolt", two (0xF040, 0x0004), two (0xF1C0, 0xFFFF), "Ii@s"},
  643. {"fsor", two (0xF040, 0x0007), two (0xF1C0, 0xFFFF), "Ii@s"},
  644. {"fsseq", two (0xF040, 0x0011), two (0xF1C0, 0xFFFF), "Ii@s"},
  645. {"fssf", two (0xF040, 0x0010), two (0xF1C0, 0xFFFF), "Ii@s"},
  646. {"fssne", two (0xF040, 0x001E), two (0xF1C0, 0xFFFF), "Ii@s"},
  647. {"fsst", two (0xF040, 0x001F), two (0xF1C0, 0xFFFF), "Ii@s"},
  648. {"fst", two (0xF040, 0x000F), two (0xF1C0, 0xFFFF), "Ii@s"},
  649. {"fsueq", two (0xF040, 0x0009), two (0xF1C0, 0xFFFF), "Ii@s"},
  650. {"fsuge", two (0xF040, 0x000B), two (0xF1C0, 0xFFFF), "Ii@s"},
  651. {"fsugt", two (0xF040, 0x000A), two (0xF1C0, 0xFFFF), "Ii@s"},
  652. {"fsule", two (0xF040, 0x000D), two (0xF1C0, 0xFFFF), "Ii@s"},
  653. {"fsult", two (0xF040, 0x000C), two (0xF1C0, 0xFFFF), "Ii@s"},
  654. {"fsun", two (0xF040, 0x0008), two (0xF1C0, 0xFFFF), "Ii@s"},
  655. {"fsgldivb", two (0xF000, 0x5824), two( 0xF1C0, 0xFC7F), "Ii;bF7"},
  656. {"fsgldivd", two (0xF000, 0x5424), two( 0xF1C0, 0xFC7F), "Ii;FF7"},
  657. {"fsgldivl", two (0xF000, 0x4024), two( 0xF1C0, 0xFC7F), "Ii;lF7"},
  658. {"fsgldivp", two (0xF000, 0x4C24), two( 0xF1C0, 0xFC7F), "Ii;pF7"},
  659. {"fsgldivs", two (0xF000, 0x4424), two( 0xF1C0, 0xFC7F), "Ii;fF7"},
  660. {"fsgldivw", two (0xF000, 0x5024), two( 0xF1C0, 0xFC7F), "Ii;wF7"},
  661. {"fsgldivx", two (0xF000, 0x0024), two( 0xF1C0, 0xE07F), "IiF8F7"},
  662. {"fsgldivx", two (0xF000, 0x0024), two( 0xF1C0, 0xE07F), "IiFt"},
  663. {"fsgldivx", two (0xF000, 0x4824), two( 0xF1C0, 0xFC7F), "Ii;xF7"},
  664. {"fsglmulb", two (0xF000, 0x5827), two( 0xF1C0, 0xFC7F), "Ii;bF7"},
  665. {"fsglmuld", two (0xF000, 0x5427), two( 0xF1C0, 0xFC7F), "Ii;FF7"},
  666. {"fsglmull", two (0xF000, 0x4027), two( 0xF1C0, 0xFC7F), "Ii;lF7"},
  667. {"fsglmulp", two (0xF000, 0x4C27), two( 0xF1C0, 0xFC7F), "Ii;pF7"},
  668. {"fsglmuls", two (0xF000, 0x4427), two( 0xF1C0, 0xFC7F), "Ii;fF7"},
  669. {"fsglmulw", two (0xF000, 0x5027), two( 0xF1C0, 0xFC7F), "Ii;wF7"},
  670. {"fsglmulx", two (0xF000, 0x0027), two( 0xF1C0, 0xE07F), "IiF8F7"},
  671. {"fsglmulx", two (0xF000, 0x0027), two( 0xF1C0, 0xE07F), "IiFt"},
  672. {"fsglmulx", two (0xF000, 0x4827), two( 0xF1C0, 0xFC7F), "Ii;xF7"},
  673. {"fsinb", two (0xF000, 0x580E), two( 0xF1C0, 0xFC7F), "Ii;bF7"},
  674. {"fsind", two (0xF000, 0x540E), two( 0xF1C0, 0xFC7F), "Ii;FF7"},
  675. {"fsinl", two (0xF000, 0x400E), two( 0xF1C0, 0xFC7F), "Ii;lF7"},
  676. {"fsinp", two (0xF000, 0x4C0E), two( 0xF1C0, 0xFC7F), "Ii;pF7"},
  677. {"fsins", two (0xF000, 0x440E), two( 0xF1C0, 0xFC7F), "Ii;fF7"},
  678. {"fsinw", two (0xF000, 0x500E), two( 0xF1C0, 0xFC7F), "Ii;wF7"},
  679. {"fsinx", two (0xF000, 0x000E), two( 0xF1C0, 0xE07F), "IiF8F7"},
  680. {"fsinx", two (0xF000, 0x000E), two( 0xF1C0, 0xE07F), "IiFt"},
  681. {"fsinx", two (0xF000, 0x480E), two( 0xF1C0, 0xFC7F), "Ii;xF7"},
  682. {"fsinhb", two (0xF000, 0x5802), two( 0xF1C0, 0xFC7F), "Ii;bF7"},
  683. {"fsinhd", two (0xF000, 0x5402), two( 0xF1C0, 0xFC7F), "Ii;FF7"},
  684. {"fsinhl", two (0xF000, 0x4002), two( 0xF1C0, 0xFC7F), "Ii;lF7"},
  685. {"fsinhp", two (0xF000, 0x4C02), two( 0xF1C0, 0xFC7F), "Ii;pF7"},
  686. {"fsinhs", two (0xF000, 0x4402), two( 0xF1C0, 0xFC7F), "Ii;fF7"},
  687. {"fsinhw", two (0xF000, 0x5002), two( 0xF1C0, 0xFC7F), "Ii;wF7"},
  688. {"fsinhx", two (0xF000, 0x0002), two( 0xF1C0, 0xE07F), "IiF8F7"},
  689. {"fsinhx", two (0xF000, 0x0002), two( 0xF1C0, 0xE07F), "IiFt"},
  690. {"fsinhx", two (0xF000, 0x4802), two( 0xF1C0, 0xFC7F), "Ii;xF7"},
  691. {"fsqrtb", two (0xF000, 0x5804), two( 0xF1C0, 0xFC7F), "Ii;bF7"},
  692. {"fsqrtd", two (0xF000, 0x5404), two( 0xF1C0, 0xFC7F), "Ii;FF7"},
  693. {"fsqrtl", two (0xF000, 0x4004), two( 0xF1C0, 0xFC7F), "Ii;lF7"},
  694. {"fsqrtp", two (0xF000, 0x4C04), two( 0xF1C0, 0xFC7F), "Ii;pF7"},
  695. {"fsqrts", two (0xF000, 0x4404), two( 0xF1C0, 0xFC7F), "Ii;fF7"},
  696. {"fsqrtw", two (0xF000, 0x5004), two( 0xF1C0, 0xFC7F), "Ii;wF7"},
  697. {"fsqrtx", two (0xF000, 0x0004), two( 0xF1C0, 0xE07F), "IiF8F7"},
  698. {"fsqrtx", two (0xF000, 0x0004), two( 0xF1C0, 0xE07F), "IiFt"},
  699. {"fsqrtx", two (0xF000, 0x4804), two( 0xF1C0, 0xFC7F), "Ii;xF7"},
  700. {"fsubb", two (0xF000, 0x5828), two( 0xF1C0, 0xFC7F), "Ii;bF7"},
  701. {"fsubd", two (0xF000, 0x5428), two( 0xF1C0, 0xFC7F), "Ii;FF7"},
  702. {"fsubl", two (0xF000, 0x4028), two( 0xF1C0, 0xFC7F), "Ii;lF7"},
  703. {"fsubp", two (0xF000, 0x4C28), two( 0xF1C0, 0xFC7F), "Ii;pF7"},
  704. {"fsubs", two (0xF000, 0x4428), two( 0xF1C0, 0xFC7F), "Ii;fF7"},
  705. {"fsubw", two (0xF000, 0x5028), two( 0xF1C0, 0xFC7F), "Ii;wF7"},
  706. {"fsubx", two (0xF000, 0x0028), two( 0xF1C0, 0xE07F), "IiF8F7"},
  707. {"fsubx", two (0xF000, 0x0028), two( 0xF1C0, 0xE07F), "IiFt"},
  708. {"fsubx", two (0xF000, 0x4828), two( 0xF1C0, 0xFC7F), "Ii;xF7"},
  709. {"ftanb", two (0xF000, 0x580F), two( 0xF1C0, 0xFC7F), "Ii;bF7"},
  710. {"ftand", two (0xF000, 0x540F), two( 0xF1C0, 0xFC7F), "Ii;FF7"},
  711. {"ftanl", two (0xF000, 0x400F), two( 0xF1C0, 0xFC7F), "Ii;lF7"},
  712. {"ftanp", two (0xF000, 0x4C0F), two( 0xF1C0, 0xFC7F), "Ii;pF7"},
  713. {"ftans", two (0xF000, 0x440F), two( 0xF1C0, 0xFC7F), "Ii;fF7"},
  714. {"ftanw", two (0xF000, 0x500F), two( 0xF1C0, 0xFC7F), "Ii;wF7"},
  715. {"ftanx", two (0xF000, 0x000F), two( 0xF1C0, 0xE07F), "IiF8F7"},
  716. {"ftanx", two (0xF000, 0x000F), two( 0xF1C0, 0xE07F), "IiFt"},
  717. {"ftanx", two (0xF000, 0x480F), two( 0xF1C0, 0xFC7F), "Ii;xF7"},
  718. {"ftanhb", two (0xF000, 0x5809), two( 0xF1C0, 0xFC7F), "Ii;bF7"},
  719. {"ftanhd", two (0xF000, 0x5409), two( 0xF1C0, 0xFC7F), "Ii;FF7"},
  720. {"ftanhl", two (0xF000, 0x4009), two( 0xF1C0, 0xFC7F), "Ii;lF7"},
  721. {"ftanhp", two (0xF000, 0x4C09), two( 0xF1C0, 0xFC7F), "Ii;pF7"},
  722. {"ftanhs", two (0xF000, 0x4409), two( 0xF1C0, 0xFC7F), "Ii;fF7"},
  723. {"ftanhw", two (0xF000, 0x5009), two( 0xF1C0, 0xFC7F), "Ii;wF7"},
  724. {"ftanhx", two (0xF000, 0x0009), two( 0xF1C0, 0xE07F), "IiF8F7"},
  725. {"ftanhx", two (0xF000, 0x0009), two( 0xF1C0, 0xE07F), "IiFt"},
  726. {"ftanhx", two (0xF000, 0x4809), two( 0xF1C0, 0xFC7F), "Ii;xF7"},
  727. {"ftentoxb", two (0xF000, 0x5812), two( 0xF1C0, 0xFC7F), "Ii;bF7"},
  728. {"ftentoxd", two (0xF000, 0x5412), two( 0xF1C0, 0xFC7F), "Ii;FF7"},
  729. {"ftentoxl", two (0xF000, 0x4012), two( 0xF1C0, 0xFC7F), "Ii;lF7"},
  730. {"ftentoxp", two (0xF000, 0x4C12), two( 0xF1C0, 0xFC7F), "Ii;pF7"},
  731. {"ftentoxs", two (0xF000, 0x4412), two( 0xF1C0, 0xFC7F), "Ii;fF7"},
  732. {"ftentoxw", two (0xF000, 0x5012), two( 0xF1C0, 0xFC7F), "Ii;wF7"},
  733. {"ftentoxx", two (0xF000, 0x0012), two( 0xF1C0, 0xE07F), "IiF8F7"},
  734. {"ftentoxx", two (0xF000, 0x0012), two( 0xF1C0, 0xE07F), "IiFt"},
  735. {"ftentoxx", two (0xF000, 0x4812), two( 0xF1C0, 0xFC7F), "Ii;xF7"},
  736. {"ftrapeq", two (0xF07C, 0x0001), two (0xF1FF, 0xFFFF), "Ii"},
  737. {"ftrapf", two (0xF07C, 0x0000), two (0xF1FF, 0xFFFF), "Ii"},
  738. {"ftrapge", two (0xF07C, 0x0013), two (0xF1FF, 0xFFFF), "Ii"},
  739. {"ftrapgl", two (0xF07C, 0x0016), two (0xF1FF, 0xFFFF), "Ii"},
  740. {"ftrapgle", two (0xF07C, 0x0017), two (0xF1FF, 0xFFFF), "Ii"},
  741. {"ftrapgt", two (0xF07C, 0x0012), two (0xF1FF, 0xFFFF), "Ii"},
  742. {"ftraple", two (0xF07C, 0x0015), two (0xF1FF, 0xFFFF), "Ii"},
  743. {"ftraplt", two (0xF07C, 0x0014), two (0xF1FF, 0xFFFF), "Ii"},
  744. {"ftrapne", two (0xF07C, 0x000E), two (0xF1FF, 0xFFFF), "Ii"},
  745. {"ftrapnge", two (0xF07C, 0x001C), two (0xF1FF, 0xFFFF), "Ii"},
  746. {"ftrapngl", two (0xF07C, 0x0019), two (0xF1FF, 0xFFFF), "Ii"},
  747. {"ftrapngle", two (0xF07C, 0x0018), two (0xF1FF, 0xFFFF), "Ii"},
  748. {"ftrapngt", two (0xF07C, 0x001D), two (0xF1FF, 0xFFFF), "Ii"},
  749. {"ftrapnle", two (0xF07C, 0x001A), two (0xF1FF, 0xFFFF), "Ii"},
  750. {"ftrapnlt", two (0xF07C, 0x001B), two (0xF1FF, 0xFFFF), "Ii"},
  751. {"ftrapoge", two (0xF07C, 0x0003), two (0xF1FF, 0xFFFF), "Ii"},
  752. {"ftrapogl", two (0xF07C, 0x0006), two (0xF1FF, 0xFFFF), "Ii"},
  753. {"ftrapogt", two (0xF07C, 0x0002), two (0xF1FF, 0xFFFF), "Ii"},
  754. {"ftrapole", two (0xF07C, 0x0005), two (0xF1FF, 0xFFFF), "Ii"},
  755. {"ftrapolt", two (0xF07C, 0x0004), two (0xF1FF, 0xFFFF), "Ii"},
  756. {"ftrapor", two (0xF07C, 0x0007), two (0xF1FF, 0xFFFF), "Ii"},
  757. {"ftrapseq", two (0xF07C, 0x0011), two (0xF1FF, 0xFFFF), "Ii"},
  758. {"ftrapsf", two (0xF07C, 0x0010), two (0xF1FF, 0xFFFF), "Ii"},
  759. {"ftrapsne", two (0xF07C, 0x001E), two (0xF1FF, 0xFFFF), "Ii"},
  760. {"ftrapst", two (0xF07C, 0x001F), two (0xF1FF, 0xFFFF), "Ii"},
  761. {"ftrapt", two (0xF07C, 0x000F), two (0xF1FF, 0xFFFF), "Ii"},
  762. {"ftrapueq", two (0xF07C, 0x0009), two (0xF1FF, 0xFFFF), "Ii"},
  763. {"ftrapuge", two (0xF07C, 0x000B), two (0xF1FF, 0xFFFF), "Ii"},
  764. {"ftrapugt", two (0xF07C, 0x000A), two (0xF1FF, 0xFFFF), "Ii"},
  765. {"ftrapule", two (0xF07C, 0x000D), two (0xF1FF, 0xFFFF), "Ii"},
  766. {"ftrapult", two (0xF07C, 0x000C), two (0xF1FF, 0xFFFF), "Ii"},
  767. {"ftrapun", two (0xF07C, 0x0008), two (0xF1FF, 0xFFFF), "Ii"},
  768. {"ftrapeq.w", two (0xF07A, 0x0001), two (0xF1FF, 0xFFFF), "Ii^w"},
  769. {"ftrapf.w", two (0xF07A, 0x0000), two (0xF1FF, 0xFFFF), "Ii^w"},
  770. {"ftrapge.w", two (0xF07A, 0x0013), two (0xF1FF, 0xFFFF), "Ii^w"},
  771. {"ftrapgl.w", two (0xF07A, 0x0016), two (0xF1FF, 0xFFFF), "Ii^w"},
  772. {"ftrapgle.w", two (0xF07A, 0x0017), two (0xF1FF, 0xFFFF), "Ii^w"},
  773. {"ftrapgt.w", two (0xF07A, 0x0012), two (0xF1FF, 0xFFFF), "Ii^w"},
  774. {"ftraple.w", two (0xF07A, 0x0015), two (0xF1FF, 0xFFFF), "Ii^w"},
  775. {"ftraplt.w", two (0xF07A, 0x0014), two (0xF1FF, 0xFFFF), "Ii^w"},
  776. {"ftrapne.w", two (0xF07A, 0x000E), two (0xF1FF, 0xFFFF), "Ii^w"},
  777. {"ftrapnge.w", two (0xF07A, 0x001C), two (0xF1FF, 0xFFFF), "Ii^w"},
  778. {"ftrapngl.w", two (0xF07A, 0x0019), two (0xF1FF, 0xFFFF), "Ii^w"},
  779. {"ftrapngle.w", two (0xF07A, 0x0018), two (0xF1FF, 0xFFFF), "Ii^w"},
  780. {"ftrapngt.w", two (0xF07A, 0x001D), two (0xF1FF, 0xFFFF), "Ii^w"},
  781. {"ftrapnle.w", two (0xF07A, 0x001A), two (0xF1FF, 0xFFFF), "Ii^w"},
  782. {"ftrapnlt.w", two (0xF07A, 0x001B), two (0xF1FF, 0xFFFF), "Ii^w"},
  783. {"ftrapoge.w", two (0xF07A, 0x0003), two (0xF1FF, 0xFFFF), "Ii^w"},
  784. {"ftrapogl.w", two (0xF07A, 0x0006), two (0xF1FF, 0xFFFF), "Ii^w"},
  785. {"ftrapogt.w", two (0xF07A, 0x0002), two (0xF1FF, 0xFFFF), "Ii^w"},
  786. {"ftrapole.w", two (0xF07A, 0x0005), two (0xF1FF, 0xFFFF), "Ii^w"},
  787. {"ftrapolt.w", two (0xF07A, 0x0004), two (0xF1FF, 0xFFFF), "Ii^w"},
  788. {"ftrapor.w", two (0xF07A, 0x0007), two (0xF1FF, 0xFFFF), "Ii^w"},
  789. {"ftrapseq.w", two (0xF07A, 0x0011), two (0xF1FF, 0xFFFF), "Ii^w"},
  790. {"ftrapsf.w", two (0xF07A, 0x0010), two (0xF1FF, 0xFFFF), "Ii^w"},
  791. {"ftrapsne.w", two (0xF07A, 0x001E), two (0xF1FF, 0xFFFF), "Ii^w"},
  792. {"ftrapst.w", two (0xF07A, 0x001F), two (0xF1FF, 0xFFFF), "Ii^w"},
  793. {"ftrapt.w", two (0xF07A, 0x000F), two (0xF1FF, 0xFFFF), "Ii^w"},
  794. {"ftrapueq.w", two (0xF07A, 0x0009), two (0xF1FF, 0xFFFF), "Ii^w"},
  795. {"ftrapuge.w", two (0xF07A, 0x000B), two (0xF1FF, 0xFFFF), "Ii^w"},
  796. {"ftrapugt.w", two (0xF07A, 0x000A), two (0xF1FF, 0xFFFF), "Ii^w"},
  797. {"ftrapule.w", two (0xF07A, 0x000D), two (0xF1FF, 0xFFFF), "Ii^w"},
  798. {"ftrapult.w", two (0xF07A, 0x000C), two (0xF1FF, 0xFFFF), "Ii^w"},
  799. {"ftrapun.w", two (0xF07A, 0x0008), two (0xF1FF, 0xFFFF), "Ii^w"},
  800. {"ftrapeq.l", two (0xF07B, 0x0001), two (0xF1FF, 0xFFFF), "Ii^l"},
  801. {"ftrapf.l", two (0xF07B, 0x0000), two (0xF1FF, 0xFFFF), "Ii^l"},
  802. {"ftrapge.l", two (0xF07B, 0x0013), two (0xF1FF, 0xFFFF), "Ii^l"},
  803. {"ftrapgl.l", two (0xF07B, 0x0016), two (0xF1FF, 0xFFFF), "Ii^l"},
  804. {"ftrapgle.l", two (0xF07B, 0x0017), two (0xF1FF, 0xFFFF), "Ii^l"},
  805. {"ftrapgt.l", two (0xF07B, 0x0012), two (0xF1FF, 0xFFFF), "Ii^l"},
  806. {"ftraple.l", two (0xF07B, 0x0015), two (0xF1FF, 0xFFFF), "Ii^l"},
  807. {"ftraplt.l", two (0xF07B, 0x0014), two (0xF1FF, 0xFFFF), "Ii^l"},
  808. {"ftrapne.l", two (0xF07B, 0x000E), two (0xF1FF, 0xFFFF), "Ii^l"},
  809. {"ftrapnge.l", two (0xF07B, 0x001C), two (0xF1FF, 0xFFFF), "Ii^l"},
  810. {"ftrapngl.l", two (0xF07B, 0x0019), two (0xF1FF, 0xFFFF), "Ii^l"},
  811. {"ftrapngle.l", two (0xF07B, 0x0018), two (0xF1FF, 0xFFFF), "Ii^l"},
  812. {"ftrapngt.l", two (0xF07B, 0x001D), two (0xF1FF, 0xFFFF), "Ii^l"},
  813. {"ftrapnle.l", two (0xF07B, 0x001A), two (0xF1FF, 0xFFFF), "Ii^l"},
  814. {"ftrapnlt.l", two (0xF07B, 0x001B), two (0xF1FF, 0xFFFF), "Ii^l"},
  815. {"ftrapoge.l", two (0xF07B, 0x0003), two (0xF1FF, 0xFFFF), "Ii^l"},
  816. {"ftrapogl.l", two (0xF07B, 0x0006), two (0xF1FF, 0xFFFF), "Ii^l"},
  817. {"ftrapogt.l", two (0xF07B, 0x0002), two (0xF1FF, 0xFFFF), "Ii^l"},
  818. {"ftrapole.l", two (0xF07B, 0x0005), two (0xF1FF, 0xFFFF), "Ii^l"},
  819. {"ftrapolt.l", two (0xF07B, 0x0004), two (0xF1FF, 0xFFFF), "Ii^l"},
  820. {"ftrapor.l", two (0xF07B, 0x0007), two (0xF1FF, 0xFFFF), "Ii^l"},
  821. {"ftrapseq.l", two (0xF07B, 0x0011), two (0xF1FF, 0xFFFF), "Ii^l"},
  822. {"ftrapsf.l", two (0xF07B, 0x0010), two (0xF1FF, 0xFFFF), "Ii^l"},
  823. {"ftrapsne.l", two (0xF07B, 0x001E), two (0xF1FF, 0xFFFF), "Ii^l"},
  824. {"ftrapst.l", two (0xF07B, 0x001F), two (0xF1FF, 0xFFFF), "Ii^l"},
  825. {"ftrapt.l", two (0xF07B, 0x000F), two (0xF1FF, 0xFFFF), "Ii^l"},
  826. {"ftrapueq.l", two (0xF07B, 0x0009), two (0xF1FF, 0xFFFF), "Ii^l"},
  827. {"ftrapuge.l", two (0xF07B, 0x000B), two (0xF1FF, 0xFFFF), "Ii^l"},
  828. {"ftrapugt.l", two (0xF07B, 0x000A), two (0xF1FF, 0xFFFF), "Ii^l"},
  829. {"ftrapule.l", two (0xF07B, 0x000D), two (0xF1FF, 0xFFFF), "Ii^l"},
  830. {"ftrapult.l", two (0xF07B, 0x000C), two (0xF1FF, 0xFFFF), "Ii^l"},
  831. {"ftrapun.l", two (0xF07B, 0x0008), two (0xF1FF, 0xFFFF), "Ii^l"},
  832. {"ftstb", two (0xF000, 0x583A), two( 0xF1C0, 0xFC7F), "Ii;b"},
  833. {"ftstd", two (0xF000, 0x543A), two( 0xF1C0, 0xFC7F), "Ii;F"},
  834. {"ftstl", two (0xF000, 0x403A), two( 0xF1C0, 0xFC7F), "Ii;l"},
  835. {"ftstp", two (0xF000, 0x4C3A), two( 0xF1C0, 0xFC7F), "Ii;p"},
  836. {"ftsts", two (0xF000, 0x443A), two( 0xF1C0, 0xFC7F), "Ii;f"},
  837. {"ftstw", two (0xF000, 0x503A), two( 0xF1C0, 0xFC7F), "Ii;w"},
  838. {"ftstx", two (0xF000, 0x003A), two( 0xF1C0, 0xE07F), "IiF8"},
  839. {"ftstx", two (0xF000, 0x483A), two( 0xF1C0, 0xFC7F), "Ii;x"},
  840. {"ftwotoxb", two (0xF000, 0x5811), two( 0xF1C0, 0xFC7F), "Ii;bF7"},
  841. {"ftwotoxd", two (0xF000, 0x5411), two( 0xF1C0, 0xFC7F), "Ii;FF7"},
  842. {"ftwotoxl", two (0xF000, 0x4011), two( 0xF1C0, 0xFC7F), "Ii;lF7"},
  843. {"ftwotoxp", two (0xF000, 0x4C11), two( 0xF1C0, 0xFC7F), "Ii;pF7"},
  844. {"ftwotoxs", two (0xF000, 0x4411), two( 0xF1C0, 0xFC7F), "Ii;fF7"},
  845. {"ftwotoxw", two (0xF000, 0x5011), two( 0xF1C0, 0xFC7F), "Ii;wF7"},
  846. {"ftwotoxx", two (0xF000, 0x0011), two( 0xF1C0, 0xE07F), "IiF8F7"},
  847. {"ftwotoxx", two (0xF000, 0x0011), two( 0xF1C0, 0xE07F), "IiFt"},
  848. {"ftwotoxx", two (0xF000, 0x4811), two( 0xF1C0, 0xFC7F), "Ii;xF7"},
  849. {"illegal", one (0045374), one (0177777), ""},
  850. {"jmp", one (0047300), one (0177700), "!s"},
  851. {"jsr", one (0047200), one (0177700), "!s"},
  852. {"lea", one (0040700), one (0170700), "!sAd"},
  853. {"linkw", one (0047120), one (0177770), "As#w"},
  854. {"linkl", one (0044010), one (0177770), "As#l"},
  855. {"link", one (0047120), one (0177770), "As#w"},
  856. {"link", one (0044010), one (0177770), "As#l"},
  857. {"lslb", one (0160410), one (0170770), "QdDs"}, /* lsrb #Q, Ds */
  858. {"lslb", one (0160450), one (0170770), "DdDs"}, /* lsrb Dd, Ds */
  859. {"lslw", one (0160510), one (0170770), "QdDs"}, /* lsrb #Q, Ds */
  860. {"lslw", one (0160550), one (0170770), "DdDs"}, /* lsrb Dd, Ds */
  861. {"lslw", one (0161700), one (0177700), "~s"}, /* Shift memory */
  862. {"lsll", one (0160610), one (0170770), "QdDs"}, /* lsrb #Q, Ds */
  863. {"lsll", one (0160650), one (0170770), "DdDs"}, /* lsrb Dd, Ds */
  864. {"lsrb", one (0160010), one (0170770), "QdDs"} /* lsrb #Q, Ds */,
  865. {"lsrb", one (0160050), one (0170770), "DdDs"}, /* lsrb Dd, Ds */
  866. {"lsrl", one (0160210), one (0170770), "QdDs"}, /* lsrb #Q, Ds */
  867. {"lsrl", one (0160250), one (0170770), "DdDs"}, /* lsrb #Q, Ds */
  868. {"lsrw", one (0160110), one (0170770), "QdDs"}, /* lsrb #Q, Ds */
  869. {"lsrw", one (0160150), one (0170770), "DdDs"}, /* lsrb #Q, Ds */
  870. {"lsrw", one (0161300), one (0177700), "~s"}, /* Shift memory */
  871. {"moveal", one (0020100), one (0170700), "*lAd"},
  872. {"moveaw", one (0030100), one (0170700), "*wAd"},
  873. {"moveb", one (0010000), one (0170000), ";b$d"}, /* move */
  874. {"movel", one (0020000), one (0170000), "*l$d"},
  875. {"movel", one (0020100), one (0170700), "*lAd"},
  876. {"movel", one (0047140), one (0177770), "AsUd"}, /* move to USP */
  877. {"movel", one (0047150), one (0177770), "UdAs"}, /* move from USP */
  878. {"movel", one (0070000), one (0170400), "MsDd"}, /* moveq written as move */
  879. {"moveml", one (0044300), one (0177700), "#w&s"}, /* movem reg to mem. */
  880. {"moveml", one (0044340), one (0177770), "#w-s"}, /* movem reg to autodecrement. */
  881. {"moveml", one (0046300), one (0177700), "!s#w"}, /* movem mem to reg. */
  882. {"moveml", one (0046330), one (0177770), "+s#w"}, /* movem autoinc to reg. */
  883. {"movemw", one (0044200), one (0177700), "#w&s"}, /* movem reg to mem. */
  884. {"movemw", one (0044240), one (0177770), "#w-s"}, /* movem reg to autodecrement. */
  885. {"movemw", one (0046200), one (0177700), "!s#w"}, /* movem mem to reg. */
  886. {"movemw", one (0046230), one (0177770), "+s#w"}, /* movem autoinc to reg. */
  887. {"movepl", one (0000510), one (0170770), "dsDd"}, /* memory to register */
  888. {"movepl", one (0000710), one (0170770), "Ddds"}, /* register to memory */
  889. {"movepw", one (0000410), one (0170770), "dsDd"}, /* memory to register */
  890. {"movepw", one (0000610), one (0170770), "Ddds"}, /* register to memory */
  891. {"moveq", one (0070000), one (0170400), "MsDd"},
  892. {"movew", one (0030000), one (0170000), "*w$d"},
  893. {"movew", one (0030100), one (0170700), "*wAd"}, /* movea, written as move */
  894. {"movew", one (0040300), one (0177700), "Ss$s"}, /* Move from sr */
  895. {"movew", one (0041300), one (0177700), "Cs$s"}, /* Move from ccr */
  896. {"movew", one (0042300), one (0177700), ";wCd"}, /* move to ccr */
  897. {"movew", one (0043300), one (0177700), ";wSd"}, /* move to sr */
  898. /* movec not done */
  899. {"movesb", two (0007000, 0), two (0177700, 07777), "~sR1"}, /* moves from memory */
  900. {"movesb", two (0007000, 04000), two (0177700, 07777), "R1~s"}, /* moves to memory */
  901. {"movesl", two (0007200, 0), two (0177700, 07777), "~sR1"}, /* moves from memory */
  902. {"movesl", two (0007200, 04000), two (0177700, 07777), "R1~s"}, /* moves to memory */
  903. {"movesw", two (0007100, 0), two (0177700, 07777), "~sR1"}, /* moves from memory */
  904. {"movesw", two (0007100, 04000), two (0177700, 07777), "R1~s"}, /* moves to memory */
  905. {"mulsl", two (0046000, 004000), two (0177700, 0107770), ";lD1"},
  906. {"mulsl", two (0046000, 006000), two (0177700, 0107770), ";lD3D1"},
  907. {"mulsw", one (0140700), one (0170700), ";wDd"},
  908. {"muls", one (0140700), one (0170700), ";wDd"},
  909. {"mulul", two (0046000, 000000), two (0177700, 0107770), ";lD1"},
  910. {"mulul", two (0046000, 002000), two (0177700, 0107770), ";lD3D1"},
  911. {"muluw", one (0140300), one (0170700), ";lDd"},
  912. {"mulu", one (0140300), one (0170700), ";lDd"},
  913. {"nbcd", one (0044000), one (0177700), "$s"},
  914. {"negb", one (0042000), one (0177700), "$s"},
  915. {"negl", one (0042200), one (0177700), "$s"},
  916. {"negw", one (0042100), one (0177700), "$s"},
  917. {"negxb", one (0040000), one (0177700), "$s"},
  918. {"negxl", one (0040200), one (0177700), "$s"},
  919. {"negxw", one (0040100), one (0177700), "$s"},
  920. {"nop", one (0047161), one (0177777), ""},
  921. {"notb", one (0043000), one (0177700), "$s"},
  922. {"notl", one (0043200), one (0177700), "$s"},
  923. {"notw", one (0043100), one (0177700), "$s"},
  924. {"orb", one (0000000), one (0177700), "#b$s"}, /* ori written as or */
  925. {"orb", one (0000074), one (0177777), "#bCs"}, /* ori to ccr */
  926. {"orb", one (0100000), one (0170700), ";bDd"}, /* memory to register */
  927. {"orb", one (0100400), one (0170700), "Dd~s"}, /* register to memory */
  928. {"orib", one (0000000), one (0177700), "#b$s"},
  929. {"orib", one (0000074), one (0177777), "#bCs"}, /* ori to ccr */
  930. {"oril", one (0000200), one (0177700), "#l$s"},
  931. {"oriw", one (0000100), one (0177700), "#w$s"},
  932. {"oriw", one (0000174), one (0177777), "#wSs"}, /* ori to sr */
  933. {"orl", one (0000200), one (0177700), "#l$s"},
  934. {"orl", one (0100200), one (0170700), ";lDd"}, /* memory to register */
  935. {"orl", one (0100600), one (0170700), "Dd~s"}, /* register to memory */
  936. {"orw", one (0000100), one (0177700), "#w$s"},
  937. {"orw", one (0000174), one (0177777), "#wSs"}, /* ori to sr */
  938. {"orw", one (0100100), one (0170700), ";wDd"}, /* memory to register */
  939. {"orw", one (0100500), one (0170700), "Dd~s"}, /* register to memory */
  940. {"pack", one (0100500), one (0170770), "DsDd#w"}, /* pack Ds, Dd, #w */
  941. {"pack", one (0100510), one (0170770), "-s-d#w"}, /* pack -(As), -(Ad), #w */
  942. {"pea", one (0044100), one (0177700), "!s"},
  943. {"reset", one (0047160), one (0177777), ""},
  944. {"rolb", one (0160430), one (0170770), "QdDs"}, /* rorb #Q, Ds */
  945. {"rolb", one (0160470), one (0170770), "DdDs"}, /* rorb Dd, Ds */
  946. {"roll", one (0160630), one (0170770), "QdDs"}, /* rorb #Q, Ds */
  947. {"roll", one (0160670), one (0170770), "DdDs"}, /* rorb Dd, Ds */
  948. {"rolw", one (0160530), one (0170770), "QdDs"}, /* rorb #Q, Ds */
  949. {"rolw", one (0160570), one (0170770), "DdDs"}, /* rorb Dd, Ds */
  950. {"rolw", one (0163700), one (0177700), "~s"}, /* Rotate memory */
  951. {"rorb", one (0160030), one (0170770), "QdDs"}, /* rorb #Q, Ds */
  952. {"rorb", one (0160070), one (0170770), "DdDs"}, /* rorb Dd, Ds */
  953. {"rorl", one (0160230), one (0170770), "QdDs"}, /* rorb #Q, Ds */
  954. {"rorl", one (0160270), one (0170770), "DdDs"}, /* rorb Dd, Ds */
  955. {"rorw", one (0160130), one (0170770), "QdDs"}, /* rorb #Q, Ds */
  956. {"rorw", one (0160170), one (0170770), "DdDs"}, /* rorb Dd, Ds */
  957. {"rorw", one (0163300), one (0177700), "~s"}, /* Rotate memory */
  958. {"roxlb", one (0160420), one (0170770), "QdDs"}, /* roxrb #Q, Ds */
  959. {"roxlb", one (0160460), one (0170770), "DdDs"}, /* roxrb Dd, Ds */
  960. {"roxll", one (0160620), one (0170770), "QdDs"}, /* roxrb #Q, Ds */
  961. {"roxll", one (0160660), one (0170770), "DdDs"}, /* roxrb Dd, Ds */
  962. {"roxlw", one (0160520), one (0170770), "QdDs"}, /* roxrb #Q, Ds */
  963. {"roxlw", one (0160560), one (0170770), "DdDs"}, /* roxrb Dd, Ds */
  964. {"roxlw", one (0162700), one (0177700), "~s"}, /* Rotate memory */
  965. {"roxrb", one (0160020), one (0170770), "QdDs"}, /* roxrb #Q, Ds */
  966. {"roxrb", one (0160060), one (0170770), "DdDs"}, /* roxrb Dd, Ds */
  967. {"roxrl", one (0160220), one (0170770), "QdDs"}, /* roxrb #Q, Ds */
  968. {"roxrl", one (0160260), one (0170770), "DdDs"}, /* roxrb Dd, Ds */
  969. {"roxrw", one (0160120), one (0170770), "QdDs"}, /* roxrb #Q, Ds */
  970. {"roxrw", one (0160160), one (0170770), "DdDs"}, /* roxrb Dd, Ds */
  971. {"roxrw", one (0162300), one (0177700), "~s"}, /* Rotate memory */
  972. {"rtd", one (0047164), one (0177777), "#w"},
  973. {"rte", one (0047163), one (0177777), ""},
  974. {"rtm", one (0003300), one (0177760), "Rs"},
  975. {"rtr", one (0047167), one (0177777), ""},
  976. {"rts", one (0047165), one (0177777), ""},
  977. {"scc", one (0052300), one (0177700), "$s"},
  978. {"scs", one (0052700), one (0177700), "$s"},
  979. {"seq", one (0053700), one (0177700), "$s"},
  980. {"sf", one (0050700), one (0177700), "$s"},
  981. {"sge", one (0056300), one (0177700), "$s"},
  982. {"sgt", one (0057300), one (0177700), "$s"},
  983. {"shi", one (0051300), one (0177700), "$s"},
  984. {"sle", one (0057700), one (0177700), "$s"},
  985. {"sls", one (0051700), one (0177700), "$s"},
  986. {"slt", one (0056700), one (0177700), "$s"},
  987. {"smi", one (0055700), one (0177700), "$s"},
  988. {"sne", one (0053300), one (0177700), "$s"},
  989. {"spl", one (0055300), one (0177700), "$s"},
  990. {"st", one (0050300), one (0177700), "$s"},
  991. {"svc", one (0054300), one (0177700), "$s"},
  992. {"svs", one (0054700), one (0177700), "$s"},
  993. {"sbcd", one (0100400), one (0170770), "DsDd"}, /* sbcd Ds, Dd */
  994. {"sbcd", one (0100410), one (0170770), "-s-d"}, /* sbcd -(As), -(Ad) */
  995. {"stop", one (0047162), one (0177777), "#w"},
  996. {"subal", one (0110700), one (0170700), "*lAd"},
  997. {"subaw", one (0110300), one (0170700), "*wAd"},
  998. {"subb", one (0002000), one (0177700), "#b$s"}, /* subi written as sub */
  999. {"subb", one (0050400), one (0170700), "Qd%s"}, /* subq written as sub */
  1000. {"subb", one (0110000), one (0170700), ";bDd"}, /* subb ??, Dd */
  1001. {"subb", one (0110400), one (0170700), "Dd~s"}, /* subb Dd, ?? */
  1002. {"subib", one (0002000), one (0177700), "#b$s"},
  1003. {"subil", one (0002200), one (0177700), "#l$s"},
  1004. {"subiw", one (0002100), one (0177700), "#w$s"},
  1005. {"subl", one (0002200), one (0177700), "#l$s"},
  1006. {"subl", one (0050600), one (0170700), "Qd%s"},
  1007. {"subl", one (0110200), one (0170700), "*lDd"},
  1008. {"subl", one (0110600), one (0170700), "Dd~s"},
  1009. {"subl", one (0110700), one (0170700), "*lAd"},
  1010. {"subqb", one (0050400), one (0170700), "Qd%s"},
  1011. {"subql", one (0050600), one (0170700), "Qd%s"},
  1012. {"subqw", one (0050500), one (0170700), "Qd%s"},
  1013. {"subw", one (0002100), one (0177700), "#w$s"},
  1014. {"subw", one (0050500), one (0170700), "Qd%s"},
  1015. {"subw", one (0110100), one (0170700), "*wDd"},
  1016. {"subw", one (0110300), one (0170700), "*wAd"}, /* suba written as sub */
  1017. {"subw", one (0110500), one (0170700), "Dd~s"},
  1018. {"subxb", one (0110400), one (0170770), "DsDd"}, /* subxb Ds, Dd */
  1019. {"subxb", one (0110410), one (0170770), "-s-d"}, /* subxb -(As), -(Ad) */
  1020. {"subxl", one (0110600), one (0170770), "DsDd"},
  1021. {"subxl", one (0110610), one (0170770), "-s-d"},
  1022. {"subxw", one (0110500), one (0170770), "DsDd"},
  1023. {"subxw", one (0110510), one (0170770), "-s-d"},
  1024. {"swap", one (0044100), one (0177770), "Ds"},
  1025. {"tas", one (0045300), one (0177700), "$s"},
  1026. {"trap", one (0047100), one (0177760), "Ts"},
  1027. {"trapcc", one (0052374), one (0177777), ""},
  1028. {"trapcs", one (0052774), one (0177777), ""},
  1029. {"trapeq", one (0053774), one (0177777), ""},
  1030. {"trapf", one (0050774), one (0177777), ""},
  1031. {"trapge", one (0056374), one (0177777), ""},
  1032. {"trapgt", one (0057374), one (0177777), ""},
  1033. {"traphi", one (0051374), one (0177777), ""},
  1034. {"traple", one (0057774), one (0177777), ""},
  1035. {"trapls", one (0051774), one (0177777), ""},
  1036. {"traplt", one (0056774), one (0177777), ""},
  1037. {"trapmi", one (0055774), one (0177777), ""},
  1038. {"trapne", one (0053374), one (0177777), ""},
  1039. {"trappl", one (0055374), one (0177777), ""},
  1040. {"trapt", one (0050374), one (0177777), ""},
  1041. {"trapvc", one (0054374), one (0177777), ""},
  1042. {"trapvs", one (0054774), one (0177777), ""},
  1043. {"trapcc.w", one (0052372), one (0177777), ""},
  1044. {"trapcs.w", one (0052772), one (0177777), ""},
  1045. {"trapeq.w", one (0053772), one (0177777), ""},
  1046. {"trapf.w", one (0050772), one (0177777), ""},
  1047. {"trapge.w", one (0056372), one (0177777), ""},
  1048. {"trapgt.w", one (0057372), one (0177777), ""},
  1049. {"traphi.w", one (0051372), one (0177777), ""},
  1050. {"traple.w", one (0057772), one (0177777), ""},
  1051. {"trapls.w", one (0051772), one (0177777), ""},
  1052. {"traplt.w", one (0056772), one (0177777), ""},
  1053. {"trapmi.w", one (0055772), one (0177777), ""},
  1054. {"trapne.w", one (0053372), one (0177777), ""},
  1055. {"trappl.w", one (0055372), one (0177777), ""},
  1056. {"trapt.w", one (0050372), one (0177777), ""},
  1057. {"trapvc.w", one (0054372), one (0177777), ""},
  1058. {"trapvs.w", one (0054772), one (0177777), ""},
  1059. {"trapcc.l", one (0052373), one (0177777), ""},
  1060. {"trapcs.l", one (0052773), one (0177777), ""},
  1061. {"trapeq.l", one (0053773), one (0177777), ""},
  1062. {"trapf.l", one (0050773), one (0177777), ""},
  1063. {"trapge.l", one (0056373), one (0177777), ""},
  1064. {"trapgt.l", one (0057373), one (0177777), ""},
  1065. {"traphi.l", one (0051373), one (0177777), ""},
  1066. {"traple.l", one (0057773), one (0177777), ""},
  1067. {"trapls.l", one (0051773), one (0177777), ""},
  1068. {"traplt.l", one (0056773), one (0177777), ""},
  1069. {"trapmi.l", one (0055773), one (0177777), ""},
  1070. {"trapne.l", one (0053373), one (0177777), ""},
  1071. {"trappl.l", one (0055373), one (0177777), ""},
  1072. {"trapt.l", one (0050373), one (0177777), ""},
  1073. {"trapvc.l", one (0054373), one (0177777), ""},
  1074. {"trapvs.l", one (0054773), one (0177777), ""},
  1075. {"trapv", one (0047166), one (0177777), ""},
  1076. {"tstb", one (0045000), one (0177700), ";b"},
  1077. {"tstw", one (0045100), one (0177700), "*w"},
  1078. {"tstl", one (0045200), one (0177700), "*l"},
  1079. {"unlk", one (0047130), one (0177770), "As"},
  1080. {"unpk", one (0100600), one (0170770), "DsDd#w"}, /* unpk Ds, Dd, #w */
  1081. {"unpk", one (0100610), one (0170770), "-s-d#w"}, /* unpk -(As), -(Ad), #w */
  1082. /* JF this is for SUN, which has different mnemonics */
  1083. {"jbsr", one (0060400), one (0177400), "Bg"},
  1084. {"jra", one (0060000), one (0177400), "Bg"},
  1085. {"jhi", one (0061000), one (0177400), "Bg"},
  1086. {"jls", one (0061400), one (0177400), "Bg"},
  1087. {"jcc", one (0062000), one (0177400), "Bg"},
  1088. {"jcs", one (0062400), one (0177400), "Bg"},
  1089. {"jne", one (0063000), one (0177400), "Bg"},
  1090. {"jeq", one (0063400), one (0177400), "Bg"},
  1091. {"jvc", one (0064000), one (0177400), "Bg"},
  1092. {"jvs", one (0064400), one (0177400), "Bg"},
  1093. {"jpl", one (0065000), one (0177400), "Bg"},
  1094. {"jmi", one (0065400), one (0177400), "Bg"},
  1095. {"jge", one (0066000), one (0177400), "Bg"},
  1096. {"jlt", one (0066400), one (0177400), "Bg"},
  1097. {"jgt", one (0067000), one (0177400), "Bg"},
  1098. {"jle", one (0067400), one (0177400), "Bg"},
  1099. {"moval", one (0020100), one (0170700), "*lAd"},
  1100. {"movaw", one (0030100), one (0170700), "*wAd"},
  1101. {"movb", one (0010000), one (0170000), ";b$d"}, /* mov */
  1102. {"movl", one (0020000), one (0170000), "*l$d"},
  1103. {"movl", one (0020100), one (0170700), "*lAd"},
  1104. {"movl", one (0047140), one (0177770), "AsUd"}, /* mov to USP */
  1105. {"movl", one (0047150), one (0177770), "UdAs"}, /* mov from USP */
  1106. {"movl", one (0070000), one (0170400), "MsDd"}, /* movq written as mov */
  1107. {"movml", one (0044300), one (0177700), "#w&s"}, /* movm reg to mem. */
  1108. {"movml", one (0044340), one (0177770), "#w-s"}, /* movm reg to autodecrement. */
  1109. {"movml", one (0046300), one (0177700), "!s#w"}, /* movm mem to reg. */
  1110. {"movml", one (0046330), one (0177770), "+s#w"}, /* movm autoinc to reg. */
  1111. {"movmw", one (0044200), one (0177700), "#w&s"}, /* movm reg to mem. */
  1112. {"movmw", one (0044240), one (0177770), "#w-s"}, /* movm reg to autodecrement. */
  1113. {"movmw", one (0046200), one (0177700), "!s#w"}, /* movm mem to reg. */
  1114. {"movmw", one (0046230), one (0177770), "+s#w"}, /* movm autoinc to reg. */
  1115. {"movpl", one (0000510), one (0170770), "dsDd"}, /* memory to register */
  1116. {"movpl", one (0000710), one (0170770), "Ddds"}, /* register to memory */
  1117. {"movpw", one (0000410), one (0170770), "dsDd"}, /* memory to register */
  1118. {"movpw", one (0000610), one (0170770), "Ddds"}, /* register to memory */
  1119. {"movq", one (0070000), one (0170400), "MsDd"},
  1120. {"movw", one (0030000), one (0170000), "*w$d"},
  1121. {"movw", one (0030100), one (0170700), "*wAd"}, /* mova, written as mov */
  1122. {"movw", one (0040300), one (0177700), "Ss$s"}, /* Move from sr */
  1123. {"movw", one (0041300), one (0177700), "Cs$s"}, /* Move from ccr */
  1124. {"movw", one (0042300), one (0177700), ";wCd"}, /* mov to ccr */
  1125. {"movw", one (0043300), one (0177700), ";wSd"}, /* mov to sr */
  1126. /* movc not done */
  1127. {"movsb", two (0007000, 0), two (0177700, 07777), "~sR1"}, /* movs from memory */
  1128. {"movsb", two (0007000, 04000), two (0177700, 07777), "R1~s"}, /* movs to memory */
  1129. {"movsl", two (0007200, 0), two (0177700, 07777), "~sR1"}, /* movs from memory */
  1130. {"movsl", two (0007200, 04000), two (0177700, 07777), "R1~s"}, /* movs to memory */
  1131. {"movsw", two (0007100, 0), two (0177700, 07777), "~sR1"}, /* movs from memory */
  1132. {"movsw", two (0007100, 04000), two (0177700, 07777), "R1~s"}, /* movs to memory */
  1133. };
  1134. int numopcodes=sizeof(m68k_opcodes)/sizeof(m68k_opcodes[0]);
  1135. struct m68k_opcode *endop = m68k_opcodes+sizeof(m68k_opcodes)/sizeof(m68k_opcodes[0]);;