Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

4580 lines
140 KiB

  1. /*++
  2. Copyright (c) 1996-2000 Microsoft Corporation
  3. Module Name:
  4. idata.h
  5. Abstract:
  6. This module contains definitions of all x86 instructions. Before
  7. including this file, the DEF_INSTR macro must be defined.
  8. Author:
  9. Dave Hastings (daveh) creation-date 23-Jun-1995
  10. Revision History:
  11. --*/
  12. //
  13. // Possible values for instruction flags (OPFL_):
  14. // CTRLTRNS -
  15. // Direct control transfers. The compiler will build an entrypoint
  16. // for the destination of the call, provided it is within the
  17. // current instruction stream
  18. // END_NEXT_EP -
  19. // Indicates the instruction following the current one must
  20. // have its own entrypoint. ie. CALL instructions.
  21. // STOP_COMPILE -
  22. // Compilation will halt after this instruction. The remainder
  23. // of the instruction stream will be discarded.
  24. // ALIGN -
  25. // The instruction has an ALIGNED flavor, created by adding 1
  26. // to the current Operation value.
  27. // HASNOFLAGS -
  28. // The instruction as a NOFLAGS flavor, created by the following
  29. // formula:
  30. // OP_NOFLAGS = OP + (Flags & OPFL_ALIGN) ? 2 : 1;
  31. //
  32. //
  33. #include <eflags.h>
  34. #define ALLFLAGS (FLAG_CF|FLAG_AUX|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF)
  35. #ifndef DEF_INSTR
  36. #error Must define DEF_INSTR(OpName,FlagsNeeded,FlagsSet,RegsSet,Opfl,FastPlaceFn,FastSize,SlowPlaceFn,SlowSize,FragName) before including this file
  37. #endif
  38. //
  39. // Each DEF_INSTR defines a new instruction, with the following format:
  40. // DEF_INSTR(instruction name,
  41. // flags read, flags set, registers implictly modified
  42. // OP flags
  43. // place function, size of assembly code for call to fragment
  44. // address of fragment)
  45. //
  46. DEF_INSTR(OP_CTRL_COND_Ja,
  47. FLAG_CF|FLAG_ZF, 0, 0,
  48. OPFL_CTRLTRNS,
  49. FN_PlaceJxx,
  50. FN_PlaceJxxSlow,
  51. GenJaFrag)
  52. DEF_INSTR(OP_CTRL_COND_Jae,
  53. FLAG_CF, 0, 0,
  54. OPFL_CTRLTRNS,
  55. FN_PlaceJxx,
  56. FN_PlaceJxxSlow,
  57. GenJaeFrag)
  58. DEF_INSTR(OP_CTRL_COND_Jbe,
  59. FLAG_CF|FLAG_ZF, 0, 0,
  60. OPFL_CTRLTRNS,
  61. FN_PlaceJxx,
  62. FN_PlaceJxxSlow,
  63. GenJbeFrag)
  64. DEF_INSTR(OP_CTRL_COND_Jb,
  65. FLAG_CF, 0, 0,
  66. OPFL_CTRLTRNS,
  67. FN_PlaceJxx,
  68. FN_PlaceJxxSlow,
  69. GenJbFrag)
  70. DEF_INSTR(OP_CTRL_COND_Je,
  71. FLAG_ZF, 0, 0,
  72. OPFL_CTRLTRNS,
  73. FN_PlaceJxx,
  74. FN_PlaceJxxSlow,
  75. GenJeFrag)
  76. DEF_INSTR(OP_CTRL_COND_Jg,
  77. FLAG_ZF|FLAG_SF|FLAG_OF, 0, 0,
  78. OPFL_CTRLTRNS,
  79. FN_PlaceJxx,
  80. FN_PlaceJxxSlow,
  81. GenJgFrag)
  82. DEF_INSTR(OP_CTRL_COND_Jl,
  83. FLAG_SF|FLAG_OF, 0, 0,
  84. OPFL_CTRLTRNS,
  85. FN_PlaceJxx,
  86. FN_PlaceJxxSlow,
  87. GenJlFrag)
  88. DEF_INSTR(OP_CTRL_COND_Jle,
  89. FLAG_ZF|FLAG_SF|FLAG_OF, 0, 0,
  90. OPFL_CTRLTRNS,
  91. FN_PlaceJxx,
  92. FN_PlaceJxxSlow,
  93. GenJleFrag)
  94. DEF_INSTR(OP_CTRL_COND_Jne,
  95. FLAG_ZF, 0, 0,
  96. OPFL_CTRLTRNS,
  97. FN_PlaceJxx,
  98. FN_PlaceJxxSlow,
  99. GenJneFrag)
  100. DEF_INSTR(OP_CTRL_COND_Jnl,
  101. FLAG_SF|FLAG_OF, 0, 0,
  102. OPFL_CTRLTRNS,
  103. FN_PlaceJxx,
  104. FN_PlaceJxxSlow,
  105. GenJnlFrag)
  106. DEF_INSTR(OP_CTRL_COND_Jno,
  107. FLAG_OF, 0, 0,
  108. OPFL_CTRLTRNS,
  109. FN_PlaceJxx,
  110. FN_PlaceJxxSlow,
  111. GenJnoFrag)
  112. DEF_INSTR(OP_CTRL_COND_Jnp,
  113. FLAG_PF, 0, 0,
  114. OPFL_CTRLTRNS,
  115. FN_PlaceJxx,
  116. FN_PlaceJxxSlow,
  117. GenJnpFrag)
  118. DEF_INSTR(OP_CTRL_COND_Jns,
  119. FLAG_SF, 0, 0,
  120. OPFL_CTRLTRNS,
  121. FN_PlaceJxx,
  122. FN_PlaceJxxSlow,
  123. GenJnsFrag)
  124. DEF_INSTR(OP_CTRL_COND_Jo,
  125. FLAG_OF, 0, 0,
  126. OPFL_CTRLTRNS,
  127. FN_PlaceJxx,
  128. FN_PlaceJxxSlow,
  129. GenJoFrag)
  130. DEF_INSTR(OP_CTRL_COND_Jp,
  131. FLAG_PF, 0, 0,
  132. OPFL_CTRLTRNS,
  133. FN_PlaceJxx,
  134. FN_PlaceJxxSlow,
  135. GenJpFrag)
  136. DEF_INSTR(OP_CTRL_COND_Js,
  137. FLAG_SF, 0, 0,
  138. OPFL_CTRLTRNS,
  139. FN_PlaceJxx,
  140. FN_PlaceJxxSlow,
  141. GenJsFrag)
  142. DEF_INSTR(OP_CTRL_COND_JaFwd,
  143. FLAG_CF|FLAG_ZF, 0, 0,
  144. OPFL_CTRLTRNS,
  145. FN_PlaceJxxFwd,
  146. FN_PlaceJxxSlow,
  147. GenJaFrag)
  148. DEF_INSTR(OP_CTRL_COND_JaeFwd,
  149. FLAG_CF, 0, 0,
  150. OPFL_CTRLTRNS,
  151. FN_PlaceJxxFwd,
  152. FN_PlaceJxxSlow,
  153. GenJaeFrag)
  154. DEF_INSTR(OP_CTRL_COND_JbeFwd,
  155. FLAG_CF|FLAG_ZF, 0, 0,
  156. OPFL_CTRLTRNS,
  157. FN_PlaceJxxFwd,
  158. FN_PlaceJxxSlow,
  159. GenJbeFrag)
  160. DEF_INSTR(OP_CTRL_COND_JbFwd,
  161. FLAG_CF, 0, 0,
  162. OPFL_CTRLTRNS,
  163. FN_PlaceJxxFwd,
  164. FN_PlaceJxxSlow,
  165. GenJbFrag)
  166. DEF_INSTR(OP_CTRL_COND_JeFwd,
  167. FLAG_ZF, 0, 0,
  168. OPFL_CTRLTRNS,
  169. FN_PlaceJxxFwd,
  170. FN_PlaceJxxSlow,
  171. GenJeFrag)
  172. DEF_INSTR(OP_CTRL_COND_JgFwd,
  173. FLAG_ZF|FLAG_SF|FLAG_OF, 0, 0,
  174. OPFL_CTRLTRNS,
  175. FN_PlaceJxxFwd,
  176. FN_PlaceJxxSlow,
  177. GenJgFrag)
  178. DEF_INSTR(OP_CTRL_COND_JlFwd,
  179. FLAG_SF|FLAG_OF, 0, 0,
  180. OPFL_CTRLTRNS,
  181. FN_PlaceJxxFwd,
  182. FN_PlaceJxxSlow,
  183. GenJlFrag)
  184. DEF_INSTR(OP_CTRL_COND_JleFwd,
  185. FLAG_ZF|FLAG_SF|FLAG_OF, 0, 0,
  186. OPFL_CTRLTRNS,
  187. FN_PlaceJxxFwd,
  188. FN_PlaceJxxSlow,
  189. GenJleFrag)
  190. DEF_INSTR(OP_CTRL_COND_JneFwd,
  191. FLAG_ZF, 0, 0,
  192. OPFL_CTRLTRNS,
  193. FN_PlaceJxxFwd,
  194. FN_PlaceJxxSlow,
  195. GenJneFrag)
  196. DEF_INSTR(OP_CTRL_COND_JnlFwd,
  197. FLAG_SF|FLAG_OF, 0, 0,
  198. OPFL_CTRLTRNS,
  199. FN_PlaceJxxFwd,
  200. FN_PlaceJxxSlow,
  201. GenJnlFrag)
  202. DEF_INSTR(OP_CTRL_COND_JnoFwd,
  203. FLAG_OF, 0, 0,
  204. OPFL_CTRLTRNS,
  205. FN_PlaceJxxFwd,
  206. FN_PlaceJxxSlow,
  207. GenJnoFrag)
  208. DEF_INSTR(OP_CTRL_COND_JnpFwd,
  209. FLAG_PF, 0, 0,
  210. OPFL_CTRLTRNS,
  211. FN_PlaceJxxFwd,
  212. FN_PlaceJxxSlow,
  213. GenJnpFrag)
  214. DEF_INSTR(OP_CTRL_COND_JnsFwd,
  215. FLAG_SF, 0, 0,
  216. OPFL_CTRLTRNS,
  217. FN_PlaceJxxFwd,
  218. FN_PlaceJxxSlow,
  219. GenJnsFrag)
  220. DEF_INSTR(OP_CTRL_COND_JoFwd,
  221. FLAG_OF, 0, 0,
  222. OPFL_CTRLTRNS,
  223. FN_PlaceJxxFwd,
  224. FN_PlaceJxxSlow,
  225. GenJoFrag)
  226. DEF_INSTR(OP_CTRL_COND_JpFwd,
  227. FLAG_PF, 0, 0,
  228. OPFL_CTRLTRNS,
  229. FN_PlaceJxxFwd,
  230. FN_PlaceJxxSlow,
  231. GenJpFrag)
  232. DEF_INSTR(OP_CTRL_COND_JsFwd,
  233. FLAG_SF, 0, 0,
  234. OPFL_CTRLTRNS,
  235. FN_PlaceJxxFwd,
  236. FN_PlaceJxxSlow,
  237. GenJsFrag)
  238. DEF_INSTR(OP_CTRL_COND_Jcxz_b32,
  239. 0, 0, 0,
  240. OPFL_CTRLTRNS,
  241. FN_PlaceJxx,
  242. FN_PlaceJxxSlow,
  243. GenJecxzFrag)
  244. DEF_INSTR(OP_CTRL_COND_Jcxz_b16,
  245. 0, 0, 0,
  246. OPFL_CTRLTRNS,
  247. FN_PlaceJxx,
  248. FN_PlaceJxxSlow,
  249. GenJcxzFrag)
  250. DEF_INSTR(OP_CTRL_COND_Jcxz_bFwd32,
  251. 0, 0, 0,
  252. OPFL_CTRLTRNS,
  253. FN_PlaceJxxFwd,
  254. FN_PlaceJxxSlow,
  255. GenJecxzFrag)
  256. DEF_INSTR(OP_CTRL_COND_Jcxz_bFwd16,
  257. 0, 0, 0,
  258. OPFL_CTRLTRNS,
  259. FN_PlaceJxxFwd,
  260. FN_PlaceJxxSlow,
  261. GenJcxzFrag)
  262. DEF_INSTR(OP_CTRL_COND_Loop_b32,
  263. 0, 0, 0,
  264. OPFL_CTRLTRNS,
  265. FN_PlaceJxx,
  266. FN_PlaceJxxSlow,
  267. GenLoopFrag32)
  268. DEF_INSTR(OP_CTRL_COND_Loop_b16,
  269. 0, 0, 0,
  270. OPFL_CTRLTRNS,
  271. FN_PlaceJxx,
  272. FN_PlaceJxxSlow,
  273. GenLoopFrag16)
  274. DEF_INSTR(OP_CTRL_COND_Loop_bFwd32,
  275. 0, 0, 0,
  276. OPFL_CTRLTRNS,
  277. FN_PlaceJxxFwd,
  278. FN_PlaceJxxSlow,
  279. GenLoopFrag32)
  280. DEF_INSTR(OP_CTRL_COND_Loop_bFwd16,
  281. 0, 0, 0,
  282. OPFL_CTRLTRNS,
  283. FN_PlaceJxxFwd,
  284. FN_PlaceJxxSlow,
  285. GenLoopFrag16)
  286. DEF_INSTR(OP_CTRL_COND_Loope_b32,
  287. FLAG_ZF, 0, 0,
  288. OPFL_CTRLTRNS,
  289. FN_PlaceJxx,
  290. FN_PlaceJxxSlow,
  291. GenLoopeFrag32)
  292. DEF_INSTR(OP_CTRL_COND_Loope_b16,
  293. FLAG_ZF, 0, 0,
  294. OPFL_CTRLTRNS,
  295. FN_PlaceJxx,
  296. FN_PlaceJxxSlow,
  297. GenLoopeFrag16)
  298. DEF_INSTR(OP_CTRL_COND_Loope_bFwd32,
  299. FLAG_ZF, 0, 0,
  300. OPFL_CTRLTRNS,
  301. FN_PlaceJxxFwd,
  302. FN_PlaceJxxSlow,
  303. GenLoopeFrag32)
  304. DEF_INSTR(OP_CTRL_COND_Loope_bFwd16,
  305. FLAG_ZF, 0, 0,
  306. OPFL_CTRLTRNS,
  307. FN_PlaceJxxFwd,
  308. FN_PlaceJxxSlow,
  309. GenLoopeFrag16)
  310. DEF_INSTR(OP_CTRL_COND_Loopne_b32,
  311. FLAG_ZF, 0, 0,
  312. OPFL_CTRLTRNS,
  313. FN_PlaceJxx,
  314. FN_PlaceJxxSlow,
  315. GenLoopneFrag32)
  316. DEF_INSTR(OP_CTRL_COND_Loopne_b16,
  317. FLAG_ZF, 0, 0,
  318. OPFL_CTRLTRNS,
  319. FN_PlaceJxx,
  320. FN_PlaceJxxSlow,
  321. GenLoopneFrag16)
  322. DEF_INSTR(OP_CTRL_COND_Loopne_bFwd32,
  323. FLAG_ZF, 0, 0,
  324. OPFL_CTRLTRNS,
  325. FN_PlaceJxxFwd,
  326. FN_PlaceJxxSlow,
  327. GenLoopneFrag32)
  328. DEF_INSTR(OP_CTRL_COND_Loopne_bFwd16,
  329. FLAG_ZF, 0, 0,
  330. OPFL_CTRLTRNS,
  331. FN_PlaceJxxFwd,
  332. FN_PlaceJxxSlow,
  333. GenLoopneFrag16)
  334. DEF_INSTR(OP_CTRL_UNCOND_Call,
  335. 0, 0, ALLREGS,
  336. OPFL_CTRLTRNS|OPFL_END_NEXT_EP,
  337. FN_PlaceCallDirect,
  338. FN_PlaceCallDirect,
  339. NULL)
  340. DEF_INSTR(OP_CTRL_UNCOND_Callf,
  341. 0, 0, ALLREGS,
  342. OPFL_CTRLTRNS|OPFL_END_NEXT_EP,
  343. FN_PlaceCallfDirect,
  344. FN_PlaceCallfDirect,
  345. NULL)
  346. DEF_INSTR(OP_CTRL_INDIR_Call,
  347. ALLFLAGS, 0, ALLREGS,
  348. OPFL_END_NEXT_EP,
  349. FN_GenCallIndirect,
  350. FN_GenCallIndirect,
  351. NULL)
  352. DEF_INSTR(OP_CTRL_INDIR_Callf,
  353. ALLFLAGS, 0, ALLREGS,
  354. OPFL_END_NEXT_EP,
  355. FN_GenCallfIndirect,
  356. FN_GenCallfIndirect,
  357. NULL)
  358. DEF_INSTR(OP_CTRL_INDIR_Jmp,
  359. ALLFLAGS, 0, 0,
  360. OPFL_END_NEXT_EP,
  361. FN_GenCallJmpIndirect,
  362. FN_GenCallJmpIndirect,
  363. NULL)
  364. DEF_INSTR(OP_CTRL_INDIR_Jmpf,
  365. ALLFLAGS, 0, 0,
  366. OPFL_END_NEXT_EP,
  367. FN_GenCallJmpfIndirect,
  368. FN_GenCallJmpfIndirect,
  369. NULL)
  370. DEF_INSTR(OP_CTRL_UNCOND_Jmp,
  371. 0, 0, 0,
  372. OPFL_END_NEXT_EP|OPFL_CTRLTRNS,
  373. FN_PlaceJmpDirect,
  374. FN_PlaceJmpDirectSlow,
  375. NULL)
  376. DEF_INSTR(OP_CTRL_UNCOND_JmpFwd,
  377. 0, 0, 0,
  378. OPFL_END_NEXT_EP|OPFL_CTRLTRNS,
  379. FN_PlaceJmpFwdDirect,
  380. FN_PlaceJmpDirectSlow,
  381. NULL)
  382. DEF_INSTR(OP_CTRL_UNCOND_Jmpf,
  383. 0, 0, 0,
  384. OPFL_END_NEXT_EP|OPFL_CTRLTRNS,
  385. FN_PlaceJmpfDirect,
  386. FN_PlaceJmpfDirect,
  387. NULL)
  388. DEF_INSTR(OP_CTRL_INDIR_Retn_i16,
  389. ALLFLAGS, 0, REGESP,
  390. OPFL_END_NEXT_EP,
  391. FN_GenCallRetIndirect,
  392. FN_GenCallRetIndirect,
  393. CTRL_INDIR_Retn_iFrag16)
  394. DEF_INSTR(OP_CTRL_INDIR_Retn_i32,
  395. ALLFLAGS, 0, REGESP,
  396. OPFL_END_NEXT_EP,
  397. FN_GenCallRetIndirect,
  398. FN_GenCallRetIndirect,
  399. CTRL_INDIR_Retn_iFrag32)
  400. DEF_INSTR(OP_CTRL_INDIR_Retn16,
  401. ALLFLAGS, 0, REGESP,
  402. OPFL_END_NEXT_EP,
  403. FN_GenCallRetIndirect,
  404. FN_GenCallRetIndirect,
  405. CTRL_INDIR_RetnFrag16)
  406. DEF_INSTR(OP_CTRL_INDIR_Retn32,
  407. ALLFLAGS, 0, REGESP,
  408. OPFL_END_NEXT_EP,
  409. FN_GenCallRetIndirect,
  410. FN_GenCallRetIndirect,
  411. CTRL_INDIR_RetnFrag32)
  412. DEF_INSTR(OP_CTRL_INDIR_Retf_i16,
  413. ALLFLAGS, 0, REGESP,
  414. OPFL_END_NEXT_EP,
  415. FN_GenCallRetIndirect,
  416. FN_GenCallRetIndirect,
  417. CTRL_INDIR_Retf_iFrag16)
  418. DEF_INSTR(OP_CTRL_INDIR_Retf_i32,
  419. ALLFLAGS, 0, REGESP,
  420. OPFL_END_NEXT_EP,
  421. FN_GenCallRetIndirect,
  422. FN_GenCallRetIndirect,
  423. CTRL_INDIR_Retf_iFrag32)
  424. DEF_INSTR(OP_CTRL_INDIR_Retf16,
  425. ALLFLAGS, 0, REGESP,
  426. OPFL_END_NEXT_EP,
  427. FN_GenCallRetIndirect,
  428. FN_GenCallRetIndirect,
  429. CTRL_INDIR_RetfFrag16)
  430. DEF_INSTR(OP_CTRL_INDIR_Retf32,
  431. ALLFLAGS, 0, REGESP,
  432. OPFL_END_NEXT_EP,
  433. FN_GenCallRetIndirect,
  434. FN_GenCallRetIndirect,
  435. CTRL_INDIR_RetfFrag32)
  436. DEF_INSTR(OP_Int,
  437. ALLFLAGS, ALLFLAGS, ALLREGS,
  438. OPFL_STOP_COMPILE,
  439. FN_GenCallCFragLoadEip,
  440. FN_GenCallCFragLoadEipSlow,
  441. IntFrag)
  442. DEF_INSTR(OP_CTRL_INDIR_IRet,
  443. ALLFLAGS, ALLFLAGS, REGESP,
  444. OPFL_END_NEXT_EP,
  445. FN_GenCallRetIndirect,
  446. FN_GenCallRetIndirect,
  447. CTRL_INDIR_IRetFrag)
  448. DEF_INSTR(OP_Unsimulate,
  449. ALLFLAGS, ALLFLAGS, ALLREGS,
  450. OPFL_STOP_COMPILE,
  451. FN_GenCallCFragNoCpu,
  452. FN_GenCallCFragNoCpuSlow,
  453. UnsimulateFrag)
  454. DEF_INSTR(OP_PrivilegedInstruction,
  455. ALLFLAGS, ALLFLAGS, ALLREGS,
  456. OPFL_STOP_COMPILE,
  457. FN_GenCallCFragLoadEip,
  458. FN_GenCallCFragLoadEipSlow,
  459. PrivilegedInstructionFrag)
  460. DEF_INSTR(OP_BadInstruction,
  461. ALLFLAGS, ALLFLAGS, ALLREGS,
  462. OPFL_STOP_COMPILE,
  463. FN_GenCallCFragLoadEip,
  464. FN_GenCallCFragLoadEipSlow,
  465. BadInstructionFrag)
  466. DEF_INSTR(OP_Fault,
  467. ALLFLAGS, ALLFLAGS, ALLREGS,
  468. OPFL_STOP_COMPILE,
  469. FN_GenCallCFragLoadEip,
  470. FN_GenCallCFragLoadEipSlow,
  471. FaultFrag)
  472. DEF_INSTR(OP_IntO,
  473. FLAG_OF, ALLFLAGS, ALLREGS,
  474. OPFL_STOP_COMPILE,
  475. FN_GenCallCFragLoadEip,
  476. FN_GenCallCFragLoadEipSlow,
  477. IntOFrag)
  478. // Next 4 must be consecutive
  479. DEF_INSTR(OP_Add32,
  480. 0, ALLFLAGS, 0,
  481. OPFL_ALIGN|OPFL_HASNOFLAGS,
  482. FN_GenCallCFrag, FN_GenCallCFragSlow,
  483. AddFrag32)
  484. DEF_INSTR(OP_Add32A,
  485. 0, ALLFLAGS, 0,
  486. 0,
  487. FN_GenCallCFrag, FN_GenCallCFragSlow,
  488. AddFrag32A)
  489. DEF_INSTR(OP_AddNoFlags32,
  490. 0, ALLFLAGS, 0,
  491. OPFL_ALIGN|OPFL_INLINEARITH,
  492. FN_GenAddFragNoFlags32, FN_GenCallCFragNoCpuSlow,
  493. AddNoFlagsFrag32)
  494. DEF_INSTR(OP_AddNoFlags32A,
  495. 0, ALLFLAGS, 0,
  496. OPFL_INLINEARITH,
  497. FN_GenAddFragNoFlags32A, FN_GenCallCFragNoCpuSlow,
  498. AddNoFlagsFrag32A)
  499. // Next 4 must be consecutive
  500. DEF_INSTR(OP_Add16,
  501. 0, ALLFLAGS, 0,
  502. OPFL_ALIGN|OPFL_ADDR16|OPFL_HASNOFLAGS,
  503. FN_GenCallCFrag, FN_GenCallCFragSlow,
  504. AddFrag16)
  505. DEF_INSTR(OP_Add16A,
  506. 0, ALLFLAGS, 0,
  507. 0,
  508. FN_GenCallCFrag, FN_GenCallCFragSlow,
  509. AddFrag16A)
  510. DEF_INSTR(OP_AddNoFlags16,
  511. 0, ALLFLAGS, 0,
  512. OPFL_ADDR16|OPFL_ALIGN,
  513. FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
  514. AddNoFlagsFrag16)
  515. DEF_INSTR(OP_AddNoFlags16A,
  516. 0, ALLFLAGS, 0,
  517. 0,
  518. FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
  519. AddNoFlagsFrag16A)
  520. // Next 2 must be consecutive
  521. DEF_INSTR(OP_Add8,
  522. 0, ALLFLAGS, 0,
  523. OPFL_HASNOFLAGS,
  524. FN_GenCallCFrag, FN_GenCallCFragSlow,
  525. AddFrag8)
  526. DEF_INSTR(OP_AddNoFlags8,
  527. 0, ALLFLAGS, 0,
  528. 0,
  529. FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
  530. AddNoFlagsFrag8)
  531. // Next 4 must be consecutive
  532. DEF_INSTR(OP_Inc32,
  533. 0, FLAG_AUX|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
  534. OPFL_ALIGN|OPFL_HASNOFLAGS,
  535. FN_GenCallCFrag, FN_GenCallCFragSlow,
  536. IncFrag32)
  537. DEF_INSTR(OP_Inc32A,
  538. 0, FLAG_AUX|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
  539. 0,
  540. FN_GenCallCFrag, FN_GenCallCFragSlow,
  541. IncFrag32A)
  542. DEF_INSTR(OP_IncNoFlags32,
  543. 0, FLAG_AUX|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
  544. OPFL_ALIGN|OPFL_INLINEARITH,
  545. FN_GenIncFragNoFlags32, FN_GenCallCFragNoCpuSlow,
  546. IncNoFlagsFrag32)
  547. DEF_INSTR(OP_IncNoFlags32A,
  548. 0, FLAG_AUX|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
  549. OPFL_INLINEARITH,
  550. FN_GenIncFragNoFlags32A, FN_GenCallCFragNoCpuSlow,
  551. IncNoFlagsFrag32A)
  552. // Next 4 must be consecutive
  553. DEF_INSTR(OP_Inc16,
  554. 0, FLAG_AUX|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
  555. OPFL_ALIGN|OPFL_ADDR16|OPFL_HASNOFLAGS,
  556. FN_GenCallCFrag, FN_GenCallCFragSlow,
  557. IncFrag16)
  558. DEF_INSTR(OP_Inc16A,
  559. 0, FLAG_AUX|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
  560. 0,
  561. FN_GenCallCFrag, FN_GenCallCFragSlow,
  562. IncFrag16A)
  563. DEF_INSTR(OP_IncNoFlags16,
  564. 0, FLAG_AUX|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
  565. OPFL_ADDR16|OPFL_ALIGN,
  566. FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
  567. IncNoFlagsFrag16)
  568. DEF_INSTR(OP_IncNoFlags16A,
  569. 0, FLAG_AUX|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
  570. 0,
  571. FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
  572. IncNoFlagsFrag16A)
  573. // Next 2 must be consecutive
  574. DEF_INSTR(OP_Inc8,
  575. 0, FLAG_AUX|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
  576. OPFL_HASNOFLAGS,
  577. FN_GenCallCFrag, FN_GenCallCFragSlow,
  578. IncFrag8)
  579. DEF_INSTR(OP_IncNoFlags8,
  580. 0, FLAG_AUX|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
  581. 0,
  582. FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
  583. IncNoFlagsFrag8)
  584. // Next 4 must be consecutive
  585. DEF_INSTR(OP_Dec32,
  586. 0, FLAG_AUX|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
  587. OPFL_ALIGN|OPFL_HASNOFLAGS,
  588. FN_GenCallCFrag, FN_GenCallCFragSlow,
  589. DecFrag32)
  590. DEF_INSTR(OP_Dec32A,
  591. 0, FLAG_AUX|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
  592. 0,
  593. FN_GenCallCFrag, FN_GenCallCFragSlow,
  594. DecFrag32A)
  595. DEF_INSTR(OP_DecNoFlags32,
  596. 0, FLAG_AUX|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
  597. OPFL_ALIGN|OPFL_INLINEARITH,
  598. FN_GenDecFragNoFlags32, FN_GenCallCFragNoCpuSlow,
  599. DecNoFlagsFrag32)
  600. DEF_INSTR(OP_DecNoFlags32A,
  601. 0, FLAG_AUX|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
  602. OPFL_INLINEARITH,
  603. FN_GenDecFragNoFlags32A, FN_GenCallCFragNoCpuSlow,
  604. DecNoFlagsFrag32A)
  605. // Next 4 must be consecutive
  606. DEF_INSTR(OP_Dec16,
  607. 0, FLAG_AUX|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
  608. OPFL_ALIGN|OPFL_ADDR16|OPFL_HASNOFLAGS,
  609. FN_GenCallCFrag, FN_GenCallCFragSlow,
  610. DecFrag16)
  611. DEF_INSTR(OP_Dec16A,
  612. 0, FLAG_AUX|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
  613. 0,
  614. FN_GenCallCFrag, FN_GenCallCFragSlow,
  615. DecFrag16A)
  616. DEF_INSTR(OP_DecNoFlags16,
  617. 0, FLAG_AUX|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
  618. OPFL_ADDR16|OPFL_ALIGN,
  619. FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
  620. DecNoFlagsFrag16)
  621. DEF_INSTR(OP_DecNoFlags16A,
  622. 0, FLAG_AUX|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
  623. 0,
  624. FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
  625. DecNoFlagsFrag16A)
  626. // Next 2 must be consecutive
  627. DEF_INSTR(OP_Dec8,
  628. 0, FLAG_AUX|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
  629. OPFL_HASNOFLAGS,
  630. FN_GenCallCFrag, FN_GenCallCFragSlow,
  631. DecFrag8)
  632. DEF_INSTR(OP_DecNoFlags8,
  633. 0, FLAG_AUX|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
  634. 0,
  635. FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
  636. DecNoFlagsFrag8)
  637. // Next 4 must be consecutive
  638. DEF_INSTR(OP_Sub32,
  639. 0, ALLFLAGS, 0,
  640. OPFL_ALIGN|OPFL_HASNOFLAGS,
  641. FN_GenCallCFrag, FN_GenCallCFragSlow,
  642. SubFrag32)
  643. DEF_INSTR(OP_Sub32A,
  644. 0, ALLFLAGS, 0,
  645. 0,
  646. FN_GenCallCFrag, FN_GenCallCFragSlow,
  647. SubFrag32A)
  648. DEF_INSTR(OP_SubNoFlags32,
  649. 0, ALLFLAGS, 0,
  650. OPFL_ALIGN|OPFL_INLINEARITH,
  651. FN_GenSubFragNoFlags32, FN_GenCallCFragNoCpuSlow,
  652. SubNoFlagsFrag32)
  653. DEF_INSTR(OP_SubNoFlags32A,
  654. 0, ALLFLAGS, 0,
  655. OPFL_INLINEARITH,
  656. FN_GenSubFragNoFlags32A, FN_GenCallCFragNoCpuSlow,
  657. SubNoFlagsFrag32A)
  658. // Next 4 must be consecutive
  659. DEF_INSTR(OP_Sub16,
  660. 0, ALLFLAGS, 0,
  661. OPFL_ALIGN|OPFL_ADDR16|OPFL_HASNOFLAGS,
  662. FN_GenCallCFrag, FN_GenCallCFragSlow,
  663. SubFrag16)
  664. DEF_INSTR(OP_Sub16A,
  665. 0, ALLFLAGS, 0,
  666. 0,
  667. FN_GenCallCFrag, FN_GenCallCFragSlow,
  668. SubFrag16A)
  669. DEF_INSTR(OP_SubNoFlags16,
  670. 0, ALLFLAGS, 0,
  671. OPFL_ADDR16|OPFL_ALIGN,
  672. FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
  673. SubNoFlagsFrag16)
  674. DEF_INSTR(OP_SubNoFlags16A,
  675. 0, ALLFLAGS, 0,
  676. 0,
  677. FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
  678. SubNoFlagsFrag16A)
  679. // Next 2 must be consecutive
  680. DEF_INSTR(OP_Sub8,
  681. 0, ALLFLAGS, 0,
  682. OPFL_HASNOFLAGS,
  683. FN_GenCallCFrag, FN_GenCallCFragSlow,
  684. SubFrag8)
  685. DEF_INSTR(OP_SubNoFlags8,
  686. 0, ALLFLAGS, 0,
  687. 0,
  688. FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
  689. SubNoFlagsFrag8)
  690. DEF_INSTR(OP_Cmp32,
  691. 0, ALLFLAGS, 0,
  692. 0,
  693. FN_GenCallCFrag, FN_GenCallCFragSlow,
  694. CmpFrag32)
  695. DEF_INSTR(OP_Cmp16,
  696. 0, ALLFLAGS, 0,
  697. 0,
  698. FN_GenCallCFrag, FN_GenCallCFragSlow,
  699. CmpFrag16)
  700. DEF_INSTR(OP_Cmp8,
  701. 0, ALLFLAGS, 0,
  702. 0,
  703. FN_GenCallCFrag, FN_GenCallCFragSlow,
  704. CmpFrag8)
  705. // Next 4 must be consecutive
  706. DEF_INSTR(OP_Adc32,
  707. FLAG_CF, ALLFLAGS, 0,
  708. OPFL_ALIGN|OPFL_HASNOFLAGS,
  709. FN_GenCallCFrag, FN_GenCallCFragSlow,
  710. AdcFrag32)
  711. DEF_INSTR(OP_Adc32A,
  712. FLAG_CF, ALLFLAGS, 0,
  713. 0,
  714. FN_GenCallCFrag, FN_GenCallCFragSlow,
  715. AdcFrag32A)
  716. DEF_INSTR(OP_AdcNoFlags32,
  717. FLAG_CF, ALLFLAGS, 0,
  718. OPFL_ALIGN,
  719. FN_GenCallCFrag, FN_GenCallCFragSlow,
  720. AdcNoFlagsFrag32)
  721. DEF_INSTR(OP_AdcNoFlags32A,
  722. FLAG_CF, ALLFLAGS, 0,
  723. 0,
  724. FN_GenCallCFrag, FN_GenCallCFragSlow,
  725. AdcNoFlagsFrag32A)
  726. // Next 4 must be consecutive
  727. DEF_INSTR(OP_Adc16,
  728. FLAG_CF, ALLFLAGS, 0,
  729. OPFL_ALIGN|OPFL_ADDR16|OPFL_HASNOFLAGS,
  730. FN_GenCallCFrag, FN_GenCallCFragSlow,
  731. AdcFrag16)
  732. DEF_INSTR(OP_Adc16A,
  733. FLAG_CF, ALLFLAGS, 0,
  734. 0,
  735. FN_GenCallCFrag, FN_GenCallCFragSlow,
  736. AdcFrag16A)
  737. DEF_INSTR(OP_AdcNoFlags16,
  738. FLAG_CF, ALLFLAGS, 0,
  739. OPFL_ADDR16|OPFL_ALIGN,
  740. FN_GenCallCFrag, FN_GenCallCFragSlow,
  741. AdcNoFlagsFrag16)
  742. DEF_INSTR(OP_AdcNoFlags16A,
  743. FLAG_CF, ALLFLAGS, 0,
  744. 0,
  745. FN_GenCallCFrag, FN_GenCallCFragSlow,
  746. AdcNoFlagsFrag16A)
  747. // Next 2 must be consecutive
  748. DEF_INSTR(OP_Adc8,
  749. FLAG_CF, ALLFLAGS, 0,
  750. OPFL_HASNOFLAGS,
  751. FN_GenCallCFrag, FN_GenCallCFragSlow,
  752. AdcFrag8)
  753. DEF_INSTR(OP_AdcNoFlags8,
  754. FLAG_CF, ALLFLAGS, 0,
  755. 0,
  756. FN_GenCallCFrag, FN_GenCallCFragSlow,
  757. AdcNoFlagsFrag8)
  758. // Next 4 must be consecutive
  759. DEF_INSTR(OP_Sbb32,
  760. FLAG_CF, ALLFLAGS, 0,
  761. OPFL_ALIGN|OPFL_HASNOFLAGS,
  762. FN_GenCallCFrag, FN_GenCallCFragSlow,
  763. SbbFrag32)
  764. DEF_INSTR(OP_Sbb32A,
  765. FLAG_CF, ALLFLAGS, 0,
  766. 0,
  767. FN_GenCallCFrag, FN_GenCallCFragSlow,
  768. SbbFrag32A)
  769. DEF_INSTR(OP_SbbNoFlags32,
  770. FLAG_CF, ALLFLAGS, 0,
  771. OPFL_ALIGN,
  772. FN_GenCallCFrag, FN_GenCallCFragSlow,
  773. SbbNoFlagsFrag32)
  774. DEF_INSTR(OP_SbbNoFlags32A,
  775. FLAG_CF, ALLFLAGS, 0,
  776. 0,
  777. FN_GenCallCFrag, FN_GenCallCFragSlow,
  778. SbbNoFlagsFrag32A)
  779. // Next 4 must be consecutive
  780. DEF_INSTR(OP_Sbb16,
  781. FLAG_CF, ALLFLAGS, 0,
  782. OPFL_ALIGN|OPFL_ADDR16|OPFL_HASNOFLAGS,
  783. FN_GenCallCFrag, FN_GenCallCFragSlow,
  784. SbbFrag16)
  785. DEF_INSTR(OP_Sbb16A,
  786. FLAG_CF, ALLFLAGS, 0,
  787. 0,
  788. FN_GenCallCFrag, FN_GenCallCFragSlow,
  789. SbbFrag16A)
  790. DEF_INSTR(OP_SbbNoFlags16,
  791. FLAG_CF, ALLFLAGS, 0,
  792. OPFL_ADDR16|OPFL_ALIGN,
  793. FN_GenCallCFrag, FN_GenCallCFragSlow,
  794. SbbNoFlagsFrag16)
  795. DEF_INSTR(OP_SbbNoFlags16A,
  796. FLAG_CF, ALLFLAGS, 0,
  797. 0,
  798. FN_GenCallCFrag, FN_GenCallCFragSlow,
  799. SbbNoFlagsFrag16A)
  800. // Next 2 must be consecutive
  801. DEF_INSTR(OP_Sbb8,
  802. FLAG_CF, ALLFLAGS, 0,
  803. OPFL_HASNOFLAGS,
  804. FN_GenCallCFrag, FN_GenCallCFragSlow,
  805. SbbFrag8)
  806. DEF_INSTR(OP_SbbNoFlags8,
  807. FLAG_CF, ALLFLAGS, 0,
  808. 0,
  809. FN_GenCallCFrag, FN_GenCallCFragSlow,
  810. SbbNoFlagsFrag8)
  811. DEF_INSTR(OP_Mov32,
  812. 0, 0, 0,
  813. 0,
  814. FN_PlaceNop, FN_GenEndMovSlow,
  815. NULL)
  816. DEF_INSTR(OP_Mov16,
  817. 0, 0, 0,
  818. OPFL_ADDR16,
  819. FN_PlaceNop, FN_GenEndMovSlow,
  820. NULL)
  821. DEF_INSTR(OP_Mov8,
  822. 0, 0, 0,
  823. 0,
  824. FN_PlaceNop, FN_GenEndMovSlow,
  825. NULL)
  826. // Next 4 must be consecutive
  827. DEF_INSTR(OP_Or32,
  828. 0, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
  829. OPFL_ALIGN|OPFL_HASNOFLAGS,
  830. FN_GenCallCFrag, FN_GenCallCFragSlow,
  831. OrFrag32)
  832. DEF_INSTR(OP_Or32A,
  833. 0, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
  834. 0,
  835. FN_GenCallCFrag, FN_GenCallCFragSlow,
  836. OrFrag32A)
  837. DEF_INSTR(OP_OrNoFlags32,
  838. 0, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
  839. OPFL_ALIGN|OPFL_INLINEARITH,
  840. FN_GenOrFragNoFlags32, FN_GenCallCFragNoCpuSlow,
  841. OrNoFlagsFrag32)
  842. DEF_INSTR(OP_OrNoFlags32A,
  843. 0, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
  844. OPFL_INLINEARITH,
  845. FN_GenOrFragNoFlags32A, FN_GenCallCFragNoCpuSlow,
  846. OrNoFlagsFrag32A)
  847. // Next 4 must be consecutive
  848. DEF_INSTR(OP_Or16,
  849. 0, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
  850. OPFL_ALIGN|OPFL_ADDR16|OPFL_HASNOFLAGS,
  851. FN_GenCallCFrag, FN_GenCallCFragSlow,
  852. OrFrag16)
  853. DEF_INSTR(OP_Or16A,
  854. 0, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
  855. 0,
  856. FN_GenCallCFrag, FN_GenCallCFragSlow,
  857. OrFrag16A)
  858. DEF_INSTR(OP_OrNoFlags16,
  859. 0, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
  860. OPFL_ADDR16|OPFL_ALIGN,
  861. FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
  862. OrNoFlagsFrag16)
  863. DEF_INSTR(OP_OrNoFlags16A,
  864. 0, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
  865. 0,
  866. FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
  867. OrNoFlagsFrag16A)
  868. // Next 2 must be consecutive
  869. DEF_INSTR(OP_Or8,
  870. 0, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
  871. OPFL_HASNOFLAGS,
  872. FN_GenCallCFrag, FN_GenCallCFragSlow,
  873. OrFrag8)
  874. DEF_INSTR(OP_OrNoFlags8,
  875. 0, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
  876. 0,
  877. FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
  878. OrNoFlagsFrag8)
  879. // Next 4 must be consecutive
  880. DEF_INSTR(OP_And32,
  881. 0, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
  882. OPFL_ALIGN|OPFL_HASNOFLAGS,
  883. FN_GenCallCFrag, FN_GenCallCFragSlow,
  884. AndFrag32)
  885. DEF_INSTR(OP_And32A,
  886. 0, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
  887. 0,
  888. FN_GenCallCFrag, FN_GenCallCFragSlow,
  889. AndFrag32A)
  890. DEF_INSTR(OP_AndNoFlags32,
  891. 0, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
  892. OPFL_ALIGN|OPFL_INLINEARITH,
  893. FN_GenAndFragNoFlags32, FN_GenCallCFragNoCpuSlow,
  894. AndNoFlagsFrag32)
  895. DEF_INSTR(OP_AndNoFlags32A,
  896. 0, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
  897. OPFL_INLINEARITH,
  898. FN_GenAndFragNoFlags32A, FN_GenCallCFragNoCpuSlow,
  899. AndNoFlagsFrag32A)
  900. // Next 4 must be consecutive
  901. DEF_INSTR(OP_And16,
  902. 0, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
  903. OPFL_ALIGN|OPFL_ADDR16|OPFL_HASNOFLAGS,
  904. FN_GenCallCFrag, FN_GenCallCFragSlow,
  905. AndFrag16)
  906. DEF_INSTR(OP_And16A,
  907. 0, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
  908. 0,
  909. FN_GenCallCFrag, FN_GenCallCFragSlow,
  910. AndFrag16A)
  911. DEF_INSTR(OP_AndNoFlags16,
  912. 0, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
  913. OPFL_ADDR16|OPFL_ALIGN,
  914. FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
  915. AndNoFlagsFrag16)
  916. DEF_INSTR(OP_AndNoFlags16A,
  917. 0, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
  918. 0,
  919. FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
  920. AndNoFlagsFrag16A)
  921. // Next 2 must be consecutive
  922. DEF_INSTR(OP_And8,
  923. 0, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
  924. OPFL_HASNOFLAGS,
  925. FN_GenCallCFrag, FN_GenCallCFragSlow,
  926. AndFrag8)
  927. DEF_INSTR(OP_AndNoFlags8,
  928. 0, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
  929. 0,
  930. FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
  931. AndNoFlagsFrag8)
  932. // Next 4 must be consecutive
  933. DEF_INSTR(OP_Xor32,
  934. 0, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
  935. OPFL_ALIGN|OPFL_HASNOFLAGS,
  936. FN_GenCallCFrag, FN_GenCallCFragSlow,
  937. XorFrag32)
  938. DEF_INSTR(OP_Xor32A,
  939. 0, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
  940. 0,
  941. FN_GenCallCFrag, FN_GenCallCFragSlow,
  942. XorFrag32A)
  943. DEF_INSTR(OP_XorNoFlags32,
  944. 0, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
  945. OPFL_ALIGN|OPFL_INLINEARITH,
  946. FN_GenXorFragNoFlags32, FN_GenCallCFragNoCpuSlow,
  947. XorNoFlagsFrag32)
  948. DEF_INSTR(OP_XorNoFlags32A,
  949. 0, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
  950. OPFL_INLINEARITH,
  951. FN_GenXorFragNoFlags32A, FN_GenCallCFragNoCpuSlow,
  952. XorNoFlagsFrag32A)
  953. // Next 4 must be consecutive
  954. DEF_INSTR(OP_Xor16,
  955. 0, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
  956. OPFL_ALIGN|OPFL_ADDR16|OPFL_HASNOFLAGS,
  957. FN_GenCallCFrag, FN_GenCallCFragSlow,
  958. XorFrag16)
  959. DEF_INSTR(OP_Xor16A,
  960. 0, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
  961. 0,
  962. FN_GenCallCFrag, FN_GenCallCFragSlow,
  963. XorFrag16A)
  964. DEF_INSTR(OP_XorNoFlags16,
  965. 0, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
  966. OPFL_ADDR16|OPFL_ALIGN,
  967. FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
  968. XorNoFlagsFrag16)
  969. DEF_INSTR(OP_XorNoFlags16A,
  970. 0, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
  971. 0,
  972. FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
  973. XorNoFlagsFrag16A)
  974. // Next 2 must be consecutive
  975. DEF_INSTR(OP_Xor8,
  976. 0, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
  977. OPFL_HASNOFLAGS,
  978. FN_GenCallCFrag, FN_GenCallCFragSlow,
  979. XorFrag8)
  980. DEF_INSTR(OP_XorNoFlags8,
  981. 0, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
  982. 0,
  983. FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
  984. XorNoFlagsFrag8)
  985. DEF_INSTR(OP_Test32,
  986. 0, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
  987. 0,
  988. FN_GenCallCFrag, FN_GenCallCFragSlow,
  989. TestFrag32)
  990. DEF_INSTR(OP_Test16,
  991. 0, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
  992. 0,
  993. FN_GenCallCFrag, FN_GenCallCFragSlow,
  994. TestFrag16)
  995. DEF_INSTR(OP_Test8,
  996. 0, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
  997. 0,
  998. FN_GenCallCFrag, FN_GenCallCFragSlow,
  999. TestFrag8)
  1000. // Next 2 must be consecutive
  1001. DEF_INSTR(OP_Xchg32,
  1002. 0, 0, 0,
  1003. OPFL_ALIGN,
  1004. FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
  1005. XchgFrag32)
  1006. DEF_INSTR(OP_Xchg32A,
  1007. 0, 0, 0,
  1008. 0,
  1009. FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
  1010. XchgFrag32A)
  1011. // Next 2 must be consecutive
  1012. DEF_INSTR(OP_Xchg16,
  1013. 0, 0, 0,
  1014. OPFL_ALIGN|OPFL_ADDR16,
  1015. FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
  1016. XchgFrag16)
  1017. DEF_INSTR(OP_Xchg16A,
  1018. 0, 0, 0,
  1019. 0,
  1020. FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
  1021. XchgFrag16A)
  1022. DEF_INSTR(OP_Xchg8,
  1023. 0, 0, 0,
  1024. 0,
  1025. FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
  1026. XchgFrag8)
  1027. // Next 2 must be consecutive
  1028. DEF_INSTR(OP_Rol32,
  1029. FLAG_CF, FLAG_CF, 0,
  1030. OPFL_ALIGN,
  1031. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1032. RolFrag32)
  1033. DEF_INSTR(OP_Rol32A,
  1034. FLAG_CF, FLAG_CF, 0,
  1035. 0,
  1036. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1037. RolFrag32A)
  1038. // Next 2 must be consecutive
  1039. DEF_INSTR(OP_Rol16,
  1040. FLAG_CF, FLAG_CF, 0,
  1041. OPFL_ALIGN|OPFL_ADDR16,
  1042. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1043. RolFrag16)
  1044. DEF_INSTR(OP_Rol16A,
  1045. FLAG_CF, FLAG_CF, 0,
  1046. 0,
  1047. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1048. RolFrag16A)
  1049. DEF_INSTR(OP_Rol8,
  1050. FLAG_CF, FLAG_CF, 0,
  1051. 0,
  1052. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1053. RolFrag8)
  1054. // Next 2 must be consecutive
  1055. DEF_INSTR(OP_Ror32,
  1056. FLAG_CF, FLAG_CF, 0,
  1057. OPFL_ALIGN,
  1058. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1059. RorFrag32)
  1060. DEF_INSTR(OP_Ror32A,
  1061. FLAG_CF, FLAG_CF, 0,
  1062. 0,
  1063. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1064. RorFrag32A)
  1065. // Next 2 must be consecutive
  1066. DEF_INSTR(OP_Ror16,
  1067. FLAG_CF, FLAG_CF, 0,
  1068. OPFL_ALIGN|OPFL_ADDR16,
  1069. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1070. RorFrag16)
  1071. DEF_INSTR(OP_Ror16A,
  1072. FLAG_CF, FLAG_CF, 0,
  1073. 0,
  1074. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1075. RorFrag16A)
  1076. DEF_INSTR(OP_Ror8,
  1077. FLAG_CF, FLAG_CF, 0,
  1078. 0,
  1079. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1080. RorFrag8)
  1081. // Next 2 must be consecutive
  1082. DEF_INSTR(OP_Rcl32,
  1083. FLAG_CF, FLAG_CF, 0,
  1084. OPFL_ALIGN,
  1085. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1086. RclFrag32)
  1087. DEF_INSTR(OP_Rcl32A,
  1088. FLAG_CF, FLAG_CF, 0,
  1089. 0,
  1090. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1091. RclFrag32A)
  1092. // Next 2 must be consecutive
  1093. DEF_INSTR(OP_Rcl16,
  1094. FLAG_CF, FLAG_CF, 0,
  1095. OPFL_ALIGN|OPFL_ADDR16,
  1096. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1097. RclFrag16)
  1098. DEF_INSTR(OP_Rcl16A,
  1099. FLAG_CF, FLAG_CF, 0,
  1100. 0,
  1101. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1102. RclFrag16A)
  1103. DEF_INSTR(OP_Rcl8,
  1104. FLAG_CF, FLAG_CF, 0,
  1105. 0,
  1106. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1107. RclFrag8)
  1108. // Next 2 must be consecutive
  1109. DEF_INSTR(OP_Rcr32,
  1110. FLAG_CF, FLAG_CF, 0,
  1111. OPFL_ALIGN,
  1112. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1113. RcrFrag32)
  1114. DEF_INSTR(OP_Rcr32A,
  1115. FLAG_CF, FLAG_CF, 0,
  1116. 0,
  1117. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1118. RcrFrag32A)
  1119. // Next 2 must be consecutive
  1120. DEF_INSTR(OP_Rcr16,
  1121. FLAG_CF, FLAG_CF, 0,
  1122. OPFL_ALIGN|OPFL_ADDR16,
  1123. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1124. RcrFrag16)
  1125. DEF_INSTR(OP_Rcr16A,
  1126. FLAG_CF, FLAG_CF, 0,
  1127. 0,
  1128. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1129. RcrFrag16A)
  1130. DEF_INSTR(OP_Rcr8,
  1131. FLAG_CF, FLAG_CF, 0,
  1132. 0,
  1133. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1134. RcrFrag8)
  1135. // Next 4 must be consecutive
  1136. DEF_INSTR(OP_Shl32,
  1137. FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
  1138. OPFL_ALIGN|OPFL_HASNOFLAGS,
  1139. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1140. ShlFrag32)
  1141. DEF_INSTR(OP_Shl32A,
  1142. FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
  1143. 0,
  1144. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1145. ShlFrag32A)
  1146. DEF_INSTR(OP_ShlNoFlags32,
  1147. FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
  1148. OPFL_ALIGN,
  1149. FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
  1150. ShlNoFlagsFrag32)
  1151. DEF_INSTR(OP_ShlNoFlags32A,
  1152. FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
  1153. 0,
  1154. FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
  1155. ShlNoFlagsFrag32A)
  1156. // Next 4 must be consecutive
  1157. DEF_INSTR(OP_Shl16,
  1158. FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
  1159. OPFL_ALIGN|OPFL_ADDR16|OPFL_HASNOFLAGS,
  1160. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1161. ShlFrag16)
  1162. DEF_INSTR(OP_Shl16A,
  1163. FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
  1164. 0,
  1165. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1166. ShlFrag16A)
  1167. DEF_INSTR(OP_ShlNoFlags16,
  1168. FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
  1169. OPFL_ADDR16|OPFL_ALIGN,
  1170. FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
  1171. ShlNoFlagsFrag16)
  1172. DEF_INSTR(OP_ShlNoFlags16A,
  1173. FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
  1174. 0,
  1175. FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
  1176. ShlNoFlagsFrag16A)
  1177. // Next 2 must be consecutive
  1178. DEF_INSTR(OP_Shl8,
  1179. FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
  1180. OPFL_HASNOFLAGS,
  1181. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1182. ShlFrag8)
  1183. DEF_INSTR(OP_ShlNoFlags8,
  1184. FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
  1185. 0,
  1186. FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
  1187. ShlNoFlagsFrag8)
  1188. // Next 4 must be consecutive
  1189. DEF_INSTR(OP_Shr32,
  1190. FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
  1191. OPFL_ALIGN|OPFL_HASNOFLAGS,
  1192. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1193. ShrFrag32)
  1194. DEF_INSTR(OP_Shr32A,
  1195. FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
  1196. 0,
  1197. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1198. ShrFrag32A)
  1199. DEF_INSTR(OP_ShrNoFlags32,
  1200. FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
  1201. OPFL_ALIGN,
  1202. FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
  1203. ShrNoFlagsFrag32)
  1204. DEF_INSTR(OP_ShrNoFlags32A,
  1205. FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
  1206. 0,
  1207. FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
  1208. ShrNoFlagsFrag32A)
  1209. // Next 4 must be consecutive
  1210. DEF_INSTR(OP_Shr16,
  1211. FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
  1212. OPFL_ALIGN|OPFL_ADDR16|OPFL_HASNOFLAGS,
  1213. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1214. ShrFrag16)
  1215. DEF_INSTR(OP_Shr16A,
  1216. FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
  1217. 0,
  1218. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1219. ShrFrag16A)
  1220. DEF_INSTR(OP_ShrNoFlags16,
  1221. FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
  1222. OPFL_ADDR16|OPFL_ALIGN,
  1223. FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
  1224. ShrNoFlagsFrag16)
  1225. DEF_INSTR(OP_ShrNoFlags16A,
  1226. FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
  1227. 0,
  1228. FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
  1229. ShrNoFlagsFrag16A)
  1230. // Next 2 must be consecutive
  1231. DEF_INSTR(OP_Shr8,
  1232. FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
  1233. OPFL_HASNOFLAGS,
  1234. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1235. ShrFrag8)
  1236. DEF_INSTR(OP_ShrNoFlags8,
  1237. FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
  1238. 0,
  1239. FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
  1240. ShrNoFlagsFrag8)
  1241. // Next 4 must be consecutive
  1242. DEF_INSTR(OP_Sar32,
  1243. FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
  1244. OPFL_ALIGN|OPFL_HASNOFLAGS,
  1245. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1246. SarFrag32)
  1247. DEF_INSTR(OP_Sar32A,
  1248. FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
  1249. 0,
  1250. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1251. SarFrag32A)
  1252. DEF_INSTR(OP_SarNoFlags32,
  1253. FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
  1254. OPFL_ALIGN,
  1255. FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
  1256. SarNoFlagsFrag32)
  1257. DEF_INSTR(OP_SarNoFlags32A,
  1258. FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
  1259. 0,
  1260. FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
  1261. SarNoFlagsFrag32A)
  1262. // Next 4 must be consecutive
  1263. DEF_INSTR(OP_Sar16,
  1264. FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
  1265. OPFL_ALIGN|OPFL_ADDR16|OPFL_HASNOFLAGS,
  1266. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1267. SarFrag16)
  1268. DEF_INSTR(OP_Sar16A,
  1269. FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
  1270. 0,
  1271. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1272. SarFrag16A)
  1273. DEF_INSTR(OP_SarNoFlags16,
  1274. FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
  1275. OPFL_ADDR16|OPFL_ALIGN,
  1276. FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
  1277. SarNoFlagsFrag16)
  1278. DEF_INSTR(OP_SarNoFlags16A,
  1279. FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
  1280. 0,
  1281. FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
  1282. SarNoFlagsFrag16A)
  1283. // Next 2 must be consecutive
  1284. DEF_INSTR(OP_Sar8,
  1285. FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
  1286. OPFL_HASNOFLAGS,
  1287. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1288. SarFrag8)
  1289. DEF_INSTR(OP_SarNoFlags8,
  1290. FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
  1291. 0,
  1292. FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
  1293. SarNoFlagsFrag8)
  1294. // Next 4 must be consecutive
  1295. DEF_INSTR(OP_Rol132,
  1296. 0, FLAG_CF|FLAG_OF, 0,
  1297. OPFL_ALIGN|OPFL_HASNOFLAGS,
  1298. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1299. Rol1Frag32)
  1300. DEF_INSTR(OP_Rol132A,
  1301. 0, FLAG_CF|FLAG_OF, 0,
  1302. 0,
  1303. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1304. Rol1Frag32A)
  1305. DEF_INSTR(OP_Rol1NoFlags32,
  1306. 0, FLAG_CF|FLAG_OF, 0,
  1307. OPFL_ALIGN,
  1308. FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
  1309. Rol1NoFlagsFrag32)
  1310. DEF_INSTR(OP_Rol1NoFlags32A,
  1311. 0, FLAG_CF|FLAG_OF, 0,
  1312. 0,
  1313. FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
  1314. Rol1NoFlagsFrag32A)
  1315. // Next 4 must be consecutive
  1316. DEF_INSTR(OP_Rol116,
  1317. 0, FLAG_CF|FLAG_OF, 0,
  1318. OPFL_ALIGN|OPFL_ADDR16|OPFL_HASNOFLAGS,
  1319. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1320. Rol1Frag16)
  1321. DEF_INSTR(OP_Rol116A,
  1322. 0, FLAG_CF|FLAG_OF, 0,
  1323. 0,
  1324. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1325. Rol1Frag16A)
  1326. DEF_INSTR(OP_Rol1NoFlags16,
  1327. 0, FLAG_CF|FLAG_OF, 0,
  1328. OPFL_ADDR16|OPFL_ALIGN,
  1329. FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
  1330. Rol1NoFlagsFrag16)
  1331. DEF_INSTR(OP_Rol1NoFlags16A,
  1332. 0, FLAG_CF|FLAG_OF, 0,
  1333. 0,
  1334. FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
  1335. Rol1NoFlagsFrag16A)
  1336. // Next 2 must be consecutive
  1337. DEF_INSTR(OP_Rol18,
  1338. 0, FLAG_CF|FLAG_OF, 0,
  1339. OPFL_HASNOFLAGS,
  1340. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1341. Rol1Frag8)
  1342. DEF_INSTR(OP_Rol1NoFlags8,
  1343. 0, FLAG_CF|FLAG_OF, 0,
  1344. 0,
  1345. FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
  1346. Rol1NoFlagsFrag8)
  1347. // Next 4 must be consecutive
  1348. DEF_INSTR(OP_Ror132,
  1349. 0, FLAG_CF|FLAG_OF, 0,
  1350. OPFL_ALIGN|OPFL_HASNOFLAGS,
  1351. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1352. Ror1Frag32)
  1353. DEF_INSTR(OP_Ror132A,
  1354. 0, FLAG_CF|FLAG_OF, 0,
  1355. 0,
  1356. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1357. Ror1Frag32A)
  1358. DEF_INSTR(OP_Ror1NoFlags32,
  1359. 0, FLAG_CF|FLAG_OF, 0,
  1360. OPFL_ALIGN,
  1361. FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
  1362. Ror1NoFlagsFrag32)
  1363. DEF_INSTR(OP_Ror1NoFlags32A,
  1364. 0, FLAG_CF|FLAG_OF, 0,
  1365. 0,
  1366. FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
  1367. Ror1NoFlagsFrag32A)
  1368. // Next 4 must be consecutive
  1369. DEF_INSTR(OP_Ror116,
  1370. 0, FLAG_CF|FLAG_OF, 0,
  1371. OPFL_ALIGN|OPFL_ADDR16|OPFL_HASNOFLAGS,
  1372. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1373. Ror1Frag16)
  1374. DEF_INSTR(OP_Ror116A,
  1375. 0, FLAG_CF|FLAG_OF, 0,
  1376. 0,
  1377. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1378. Ror1Frag16A)
  1379. DEF_INSTR(OP_Ror1NoFlags16,
  1380. 0, FLAG_CF|FLAG_OF, 0,
  1381. OPFL_ADDR16|OPFL_ALIGN,
  1382. FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
  1383. Ror1NoFlagsFrag16)
  1384. DEF_INSTR(OP_Ror1NoFlags16A,
  1385. 0, FLAG_CF|FLAG_OF, 0,
  1386. 0,
  1387. FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
  1388. Ror1NoFlagsFrag16A)
  1389. // Next 2 must be consecutive
  1390. DEF_INSTR(OP_Ror18,
  1391. 0, FLAG_CF|FLAG_OF, 0,
  1392. OPFL_HASNOFLAGS,
  1393. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1394. Ror1Frag8)
  1395. DEF_INSTR(OP_Ror1NoFlags8,
  1396. 0, FLAG_CF|FLAG_OF, 0,
  1397. 0,
  1398. FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
  1399. Ror1NoFlagsFrag8)
  1400. // Next 4 must be consecutive
  1401. DEF_INSTR(OP_Rcl132,
  1402. FLAG_CF, FLAG_CF|FLAG_OF, 0,
  1403. OPFL_ALIGN|OPFL_HASNOFLAGS,
  1404. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1405. Rcl1Frag32)
  1406. DEF_INSTR(OP_Rcl132A,
  1407. FLAG_CF, FLAG_CF|FLAG_OF, 0,
  1408. 0,
  1409. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1410. Rcl1Frag32A)
  1411. DEF_INSTR(OP_Rcl1NoFlags32,
  1412. FLAG_CF, FLAG_CF|FLAG_OF, 0,
  1413. OPFL_ALIGN,
  1414. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1415. Rcl1NoFlagsFrag32)
  1416. DEF_INSTR(OP_Rcl1NoFlags32A,
  1417. FLAG_CF, FLAG_CF|FLAG_OF, 0,
  1418. 0,
  1419. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1420. Rcl1NoFlagsFrag32A)
  1421. // Next 4 must be consecutive
  1422. DEF_INSTR(OP_Rcl116,
  1423. FLAG_CF, FLAG_CF|FLAG_OF, 0,
  1424. OPFL_ALIGN|OPFL_ADDR16|OPFL_HASNOFLAGS,
  1425. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1426. Rcl1Frag16)
  1427. DEF_INSTR(OP_Rcl116A,
  1428. FLAG_CF, FLAG_CF|FLAG_OF, 0,
  1429. 0,
  1430. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1431. Rcl1Frag16A)
  1432. DEF_INSTR(OP_Rcl1NoFlags16,
  1433. FLAG_CF, FLAG_CF|FLAG_OF, 0,
  1434. OPFL_ADDR16|OPFL_ALIGN,
  1435. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1436. Rcl1NoFlagsFrag16)
  1437. DEF_INSTR(OP_Rcl1NoFlags16A,
  1438. FLAG_CF, FLAG_CF|FLAG_OF, 0,
  1439. 0,
  1440. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1441. Rcl1NoFlagsFrag16A)
  1442. // Next 2 must be consecutive
  1443. DEF_INSTR(OP_Rcl18,
  1444. FLAG_CF, FLAG_CF|FLAG_OF, 0,
  1445. OPFL_HASNOFLAGS,
  1446. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1447. Rcl1Frag8)
  1448. DEF_INSTR(OP_Rcl1NoFlags8,
  1449. FLAG_CF, FLAG_CF|FLAG_OF, 0,
  1450. 0,
  1451. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1452. Rcl1NoFlagsFrag8)
  1453. // Next 4 must be consecutive
  1454. DEF_INSTR(OP_Rcr132,
  1455. FLAG_CF, FLAG_CF|FLAG_OF, 0,
  1456. OPFL_ALIGN|OPFL_HASNOFLAGS,
  1457. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1458. Rcr1Frag32)
  1459. DEF_INSTR(OP_Rcr132A,
  1460. FLAG_CF, FLAG_CF|FLAG_OF, 0,
  1461. 0,
  1462. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1463. Rcr1Frag32A)
  1464. DEF_INSTR(OP_Rcr1NoFlags32,
  1465. FLAG_CF, FLAG_CF|FLAG_OF, 0,
  1466. OPFL_ALIGN,
  1467. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1468. Rcr1NoFlagsFrag32)
  1469. DEF_INSTR(OP_Rcr1NoFlags32A,
  1470. FLAG_CF, FLAG_CF|FLAG_OF, 0,
  1471. 0,
  1472. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1473. Rcr1NoFlagsFrag32A)
  1474. // Next 4 must be consecutive
  1475. DEF_INSTR(OP_Rcr116,
  1476. FLAG_CF, FLAG_CF|FLAG_OF, 0,
  1477. OPFL_ALIGN|OPFL_ADDR16|OPFL_HASNOFLAGS,
  1478. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1479. Rcr1Frag16)
  1480. DEF_INSTR(OP_Rcr116A,
  1481. FLAG_CF, FLAG_CF|FLAG_OF, 0,
  1482. 0,
  1483. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1484. Rcr1Frag16A)
  1485. DEF_INSTR(OP_Rcr1NoFlags16,
  1486. FLAG_CF, FLAG_CF|FLAG_OF, 0,
  1487. OPFL_ADDR16|OPFL_ALIGN,
  1488. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1489. Rcr1NoFlagsFrag16)
  1490. DEF_INSTR(OP_Rcr1NoFlags16A,
  1491. FLAG_CF, FLAG_CF|FLAG_OF, 0,
  1492. 0,
  1493. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1494. Rcr1NoFlagsFrag16A)
  1495. // Next 2 must be consecutive
  1496. DEF_INSTR(OP_Rcr18,
  1497. FLAG_CF, FLAG_CF|FLAG_OF, 0,
  1498. OPFL_HASNOFLAGS,
  1499. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1500. Rcr1Frag8)
  1501. DEF_INSTR(OP_Rcr1NoFlags8,
  1502. FLAG_CF, FLAG_CF|FLAG_OF, 0,
  1503. 0,
  1504. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1505. Rcr1NoFlagsFrag8)
  1506. // Next 4 must be consecutive
  1507. DEF_INSTR(OP_Shl132,
  1508. 0, FLAG_CF|FLAG_OF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
  1509. OPFL_ALIGN|OPFL_HASNOFLAGS,
  1510. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1511. Shl1Frag32)
  1512. DEF_INSTR(OP_Shl132A,
  1513. 0, FLAG_CF|FLAG_OF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
  1514. 0,
  1515. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1516. Shl1Frag32A)
  1517. DEF_INSTR(OP_Shl1NoFlags32,
  1518. 0, FLAG_CF|FLAG_OF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
  1519. OPFL_ALIGN,
  1520. FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
  1521. Shl1NoFlagsFrag32)
  1522. DEF_INSTR(OP_Shl1NoFlags32A,
  1523. 0, FLAG_CF|FLAG_OF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
  1524. 0,
  1525. FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
  1526. Shl1NoFlagsFrag32A)
  1527. // Next 4 must be consecutive
  1528. DEF_INSTR(OP_Shl116,
  1529. 0, FLAG_CF|FLAG_OF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
  1530. OPFL_ALIGN|OPFL_ADDR16|OPFL_HASNOFLAGS,
  1531. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1532. Shl1Frag16)
  1533. DEF_INSTR(OP_Shl116A,
  1534. 0, FLAG_CF|FLAG_OF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
  1535. 0,
  1536. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1537. Shl1Frag16A)
  1538. DEF_INSTR(OP_Shl1NoFlags16,
  1539. 0, FLAG_CF|FLAG_OF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
  1540. OPFL_ADDR16|OPFL_ALIGN,
  1541. FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
  1542. Shl1NoFlagsFrag16)
  1543. DEF_INSTR(OP_Shl1NoFlags16A,
  1544. 0, FLAG_CF|FLAG_OF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
  1545. 0,
  1546. FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
  1547. Shl1NoFlagsFrag16A)
  1548. // Next 2 must be consecutive
  1549. DEF_INSTR(OP_Shl18,
  1550. 0, FLAG_CF|FLAG_OF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
  1551. OPFL_HASNOFLAGS,
  1552. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1553. Shl1Frag8)
  1554. DEF_INSTR(OP_Shl1NoFlags8,
  1555. 0, FLAG_CF|FLAG_OF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
  1556. 0,
  1557. FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
  1558. Shl1NoFlagsFrag8)
  1559. // Next 4 must be consecutive
  1560. DEF_INSTR(OP_Shr132,
  1561. 0, FLAG_CF|FLAG_OF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
  1562. OPFL_ALIGN|OPFL_HASNOFLAGS,
  1563. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1564. Shr1Frag32)
  1565. DEF_INSTR(OP_Shr132A,
  1566. 0, FLAG_CF|FLAG_OF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
  1567. 0,
  1568. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1569. Shr1Frag32A)
  1570. DEF_INSTR(OP_Shr1NoFlags32,
  1571. 0, FLAG_CF|FLAG_OF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
  1572. OPFL_ALIGN,
  1573. FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
  1574. Shr1NoFlagsFrag32)
  1575. DEF_INSTR(OP_Shr1NoFlags32A,
  1576. 0, FLAG_CF|FLAG_OF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
  1577. 0,
  1578. FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
  1579. Shr1NoFlagsFrag32A)
  1580. // Next 4 must be consecutive
  1581. DEF_INSTR(OP_Shr116,
  1582. 0, FLAG_CF|FLAG_OF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
  1583. OPFL_ALIGN|OPFL_ADDR16|OPFL_HASNOFLAGS,
  1584. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1585. Shr1Frag16)
  1586. DEF_INSTR(OP_Shr116A,
  1587. 0, FLAG_CF|FLAG_OF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
  1588. 0,
  1589. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1590. Shr1Frag16A)
  1591. DEF_INSTR(OP_Shr1NoFlags16,
  1592. 0, FLAG_CF|FLAG_OF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
  1593. OPFL_ADDR16|OPFL_ALIGN,
  1594. FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
  1595. Shr1NoFlagsFrag16)
  1596. DEF_INSTR(OP_Shr1NoFlags16A,
  1597. 0, FLAG_CF|FLAG_OF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
  1598. 0,
  1599. FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
  1600. Shr1NoFlagsFrag16A)
  1601. // Next 2 must be consecutive
  1602. DEF_INSTR(OP_Shr18,
  1603. 0, FLAG_CF|FLAG_OF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
  1604. OPFL_HASNOFLAGS,
  1605. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1606. Shr1Frag8)
  1607. DEF_INSTR(OP_Shr1NoFlags8,
  1608. 0, FLAG_CF|FLAG_OF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
  1609. 0,
  1610. FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
  1611. Shr1NoFlagsFrag8)
  1612. // Next 4 must be consecutive
  1613. DEF_INSTR(OP_Sar132,
  1614. 0, FLAG_CF|FLAG_OF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
  1615. OPFL_ALIGN|OPFL_HASNOFLAGS,
  1616. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1617. Sar1Frag32)
  1618. DEF_INSTR(OP_Sar132A,
  1619. 0, FLAG_CF|FLAG_OF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
  1620. 0,
  1621. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1622. Sar1Frag32A)
  1623. DEF_INSTR(OP_Sar1NoFlags32,
  1624. 0, FLAG_CF|FLAG_OF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
  1625. OPFL_ALIGN,
  1626. FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
  1627. Sar1NoFlagsFrag32)
  1628. DEF_INSTR(OP_Sar1NoFlags32A,
  1629. 0, FLAG_CF|FLAG_OF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
  1630. 0,
  1631. FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
  1632. Sar1NoFlagsFrag32A)
  1633. // Next 4 must be consecutive
  1634. DEF_INSTR(OP_Sar116,
  1635. 0, FLAG_CF|FLAG_OF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
  1636. OPFL_ALIGN|OPFL_ADDR16|OPFL_HASNOFLAGS,
  1637. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1638. Sar1Frag16)
  1639. DEF_INSTR(OP_Sar116A,
  1640. 0, FLAG_CF|FLAG_OF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
  1641. 0,
  1642. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1643. Sar1Frag16A)
  1644. DEF_INSTR(OP_Sar1NoFlags16,
  1645. 0, FLAG_CF|FLAG_OF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
  1646. OPFL_ADDR16|OPFL_ALIGN,
  1647. FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
  1648. Sar1NoFlagsFrag16)
  1649. DEF_INSTR(OP_Sar1NoFlags16A,
  1650. 0, FLAG_CF|FLAG_OF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
  1651. 0,
  1652. FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
  1653. Sar1NoFlagsFrag16A)
  1654. // Next 2 must be consecutive
  1655. DEF_INSTR(OP_Sar18,
  1656. 0, FLAG_CF|FLAG_OF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
  1657. OPFL_HASNOFLAGS,
  1658. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1659. Sar1Frag8)
  1660. DEF_INSTR(OP_Sar1NoFlags8,
  1661. 0, FLAG_CF|FLAG_OF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
  1662. 0,
  1663. FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
  1664. Sar1NoFlagsFrag8)
  1665. // Next 2 must be consecutive
  1666. DEF_INSTR(OP_Not32,
  1667. 0, 0, 0,
  1668. OPFL_ALIGN,
  1669. FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
  1670. NotFrag32)
  1671. DEF_INSTR(OP_Not32A,
  1672. 0, 0, 0,
  1673. 0,
  1674. FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
  1675. NotFrag32A)
  1676. // Next 2 must be consecutive
  1677. DEF_INSTR(OP_Not16,
  1678. 0, 0, 0,
  1679. OPFL_ALIGN|OPFL_ADDR16,
  1680. FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
  1681. NotFrag16)
  1682. DEF_INSTR(OP_Not16A,
  1683. 0, 0, 0,
  1684. 0,
  1685. FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
  1686. NotFrag16A)
  1687. DEF_INSTR(OP_Not8,
  1688. 0, 0, 0,
  1689. 0,
  1690. FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
  1691. NotFrag8)
  1692. // Next 4 must be consecutive
  1693. DEF_INSTR(OP_Neg32,
  1694. 0, ALLFLAGS, 0,
  1695. OPFL_ALIGN|OPFL_HASNOFLAGS,
  1696. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1697. NegFrag32)
  1698. DEF_INSTR(OP_Neg32A,
  1699. 0, ALLFLAGS, 0,
  1700. 0,
  1701. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1702. NegFrag32A)
  1703. DEF_INSTR(OP_NegNoFlags32,
  1704. 0, ALLFLAGS, 0,
  1705. OPFL_ALIGN,
  1706. FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
  1707. NegNoFlagsFrag32)
  1708. DEF_INSTR(OP_NegNoFlags32A,
  1709. 0, ALLFLAGS, 0,
  1710. 0,
  1711. FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
  1712. NegNoFlagsFrag32A)
  1713. // Next 4 must be consecutive
  1714. DEF_INSTR(OP_Neg16,
  1715. 0, ALLFLAGS, 0,
  1716. OPFL_ALIGN|OPFL_ADDR16|OPFL_HASNOFLAGS,
  1717. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1718. NegFrag16)
  1719. DEF_INSTR(OP_Neg16A,
  1720. 0, ALLFLAGS, 0,
  1721. 0,
  1722. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1723. NegFrag16A)
  1724. DEF_INSTR(OP_NegNoFlags16,
  1725. 0, ALLFLAGS, 0,
  1726. OPFL_ADDR16|OPFL_ALIGN,
  1727. FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
  1728. NegNoFlagsFrag16)
  1729. DEF_INSTR(OP_NegNoFlags16A,
  1730. 0, ALLFLAGS, 0,
  1731. 0,
  1732. FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
  1733. NegNoFlagsFrag16A)
  1734. // Next 2 must be consecutive
  1735. DEF_INSTR(OP_Neg8,
  1736. 0, ALLFLAGS, 0,
  1737. OPFL_HASNOFLAGS,
  1738. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1739. NegFrag8)
  1740. DEF_INSTR(OP_NegNoFlags8,
  1741. 0, ALLFLAGS, 0,
  1742. 0,
  1743. FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
  1744. NegNoFlagsFrag8)
  1745. // Next 4 must be consecutive
  1746. DEF_INSTR(OP_Mul32,
  1747. 0, FLAG_CF|FLAG_OF, REGEAX|REGEDX,
  1748. OPFL_ALIGN|OPFL_HASNOFLAGS,
  1749. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1750. MulFrag32)
  1751. DEF_INSTR(OP_Mul32A,
  1752. 0, FLAG_CF|FLAG_OF, REGEAX|REGEDX,
  1753. 0,
  1754. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1755. MulFrag32A)
  1756. DEF_INSTR(OP_MulNoFlags32,
  1757. 0, FLAG_CF|FLAG_OF, REGEAX|REGEDX,
  1758. OPFL_ALIGN,
  1759. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1760. MulNoFlagsFrag32)
  1761. DEF_INSTR(OP_MulNoFlags32A,
  1762. 0, FLAG_CF|FLAG_OF, REGEAX|REGEDX,
  1763. 0,
  1764. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1765. MulNoFlagsFrag32A)
  1766. // Next 4 must be consecutive
  1767. DEF_INSTR(OP_Mul16,
  1768. 0, FLAG_CF|FLAG_OF, REGAX|REGDX,
  1769. OPFL_ALIGN|OPFL_ADDR16|OPFL_HASNOFLAGS,
  1770. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1771. MulFrag16)
  1772. DEF_INSTR(OP_Mul16A,
  1773. 0, FLAG_CF|FLAG_OF, REGAX|REGDX,
  1774. 0,
  1775. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1776. MulFrag16A)
  1777. DEF_INSTR(OP_MulNoFlags16,
  1778. 0, FLAG_CF|FLAG_OF, REGAX|REGDX,
  1779. OPFL_ADDR16|OPFL_ALIGN,
  1780. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1781. MulNoFlagsFrag16)
  1782. DEF_INSTR(OP_MulNoFlags16A,
  1783. 0, FLAG_CF|FLAG_OF, REGAX|REGDX,
  1784. 0,
  1785. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1786. MulNoFlagsFrag16A)
  1787. // Next 2 must be consecutive
  1788. DEF_INSTR(OP_Mul8,
  1789. 0, FLAG_CF|FLAG_OF, REGAX,
  1790. OPFL_HASNOFLAGS,
  1791. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1792. MulFrag8)
  1793. DEF_INSTR(OP_MulNoFlags8,
  1794. 0, FLAG_CF|FLAG_OF, REGAX,
  1795. 0,
  1796. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1797. MulNoFlagsFrag8)
  1798. // Next 4 must be consecutive
  1799. DEF_INSTR(OP_Muli32,
  1800. 0, FLAG_CF|FLAG_OF, REGEAX|REGEDX,
  1801. OPFL_ALIGN|OPFL_HASNOFLAGS,
  1802. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1803. MuliFrag32)
  1804. DEF_INSTR(OP_Muli32A,
  1805. 0, FLAG_CF|FLAG_OF, REGEAX|REGEDX,
  1806. 0,
  1807. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1808. MuliFrag32A)
  1809. DEF_INSTR(OP_MuliNoFlags32,
  1810. 0, FLAG_CF|FLAG_OF, REGEAX|REGEDX,
  1811. OPFL_ALIGN,
  1812. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1813. MuliNoFlagsFrag32)
  1814. DEF_INSTR(OP_MuliNoFlags32A,
  1815. 0, FLAG_CF|FLAG_OF, REGEAX|REGEDX,
  1816. 0,
  1817. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1818. MuliNoFlagsFrag32A)
  1819. // Next 4 must be consecutive
  1820. DEF_INSTR(OP_Muli16,
  1821. 0, FLAG_CF|FLAG_OF, REGAX|REGDX,
  1822. OPFL_ALIGN|OPFL_ADDR16|OPFL_HASNOFLAGS,
  1823. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1824. MuliFrag16)
  1825. DEF_INSTR(OP_Muli16A,
  1826. 0, FLAG_CF|FLAG_OF, REGAX|REGDX,
  1827. 0,
  1828. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1829. MuliFrag16A)
  1830. DEF_INSTR(OP_MuliNoFlags16,
  1831. 0, FLAG_CF|FLAG_OF, REGAX|REGDX,
  1832. OPFL_ADDR16|OPFL_ALIGN,
  1833. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1834. MuliNoFlagsFrag16)
  1835. DEF_INSTR(OP_MuliNoFlags16A,
  1836. 0, FLAG_CF|FLAG_OF, REGAX|REGDX,
  1837. 0,
  1838. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1839. MuliNoFlagsFrag16A)
  1840. // Next 2 must be consecutive
  1841. DEF_INSTR(OP_Muli8,
  1842. 0, FLAG_CF|FLAG_OF, REGAX,
  1843. OPFL_HASNOFLAGS,
  1844. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1845. MuliFrag8)
  1846. DEF_INSTR(OP_MuliNoFlags8,
  1847. 0, FLAG_CF|FLAG_OF, REGAX,
  1848. 0,
  1849. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1850. MuliNoFlagsFrag8)
  1851. // Next 2 must be consecutive
  1852. DEF_INSTR(OP_Div32,
  1853. 0, 0, REGEAX|REGEDX,
  1854. OPFL_ALIGN,
  1855. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1856. DivFrag32)
  1857. DEF_INSTR(OP_Div32A,
  1858. 0, 0, REGEAX|REGEDX,
  1859. 0,
  1860. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1861. DivFrag32A)
  1862. // Next 2 must be consecutive
  1863. DEF_INSTR(OP_Div16,
  1864. 0, 0, REGAX|REGDX,
  1865. OPFL_ALIGN|OPFL_ADDR16,
  1866. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1867. DivFrag16)
  1868. DEF_INSTR(OP_Div16A,
  1869. 0, 0, REGAX|REGDX,
  1870. 0,
  1871. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1872. DivFrag16A)
  1873. DEF_INSTR(OP_Div8,
  1874. 0, 0, REGAX,
  1875. 0,
  1876. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1877. DivFrag8)
  1878. // Next 2 must be consecutive
  1879. DEF_INSTR(OP_Idiv32,
  1880. 0, 0, REGEAX|REGEDX,
  1881. OPFL_ALIGN,
  1882. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1883. IdivFrag32)
  1884. DEF_INSTR(OP_Idiv32A,
  1885. 0, 0, REGEAX|REGEDX,
  1886. 0,
  1887. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1888. IdivFrag32A)
  1889. // Next 2 must be consecutive
  1890. DEF_INSTR(OP_Idiv16,
  1891. 0, 0, REGAX|REGDX,
  1892. OPFL_ALIGN|OPFL_ADDR16,
  1893. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1894. IdivFrag16)
  1895. DEF_INSTR(OP_Idiv16A,
  1896. 0, 0, REGAX|REGDX,
  1897. 0,
  1898. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1899. IdivFrag16A)
  1900. DEF_INSTR(OP_Idiv8,
  1901. 0, 0, REGAX,
  1902. 0,
  1903. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1904. IdivFrag8)
  1905. DEF_INSTR(OP_Lods32,
  1906. 0, 0, REGEAX|REGESI,
  1907. 0,
  1908. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1909. LodsFrag32)
  1910. DEF_INSTR(OP_Lods16,
  1911. 0, 0, REGAX|REGESI,
  1912. 0,
  1913. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1914. LodsFrag16)
  1915. DEF_INSTR(OP_Lods8,
  1916. 0, 0, REGAL|REGESI,
  1917. 0,
  1918. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1919. LodsFrag8)
  1920. DEF_INSTR(OP_FsLods32,
  1921. 0, 0, REGEAX|REGESI,
  1922. 0,
  1923. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1924. FsLodsFrag32)
  1925. DEF_INSTR(OP_FsLods16,
  1926. 0, 0, REGAX|REGESI,
  1927. 0,
  1928. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1929. FsLodsFrag16)
  1930. DEF_INSTR(OP_FsLods8,
  1931. 0, 0, REGAL|REGESI,
  1932. 0,
  1933. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1934. FsLodsFrag8)
  1935. DEF_INSTR(OP_RepLods32,
  1936. 0, 0, REGEAX|REGECX|REGESI,
  1937. 0,
  1938. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1939. RepLodsFrag32)
  1940. DEF_INSTR(OP_RepLods16,
  1941. 0, 0, REGAX|REGECX|REGESI,
  1942. 0,
  1943. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1944. RepLodsFrag16)
  1945. DEF_INSTR(OP_RepLods8,
  1946. 0, 0, REGAL|REGECX|REGESI,
  1947. 0,
  1948. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1949. RepLodsFrag8)
  1950. DEF_INSTR(OP_FsRepLods32,
  1951. 0, 0, REGEAX|REGECX|REGESI,
  1952. 0,
  1953. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1954. FsRepLodsFrag32)
  1955. DEF_INSTR(OP_FsRepLods16,
  1956. 0, 0, REGAX|REGECX|REGESI,
  1957. 0,
  1958. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1959. FsRepLodsFrag16)
  1960. DEF_INSTR(OP_FsRepLods8,
  1961. 0, 0, REGAL|REGECX|REGESI,
  1962. 0,
  1963. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1964. FsRepLodsFrag8)
  1965. // Next 2 must be consecutive
  1966. DEF_INSTR(OP_Scas32,
  1967. 0, ALLFLAGS, REGEDI,
  1968. OPFL_HASNOFLAGS,
  1969. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1970. ScasFrag32)
  1971. DEF_INSTR(OP_ScasNoFlags32,
  1972. 0, ALLFLAGS, REGEDI,
  1973. 0,
  1974. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1975. ScasNoFlagsFrag32)
  1976. // Next 2 must be consecutive
  1977. DEF_INSTR(OP_Scas16,
  1978. 0, ALLFLAGS, REGEDI,
  1979. OPFL_HASNOFLAGS,
  1980. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1981. ScasFrag16)
  1982. DEF_INSTR(OP_ScasNoFlags16,
  1983. 0, ALLFLAGS, REGEDI,
  1984. 0,
  1985. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1986. ScasNoFlagsFrag16)
  1987. // Next 2 must be consecutive
  1988. DEF_INSTR(OP_Scas8,
  1989. 0, ALLFLAGS, REGEDI,
  1990. OPFL_HASNOFLAGS,
  1991. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1992. ScasFrag8)
  1993. DEF_INSTR(OP_ScasNoFlags8,
  1994. 0, ALLFLAGS, REGEDI,
  1995. 0,
  1996. FN_GenCallCFrag, FN_GenCallCFragSlow,
  1997. ScasNoFlagsFrag8)
  1998. // Next 2 must be consecutive
  1999. DEF_INSTR(OP_FsScas32,
  2000. 0, ALLFLAGS, REGEDI,
  2001. OPFL_HASNOFLAGS,
  2002. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2003. FsScasFrag32)
  2004. DEF_INSTR(OP_FsScasNoFlags32,
  2005. 0, ALLFLAGS, REGEDI,
  2006. 0,
  2007. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2008. FsScasNoFlagsFrag32)
  2009. // Next 2 must be consecutive
  2010. DEF_INSTR(OP_FsScas16,
  2011. 0, ALLFLAGS, REGEDI,
  2012. OPFL_HASNOFLAGS,
  2013. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2014. FsScasFrag16)
  2015. DEF_INSTR(OP_FsScasNoFlags16,
  2016. 0, ALLFLAGS, REGEDI,
  2017. 0,
  2018. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2019. FsScasNoFlagsFrag16)
  2020. // Next 2 must be consecutive
  2021. DEF_INSTR(OP_FsScas8,
  2022. 0, ALLFLAGS, REGEDI,
  2023. OPFL_HASNOFLAGS,
  2024. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2025. FsScasFrag8)
  2026. DEF_INSTR(OP_FsScasNoFlags8,
  2027. 0, ALLFLAGS, REGEDI,
  2028. 0,
  2029. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2030. FsScasNoFlagsFrag8)
  2031. // Next 2 must be consecutive
  2032. DEF_INSTR(OP_RepnzScas32,
  2033. ALLFLAGS, ALLFLAGS, REGECX|REGEDI,
  2034. OPFL_HASNOFLAGS,
  2035. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2036. RepnzScasFrag32)
  2037. DEF_INSTR(OP_RepnzScasNoFlags32,
  2038. ALLFLAGS, ALLFLAGS, REGECX|REGEDI,
  2039. 0,
  2040. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2041. RepnzScasNoFlagsFrag32)
  2042. // Next 2 must be consecutive
  2043. DEF_INSTR(OP_RepnzScas16,
  2044. ALLFLAGS, ALLFLAGS, REGECX|REGEDI,
  2045. OPFL_HASNOFLAGS,
  2046. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2047. RepnzScasFrag16)
  2048. DEF_INSTR(OP_RepnzScasNoFlags16,
  2049. ALLFLAGS, ALLFLAGS, REGECX|REGEDI,
  2050. 0,
  2051. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2052. RepnzScasNoFlagsFrag16)
  2053. // Next 2 must be consecutive
  2054. DEF_INSTR(OP_RepnzScas8,
  2055. ALLFLAGS, ALLFLAGS, REGECX|REGEDI,
  2056. OPFL_HASNOFLAGS,
  2057. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2058. RepnzScasFrag8)
  2059. DEF_INSTR(OP_RepnzScasNoFlags8,
  2060. ALLFLAGS, ALLFLAGS, REGECX|REGEDI,
  2061. 0,
  2062. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2063. RepnzScasNoFlagsFrag8)
  2064. // Next 2 must be consecutive
  2065. DEF_INSTR(OP_FsRepnzScas32,
  2066. ALLFLAGS, ALLFLAGS, REGECX|REGEDI,
  2067. OPFL_HASNOFLAGS,
  2068. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2069. FsRepnzScasFrag32)
  2070. DEF_INSTR(OP_FsRepnzScasNoFlags32,
  2071. ALLFLAGS, ALLFLAGS, REGECX|REGEDI,
  2072. 0,
  2073. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2074. FsRepnzScasNoFlagsFrag32)
  2075. // Next 2 must be consecutive
  2076. DEF_INSTR(OP_FsRepnzScas16,
  2077. ALLFLAGS, ALLFLAGS, REGECX|REGEDI,
  2078. OPFL_HASNOFLAGS,
  2079. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2080. FsRepnzScasFrag16)
  2081. DEF_INSTR(OP_FsRepnzScasNoFlags16,
  2082. ALLFLAGS, ALLFLAGS, REGECX|REGEDI,
  2083. 0,
  2084. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2085. FsRepnzScasNoFlagsFrag16)
  2086. // Next 2 must be consecutive
  2087. DEF_INSTR(OP_FsRepnzScas8,
  2088. ALLFLAGS, ALLFLAGS, REGECX|REGEDI,
  2089. OPFL_HASNOFLAGS,
  2090. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2091. FsRepnzScasFrag8)
  2092. DEF_INSTR(OP_FsRepnzScasNoFlags8,
  2093. ALLFLAGS, ALLFLAGS, REGECX|REGEDI,
  2094. 0,
  2095. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2096. FsRepnzScasNoFlagsFrag8)
  2097. // Next 2 must be consecutive
  2098. DEF_INSTR(OP_RepzScas32,
  2099. ALLFLAGS, ALLFLAGS, REGECX|REGEDI,
  2100. OPFL_HASNOFLAGS,
  2101. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2102. RepzScasFrag32)
  2103. DEF_INSTR(OP_RepzScasNoFlags32,
  2104. ALLFLAGS, ALLFLAGS, REGECX|REGEDI,
  2105. 0,
  2106. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2107. RepzScasNoFlagsFrag32)
  2108. // Next 2 must be consecutive
  2109. DEF_INSTR(OP_RepzScas16,
  2110. ALLFLAGS, ALLFLAGS, REGECX|REGEDI,
  2111. OPFL_HASNOFLAGS,
  2112. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2113. RepzScasFrag16)
  2114. DEF_INSTR(OP_RepzScasNoFlags16,
  2115. ALLFLAGS, ALLFLAGS, REGECX|REGEDI,
  2116. 0,
  2117. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2118. RepzScasNoFlagsFrag16)
  2119. // Next 2 must be consecutive
  2120. DEF_INSTR(OP_RepzScas8,
  2121. ALLFLAGS, ALLFLAGS, REGECX|REGEDI,
  2122. OPFL_HASNOFLAGS,
  2123. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2124. RepzScasFrag8)
  2125. DEF_INSTR(OP_RepzScasNoFlags8,
  2126. ALLFLAGS, ALLFLAGS, REGECX|REGEDI,
  2127. 0,
  2128. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2129. RepzScasNoFlagsFrag8)
  2130. // Next 2 must be consecutive
  2131. DEF_INSTR(OP_FsRepzScas32,
  2132. ALLFLAGS, ALLFLAGS, REGECX|REGEDI,
  2133. OPFL_HASNOFLAGS,
  2134. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2135. FsRepzScasFrag32)
  2136. DEF_INSTR(OP_FsRepzScasNoFlags32,
  2137. ALLFLAGS, ALLFLAGS, REGECX|REGEDI,
  2138. 0,
  2139. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2140. FsRepzScasNoFlagsFrag32)
  2141. // Next 2 must be consecutive
  2142. DEF_INSTR(OP_FsRepzScas16,
  2143. ALLFLAGS, ALLFLAGS, REGECX|REGEDI,
  2144. OPFL_HASNOFLAGS,
  2145. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2146. FsRepzScasFrag16)
  2147. DEF_INSTR(OP_FsRepzScasNoFlags16,
  2148. ALLFLAGS, ALLFLAGS, REGECX|REGEDI,
  2149. 0,
  2150. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2151. FsRepzScasNoFlagsFrag16)
  2152. // Next 2 must be consecutive
  2153. DEF_INSTR(OP_FsRepzScas8,
  2154. ALLFLAGS, ALLFLAGS, REGECX|REGEDI,
  2155. OPFL_HASNOFLAGS,
  2156. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2157. FsRepzScasFrag8)
  2158. DEF_INSTR(OP_FsRepzScasNoFlags8,
  2159. ALLFLAGS, ALLFLAGS, REGECX|REGEDI,
  2160. 0,
  2161. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2162. FsRepzScasNoFlagsFrag8)
  2163. DEF_INSTR(OP_Stos32,
  2164. 0, 0, REGEDI,
  2165. 0,
  2166. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2167. StosFrag32)
  2168. DEF_INSTR(OP_Stos16,
  2169. 0, 0, REGEDI,
  2170. 0,
  2171. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2172. StosFrag16)
  2173. DEF_INSTR(OP_Stos8,
  2174. 0, 0, REGEDI,
  2175. 0,
  2176. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2177. StosFrag8)
  2178. DEF_INSTR(OP_RepStos32,
  2179. 0, 0, REGECX|REGEDI,
  2180. 0,
  2181. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2182. RepStosFrag32)
  2183. DEF_INSTR(OP_RepStos16,
  2184. 0, 0, REGECX|REGEDI,
  2185. 0,
  2186. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2187. RepStosFrag16)
  2188. DEF_INSTR(OP_RepStos8,
  2189. 0, 0, REGECX|REGEDI,
  2190. 0,
  2191. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2192. RepStosFrag8)
  2193. DEF_INSTR(OP_Movs32,
  2194. 0, 0, REGESI|REGEDI,
  2195. 0,
  2196. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2197. MovsFrag32)
  2198. DEF_INSTR(OP_Movs16,
  2199. 0, 0, REGESI|REGEDI,
  2200. 0,
  2201. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2202. MovsFrag16)
  2203. DEF_INSTR(OP_Movs8,
  2204. 0, 0, REGESI|REGEDI,
  2205. 0,
  2206. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2207. MovsFrag8)
  2208. DEF_INSTR(OP_FsMovs32,
  2209. 0, 0, REGESI|REGEDI,
  2210. 0,
  2211. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2212. FsMovsFrag32)
  2213. DEF_INSTR(OP_FsMovs16,
  2214. 0, 0, REGESI|REGEDI,
  2215. 0,
  2216. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2217. FsMovsFrag16)
  2218. DEF_INSTR(OP_FsMovs8,
  2219. 0, 0, REGESI|REGEDI,
  2220. 0,
  2221. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2222. FsMovsFrag8)
  2223. DEF_INSTR(OP_RepMovs32,
  2224. 0, 0, REGECX|REGESI|REGEDI,
  2225. 0,
  2226. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2227. RepMovsFrag32)
  2228. DEF_INSTR(OP_RepMovs16,
  2229. 0, 0, REGECX|REGESI|REGEDI,
  2230. 0,
  2231. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2232. RepMovsFrag16)
  2233. DEF_INSTR(OP_RepMovs8,
  2234. 0, 0, REGECX|REGESI|REGEDI,
  2235. 0,
  2236. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2237. RepMovsFrag8)
  2238. DEF_INSTR(OP_FsRepMovs32,
  2239. 0, 0, REGECX|REGESI|REGEDI,
  2240. 0,
  2241. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2242. FsRepMovsFrag32)
  2243. DEF_INSTR(OP_FsRepMovs16,
  2244. 0, 0, REGECX|REGESI|REGEDI,
  2245. 0,
  2246. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2247. FsRepMovsFrag16)
  2248. DEF_INSTR(OP_FsRepMovs8,
  2249. 0, 0, REGECX|REGESI|REGEDI,
  2250. 0,
  2251. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2252. FsRepMovsFrag8)
  2253. DEF_INSTR(OP_Cmps32,
  2254. 0, ALLFLAGS, REGESI|REGEDI,
  2255. 0,
  2256. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2257. CmpsFrag32)
  2258. DEF_INSTR(OP_Cmps16,
  2259. 0, ALLFLAGS, REGESI|REGEDI,
  2260. 0,
  2261. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2262. CmpsFrag16)
  2263. DEF_INSTR(OP_Cmps8,
  2264. 0, ALLFLAGS, REGESI|REGEDI,
  2265. 0,
  2266. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2267. CmpsFrag8)
  2268. DEF_INSTR(OP_RepzCmps32,
  2269. ALLFLAGS, ALLFLAGS, REGECX|REGESI|REGEDI,
  2270. 0,
  2271. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2272. RepzCmpsFrag32)
  2273. DEF_INSTR(OP_RepzCmps16,
  2274. ALLFLAGS, ALLFLAGS, REGECX|REGESI|REGEDI,
  2275. 0,
  2276. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2277. RepzCmpsFrag16)
  2278. DEF_INSTR(OP_RepzCmps8,
  2279. ALLFLAGS, ALLFLAGS, REGECX|REGESI|REGEDI,
  2280. 0,
  2281. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2282. RepzCmpsFrag8)
  2283. DEF_INSTR(OP_FsRepzCmps32,
  2284. ALLFLAGS, ALLFLAGS, REGECX|REGESI|REGEDI,
  2285. 0,
  2286. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2287. FsRepzCmpsFrag32)
  2288. DEF_INSTR(OP_FsRepzCmps16,
  2289. ALLFLAGS, ALLFLAGS, REGECX|REGESI|REGEDI,
  2290. 0,
  2291. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2292. FsRepzCmpsFrag16)
  2293. DEF_INSTR(OP_FsRepzCmps8,
  2294. ALLFLAGS, ALLFLAGS, REGECX|REGESI|REGEDI,
  2295. 0,
  2296. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2297. FsRepzCmpsFrag8)
  2298. DEF_INSTR(OP_FsCmps32,
  2299. 0, ALLFLAGS, REGESI|REGEDI,
  2300. 0,
  2301. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2302. FsCmpsFrag32)
  2303. DEF_INSTR(OP_FsCmps16,
  2304. 0, ALLFLAGS, REGESI|REGEDI,
  2305. 0,
  2306. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2307. FsCmpsFrag16)
  2308. DEF_INSTR(OP_FsCmps8,
  2309. 0, ALLFLAGS, REGESI|REGEDI,
  2310. 0,
  2311. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2312. FsCmpsFrag8)
  2313. DEF_INSTR(OP_RepnzCmps32,
  2314. ALLFLAGS, ALLFLAGS, REGECX|REGESI|REGEDI,
  2315. 0,
  2316. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2317. RepnzCmpsFrag32)
  2318. DEF_INSTR(OP_RepnzCmps16,
  2319. ALLFLAGS, ALLFLAGS, REGECX|REGESI|REGEDI,
  2320. 0,
  2321. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2322. RepnzCmpsFrag16)
  2323. DEF_INSTR(OP_RepnzCmps8,
  2324. ALLFLAGS, ALLFLAGS, REGECX|REGESI|REGEDI,
  2325. 0,
  2326. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2327. RepnzCmpsFrag8)
  2328. DEF_INSTR(OP_FsRepnzCmps32,
  2329. ALLFLAGS, ALLFLAGS, REGECX|REGESI|REGEDI,
  2330. 0,
  2331. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2332. FsRepnzCmpsFrag32)
  2333. DEF_INSTR(OP_FsRepnzCmps16,
  2334. ALLFLAGS, ALLFLAGS, REGECX|REGESI|REGEDI,
  2335. 0,
  2336. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2337. FsRepnzCmpsFrag16)
  2338. DEF_INSTR(OP_FsRepnzCmps8,
  2339. ALLFLAGS, ALLFLAGS, REGECX|REGESI|REGEDI,
  2340. 0,
  2341. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2342. FsRepnzCmpsFrag8)
  2343. DEF_INSTR(OP_PushA32,
  2344. 0, 0, REGESP,
  2345. 0,
  2346. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2347. PushAFrag32)
  2348. DEF_INSTR(OP_PushA16,
  2349. 0, 0, REGESP,
  2350. 0,
  2351. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2352. PushAFrag16)
  2353. DEF_INSTR(OP_PopA32,
  2354. 0, 0, ALLREGS,
  2355. 0,
  2356. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2357. PopAFrag32)
  2358. DEF_INSTR(OP_PopA16,
  2359. 0, 0, ALLREGS,
  2360. 0,
  2361. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2362. PopAFrag16)
  2363. DEF_INSTR(OP_Push32,
  2364. 0, 0, REGESP,
  2365. 0,
  2366. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2367. PushFrag32)
  2368. DEF_INSTR(OP_Push16,
  2369. 0, 0, REGESP,
  2370. 0,
  2371. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2372. PushFrag16)
  2373. // Next 2 must be consecutive
  2374. DEF_INSTR(OP_Pop32,
  2375. 0, 0, REGESP,
  2376. OPFL_ALIGN,
  2377. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2378. PopFrag32)
  2379. DEF_INSTR(OP_Pop32A,
  2380. 0, 0, REGESP,
  2381. 0,
  2382. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2383. PopFrag32A)
  2384. // Next 2 must be consecutive
  2385. DEF_INSTR(OP_Pop16,
  2386. 0, 0, REGESP,
  2387. OPFL_ALIGN|OPFL_ADDR16,
  2388. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2389. PopFrag16)
  2390. DEF_INSTR(OP_Pop16A,
  2391. 0, 0, REGESP,
  2392. 0,
  2393. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2394. PopFrag16A)
  2395. DEF_INSTR(OP_Cbw32,
  2396. 0, 0, REGEAX,
  2397. 0,
  2398. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2399. CbwFrag32)
  2400. DEF_INSTR(OP_Cbw16,
  2401. 0, 0, REGAX,
  2402. 0,
  2403. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2404. CbwFrag16)
  2405. DEF_INSTR(OP_Cwd32,
  2406. 0, 0, REGEDX,
  2407. 0,
  2408. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2409. CwdFrag32)
  2410. DEF_INSTR(OP_Cwd16,
  2411. 0, 0, REGDX,
  2412. 0,
  2413. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2414. CwdFrag16)
  2415. DEF_INSTR(OP_Bound32,
  2416. ALLFLAGS, ALLFLAGS, ALLREGS,
  2417. 0,
  2418. FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
  2419. BoundFrag32)
  2420. DEF_INSTR(OP_Bound16,
  2421. ALLFLAGS, ALLFLAGS, ALLREGS,
  2422. 0,
  2423. FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
  2424. BoundFrag16)
  2425. DEF_INSTR(OP_Enter32,
  2426. 0, 0, REGESP|REGEBP,
  2427. 0,
  2428. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2429. EnterFrag32)
  2430. DEF_INSTR(OP_Enter16,
  2431. 0, 0, REGESP|REGEBP,
  2432. 0,
  2433. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2434. EnterFrag16)
  2435. DEF_INSTR(OP_Leave32,
  2436. 0, 0, REGESP|REGEBP,
  2437. 0,
  2438. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2439. LeaveFrag32)
  2440. DEF_INSTR(OP_Leave16,
  2441. 0, 0, REGESP|REGEBP,
  2442. 0,
  2443. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2444. LeaveFrag16)
  2445. DEF_INSTR(OP_Les32,
  2446. 0, 0, 0,
  2447. 0,
  2448. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2449. LesFrag32)
  2450. DEF_INSTR(OP_Les16,
  2451. 0, 0, 0,
  2452. 0,
  2453. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2454. LesFrag16)
  2455. DEF_INSTR(OP_Lds32,
  2456. 0, 0, 0,
  2457. 0,
  2458. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2459. LdsFrag32)
  2460. DEF_INSTR(OP_Lds16,
  2461. 0, 0, 0,
  2462. 0,
  2463. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2464. LdsFrag16)
  2465. DEF_INSTR(OP_Lss32,
  2466. 0, 0, 0,
  2467. 0,
  2468. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2469. LssFrag32)
  2470. DEF_INSTR(OP_Lss16,
  2471. 0, 0, 0,
  2472. 0,
  2473. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2474. LssFrag16)
  2475. DEF_INSTR(OP_Lfs32,
  2476. 0, 0, 0,
  2477. 0,
  2478. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2479. LfsFrag32)
  2480. DEF_INSTR(OP_Lfs16,
  2481. 0, 0, 0,
  2482. 0,
  2483. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2484. LfsFrag16)
  2485. DEF_INSTR(OP_Lgs32,
  2486. 0, 0, 0,
  2487. 0,
  2488. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2489. LgsFrag32)
  2490. DEF_INSTR(OP_Lgs16,
  2491. 0, 0, 0,
  2492. 0,
  2493. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2494. LgsFrag16)
  2495. DEF_INSTR(OP_BtReg32,
  2496. 0, FLAG_CF, 0,
  2497. OPFL_ALIGN,
  2498. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2499. BtRegFrag32)
  2500. DEF_INSTR(OP_BtReg32A,
  2501. 0, FLAG_CF, 0,
  2502. 0,
  2503. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2504. BtRegFrag32A)
  2505. DEF_INSTR(OP_BtReg16,
  2506. 0, FLAG_CF, 0,
  2507. OPFL_ALIGN|OPFL_ADDR16,
  2508. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2509. BtRegFrag16)
  2510. DEF_INSTR(OP_BtReg16A,
  2511. 0, FLAG_CF, 0,
  2512. 0,
  2513. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2514. BtRegFrag16)
  2515. DEF_INSTR(OP_BtsReg32,
  2516. 0, FLAG_CF, 0,
  2517. OPFL_ALIGN,
  2518. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2519. BtsRegFrag32)
  2520. DEF_INSTR(OP_BtsReg32A,
  2521. 0, FLAG_CF, 0,
  2522. 0,
  2523. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2524. BtsRegFrag32A)
  2525. DEF_INSTR(OP_BtsReg16,
  2526. 0, FLAG_CF, 0,
  2527. OPFL_ALIGN|OPFL_ADDR16,
  2528. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2529. BtsRegFrag16)
  2530. DEF_INSTR(OP_BtsReg16A,
  2531. 0, FLAG_CF, 0,
  2532. 0,
  2533. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2534. BtsRegFrag16A)
  2535. DEF_INSTR(OP_BtcReg32,
  2536. 0, FLAG_CF, 0,
  2537. OPFL_ALIGN,
  2538. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2539. BtcRegFrag32)
  2540. DEF_INSTR(OP_BtcReg32A,
  2541. 0, FLAG_CF, 0,
  2542. 0,
  2543. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2544. BtcRegFrag32A)
  2545. DEF_INSTR(OP_BtcReg16,
  2546. 0, FLAG_CF, 0,
  2547. OPFL_ALIGN|OPFL_ADDR16,
  2548. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2549. BtcRegFrag16)
  2550. DEF_INSTR(OP_BtcReg16A,
  2551. 0, FLAG_CF, 0,
  2552. 0,
  2553. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2554. BtcRegFrag16A)
  2555. DEF_INSTR(OP_BtrReg32,
  2556. 0, FLAG_CF, 0,
  2557. OPFL_ALIGN,
  2558. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2559. BtrRegFrag32)
  2560. DEF_INSTR(OP_BtrReg32A,
  2561. 0, FLAG_CF, 0,
  2562. 0,
  2563. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2564. BtrRegFrag32A)
  2565. DEF_INSTR(OP_BtrReg16,
  2566. 0, FLAG_CF, 0,
  2567. OPFL_ALIGN|OPFL_ADDR16,
  2568. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2569. BtrRegFrag16)
  2570. DEF_INSTR(OP_BtrReg16A,
  2571. 0, FLAG_CF, 0,
  2572. 0,
  2573. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2574. BtrRegFrag16A)
  2575. // Next 2 must be consecutive
  2576. DEF_INSTR(OP_BtMem32,
  2577. 0, FLAG_CF, 0,
  2578. OPFL_ALIGN,
  2579. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2580. BtMemFrag32)
  2581. DEF_INSTR(OP_BtMem32A,
  2582. 0, FLAG_CF, 0,
  2583. 0,
  2584. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2585. BtMemFrag32A)
  2586. // Next 2 must be consecutive
  2587. DEF_INSTR(OP_BtMem16,
  2588. 0, FLAG_CF, 0,
  2589. OPFL_ALIGN|OPFL_ADDR16,
  2590. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2591. BtMemFrag16)
  2592. DEF_INSTR(OP_BtMem16A,
  2593. 0, FLAG_CF, 0,
  2594. 0,
  2595. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2596. BtMemFrag16A)
  2597. // Next 2 must be consecutive
  2598. DEF_INSTR(OP_BtsMem32,
  2599. 0, FLAG_CF, 0,
  2600. OPFL_ALIGN,
  2601. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2602. BtsMemFrag32)
  2603. DEF_INSTR(OP_BtsMem32A,
  2604. 0, FLAG_CF, 0,
  2605. 0,
  2606. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2607. BtsMemFrag32A)
  2608. // Next 2 must be consecutive
  2609. DEF_INSTR(OP_BtsMem16,
  2610. 0, FLAG_CF, 0,
  2611. OPFL_ALIGN|OPFL_ADDR16,
  2612. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2613. BtsMemFrag16)
  2614. DEF_INSTR(OP_BtsMem16A,
  2615. 0, FLAG_CF, 0,
  2616. 0,
  2617. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2618. BtsMemFrag16A)
  2619. // Next 2 must be consecutive
  2620. DEF_INSTR(OP_BtcMem32,
  2621. 0, FLAG_CF, 0,
  2622. OPFL_ALIGN,
  2623. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2624. BtcMemFrag32)
  2625. DEF_INSTR(OP_BtcMem32A,
  2626. 0, FLAG_CF, 0,
  2627. 0,
  2628. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2629. BtcMemFrag32A)
  2630. // Next 2 must be consecutive
  2631. DEF_INSTR(OP_BtcMem16,
  2632. 0, FLAG_CF, 0,
  2633. OPFL_ALIGN|OPFL_ADDR16,
  2634. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2635. BtcMemFrag16)
  2636. DEF_INSTR(OP_BtcMem16A,
  2637. 0, FLAG_CF, 0,
  2638. 0,
  2639. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2640. BtcMemFrag16A)
  2641. // Next 2 must be consecutive
  2642. DEF_INSTR(OP_BtrMem32,
  2643. 0, FLAG_CF, 0,
  2644. OPFL_ALIGN,
  2645. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2646. BtrMemFrag32)
  2647. DEF_INSTR(OP_BtrMem32A,
  2648. 0, FLAG_CF, 0,
  2649. 0,
  2650. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2651. BtrMemFrag32A)
  2652. // Next 2 must be consecutive
  2653. DEF_INSTR(OP_BtrMem16,
  2654. 0, FLAG_CF, 0,
  2655. OPFL_ALIGN|OPFL_ADDR16,
  2656. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2657. BtrMemFrag16)
  2658. DEF_INSTR(OP_BtrMem16A,
  2659. 0, FLAG_CF, 0,
  2660. 0,
  2661. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2662. BtrMemFrag16A)
  2663. DEF_INSTR(OP_Pushf32,
  2664. ALLFLAGS, 0, REGESP,
  2665. 0,
  2666. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2667. PushfFrag32)
  2668. DEF_INSTR(OP_Pushf16,
  2669. ALLFLAGS, 0, REGESP,
  2670. 0,
  2671. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2672. PushfFrag16)
  2673. DEF_INSTR(OP_Popf32,
  2674. 0, ALLFLAGS, REGESP,
  2675. 0,
  2676. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2677. PopfFrag32)
  2678. DEF_INSTR(OP_Popf16,
  2679. 0, ALLFLAGS, REGESP,
  2680. 0,
  2681. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2682. PopfFrag16)
  2683. // Next 4 must be consecutive
  2684. DEF_INSTR(OP_Shld32,
  2685. FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
  2686. OPFL_ALIGN|OPFL_HASNOFLAGS,
  2687. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2688. ShldFrag32)
  2689. DEF_INSTR(OP_Shld32A,
  2690. FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
  2691. 0,
  2692. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2693. ShldFrag32A)
  2694. DEF_INSTR(OP_ShldNoFlags32,
  2695. FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
  2696. OPFL_ALIGN,
  2697. FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
  2698. ShldNoFlagsFrag32)
  2699. DEF_INSTR(OP_ShldNoFlags32A,
  2700. FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
  2701. 0,
  2702. FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
  2703. ShldNoFlagsFrag32A)
  2704. // Next 4 must be consecutive
  2705. DEF_INSTR(OP_Shld16,
  2706. FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
  2707. OPFL_ALIGN|OPFL_ADDR16|OPFL_HASNOFLAGS,
  2708. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2709. ShldFrag16)
  2710. DEF_INSTR(OP_Shld16A,
  2711. FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
  2712. 0,
  2713. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2714. ShldFrag16A)
  2715. DEF_INSTR(OP_ShldNoFlags16,
  2716. FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
  2717. OPFL_ADDR16|OPFL_ALIGN,
  2718. FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
  2719. ShldNoFlagsFrag16)
  2720. DEF_INSTR(OP_ShldNoFlags16A,
  2721. FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
  2722. 0,
  2723. FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
  2724. ShldNoFlagsFrag16A)
  2725. // Next 4 must be consecutive
  2726. DEF_INSTR(OP_Shrd32,
  2727. FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
  2728. OPFL_ALIGN|OPFL_HASNOFLAGS,
  2729. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2730. ShrdFrag32)
  2731. DEF_INSTR(OP_Shrd32A,
  2732. FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
  2733. 0,
  2734. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2735. ShrdFrag32A)
  2736. DEF_INSTR(OP_ShrdNoFlags32,
  2737. FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
  2738. OPFL_ALIGN,
  2739. FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
  2740. ShrdNoFlagsFrag32)
  2741. DEF_INSTR(OP_ShrdNoFlags32A,
  2742. FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
  2743. 0,
  2744. FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
  2745. ShrdNoFlagsFrag32A)
  2746. // Next 4 must be consecutive
  2747. DEF_INSTR(OP_Shrd16,
  2748. FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
  2749. OPFL_ALIGN|OPFL_ADDR16|OPFL_HASNOFLAGS,
  2750. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2751. ShrdFrag16)
  2752. DEF_INSTR(OP_Shrd16A,
  2753. FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
  2754. 0,
  2755. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2756. ShrdFrag16A)
  2757. DEF_INSTR(OP_ShrdNoFlags16,
  2758. FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
  2759. OPFL_ADDR16|OPFL_ALIGN,
  2760. FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
  2761. ShrdNoFlagsFrag16)
  2762. DEF_INSTR(OP_ShrdNoFlags16A,
  2763. FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
  2764. 0,
  2765. FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
  2766. ShrdNoFlagsFrag16A)
  2767. // Next 2 must be consecutive
  2768. DEF_INSTR(OP_Bsr32,
  2769. 0, FLAG_ZF, 0,
  2770. OPFL_ALIGN,
  2771. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2772. BsrFrag32)
  2773. DEF_INSTR(OP_Bsr32A,
  2774. 0, FLAG_ZF, 0,
  2775. 0,
  2776. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2777. BsrFrag32A)
  2778. // Next 2 must be consecutive
  2779. DEF_INSTR(OP_Bsr16,
  2780. 0, FLAG_ZF, 0,
  2781. OPFL_ALIGN|OPFL_ADDR16,
  2782. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2783. BsrFrag16)
  2784. DEF_INSTR(OP_Bsr16A,
  2785. 0, FLAG_ZF, 0,
  2786. 0,
  2787. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2788. BsrFrag16A)
  2789. // Next 2 must be consecutive
  2790. DEF_INSTR(OP_Bsf32,
  2791. 0, FLAG_ZF, 0,
  2792. OPFL_ALIGN,
  2793. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2794. BsfFrag32)
  2795. DEF_INSTR(OP_Bsf32A,
  2796. 0, FLAG_ZF, 0,
  2797. 0,
  2798. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2799. BsfFrag32A)
  2800. // Next 2 must be consecutive
  2801. DEF_INSTR(OP_Bsf16,
  2802. 0, FLAG_ZF, 0,
  2803. OPFL_ALIGN|OPFL_ADDR16,
  2804. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2805. BsfFrag16)
  2806. DEF_INSTR(OP_Bsf16A,
  2807. 0, FLAG_ZF, 0,
  2808. 0,
  2809. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2810. BsfFrag16A)
  2811. // Next 4 must be consecutive
  2812. DEF_INSTR(OP_Xadd32,
  2813. 0, ALLFLAGS, 0,
  2814. OPFL_ALIGN|OPFL_HASNOFLAGS,
  2815. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2816. XaddFrag32)
  2817. DEF_INSTR(OP_Xadd32A,
  2818. 0, ALLFLAGS, 0,
  2819. 0,
  2820. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2821. XaddFrag32A)
  2822. DEF_INSTR(OP_XaddNoFlags32,
  2823. 0, ALLFLAGS, 0,
  2824. OPFL_ALIGN,
  2825. FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
  2826. XaddNoFlagsFrag32)
  2827. DEF_INSTR(OP_XaddNoFlags32A,
  2828. 0, ALLFLAGS, 0,
  2829. 0,
  2830. FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
  2831. XaddNoFlagsFrag32A)
  2832. // Next 4 must be consecutive
  2833. DEF_INSTR(OP_Xadd16,
  2834. 0, ALLFLAGS, 0,
  2835. OPFL_ALIGN|OPFL_ADDR16|OPFL_HASNOFLAGS,
  2836. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2837. XaddFrag16)
  2838. DEF_INSTR(OP_Xadd16A,
  2839. 0, ALLFLAGS, 0,
  2840. 0,
  2841. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2842. XaddFrag16A)
  2843. DEF_INSTR(OP_XaddNoFlags16,
  2844. 0, ALLFLAGS, 0,
  2845. OPFL_ADDR16|OPFL_ALIGN,
  2846. FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
  2847. XaddNoFlagsFrag16)
  2848. DEF_INSTR(OP_XaddNoFlags16A,
  2849. 0, ALLFLAGS, 0,
  2850. 0,
  2851. FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
  2852. XaddNoFlagsFrag16A)
  2853. // Next 2 must be consecutive
  2854. DEF_INSTR(OP_Xadd8,
  2855. 0, ALLFLAGS, 0,
  2856. OPFL_HASNOFLAGS,
  2857. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2858. XaddFrag8)
  2859. DEF_INSTR(OP_XaddNoFlags8,
  2860. 0, ALLFLAGS, 0,
  2861. 0,
  2862. FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
  2863. XaddNoFlagsFrag8)
  2864. // Next 2 must be consecutive
  2865. DEF_INSTR(OP_CmpXchg32,
  2866. 0, ALLFLAGS, REGEAX,
  2867. OPFL_ALIGN,
  2868. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2869. CmpXchgFrag32)
  2870. DEF_INSTR(OP_CmpXchg32A,
  2871. 0, ALLFLAGS, REGEAX,
  2872. 0,
  2873. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2874. CmpXchgFrag32A)
  2875. // Next 2 must be consecutive
  2876. DEF_INSTR(OP_CmpXchg16,
  2877. 0, ALLFLAGS, REGAX,
  2878. OPFL_ALIGN|OPFL_ADDR16,
  2879. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2880. CmpXchgFrag16)
  2881. DEF_INSTR(OP_CmpXchg16A,
  2882. 0, ALLFLAGS, REGAX,
  2883. 0,
  2884. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2885. CmpXchgFrag16A)
  2886. DEF_INSTR(OP_CmpXchg8,
  2887. 0, ALLFLAGS, REGAL,
  2888. 0,
  2889. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2890. CmpXchgFrag8)
  2891. DEF_INSTR(OP_CMPXCHG8B,
  2892. 0, FLAG_ZF, REGEAX|REGEDX,
  2893. 0,
  2894. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2895. CmpXchg8bFrag32)
  2896. DEF_INSTR(OP_SynchLockCMPXCHG8B,
  2897. 0, FLAG_ZF, REGEAX|REGEDX,
  2898. 0,
  2899. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2900. SynchLockCmpXchg8bFrag32)
  2901. DEF_INSTR(OP_Lar32,
  2902. 0, FLAG_ZF, 0,
  2903. 0,
  2904. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2905. LarFrag32)
  2906. DEF_INSTR(OP_Lar16,
  2907. 0, FLAG_ZF, 0,
  2908. 0,
  2909. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2910. LarFrag16)
  2911. DEF_INSTR(OP_Lsl32,
  2912. 0, FLAG_ZF, 0,
  2913. 0,
  2914. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2915. LslFrag32)
  2916. DEF_INSTR(OP_Lsl16,
  2917. 0, FLAG_ZF, 0,
  2918. 0,
  2919. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2920. LslFrag16)
  2921. DEF_INSTR(OP_BOP,
  2922. ALLFLAGS, ALLFLAGS, ALLREGS,
  2923. 0,
  2924. FN_GenCallCFragLoadEipNoCpu, FN_GenCallCFragLoadEipNoCpuSlow,
  2925. BOPFrag)
  2926. DEF_INSTR(OP_BOP_STOP_DECODE,
  2927. ALLFLAGS, ALLFLAGS, ALLREGS,
  2928. OPFL_STOP_COMPILE,
  2929. FN_GenCallCFragLoadEipNoCpu, FN_GenCallCFragLoadEipNoCpuSlow,
  2930. BOPFrag)
  2931. DEF_INSTR(OP_PushEs,
  2932. 0, 0, REGESP,
  2933. 0,
  2934. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2935. PushEsFrag)
  2936. DEF_INSTR(OP_PopEs,
  2937. 0, 0, REGESP,
  2938. 0,
  2939. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2940. PopEsFrag)
  2941. DEF_INSTR(OP_PushFs,
  2942. 0, 0, REGESP,
  2943. 0,
  2944. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2945. PushFsFrag)
  2946. DEF_INSTR(OP_PopFs,
  2947. 0, 0, REGESP,
  2948. 0,
  2949. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2950. PopFsFrag)
  2951. DEF_INSTR(OP_PushGs,
  2952. 0, 0, REGESP,
  2953. 0,
  2954. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2955. PushGsFrag)
  2956. DEF_INSTR(OP_PopGs,
  2957. 0, 0, REGESP,
  2958. 0,
  2959. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2960. PopGsFrag)
  2961. DEF_INSTR(OP_PushCs,
  2962. 0, 0, REGESP,
  2963. 0,
  2964. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2965. PushCsFrag)
  2966. DEF_INSTR(OP_PushSs,
  2967. 0, 0, REGESP,
  2968. 0,
  2969. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2970. PushSsFrag)
  2971. DEF_INSTR(OP_PopSs,
  2972. 0, 0, REGESP,
  2973. 0,
  2974. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2975. PopSsFrag)
  2976. DEF_INSTR(OP_PushDs,
  2977. 0, 0, REGESP,
  2978. 0,
  2979. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2980. PushDsFrag)
  2981. DEF_INSTR(OP_PopDs,
  2982. 0, 0, REGESP,
  2983. 0,
  2984. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2985. PopDsFrag)
  2986. DEF_INSTR(OP_Aas,
  2987. FLAG_AUX, FLAG_CF|FLAG_AUX, REGAX,
  2988. 0,
  2989. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2990. AasFrag)
  2991. DEF_INSTR(OP_Daa,
  2992. FLAG_AUX|FLAG_CF, FLAG_SF|FLAG_ZF|FLAG_CF|FLAG_AUX|FLAG_PF, REGAL,
  2993. 0,
  2994. FN_GenCallCFrag, FN_GenCallCFragSlow,
  2995. DaaFrag)
  2996. DEF_INSTR(OP_Das,
  2997. FLAG_AUX|FLAG_CF, FLAG_SF|FLAG_ZF|FLAG_AUX|FLAG_CF|FLAG_PF, REGAL,
  2998. 0,
  2999. FN_GenCallCFrag, FN_GenCallCFragSlow,
  3000. DasFrag)
  3001. DEF_INSTR(OP_Aaa,
  3002. FLAG_AUX, FLAG_AUX|FLAG_CF, REGAX,
  3003. 0,
  3004. FN_GenCallCFrag, FN_GenCallCFragSlow,
  3005. AaaFrag)
  3006. DEF_INSTR(OP_Aad,
  3007. 0, FLAG_PF|FLAG_ZF|FLAG_SF, REGAX,
  3008. 0,
  3009. FN_GenCallCFrag, FN_GenCallCFragSlow,
  3010. AadFrag)
  3011. DEF_INSTR(OP_Aam,
  3012. 0, FLAG_SF|FLAG_PF|FLAG_ZF, REGAX,
  3013. 0,
  3014. FN_GenCallCFrag, FN_GenCallCFragSlow,
  3015. AamFrag)
  3016. // Next 4 must be consecutive
  3017. DEF_INSTR(OP_Imul32,
  3018. 0, FLAG_OF|FLAG_CF, 0,
  3019. OPFL_ALIGN|OPFL_HASNOFLAGS,
  3020. FN_GenCallCFrag, FN_GenCallCFragSlow,
  3021. ImulFrag32)
  3022. DEF_INSTR(OP_Imul32A,
  3023. 0, FLAG_OF|FLAG_CF, 0,
  3024. 0,
  3025. FN_GenCallCFrag, FN_GenCallCFragSlow,
  3026. ImulFrag32A)
  3027. DEF_INSTR(OP_ImulNoFlags32,
  3028. 0, FLAG_OF|FLAG_CF, 0,
  3029. OPFL_ALIGN,
  3030. FN_GenCallCFrag, FN_GenCallCFragSlow,
  3031. ImulNoFlagsFrag32)
  3032. DEF_INSTR(OP_ImulNoFlags32A,
  3033. 0, FLAG_OF|FLAG_CF, 0,
  3034. 0,
  3035. FN_GenCallCFrag, FN_GenCallCFragSlow,
  3036. ImulNoFlagsFrag32A)
  3037. // Next 4 must be consecutive
  3038. DEF_INSTR(OP_Imul16,
  3039. 0, FLAG_OF|FLAG_CF, 0,
  3040. OPFL_ALIGN|OPFL_ADDR16|OPFL_HASNOFLAGS,
  3041. FN_GenCallCFrag, FN_GenCallCFragSlow,
  3042. ImulFrag16)
  3043. DEF_INSTR(OP_Imul16A,
  3044. 0, FLAG_OF|FLAG_CF, 0,
  3045. 0,
  3046. FN_GenCallCFrag, FN_GenCallCFragSlow,
  3047. ImulFrag16A)
  3048. DEF_INSTR(OP_ImulNoFlags16,
  3049. 0, FLAG_OF|FLAG_CF, 0,
  3050. OPFL_ALIGN|OPFL_ADDR16,
  3051. FN_GenCallCFrag, FN_GenCallCFragSlow,
  3052. ImulNoFlagsFrag16)
  3053. DEF_INSTR(OP_ImulNoFlags16A,
  3054. 0, FLAG_OF|FLAG_CF, 0,
  3055. 0,
  3056. FN_GenCallCFrag, FN_GenCallCFragSlow,
  3057. ImulNoFlagsFrag16A)
  3058. // Next 4 must be consecutive
  3059. DEF_INSTR(OP_Imul3Arg32,
  3060. 0, FLAG_OF|FLAG_CF, 0,
  3061. OPFL_ALIGN|OPFL_HASNOFLAGS,
  3062. FN_GenCallCFrag, FN_GenCallCFragSlow,
  3063. Imul3ArgFrag32)
  3064. DEF_INSTR(OP_Imul3Arg32A,
  3065. 0, FLAG_OF|FLAG_CF, 0,
  3066. 0,
  3067. FN_GenCallCFrag, FN_GenCallCFragSlow,
  3068. Imul3ArgFrag32A)
  3069. DEF_INSTR(OP_Imul3ArgNoFlags32,
  3070. 0, FLAG_OF|FLAG_CF, 0,
  3071. OPFL_ALIGN,
  3072. FN_GenCallCFrag, FN_GenCallCFragSlow,
  3073. Imul3ArgNoFlagsFrag32)
  3074. DEF_INSTR(OP_Imul3ArgNoFlags32A,
  3075. 0, FLAG_OF|FLAG_CF, 0,
  3076. 0,
  3077. FN_GenCallCFrag, FN_GenCallCFragSlow,
  3078. Imul3ArgNoFlagsFrag32A)
  3079. // Next 4 must be consecutive
  3080. DEF_INSTR(OP_Imul3Arg16,
  3081. 0, FLAG_OF|FLAG_CF, 0,
  3082. OPFL_ALIGN|OPFL_ADDR16|OPFL_HASNOFLAGS,
  3083. FN_GenCallCFrag, FN_GenCallCFragSlow,
  3084. Imul3ArgFrag16)
  3085. DEF_INSTR(OP_Imul3Arg16A,
  3086. 0, FLAG_OF|FLAG_CF, 0,
  3087. 0,
  3088. FN_GenCallCFrag, FN_GenCallCFragSlow,
  3089. Imul3ArgFrag16A)
  3090. DEF_INSTR(OP_Imul3ArgNoFlags16,
  3091. 0, FLAG_OF|FLAG_CF, 0,
  3092. OPFL_ALIGN|OPFL_ADDR16,
  3093. FN_GenCallCFrag, FN_GenCallCFragSlow,
  3094. Imul3ArgNoFlagsFrag16)
  3095. DEF_INSTR(OP_Imul3ArgNoFlags16A,
  3096. 0, FLAG_OF|FLAG_CF, 0,
  3097. 0,
  3098. FN_GenCallCFrag, FN_GenCallCFragSlow,
  3099. Imul3ArgNoFlagsFrag16A)
  3100. DEF_INSTR(OP_Sahf,
  3101. 0, ALLFLAGS, 0,
  3102. 0,
  3103. FN_GenCallCFrag, FN_GenCallCFragSlow,
  3104. SahfFrag)
  3105. DEF_INSTR(OP_Lahf,
  3106. ALLFLAGS, 0, REGAH,
  3107. 0,
  3108. FN_GenCallCFrag, FN_GenCallCFragSlow,
  3109. LahfFrag)
  3110. DEF_INSTR(OP_Xlat,
  3111. 0, 0, REGAL,
  3112. 0,
  3113. FN_GenCallCFrag, FN_GenCallCFragSlow,
  3114. XlatFrag)
  3115. DEF_INSTR(OP_Cmc,
  3116. FLAG_CF, FLAG_CF, 0,
  3117. 0,
  3118. FN_GenCallCFrag, FN_GenCallCFragSlow,
  3119. CmcFrag)
  3120. DEF_INSTR(OP_Clc,
  3121. 0, FLAG_CF, 0,
  3122. 0,
  3123. FN_GenCallCFrag, FN_GenCallCFragSlow,
  3124. ClcFrag)
  3125. DEF_INSTR(OP_Stc,
  3126. 0, FLAG_CF, 0,
  3127. 0,
  3128. FN_GenCallCFrag, FN_GenCallCFragSlow,
  3129. StcFrag)
  3130. DEF_INSTR(OP_Cld,
  3131. 0, 0, 0,
  3132. 0,
  3133. FN_GenCallCFrag, FN_GenCallCFragSlow,
  3134. CldFrag)
  3135. DEF_INSTR(OP_Std,
  3136. 0, 0, 0,
  3137. 0,
  3138. FN_GenCallCFrag, FN_GenCallCFragSlow,
  3139. StdFrag)
  3140. DEF_INSTR(OP_Seto,
  3141. 0, FLAG_OF, 0,
  3142. 0,
  3143. FN_GenCallCFrag, FN_GenCallCFragSlow,
  3144. SetoFrag)
  3145. DEF_INSTR(OP_Setno,
  3146. 0, FLAG_OF, 0,
  3147. 0,
  3148. FN_GenCallCFrag, FN_GenCallCFragSlow,
  3149. SetnoFrag)
  3150. DEF_INSTR(OP_Setb,
  3151. 0, FLAG_CF, 0,
  3152. 0,
  3153. FN_GenCallCFrag, FN_GenCallCFragSlow,
  3154. SetbFrag)
  3155. DEF_INSTR(OP_Setae,
  3156. 0, FLAG_CF, 0,
  3157. 0,
  3158. FN_GenCallCFrag, FN_GenCallCFragSlow,
  3159. SetaeFrag)
  3160. DEF_INSTR(OP_Sete,
  3161. 0, FLAG_ZF, 0,
  3162. 0,
  3163. FN_GenCallCFrag, FN_GenCallCFragSlow,
  3164. SeteFrag)
  3165. DEF_INSTR(OP_Setne,
  3166. 0, FLAG_ZF, 0,
  3167. 0,
  3168. FN_GenCallCFrag, FN_GenCallCFragSlow,
  3169. SetneFrag)
  3170. DEF_INSTR(OP_Setbe,
  3171. 0, FLAG_CF|FLAG_ZF, 0,
  3172. 0,
  3173. FN_GenCallCFrag, FN_GenCallCFragSlow,
  3174. SetbeFrag)
  3175. DEF_INSTR(OP_Seta,
  3176. 0, FLAG_CF|FLAG_ZF, 0,
  3177. 0,
  3178. FN_GenCallCFrag, FN_GenCallCFragSlow,
  3179. SetaFrag)
  3180. DEF_INSTR(OP_Sets,
  3181. 0, FLAG_SF, 0,
  3182. 0,
  3183. FN_GenCallCFrag, FN_GenCallCFragSlow,
  3184. SetsFrag)
  3185. DEF_INSTR(OP_Setns,
  3186. 0, FLAG_SF, 0,
  3187. 0,
  3188. FN_GenCallCFrag, FN_GenCallCFragSlow,
  3189. SetnsFrag)
  3190. DEF_INSTR(OP_Setp,
  3191. 0, FLAG_PF, 0,
  3192. 0,
  3193. FN_GenCallCFrag, FN_GenCallCFragSlow,
  3194. SetpFrag)
  3195. DEF_INSTR(OP_Setnp,
  3196. 0, FLAG_PF, 0,
  3197. 0,
  3198. FN_GenCallCFrag, FN_GenCallCFragSlow,
  3199. SetnpFrag)
  3200. DEF_INSTR(OP_Setl,
  3201. 0, FLAG_SF|FLAG_OF, 0,
  3202. 0,
  3203. FN_GenCallCFrag, FN_GenCallCFragSlow,
  3204. SetlFrag)
  3205. DEF_INSTR(OP_Setge,
  3206. 0, FLAG_SF|FLAG_OF, 0,
  3207. 0,
  3208. FN_GenCallCFrag, FN_GenCallCFragSlow,
  3209. SetgeFrag)
  3210. DEF_INSTR(OP_Setle,
  3211. 0, FLAG_SF|FLAG_ZF|FLAG_OF, 0,
  3212. 0,
  3213. FN_GenCallCFrag, FN_GenCallCFragSlow,
  3214. SetleFrag)
  3215. DEF_INSTR(OP_Setg,
  3216. 0, FLAG_SF|FLAG_ZF|FLAG_OF, 0,
  3217. 0,
  3218. FN_GenCallCFrag, FN_GenCallCFragSlow,
  3219. SetgFrag)
  3220. DEF_INSTR(OP_Nop,
  3221. 0, 0, 0,
  3222. 0,
  3223. FN_PlaceNop, FN_GenCallCFragNoCpuSlow,
  3224. NopFrag)
  3225. DEF_INSTR(OP_Movsx8To32,
  3226. 0, 0, 0,
  3227. 0,
  3228. FN_GenMovsx8To32,
  3229. FN_GenMovsx8To32Slow,
  3230. NULL)
  3231. DEF_INSTR(OP_Movsx8To16,
  3232. 0, 0, 0,
  3233. 0,
  3234. FN_GenMovsx8To16,
  3235. FN_GenMovsx8To16Slow,
  3236. NULL)
  3237. DEF_INSTR(OP_Movsx16To32,
  3238. 0, 0, 0,
  3239. 0,
  3240. FN_GenMovsx16To32,
  3241. FN_GenMovsx16To32Slow,
  3242. NULL)
  3243. DEF_INSTR(OP_Movzx8To32,
  3244. 0, 0, 0,
  3245. 0,
  3246. FN_GenMovzx8To32,
  3247. FN_GenMovzx8To32Slow,
  3248. NULL)
  3249. DEF_INSTR(OP_Movzx8To16,
  3250. 0, 0, 0,
  3251. 0,
  3252. FN_GenMovzx8To16,
  3253. FN_GenMovzx8To16Slow,
  3254. NULL)
  3255. DEF_INSTR(OP_Movzx16To32,
  3256. 0, 0, 0,
  3257. 0,
  3258. FN_GenMovzx16To32,
  3259. FN_GenMovzx16To32Slow,
  3260. NULL)
  3261. DEF_INSTR(OP_Wait,
  3262. 0, 0, 0,
  3263. 0,
  3264. FN_GenCallCFrag, FN_GenCallCFragSlow,
  3265. WaitFrag)
  3266. DEF_INSTR(OP_Bswap32,
  3267. 0, 0, 0,
  3268. 0,
  3269. FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
  3270. BswapFrag32)
  3271. DEF_INSTR(OP_Arpl,
  3272. 0, FLAG_ZF, 0,
  3273. 0,
  3274. FN_GenCallCFrag, FN_GenCallCFragSlow,
  3275. ArplFrag)
  3276. DEF_INSTR(OP_Verr,
  3277. 0, FLAG_ZF, 0,
  3278. 0,
  3279. FN_GenCallCFrag, FN_GenCallCFragSlow,
  3280. VerrFrag)
  3281. DEF_INSTR(OP_Verw,
  3282. 0, FLAG_ZF, 0,
  3283. 0,
  3284. FN_GenCallCFrag, FN_GenCallCFragSlow,
  3285. VerwFrag)
  3286. DEF_INSTR(OP_Smsw,
  3287. 0, 0, 0,
  3288. 0,
  3289. FN_GenCallCFrag, FN_GenCallCFragSlow,
  3290. SmswFrag)
  3291. DEF_INSTR(OP_FP_FADD32,
  3292. 0, 0, 0,
  3293. 0,
  3294. FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
  3295. FADD32)
  3296. DEF_INSTR(OP_FP_FMUL32,
  3297. 0, 0, 0,
  3298. 0,
  3299. FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
  3300. FMUL32)
  3301. DEF_INSTR(OP_FP_FCOM32,
  3302. 0, 0, 0,
  3303. 0,
  3304. FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
  3305. FCOM32)
  3306. DEF_INSTR(OP_FP_FCOMP32,
  3307. 0, 0, 0,
  3308. 0,
  3309. FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
  3310. FCOMP32)
  3311. DEF_INSTR(OP_FP_FSUB32,
  3312. 0, 0, 0,
  3313. 0,
  3314. FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
  3315. FSUB32)
  3316. DEF_INSTR(OP_FP_FDIV32,
  3317. 0, 0, 0,
  3318. 0,
  3319. FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
  3320. FDIV32)
  3321. DEF_INSTR(OP_FP_FDIVR32,
  3322. 0, 0, 0,
  3323. 0,
  3324. FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
  3325. FDIVR32)
  3326. DEF_INSTR(OP_FP_FADD_ST_STi,
  3327. 0, 0, 0,
  3328. 0,
  3329. FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
  3330. FADD_ST_STi)
  3331. DEF_INSTR(OP_FP_FMUL_ST_STi,
  3332. 0, 0, 0,
  3333. 0,
  3334. FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
  3335. FMUL_ST_STi)
  3336. DEF_INSTR(OP_FP_FCOM_STi,
  3337. 0, 0, 0,
  3338. 0,
  3339. FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
  3340. FCOM_STi)
  3341. DEF_INSTR(OP_FP_FCOMP_STi,
  3342. 0, 0, 0,
  3343. 0,
  3344. FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
  3345. FCOMP_STi)
  3346. DEF_INSTR(OP_FP_FSUB_ST_STi,
  3347. 0, 0, 0,
  3348. 0,
  3349. FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
  3350. FSUB_ST_STi)
  3351. DEF_INSTR(OP_FP_FSUBR_ST_STi,
  3352. 0, 0, 0,
  3353. 0,
  3354. FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
  3355. FSUBR_ST_STi)
  3356. DEF_INSTR(OP_FP_FDIV_ST_STi,
  3357. 0, 0, 0,
  3358. 0,
  3359. FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
  3360. FDIV_ST_STi)
  3361. DEF_INSTR(OP_FP_FDIVR_ST_STi,
  3362. 0, 0, 0,
  3363. 0,
  3364. FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
  3365. FDIVR_ST_STi)
  3366. DEF_INSTR(OP_FP_FCHS,
  3367. 0, 0, 0,
  3368. 0,
  3369. FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
  3370. FCHS)
  3371. DEF_INSTR(OP_FP_FABS,
  3372. 0, 0, 0,
  3373. 0,
  3374. FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
  3375. FABS)
  3376. DEF_INSTR(OP_FP_FTST,
  3377. 0, 0, 0,
  3378. 0,
  3379. FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
  3380. FTST)
  3381. DEF_INSTR(OP_FP_FXAM,
  3382. 0, 0, 0,
  3383. 0,
  3384. FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
  3385. FXAM)
  3386. DEF_INSTR(OP_FP_FLD1,
  3387. 0, 0, 0,
  3388. 0,
  3389. FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
  3390. FLD1)
  3391. DEF_INSTR(OP_FP_FLDL2T,
  3392. 0, 0, 0,
  3393. 0,
  3394. FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
  3395. FLDL2T)
  3396. DEF_INSTR(OP_FP_FLDL2E,
  3397. 0, 0, 0,
  3398. 0,
  3399. FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
  3400. FLDL2E)
  3401. DEF_INSTR(OP_FP_FLDPI,
  3402. 0, 0, 0,
  3403. 0,
  3404. FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
  3405. FLDPI)
  3406. DEF_INSTR(OP_FP_FLDLG2,
  3407. 0, 0, 0,
  3408. 0,
  3409. FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
  3410. FLDLG2)
  3411. DEF_INSTR(OP_FP_FLDLN2,
  3412. 0, 0, 0,
  3413. 0,
  3414. FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
  3415. FLDLN2)
  3416. DEF_INSTR(OP_FP_FLDZ,
  3417. 0, 0, 0,
  3418. 0,
  3419. FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
  3420. FLDZ)
  3421. DEF_INSTR(OP_FP_F2XM1,
  3422. 0, 0, 0,
  3423. 0,
  3424. FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
  3425. F2XM1)
  3426. DEF_INSTR(OP_FP_FYL2X,
  3427. 0, 0, 0,
  3428. 0,
  3429. FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
  3430. FYL2X)
  3431. DEF_INSTR(OP_FP_FPTAN,
  3432. 0, 0, 0,
  3433. 0,
  3434. FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
  3435. FPTAN)
  3436. DEF_INSTR(OP_FP_FPATAN,
  3437. 0, 0, 0,
  3438. 0,
  3439. FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
  3440. FPATAN)
  3441. DEF_INSTR(OP_FP_FXTRACT,
  3442. 0, 0, 0,
  3443. 0,
  3444. FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
  3445. FXTRACT)
  3446. DEF_INSTR(OP_FP_FPREM1,
  3447. 0, 0, 0,
  3448. 0,
  3449. FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
  3450. FPREM1)
  3451. DEF_INSTR(OP_FP_FDECSTP,
  3452. 0, 0, 0,
  3453. 0,
  3454. FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
  3455. FDECSTP)
  3456. DEF_INSTR(OP_FP_FINCSTP,
  3457. 0, 0, 0,
  3458. 0,
  3459. FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
  3460. FINCSTP)
  3461. DEF_INSTR(OP_FP_FPREM,
  3462. 0, 0, 0,
  3463. 0,
  3464. FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
  3465. FPREM)
  3466. DEF_INSTR(OP_FP_FYL2XP1,
  3467. 0, 0, 0,
  3468. 0,
  3469. FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
  3470. FYL2XP1)
  3471. DEF_INSTR(OP_FP_FSQRT,
  3472. 0, 0, 0,
  3473. 0,
  3474. FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
  3475. FSQRT)
  3476. DEF_INSTR(OP_FP_FSINCOS,
  3477. 0, 0, 0,
  3478. 0,
  3479. FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
  3480. FSINCOS)
  3481. DEF_INSTR(OP_FP_FRNDINT,
  3482. 0, 0, 0,
  3483. 0,
  3484. FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
  3485. FRNDINT)
  3486. DEF_INSTR(OP_FP_FSCALE,
  3487. 0, 0, 0,
  3488. 0,
  3489. FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
  3490. FSCALE)
  3491. DEF_INSTR(OP_FP_FSIN,
  3492. 0, 0, 0,
  3493. 0,
  3494. FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
  3495. FSIN)
  3496. DEF_INSTR(OP_FP_FCOS,
  3497. 0, 0, 0,
  3498. 0,
  3499. FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
  3500. FCOS)
  3501. DEF_INSTR(OP_FP_FLD32,
  3502. 0, 0, 0,
  3503. 0,
  3504. FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
  3505. FLD32)
  3506. DEF_INSTR(OP_FP_FST32,
  3507. 0, 0, 0,
  3508. 0,
  3509. FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
  3510. FST32)
  3511. DEF_INSTR(OP_FP_FSTP32,
  3512. 0, 0, 0,
  3513. 0,
  3514. FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
  3515. FSTP32)
  3516. DEF_INSTR(OP_FP_FLDENV,
  3517. 0, 0, 0,
  3518. 0,
  3519. FN_GenCallCFrag, FN_GenCallCFragSlow,
  3520. FLDENV)
  3521. DEF_INSTR(OP_FP_FLDCW,
  3522. 0, 0, 0,
  3523. 0,
  3524. FN_GenCallCFrag, FN_GenCallCFragSlow,
  3525. FLDCW)
  3526. DEF_INSTR(OP_FP_FNSTENV,
  3527. 0, 0, 0,
  3528. 0,
  3529. FN_GenCallCFrag, FN_GenCallCFragSlow,
  3530. FNSTENV)
  3531. DEF_INSTR(OP_FP_FNSTCW,
  3532. 0, 0, 0,
  3533. 0,
  3534. FN_GenCallCFrag, FN_GenCallCFragSlow,
  3535. FNSTCW)
  3536. DEF_INSTR(OP_FP_FIADD32,
  3537. 0, 0, 0,
  3538. 0,
  3539. FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
  3540. FIADD32)
  3541. DEF_INSTR(OP_FP_FIMUL32,
  3542. 0, 0, 0,
  3543. 0,
  3544. FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
  3545. FIMUL32)
  3546. DEF_INSTR(OP_FP_FICOM32,
  3547. 0, 0, 0,
  3548. 0,
  3549. FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
  3550. FICOM32)
  3551. DEF_INSTR(OP_FP_FICOMP32,
  3552. 0, 0, 0,
  3553. 0,
  3554. FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
  3555. FICOMP32)
  3556. DEF_INSTR(OP_FP_FISUBR32,
  3557. 0, 0, 0,
  3558. 0,
  3559. FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
  3560. FISUBR32)
  3561. DEF_INSTR(OP_FP_FISUBR16,
  3562. 0, 0, 0,
  3563. 0,
  3564. FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
  3565. FISUBR16)
  3566. DEF_INSTR(OP_FP_FIDIV32,
  3567. 0, 0, 0,
  3568. 0,
  3569. FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
  3570. FIDIV32)
  3571. DEF_INSTR(OP_FP_FIDIVR32,
  3572. 0, 0, 0,
  3573. 0,
  3574. FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
  3575. FIDIVR32)
  3576. DEF_INSTR(OP_FP_FADD64,
  3577. 0, 0, 0,
  3578. 0,
  3579. FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
  3580. FADD64)
  3581. DEF_INSTR(OP_FP_FMUL64,
  3582. 0, 0, 0,
  3583. 0,
  3584. FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
  3585. FMUL64)
  3586. DEF_INSTR(OP_FP_FCOM64,
  3587. 0, 0, 0,
  3588. 0,
  3589. FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
  3590. FCOM64)
  3591. DEF_INSTR(OP_FP_FSUB64,
  3592. 0, 0, 0,
  3593. 0,
  3594. FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
  3595. FSUB64)
  3596. DEF_INSTR(OP_FP_FSUBR64,
  3597. 0, 0, 0,
  3598. 0,
  3599. FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
  3600. FSUBR64)
  3601. DEF_INSTR(OP_FP_FDIV64,
  3602. 0, 0, 0,
  3603. 0,
  3604. FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
  3605. FDIV64)
  3606. DEF_INSTR(OP_FP_FDIVR64,
  3607. 0, 0, 0,
  3608. 0,
  3609. FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
  3610. FDIVR64)
  3611. DEF_INSTR(OP_FP_FADD_STi_ST,
  3612. 0, 0, 0,
  3613. 0,
  3614. FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
  3615. FADD_STi_ST)
  3616. DEF_INSTR(OP_FP_FMUL_STi_ST,
  3617. 0, 0, 0,
  3618. 0,
  3619. FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
  3620. FMUL_STi_ST)
  3621. DEF_INSTR(OP_FP_FSUBR_STi_ST,
  3622. 0, 0, 0,
  3623. 0,
  3624. FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
  3625. FSUBR_STi_ST)
  3626. DEF_INSTR(OP_FP_FSUB_STi_ST,
  3627. 0, 0, 0,
  3628. 0,
  3629. FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
  3630. FSUB_STi_ST)
  3631. DEF_INSTR(OP_FP_FDIVR_STi_ST,
  3632. 0, 0, 0,
  3633. 0,
  3634. FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
  3635. FDIVR_STi_ST)
  3636. DEF_INSTR(OP_FP_FDIV_STi_ST,
  3637. 0, 0, 0,
  3638. 0,
  3639. FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
  3640. FDIV_STi_ST)
  3641. DEF_INSTR(OP_FP_FFREE,
  3642. 0, 0, 0,
  3643. 0,
  3644. FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
  3645. FFREE)
  3646. DEF_INSTR(OP_FP_FXCH_STi,
  3647. 0, 0, 0,
  3648. 0,
  3649. FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
  3650. FXCH_STi)
  3651. DEF_INSTR(OP_FP_FST_STi,
  3652. 0, 0, 0,
  3653. 0,
  3654. FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
  3655. FST_STi)
  3656. DEF_INSTR(OP_FP_FSTP_STi,
  3657. 0, 0, 0,
  3658. 0,
  3659. FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
  3660. FSTP_STi)
  3661. DEF_INSTR(OP_FP_FUCOM,
  3662. 0, 0, 0,
  3663. 0,
  3664. FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
  3665. FUCOM)
  3666. DEF_INSTR(OP_FP_FUCOMP,
  3667. 0, 0, 0,
  3668. 0,
  3669. FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
  3670. FUCOMP)
  3671. DEF_INSTR(OP_FP_FIADD16,
  3672. 0, 0, 0,
  3673. 0,
  3674. FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
  3675. FIADD16)
  3676. DEF_INSTR(OP_FP_FIMUL16,
  3677. 0, 0, 0,
  3678. 0,
  3679. FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
  3680. FIMUL16)
  3681. DEF_INSTR(OP_FP_FICOM16,
  3682. 0, 0, 0,
  3683. 0,
  3684. FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
  3685. FICOM16)
  3686. DEF_INSTR(OP_FP_FICOMP16,
  3687. 0, 0, 0,
  3688. 0,
  3689. FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
  3690. FICOMP16)
  3691. DEF_INSTR(OP_FP_FISUB16,
  3692. 0, 0, 0,
  3693. 0,
  3694. FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
  3695. FISUB16)
  3696. DEF_INSTR(OP_FP_FIDIV16,
  3697. 0, 0, 0,
  3698. 0,
  3699. FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
  3700. FIDIV16)
  3701. DEF_INSTR(OP_FP_FIDIVR16,
  3702. 0, 0, 0,
  3703. 0,
  3704. FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
  3705. FIDIVR16)
  3706. DEF_INSTR(OP_FP_FADDP_STi_ST,
  3707. 0, 0, 0,
  3708. 0,
  3709. FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
  3710. FADDP_STi_ST)
  3711. DEF_INSTR(OP_FP_FMULP_STi_ST,
  3712. 0, 0, 0,
  3713. 0,
  3714. FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
  3715. FMULP_STi_ST)
  3716. DEF_INSTR(OP_FP_FCOMPP,
  3717. 0, 0, 0,
  3718. 0,
  3719. FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
  3720. FCOMPP)
  3721. DEF_INSTR(OP_FP_FSUBP_STi_ST,
  3722. 0, 0, 0,
  3723. 0,
  3724. FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
  3725. FSUBP_STi_ST)
  3726. DEF_INSTR(OP_FP_FSUBRP_STi_ST,
  3727. 0, 0, 0,
  3728. 0,
  3729. FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
  3730. FSUBRP_STi_ST)
  3731. DEF_INSTR(OP_FP_FDIVRP_STi_ST,
  3732. 0, 0, 0,
  3733. 0,
  3734. FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
  3735. FDIVRP_STi_ST)
  3736. DEF_INSTR(OP_FP_FILD16,
  3737. 0, 0, 0,
  3738. 0,
  3739. FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
  3740. FILD16)
  3741. DEF_INSTR(OP_FP_FIST16,
  3742. 0, 0, 0,
  3743. 0,
  3744. FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
  3745. FIST16)
  3746. DEF_INSTR(OP_FP_FBLD,
  3747. 0, 0, 0,
  3748. 0,
  3749. FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
  3750. FBLD)
  3751. DEF_INSTR(OP_FP_FILD64,
  3752. 0, 0, 0,
  3753. 0,
  3754. FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
  3755. FILD64)
  3756. DEF_INSTR(OP_FP_FBSTP,
  3757. 0, 0, 0,
  3758. 0,
  3759. FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
  3760. FBSTP)
  3761. DEF_INSTR(OP_FP_FLD80,
  3762. 0, 0, 0,
  3763. 0,
  3764. FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
  3765. FLD80)
  3766. DEF_INSTR(OP_FP_FSTP80,
  3767. 0, 0, 0,
  3768. 0,
  3769. FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
  3770. FSTP80)
  3771. DEF_INSTR(OP_FP_FISUB32,
  3772. 0, 0, 0,
  3773. 0,
  3774. FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
  3775. FISUB32)
  3776. DEF_INSTR(OP_FP_FCOMP64,
  3777. 0, 0, 0,
  3778. 0,
  3779. FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
  3780. FCOMP64)
  3781. DEF_INSTR(OP_FP_FLD64,
  3782. 0, 0, 0,
  3783. 0,
  3784. FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
  3785. FLD64)
  3786. DEF_INSTR(OP_FP_FST64,
  3787. 0, 0, 0,
  3788. 0,
  3789. FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
  3790. FST64)
  3791. DEF_INSTR(OP_FP_FSTP64,
  3792. 0, 0, 0,
  3793. 0,
  3794. FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
  3795. FSTP64)
  3796. DEF_INSTR(OP_FP_FRSTOR,
  3797. 0, 0, 0,
  3798. 0,
  3799. FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
  3800. FRSTOR)
  3801. DEF_INSTR(OP_FP_FNSAVE,
  3802. 0, 0, 0,
  3803. 0,
  3804. FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
  3805. FNSAVE)
  3806. DEF_INSTR(OP_FP_FDIVP_STi_ST,
  3807. 0, 0, 0,
  3808. 0,
  3809. FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
  3810. FDIVP_STi_ST)
  3811. DEF_INSTR(OP_FP_FISTP16,
  3812. 0, 0, 0,
  3813. 0,
  3814. FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
  3815. FISTP16)
  3816. DEF_INSTR(OP_FP_FISTP64,
  3817. 0, 0, 0,
  3818. 0,
  3819. FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
  3820. FISTP64)
  3821. DEF_INSTR(OP_FP_FLD_STi,
  3822. 0, 0, 0,
  3823. 0,
  3824. FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
  3825. FLD_STi)
  3826. DEF_INSTR(OP_FP_FUCOMPP,
  3827. 0, 0, 0,
  3828. 0,
  3829. FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
  3830. FUCOMPP)
  3831. DEF_INSTR(OP_FP_FILD32,
  3832. 0, 0, 0,
  3833. 0,
  3834. FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
  3835. FILD32)
  3836. DEF_INSTR(OP_FP_FIST32,
  3837. 0, 0, 0,
  3838. 0,
  3839. FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
  3840. FIST32)
  3841. DEF_INSTR(OP_FP_FISTP32,
  3842. 0, 0, 0,
  3843. 0,
  3844. FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
  3845. FISTP32)
  3846. DEF_INSTR(OP_FP_FNCLEX,
  3847. 0, 0, 0,
  3848. 0,
  3849. FN_GenCallCFrag, FN_GenCallCFragSlow,
  3850. FNCLEX)
  3851. DEF_INSTR(OP_FP_FNINIT,
  3852. 0, 0, 0,
  3853. 0,
  3854. FN_GenCallCFrag, FN_GenCallCFragSlow,
  3855. FNINIT)
  3856. DEF_INSTR(OP_FP_FNSTSW,
  3857. 0, 0, 0,
  3858. 0,
  3859. FN_GenCallCFrag, FN_GenCallCFragSlow,
  3860. FNSTSW)
  3861. DEF_INSTR(OP_FP_FSUBR32,
  3862. 0, 0, 0,
  3863. 0,
  3864. FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
  3865. FSUBR32)
  3866. DEF_INSTR(OP_FP_FNOP,
  3867. 0, 0, 0,
  3868. 0,
  3869. FN_GenCallCFrag, FN_GenCallCFragSlow,
  3870. FNOP)
  3871. DEF_INSTR(OP_CPUID,
  3872. 0, 0, GP_EAX|GP_EBX|GP_ECX|GP_EDX,
  3873. 0,
  3874. FN_GenCallCFrag, FN_GenCallCFragSlow,
  3875. CPUID)
  3876. DEF_INSTR(OP_SynchLockAdd32,
  3877. 0, ALLFLAGS, 0,
  3878. 0,
  3879. FN_GenCallCFrag, FN_GenCallCFragSlow,
  3880. SynchLockAddFrag32)
  3881. DEF_INSTR(OP_SynchLockAdd16,
  3882. 0, ALLFLAGS, 0,
  3883. OPFL_ADDR16,
  3884. FN_GenCallCFrag, FN_GenCallCFragSlow,
  3885. SynchLockAddFrag16)
  3886. DEF_INSTR(OP_SynchLockAdd8,
  3887. 0, ALLFLAGS, 0,
  3888. 0,
  3889. FN_GenCallCFrag, FN_GenCallCFragSlow,
  3890. SynchLockAddFrag8)
  3891. DEF_INSTR(OP_SynchLockSub32,
  3892. 0, ALLFLAGS, 0,
  3893. 0,
  3894. FN_GenCallCFrag, FN_GenCallCFragSlow,
  3895. SynchLockSubFrag32)
  3896. DEF_INSTR(OP_SynchLockSub16,
  3897. 0, ALLFLAGS, 0,
  3898. OPFL_ADDR16,
  3899. FN_GenCallCFrag, FN_GenCallCFragSlow,
  3900. SynchLockSubFrag16)
  3901. DEF_INSTR(OP_SynchLockSub8,
  3902. 0, ALLFLAGS, 0,
  3903. 0,
  3904. FN_GenCallCFrag, FN_GenCallCFragSlow,
  3905. SynchLockSubFrag8)
  3906. DEF_INSTR(OP_SynchLockNeg32,
  3907. 0, ALLFLAGS, 0,
  3908. 0,
  3909. FN_GenCallCFrag, FN_GenCallCFragSlow,
  3910. SynchLockNegFrag32)
  3911. DEF_INSTR(OP_SynchLockNeg16,
  3912. 0, ALLFLAGS, 0,
  3913. OPFL_ADDR16,
  3914. FN_GenCallCFrag, FN_GenCallCFragSlow,
  3915. SynchLockNegFrag16)
  3916. DEF_INSTR(OP_SynchLockNeg8,
  3917. 0, ALLFLAGS, 0,
  3918. 0,
  3919. FN_GenCallCFrag, FN_GenCallCFragSlow,
  3920. SynchLockNegFrag8)
  3921. DEF_INSTR(OP_SynchLockInc32,
  3922. 0, FLAG_AUX|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
  3923. 0,
  3924. FN_GenCallCFrag, FN_GenCallCFragSlow,
  3925. SynchLockIncFrag32)
  3926. DEF_INSTR(OP_SynchLockInc16,
  3927. 0, FLAG_AUX|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
  3928. OPFL_ADDR16,
  3929. FN_GenCallCFrag, FN_GenCallCFragSlow,
  3930. SynchLockIncFrag16)
  3931. DEF_INSTR(OP_SynchLockInc8,
  3932. 0, FLAG_AUX|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
  3933. 0,
  3934. FN_GenCallCFrag, FN_GenCallCFragSlow,
  3935. SynchLockIncFrag8)
  3936. DEF_INSTR(OP_SynchLockDec32,
  3937. 0, FLAG_AUX|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
  3938. 0,
  3939. FN_GenCallCFrag, FN_GenCallCFragSlow,
  3940. SynchLockDecFrag32)
  3941. DEF_INSTR(OP_SynchLockDec16,
  3942. 0, FLAG_AUX|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
  3943. OPFL_ADDR16,
  3944. FN_GenCallCFrag, FN_GenCallCFragSlow,
  3945. SynchLockDecFrag16)
  3946. DEF_INSTR(OP_SynchLockDec8,
  3947. 0, FLAG_AUX|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
  3948. 0,
  3949. FN_GenCallCFrag, FN_GenCallCFragSlow,
  3950. SynchLockDecFrag8)
  3951. DEF_INSTR(OP_SynchLockAdc32,
  3952. FLAG_CF, ALLFLAGS, 0,
  3953. 0,
  3954. FN_GenCallCFrag, FN_GenCallCFragSlow,
  3955. SynchLockAdcFrag32)
  3956. DEF_INSTR(OP_SynchLockAdc16,
  3957. FLAG_CF, ALLFLAGS, 0,
  3958. OPFL_ADDR16,
  3959. FN_GenCallCFrag, FN_GenCallCFragSlow,
  3960. SynchLockAdcFrag16)
  3961. DEF_INSTR(OP_SynchLockAdc8,
  3962. FLAG_CF, ALLFLAGS, 0,
  3963. 0,
  3964. FN_GenCallCFrag, FN_GenCallCFragSlow,
  3965. SynchLockAdcFrag8)
  3966. DEF_INSTR(OP_SynchLockSbb32,
  3967. FLAG_CF, ALLFLAGS, 0,
  3968. 0,
  3969. FN_GenCallCFrag, FN_GenCallCFragSlow,
  3970. SynchLockSbbFrag32)
  3971. DEF_INSTR(OP_SynchLockSbb16,
  3972. FLAG_CF, ALLFLAGS, 0,
  3973. OPFL_ADDR16,
  3974. FN_GenCallCFrag, FN_GenCallCFragSlow,
  3975. SynchLockSbbFrag16)
  3976. DEF_INSTR(OP_SynchLockSbb8,
  3977. FLAG_CF, ALLFLAGS, 0,
  3978. 0,
  3979. FN_GenCallCFrag, FN_GenCallCFragSlow,
  3980. SynchLockSbbFrag8)
  3981. DEF_INSTR(OP_SynchLockOr32,
  3982. 0, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
  3983. 0,
  3984. FN_GenCallCFrag, FN_GenCallCFragSlow,
  3985. SynchLockOrFrag32)
  3986. DEF_INSTR(OP_SynchLockOr16,
  3987. 0, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
  3988. OPFL_ADDR16,
  3989. FN_GenCallCFrag, FN_GenCallCFragSlow,
  3990. SynchLockOrFrag16)
  3991. DEF_INSTR(OP_SynchLockOr8,
  3992. 0, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
  3993. 0,
  3994. FN_GenCallCFrag, FN_GenCallCFragSlow,
  3995. SynchLockOrFrag8)
  3996. DEF_INSTR(OP_SynchLockAnd32,
  3997. 0, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
  3998. 0,
  3999. FN_GenCallCFrag, FN_GenCallCFragSlow,
  4000. SynchLockAndFrag32)
  4001. DEF_INSTR(OP_SynchLockAnd16,
  4002. 0, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
  4003. OPFL_ADDR16,
  4004. FN_GenCallCFrag, FN_GenCallCFragSlow,
  4005. SynchLockAndFrag16)
  4006. DEF_INSTR(OP_SynchLockAnd8,
  4007. 0, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
  4008. 0,
  4009. FN_GenCallCFrag, FN_GenCallCFragSlow,
  4010. SynchLockAndFrag8)
  4011. DEF_INSTR(OP_SynchLockXor32,
  4012. 0, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
  4013. 0,
  4014. FN_GenCallCFrag, FN_GenCallCFragSlow,
  4015. SynchLockXorFrag32)
  4016. DEF_INSTR(OP_SynchLockXor16,
  4017. 0, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
  4018. OPFL_ADDR16,
  4019. FN_GenCallCFrag, FN_GenCallCFragSlow,
  4020. SynchLockXorFrag16)
  4021. DEF_INSTR(OP_SynchLockXor8,
  4022. 0, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
  4023. 0,
  4024. FN_GenCallCFrag, FN_GenCallCFragSlow,
  4025. SynchLockXorFrag8)
  4026. DEF_INSTR(OP_SynchLockNot32,
  4027. 0, 0, 0,
  4028. 0,
  4029. FN_GenCallCFrag, FN_GenCallCFragSlow,
  4030. SynchLockNotFrag32)
  4031. DEF_INSTR(OP_SynchLockNot16,
  4032. 0, 0, 0,
  4033. OPFL_ADDR16,
  4034. FN_GenCallCFrag, FN_GenCallCFragSlow,
  4035. SynchLockNotFrag16)
  4036. DEF_INSTR(OP_SynchLockNot8,
  4037. 0, 0, 0,
  4038. 0,
  4039. FN_GenCallCFrag, FN_GenCallCFragSlow,
  4040. SynchLockNotFrag8)
  4041. DEF_INSTR(OP_SynchLockBtsMem32,
  4042. 0, FLAG_CF, 0,
  4043. 0,
  4044. FN_GenCallCFrag, FN_GenCallCFragSlow,
  4045. SynchLockBtsMemFrag32)
  4046. DEF_INSTR(OP_SynchLockBtsMem16,
  4047. 0, FLAG_CF, 0,
  4048. OPFL_ADDR16,
  4049. FN_GenCallCFrag, FN_GenCallCFragSlow,
  4050. SynchLockBtsMemFrag16)
  4051. DEF_INSTR(OP_SynchLockBtrMem32,
  4052. 0, FLAG_CF, 0,
  4053. 0,
  4054. FN_GenCallCFrag, FN_GenCallCFragSlow,
  4055. SynchLockBtrMemFrag32)
  4056. DEF_INSTR(OP_SynchLockBtrMem16,
  4057. 0, FLAG_CF, 0,
  4058. OPFL_ADDR16,
  4059. FN_GenCallCFrag, FN_GenCallCFragSlow,
  4060. SynchLockBtrMemFrag16)
  4061. DEF_INSTR(OP_SynchLockBtcMem32,
  4062. 0, FLAG_CF, 0,
  4063. 0,
  4064. FN_GenCallCFrag, FN_GenCallCFragSlow,
  4065. SynchLockBtcMemFrag32)
  4066. DEF_INSTR(OP_SynchLockBtcMem16,
  4067. 0, FLAG_CF, 0,
  4068. OPFL_ADDR16,
  4069. FN_GenCallCFrag, FN_GenCallCFragSlow,
  4070. SynchLockBtcMemFrag16)
  4071. DEF_INSTR(OP_SynchLockBtsReg32,
  4072. 0, FLAG_CF, 0,
  4073. 0,
  4074. FN_GenCallCFrag, FN_GenCallCFragSlow,
  4075. SynchLockBtsRegFrag32)
  4076. DEF_INSTR(OP_SynchLockBtsReg16,
  4077. 0, FLAG_CF, 0,
  4078. OPFL_ADDR16,
  4079. FN_GenCallCFrag, FN_GenCallCFragSlow,
  4080. SynchLockBtsRegFrag16)
  4081. DEF_INSTR(OP_SynchLockBtrReg32,
  4082. 0, FLAG_CF, 0,
  4083. 0,
  4084. FN_GenCallCFrag, FN_GenCallCFragSlow,
  4085. SynchLockBtrRegFrag32)
  4086. DEF_INSTR(OP_SynchLockBtrReg16,
  4087. 0, FLAG_CF, 0,
  4088. OPFL_ADDR16,
  4089. FN_GenCallCFrag, FN_GenCallCFragSlow,
  4090. SynchLockBtrRegFrag16)
  4091. DEF_INSTR(OP_SynchLockBtcReg32,
  4092. 0, FLAG_CF, 0,
  4093. 0,
  4094. FN_GenCallCFrag, FN_GenCallCFragSlow,
  4095. SynchLockBtcRegFrag32)
  4096. DEF_INSTR(OP_SynchLockBtcReg16,
  4097. 0, FLAG_CF, 0,
  4098. OPFL_ADDR16,
  4099. FN_GenCallCFrag, FN_GenCallCFragSlow,
  4100. SynchLockBtcRegFrag16)
  4101. DEF_INSTR(OP_SynchLockXchg32,
  4102. 0, 0, 0,
  4103. 0,
  4104. FN_GenCallCFrag, FN_GenCallCFragSlow,
  4105. SynchLockXchgFrag32)
  4106. DEF_INSTR(OP_SynchLockXchg16,
  4107. 0, 0, 0,
  4108. OPFL_ADDR16,
  4109. FN_GenCallCFrag, FN_GenCallCFragSlow,
  4110. SynchLockXchgFrag16)
  4111. DEF_INSTR(OP_SynchLockXchg8,
  4112. 0, 0, 0,
  4113. 0,
  4114. FN_GenCallCFrag, FN_GenCallCFragSlow,
  4115. SynchLockXchgFrag8)
  4116. DEF_INSTR(OP_SynchLockXadd32,
  4117. 0, ALLFLAGS, 0,
  4118. 0,
  4119. FN_GenCallCFrag, FN_GenCallCFragSlow,
  4120. SynchLockXaddFrag32)
  4121. DEF_INSTR(OP_SynchLockXadd16,
  4122. 0, ALLFLAGS, 0,
  4123. OPFL_ADDR16,
  4124. FN_GenCallCFrag, FN_GenCallCFragSlow,
  4125. SynchLockXaddFrag16)
  4126. DEF_INSTR(OP_SynchLockXadd8,
  4127. 0, ALLFLAGS, 0,
  4128. 0,
  4129. FN_GenCallCFrag, FN_GenCallCFragSlow,
  4130. SynchLockXaddFrag8)
  4131. DEF_INSTR(OP_SynchLockCmpXchg32,
  4132. 0, ALLFLAGS, REGEAX,
  4133. 0,
  4134. FN_GenCallCFrag, FN_GenCallCFragSlow,
  4135. SynchLockCmpXchgFrag32)
  4136. DEF_INSTR(OP_SynchLockCmpXchg16,
  4137. 0, ALLFLAGS, REGAX,
  4138. OPFL_ADDR16,
  4139. FN_GenCallCFrag, FN_GenCallCFragSlow,
  4140. SynchLockCmpXchgFrag16)
  4141. DEF_INSTR(OP_SynchLockCmpXchg8,
  4142. 0, ALLFLAGS, REGAL,
  4143. 0,
  4144. FN_GenCallCFrag, FN_GenCallCFragSlow,
  4145. SynchLockCmpXchgFrag8)
  4146. // Next 2 must be consecutive
  4147. DEF_INSTR(OP_OPT_SetupStack,
  4148. 0, ALLFLAGS, REGEBP|REGESP,
  4149. OPFL_HASNOFLAGS,
  4150. FN_GenCallCFrag, FN_GenCallCFragSlow,
  4151. OPT_SetupStackFrag)
  4152. DEF_INSTR(OP_OPT_SetupStackNoFlags,
  4153. 0, ALLFLAGS, REGEBP|REGESP,
  4154. 0,
  4155. FN_GenCallCFrag, FN_GenCallCFragSlow,
  4156. OPT_SetupStackNoFlagsFrag)
  4157. DEF_INSTR(OP_OPT_PushEbxEsiEdi,
  4158. 0, 0, REGESP,
  4159. 0,
  4160. FN_GenCallCFrag, FN_GenCallCFragSlow,
  4161. OPT_PushEbxEsiEdiFrag)
  4162. DEF_INSTR(OP_OPT_PopEdiEsiEbx,
  4163. 0, 0, REGESP|REGEBX|REGESI|REGEDI,
  4164. 0,
  4165. FN_GenCallCFrag, FN_GenCallCFragSlow,
  4166. OPT_PopEdiEsiEbxFrag)
  4167. // Next 2 must be consecutive
  4168. DEF_INSTR(OP_OPT_ZERO32,
  4169. 0, ALLFLAGS, 0,
  4170. OPFL_HASNOFLAGS,
  4171. FN_GenCallCFrag, FN_GenCallCFragSlow,
  4172. OPT_ZEROFrag32)
  4173. DEF_INSTR(OP_OPT_ZERONoFlags32,
  4174. 0, ALLFLAGS, 0,
  4175. 0,
  4176. FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
  4177. OPT_ZERONoFlagsFrag32)
  4178. DEF_INSTR(OP_OPT_FastTest32,
  4179. 0, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
  4180. 0,
  4181. FN_GenCallCFrag, FN_GenCallCFragSlow,
  4182. OPT_FastTestFrag32)
  4183. DEF_INSTR(OP_OPT_FastTest16,
  4184. 0, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
  4185. OPFL_ADDR16,
  4186. FN_GenCallCFrag, FN_GenCallCFragSlow,
  4187. OPT_FastTestFrag16)
  4188. DEF_INSTR(OP_OPT_FastTest8,
  4189. 0, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
  4190. 0,
  4191. FN_GenCallCFrag, FN_GenCallCFragSlow,
  4192. OPT_FastTestFrag8)
  4193. // Next 2 must be consecutive
  4194. DEF_INSTR(OP_OPT_CmpSbb32,
  4195. 0, ALLFLAGS, 0,
  4196. OPFL_HASNOFLAGS,
  4197. FN_GenCallCFrag, FN_GenCallCFragSlow,
  4198. OPT_CmpSbbFrag32)
  4199. DEF_INSTR(OP_OPT_CmpSbbNoFlags32,
  4200. 0, ALLFLAGS, 0,
  4201. 0,
  4202. FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
  4203. OPT_CmpSbbNoFlagsFrag32)
  4204. // Next 2 must be consecutive
  4205. DEF_INSTR(OP_OPT_CmpSbbNeg32,
  4206. 0, ALLFLAGS, 0,
  4207. OPFL_HASNOFLAGS,
  4208. FN_GenCallCFrag, FN_GenCallCFragSlow,
  4209. OPT_CmpSbbNegFrag32)
  4210. DEF_INSTR(OP_OPT_CmpSbbNegNoFlags32,
  4211. 0, ALLFLAGS, 0,
  4212. 0,
  4213. FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
  4214. OPT_CmpSbbNegNoFlagsFrag32)
  4215. DEF_INSTR(OP_OPT_Push232,
  4216. 0, 0, REGESP,
  4217. 0,
  4218. FN_GenCallCFrag, FN_GenCallCFragSlow,
  4219. OPT_Push2Frag32)
  4220. DEF_INSTR(OP_OPT_Pop232,
  4221. 0, 0, REGESP,
  4222. 0,
  4223. FN_GenCallCFrag, FN_GenCallCFragSlow,
  4224. OPT_Pop2Frag32)
  4225. // Next 2 must be consecutive
  4226. DEF_INSTR(OP_OPT_CwdIdiv32,
  4227. 0, 0, REGEAX|REGEDX,
  4228. OPFL_ALIGN,
  4229. FN_GenCallCFrag, FN_GenCallCFragSlow,
  4230. OPT_CwdIdivFrag32)
  4231. DEF_INSTR(OP_OPT_CwdIdiv32A,
  4232. 0, 0, REGEAX|REGEDX,
  4233. 0,
  4234. FN_GenCallCFrag, FN_GenCallCFragSlow,
  4235. OPT_CwdIdivFrag32A)
  4236. // Next 2 must be consecutive
  4237. DEF_INSTR(OP_OPT_CwdIdiv16,
  4238. 0, 0, REGAX|REGDX,
  4239. OPFL_ALIGN|OPFL_ADDR16,
  4240. FN_GenCallCFrag, FN_GenCallCFragSlow,
  4241. OPT_CwdIdivFrag16)
  4242. DEF_INSTR(OP_OPT_CwdIdiv16A,
  4243. 0, 0, REGAX|REGDX,
  4244. 0,
  4245. FN_GenCallCFrag, FN_GenCallCFragSlow,
  4246. OPT_CwdIdivFrag16A)
  4247. DEF_INSTR(OP_OPT_FNSTSWAxSahf,
  4248. 0, FLAG_CF|FLAG_PF|FLAG_AUX|FLAG_ZF|FLAG_SF, REGAX,
  4249. 0,
  4250. FN_GenCallCFrag, FN_GenCallCFragSlow,
  4251. OPT_FNSTSWAxSahf)
  4252. DEF_INSTR(OP_OPT_FSTP_ST0,
  4253. 0, 0, 0,
  4254. 0,
  4255. FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
  4256. OPT_FSTP_ST0)
  4257. DEF_INSTR(OP_Rdtsc,
  4258. 0, 0, 0,
  4259. 0,
  4260. FN_GenCallCFrag, FN_GenCallCFragSlow,
  4261. Rdtsc)
  4262. // Undefine DEF_INSTR so this file can be included multiple times
  4263. #undef DEF_INSTR