fisk 2.0.0 → 2.3.1

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