program.inc 18 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003
  1. randomx_isn_0:
  2. ; IROR_R r3, 30
  3. ror r11, 30
  4. randomx_isn_1:
  5. ; FSUB_M f1, L1[r7]
  6. mov eax, r15d
  7. and eax, 16376
  8. cvtdq2pd xmm12, qword ptr [rsi+rax]
  9. subpd xmm1, xmm12
  10. randomx_isn_2:
  11. ; IXOR_R r3, 1860630909
  12. xor r11, 1860630909
  13. randomx_isn_3:
  14. ; IROR_R r5, r7
  15. mov ecx, r15d
  16. ror r13, cl
  17. randomx_isn_4:
  18. ; IXOR_R r3, r4
  19. xor r11, r12
  20. randomx_isn_5:
  21. ; IROR_R r4, r0
  22. mov ecx, r8d
  23. ror r12, cl
  24. randomx_isn_6:
  25. ; FSQRT_R e3
  26. sqrtpd xmm7, xmm7
  27. randomx_isn_7:
  28. ; ISTORE L1[r0], r3
  29. mov eax, r8d
  30. and eax, 16376
  31. mov qword ptr [rsi+rax], r11
  32. randomx_isn_8:
  33. ; FMUL_R e1, a1
  34. mulpd xmm5, xmm9
  35. randomx_isn_9:
  36. ; FMUL_R e0, a1
  37. mulpd xmm4, xmm9
  38. randomx_isn_10:
  39. ; IMUL_M r2, L1[r1]
  40. mov eax, r9d
  41. and eax, 16376
  42. imul r10, qword ptr [rsi+rax]
  43. randomx_isn_11:
  44. ; ISTORE L1[r3], r1
  45. mov eax, r11d
  46. and eax, 16376
  47. mov qword ptr [rsi+rax], r9
  48. randomx_isn_12:
  49. ; IMUL_R r7, r4
  50. imul r15, r12
  51. randomx_isn_13:
  52. ; FSQRT_R e2
  53. sqrtpd xmm6, xmm6
  54. randomx_isn_14:
  55. ; FSQRT_R e2
  56. sqrtpd xmm6, xmm6
  57. randomx_isn_15:
  58. ; IADD_R r6, r2
  59. add r14, r10
  60. randomx_isn_16:
  61. ; FSUB_M f2, L1[r1]
  62. mov eax, r9d
  63. and eax, 16376
  64. cvtdq2pd xmm12, qword ptr [rsi+rax]
  65. subpd xmm2, xmm12
  66. randomx_isn_17:
  67. ; IROR_R r4, r3
  68. mov ecx, r11d
  69. ror r12, cl
  70. randomx_isn_18:
  71. ; ISTORE L1[r4], r4
  72. mov eax, r12d
  73. and eax, 16376
  74. mov qword ptr [rsi+rax], r12
  75. randomx_isn_19:
  76. ; FMUL_R e1, a2
  77. mulpd xmm5, xmm10
  78. randomx_isn_20:
  79. ; COND_R r6, of(r3, 1593588996), 1
  80. add r8, 2
  81. test r8, 254
  82. jz randomx_isn_0
  83. xor ecx, ecx
  84. cmp r11d, 1593588996
  85. seto cl
  86. add r14, rcx
  87. randomx_isn_21:
  88. ; IXOR_M r7, L1[r2]
  89. mov eax, r10d
  90. and eax, 16376
  91. xor r15, qword ptr [rsi+rax]
  92. randomx_isn_22:
  93. ; IXOR_M r1, L1[r0]
  94. mov eax, r8d
  95. and eax, 16376
  96. xor r9, qword ptr [rsi+rax]
  97. randomx_isn_23:
  98. ; FMUL_R e2, a0
  99. mulpd xmm6, xmm8
  100. randomx_isn_24:
  101. ; COND_R r6, no(r0, 149087159), 6
  102. add r8, 64
  103. test r8, 8128
  104. jz randomx_isn_21
  105. xor ecx, ecx
  106. cmp r8d, 149087159
  107. setno cl
  108. add r14, rcx
  109. randomx_isn_25:
  110. ; FADD_R f3, a0
  111. addpd xmm3, xmm8
  112. randomx_isn_26:
  113. ; IADD_R r7, r0
  114. add r15, r8
  115. randomx_isn_27:
  116. ; IMUL_R r2, r3
  117. imul r10, r11
  118. randomx_isn_28:
  119. ; IADD_R r5, r7
  120. add r13, r15
  121. randomx_isn_29:
  122. ; ISTORE L2[r6], r2
  123. mov eax, r14d
  124. and eax, 262136
  125. mov qword ptr [rsi+rax], r10
  126. randomx_isn_30:
  127. ; ISTORE L1[r7], r5
  128. mov eax, r15d
  129. and eax, 16376
  130. mov qword ptr [rsi+rax], r13
  131. randomx_isn_31:
  132. ; FSUB_R f1, a2
  133. subpd xmm1, xmm10
  134. randomx_isn_32:
  135. ; IMUL_R r3, r5
  136. imul r11, r13
  137. randomx_isn_33:
  138. ; IROR_R r1, 20
  139. ror r9, 20
  140. randomx_isn_34:
  141. ; FSCAL_R f1
  142. xorps xmm1, xmm15
  143. randomx_isn_35:
  144. ; IMUL_R r6, 835132161
  145. imul r14, 835132161
  146. randomx_isn_36:
  147. ; IADD_M r3, L1[r4]
  148. mov eax, r12d
  149. and eax, 16376
  150. add r11, qword ptr [rsi+rax]
  151. randomx_isn_37:
  152. ; IMUL_9C r6, 1885029796
  153. lea r14, [r14+r14*8+1885029796]
  154. randomx_isn_38:
  155. ; FSCAL_R f2
  156. xorps xmm2, xmm15
  157. randomx_isn_39:
  158. ; ISUB_M r5, L1[r0]
  159. mov eax, r8d
  160. and eax, 16376
  161. sub r13, qword ptr [rsi+rax]
  162. randomx_isn_40:
  163. ; IMUL_R r7, r2
  164. imul r15, r10
  165. randomx_isn_41:
  166. ; FMUL_R e1, a0
  167. mulpd xmm5, xmm8
  168. randomx_isn_42:
  169. ; IXOR_R r5, r0
  170. xor r13, r8
  171. randomx_isn_43:
  172. ; FSWAP_R e0
  173. shufpd xmm4, xmm4, 1
  174. randomx_isn_44:
  175. ; FADD_R f1, a2
  176. addpd xmm1, xmm10
  177. randomx_isn_45:
  178. ; ISTORE L1[r0], r5
  179. mov eax, r8d
  180. and eax, 16376
  181. mov qword ptr [rsi+rax], r13
  182. randomx_isn_46:
  183. ; IADD_M r0, L2[r7]
  184. mov eax, r15d
  185. and eax, 262136
  186. add r8, qword ptr [rsi+rax]
  187. randomx_isn_47:
  188. ; IXOR_R r5, r2
  189. xor r13, r10
  190. randomx_isn_48:
  191. ; FSUB_R f3, a3
  192. subpd xmm3, xmm11
  193. randomx_isn_49:
  194. ; FMUL_R e3, a3
  195. mulpd xmm7, xmm11
  196. randomx_isn_50:
  197. ; FSUB_R f3, a0
  198. subpd xmm3, xmm8
  199. randomx_isn_51:
  200. ; COND_R r2, be(r3, -1975981803), 7
  201. add r12, 128
  202. test r12, 16256
  203. jz randomx_isn_25
  204. xor ecx, ecx
  205. cmp r11d, -1975981803
  206. setbe cl
  207. add r10, rcx
  208. randomx_isn_52:
  209. ; IADD_RC r1, r1, 878232328
  210. lea r9, [r9+r9+878232328]
  211. randomx_isn_53:
  212. ; FSUB_R f2, a0
  213. subpd xmm2, xmm8
  214. randomx_isn_54:
  215. ; COND_R r5, ns(r1, 1917049931), 6
  216. add r8, 64
  217. test r8, 8128
  218. jz randomx_isn_52
  219. xor ecx, ecx
  220. cmp r9d, 1917049931
  221. setns cl
  222. add r13, rcx
  223. randomx_isn_55:
  224. ; IXOR_R r2, r3
  225. xor r10, r11
  226. randomx_isn_56:
  227. ; FSCAL_R f0
  228. xorps xmm0, xmm15
  229. randomx_isn_57:
  230. ; IMUL_R r5, r1
  231. imul r13, r9
  232. randomx_isn_58:
  233. ; IADD_R r5, r1
  234. add r13, r9
  235. randomx_isn_59:
  236. ; FMUL_R e2, a2
  237. mulpd xmm6, xmm10
  238. randomx_isn_60:
  239. ; IROR_R r2, r6
  240. mov ecx, r14d
  241. ror r10, cl
  242. randomx_isn_61:
  243. ; IADD_RC r0, r3, 553576025
  244. lea r8, [r8+r11+553576025]
  245. randomx_isn_62:
  246. ; FSQRT_R e3
  247. sqrtpd xmm7, xmm7
  248. randomx_isn_63:
  249. ; IMUL_9C r6, -1165860156
  250. lea r14, [r14+r14*8-1165860156]
  251. randomx_isn_64:
  252. ; IMUL_9C r5, -1323706896
  253. lea r13, [r13+r13*8-1323706896]
  254. randomx_isn_65:
  255. ; IMUL_RCP r5, 2362240456
  256. mov rax, 16769707400664451577
  257. imul r13, rax
  258. randomx_isn_66:
  259. ; ISUB_R r4, 841292629
  260. sub r12, 841292629
  261. randomx_isn_67:
  262. ; IADD_M r4, L1[r6]
  263. mov eax, r14d
  264. and eax, 16376
  265. add r12, qword ptr [rsi+rax]
  266. randomx_isn_68:
  267. ; FSUB_M f3, L1[r4]
  268. mov eax, r12d
  269. and eax, 16376
  270. cvtdq2pd xmm12, qword ptr [rsi+rax]
  271. subpd xmm3, xmm12
  272. randomx_isn_69:
  273. ; IADD_RC r6, r4, -1863144764
  274. lea r14, [r14+r12-1863144764]
  275. randomx_isn_70:
  276. ; FSUB_M f1, L1[r5]
  277. mov eax, r13d
  278. and eax, 16376
  279. cvtdq2pd xmm12, qword ptr [rsi+rax]
  280. subpd xmm1, xmm12
  281. randomx_isn_71:
  282. ; FSWAP_R e1
  283. shufpd xmm5, xmm5, 1
  284. randomx_isn_72:
  285. ; FADD_R f2, a0
  286. addpd xmm2, xmm8
  287. randomx_isn_73:
  288. ; FMUL_R e0, a0
  289. mulpd xmm4, xmm8
  290. randomx_isn_74:
  291. ; COND_R r6, ns(r3, -1200328848), 2
  292. add r9, 4
  293. test r9, 508
  294. jz randomx_isn_55
  295. xor ecx, ecx
  296. cmp r11d, -1200328848
  297. setns cl
  298. add r14, rcx
  299. randomx_isn_75:
  300. ; FMUL_R e0, a3
  301. mulpd xmm4, xmm11
  302. randomx_isn_76:
  303. ; FDIV_M e3, L1[r4]
  304. mov eax, r12d
  305. and eax, 16376
  306. cvtdq2pd xmm12, qword ptr [rsi+rax]
  307. andps xmm12, xmm13
  308. orps xmm12, xmm14
  309. divpd xmm7, xmm12
  310. randomx_isn_77:
  311. ; FADD_R f1, a2
  312. addpd xmm1, xmm10
  313. randomx_isn_78:
  314. ; FMUL_R e2, a1
  315. mulpd xmm6, xmm9
  316. randomx_isn_79:
  317. ; IADD_RC r3, r1, -919815727
  318. lea r11, [r11+r9-919815727]
  319. randomx_isn_80:
  320. ; ISTORE L1[r2], r4
  321. mov eax, r10d
  322. and eax, 16376
  323. mov qword ptr [rsi+rax], r12
  324. randomx_isn_81:
  325. ; IMULH_R r3, r0
  326. mov rax, r11
  327. mul r8
  328. mov r11, rdx
  329. randomx_isn_82:
  330. ; IXOR_R r2, r6
  331. xor r10, r14
  332. randomx_isn_83:
  333. ; FSUB_R f0, a2
  334. subpd xmm0, xmm10
  335. randomx_isn_84:
  336. ; ISMULH_R r1, r7
  337. mov rax, r9
  338. imul r15
  339. mov r9, rdx
  340. randomx_isn_85:
  341. ; FSCAL_R f0
  342. xorps xmm0, xmm15
  343. randomx_isn_86:
  344. ; ISUB_R r7, r3
  345. sub r15, r11
  346. randomx_isn_87:
  347. ; IXOR_R r4, r2
  348. xor r12, r10
  349. randomx_isn_88:
  350. ; IMUL_R r1, r3
  351. imul r9, r11
  352. randomx_isn_89:
  353. ; COND_M r2, no(L1[r0], -122257389), 6
  354. add r8, 64
  355. test r8, 8128
  356. jz randomx_isn_75
  357. xor ecx, ecx
  358. mov eax, r8d
  359. and eax, 16376
  360. cmp dword ptr [rsi+rax], -122257389
  361. setno cl
  362. add r10, rcx
  363. randomx_isn_90:
  364. ; ISTORE L1[r5], r7
  365. mov eax, r13d
  366. and eax, 16376
  367. mov qword ptr [rsi+rax], r15
  368. randomx_isn_91:
  369. ; ISTORE L1[r6], r5
  370. mov eax, r14d
  371. and eax, 16376
  372. mov qword ptr [rsi+rax], r13
  373. randomx_isn_92:
  374. ; FSUB_R f2, a0
  375. subpd xmm2, xmm8
  376. randomx_isn_93:
  377. ; FADD_R f0, a1
  378. addpd xmm0, xmm9
  379. randomx_isn_94:
  380. ; IXOR_R r6, r1
  381. xor r14, r9
  382. randomx_isn_95:
  383. ; ISUB_M r0, L3[910032]
  384. sub r8, qword ptr [rsi+910032]
  385. randomx_isn_96:
  386. ; FSWAP_R e3
  387. shufpd xmm7, xmm7, 1
  388. randomx_isn_97:
  389. ; IMUL_M r4, L1[r2]
  390. mov eax, r10d
  391. and eax, 16376
  392. imul r12, qword ptr [rsi+rax]
  393. randomx_isn_98:
  394. ; IMUL_9C r0, 2144355962
  395. lea r8, [r8+r8*8+2144355962]
  396. randomx_isn_99:
  397. ; IMULH_R r1, r5
  398. mov rax, r9
  399. mul r13
  400. mov r9, rdx
  401. randomx_isn_100:
  402. ; ISTORE L1[r7], r3
  403. mov eax, r15d
  404. and eax, 16376
  405. mov qword ptr [rsi+rax], r11
  406. randomx_isn_101:
  407. ; ISWAP_R r0, r0
  408. randomx_isn_102:
  409. ; IMUL_R r2, r7
  410. imul r10, r15
  411. randomx_isn_103:
  412. ; ISUB_R r2, -1777504751
  413. sub r10, -1777504751
  414. randomx_isn_104:
  415. ; ISTORE L2[r6], r7
  416. mov eax, r14d
  417. and eax, 262136
  418. mov qword ptr [rsi+rax], r15
  419. randomx_isn_105:
  420. ; FADD_R f3, a1
  421. addpd xmm3, xmm9
  422. randomx_isn_106:
  423. ; FSUB_R f2, a2
  424. subpd xmm2, xmm10
  425. randomx_isn_107:
  426. ; ISMULH_R r6, r5
  427. mov rax, r14
  428. imul r13
  429. mov r14, rdx
  430. randomx_isn_108:
  431. ; IADD_M r7, L1[r0]
  432. mov eax, r8d
  433. and eax, 16376
  434. add r15, qword ptr [rsi+rax]
  435. randomx_isn_109:
  436. ; IMUL_R r6, r5
  437. imul r14, r13
  438. randomx_isn_110:
  439. ; IMUL_R r5, r1
  440. imul r13, r9
  441. randomx_isn_111:
  442. ; FADD_M f2, L1[r0]
  443. mov eax, r8d
  444. and eax, 16376
  445. cvtdq2pd xmm12, qword ptr [rsi+rax]
  446. addpd xmm2, xmm12
  447. randomx_isn_112:
  448. ; IADD_R r0, r3
  449. add r8, r11
  450. randomx_isn_113:
  451. ; IADD_RC r3, r4, -1138304368
  452. lea r11, [r11+r12-1138304368]
  453. randomx_isn_114:
  454. ; IADD_M r2, L1[r4]
  455. mov eax, r12d
  456. and eax, 16376
  457. add r10, qword ptr [rsi+rax]
  458. randomx_isn_115:
  459. ; IMUL_M r7, L1[r2]
  460. mov eax, r10d
  461. and eax, 16376
  462. imul r15, qword ptr [rsi+rax]
  463. randomx_isn_116:
  464. ; FADD_R f1, a3
  465. addpd xmm1, xmm11
  466. randomx_isn_117:
  467. ; FSUB_R f2, a2
  468. subpd xmm2, xmm10
  469. randomx_isn_118:
  470. ; IADD_R r2, 160326201
  471. add r10, 160326201
  472. randomx_isn_119:
  473. ; ISUB_M r7, L3[1780152]
  474. sub r15, qword ptr [rsi+1780152]
  475. randomx_isn_120:
  476. ; IADD_R r4, r1
  477. add r12, r9
  478. randomx_isn_121:
  479. ; IADD_R r4, r7
  480. add r12, r15
  481. randomx_isn_122:
  482. ; FSUB_R f0, a1
  483. subpd xmm0, xmm9
  484. randomx_isn_123:
  485. ; FSQRT_R e0
  486. sqrtpd xmm4, xmm4
  487. randomx_isn_124:
  488. ; FSUB_R f2, a2
  489. subpd xmm2, xmm10
  490. randomx_isn_125:
  491. ; ISMULH_M r2, L2[r1]
  492. mov ecx, r9d
  493. and ecx, 262136
  494. mov rax, r10
  495. imul qword ptr [rsi+rcx]
  496. mov r10, rdx
  497. randomx_isn_126:
  498. ; FSUB_M f2, L2[r2]
  499. mov eax, r10d
  500. and eax, 262136
  501. cvtdq2pd xmm12, qword ptr [rsi+rax]
  502. subpd xmm2, xmm12
  503. randomx_isn_127:
  504. ; IMUL_R r2, r4
  505. imul r10, r12
  506. randomx_isn_128:
  507. ; FSUB_R f3, a1
  508. subpd xmm3, xmm9
  509. randomx_isn_129:
  510. ; IADD_RC r1, r2, 697183462
  511. lea r9, [r9+r10+697183462]
  512. randomx_isn_130:
  513. ; FSUB_R f1, a1
  514. subpd xmm1, xmm9
  515. randomx_isn_131:
  516. ; IMUL_M r2, L1[r3]
  517. mov eax, r11d
  518. and eax, 16376
  519. imul r10, qword ptr [rsi+rax]
  520. randomx_isn_132:
  521. ; IXOR_M r5, L3[1438200]
  522. xor r13, qword ptr [rsi+1438200]
  523. randomx_isn_133:
  524. ; FMUL_R e3, a3
  525. mulpd xmm7, xmm11
  526. randomx_isn_134:
  527. ; IROR_R r5, r1
  528. mov ecx, r9d
  529. ror r13, cl
  530. randomx_isn_135:
  531. ; FMUL_R e1, a2
  532. mulpd xmm5, xmm10
  533. randomx_isn_136:
  534. ; ISUB_M r3, L2[r6]
  535. mov eax, r14d
  536. and eax, 262136
  537. sub r11, qword ptr [rsi+rax]
  538. randomx_isn_137:
  539. ; IADD_RC r4, r1, -1660063210
  540. lea r12, [r12+r9-1660063210]
  541. randomx_isn_138:
  542. ; ISTORE L1[r0], r0
  543. mov eax, r8d
  544. and eax, 16376
  545. mov qword ptr [rsi+rax], r8
  546. randomx_isn_139:
  547. ; FADD_M f0, L1[r5]
  548. mov eax, r13d
  549. and eax, 16376
  550. cvtdq2pd xmm12, qword ptr [rsi+rax]
  551. addpd xmm0, xmm12
  552. randomx_isn_140:
  553. ; ISUB_M r7, L1[r3]
  554. mov eax, r11d
  555. and eax, 16376
  556. sub r15, qword ptr [rsi+rax]
  557. randomx_isn_141:
  558. ; IROR_R r3, r2
  559. mov ecx, r10d
  560. ror r11, cl
  561. randomx_isn_142:
  562. ; FADD_R f1, a0
  563. addpd xmm1, xmm8
  564. randomx_isn_143:
  565. ; COND_R r5, ge(r1, 880467599), 2
  566. add r14, 4
  567. test r14, 508
  568. jz randomx_isn_110
  569. xor ecx, ecx
  570. cmp r9d, 880467599
  571. setge cl
  572. add r13, rcx
  573. randomx_isn_144:
  574. ; FSUB_M f1, L1[r5]
  575. mov eax, r13d
  576. and eax, 16376
  577. cvtdq2pd xmm12, qword ptr [rsi+rax]
  578. subpd xmm1, xmm12
  579. randomx_isn_145:
  580. ; ISUB_R r5, r3
  581. sub r13, r11
  582. randomx_isn_146:
  583. ; IADD_RC r0, r3, 1228198394
  584. lea r8, [r8+r11+1228198394]
  585. randomx_isn_147:
  586. ; IADD_RC r1, r3, 1747766580
  587. lea r9, [r9+r11+1747766580]
  588. randomx_isn_148:
  589. ; FSQRT_R e1
  590. sqrtpd xmm5, xmm5
  591. randomx_isn_149:
  592. ; IADD_R r4, r3
  593. add r12, r11
  594. randomx_isn_150:
  595. ; FADD_M f1, L1[r0]
  596. mov eax, r8d
  597. and eax, 16376
  598. cvtdq2pd xmm12, qword ptr [rsi+rax]
  599. addpd xmm1, xmm12
  600. randomx_isn_151:
  601. ; IADD_RC r1, r0, 1063245428
  602. lea r9, [r9+r8+1063245428]
  603. randomx_isn_152:
  604. ; FSUB_R f1, a0
  605. subpd xmm1, xmm8
  606. randomx_isn_153:
  607. ; FSUB_R f0, a1
  608. subpd xmm0, xmm9
  609. randomx_isn_154:
  610. ; IMUL_R r2, r6
  611. imul r10, r14
  612. randomx_isn_155:
  613. ; CFROUND r3, 46
  614. mov rax, r11
  615. rol rax, 31
  616. and eax, 24576
  617. or eax, 40896
  618. mov dword ptr [rsp-8], eax
  619. ldmxcsr dword ptr [rsp-8]
  620. randomx_isn_156:
  621. ; FSUB_R f3, a2
  622. subpd xmm3, xmm10
  623. randomx_isn_157:
  624. ; ISTORE L1[r1], r1
  625. mov eax, r9d
  626. and eax, 16376
  627. mov qword ptr [rsi+rax], r9
  628. randomx_isn_158:
  629. ; ISTORE L1[r6], r4
  630. mov eax, r14d
  631. and eax, 16376
  632. mov qword ptr [rsi+rax], r12
  633. randomx_isn_159:
  634. ; IADD_M r7, L1[r2]
  635. mov eax, r10d
  636. and eax, 16376
  637. add r15, qword ptr [rsi+rax]
  638. randomx_isn_160:
  639. ; IMUL_RCP r7, 2040763167
  640. mov rax, 9705702723791900149
  641. imul r15, rax
  642. randomx_isn_161:
  643. ; FADD_R f3, a3
  644. addpd xmm3, xmm11
  645. randomx_isn_162:
  646. ; IADD_RC r6, r4, -783948693
  647. lea r14, [r14+r12-783948693]
  648. randomx_isn_163:
  649. ; ISWAP_R r3, r5
  650. xchg r11, r13
  651. randomx_isn_164:
  652. ; FSQRT_R e3
  653. sqrtpd xmm7, xmm7
  654. randomx_isn_165:
  655. ; FSUB_R f1, a2
  656. subpd xmm1, xmm10
  657. randomx_isn_166:
  658. ; IROR_R r5, r3
  659. mov ecx, r11d
  660. ror r13, cl
  661. randomx_isn_167:
  662. ; IMUL_9C r2, 805006473
  663. lea r10, [r10+r10*8+805006473]
  664. randomx_isn_168:
  665. ; FDIV_M e0, L1[r4]
  666. mov eax, r12d
  667. and eax, 16376
  668. cvtdq2pd xmm12, qword ptr [rsi+rax]
  669. andps xmm12, xmm13
  670. orps xmm12, xmm14
  671. divpd xmm4, xmm12
  672. randomx_isn_169:
  673. ; IMUL_9C r3, 1773188989
  674. lea r11, [r11+r11*8+1773188989]
  675. randomx_isn_170:
  676. ; FADD_R f0, a3
  677. addpd xmm0, xmm11
  678. randomx_isn_171:
  679. ; FADD_R f1, a0
  680. addpd xmm1, xmm8
  681. randomx_isn_172:
  682. ; ISTORE L1[r7], r6
  683. mov eax, r15d
  684. and eax, 16376
  685. mov qword ptr [rsi+rax], r14
  686. randomx_isn_173:
  687. ; FSUB_M f0, L1[r7]
  688. mov eax, r15d
  689. and eax, 16376
  690. cvtdq2pd xmm12, qword ptr [rsi+rax]
  691. subpd xmm0, xmm12
  692. randomx_isn_174:
  693. ; ISWAP_R r3, r0
  694. xchg r11, r8
  695. randomx_isn_175:
  696. ; IMULH_R r0, r3
  697. mov rax, r8
  698. mul r11
  699. mov r8, rdx
  700. randomx_isn_176:
  701. ; IMUL_M r2, L3[1439696]
  702. imul r10, qword ptr [rsi+1439696]
  703. randomx_isn_177:
  704. ; IMUL_M r3, L3[232968]
  705. imul r11, qword ptr [rsi+232968]
  706. randomx_isn_178:
  707. ; IADD_RC r5, r3, -2108568616
  708. lea r13, [r13+r11-2108568616]
  709. randomx_isn_179:
  710. ; IADD_RC r3, r4, 1322108729
  711. lea r11, [r11+r12+1322108729]
  712. randomx_isn_180:
  713. ; FADD_R f3, a1
  714. addpd xmm3, xmm9
  715. randomx_isn_181:
  716. ; FSQRT_R e3
  717. sqrtpd xmm7, xmm7
  718. randomx_isn_182:
  719. ; FMUL_R e2, a2
  720. mulpd xmm6, xmm10
  721. randomx_isn_183:
  722. ; IADD_M r6, L2[r2]
  723. mov eax, r10d
  724. and eax, 262136
  725. add r14, qword ptr [rsi+rax]
  726. randomx_isn_184:
  727. ; FADD_R f2, a3
  728. addpd xmm2, xmm11
  729. randomx_isn_185:
  730. ; FSWAP_R f3
  731. shufpd xmm3, xmm3, 1
  732. randomx_isn_186:
  733. ; FSCAL_R f3
  734. xorps xmm3, xmm15
  735. randomx_isn_187:
  736. ; IADD_RC r6, r6, -914790425
  737. lea r14, [r14+r14-914790425]
  738. randomx_isn_188:
  739. ; FSCAL_R f2
  740. xorps xmm2, xmm15
  741. randomx_isn_189:
  742. ; IMUL_M r4, L1[r5]
  743. mov eax, r13d
  744. and eax, 16376
  745. imul r12, qword ptr [rsi+rax]
  746. randomx_isn_190:
  747. ; FSUB_M f2, L1[r3]
  748. mov eax, r11d
  749. and eax, 16376
  750. cvtdq2pd xmm12, qword ptr [rsi+rax]
  751. subpd xmm2, xmm12
  752. randomx_isn_191:
  753. ; IMUL_M r4, L2[r3]
  754. mov eax, r11d
  755. and eax, 262136
  756. imul r12, qword ptr [rsi+rax]
  757. randomx_isn_192:
  758. ; ISUB_M r7, L1[r3]
  759. mov eax, r11d
  760. and eax, 16376
  761. sub r15, qword ptr [rsi+rax]
  762. randomx_isn_193:
  763. ; ISTORE L1[r1], r1
  764. mov eax, r9d
  765. and eax, 16376
  766. mov qword ptr [rsi+rax], r9
  767. randomx_isn_194:
  768. ; ISTORE L1[r3], r4
  769. mov eax, r11d
  770. and eax, 16376
  771. mov qword ptr [rsi+rax], r12
  772. randomx_isn_195:
  773. ; FMUL_R e2, a2
  774. mulpd xmm6, xmm10
  775. randomx_isn_196:
  776. ; FMUL_R e2, a0
  777. mulpd xmm6, xmm8
  778. randomx_isn_197:
  779. ; FADD_M f2, L2[r0]
  780. mov eax, r8d
  781. and eax, 262136
  782. cvtdq2pd xmm12, qword ptr [rsi+rax]
  783. addpd xmm2, xmm12
  784. randomx_isn_198:
  785. ; FADD_R f1, a2
  786. addpd xmm1, xmm10
  787. randomx_isn_199:
  788. ; FSUB_R f3, a3
  789. subpd xmm3, xmm11
  790. randomx_isn_200:
  791. ; IADD_RC r2, r5, 248917123
  792. lea r10, [r10+r13+248917123]
  793. randomx_isn_201:
  794. ; IMUL_9C r6, 376384700
  795. lea r14, [r14+r14*8+376384700]
  796. randomx_isn_202:
  797. ; ISWAP_R r3, r6
  798. xchg r11, r14
  799. randomx_isn_203:
  800. ; ISTORE L1[r1], r3
  801. mov eax, r9d
  802. and eax, 16376
  803. mov qword ptr [rsi+rax], r11
  804. randomx_isn_204:
  805. ; IMUL_R r6, r1
  806. imul r14, r9
  807. randomx_isn_205:
  808. ; ISUB_R r7, r5
  809. sub r15, r13
  810. randomx_isn_206:
  811. ; IADD_R r3, r5
  812. add r11, r13
  813. randomx_isn_207:
  814. ; FSCAL_R f1
  815. xorps xmm1, xmm15
  816. randomx_isn_208:
  817. ; IADD_R r6, r3
  818. add r14, r11
  819. randomx_isn_209:
  820. ; FSUB_M f0, L1[r4]
  821. mov eax, r12d
  822. and eax, 16376
  823. cvtdq2pd xmm12, qword ptr [rsi+rax]
  824. subpd xmm0, xmm12
  825. randomx_isn_210:
  826. ; FSWAP_R e2
  827. shufpd xmm6, xmm6, 1
  828. randomx_isn_211:
  829. ; FMUL_R e2, a3
  830. mulpd xmm6, xmm11
  831. randomx_isn_212:
  832. ; IMUL_M r0, L1[r1]
  833. mov eax, r9d
  834. and eax, 16376
  835. imul r8, qword ptr [rsi+rax]
  836. randomx_isn_213:
  837. ; FSUB_M f2, L1[r5]
  838. mov eax, r13d
  839. and eax, 16376
  840. cvtdq2pd xmm12, qword ptr [rsi+rax]
  841. subpd xmm2, xmm12
  842. randomx_isn_214:
  843. ; FMUL_R e1, a2
  844. mulpd xmm5, xmm10
  845. randomx_isn_215:
  846. ; FADD_R f3, a1
  847. addpd xmm3, xmm9
  848. randomx_isn_216:
  849. ; IXOR_M r4, L2[r1]
  850. mov eax, r9d
  851. and eax, 262136
  852. xor r12, qword ptr [rsi+rax]
  853. randomx_isn_217:
  854. ; IMUL_M r6, L1[r5]
  855. mov eax, r13d
  856. and eax, 16376
  857. imul r14, qword ptr [rsi+rax]
  858. randomx_isn_218:
  859. ; FSCAL_R f2
  860. xorps xmm2, xmm15
  861. randomx_isn_219:
  862. ; FADD_M f3, L1[r7]
  863. mov eax, r15d
  864. and eax, 16376
  865. cvtdq2pd xmm12, qword ptr [rsi+rax]
  866. addpd xmm3, xmm12
  867. randomx_isn_220:
  868. ; FSUB_R f0, a0
  869. subpd xmm0, xmm8
  870. randomx_isn_221:
  871. ; IMUL_R r1, r0
  872. imul r9, r8
  873. randomx_isn_222:
  874. ; IADD_M r1, L1[r0]
  875. mov eax, r8d
  876. and eax, 16376
  877. add r9, qword ptr [rsi+rax]
  878. randomx_isn_223:
  879. ; FSCAL_R f2
  880. xorps xmm2, xmm15
  881. randomx_isn_224:
  882. ; IADD_R r5, r4
  883. add r13, r12
  884. randomx_isn_225:
  885. ; ISTORE L2[r2], r1
  886. mov eax, r10d
  887. and eax, 262136
  888. mov qword ptr [rsi+rax], r9
  889. randomx_isn_226:
  890. ; ISUB_R r6, -791575725
  891. sub r14, -791575725
  892. randomx_isn_227:
  893. ; FDIV_M e3, L1[r0]
  894. mov eax, r8d
  895. and eax, 16376
  896. cvtdq2pd xmm12, qword ptr [rsi+rax]
  897. andps xmm12, xmm13
  898. orps xmm12, xmm14
  899. divpd xmm7, xmm12
  900. randomx_isn_228:
  901. ; IXOR_R r7, r1
  902. xor r15, r9
  903. randomx_isn_229:
  904. ; ISWAP_R r0, r6
  905. xchg r8, r14
  906. randomx_isn_230:
  907. ; IADD_M r2, L1[r7]
  908. mov eax, r15d
  909. and eax, 16376
  910. add r10, qword ptr [rsi+rax]
  911. randomx_isn_231:
  912. ; FMUL_R e1, a0
  913. mulpd xmm5, xmm8
  914. randomx_isn_232:
  915. ; FMUL_R e3, a3
  916. mulpd xmm7, xmm11
  917. randomx_isn_233:
  918. ; FMUL_R e0, a2
  919. mulpd xmm4, xmm10
  920. randomx_isn_234:
  921. ; IADD_RC r2, r7, 1435646464
  922. lea r10, [r10+r15+1435646464]
  923. randomx_isn_235:
  924. ; ISWAP_R r7, r6
  925. xchg r15, r14
  926. randomx_isn_236:
  927. ; FMUL_R e3, a2
  928. mulpd xmm7, xmm10
  929. randomx_isn_237:
  930. ; FSUB_R f1, a3
  931. subpd xmm1, xmm11
  932. randomx_isn_238:
  933. ; IADD_R r4, r2
  934. add r12, r10
  935. randomx_isn_239:
  936. ; IMUL_RCP r7, 3065786637
  937. mov rax, 12921343181238534701
  938. imul r15, rax
  939. randomx_isn_240:
  940. ; IMUL_R r5, r7
  941. imul r13, r15
  942. randomx_isn_241:
  943. ; IROR_R r6, r5
  944. mov ecx, r13d
  945. ror r14, cl
  946. randomx_isn_242:
  947. ; IMUL_R r6, r4
  948. imul r14, r12
  949. randomx_isn_243:
  950. ; FSUB_R f0, a3
  951. subpd xmm0, xmm11
  952. randomx_isn_244:
  953. ; FADD_M f1, L1[r0]
  954. mov eax, r8d
  955. and eax, 16376
  956. cvtdq2pd xmm12, qword ptr [rsi+rax]
  957. addpd xmm1, xmm12
  958. randomx_isn_245:
  959. ; INEG_R r3
  960. neg r11
  961. randomx_isn_246:
  962. ; IMUL_9C r7, 1938400676
  963. lea r15, [r15+r15*8+1938400676]
  964. randomx_isn_247:
  965. ; COND_M r2, be(L1[r5], -8545330), 2
  966. add r9, 4
  967. test r9, 508
  968. jz randomx_isn_223
  969. xor ecx, ecx
  970. mov eax, r13d
  971. and eax, 16376
  972. cmp dword ptr [rsi+rax], -8545330
  973. setbe cl
  974. add r10, rcx
  975. randomx_isn_248:
  976. ; ISTORE L1[r0], r5
  977. mov eax, r8d
  978. and eax, 16376
  979. mov qword ptr [rsi+rax], r13
  980. randomx_isn_249:
  981. ; IADD_RC r6, r5, 2052724836
  982. lea r14, [r14+r13+2052724836]
  983. randomx_isn_250:
  984. ; FADD_R f3, a0
  985. addpd xmm3, xmm8
  986. randomx_isn_251:
  987. ; IADD_R r0, -221201557
  988. add r8, -221201557
  989. randomx_isn_252:
  990. ; ISUB_M r4, L1[r2]
  991. mov eax, r10d
  992. and eax, 16376
  993. sub r12, qword ptr [rsi+rax]
  994. randomx_isn_253:
  995. ; IADD_RC r5, r4, 256175395
  996. lea r13, [r13+r12+256175395]
  997. randomx_isn_254:
  998. ; IADD_RC r6, r7, 1119815512
  999. lea r14, [r14+r15+1119815512]
  1000. randomx_isn_255:
  1001. ; IROR_R r7, r3
  1002. mov ecx, r11d
  1003. ror r15, cl