fisk 2.1.0 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1245) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ci.yml +35 -0
  3. data/CODE_OF_CONDUCT.md +78 -0
  4. data/Gemfile +1 -2
  5. data/Rakefile +4 -2
  6. data/bin/build-machine.rb +14 -0
  7. data/bin/instruction.rb.erb +29 -56
  8. data/fisk.gemspec +5 -0
  9. data/lib/fisk.rb +269 -71
  10. data/lib/fisk/encoding.rb +67 -5
  11. data/lib/fisk/errors.rb +5 -0
  12. data/lib/fisk/instructions/adc.rb +505 -539
  13. data/lib/fisk/instructions/adcx.rb +74 -78
  14. data/lib/fisk/instructions/add.rb +505 -539
  15. data/lib/fisk/instructions/addpd.rb +36 -38
  16. data/lib/fisk/instructions/addps.rb +34 -36
  17. data/lib/fisk/instructions/addsd.rb +36 -38
  18. data/lib/fisk/instructions/addss.rb +36 -38
  19. data/lib/fisk/instructions/addsubpd.rb +36 -38
  20. data/lib/fisk/instructions/addsubps.rb +36 -38
  21. data/lib/fisk/instructions/adox.rb +74 -78
  22. data/lib/fisk/instructions/aesdec.rb +38 -40
  23. data/lib/fisk/instructions/aesdeclast.rb +38 -40
  24. data/lib/fisk/instructions/aesenc.rb +38 -40
  25. data/lib/fisk/instructions/aesenclast.rb +38 -40
  26. data/lib/fisk/instructions/aesimc.rb +38 -40
  27. data/lib/fisk/instructions/aeskeygenassist.rb +42 -44
  28. data/lib/fisk/instructions/and.rb +505 -539
  29. data/lib/fisk/instructions/andn.rb +62 -66
  30. data/lib/fisk/instructions/andnpd.rb +36 -38
  31. data/lib/fisk/instructions/andnps.rb +34 -36
  32. data/lib/fisk/instructions/andpd.rb +36 -38
  33. data/lib/fisk/instructions/andps.rb +34 -36
  34. data/lib/fisk/instructions/bextr.rb +126 -134
  35. data/lib/fisk/instructions/blcfill.rb +58 -62
  36. data/lib/fisk/instructions/blci.rb +58 -62
  37. data/lib/fisk/instructions/blcic.rb +58 -62
  38. data/lib/fisk/instructions/blcmsk.rb +58 -62
  39. data/lib/fisk/instructions/blcs.rb +58 -62
  40. data/lib/fisk/instructions/blendpd.rb +42 -44
  41. data/lib/fisk/instructions/blendps.rb +42 -44
  42. data/lib/fisk/instructions/blendvpd.rb +40 -42
  43. data/lib/fisk/instructions/blendvps.rb +40 -42
  44. data/lib/fisk/instructions/blsfill.rb +58 -62
  45. data/lib/fisk/instructions/blsi.rb +58 -62
  46. data/lib/fisk/instructions/blsic.rb +58 -62
  47. data/lib/fisk/instructions/blsmsk.rb +58 -62
  48. data/lib/fisk/instructions/blsr.rb +58 -62
  49. data/lib/fisk/instructions/bsf.rb +100 -106
  50. data/lib/fisk/instructions/bsr.rb +100 -106
  51. data/lib/fisk/instructions/bswap.rb +28 -30
  52. data/lib/fisk/instructions/bt.rb +204 -216
  53. data/lib/fisk/instructions/btc.rb +204 -216
  54. data/lib/fisk/instructions/btr.rb +204 -216
  55. data/lib/fisk/instructions/bts.rb +204 -216
  56. data/lib/fisk/instructions/bzhi.rb +62 -66
  57. data/lib/fisk/instructions/call.rb +41 -44
  58. data/lib/fisk/instructions/cbw.rb +12 -13
  59. data/lib/fisk/instructions/cdq.rb +11 -12
  60. data/lib/fisk/instructions/cdqe.rb +13 -14
  61. data/lib/fisk/instructions/clc.rb +11 -12
  62. data/lib/fisk/instructions/cld.rb +11 -12
  63. data/lib/fisk/instructions/clflush.rb +17 -18
  64. data/lib/fisk/instructions/clflushopt.rb +18 -19
  65. data/lib/fisk/instructions/clwb.rb +18 -19
  66. data/lib/fisk/instructions/clzero.rb +13 -14
  67. data/lib/fisk/instructions/cmc.rb +11 -12
  68. data/lib/fisk/instructions/cmova.rb +100 -106
  69. data/lib/fisk/instructions/cmovae.rb +100 -106
  70. data/lib/fisk/instructions/cmovb.rb +100 -106
  71. data/lib/fisk/instructions/cmovbe.rb +100 -106
  72. data/lib/fisk/instructions/cmovc.rb +100 -106
  73. data/lib/fisk/instructions/cmove.rb +100 -106
  74. data/lib/fisk/instructions/cmovg.rb +100 -106
  75. data/lib/fisk/instructions/cmovge.rb +100 -106
  76. data/lib/fisk/instructions/cmovl.rb +100 -106
  77. data/lib/fisk/instructions/cmovle.rb +100 -106
  78. data/lib/fisk/instructions/cmovna.rb +100 -106
  79. data/lib/fisk/instructions/cmovnae.rb +100 -106
  80. data/lib/fisk/instructions/cmovnb.rb +100 -106
  81. data/lib/fisk/instructions/cmovnbe.rb +100 -106
  82. data/lib/fisk/instructions/cmovnc.rb +100 -106
  83. data/lib/fisk/instructions/cmovne.rb +100 -106
  84. data/lib/fisk/instructions/cmovng.rb +100 -106
  85. data/lib/fisk/instructions/cmovnge.rb +100 -106
  86. data/lib/fisk/instructions/cmovnl.rb +100 -106
  87. data/lib/fisk/instructions/cmovnle.rb +100 -106
  88. data/lib/fisk/instructions/cmovno.rb +100 -106
  89. data/lib/fisk/instructions/cmovnp.rb +100 -106
  90. data/lib/fisk/instructions/cmovns.rb +100 -106
  91. data/lib/fisk/instructions/cmovnz.rb +100 -106
  92. data/lib/fisk/instructions/cmovo.rb +100 -106
  93. data/lib/fisk/instructions/cmovp.rb +100 -106
  94. data/lib/fisk/instructions/cmovpe.rb +100 -106
  95. data/lib/fisk/instructions/cmovpo.rb +100 -106
  96. data/lib/fisk/instructions/cmovs.rb +100 -106
  97. data/lib/fisk/instructions/cmovz.rb +100 -106
  98. data/lib/fisk/instructions/cmp.rb +505 -539
  99. data/lib/fisk/instructions/cmppd.rb +40 -42
  100. data/lib/fisk/instructions/cmpps.rb +38 -40
  101. data/lib/fisk/instructions/cmpsd.rb +40 -42
  102. data/lib/fisk/instructions/cmpss.rb +40 -42
  103. data/lib/fisk/instructions/cmpxchg.rb +132 -140
  104. data/lib/fisk/instructions/cmpxchg16b.rb +17 -18
  105. data/lib/fisk/instructions/cmpxchg8b.rb +17 -18
  106. data/lib/fisk/instructions/comisd.rb +36 -38
  107. data/lib/fisk/instructions/comiss.rb +34 -36
  108. data/lib/fisk/instructions/cpuid.rb +12 -13
  109. data/lib/fisk/instructions/cqo.rb +13 -14
  110. data/lib/fisk/instructions/crc32.rb +184 -194
  111. data/lib/fisk/instructions/cvtdq2pd.rb +36 -38
  112. data/lib/fisk/instructions/cvtdq2ps.rb +34 -36
  113. data/lib/fisk/instructions/cvtpd2dq.rb +36 -38
  114. data/lib/fisk/instructions/cvtpd2pi.rb +36 -38
  115. data/lib/fisk/instructions/cvtpd2ps.rb +36 -38
  116. data/lib/fisk/instructions/cvtpi2pd.rb +36 -38
  117. data/lib/fisk/instructions/cvtpi2ps.rb +34 -36
  118. data/lib/fisk/instructions/cvtps2dq.rb +36 -38
  119. data/lib/fisk/instructions/cvtps2pd.rb +34 -36
  120. data/lib/fisk/instructions/cvtps2pi.rb +34 -36
  121. data/lib/fisk/instructions/cvtsd2si.rb +70 -74
  122. data/lib/fisk/instructions/cvtsd2ss.rb +36 -38
  123. data/lib/fisk/instructions/cvtsi2sd.rb +70 -74
  124. data/lib/fisk/instructions/cvtsi2ss.rb +70 -74
  125. data/lib/fisk/instructions/cvtss2sd.rb +36 -38
  126. data/lib/fisk/instructions/cvtss2si.rb +70 -74
  127. data/lib/fisk/instructions/cvttpd2dq.rb +36 -38
  128. data/lib/fisk/instructions/cvttpd2pi.rb +36 -38
  129. data/lib/fisk/instructions/cvttps2dq.rb +36 -38
  130. data/lib/fisk/instructions/cvttps2pi.rb +34 -36
  131. data/lib/fisk/instructions/cvttsd2si.rb +70 -74
  132. data/lib/fisk/instructions/cvttss2si.rb +70 -74
  133. data/lib/fisk/instructions/cwd.rb +12 -13
  134. data/lib/fisk/instructions/cwde.rb +11 -12
  135. data/lib/fisk/instructions/dec.rb +116 -124
  136. data/lib/fisk/instructions/div.rb +116 -124
  137. data/lib/fisk/instructions/divpd.rb +36 -38
  138. data/lib/fisk/instructions/divps.rb +34 -36
  139. data/lib/fisk/instructions/divsd.rb +36 -38
  140. data/lib/fisk/instructions/divss.rb +36 -38
  141. data/lib/fisk/instructions/dppd.rb +42 -44
  142. data/lib/fisk/instructions/dpps.rb +42 -44
  143. data/lib/fisk/instructions/emms.rb +12 -13
  144. data/lib/fisk/instructions/extractps.rb +42 -44
  145. data/lib/fisk/instructions/extrq.rb +39 -41
  146. data/lib/fisk/instructions/femms.rb +12 -13
  147. data/lib/fisk/instructions/haddpd.rb +36 -38
  148. data/lib/fisk/instructions/haddps.rb +36 -38
  149. data/lib/fisk/instructions/hsubpd.rb +36 -38
  150. data/lib/fisk/instructions/hsubps.rb +36 -38
  151. data/lib/fisk/instructions/idiv.rb +116 -124
  152. data/lib/fisk/instructions/imul.rb +422 -448
  153. data/lib/fisk/instructions/inc.rb +116 -124
  154. data/lib/fisk/instructions/insertps.rb +42 -44
  155. data/lib/fisk/instructions/insertq.rb +40 -42
  156. data/lib/fisk/instructions/int.rb +23 -25
  157. data/lib/fisk/instructions/ja.rb +25 -27
  158. data/lib/fisk/instructions/jae.rb +25 -27
  159. data/lib/fisk/instructions/jb.rb +25 -27
  160. data/lib/fisk/instructions/jbe.rb +25 -27
  161. data/lib/fisk/instructions/jc.rb +25 -27
  162. data/lib/fisk/instructions/je.rb +25 -27
  163. data/lib/fisk/instructions/jecxz.rb +13 -14
  164. data/lib/fisk/instructions/jg.rb +25 -27
  165. data/lib/fisk/instructions/jge.rb +25 -27
  166. data/lib/fisk/instructions/jl.rb +25 -27
  167. data/lib/fisk/instructions/jle.rb +25 -27
  168. data/lib/fisk/instructions/jmp.rb +52 -56
  169. data/lib/fisk/instructions/jna.rb +25 -27
  170. data/lib/fisk/instructions/jnae.rb +25 -27
  171. data/lib/fisk/instructions/jnb.rb +25 -27
  172. data/lib/fisk/instructions/jnbe.rb +25 -27
  173. data/lib/fisk/instructions/jnc.rb +25 -27
  174. data/lib/fisk/instructions/jne.rb +25 -27
  175. data/lib/fisk/instructions/jng.rb +25 -27
  176. data/lib/fisk/instructions/jnge.rb +25 -27
  177. data/lib/fisk/instructions/jnl.rb +25 -27
  178. data/lib/fisk/instructions/jnle.rb +25 -27
  179. data/lib/fisk/instructions/jno.rb +25 -27
  180. data/lib/fisk/instructions/jnp.rb +25 -27
  181. data/lib/fisk/instructions/jns.rb +25 -27
  182. data/lib/fisk/instructions/jnz.rb +25 -27
  183. data/lib/fisk/instructions/jo.rb +25 -27
  184. data/lib/fisk/instructions/jp.rb +25 -27
  185. data/lib/fisk/instructions/jpe.rb +25 -27
  186. data/lib/fisk/instructions/jpo.rb +25 -27
  187. data/lib/fisk/instructions/jrcxz.rb +13 -14
  188. data/lib/fisk/instructions/js.rb +25 -27
  189. data/lib/fisk/instructions/jz.rb +25 -27
  190. data/lib/fisk/instructions/kaddb.rb +17 -18
  191. data/lib/fisk/instructions/kaddd.rb +17 -18
  192. data/lib/fisk/instructions/kaddq.rb +17 -18
  193. data/lib/fisk/instructions/kaddw.rb +17 -18
  194. data/lib/fisk/instructions/kandb.rb +17 -18
  195. data/lib/fisk/instructions/kandd.rb +17 -18
  196. data/lib/fisk/instructions/kandnb.rb +17 -18
  197. data/lib/fisk/instructions/kandnd.rb +17 -18
  198. data/lib/fisk/instructions/kandnq.rb +17 -18
  199. data/lib/fisk/instructions/kandnw.rb +17 -18
  200. data/lib/fisk/instructions/kandq.rb +17 -18
  201. data/lib/fisk/instructions/kandw.rb +17 -18
  202. data/lib/fisk/instructions/kmovb.rb +72 -77
  203. data/lib/fisk/instructions/kmovd.rb +72 -77
  204. data/lib/fisk/instructions/kmovq.rb +72 -77
  205. data/lib/fisk/instructions/kmovw.rb +72 -77
  206. data/lib/fisk/instructions/knotb.rb +16 -17
  207. data/lib/fisk/instructions/knotd.rb +16 -17
  208. data/lib/fisk/instructions/knotq.rb +16 -17
  209. data/lib/fisk/instructions/knotw.rb +16 -17
  210. data/lib/fisk/instructions/korb.rb +17 -18
  211. data/lib/fisk/instructions/kord.rb +17 -18
  212. data/lib/fisk/instructions/korq.rb +17 -18
  213. data/lib/fisk/instructions/kortestb.rb +16 -17
  214. data/lib/fisk/instructions/kortestd.rb +16 -17
  215. data/lib/fisk/instructions/kortestq.rb +16 -17
  216. data/lib/fisk/instructions/kortestw.rb +16 -17
  217. data/lib/fisk/instructions/korw.rb +17 -18
  218. data/lib/fisk/instructions/kshiftlb.rb +18 -19
  219. data/lib/fisk/instructions/kshiftld.rb +18 -19
  220. data/lib/fisk/instructions/kshiftlq.rb +18 -19
  221. data/lib/fisk/instructions/kshiftlw.rb +18 -19
  222. data/lib/fisk/instructions/kshiftrb.rb +18 -19
  223. data/lib/fisk/instructions/kshiftrd.rb +18 -19
  224. data/lib/fisk/instructions/kshiftrq.rb +18 -19
  225. data/lib/fisk/instructions/kshiftrw.rb +18 -19
  226. data/lib/fisk/instructions/ktestb.rb +16 -17
  227. data/lib/fisk/instructions/ktestd.rb +16 -17
  228. data/lib/fisk/instructions/ktestq.rb +16 -17
  229. data/lib/fisk/instructions/ktestw.rb +16 -17
  230. data/lib/fisk/instructions/kunpckbw.rb +17 -18
  231. data/lib/fisk/instructions/kunpckdq.rb +17 -18
  232. data/lib/fisk/instructions/kunpckwd.rb +17 -18
  233. data/lib/fisk/instructions/kxnorb.rb +17 -18
  234. data/lib/fisk/instructions/kxnord.rb +17 -18
  235. data/lib/fisk/instructions/kxnorq.rb +17 -18
  236. data/lib/fisk/instructions/kxnorw.rb +17 -18
  237. data/lib/fisk/instructions/kxorb.rb +17 -18
  238. data/lib/fisk/instructions/kxord.rb +17 -18
  239. data/lib/fisk/instructions/kxorq.rb +17 -18
  240. data/lib/fisk/instructions/kxorw.rb +17 -18
  241. data/lib/fisk/instructions/lddqu.rb +19 -20
  242. data/lib/fisk/instructions/ldmxcsr.rb +17 -18
  243. data/lib/fisk/instructions/lea.rb +48 -51
  244. data/lib/fisk/instructions/lfence.rb +13 -14
  245. data/lib/fisk/instructions/lzcnt.rb +106 -112
  246. data/lib/fisk/instructions/maskmovdqu.rb +19 -20
  247. data/lib/fisk/instructions/maskmovq.rb +18 -19
  248. data/lib/fisk/instructions/maxpd.rb +36 -38
  249. data/lib/fisk/instructions/maxps.rb +34 -36
  250. data/lib/fisk/instructions/maxsd.rb +36 -38
  251. data/lib/fisk/instructions/maxss.rb +36 -38
  252. data/lib/fisk/instructions/mfence.rb +13 -14
  253. data/lib/fisk/instructions/minpd.rb +36 -38
  254. data/lib/fisk/instructions/minps.rb +34 -36
  255. data/lib/fisk/instructions/minsd.rb +36 -38
  256. data/lib/fisk/instructions/minss.rb +36 -38
  257. data/lib/fisk/instructions/monitor.rb +13 -14
  258. data/lib/fisk/instructions/monitorx.rb +13 -14
  259. data/lib/fisk/instructions/mov.rb +450 -482
  260. data/lib/fisk/instructions/movapd.rb +65 -69
  261. data/lib/fisk/instructions/movaps.rb +61 -65
  262. data/lib/fisk/instructions/movbe.rb +106 -112
  263. data/lib/fisk/instructions/movd.rb +134 -142
  264. data/lib/fisk/instructions/movddup.rb +36 -38
  265. data/lib/fisk/instructions/movdq2q.rb +19 -20
  266. data/lib/fisk/instructions/movdqa.rb +65 -69
  267. data/lib/fisk/instructions/movdqu.rb +65 -69
  268. data/lib/fisk/instructions/movhlps.rb +18 -19
  269. data/lib/fisk/instructions/movhpd.rb +36 -38
  270. data/lib/fisk/instructions/movhps.rb +34 -36
  271. data/lib/fisk/instructions/movlhps.rb +18 -19
  272. data/lib/fisk/instructions/movlpd.rb +36 -38
  273. data/lib/fisk/instructions/movlps.rb +34 -36
  274. data/lib/fisk/instructions/movmskpd.rb +19 -20
  275. data/lib/fisk/instructions/movmskps.rb +18 -19
  276. data/lib/fisk/instructions/movntdq.rb +19 -20
  277. data/lib/fisk/instructions/movntdqa.rb +20 -21
  278. data/lib/fisk/instructions/movnti.rb +34 -36
  279. data/lib/fisk/instructions/movntpd.rb +19 -20
  280. data/lib/fisk/instructions/movntps.rb +18 -19
  281. data/lib/fisk/instructions/movntq.rb +18 -19
  282. data/lib/fisk/instructions/movntsd.rb +19 -20
  283. data/lib/fisk/instructions/movntss.rb +19 -20
  284. data/lib/fisk/instructions/movq.rb +236 -252
  285. data/lib/fisk/instructions/movq2dq.rb +19 -20
  286. data/lib/fisk/instructions/movsd.rb +65 -69
  287. data/lib/fisk/instructions/movshdup.rb +36 -38
  288. data/lib/fisk/instructions/movsldup.rb +36 -38
  289. data/lib/fisk/instructions/movss.rb +65 -69
  290. data/lib/fisk/instructions/movsx.rb +164 -174
  291. data/lib/fisk/instructions/movsxd.rb +32 -34
  292. data/lib/fisk/instructions/movupd.rb +65 -69
  293. data/lib/fisk/instructions/movups.rb +61 -65
  294. data/lib/fisk/instructions/movzx.rb +164 -174
  295. data/lib/fisk/instructions/mpsadbw.rb +42 -44
  296. data/lib/fisk/instructions/mul.rb +116 -124
  297. data/lib/fisk/instructions/mulpd.rb +36 -38
  298. data/lib/fisk/instructions/mulps.rb +34 -36
  299. data/lib/fisk/instructions/mulsd.rb +36 -38
  300. data/lib/fisk/instructions/mulss.rb +36 -38
  301. data/lib/fisk/instructions/mulx.rb +62 -66
  302. data/lib/fisk/instructions/mwait.rb +13 -14
  303. data/lib/fisk/instructions/mwaitx.rb +13 -14
  304. data/lib/fisk/instructions/neg.rb +116 -124
  305. data/lib/fisk/instructions/nop.rb +11 -12
  306. data/lib/fisk/instructions/not.rb +116 -124
  307. data/lib/fisk/instructions/or.rb +505 -539
  308. data/lib/fisk/instructions/orpd.rb +36 -38
  309. data/lib/fisk/instructions/orps.rb +34 -36
  310. data/lib/fisk/instructions/pabsb.rb +72 -76
  311. data/lib/fisk/instructions/pabsd.rb +72 -76
  312. data/lib/fisk/instructions/pabsw.rb +72 -76
  313. data/lib/fisk/instructions/packssdw.rb +68 -72
  314. data/lib/fisk/instructions/packsswb.rb +68 -72
  315. data/lib/fisk/instructions/packusdw.rb +38 -40
  316. data/lib/fisk/instructions/packuswb.rb +68 -72
  317. data/lib/fisk/instructions/paddb.rb +68 -72
  318. data/lib/fisk/instructions/paddd.rb +68 -72
  319. data/lib/fisk/instructions/paddq.rb +68 -72
  320. data/lib/fisk/instructions/paddsb.rb +68 -72
  321. data/lib/fisk/instructions/paddsw.rb +68 -72
  322. data/lib/fisk/instructions/paddusb.rb +68 -72
  323. data/lib/fisk/instructions/paddusw.rb +68 -72
  324. data/lib/fisk/instructions/paddw.rb +68 -72
  325. data/lib/fisk/instructions/palignr.rb +80 -84
  326. data/lib/fisk/instructions/pand.rb +68 -72
  327. data/lib/fisk/instructions/pandn.rb +68 -72
  328. data/lib/fisk/instructions/pause.rb +12 -13
  329. data/lib/fisk/instructions/pavgb.rb +68 -72
  330. data/lib/fisk/instructions/pavgusb.rb +36 -38
  331. data/lib/fisk/instructions/pavgw.rb +68 -72
  332. data/lib/fisk/instructions/pblendvb.rb +40 -42
  333. data/lib/fisk/instructions/pblendw.rb +42 -44
  334. data/lib/fisk/instructions/pclmulqdq.rb +42 -44
  335. data/lib/fisk/instructions/pcmpeqb.rb +68 -72
  336. data/lib/fisk/instructions/pcmpeqd.rb +68 -72
  337. data/lib/fisk/instructions/pcmpeqq.rb +38 -40
  338. data/lib/fisk/instructions/pcmpeqw.rb +68 -72
  339. data/lib/fisk/instructions/pcmpestri.rb +42 -44
  340. data/lib/fisk/instructions/pcmpestrm.rb +42 -44
  341. data/lib/fisk/instructions/pcmpgtb.rb +68 -72
  342. data/lib/fisk/instructions/pcmpgtd.rb +68 -72
  343. data/lib/fisk/instructions/pcmpgtq.rb +38 -40
  344. data/lib/fisk/instructions/pcmpgtw.rb +68 -72
  345. data/lib/fisk/instructions/pcmpistri.rb +42 -44
  346. data/lib/fisk/instructions/pcmpistrm.rb +42 -44
  347. data/lib/fisk/instructions/pdep.rb +62 -66
  348. data/lib/fisk/instructions/pext.rb +62 -66
  349. data/lib/fisk/instructions/pextrb.rb +42 -44
  350. data/lib/fisk/instructions/pextrd.rb +42 -44
  351. data/lib/fisk/instructions/pextrq.rb +42 -44
  352. data/lib/fisk/instructions/pextrw.rb +73 -77
  353. data/lib/fisk/instructions/pf2id.rb +36 -38
  354. data/lib/fisk/instructions/pf2iw.rb +36 -38
  355. data/lib/fisk/instructions/pfacc.rb +36 -38
  356. data/lib/fisk/instructions/pfadd.rb +36 -38
  357. data/lib/fisk/instructions/pfcmpeq.rb +36 -38
  358. data/lib/fisk/instructions/pfcmpge.rb +36 -38
  359. data/lib/fisk/instructions/pfcmpgt.rb +36 -38
  360. data/lib/fisk/instructions/pfmax.rb +36 -38
  361. data/lib/fisk/instructions/pfmin.rb +36 -38
  362. data/lib/fisk/instructions/pfmul.rb +36 -38
  363. data/lib/fisk/instructions/pfnacc.rb +36 -38
  364. data/lib/fisk/instructions/pfpnacc.rb +36 -38
  365. data/lib/fisk/instructions/pfrcp.rb +36 -38
  366. data/lib/fisk/instructions/pfrcpit1.rb +36 -38
  367. data/lib/fisk/instructions/pfrcpit2.rb +36 -38
  368. data/lib/fisk/instructions/pfrsqit1.rb +36 -38
  369. data/lib/fisk/instructions/pfrsqrt.rb +36 -38
  370. data/lib/fisk/instructions/pfsub.rb +36 -38
  371. data/lib/fisk/instructions/pfsubr.rb +36 -38
  372. data/lib/fisk/instructions/phaddd.rb +72 -76
  373. data/lib/fisk/instructions/phaddsw.rb +72 -76
  374. data/lib/fisk/instructions/phaddw.rb +72 -76
  375. data/lib/fisk/instructions/phminposuw.rb +38 -40
  376. data/lib/fisk/instructions/phsubd.rb +72 -76
  377. data/lib/fisk/instructions/phsubsw.rb +72 -76
  378. data/lib/fisk/instructions/phsubw.rb +72 -76
  379. data/lib/fisk/instructions/pi2fd.rb +36 -38
  380. data/lib/fisk/instructions/pi2fw.rb +36 -38
  381. data/lib/fisk/instructions/pinsrb.rb +42 -44
  382. data/lib/fisk/instructions/pinsrd.rb +42 -44
  383. data/lib/fisk/instructions/pinsrq.rb +42 -44
  384. data/lib/fisk/instructions/pinsrw.rb +76 -80
  385. data/lib/fisk/instructions/pmaddubsw.rb +72 -76
  386. data/lib/fisk/instructions/pmaddwd.rb +68 -72
  387. data/lib/fisk/instructions/pmaxsb.rb +38 -40
  388. data/lib/fisk/instructions/pmaxsd.rb +38 -40
  389. data/lib/fisk/instructions/pmaxsw.rb +68 -72
  390. data/lib/fisk/instructions/pmaxub.rb +68 -72
  391. data/lib/fisk/instructions/pmaxud.rb +38 -40
  392. data/lib/fisk/instructions/pmaxuw.rb +38 -40
  393. data/lib/fisk/instructions/pminsb.rb +38 -40
  394. data/lib/fisk/instructions/pminsd.rb +38 -40
  395. data/lib/fisk/instructions/pminsw.rb +68 -72
  396. data/lib/fisk/instructions/pminub.rb +68 -72
  397. data/lib/fisk/instructions/pminud.rb +38 -40
  398. data/lib/fisk/instructions/pminuw.rb +38 -40
  399. data/lib/fisk/instructions/pmovmskb.rb +35 -37
  400. data/lib/fisk/instructions/pmovsxbd.rb +38 -40
  401. data/lib/fisk/instructions/pmovsxbq.rb +38 -40
  402. data/lib/fisk/instructions/pmovsxbw.rb +38 -40
  403. data/lib/fisk/instructions/pmovsxdq.rb +38 -40
  404. data/lib/fisk/instructions/pmovsxwd.rb +38 -40
  405. data/lib/fisk/instructions/pmovsxwq.rb +38 -40
  406. data/lib/fisk/instructions/pmovzxbd.rb +38 -40
  407. data/lib/fisk/instructions/pmovzxbq.rb +38 -40
  408. data/lib/fisk/instructions/pmovzxbw.rb +38 -40
  409. data/lib/fisk/instructions/pmovzxdq.rb +38 -40
  410. data/lib/fisk/instructions/pmovzxwd.rb +38 -40
  411. data/lib/fisk/instructions/pmovzxwq.rb +38 -40
  412. data/lib/fisk/instructions/pmuldq.rb +38 -40
  413. data/lib/fisk/instructions/pmulhrsw.rb +72 -76
  414. data/lib/fisk/instructions/pmulhrw.rb +36 -38
  415. data/lib/fisk/instructions/pmulhuw.rb +68 -72
  416. data/lib/fisk/instructions/pmulhw.rb +68 -72
  417. data/lib/fisk/instructions/pmulld.rb +38 -40
  418. data/lib/fisk/instructions/pmullw.rb +68 -72
  419. data/lib/fisk/instructions/pmuludq.rb +68 -72
  420. data/lib/fisk/instructions/pop.rb +77 -83
  421. data/lib/fisk/instructions/popcnt.rb +106 -112
  422. data/lib/fisk/instructions/por.rb +68 -72
  423. data/lib/fisk/instructions/prefetch.rb +17 -18
  424. data/lib/fisk/instructions/prefetchnta.rb +17 -18
  425. data/lib/fisk/instructions/prefetcht0.rb +17 -18
  426. data/lib/fisk/instructions/prefetcht1.rb +17 -18
  427. data/lib/fisk/instructions/prefetcht2.rb +17 -18
  428. data/lib/fisk/instructions/prefetchw.rb +17 -18
  429. data/lib/fisk/instructions/prefetchwt1.rb +17 -18
  430. data/lib/fisk/instructions/psadbw.rb +68 -72
  431. data/lib/fisk/instructions/pshufb.rb +72 -76
  432. data/lib/fisk/instructions/pshufd.rb +40 -42
  433. data/lib/fisk/instructions/pshufhw.rb +40 -42
  434. data/lib/fisk/instructions/pshuflw.rb +40 -42
  435. data/lib/fisk/instructions/pshufw.rb +38 -40
  436. data/lib/fisk/instructions/psignb.rb +72 -76
  437. data/lib/fisk/instructions/psignd.rb +72 -76
  438. data/lib/fisk/instructions/psignw.rb +72 -76
  439. data/lib/fisk/instructions/pslld.rb +103 -109
  440. data/lib/fisk/instructions/pslldq.rb +20 -21
  441. data/lib/fisk/instructions/psllq.rb +103 -109
  442. data/lib/fisk/instructions/psllw.rb +103 -109
  443. data/lib/fisk/instructions/psrad.rb +103 -109
  444. data/lib/fisk/instructions/psraw.rb +103 -109
  445. data/lib/fisk/instructions/psrld.rb +103 -109
  446. data/lib/fisk/instructions/psrldq.rb +20 -21
  447. data/lib/fisk/instructions/psrlq.rb +103 -109
  448. data/lib/fisk/instructions/psrlw.rb +103 -109
  449. data/lib/fisk/instructions/psubb.rb +68 -72
  450. data/lib/fisk/instructions/psubd.rb +68 -72
  451. data/lib/fisk/instructions/psubq.rb +68 -72
  452. data/lib/fisk/instructions/psubsb.rb +68 -72
  453. data/lib/fisk/instructions/psubsw.rb +68 -72
  454. data/lib/fisk/instructions/psubusb.rb +68 -72
  455. data/lib/fisk/instructions/psubusw.rb +68 -72
  456. data/lib/fisk/instructions/psubw.rb +68 -72
  457. data/lib/fisk/instructions/pswapd.rb +36 -38
  458. data/lib/fisk/instructions/ptest.rb +38 -40
  459. data/lib/fisk/instructions/punpckhbw.rb +68 -72
  460. data/lib/fisk/instructions/punpckhdq.rb +68 -72
  461. data/lib/fisk/instructions/punpckhqdq.rb +36 -38
  462. data/lib/fisk/instructions/punpckhwd.rb +68 -72
  463. data/lib/fisk/instructions/punpcklbw.rb +68 -72
  464. data/lib/fisk/instructions/punpckldq.rb +68 -72
  465. data/lib/fisk/instructions/punpcklqdq.rb +36 -38
  466. data/lib/fisk/instructions/punpcklwd.rb +68 -72
  467. data/lib/fisk/instructions/push.rb +99 -107
  468. data/lib/fisk/instructions/pxor.rb +68 -72
  469. data/lib/fisk/instructions/rcl.rb +376 -400
  470. data/lib/fisk/instructions/rcpps.rb +34 -36
  471. data/lib/fisk/instructions/rcpss.rb +36 -38
  472. data/lib/fisk/instructions/rcr.rb +376 -400
  473. data/lib/fisk/instructions/rdrand.rb +48 -51
  474. data/lib/fisk/instructions/rdseed.rb +48 -51
  475. data/lib/fisk/instructions/rdtsc.rb +12 -13
  476. data/lib/fisk/instructions/rdtscp.rb +13 -14
  477. data/lib/fisk/instructions/ret.rb +22 -24
  478. data/lib/fisk/instructions/rol.rb +376 -400
  479. data/lib/fisk/instructions/ror.rb +376 -400
  480. data/lib/fisk/instructions/rorx.rb +66 -70
  481. data/lib/fisk/instructions/roundpd.rb +42 -44
  482. data/lib/fisk/instructions/roundps.rb +42 -44
  483. data/lib/fisk/instructions/roundsd.rb +42 -44
  484. data/lib/fisk/instructions/roundss.rb +42 -44
  485. data/lib/fisk/instructions/rsqrtps.rb +34 -36
  486. data/lib/fisk/instructions/rsqrtss.rb +36 -38
  487. data/lib/fisk/instructions/sal.rb +376 -400
  488. data/lib/fisk/instructions/sar.rb +376 -400
  489. data/lib/fisk/instructions/sarx.rb +62 -66
  490. data/lib/fisk/instructions/sbb.rb +505 -539
  491. data/lib/fisk/instructions/seta.rb +34 -36
  492. data/lib/fisk/instructions/setae.rb +34 -36
  493. data/lib/fisk/instructions/setb.rb +34 -36
  494. data/lib/fisk/instructions/setbe.rb +34 -36
  495. data/lib/fisk/instructions/setc.rb +34 -36
  496. data/lib/fisk/instructions/sete.rb +34 -36
  497. data/lib/fisk/instructions/setg.rb +34 -36
  498. data/lib/fisk/instructions/setge.rb +34 -36
  499. data/lib/fisk/instructions/setl.rb +34 -36
  500. data/lib/fisk/instructions/setle.rb +34 -36
  501. data/lib/fisk/instructions/setna.rb +34 -36
  502. data/lib/fisk/instructions/setnae.rb +34 -36
  503. data/lib/fisk/instructions/setnb.rb +34 -36
  504. data/lib/fisk/instructions/setnbe.rb +34 -36
  505. data/lib/fisk/instructions/setnc.rb +34 -36
  506. data/lib/fisk/instructions/setne.rb +34 -36
  507. data/lib/fisk/instructions/setng.rb +34 -36
  508. data/lib/fisk/instructions/setnge.rb +34 -36
  509. data/lib/fisk/instructions/setnl.rb +34 -36
  510. data/lib/fisk/instructions/setnle.rb +34 -36
  511. data/lib/fisk/instructions/setno.rb +34 -36
  512. data/lib/fisk/instructions/setnp.rb +34 -36
  513. data/lib/fisk/instructions/setns.rb +34 -36
  514. data/lib/fisk/instructions/setnz.rb +34 -36
  515. data/lib/fisk/instructions/seto.rb +34 -36
  516. data/lib/fisk/instructions/setp.rb +34 -36
  517. data/lib/fisk/instructions/setpe.rb +34 -36
  518. data/lib/fisk/instructions/setpo.rb +34 -36
  519. data/lib/fisk/instructions/sets.rb +34 -36
  520. data/lib/fisk/instructions/setz.rb +34 -36
  521. data/lib/fisk/instructions/sfence.rb +13 -14
  522. data/lib/fisk/instructions/sha1msg1.rb +36 -38
  523. data/lib/fisk/instructions/sha1msg2.rb +36 -38
  524. data/lib/fisk/instructions/sha1nexte.rb +36 -38
  525. data/lib/fisk/instructions/sha1rnds4.rb +40 -42
  526. data/lib/fisk/instructions/sha256msg1.rb +36 -38
  527. data/lib/fisk/instructions/sha256msg2.rb +36 -38
  528. data/lib/fisk/instructions/sha256rnds2.rb +38 -40
  529. data/lib/fisk/instructions/shl.rb +376 -400
  530. data/lib/fisk/instructions/shld.rb +216 -228
  531. data/lib/fisk/instructions/shlx.rb +62 -66
  532. data/lib/fisk/instructions/shr.rb +376 -400
  533. data/lib/fisk/instructions/shrd.rb +216 -228
  534. data/lib/fisk/instructions/shrx.rb +62 -66
  535. data/lib/fisk/instructions/shufpd.rb +40 -42
  536. data/lib/fisk/instructions/shufps.rb +38 -40
  537. data/lib/fisk/instructions/sqrtpd.rb +36 -38
  538. data/lib/fisk/instructions/sqrtps.rb +34 -36
  539. data/lib/fisk/instructions/sqrtsd.rb +36 -38
  540. data/lib/fisk/instructions/sqrtss.rb +36 -38
  541. data/lib/fisk/instructions/stc.rb +11 -12
  542. data/lib/fisk/instructions/std.rb +11 -12
  543. data/lib/fisk/instructions/stmxcsr.rb +17 -18
  544. data/lib/fisk/instructions/sub.rb +505 -539
  545. data/lib/fisk/instructions/subpd.rb +36 -38
  546. data/lib/fisk/instructions/subps.rb +34 -36
  547. data/lib/fisk/instructions/subsd.rb +36 -38
  548. data/lib/fisk/instructions/subss.rb +36 -38
  549. data/lib/fisk/instructions/syscall.rb +12 -13
  550. data/lib/fisk/instructions/t1mskc.rb +58 -62
  551. data/lib/fisk/instructions/test.rb +305 -325
  552. data/lib/fisk/instructions/tzcnt.rb +106 -112
  553. data/lib/fisk/instructions/tzmsk.rb +58 -62
  554. data/lib/fisk/instructions/ucomisd.rb +36 -38
  555. data/lib/fisk/instructions/ucomiss.rb +34 -36
  556. data/lib/fisk/instructions/ud2.rb +12 -13
  557. data/lib/fisk/instructions/unpckhpd.rb +36 -38
  558. data/lib/fisk/instructions/unpckhps.rb +34 -36
  559. data/lib/fisk/instructions/unpcklpd.rb +36 -38
  560. data/lib/fisk/instructions/unpcklps.rb +34 -36
  561. data/lib/fisk/instructions/vaddpd.rb +153 -163
  562. data/lib/fisk/instructions/vaddps.rb +153 -163
  563. data/lib/fisk/instructions/vaddsd.rb +63 -67
  564. data/lib/fisk/instructions/vaddss.rb +63 -67
  565. data/lib/fisk/instructions/vaddsubpd.rb +62 -66
  566. data/lib/fisk/instructions/vaddsubps.rb +62 -66
  567. data/lib/fisk/instructions/vaesdec.rb +32 -34
  568. data/lib/fisk/instructions/vaesdeclast.rb +32 -34
  569. data/lib/fisk/instructions/vaesenc.rb +32 -34
  570. data/lib/fisk/instructions/vaesenclast.rb +32 -34
  571. data/lib/fisk/instructions/vaesimc.rb +30 -32
  572. data/lib/fisk/instructions/vaeskeygenassist.rb +34 -36
  573. data/lib/fisk/instructions/valignd.rb +104 -110
  574. data/lib/fisk/instructions/valignq.rb +104 -110
  575. data/lib/fisk/instructions/vandnpd.rb +152 -162
  576. data/lib/fisk/instructions/vandnps.rb +152 -162
  577. data/lib/fisk/instructions/vandpd.rb +152 -162
  578. data/lib/fisk/instructions/vandps.rb +152 -162
  579. data/lib/fisk/instructions/vblendmpd.rb +92 -98
  580. data/lib/fisk/instructions/vblendmps.rb +92 -98
  581. data/lib/fisk/instructions/vblendpd.rb +70 -74
  582. data/lib/fisk/instructions/vblendps.rb +70 -74
  583. data/lib/fisk/instructions/vblendvpd.rb +70 -74
  584. data/lib/fisk/instructions/vblendvps.rb +70 -74
  585. data/lib/fisk/instructions/vbroadcastf128.rb +16 -17
  586. data/lib/fisk/instructions/vbroadcastf32x2.rb +58 -62
  587. data/lib/fisk/instructions/vbroadcastf32x4.rb +30 -32
  588. data/lib/fisk/instructions/vbroadcastf32x8.rb +16 -17
  589. data/lib/fisk/instructions/vbroadcastf64x2.rb +30 -32
  590. data/lib/fisk/instructions/vbroadcastf64x4.rb +16 -17
  591. data/lib/fisk/instructions/vbroadcasti128.rb +16 -17
  592. data/lib/fisk/instructions/vbroadcasti32x2.rb +86 -92
  593. data/lib/fisk/instructions/vbroadcasti32x4.rb +30 -32
  594. data/lib/fisk/instructions/vbroadcasti32x8.rb +16 -17
  595. data/lib/fisk/instructions/vbroadcasti64x2.rb +30 -32
  596. data/lib/fisk/instructions/vbroadcasti64x4.rb +16 -17
  597. data/lib/fisk/instructions/vbroadcastsd.rb +86 -92
  598. data/lib/fisk/instructions/vbroadcastss.rb +114 -122
  599. data/lib/fisk/instructions/vcmppd.rb +173 -183
  600. data/lib/fisk/instructions/vcmpps.rb +173 -183
  601. data/lib/fisk/instructions/vcmpsd.rb +71 -75
  602. data/lib/fisk/instructions/vcmpss.rb +71 -75
  603. data/lib/fisk/instructions/vcomisd.rb +59 -63
  604. data/lib/fisk/instructions/vcomiss.rb +59 -63
  605. data/lib/fisk/instructions/vcompresspd.rb +86 -92
  606. data/lib/fisk/instructions/vcompressps.rb +86 -92
  607. data/lib/fisk/instructions/vcvtdq2pd.rb +142 -152
  608. data/lib/fisk/instructions/vcvtdq2ps.rb +143 -153
  609. data/lib/fisk/instructions/vcvtpd2dq.rb +143 -153
  610. data/lib/fisk/instructions/vcvtpd2ps.rb +143 -153
  611. data/lib/fisk/instructions/vcvtpd2qq.rb +87 -93
  612. data/lib/fisk/instructions/vcvtpd2udq.rb +87 -93
  613. data/lib/fisk/instructions/vcvtpd2uqq.rb +87 -93
  614. data/lib/fisk/instructions/vcvtph2ps.rb +143 -153
  615. data/lib/fisk/instructions/vcvtps2dq.rb +143 -153
  616. data/lib/fisk/instructions/vcvtps2pd.rb +143 -153
  617. data/lib/fisk/instructions/vcvtps2ph.rb +163 -173
  618. data/lib/fisk/instructions/vcvtps2qq.rb +87 -93
  619. data/lib/fisk/instructions/vcvtps2udq.rb +87 -93
  620. data/lib/fisk/instructions/vcvtps2uqq.rb +87 -93
  621. data/lib/fisk/instructions/vcvtqq2pd.rb +87 -93
  622. data/lib/fisk/instructions/vcvtqq2ps.rb +87 -93
  623. data/lib/fisk/instructions/vcvtsd2si.rb +116 -124
  624. data/lib/fisk/instructions/vcvtsd2ss.rb +63 -67
  625. data/lib/fisk/instructions/vcvtsd2usi.rb +60 -64
  626. data/lib/fisk/instructions/vcvtsi2sd.rb +123 -131
  627. data/lib/fisk/instructions/vcvtsi2ss.rb +124 -132
  628. data/lib/fisk/instructions/vcvtss2sd.rb +63 -67
  629. data/lib/fisk/instructions/vcvtss2si.rb +116 -124
  630. data/lib/fisk/instructions/vcvtss2usi.rb +60 -64
  631. data/lib/fisk/instructions/vcvttpd2dq.rb +143 -153
  632. data/lib/fisk/instructions/vcvttpd2qq.rb +87 -93
  633. data/lib/fisk/instructions/vcvttpd2udq.rb +87 -93
  634. data/lib/fisk/instructions/vcvttpd2uqq.rb +87 -93
  635. data/lib/fisk/instructions/vcvttps2dq.rb +143 -153
  636. data/lib/fisk/instructions/vcvttps2qq.rb +87 -93
  637. data/lib/fisk/instructions/vcvttps2udq.rb +87 -93
  638. data/lib/fisk/instructions/vcvttps2uqq.rb +87 -93
  639. data/lib/fisk/instructions/vcvttsd2si.rb +116 -124
  640. data/lib/fisk/instructions/vcvttsd2usi.rb +60 -64
  641. data/lib/fisk/instructions/vcvttss2si.rb +116 -124
  642. data/lib/fisk/instructions/vcvttss2usi.rb +60 -64
  643. data/lib/fisk/instructions/vcvtudq2pd.rb +86 -92
  644. data/lib/fisk/instructions/vcvtudq2ps.rb +87 -93
  645. data/lib/fisk/instructions/vcvtuqq2pd.rb +87 -93
  646. data/lib/fisk/instructions/vcvtuqq2ps.rb +87 -93
  647. data/lib/fisk/instructions/vcvtusi2sd.rb +63 -67
  648. data/lib/fisk/instructions/vcvtusi2ss.rb +64 -68
  649. data/lib/fisk/instructions/vdbpsadbw.rb +104 -110
  650. data/lib/fisk/instructions/vdivpd.rb +153 -163
  651. data/lib/fisk/instructions/vdivps.rb +153 -163
  652. data/lib/fisk/instructions/vdivsd.rb +63 -67
  653. data/lib/fisk/instructions/vdivss.rb +63 -67
  654. data/lib/fisk/instructions/vdppd.rb +36 -38
  655. data/lib/fisk/instructions/vdpps.rb +70 -74
  656. data/lib/fisk/instructions/vexp2pd.rb +31 -33
  657. data/lib/fisk/instructions/vexp2ps.rb +31 -33
  658. data/lib/fisk/instructions/vexpandpd.rb +86 -92
  659. data/lib/fisk/instructions/vexpandps.rb +86 -92
  660. data/lib/fisk/instructions/vextractf128.rb +34 -36
  661. data/lib/fisk/instructions/vextractf32x4.rb +66 -70
  662. data/lib/fisk/instructions/vextractf32x8.rb +34 -36
  663. data/lib/fisk/instructions/vextractf64x2.rb +66 -70
  664. data/lib/fisk/instructions/vextractf64x4.rb +34 -36
  665. data/lib/fisk/instructions/vextracti128.rb +34 -36
  666. data/lib/fisk/instructions/vextracti32x4.rb +66 -70
  667. data/lib/fisk/instructions/vextracti32x8.rb +34 -36
  668. data/lib/fisk/instructions/vextracti64x2.rb +66 -70
  669. data/lib/fisk/instructions/vextracti64x4.rb +34 -36
  670. data/lib/fisk/instructions/vextractps.rb +66 -70
  671. data/lib/fisk/instructions/vfixupimmpd.rb +105 -111
  672. data/lib/fisk/instructions/vfixupimmps.rb +105 -111
  673. data/lib/fisk/instructions/vfixupimmsd.rb +37 -39
  674. data/lib/fisk/instructions/vfixupimmss.rb +37 -39
  675. data/lib/fisk/instructions/vfmadd132pd.rb +153 -163
  676. data/lib/fisk/instructions/vfmadd132ps.rb +153 -163
  677. data/lib/fisk/instructions/vfmadd132sd.rb +63 -67
  678. data/lib/fisk/instructions/vfmadd132ss.rb +63 -67
  679. data/lib/fisk/instructions/vfmadd213pd.rb +153 -163
  680. data/lib/fisk/instructions/vfmadd213ps.rb +153 -163
  681. data/lib/fisk/instructions/vfmadd213sd.rb +63 -67
  682. data/lib/fisk/instructions/vfmadd213ss.rb +63 -67
  683. data/lib/fisk/instructions/vfmadd231pd.rb +153 -163
  684. data/lib/fisk/instructions/vfmadd231ps.rb +153 -163
  685. data/lib/fisk/instructions/vfmadd231sd.rb +63 -67
  686. data/lib/fisk/instructions/vfmadd231ss.rb +63 -67
  687. data/lib/fisk/instructions/vfmaddpd.rb +124 -132
  688. data/lib/fisk/instructions/vfmaddps.rb +124 -132
  689. data/lib/fisk/instructions/vfmaddsd.rb +63 -67
  690. data/lib/fisk/instructions/vfmaddss.rb +63 -67
  691. data/lib/fisk/instructions/vfmaddsub132pd.rb +153 -163
  692. data/lib/fisk/instructions/vfmaddsub132ps.rb +153 -163
  693. data/lib/fisk/instructions/vfmaddsub213pd.rb +153 -163
  694. data/lib/fisk/instructions/vfmaddsub213ps.rb +153 -163
  695. data/lib/fisk/instructions/vfmaddsub231pd.rb +153 -163
  696. data/lib/fisk/instructions/vfmaddsub231ps.rb +153 -163
  697. data/lib/fisk/instructions/vfmaddsubpd.rb +124 -132
  698. data/lib/fisk/instructions/vfmaddsubps.rb +124 -132
  699. data/lib/fisk/instructions/vfmsub132pd.rb +153 -163
  700. data/lib/fisk/instructions/vfmsub132ps.rb +153 -163
  701. data/lib/fisk/instructions/vfmsub132sd.rb +63 -67
  702. data/lib/fisk/instructions/vfmsub132ss.rb +63 -67
  703. data/lib/fisk/instructions/vfmsub213pd.rb +153 -163
  704. data/lib/fisk/instructions/vfmsub213ps.rb +153 -163
  705. data/lib/fisk/instructions/vfmsub213sd.rb +63 -67
  706. data/lib/fisk/instructions/vfmsub213ss.rb +63 -67
  707. data/lib/fisk/instructions/vfmsub231pd.rb +153 -163
  708. data/lib/fisk/instructions/vfmsub231ps.rb +153 -163
  709. data/lib/fisk/instructions/vfmsub231sd.rb +63 -67
  710. data/lib/fisk/instructions/vfmsub231ss.rb +63 -67
  711. data/lib/fisk/instructions/vfmsubadd132pd.rb +153 -163
  712. data/lib/fisk/instructions/vfmsubadd132ps.rb +153 -163
  713. data/lib/fisk/instructions/vfmsubadd213pd.rb +153 -163
  714. data/lib/fisk/instructions/vfmsubadd213ps.rb +153 -163
  715. data/lib/fisk/instructions/vfmsubadd231pd.rb +153 -163
  716. data/lib/fisk/instructions/vfmsubadd231ps.rb +153 -163
  717. data/lib/fisk/instructions/vfmsubaddpd.rb +124 -132
  718. data/lib/fisk/instructions/vfmsubaddps.rb +124 -132
  719. data/lib/fisk/instructions/vfmsubpd.rb +124 -132
  720. data/lib/fisk/instructions/vfmsubps.rb +124 -132
  721. data/lib/fisk/instructions/vfmsubsd.rb +63 -67
  722. data/lib/fisk/instructions/vfmsubss.rb +63 -67
  723. data/lib/fisk/instructions/vfnmadd132pd.rb +153 -163
  724. data/lib/fisk/instructions/vfnmadd132ps.rb +153 -163
  725. data/lib/fisk/instructions/vfnmadd132sd.rb +63 -67
  726. data/lib/fisk/instructions/vfnmadd132ss.rb +63 -67
  727. data/lib/fisk/instructions/vfnmadd213pd.rb +153 -163
  728. data/lib/fisk/instructions/vfnmadd213ps.rb +153 -163
  729. data/lib/fisk/instructions/vfnmadd213sd.rb +63 -67
  730. data/lib/fisk/instructions/vfnmadd213ss.rb +63 -67
  731. data/lib/fisk/instructions/vfnmadd231pd.rb +153 -163
  732. data/lib/fisk/instructions/vfnmadd231ps.rb +153 -163
  733. data/lib/fisk/instructions/vfnmadd231sd.rb +63 -67
  734. data/lib/fisk/instructions/vfnmadd231ss.rb +63 -67
  735. data/lib/fisk/instructions/vfnmaddpd.rb +124 -132
  736. data/lib/fisk/instructions/vfnmaddps.rb +124 -132
  737. data/lib/fisk/instructions/vfnmaddsd.rb +63 -67
  738. data/lib/fisk/instructions/vfnmaddss.rb +63 -67
  739. data/lib/fisk/instructions/vfnmsub132pd.rb +153 -163
  740. data/lib/fisk/instructions/vfnmsub132ps.rb +153 -163
  741. data/lib/fisk/instructions/vfnmsub132sd.rb +63 -67
  742. data/lib/fisk/instructions/vfnmsub132ss.rb +63 -67
  743. data/lib/fisk/instructions/vfnmsub213pd.rb +153 -163
  744. data/lib/fisk/instructions/vfnmsub213ps.rb +153 -163
  745. data/lib/fisk/instructions/vfnmsub213sd.rb +63 -67
  746. data/lib/fisk/instructions/vfnmsub213ss.rb +63 -67
  747. data/lib/fisk/instructions/vfnmsub231pd.rb +153 -163
  748. data/lib/fisk/instructions/vfnmsub231ps.rb +153 -163
  749. data/lib/fisk/instructions/vfnmsub231sd.rb +63 -67
  750. data/lib/fisk/instructions/vfnmsub231ss.rb +63 -67
  751. data/lib/fisk/instructions/vfnmsubpd.rb +124 -132
  752. data/lib/fisk/instructions/vfnmsubps.rb +124 -132
  753. data/lib/fisk/instructions/vfnmsubsd.rb +63 -67
  754. data/lib/fisk/instructions/vfnmsubss.rb +63 -67
  755. data/lib/fisk/instructions/vfpclasspd.rb +98 -104
  756. data/lib/fisk/instructions/vfpclassps.rb +98 -104
  757. data/lib/fisk/instructions/vfpclasssd.rb +34 -36
  758. data/lib/fisk/instructions/vfpclassss.rb +34 -36
  759. data/lib/fisk/instructions/vfrczpd.rb +58 -62
  760. data/lib/fisk/instructions/vfrczps.rb +58 -62
  761. data/lib/fisk/instructions/vfrczsd.rb +30 -32
  762. data/lib/fisk/instructions/vfrczss.rb +30 -32
  763. data/lib/fisk/instructions/vgatherdpd.rb +74 -79
  764. data/lib/fisk/instructions/vgatherdps.rb +74 -79
  765. data/lib/fisk/instructions/vgatherpf0dpd.rb +15 -16
  766. data/lib/fisk/instructions/vgatherpf0dps.rb +15 -16
  767. data/lib/fisk/instructions/vgatherpf0qpd.rb +15 -16
  768. data/lib/fisk/instructions/vgatherpf0qps.rb +15 -16
  769. data/lib/fisk/instructions/vgatherpf1dpd.rb +15 -16
  770. data/lib/fisk/instructions/vgatherpf1dps.rb +15 -16
  771. data/lib/fisk/instructions/vgatherpf1qpd.rb +15 -16
  772. data/lib/fisk/instructions/vgatherpf1qps.rb +15 -16
  773. data/lib/fisk/instructions/vgatherqpd.rb +74 -79
  774. data/lib/fisk/instructions/vgatherqps.rb +74 -79
  775. data/lib/fisk/instructions/vgetexppd.rb +87 -93
  776. data/lib/fisk/instructions/vgetexpps.rb +87 -93
  777. data/lib/fisk/instructions/vgetexpsd.rb +33 -35
  778. data/lib/fisk/instructions/vgetexpss.rb +33 -35
  779. data/lib/fisk/instructions/vgetmantpd.rb +99 -105
  780. data/lib/fisk/instructions/vgetmantps.rb +99 -105
  781. data/lib/fisk/instructions/vgetmantsd.rb +37 -39
  782. data/lib/fisk/instructions/vgetmantss.rb +37 -39
  783. data/lib/fisk/instructions/vhaddpd.rb +62 -66
  784. data/lib/fisk/instructions/vhaddps.rb +62 -66
  785. data/lib/fisk/instructions/vhsubpd.rb +62 -66
  786. data/lib/fisk/instructions/vhsubps.rb +62 -66
  787. data/lib/fisk/instructions/vinsertf128.rb +36 -38
  788. data/lib/fisk/instructions/vinsertf32x4.rb +70 -74
  789. data/lib/fisk/instructions/vinsertf32x8.rb +36 -38
  790. data/lib/fisk/instructions/vinsertf64x2.rb +70 -74
  791. data/lib/fisk/instructions/vinsertf64x4.rb +36 -38
  792. data/lib/fisk/instructions/vinserti128.rb +36 -38
  793. data/lib/fisk/instructions/vinserti32x4.rb +70 -74
  794. data/lib/fisk/instructions/vinserti32x8.rb +36 -38
  795. data/lib/fisk/instructions/vinserti64x2.rb +70 -74
  796. data/lib/fisk/instructions/vinserti64x4.rb +36 -38
  797. data/lib/fisk/instructions/vinsertps.rb +70 -74
  798. data/lib/fisk/instructions/vlddqu.rb +30 -32
  799. data/lib/fisk/instructions/vldmxcsr.rb +15 -16
  800. data/lib/fisk/instructions/vmaskmovdqu.rb +16 -17
  801. data/lib/fisk/instructions/vmaskmovpd.rb +62 -66
  802. data/lib/fisk/instructions/vmaskmovps.rb +62 -66
  803. data/lib/fisk/instructions/vmaxpd.rb +153 -163
  804. data/lib/fisk/instructions/vmaxps.rb +153 -163
  805. data/lib/fisk/instructions/vmaxsd.rb +63 -67
  806. data/lib/fisk/instructions/vmaxss.rb +63 -67
  807. data/lib/fisk/instructions/vminpd.rb +153 -163
  808. data/lib/fisk/instructions/vminps.rb +153 -163
  809. data/lib/fisk/instructions/vminsd.rb +63 -67
  810. data/lib/fisk/instructions/vminss.rb +63 -67
  811. data/lib/fisk/instructions/vmovapd.rb +257 -277
  812. data/lib/fisk/instructions/vmovaps.rb +257 -277
  813. data/lib/fisk/instructions/vmovd.rb +114 -122
  814. data/lib/fisk/instructions/vmovddup.rb +142 -152
  815. data/lib/fisk/instructions/vmovdqa.rb +104 -112
  816. data/lib/fisk/instructions/vmovdqa32.rb +155 -167
  817. data/lib/fisk/instructions/vmovdqa64.rb +155 -167
  818. data/lib/fisk/instructions/vmovdqu.rb +104 -112
  819. data/lib/fisk/instructions/vmovdqu16.rb +155 -167
  820. data/lib/fisk/instructions/vmovdqu32.rb +155 -167
  821. data/lib/fisk/instructions/vmovdqu64.rb +155 -167
  822. data/lib/fisk/instructions/vmovdqu8.rb +155 -167
  823. data/lib/fisk/instructions/vmovhlps.rb +32 -34
  824. data/lib/fisk/instructions/vmovhpd.rb +60 -64
  825. data/lib/fisk/instructions/vmovhps.rb +60 -64
  826. data/lib/fisk/instructions/vmovlhps.rb +32 -34
  827. data/lib/fisk/instructions/vmovlpd.rb +60 -64
  828. data/lib/fisk/instructions/vmovlps.rb +60 -64
  829. data/lib/fisk/instructions/vmovmskpd.rb +30 -32
  830. data/lib/fisk/instructions/vmovmskps.rb +30 -32
  831. data/lib/fisk/instructions/vmovntdq.rb +72 -77
  832. data/lib/fisk/instructions/vmovntdqa.rb +72 -77
  833. data/lib/fisk/instructions/vmovntpd.rb +72 -77
  834. data/lib/fisk/instructions/vmovntps.rb +72 -77
  835. data/lib/fisk/instructions/vmovq.rb +196 -212
  836. data/lib/fisk/instructions/vmovsd.rb +106 -114
  837. data/lib/fisk/instructions/vmovshdup.rb +142 -152
  838. data/lib/fisk/instructions/vmovsldup.rb +142 -152
  839. data/lib/fisk/instructions/vmovss.rb +106 -114
  840. data/lib/fisk/instructions/vmovupd.rb +257 -277
  841. data/lib/fisk/instructions/vmovups.rb +257 -277
  842. data/lib/fisk/instructions/vmpsadbw.rb +70 -74
  843. data/lib/fisk/instructions/vmulpd.rb +153 -163
  844. data/lib/fisk/instructions/vmulps.rb +153 -163
  845. data/lib/fisk/instructions/vmulsd.rb +63 -67
  846. data/lib/fisk/instructions/vmulss.rb +63 -67
  847. data/lib/fisk/instructions/vorpd.rb +152 -162
  848. data/lib/fisk/instructions/vorps.rb +152 -162
  849. data/lib/fisk/instructions/vpabsb.rb +142 -152
  850. data/lib/fisk/instructions/vpabsd.rb +142 -152
  851. data/lib/fisk/instructions/vpabsq.rb +86 -92
  852. data/lib/fisk/instructions/vpabsw.rb +142 -152
  853. data/lib/fisk/instructions/vpackssdw.rb +152 -162
  854. data/lib/fisk/instructions/vpacksswb.rb +152 -162
  855. data/lib/fisk/instructions/vpackusdw.rb +152 -162
  856. data/lib/fisk/instructions/vpackuswb.rb +152 -162
  857. data/lib/fisk/instructions/vpaddb.rb +152 -162
  858. data/lib/fisk/instructions/vpaddd.rb +152 -162
  859. data/lib/fisk/instructions/vpaddq.rb +152 -162
  860. data/lib/fisk/instructions/vpaddsb.rb +152 -162
  861. data/lib/fisk/instructions/vpaddsw.rb +152 -162
  862. data/lib/fisk/instructions/vpaddusb.rb +152 -162
  863. data/lib/fisk/instructions/vpaddusw.rb +152 -162
  864. data/lib/fisk/instructions/vpaddw.rb +152 -162
  865. data/lib/fisk/instructions/vpalignr.rb +172 -182
  866. data/lib/fisk/instructions/vpand.rb +62 -66
  867. data/lib/fisk/instructions/vpandd.rb +92 -98
  868. data/lib/fisk/instructions/vpandn.rb +62 -66
  869. data/lib/fisk/instructions/vpandnd.rb +92 -98
  870. data/lib/fisk/instructions/vpandnq.rb +92 -98
  871. data/lib/fisk/instructions/vpandq.rb +92 -98
  872. data/lib/fisk/instructions/vpavgb.rb +152 -162
  873. data/lib/fisk/instructions/vpavgw.rb +152 -162
  874. data/lib/fisk/instructions/vpblendd.rb +70 -74
  875. data/lib/fisk/instructions/vpblendmb.rb +92 -98
  876. data/lib/fisk/instructions/vpblendmd.rb +92 -98
  877. data/lib/fisk/instructions/vpblendmq.rb +92 -98
  878. data/lib/fisk/instructions/vpblendmw.rb +92 -98
  879. data/lib/fisk/instructions/vpblendvb.rb +70 -74
  880. data/lib/fisk/instructions/vpblendw.rb +70 -74
  881. data/lib/fisk/instructions/vpbroadcastb.rb +184 -197
  882. data/lib/fisk/instructions/vpbroadcastd.rb +184 -197
  883. data/lib/fisk/instructions/vpbroadcastmb2q.rb +44 -47
  884. data/lib/fisk/instructions/vpbroadcastmw2d.rb +44 -47
  885. data/lib/fisk/instructions/vpbroadcastq.rb +184 -197
  886. data/lib/fisk/instructions/vpbroadcastw.rb +184 -197
  887. data/lib/fisk/instructions/vpclmulqdq.rb +36 -38
  888. data/lib/fisk/instructions/vpcmov.rb +124 -132
  889. data/lib/fisk/instructions/vpcmpb.rb +104 -110
  890. data/lib/fisk/instructions/vpcmpd.rb +104 -110
  891. data/lib/fisk/instructions/vpcmpeqb.rb +152 -162
  892. data/lib/fisk/instructions/vpcmpeqd.rb +152 -162
  893. data/lib/fisk/instructions/vpcmpeqq.rb +152 -162
  894. data/lib/fisk/instructions/vpcmpeqw.rb +152 -162
  895. data/lib/fisk/instructions/vpcmpestri.rb +34 -36
  896. data/lib/fisk/instructions/vpcmpestrm.rb +34 -36
  897. data/lib/fisk/instructions/vpcmpgtb.rb +152 -162
  898. data/lib/fisk/instructions/vpcmpgtd.rb +152 -162
  899. data/lib/fisk/instructions/vpcmpgtq.rb +152 -162
  900. data/lib/fisk/instructions/vpcmpgtw.rb +152 -162
  901. data/lib/fisk/instructions/vpcmpistri.rb +34 -36
  902. data/lib/fisk/instructions/vpcmpistrm.rb +34 -36
  903. data/lib/fisk/instructions/vpcmpq.rb +104 -110
  904. data/lib/fisk/instructions/vpcmpub.rb +104 -110
  905. data/lib/fisk/instructions/vpcmpud.rb +104 -110
  906. data/lib/fisk/instructions/vpcmpuq.rb +104 -110
  907. data/lib/fisk/instructions/vpcmpuw.rb +104 -110
  908. data/lib/fisk/instructions/vpcmpw.rb +104 -110
  909. data/lib/fisk/instructions/vpcomb.rb +36 -38
  910. data/lib/fisk/instructions/vpcomd.rb +36 -38
  911. data/lib/fisk/instructions/vpcompressd.rb +86 -92
  912. data/lib/fisk/instructions/vpcompressq.rb +86 -92
  913. data/lib/fisk/instructions/vpcomq.rb +36 -38
  914. data/lib/fisk/instructions/vpcomub.rb +36 -38
  915. data/lib/fisk/instructions/vpcomud.rb +36 -38
  916. data/lib/fisk/instructions/vpcomuq.rb +36 -38
  917. data/lib/fisk/instructions/vpcomuw.rb +36 -38
  918. data/lib/fisk/instructions/vpcomw.rb +36 -38
  919. data/lib/fisk/instructions/vpconflictd.rb +86 -92
  920. data/lib/fisk/instructions/vpconflictq.rb +86 -92
  921. data/lib/fisk/instructions/vperm2f128.rb +36 -38
  922. data/lib/fisk/instructions/vperm2i128.rb +36 -38
  923. data/lib/fisk/instructions/vpermb.rb +92 -98
  924. data/lib/fisk/instructions/vpermd.rb +92 -98
  925. data/lib/fisk/instructions/vpermi2b.rb +92 -98
  926. data/lib/fisk/instructions/vpermi2d.rb +92 -98
  927. data/lib/fisk/instructions/vpermi2pd.rb +92 -98
  928. data/lib/fisk/instructions/vpermi2ps.rb +92 -98
  929. data/lib/fisk/instructions/vpermi2q.rb +92 -98
  930. data/lib/fisk/instructions/vpermi2w.rb +92 -98
  931. data/lib/fisk/instructions/vpermil2pd.rb +130 -138
  932. data/lib/fisk/instructions/vpermil2ps.rb +130 -138
  933. data/lib/fisk/instructions/vpermilpd.rb +312 -332
  934. data/lib/fisk/instructions/vpermilps.rb +312 -332
  935. data/lib/fisk/instructions/vpermpd.rb +158 -168
  936. data/lib/fisk/instructions/vpermps.rb +92 -98
  937. data/lib/fisk/instructions/vpermq.rb +158 -168
  938. data/lib/fisk/instructions/vpermt2b.rb +92 -98
  939. data/lib/fisk/instructions/vpermt2d.rb +92 -98
  940. data/lib/fisk/instructions/vpermt2pd.rb +92 -98
  941. data/lib/fisk/instructions/vpermt2ps.rb +92 -98
  942. data/lib/fisk/instructions/vpermt2q.rb +92 -98
  943. data/lib/fisk/instructions/vpermt2w.rb +92 -98
  944. data/lib/fisk/instructions/vpermw.rb +92 -98
  945. data/lib/fisk/instructions/vpexpandd.rb +86 -92
  946. data/lib/fisk/instructions/vpexpandq.rb +86 -92
  947. data/lib/fisk/instructions/vpextrb.rb +66 -70
  948. data/lib/fisk/instructions/vpextrd.rb +66 -70
  949. data/lib/fisk/instructions/vpextrq.rb +66 -70
  950. data/lib/fisk/instructions/vpextrw.rb +86 -92
  951. data/lib/fisk/instructions/vpgatherdd.rb +74 -79
  952. data/lib/fisk/instructions/vpgatherdq.rb +74 -79
  953. data/lib/fisk/instructions/vpgatherqd.rb +74 -79
  954. data/lib/fisk/instructions/vpgatherqq.rb +74 -79
  955. data/lib/fisk/instructions/vphaddbd.rb +30 -32
  956. data/lib/fisk/instructions/vphaddbq.rb +30 -32
  957. data/lib/fisk/instructions/vphaddbw.rb +30 -32
  958. data/lib/fisk/instructions/vphaddd.rb +62 -66
  959. data/lib/fisk/instructions/vphadddq.rb +30 -32
  960. data/lib/fisk/instructions/vphaddsw.rb +62 -66
  961. data/lib/fisk/instructions/vphaddubd.rb +30 -32
  962. data/lib/fisk/instructions/vphaddubq.rb +30 -32
  963. data/lib/fisk/instructions/vphaddubw.rb +30 -32
  964. data/lib/fisk/instructions/vphaddudq.rb +30 -32
  965. data/lib/fisk/instructions/vphadduwd.rb +30 -32
  966. data/lib/fisk/instructions/vphadduwq.rb +30 -32
  967. data/lib/fisk/instructions/vphaddw.rb +62 -66
  968. data/lib/fisk/instructions/vphaddwd.rb +30 -32
  969. data/lib/fisk/instructions/vphaddwq.rb +30 -32
  970. data/lib/fisk/instructions/vphminposuw.rb +30 -32
  971. data/lib/fisk/instructions/vphsubbw.rb +30 -32
  972. data/lib/fisk/instructions/vphsubd.rb +62 -66
  973. data/lib/fisk/instructions/vphsubdq.rb +30 -32
  974. data/lib/fisk/instructions/vphsubsw.rb +62 -66
  975. data/lib/fisk/instructions/vphsubw.rb +62 -66
  976. data/lib/fisk/instructions/vphsubwd.rb +30 -32
  977. data/lib/fisk/instructions/vpinsrb.rb +70 -74
  978. data/lib/fisk/instructions/vpinsrd.rb +70 -74
  979. data/lib/fisk/instructions/vpinsrq.rb +70 -74
  980. data/lib/fisk/instructions/vpinsrw.rb +70 -74
  981. data/lib/fisk/instructions/vplzcntd.rb +86 -92
  982. data/lib/fisk/instructions/vplzcntq.rb +86 -92
  983. data/lib/fisk/instructions/vpmacsdd.rb +36 -38
  984. data/lib/fisk/instructions/vpmacsdqh.rb +36 -38
  985. data/lib/fisk/instructions/vpmacsdql.rb +36 -38
  986. data/lib/fisk/instructions/vpmacssdd.rb +36 -38
  987. data/lib/fisk/instructions/vpmacssdqh.rb +36 -38
  988. data/lib/fisk/instructions/vpmacssdql.rb +36 -38
  989. data/lib/fisk/instructions/vpmacsswd.rb +36 -38
  990. data/lib/fisk/instructions/vpmacssww.rb +36 -38
  991. data/lib/fisk/instructions/vpmacswd.rb +36 -38
  992. data/lib/fisk/instructions/vpmacsww.rb +36 -38
  993. data/lib/fisk/instructions/vpmadcsswd.rb +36 -38
  994. data/lib/fisk/instructions/vpmadcswd.rb +36 -38
  995. data/lib/fisk/instructions/vpmadd52huq.rb +92 -98
  996. data/lib/fisk/instructions/vpmadd52luq.rb +92 -98
  997. data/lib/fisk/instructions/vpmaddubsw.rb +152 -162
  998. data/lib/fisk/instructions/vpmaddwd.rb +152 -162
  999. data/lib/fisk/instructions/vpmaskmovd.rb +62 -66
  1000. data/lib/fisk/instructions/vpmaskmovq.rb +62 -66
  1001. data/lib/fisk/instructions/vpmaxsb.rb +152 -162
  1002. data/lib/fisk/instructions/vpmaxsd.rb +152 -162
  1003. data/lib/fisk/instructions/vpmaxsq.rb +92 -98
  1004. data/lib/fisk/instructions/vpmaxsw.rb +152 -162
  1005. data/lib/fisk/instructions/vpmaxub.rb +152 -162
  1006. data/lib/fisk/instructions/vpmaxud.rb +152 -162
  1007. data/lib/fisk/instructions/vpmaxuq.rb +92 -98
  1008. data/lib/fisk/instructions/vpmaxuw.rb +152 -162
  1009. data/lib/fisk/instructions/vpminsb.rb +152 -162
  1010. data/lib/fisk/instructions/vpminsd.rb +152 -162
  1011. data/lib/fisk/instructions/vpminsq.rb +92 -98
  1012. data/lib/fisk/instructions/vpminsw.rb +152 -162
  1013. data/lib/fisk/instructions/vpminub.rb +152 -162
  1014. data/lib/fisk/instructions/vpminud.rb +152 -162
  1015. data/lib/fisk/instructions/vpminuq.rb +92 -98
  1016. data/lib/fisk/instructions/vpminuw.rb +152 -162
  1017. data/lib/fisk/instructions/vpmovb2m.rb +44 -47
  1018. data/lib/fisk/instructions/vpmovd2m.rb +44 -47
  1019. data/lib/fisk/instructions/vpmovdb.rb +86 -92
  1020. data/lib/fisk/instructions/vpmovdw.rb +86 -92
  1021. data/lib/fisk/instructions/vpmovm2b.rb +44 -47
  1022. data/lib/fisk/instructions/vpmovm2d.rb +44 -47
  1023. data/lib/fisk/instructions/vpmovm2q.rb +44 -47
  1024. data/lib/fisk/instructions/vpmovm2w.rb +44 -47
  1025. data/lib/fisk/instructions/vpmovmskb.rb +30 -32
  1026. data/lib/fisk/instructions/vpmovq2m.rb +44 -47
  1027. data/lib/fisk/instructions/vpmovqb.rb +86 -92
  1028. data/lib/fisk/instructions/vpmovqd.rb +86 -92
  1029. data/lib/fisk/instructions/vpmovqw.rb +86 -92
  1030. data/lib/fisk/instructions/vpmovsdb.rb +86 -92
  1031. data/lib/fisk/instructions/vpmovsdw.rb +86 -92
  1032. data/lib/fisk/instructions/vpmovsqb.rb +86 -92
  1033. data/lib/fisk/instructions/vpmovsqd.rb +86 -92
  1034. data/lib/fisk/instructions/vpmovsqw.rb +86 -92
  1035. data/lib/fisk/instructions/vpmovswb.rb +86 -92
  1036. data/lib/fisk/instructions/vpmovsxbd.rb +142 -152
  1037. data/lib/fisk/instructions/vpmovsxbq.rb +142 -152
  1038. data/lib/fisk/instructions/vpmovsxbw.rb +142 -152
  1039. data/lib/fisk/instructions/vpmovsxdq.rb +142 -152
  1040. data/lib/fisk/instructions/vpmovsxwd.rb +142 -152
  1041. data/lib/fisk/instructions/vpmovsxwq.rb +142 -152
  1042. data/lib/fisk/instructions/vpmovusdb.rb +86 -92
  1043. data/lib/fisk/instructions/vpmovusdw.rb +86 -92
  1044. data/lib/fisk/instructions/vpmovusqb.rb +86 -92
  1045. data/lib/fisk/instructions/vpmovusqd.rb +86 -92
  1046. data/lib/fisk/instructions/vpmovusqw.rb +86 -92
  1047. data/lib/fisk/instructions/vpmovuswb.rb +86 -92
  1048. data/lib/fisk/instructions/vpmovw2m.rb +44 -47
  1049. data/lib/fisk/instructions/vpmovwb.rb +86 -92
  1050. data/lib/fisk/instructions/vpmovzxbd.rb +142 -152
  1051. data/lib/fisk/instructions/vpmovzxbq.rb +142 -152
  1052. data/lib/fisk/instructions/vpmovzxbw.rb +142 -152
  1053. data/lib/fisk/instructions/vpmovzxdq.rb +142 -152
  1054. data/lib/fisk/instructions/vpmovzxwd.rb +142 -152
  1055. data/lib/fisk/instructions/vpmovzxwq.rb +142 -152
  1056. data/lib/fisk/instructions/vpmuldq.rb +152 -162
  1057. data/lib/fisk/instructions/vpmulhrsw.rb +152 -162
  1058. data/lib/fisk/instructions/vpmulhuw.rb +152 -162
  1059. data/lib/fisk/instructions/vpmulhw.rb +152 -162
  1060. data/lib/fisk/instructions/vpmulld.rb +152 -162
  1061. data/lib/fisk/instructions/vpmullq.rb +92 -98
  1062. data/lib/fisk/instructions/vpmullw.rb +152 -162
  1063. data/lib/fisk/instructions/vpmultishiftqb.rb +92 -98
  1064. data/lib/fisk/instructions/vpmuludq.rb +152 -162
  1065. data/lib/fisk/instructions/vpopcntd.rb +30 -32
  1066. data/lib/fisk/instructions/vpopcntq.rb +30 -32
  1067. data/lib/fisk/instructions/vpor.rb +62 -66
  1068. data/lib/fisk/instructions/vpord.rb +92 -98
  1069. data/lib/fisk/instructions/vporq.rb +92 -98
  1070. data/lib/fisk/instructions/vpperm.rb +63 -67
  1071. data/lib/fisk/instructions/vprold.rb +98 -104
  1072. data/lib/fisk/instructions/vprolq.rb +98 -104
  1073. data/lib/fisk/instructions/vprolvd.rb +92 -98
  1074. data/lib/fisk/instructions/vprolvq.rb +92 -98
  1075. data/lib/fisk/instructions/vprord.rb +98 -104
  1076. data/lib/fisk/instructions/vprorq.rb +98 -104
  1077. data/lib/fisk/instructions/vprorvd.rb +92 -98
  1078. data/lib/fisk/instructions/vprorvq.rb +92 -98
  1079. data/lib/fisk/instructions/vprotb.rb +88 -94
  1080. data/lib/fisk/instructions/vprotd.rb +88 -94
  1081. data/lib/fisk/instructions/vprotq.rb +88 -94
  1082. data/lib/fisk/instructions/vprotw.rb +88 -94
  1083. data/lib/fisk/instructions/vpsadbw.rb +152 -162
  1084. data/lib/fisk/instructions/vpscatterdd.rb +44 -47
  1085. data/lib/fisk/instructions/vpscatterdq.rb +44 -47
  1086. data/lib/fisk/instructions/vpscatterqd.rb +44 -47
  1087. data/lib/fisk/instructions/vpscatterqq.rb +44 -47
  1088. data/lib/fisk/instructions/vpshab.rb +56 -60
  1089. data/lib/fisk/instructions/vpshad.rb +56 -60
  1090. data/lib/fisk/instructions/vpshaq.rb +56 -60
  1091. data/lib/fisk/instructions/vpshaw.rb +56 -60
  1092. data/lib/fisk/instructions/vpshlb.rb +56 -60
  1093. data/lib/fisk/instructions/vpshld.rb +56 -60
  1094. data/lib/fisk/instructions/vpshlq.rb +56 -60
  1095. data/lib/fisk/instructions/vpshlw.rb +56 -60
  1096. data/lib/fisk/instructions/vpshufb.rb +152 -162
  1097. data/lib/fisk/instructions/vpshufd.rb +162 -172
  1098. data/lib/fisk/instructions/vpshufhw.rb +162 -172
  1099. data/lib/fisk/instructions/vpshuflw.rb +162 -172
  1100. data/lib/fisk/instructions/vpsignb.rb +62 -66
  1101. data/lib/fisk/instructions/vpsignd.rb +62 -66
  1102. data/lib/fisk/instructions/vpsignw.rb +62 -66
  1103. data/lib/fisk/instructions/vpslld.rb +280 -298
  1104. data/lib/fisk/instructions/vpslldq.rb +130 -138
  1105. data/lib/fisk/instructions/vpsllq.rb +280 -298
  1106. data/lib/fisk/instructions/vpsllvd.rb +152 -162
  1107. data/lib/fisk/instructions/vpsllvq.rb +152 -162
  1108. data/lib/fisk/instructions/vpsllvw.rb +92 -98
  1109. data/lib/fisk/instructions/vpsllw.rb +280 -298
  1110. data/lib/fisk/instructions/vpsrad.rb +280 -298
  1111. data/lib/fisk/instructions/vpsraq.rb +188 -200
  1112. data/lib/fisk/instructions/vpsravd.rb +152 -162
  1113. data/lib/fisk/instructions/vpsravq.rb +92 -98
  1114. data/lib/fisk/instructions/vpsravw.rb +92 -98
  1115. data/lib/fisk/instructions/vpsraw.rb +280 -298
  1116. data/lib/fisk/instructions/vpsrld.rb +280 -298
  1117. data/lib/fisk/instructions/vpsrldq.rb +130 -138
  1118. data/lib/fisk/instructions/vpsrlq.rb +280 -298
  1119. data/lib/fisk/instructions/vpsrlvd.rb +152 -162
  1120. data/lib/fisk/instructions/vpsrlvq.rb +152 -162
  1121. data/lib/fisk/instructions/vpsrlvw.rb +92 -98
  1122. data/lib/fisk/instructions/vpsrlw.rb +280 -298
  1123. data/lib/fisk/instructions/vpsubb.rb +152 -162
  1124. data/lib/fisk/instructions/vpsubd.rb +152 -162
  1125. data/lib/fisk/instructions/vpsubq.rb +152 -162
  1126. data/lib/fisk/instructions/vpsubsb.rb +152 -162
  1127. data/lib/fisk/instructions/vpsubsw.rb +152 -162
  1128. data/lib/fisk/instructions/vpsubusb.rb +152 -162
  1129. data/lib/fisk/instructions/vpsubusw.rb +152 -162
  1130. data/lib/fisk/instructions/vpsubw.rb +152 -162
  1131. data/lib/fisk/instructions/vpternlogd.rb +104 -110
  1132. data/lib/fisk/instructions/vpternlogq.rb +104 -110
  1133. data/lib/fisk/instructions/vptest.rb +58 -62
  1134. data/lib/fisk/instructions/vptestmb.rb +92 -98
  1135. data/lib/fisk/instructions/vptestmd.rb +92 -98
  1136. data/lib/fisk/instructions/vptestmq.rb +92 -98
  1137. data/lib/fisk/instructions/vptestmw.rb +92 -98
  1138. data/lib/fisk/instructions/vptestnmb.rb +92 -98
  1139. data/lib/fisk/instructions/vptestnmd.rb +92 -98
  1140. data/lib/fisk/instructions/vptestnmq.rb +92 -98
  1141. data/lib/fisk/instructions/vptestnmw.rb +92 -98
  1142. data/lib/fisk/instructions/vpunpckhbw.rb +152 -162
  1143. data/lib/fisk/instructions/vpunpckhdq.rb +152 -162
  1144. data/lib/fisk/instructions/vpunpckhqdq.rb +152 -162
  1145. data/lib/fisk/instructions/vpunpckhwd.rb +152 -162
  1146. data/lib/fisk/instructions/vpunpcklbw.rb +152 -162
  1147. data/lib/fisk/instructions/vpunpckldq.rb +152 -162
  1148. data/lib/fisk/instructions/vpunpcklqdq.rb +152 -162
  1149. data/lib/fisk/instructions/vpunpcklwd.rb +152 -162
  1150. data/lib/fisk/instructions/vpxor.rb +62 -66
  1151. data/lib/fisk/instructions/vpxord.rb +92 -98
  1152. data/lib/fisk/instructions/vpxorq.rb +92 -98
  1153. data/lib/fisk/instructions/vrangepd.rb +105 -111
  1154. data/lib/fisk/instructions/vrangeps.rb +105 -111
  1155. data/lib/fisk/instructions/vrangesd.rb +37 -39
  1156. data/lib/fisk/instructions/vrangess.rb +37 -39
  1157. data/lib/fisk/instructions/vrcp14pd.rb +86 -92
  1158. data/lib/fisk/instructions/vrcp14ps.rb +86 -92
  1159. data/lib/fisk/instructions/vrcp14sd.rb +32 -34
  1160. data/lib/fisk/instructions/vrcp14ss.rb +32 -34
  1161. data/lib/fisk/instructions/vrcp28pd.rb +31 -33
  1162. data/lib/fisk/instructions/vrcp28ps.rb +31 -33
  1163. data/lib/fisk/instructions/vrcp28sd.rb +33 -35
  1164. data/lib/fisk/instructions/vrcp28ss.rb +33 -35
  1165. data/lib/fisk/instructions/vrcpps.rb +58 -62
  1166. data/lib/fisk/instructions/vrcpss.rb +32 -34
  1167. data/lib/fisk/instructions/vreducepd.rb +98 -104
  1168. data/lib/fisk/instructions/vreduceps.rb +98 -104
  1169. data/lib/fisk/instructions/vreducesd.rb +36 -38
  1170. data/lib/fisk/instructions/vreducess.rb +36 -38
  1171. data/lib/fisk/instructions/vrndscalepd.rb +99 -105
  1172. data/lib/fisk/instructions/vrndscaleps.rb +99 -105
  1173. data/lib/fisk/instructions/vrndscalesd.rb +37 -39
  1174. data/lib/fisk/instructions/vrndscaless.rb +37 -39
  1175. data/lib/fisk/instructions/vroundpd.rb +66 -70
  1176. data/lib/fisk/instructions/vroundps.rb +66 -70
  1177. data/lib/fisk/instructions/vroundsd.rb +36 -38
  1178. data/lib/fisk/instructions/vroundss.rb +36 -38
  1179. data/lib/fisk/instructions/vrsqrt14pd.rb +86 -92
  1180. data/lib/fisk/instructions/vrsqrt14ps.rb +86 -92
  1181. data/lib/fisk/instructions/vrsqrt14sd.rb +32 -34
  1182. data/lib/fisk/instructions/vrsqrt14ss.rb +32 -34
  1183. data/lib/fisk/instructions/vrsqrt28pd.rb +31 -33
  1184. data/lib/fisk/instructions/vrsqrt28ps.rb +31 -33
  1185. data/lib/fisk/instructions/vrsqrt28sd.rb +33 -35
  1186. data/lib/fisk/instructions/vrsqrt28ss.rb +33 -35
  1187. data/lib/fisk/instructions/vrsqrtps.rb +58 -62
  1188. data/lib/fisk/instructions/vrsqrtss.rb +32 -34
  1189. data/lib/fisk/instructions/vscalefpd.rb +93 -99
  1190. data/lib/fisk/instructions/vscalefps.rb +93 -99
  1191. data/lib/fisk/instructions/vscalefsd.rb +33 -35
  1192. data/lib/fisk/instructions/vscalefss.rb +33 -35
  1193. data/lib/fisk/instructions/vscatterdpd.rb +44 -47
  1194. data/lib/fisk/instructions/vscatterdps.rb +44 -47
  1195. data/lib/fisk/instructions/vscatterpf0dpd.rb +15 -16
  1196. data/lib/fisk/instructions/vscatterpf0dps.rb +15 -16
  1197. data/lib/fisk/instructions/vscatterpf0qpd.rb +15 -16
  1198. data/lib/fisk/instructions/vscatterpf0qps.rb +15 -16
  1199. data/lib/fisk/instructions/vscatterpf1dpd.rb +15 -16
  1200. data/lib/fisk/instructions/vscatterpf1dps.rb +15 -16
  1201. data/lib/fisk/instructions/vscatterpf1qpd.rb +15 -16
  1202. data/lib/fisk/instructions/vscatterpf1qps.rb +15 -16
  1203. data/lib/fisk/instructions/vscatterqpd.rb +44 -47
  1204. data/lib/fisk/instructions/vscatterqps.rb +44 -47
  1205. data/lib/fisk/instructions/vshuff32x4.rb +70 -74
  1206. data/lib/fisk/instructions/vshuff64x2.rb +70 -74
  1207. data/lib/fisk/instructions/vshufi32x4.rb +70 -74
  1208. data/lib/fisk/instructions/vshufi64x2.rb +70 -74
  1209. data/lib/fisk/instructions/vshufpd.rb +172 -182
  1210. data/lib/fisk/instructions/vshufps.rb +172 -182
  1211. data/lib/fisk/instructions/vsqrtpd.rb +143 -153
  1212. data/lib/fisk/instructions/vsqrtps.rb +143 -153
  1213. data/lib/fisk/instructions/vsqrtsd.rb +63 -67
  1214. data/lib/fisk/instructions/vsqrtss.rb +63 -67
  1215. data/lib/fisk/instructions/vstmxcsr.rb +15 -16
  1216. data/lib/fisk/instructions/vsubpd.rb +153 -163
  1217. data/lib/fisk/instructions/vsubps.rb +153 -163
  1218. data/lib/fisk/instructions/vsubsd.rb +63 -67
  1219. data/lib/fisk/instructions/vsubss.rb +63 -67
  1220. data/lib/fisk/instructions/vtestpd.rb +58 -62
  1221. data/lib/fisk/instructions/vtestps.rb +58 -62
  1222. data/lib/fisk/instructions/vucomisd.rb +59 -63
  1223. data/lib/fisk/instructions/vucomiss.rb +59 -63
  1224. data/lib/fisk/instructions/vunpckhpd.rb +152 -162
  1225. data/lib/fisk/instructions/vunpckhps.rb +152 -162
  1226. data/lib/fisk/instructions/vunpcklpd.rb +152 -162
  1227. data/lib/fisk/instructions/vunpcklps.rb +152 -162
  1228. data/lib/fisk/instructions/vxorpd.rb +152 -162
  1229. data/lib/fisk/instructions/vxorps.rb +152 -162
  1230. data/lib/fisk/instructions/vzeroall.rb +12 -13
  1231. data/lib/fisk/instructions/vzeroupper.rb +12 -13
  1232. data/lib/fisk/instructions/xadd.rb +132 -140
  1233. data/lib/fisk/instructions/xchg.rb +306 -328
  1234. data/lib/fisk/instructions/xgetbv.rb +13 -14
  1235. data/lib/fisk/instructions/xlatb.rb +22 -24
  1236. data/lib/fisk/instructions/xor.rb +505 -539
  1237. data/lib/fisk/instructions/xorpd.rb +36 -38
  1238. data/lib/fisk/instructions/xorps.rb +34 -36
  1239. data/lib/fisk/version.rb +1 -1
  1240. data/test/test_cfg.rb +1 -2
  1241. data/test/test_fisk.rb +228 -0
  1242. data/test/test_fisk_written_size.rb +21 -0
  1243. data/test/test_register_allocation.rb +19 -0
  1244. data/test/test_run_fisk.rb +16 -0
  1245. metadata +63 -3
@@ -3,77 +3,74 @@
3
3
  class Fisk
4
4
  module Instructions
5
5
  # Instruction RDRAND
6
- forms = []
7
- operands = []
8
- encodings = []
6
+ RDRAND = Instruction.new("RDRAND", [
9
7
  # rdrand: r16
10
- operands << OPERAND_TYPES[38]
11
- encodings << Class.new(Fisk::Encoding) {
12
- def encode buffer, operands
13
- add_prefix buffer, operands, 0x66, false
14
- add_rex(buffer, operands,
8
+ Form.new([
9
+ OPERAND_TYPES[38],
10
+ ].freeze, [
11
+ Class.new(Fisk::Encoding) {
12
+ def encode buffer, operands
13
+ add_prefix(buffer, operands, 0x66, false) +
14
+ add_rex(buffer, operands,
15
15
  false,
16
16
  0,
17
17
  0,
18
18
  0,
19
- operands[0].rex_value)
20
- add_opcode buffer, 0x0F, 0
21
- add_opcode buffer, 0xC7, 0
22
- add_modrm(buffer, operands,
19
+ operands[0].rex_value) +
20
+ add_opcode(buffer, 0x0F, 0) +
21
+ add_opcode(buffer, 0xC7, 0) +
22
+ add_modrm(buffer,
23
23
  3,
24
24
  6,
25
- operands[0].op_value)
26
- end
27
-
28
- def bytesize; 3; end
29
- }.new
30
- forms << Form.new(operands, encodings)
31
- operands = []
32
- encodings = []
25
+ operands[0].op_value, operands) +
26
+ 0
27
+ end
28
+ }.new.freeze,
29
+ ].freeze).freeze,
33
30
  # rdrand: r32
34
- operands << OPERAND_TYPES[27]
35
- encodings << Class.new(Fisk::Encoding) {
36
- def encode buffer, operands
37
- add_rex(buffer, operands,
31
+ Form.new([
32
+ OPERAND_TYPES[27],
33
+ ].freeze, [
34
+ Class.new(Fisk::Encoding) {
35
+ def encode buffer, operands
36
+ add_rex(buffer, operands,
38
37
  false,
39
38
  0,
40
39
  0,
41
40
  0,
42
- operands[0].rex_value)
43
- add_opcode buffer, 0x0F, 0
44
- add_opcode buffer, 0xC7, 0
45
- add_modrm(buffer, operands,
41
+ operands[0].rex_value) +
42
+ add_opcode(buffer, 0x0F, 0) +
43
+ add_opcode(buffer, 0xC7, 0) +
44
+ add_modrm(buffer,
46
45
  3,
47
46
  6,
48
- operands[0].op_value)
49
- end
50
-
51
- def bytesize; 3; end
52
- }.new
53
- forms << Form.new(operands, encodings)
54
- operands = []
55
- encodings = []
47
+ operands[0].op_value, operands) +
48
+ 0
49
+ end
50
+ }.new.freeze,
51
+ ].freeze).freeze,
56
52
  # rdrand: r64
57
- operands << OPERAND_TYPES[28]
58
- encodings << Class.new(Fisk::Encoding) {
59
- def encode buffer, operands
60
- add_rex(buffer, operands,
53
+ Form.new([
54
+ OPERAND_TYPES[28],
55
+ ].freeze, [
56
+ Class.new(Fisk::Encoding) {
57
+ def encode buffer, operands
58
+ add_rex(buffer, operands,
61
59
  true,
62
60
  1,
63
61
  0,
64
62
  0,
65
- operands[0].rex_value)
66
- add_opcode buffer, 0x0F, 0
67
- add_opcode buffer, 0xC7, 0
68
- add_modrm(buffer, operands,
63
+ operands[0].rex_value) +
64
+ add_opcode(buffer, 0x0F, 0) +
65
+ add_opcode(buffer, 0xC7, 0) +
66
+ add_modrm(buffer,
69
67
  3,
70
68
  6,
71
- operands[0].op_value)
72
- end
73
-
74
- def bytesize; 4; end
75
- }.new
76
- forms << Form.new(operands, encodings)
77
- RDRAND = Instruction.new("RDRAND", forms)
69
+ operands[0].op_value, operands) +
70
+ 0
71
+ end
72
+ }.new.freeze,
73
+ ].freeze).freeze,
74
+ ].freeze).freeze
78
75
  end
79
76
  end
@@ -3,77 +3,74 @@
3
3
  class Fisk
4
4
  module Instructions
5
5
  # Instruction RDSEED
6
- forms = []
7
- operands = []
8
- encodings = []
6
+ RDSEED = Instruction.new("RDSEED", [
9
7
  # rdseed: r16
10
- operands << OPERAND_TYPES[38]
11
- encodings << Class.new(Fisk::Encoding) {
12
- def encode buffer, operands
13
- add_prefix buffer, operands, 0x66, false
14
- add_rex(buffer, operands,
8
+ Form.new([
9
+ OPERAND_TYPES[38],
10
+ ].freeze, [
11
+ Class.new(Fisk::Encoding) {
12
+ def encode buffer, operands
13
+ add_prefix(buffer, operands, 0x66, false) +
14
+ add_rex(buffer, operands,
15
15
  false,
16
16
  0,
17
17
  0,
18
18
  0,
19
- operands[0].rex_value)
20
- add_opcode buffer, 0x0F, 0
21
- add_opcode buffer, 0xC7, 0
22
- add_modrm(buffer, operands,
19
+ operands[0].rex_value) +
20
+ add_opcode(buffer, 0x0F, 0) +
21
+ add_opcode(buffer, 0xC7, 0) +
22
+ add_modrm(buffer,
23
23
  3,
24
24
  7,
25
- operands[0].op_value)
26
- end
27
-
28
- def bytesize; 3; end
29
- }.new
30
- forms << Form.new(operands, encodings)
31
- operands = []
32
- encodings = []
25
+ operands[0].op_value, operands) +
26
+ 0
27
+ end
28
+ }.new.freeze,
29
+ ].freeze).freeze,
33
30
  # rdseed: r32
34
- operands << OPERAND_TYPES[27]
35
- encodings << Class.new(Fisk::Encoding) {
36
- def encode buffer, operands
37
- add_rex(buffer, operands,
31
+ Form.new([
32
+ OPERAND_TYPES[27],
33
+ ].freeze, [
34
+ Class.new(Fisk::Encoding) {
35
+ def encode buffer, operands
36
+ add_rex(buffer, operands,
38
37
  false,
39
38
  0,
40
39
  0,
41
40
  0,
42
- operands[0].rex_value)
43
- add_opcode buffer, 0x0F, 0
44
- add_opcode buffer, 0xC7, 0
45
- add_modrm(buffer, operands,
41
+ operands[0].rex_value) +
42
+ add_opcode(buffer, 0x0F, 0) +
43
+ add_opcode(buffer, 0xC7, 0) +
44
+ add_modrm(buffer,
46
45
  3,
47
46
  7,
48
- operands[0].op_value)
49
- end
50
-
51
- def bytesize; 3; end
52
- }.new
53
- forms << Form.new(operands, encodings)
54
- operands = []
55
- encodings = []
47
+ operands[0].op_value, operands) +
48
+ 0
49
+ end
50
+ }.new.freeze,
51
+ ].freeze).freeze,
56
52
  # rdseed: r64
57
- operands << OPERAND_TYPES[28]
58
- encodings << Class.new(Fisk::Encoding) {
59
- def encode buffer, operands
60
- add_rex(buffer, operands,
53
+ Form.new([
54
+ OPERAND_TYPES[28],
55
+ ].freeze, [
56
+ Class.new(Fisk::Encoding) {
57
+ def encode buffer, operands
58
+ add_rex(buffer, operands,
61
59
  true,
62
60
  1,
63
61
  0,
64
62
  0,
65
- operands[0].rex_value)
66
- add_opcode buffer, 0x0F, 0
67
- add_opcode buffer, 0xC7, 0
68
- add_modrm(buffer, operands,
63
+ operands[0].rex_value) +
64
+ add_opcode(buffer, 0x0F, 0) +
65
+ add_opcode(buffer, 0xC7, 0) +
66
+ add_modrm(buffer,
69
67
  3,
70
68
  7,
71
- operands[0].op_value)
72
- end
73
-
74
- def bytesize; 4; end
75
- }.new
76
- forms << Form.new(operands, encodings)
77
- RDSEED = Instruction.new("RDSEED", forms)
69
+ operands[0].op_value, operands) +
70
+ 0
71
+ end
72
+ }.new.freeze,
73
+ ].freeze).freeze,
74
+ ].freeze).freeze
78
75
  end
79
76
  end
@@ -3,19 +3,18 @@
3
3
  class Fisk
4
4
  module Instructions
5
5
  # Instruction RDTSC
6
- forms = []
7
- operands = []
8
- encodings = []
6
+ RDTSC = Instruction.new("RDTSC", [
9
7
  # rdtsc:
10
- encodings << Class.new(Fisk::Encoding) {
11
- def encode buffer, operands
12
- add_opcode buffer, 0x0F, 0
13
- add_opcode buffer, 0x31, 0
14
- end
15
-
16
- def bytesize; 2; end
17
- }.new
18
- forms << Form.new(operands, encodings)
19
- RDTSC = Instruction.new("RDTSC", forms)
8
+ Form.new([
9
+ ].freeze, [
10
+ Class.new(Fisk::Encoding) {
11
+ def encode buffer, operands
12
+ add_opcode(buffer, 0x0F, 0) +
13
+ add_opcode(buffer, 0x31, 0) +
14
+ 0
15
+ end
16
+ }.new.freeze,
17
+ ].freeze).freeze,
18
+ ].freeze).freeze
20
19
  end
21
20
  end
@@ -3,20 +3,19 @@
3
3
  class Fisk
4
4
  module Instructions
5
5
  # Instruction RDTSCP
6
- forms = []
7
- operands = []
8
- encodings = []
6
+ RDTSCP = Instruction.new("RDTSCP", [
9
7
  # rdtscp:
10
- encodings << Class.new(Fisk::Encoding) {
11
- def encode buffer, operands
12
- add_opcode buffer, 0x0F, 0
13
- add_opcode buffer, 0x01, 0
14
- add_opcode buffer, 0xF9, 0
15
- end
16
-
17
- def bytesize; 3; end
18
- }.new
19
- forms << Form.new(operands, encodings)
20
- RDTSCP = Instruction.new("RDTSCP", forms)
8
+ Form.new([
9
+ ].freeze, [
10
+ Class.new(Fisk::Encoding) {
11
+ def encode buffer, operands
12
+ add_opcode(buffer, 0x0F, 0) +
13
+ add_opcode(buffer, 0x01, 0) +
14
+ add_opcode(buffer, 0xF9, 0) +
15
+ 0
16
+ end
17
+ }.new.freeze,
18
+ ].freeze).freeze,
19
+ ].freeze).freeze
21
20
  end
22
21
  end
@@ -3,31 +3,29 @@
3
3
  class Fisk
4
4
  module Instructions
5
5
  # Instruction RET
6
- forms = []
7
- operands = []
8
- encodings = []
6
+ RET = Instruction.new("RET", [
9
7
  # ret:
10
- encodings << Class.new(Fisk::Encoding) {
11
- def encode buffer, operands
12
- add_opcode buffer, 0xC3, 0
13
- end
14
-
15
- def bytesize; 1; end
16
- }.new
17
- forms << Form.new(operands, encodings)
18
- operands = []
19
- encodings = []
8
+ Form.new([
9
+ ].freeze, [
10
+ Class.new(Fisk::Encoding) {
11
+ def encode buffer, operands
12
+ add_opcode(buffer, 0xC3, 0) +
13
+ 0
14
+ end
15
+ }.new.freeze,
16
+ ].freeze).freeze,
20
17
  # ret: imm16
21
- operands << OPERAND_TYPES[6]
22
- encodings << Class.new(Fisk::Encoding) {
23
- def encode buffer, operands
24
- add_opcode buffer, 0xC2, 0
25
- add_immediate buffer, operands[0].op_value, 2
26
- end
27
-
28
- def bytesize; 3; end
29
- }.new
30
- forms << Form.new(operands, encodings)
31
- RET = Instruction.new("RET", forms)
18
+ Form.new([
19
+ OPERAND_TYPES[6],
20
+ ].freeze, [
21
+ Class.new(Fisk::Encoding) {
22
+ def encode buffer, operands
23
+ add_opcode(buffer, 0xC2, 0) +
24
+ add_immediate(buffer, operands[0].op_value, 2) +
25
+ 0
26
+ end
27
+ }.new.freeze,
28
+ ].freeze).freeze,
29
+ ].freeze).freeze
32
30
  end
33
31
  end
@@ -3,573 +3,549 @@
3
3
  class Fisk
4
4
  module Instructions
5
5
  # Instruction ROL
6
- forms = []
7
- operands = []
8
- encodings = []
6
+ ROL = Instruction.new("ROL", [
9
7
  # rolb: r8, 1
10
- operands << OPERAND_TYPES[2]
11
- operands << OPERAND_TYPES[55]
12
- encodings << Class.new(Fisk::Encoding) {
13
- def encode buffer, operands
14
- add_rex(buffer, operands,
8
+ Form.new([
9
+ OPERAND_TYPES[2],
10
+ OPERAND_TYPES[55],
11
+ ].freeze, [
12
+ Class.new(Fisk::Encoding) {
13
+ def encode buffer, operands
14
+ add_rex(buffer, operands,
15
15
  false,
16
16
  0,
17
17
  0,
18
18
  0,
19
- operands[0].rex_value)
20
- add_opcode buffer, 0xD0, 0
21
- add_modrm(buffer, operands,
19
+ operands[0].rex_value) +
20
+ add_opcode(buffer, 0xD0, 0) +
21
+ add_modrm(buffer,
22
22
  3,
23
23
  0,
24
- operands[0].op_value)
25
- end
26
-
27
- def bytesize; 2; end
28
- }.new
29
- forms << Form.new(operands, encodings)
30
- operands = []
31
- encodings = []
24
+ operands[0].op_value, operands) +
25
+ 0
26
+ end
27
+ }.new.freeze,
28
+ ].freeze).freeze,
32
29
  # rolb: r8, imm8
33
- operands << OPERAND_TYPES[2]
34
- operands << OPERAND_TYPES[1]
35
- encodings << Class.new(Fisk::Encoding) {
36
- def encode buffer, operands
37
- add_rex(buffer, operands,
30
+ Form.new([
31
+ OPERAND_TYPES[2],
32
+ OPERAND_TYPES[1],
33
+ ].freeze, [
34
+ Class.new(Fisk::Encoding) {
35
+ def encode buffer, operands
36
+ add_rex(buffer, operands,
38
37
  false,
39
38
  0,
40
39
  0,
41
40
  0,
42
- operands[0].rex_value)
43
- add_opcode buffer, 0xC0, 0
44
- add_modrm(buffer, operands,
41
+ operands[0].rex_value) +
42
+ add_opcode(buffer, 0xC0, 0) +
43
+ add_modrm(buffer,
45
44
  3,
46
45
  0,
47
- operands[0].op_value)
48
- add_immediate buffer, operands[1].op_value, 1
49
- end
50
-
51
- def bytesize; 3; end
52
- }.new
53
- forms << Form.new(operands, encodings)
54
- operands = []
55
- encodings = []
46
+ operands[0].op_value, operands) +
47
+ add_immediate(buffer, operands[1].op_value, 1) +
48
+ 0
49
+ end
50
+ }.new.freeze,
51
+ ].freeze).freeze,
56
52
  # rolb: r8, cl
57
- operands << OPERAND_TYPES[2]
58
- operands << OPERAND_TYPES[56]
59
- encodings << Class.new(Fisk::Encoding) {
60
- def encode buffer, operands
61
- add_rex(buffer, operands,
53
+ Form.new([
54
+ OPERAND_TYPES[2],
55
+ OPERAND_TYPES[56],
56
+ ].freeze, [
57
+ Class.new(Fisk::Encoding) {
58
+ def encode buffer, operands
59
+ add_rex(buffer, operands,
62
60
  false,
63
61
  0,
64
62
  0,
65
63
  0,
66
- operands[0].rex_value)
67
- add_opcode buffer, 0xD2, 0
68
- add_modrm(buffer, operands,
64
+ operands[0].rex_value) +
65
+ add_opcode(buffer, 0xD2, 0) +
66
+ add_modrm(buffer,
69
67
  3,
70
68
  0,
71
- operands[0].op_value)
72
- end
73
-
74
- def bytesize; 2; end
75
- }.new
76
- forms << Form.new(operands, encodings)
77
- operands = []
78
- encodings = []
69
+ operands[0].op_value, operands) +
70
+ 0
71
+ end
72
+ }.new.freeze,
73
+ ].freeze).freeze,
79
74
  # rolw: r16, 1
80
- operands << OPERAND_TYPES[7]
81
- operands << OPERAND_TYPES[55]
82
- encodings << Class.new(Fisk::Encoding) {
83
- def encode buffer, operands
84
- add_prefix buffer, operands, 0x66, false
85
- add_rex(buffer, operands,
75
+ Form.new([
76
+ OPERAND_TYPES[7],
77
+ OPERAND_TYPES[55],
78
+ ].freeze, [
79
+ Class.new(Fisk::Encoding) {
80
+ def encode buffer, operands
81
+ add_prefix(buffer, operands, 0x66, false) +
82
+ add_rex(buffer, operands,
86
83
  false,
87
84
  0,
88
85
  0,
89
86
  0,
90
- operands[0].rex_value)
91
- add_opcode buffer, 0xD1, 0
92
- add_modrm(buffer, operands,
87
+ operands[0].rex_value) +
88
+ add_opcode(buffer, 0xD1, 0) +
89
+ add_modrm(buffer,
93
90
  3,
94
91
  0,
95
- operands[0].op_value)
96
- end
97
-
98
- def bytesize; 2; end
99
- }.new
100
- forms << Form.new(operands, encodings)
101
- operands = []
102
- encodings = []
92
+ operands[0].op_value, operands) +
93
+ 0
94
+ end
95
+ }.new.freeze,
96
+ ].freeze).freeze,
103
97
  # rolw: r16, imm8
104
- operands << OPERAND_TYPES[7]
105
- operands << OPERAND_TYPES[1]
106
- encodings << Class.new(Fisk::Encoding) {
107
- def encode buffer, operands
108
- add_prefix buffer, operands, 0x66, false
109
- add_rex(buffer, operands,
98
+ Form.new([
99
+ OPERAND_TYPES[7],
100
+ OPERAND_TYPES[1],
101
+ ].freeze, [
102
+ Class.new(Fisk::Encoding) {
103
+ def encode buffer, operands
104
+ add_prefix(buffer, operands, 0x66, false) +
105
+ add_rex(buffer, operands,
110
106
  false,
111
107
  0,
112
108
  0,
113
109
  0,
114
- operands[0].rex_value)
115
- add_opcode buffer, 0xC1, 0
116
- add_modrm(buffer, operands,
110
+ operands[0].rex_value) +
111
+ add_opcode(buffer, 0xC1, 0) +
112
+ add_modrm(buffer,
117
113
  3,
118
114
  0,
119
- operands[0].op_value)
120
- add_immediate buffer, operands[1].op_value, 1
121
- end
122
-
123
- def bytesize; 3; end
124
- }.new
125
- forms << Form.new(operands, encodings)
126
- operands = []
127
- encodings = []
115
+ operands[0].op_value, operands) +
116
+ add_immediate(buffer, operands[1].op_value, 1) +
117
+ 0
118
+ end
119
+ }.new.freeze,
120
+ ].freeze).freeze,
128
121
  # rolw: r16, cl
129
- operands << OPERAND_TYPES[7]
130
- operands << OPERAND_TYPES[56]
131
- encodings << Class.new(Fisk::Encoding) {
132
- def encode buffer, operands
133
- add_prefix buffer, operands, 0x66, false
134
- add_rex(buffer, operands,
122
+ Form.new([
123
+ OPERAND_TYPES[7],
124
+ OPERAND_TYPES[56],
125
+ ].freeze, [
126
+ Class.new(Fisk::Encoding) {
127
+ def encode buffer, operands
128
+ add_prefix(buffer, operands, 0x66, false) +
129
+ add_rex(buffer, operands,
135
130
  false,
136
131
  0,
137
132
  0,
138
133
  0,
139
- operands[0].rex_value)
140
- add_opcode buffer, 0xD3, 0
141
- add_modrm(buffer, operands,
134
+ operands[0].rex_value) +
135
+ add_opcode(buffer, 0xD3, 0) +
136
+ add_modrm(buffer,
142
137
  3,
143
138
  0,
144
- operands[0].op_value)
145
- end
146
-
147
- def bytesize; 2; end
148
- }.new
149
- forms << Form.new(operands, encodings)
150
- operands = []
151
- encodings = []
139
+ operands[0].op_value, operands) +
140
+ 0
141
+ end
142
+ }.new.freeze,
143
+ ].freeze).freeze,
152
144
  # roll: r32, 1
153
- operands << OPERAND_TYPES[12]
154
- operands << OPERAND_TYPES[55]
155
- encodings << Class.new(Fisk::Encoding) {
156
- def encode buffer, operands
157
- add_rex(buffer, operands,
145
+ Form.new([
146
+ OPERAND_TYPES[12],
147
+ OPERAND_TYPES[55],
148
+ ].freeze, [
149
+ Class.new(Fisk::Encoding) {
150
+ def encode buffer, operands
151
+ add_rex(buffer, operands,
158
152
  false,
159
153
  0,
160
154
  0,
161
155
  0,
162
- operands[0].rex_value)
163
- add_opcode buffer, 0xD1, 0
164
- add_modrm(buffer, operands,
156
+ operands[0].rex_value) +
157
+ add_opcode(buffer, 0xD1, 0) +
158
+ add_modrm(buffer,
165
159
  3,
166
160
  0,
167
- operands[0].op_value)
168
- end
169
-
170
- def bytesize; 2; end
171
- }.new
172
- forms << Form.new(operands, encodings)
173
- operands = []
174
- encodings = []
161
+ operands[0].op_value, operands) +
162
+ 0
163
+ end
164
+ }.new.freeze,
165
+ ].freeze).freeze,
175
166
  # roll: r32, imm8
176
- operands << OPERAND_TYPES[12]
177
- operands << OPERAND_TYPES[1]
178
- encodings << Class.new(Fisk::Encoding) {
179
- def encode buffer, operands
180
- add_rex(buffer, operands,
167
+ Form.new([
168
+ OPERAND_TYPES[12],
169
+ OPERAND_TYPES[1],
170
+ ].freeze, [
171
+ Class.new(Fisk::Encoding) {
172
+ def encode buffer, operands
173
+ add_rex(buffer, operands,
181
174
  false,
182
175
  0,
183
176
  0,
184
177
  0,
185
- operands[0].rex_value)
186
- add_opcode buffer, 0xC1, 0
187
- add_modrm(buffer, operands,
178
+ operands[0].rex_value) +
179
+ add_opcode(buffer, 0xC1, 0) +
180
+ add_modrm(buffer,
188
181
  3,
189
182
  0,
190
- operands[0].op_value)
191
- add_immediate buffer, operands[1].op_value, 1
192
- end
193
-
194
- def bytesize; 3; end
195
- }.new
196
- forms << Form.new(operands, encodings)
197
- operands = []
198
- encodings = []
183
+ operands[0].op_value, operands) +
184
+ add_immediate(buffer, operands[1].op_value, 1) +
185
+ 0
186
+ end
187
+ }.new.freeze,
188
+ ].freeze).freeze,
199
189
  # roll: r32, cl
200
- operands << OPERAND_TYPES[12]
201
- operands << OPERAND_TYPES[56]
202
- encodings << Class.new(Fisk::Encoding) {
203
- def encode buffer, operands
204
- add_rex(buffer, operands,
190
+ Form.new([
191
+ OPERAND_TYPES[12],
192
+ OPERAND_TYPES[56],
193
+ ].freeze, [
194
+ Class.new(Fisk::Encoding) {
195
+ def encode buffer, operands
196
+ add_rex(buffer, operands,
205
197
  false,
206
198
  0,
207
199
  0,
208
200
  0,
209
- operands[0].rex_value)
210
- add_opcode buffer, 0xD3, 0
211
- add_modrm(buffer, operands,
201
+ operands[0].rex_value) +
202
+ add_opcode(buffer, 0xD3, 0) +
203
+ add_modrm(buffer,
212
204
  3,
213
205
  0,
214
- operands[0].op_value)
215
- end
216
-
217
- def bytesize; 2; end
218
- }.new
219
- forms << Form.new(operands, encodings)
220
- operands = []
221
- encodings = []
206
+ operands[0].op_value, operands) +
207
+ 0
208
+ end
209
+ }.new.freeze,
210
+ ].freeze).freeze,
222
211
  # rolq: r64, 1
223
- operands << OPERAND_TYPES[16]
224
- operands << OPERAND_TYPES[55]
225
- encodings << Class.new(Fisk::Encoding) {
226
- def encode buffer, operands
227
- add_rex(buffer, operands,
212
+ Form.new([
213
+ OPERAND_TYPES[16],
214
+ OPERAND_TYPES[55],
215
+ ].freeze, [
216
+ Class.new(Fisk::Encoding) {
217
+ def encode buffer, operands
218
+ add_rex(buffer, operands,
228
219
  true,
229
220
  1,
230
221
  0,
231
222
  0,
232
- operands[0].rex_value)
233
- add_opcode buffer, 0xD1, 0
234
- add_modrm(buffer, operands,
223
+ operands[0].rex_value) +
224
+ add_opcode(buffer, 0xD1, 0) +
225
+ add_modrm(buffer,
235
226
  3,
236
227
  0,
237
- operands[0].op_value)
238
- end
239
-
240
- def bytesize; 3; end
241
- }.new
242
- forms << Form.new(operands, encodings)
243
- operands = []
244
- encodings = []
228
+ operands[0].op_value, operands) +
229
+ 0
230
+ end
231
+ }.new.freeze,
232
+ ].freeze).freeze,
245
233
  # rolq: r64, imm8
246
- operands << OPERAND_TYPES[16]
247
- operands << OPERAND_TYPES[1]
248
- encodings << Class.new(Fisk::Encoding) {
249
- def encode buffer, operands
250
- add_rex(buffer, operands,
234
+ Form.new([
235
+ OPERAND_TYPES[16],
236
+ OPERAND_TYPES[1],
237
+ ].freeze, [
238
+ Class.new(Fisk::Encoding) {
239
+ def encode buffer, operands
240
+ add_rex(buffer, operands,
251
241
  true,
252
242
  1,
253
243
  0,
254
244
  0,
255
- operands[0].rex_value)
256
- add_opcode buffer, 0xC1, 0
257
- add_modrm(buffer, operands,
245
+ operands[0].rex_value) +
246
+ add_opcode(buffer, 0xC1, 0) +
247
+ add_modrm(buffer,
258
248
  3,
259
249
  0,
260
- operands[0].op_value)
261
- add_immediate buffer, operands[1].op_value, 1
262
- end
263
-
264
- def bytesize; 4; end
265
- }.new
266
- forms << Form.new(operands, encodings)
267
- operands = []
268
- encodings = []
250
+ operands[0].op_value, operands) +
251
+ add_immediate(buffer, operands[1].op_value, 1) +
252
+ 0
253
+ end
254
+ }.new.freeze,
255
+ ].freeze).freeze,
269
256
  # rolq: r64, cl
270
- operands << OPERAND_TYPES[16]
271
- operands << OPERAND_TYPES[56]
272
- encodings << Class.new(Fisk::Encoding) {
273
- def encode buffer, operands
274
- add_rex(buffer, operands,
257
+ Form.new([
258
+ OPERAND_TYPES[16],
259
+ OPERAND_TYPES[56],
260
+ ].freeze, [
261
+ Class.new(Fisk::Encoding) {
262
+ def encode buffer, operands
263
+ add_rex(buffer, operands,
275
264
  true,
276
265
  1,
277
266
  0,
278
267
  0,
279
- operands[0].rex_value)
280
- add_opcode buffer, 0xD3, 0
281
- add_modrm(buffer, operands,
268
+ operands[0].rex_value) +
269
+ add_opcode(buffer, 0xD3, 0) +
270
+ add_modrm(buffer,
282
271
  3,
283
272
  0,
284
- operands[0].op_value)
285
- end
286
-
287
- def bytesize; 3; end
288
- }.new
289
- forms << Form.new(operands, encodings)
290
- operands = []
291
- encodings = []
273
+ operands[0].op_value, operands) +
274
+ 0
275
+ end
276
+ }.new.freeze,
277
+ ].freeze).freeze,
292
278
  # rolb: m8, 1
293
- operands << OPERAND_TYPES[19]
294
- operands << OPERAND_TYPES[55]
295
- encodings << Class.new(Fisk::Encoding) {
296
- def encode buffer, operands
297
- add_rex(buffer, operands,
279
+ Form.new([
280
+ OPERAND_TYPES[19],
281
+ OPERAND_TYPES[55],
282
+ ].freeze, [
283
+ Class.new(Fisk::Encoding) {
284
+ def encode buffer, operands
285
+ add_rex(buffer, operands,
298
286
  false,
299
287
  0,
300
288
  0,
301
289
  operands[0].rex_value,
302
- operands[0].rex_value)
303
- add_opcode buffer, 0xD0, 0
304
- add_modrm(buffer, operands,
290
+ operands[0].rex_value) +
291
+ add_opcode(buffer, 0xD0, 0) +
292
+ add_modrm(buffer,
305
293
  0,
306
294
  0,
307
- operands[0].op_value)
308
- end
309
-
310
- def bytesize; 2; end
311
- }.new
312
- forms << Form.new(operands, encodings)
313
- operands = []
314
- encodings = []
295
+ operands[0].op_value, operands) +
296
+ 0
297
+ end
298
+ }.new.freeze,
299
+ ].freeze).freeze,
315
300
  # rolb: m8, imm8
316
- operands << OPERAND_TYPES[19]
317
- operands << OPERAND_TYPES[1]
318
- encodings << Class.new(Fisk::Encoding) {
319
- def encode buffer, operands
320
- add_rex(buffer, operands,
301
+ Form.new([
302
+ OPERAND_TYPES[19],
303
+ OPERAND_TYPES[1],
304
+ ].freeze, [
305
+ Class.new(Fisk::Encoding) {
306
+ def encode buffer, operands
307
+ add_rex(buffer, operands,
321
308
  false,
322
309
  0,
323
310
  0,
324
311
  operands[0].rex_value,
325
- operands[0].rex_value)
326
- add_opcode buffer, 0xC0, 0
327
- add_modrm(buffer, operands,
312
+ operands[0].rex_value) +
313
+ add_opcode(buffer, 0xC0, 0) +
314
+ add_modrm(buffer,
328
315
  0,
329
316
  0,
330
- operands[0].op_value)
331
- add_immediate buffer, operands[1].op_value, 1
332
- end
333
-
334
- def bytesize; 3; end
335
- }.new
336
- forms << Form.new(operands, encodings)
337
- operands = []
338
- encodings = []
317
+ operands[0].op_value, operands) +
318
+ add_immediate(buffer, operands[1].op_value, 1) +
319
+ 0
320
+ end
321
+ }.new.freeze,
322
+ ].freeze).freeze,
339
323
  # rolb: m8, cl
340
- operands << OPERAND_TYPES[19]
341
- operands << OPERAND_TYPES[56]
342
- encodings << Class.new(Fisk::Encoding) {
343
- def encode buffer, operands
344
- add_rex(buffer, operands,
324
+ Form.new([
325
+ OPERAND_TYPES[19],
326
+ OPERAND_TYPES[56],
327
+ ].freeze, [
328
+ Class.new(Fisk::Encoding) {
329
+ def encode buffer, operands
330
+ add_rex(buffer, operands,
345
331
  false,
346
332
  0,
347
333
  0,
348
334
  operands[0].rex_value,
349
- operands[0].rex_value)
350
- add_opcode buffer, 0xD2, 0
351
- add_modrm(buffer, operands,
335
+ operands[0].rex_value) +
336
+ add_opcode(buffer, 0xD2, 0) +
337
+ add_modrm(buffer,
352
338
  0,
353
339
  0,
354
- operands[0].op_value)
355
- end
356
-
357
- def bytesize; 2; end
358
- }.new
359
- forms << Form.new(operands, encodings)
360
- operands = []
361
- encodings = []
340
+ operands[0].op_value, operands) +
341
+ 0
342
+ end
343
+ }.new.freeze,
344
+ ].freeze).freeze,
362
345
  # rolw: m16, 1
363
- operands << OPERAND_TYPES[20]
364
- operands << OPERAND_TYPES[55]
365
- encodings << Class.new(Fisk::Encoding) {
366
- def encode buffer, operands
367
- add_prefix buffer, operands, 0x66, false
368
- add_rex(buffer, operands,
346
+ Form.new([
347
+ OPERAND_TYPES[20],
348
+ OPERAND_TYPES[55],
349
+ ].freeze, [
350
+ Class.new(Fisk::Encoding) {
351
+ def encode buffer, operands
352
+ add_prefix(buffer, operands, 0x66, false) +
353
+ add_rex(buffer, operands,
369
354
  false,
370
355
  0,
371
356
  0,
372
357
  operands[0].rex_value,
373
- operands[0].rex_value)
374
- add_opcode buffer, 0xD1, 0
375
- add_modrm(buffer, operands,
358
+ operands[0].rex_value) +
359
+ add_opcode(buffer, 0xD1, 0) +
360
+ add_modrm(buffer,
376
361
  0,
377
362
  0,
378
- operands[0].op_value)
379
- end
380
-
381
- def bytesize; 2; end
382
- }.new
383
- forms << Form.new(operands, encodings)
384
- operands = []
385
- encodings = []
363
+ operands[0].op_value, operands) +
364
+ 0
365
+ end
366
+ }.new.freeze,
367
+ ].freeze).freeze,
386
368
  # rolw: m16, imm8
387
- operands << OPERAND_TYPES[20]
388
- operands << OPERAND_TYPES[1]
389
- encodings << Class.new(Fisk::Encoding) {
390
- def encode buffer, operands
391
- add_prefix buffer, operands, 0x66, false
392
- add_rex(buffer, operands,
369
+ Form.new([
370
+ OPERAND_TYPES[20],
371
+ OPERAND_TYPES[1],
372
+ ].freeze, [
373
+ Class.new(Fisk::Encoding) {
374
+ def encode buffer, operands
375
+ add_prefix(buffer, operands, 0x66, false) +
376
+ add_rex(buffer, operands,
393
377
  false,
394
378
  0,
395
379
  0,
396
380
  operands[0].rex_value,
397
- operands[0].rex_value)
398
- add_opcode buffer, 0xC1, 0
399
- add_modrm(buffer, operands,
381
+ operands[0].rex_value) +
382
+ add_opcode(buffer, 0xC1, 0) +
383
+ add_modrm(buffer,
400
384
  0,
401
385
  0,
402
- operands[0].op_value)
403
- add_immediate buffer, operands[1].op_value, 1
404
- end
405
-
406
- def bytesize; 3; end
407
- }.new
408
- forms << Form.new(operands, encodings)
409
- operands = []
410
- encodings = []
386
+ operands[0].op_value, operands) +
387
+ add_immediate(buffer, operands[1].op_value, 1) +
388
+ 0
389
+ end
390
+ }.new.freeze,
391
+ ].freeze).freeze,
411
392
  # rolw: m16, cl
412
- operands << OPERAND_TYPES[20]
413
- operands << OPERAND_TYPES[56]
414
- encodings << Class.new(Fisk::Encoding) {
415
- def encode buffer, operands
416
- add_prefix buffer, operands, 0x66, false
417
- add_rex(buffer, operands,
393
+ Form.new([
394
+ OPERAND_TYPES[20],
395
+ OPERAND_TYPES[56],
396
+ ].freeze, [
397
+ Class.new(Fisk::Encoding) {
398
+ def encode buffer, operands
399
+ add_prefix(buffer, operands, 0x66, false) +
400
+ add_rex(buffer, operands,
418
401
  false,
419
402
  0,
420
403
  0,
421
404
  operands[0].rex_value,
422
- operands[0].rex_value)
423
- add_opcode buffer, 0xD3, 0
424
- add_modrm(buffer, operands,
405
+ operands[0].rex_value) +
406
+ add_opcode(buffer, 0xD3, 0) +
407
+ add_modrm(buffer,
425
408
  0,
426
409
  0,
427
- operands[0].op_value)
428
- end
429
-
430
- def bytesize; 2; end
431
- }.new
432
- forms << Form.new(operands, encodings)
433
- operands = []
434
- encodings = []
410
+ operands[0].op_value, operands) +
411
+ 0
412
+ end
413
+ }.new.freeze,
414
+ ].freeze).freeze,
435
415
  # roll: m32, 1
436
- operands << OPERAND_TYPES[21]
437
- operands << OPERAND_TYPES[55]
438
- encodings << Class.new(Fisk::Encoding) {
439
- def encode buffer, operands
440
- add_rex(buffer, operands,
416
+ Form.new([
417
+ OPERAND_TYPES[21],
418
+ OPERAND_TYPES[55],
419
+ ].freeze, [
420
+ Class.new(Fisk::Encoding) {
421
+ def encode buffer, operands
422
+ add_rex(buffer, operands,
441
423
  false,
442
424
  0,
443
425
  0,
444
426
  operands[0].rex_value,
445
- operands[0].rex_value)
446
- add_opcode buffer, 0xD1, 0
447
- add_modrm(buffer, operands,
427
+ operands[0].rex_value) +
428
+ add_opcode(buffer, 0xD1, 0) +
429
+ add_modrm(buffer,
448
430
  0,
449
431
  0,
450
- operands[0].op_value)
451
- end
452
-
453
- def bytesize; 2; end
454
- }.new
455
- forms << Form.new(operands, encodings)
456
- operands = []
457
- encodings = []
432
+ operands[0].op_value, operands) +
433
+ 0
434
+ end
435
+ }.new.freeze,
436
+ ].freeze).freeze,
458
437
  # roll: m32, imm8
459
- operands << OPERAND_TYPES[21]
460
- operands << OPERAND_TYPES[1]
461
- encodings << Class.new(Fisk::Encoding) {
462
- def encode buffer, operands
463
- add_rex(buffer, operands,
438
+ Form.new([
439
+ OPERAND_TYPES[21],
440
+ OPERAND_TYPES[1],
441
+ ].freeze, [
442
+ Class.new(Fisk::Encoding) {
443
+ def encode buffer, operands
444
+ add_rex(buffer, operands,
464
445
  false,
465
446
  0,
466
447
  0,
467
448
  operands[0].rex_value,
468
- operands[0].rex_value)
469
- add_opcode buffer, 0xC1, 0
470
- add_modrm(buffer, operands,
449
+ operands[0].rex_value) +
450
+ add_opcode(buffer, 0xC1, 0) +
451
+ add_modrm(buffer,
471
452
  0,
472
453
  0,
473
- operands[0].op_value)
474
- add_immediate buffer, operands[1].op_value, 1
475
- end
476
-
477
- def bytesize; 3; end
478
- }.new
479
- forms << Form.new(operands, encodings)
480
- operands = []
481
- encodings = []
454
+ operands[0].op_value, operands) +
455
+ add_immediate(buffer, operands[1].op_value, 1) +
456
+ 0
457
+ end
458
+ }.new.freeze,
459
+ ].freeze).freeze,
482
460
  # roll: m32, cl
483
- operands << OPERAND_TYPES[21]
484
- operands << OPERAND_TYPES[56]
485
- encodings << Class.new(Fisk::Encoding) {
486
- def encode buffer, operands
487
- add_rex(buffer, operands,
461
+ Form.new([
462
+ OPERAND_TYPES[21],
463
+ OPERAND_TYPES[56],
464
+ ].freeze, [
465
+ Class.new(Fisk::Encoding) {
466
+ def encode buffer, operands
467
+ add_rex(buffer, operands,
488
468
  false,
489
469
  0,
490
470
  0,
491
471
  operands[0].rex_value,
492
- operands[0].rex_value)
493
- add_opcode buffer, 0xD3, 0
494
- add_modrm(buffer, operands,
472
+ operands[0].rex_value) +
473
+ add_opcode(buffer, 0xD3, 0) +
474
+ add_modrm(buffer,
495
475
  0,
496
476
  0,
497
- operands[0].op_value)
498
- end
499
-
500
- def bytesize; 2; end
501
- }.new
502
- forms << Form.new(operands, encodings)
503
- operands = []
504
- encodings = []
477
+ operands[0].op_value, operands) +
478
+ 0
479
+ end
480
+ }.new.freeze,
481
+ ].freeze).freeze,
505
482
  # rolq: m64, 1
506
- operands << OPERAND_TYPES[22]
507
- operands << OPERAND_TYPES[55]
508
- encodings << Class.new(Fisk::Encoding) {
509
- def encode buffer, operands
510
- add_rex(buffer, operands,
483
+ Form.new([
484
+ OPERAND_TYPES[22],
485
+ OPERAND_TYPES[55],
486
+ ].freeze, [
487
+ Class.new(Fisk::Encoding) {
488
+ def encode buffer, operands
489
+ add_rex(buffer, operands,
511
490
  true,
512
491
  1,
513
492
  0,
514
493
  operands[0].rex_value,
515
- operands[0].rex_value)
516
- add_opcode buffer, 0xD1, 0
517
- add_modrm(buffer, operands,
494
+ operands[0].rex_value) +
495
+ add_opcode(buffer, 0xD1, 0) +
496
+ add_modrm(buffer,
518
497
  0,
519
498
  0,
520
- operands[0].op_value)
521
- end
522
-
523
- def bytesize; 3; end
524
- }.new
525
- forms << Form.new(operands, encodings)
526
- operands = []
527
- encodings = []
499
+ operands[0].op_value, operands) +
500
+ 0
501
+ end
502
+ }.new.freeze,
503
+ ].freeze).freeze,
528
504
  # rolq: m64, imm8
529
- operands << OPERAND_TYPES[22]
530
- operands << OPERAND_TYPES[1]
531
- encodings << Class.new(Fisk::Encoding) {
532
- def encode buffer, operands
533
- add_rex(buffer, operands,
505
+ Form.new([
506
+ OPERAND_TYPES[22],
507
+ OPERAND_TYPES[1],
508
+ ].freeze, [
509
+ Class.new(Fisk::Encoding) {
510
+ def encode buffer, operands
511
+ add_rex(buffer, operands,
534
512
  true,
535
513
  1,
536
514
  0,
537
515
  operands[0].rex_value,
538
- operands[0].rex_value)
539
- add_opcode buffer, 0xC1, 0
540
- add_modrm(buffer, operands,
516
+ operands[0].rex_value) +
517
+ add_opcode(buffer, 0xC1, 0) +
518
+ add_modrm(buffer,
541
519
  0,
542
520
  0,
543
- operands[0].op_value)
544
- add_immediate buffer, operands[1].op_value, 1
545
- end
546
-
547
- def bytesize; 4; end
548
- }.new
549
- forms << Form.new(operands, encodings)
550
- operands = []
551
- encodings = []
521
+ operands[0].op_value, operands) +
522
+ add_immediate(buffer, operands[1].op_value, 1) +
523
+ 0
524
+ end
525
+ }.new.freeze,
526
+ ].freeze).freeze,
552
527
  # rolq: m64, cl
553
- operands << OPERAND_TYPES[22]
554
- operands << OPERAND_TYPES[56]
555
- encodings << Class.new(Fisk::Encoding) {
556
- def encode buffer, operands
557
- add_rex(buffer, operands,
528
+ Form.new([
529
+ OPERAND_TYPES[22],
530
+ OPERAND_TYPES[56],
531
+ ].freeze, [
532
+ Class.new(Fisk::Encoding) {
533
+ def encode buffer, operands
534
+ add_rex(buffer, operands,
558
535
  true,
559
536
  1,
560
537
  0,
561
538
  operands[0].rex_value,
562
- operands[0].rex_value)
563
- add_opcode buffer, 0xD3, 0
564
- add_modrm(buffer, operands,
539
+ operands[0].rex_value) +
540
+ add_opcode(buffer, 0xD3, 0) +
541
+ add_modrm(buffer,
565
542
  0,
566
543
  0,
567
- operands[0].op_value)
568
- end
569
-
570
- def bytesize; 3; end
571
- }.new
572
- forms << Form.new(operands, encodings)
573
- ROL = Instruction.new("ROL", forms)
544
+ operands[0].op_value, operands) +
545
+ 0
546
+ end
547
+ }.new.freeze,
548
+ ].freeze).freeze,
549
+ ].freeze).freeze
574
550
  end
575
551
  end