diff --git a/doc/program.asm b/doc/program.asm index 99d26f3..d0cbe1d 100644 --- a/doc/program.asm +++ b/doc/program.asm @@ -1,15 +1,11 @@ randomx_isn_0: - ; IROR_R r3, 30 - ror r11, 30 + ; ISWAP_R r3, r3 randomx_isn_1: - ; FSUB_M f1, L1[r7+1640164717] - lea eax, [r15d+1640164717] - and eax, 16376 - cvtdq2pd xmm12, qword ptr [rsi+rax] - subpd xmm1, xmm12 + ; FSCAL_R f1 + xorps xmm1, xmm15 randomx_isn_2: - ; IXOR_R r3, 1860630909 - xor r11, 1860630909 + ; IXOR_M r3, L3[457080] + xor r11, qword ptr [rsi+457080] randomx_isn_3: ; IROR_R r5, r7 mov ecx, r15d @@ -18,12 +14,13 @@ randomx_isn_4: ; IXOR_R r3, r4 xor r11, r12 randomx_isn_5: - ; IROR_R r4, r0 - mov ecx, r8d - ror r12, cl + ; ISWAP_R r4, r0 + xchg r12, r8 randomx_isn_6: - ; FSQRT_R e3 - sqrtpd xmm7, xmm7 + ; CBRANCH -188214077, COND 5 + add r9, -188214045 + test r9, 8160 + jz randomx_isn_0 randomx_isn_7: ; ISTORE L3[r0-784322734], r3 lea eax, [r8d-784322734] @@ -33,13 +30,18 @@ randomx_isn_8: ; FMUL_R e1, a1 mulpd xmm5, xmm9 randomx_isn_9: - ; FMUL_R e0, a1 - mulpd xmm4, xmm9 -randomx_isn_10: - ; IMUL_M r2, L1[r1+222715267] - lea eax, [r9d+222715267] + ; FDIV_M e0, L1[r5+1118107460] + lea eax, [r13d+1118107460] and eax, 16376 - imul r10, qword ptr [rsi+rax] + cvtdq2pd xmm12, qword ptr [rsi+rax] + andps xmm12, xmm13 + orps xmm12, xmm14 + divpd xmm4, xmm12 +randomx_isn_10: + ; ISMULH_R r2, r1 + mov rax, r10 + imul r9 + mov r10, rdx randomx_isn_11: ; ISTORE L1[r3-2088207007], r1 lea eax, [r11d-2088207007] @@ -49,20 +51,21 @@ randomx_isn_12: ; IMUL_R r7, r4 imul r15, r12 randomx_isn_13: - ; FSQRT_R e2 - sqrtpd xmm6, xmm6 + ; CBRANCH 179989705, COND 3 + add r8, 179989705 + test r8, 2040 + jz randomx_isn_7 randomx_isn_14: - ; FSQRT_R e2 - sqrtpd xmm6, xmm6 + ; CBRANCH 1801296358, COND 3 + add r10, 1801296366 + test r10, 2040 + jz randomx_isn_14 randomx_isn_15: ; IADD_RS r6, r2, SHFT 3 lea r14, [r14+r10*8] randomx_isn_16: - ; FSUB_M f2, L1[r1-1890725713] - lea eax, [r9d-1890725713] - and eax, 16376 - cvtdq2pd xmm12, qword ptr [rsi+rax] - subpd xmm2, xmm12 + ; FSCAL_R f2 + xorps xmm2, xmm15 randomx_isn_17: ; IROR_R r4, r3 mov ecx, r11d @@ -77,26 +80,29 @@ randomx_isn_19: mulpd xmm5, xmm10 randomx_isn_20: ; CBRANCH 1593588996, COND 3 - add r8, 1593589004 - test r8, 1016 - jz randomx_isn_0 + add r11, 1593589004 + test r11, 2040 + jz randomx_isn_15 randomx_isn_21: - ; IXOR_M r7, L1[r2+1680388681] - lea eax, [r10d+1680388681] - and eax, 16376 - xor r15, qword ptr [rsi+rax] + ; IROR_R r7, r2 + mov ecx, r10d + ror r15, cl randomx_isn_22: - ; IXOR_M r1, L1[r0+1714608757] - lea eax, [r8d+1714608757] - and eax, 16376 - xor r9, qword ptr [rsi+rax] + ; IROR_R r1, r0 + mov ecx, r8d + ror r9, cl randomx_isn_23: - ; FMUL_R e2, a0 - mulpd xmm6, xmm8 + ; FDIV_M e2, L1[r0+1284530872] + lea eax, [r8d+1284530872] + and eax, 16376 + cvtdq2pd xmm12, qword ptr [rsi+rax] + andps xmm12, xmm13 + orps xmm12, xmm14 + divpd xmm6, xmm12 randomx_isn_24: ; CBRANCH 149087159, COND 13 - add r10, 149087159 - test r10, 1040384 + add r12, 149087159 + test r12, 2088960 jz randomx_isn_21 randomx_isn_25: ; FADD_R f3, a0 @@ -105,8 +111,10 @@ randomx_isn_26: ; IADD_RS r7, r0, SHFT 2 lea r15, [r15+r8*4] randomx_isn_27: - ; IMUL_R r2, r3 - imul r10, r11 + ; IMUL_M r2, L1[r3-487007545] + lea eax, [r11d-487007545] + and eax, 16376 + imul r10, qword ptr [rsi+rax] randomx_isn_28: ; IADD_RS r5, r7, 1345488645, SHFT 3 lea r13, [r13+r15*8+1345488645] @@ -121,34 +129,40 @@ randomx_isn_30: and eax, 16376 mov qword ptr [rsi+rax], r13 randomx_isn_31: - ; FSUB_R f1, a2 - subpd xmm1, xmm10 + ; FSUB_M f1, L1[r2-531715197] + lea eax, [r10d-531715197] + and eax, 16376 + cvtdq2pd xmm12, qword ptr [rsi+rax] + subpd xmm1, xmm12 randomx_isn_32: - ; IMUL_R r3, r5 - imul r11, r13 + ; IMULH_R r3, r5 + mov rax, r11 + mul r13 + mov r11, rdx randomx_isn_33: - ; IROR_R r1, 20 - ror r9, 20 + ; ISWAP_R r1, r1 randomx_isn_34: - ; FSCAL_R f1 - xorps xmm1, xmm15 + ; FMUL_R e1, a1 + mulpd xmm5, xmm9 randomx_isn_35: - ; IMUL_R r6, 835132161 - imul r14, 835132161 + ; IMULH_R r6, r6 + mov rax, r14 + mul r14 + mov r14, rdx randomx_isn_36: ; IADD_RS r3, r4, SHFT 0 lea r11, [r11+r12*1] randomx_isn_37: - ; ISUB_M r6, L2[r4+1885029796] - lea eax, [r12d+1885029796] - and eax, 262136 - sub r14, qword ptr [rsi+rax] + ; IMUL_R r6, r4 + imul r14, r12 randomx_isn_38: - ; FSCAL_R f2 - xorps xmm2, xmm15 + ; FMUL_R e2, a2 + mulpd xmm6, xmm10 randomx_isn_39: - ; ISUB_R r5, r0 - sub r13, r8 + ; ISUB_M r5, L1[r0+1743542437] + lea eax, [r8d+1743542437] + and eax, 16376 + sub r13, qword ptr [rsi+rax] randomx_isn_40: ; IMUL_R r7, r2 imul r15, r10 @@ -159,8 +173,8 @@ randomx_isn_42: ; IXOR_R r5, r0 xor r13, r8 randomx_isn_43: - ; FSWAP_R e0 - shufpd xmm4, xmm4, 1 + ; FADD_R f0, a2 + addpd xmm0, xmm10 randomx_isn_44: ; FADD_R f1, a2 addpd xmm1, xmm10 @@ -176,36 +190,44 @@ randomx_isn_47: ; IXOR_R r5, r2 xor r13, r10 randomx_isn_48: - ; FSUB_R f3, a3 - subpd xmm3, xmm11 + ; FSUB_M f3, L1[r3+670987345] + lea eax, [r11d+670987345] + and eax, 16376 + cvtdq2pd xmm12, qword ptr [rsi+rax] + subpd xmm3, xmm12 randomx_isn_49: - ; FMUL_R e3, a3 - mulpd xmm7, xmm11 + ; FDIV_M e3, L1[r3+306555937] + lea eax, [r11d+306555937] + and eax, 16376 + cvtdq2pd xmm12, qword ptr [rsi+rax] + andps xmm12, xmm13 + orps xmm12, xmm14 + divpd xmm7, xmm12 randomx_isn_50: ; FSUB_R f3, a0 subpd xmm3, xmm8 randomx_isn_51: ; CBRANCH -1975981803, COND 14 - add r12, -1975981803 - test r12, 2080768 + add r9, -1975981803 + test r9, 4177920 jz randomx_isn_25 randomx_isn_52: - ; IADD_RS r1, r1, SHFT 2 - lea r9, [r9+r9*4] + ; IADD_M r1, L3[1622792] + add r9, qword ptr [rsi+1622792] randomx_isn_53: ; FSUB_R f2, a0 subpd xmm2, xmm8 randomx_isn_54: ; CBRANCH 1917049931, COND 12 - add r11, 1917049931 - test r11, 520192 + add r13, 1917049931 + test r13, 1044480 jz randomx_isn_52 randomx_isn_55: ; IXOR_R r2, r3 xor r10, r11 randomx_isn_56: - ; FSCAL_R f0 - xorps xmm0, xmm15 + ; FMUL_R e0, a2 + mulpd xmm4, xmm10 randomx_isn_57: ; IMUL_R r5, r1 imul r13, r9 @@ -213,32 +235,31 @@ randomx_isn_58: ; IADD_RS r5, r1, -999103579, SHFT 0 lea r13, [r13+r9*1-999103579] randomx_isn_59: - ; FMUL_R e2, a2 - mulpd xmm6, xmm10 + ; FSQRT_R e2 + sqrtpd xmm6, xmm6 randomx_isn_60: ; IROR_R r2, r6 mov ecx, r14d ror r10, cl randomx_isn_61: - ; IADD_RS r0, r3, SHFT 3 - lea r8, [r8+r11*8] + ; IADD_M r0, L1[r3+553576025] + lea eax, [r11d+553576025] + and eax, 16376 + add r8, qword ptr [rsi+rax] randomx_isn_62: - ; FSQRT_R e3 - sqrtpd xmm7, xmm7 + ; CBRANCH 1111898647, COND 1 + add r14, 1111898647 + test r14, 510 + jz randomx_isn_55 randomx_isn_63: - ; ISUB_M r6, L1[r5-1165860156] - lea eax, [r13d-1165860156] - and eax, 16376 - sub r14, qword ptr [rsi+rax] + ; IMUL_R r6, r5 + imul r14, r13 randomx_isn_64: - ; ISUB_M r5, L2[r7-1323706896] - lea eax, [r15d-1323706896] - and eax, 262136 - sub r13, qword ptr [rsi+rax] + ; IMUL_R r5, r7 + imul r13, r15 randomx_isn_65: - ; IMUL_RCP r5, 2362240456 - mov rax, 16769707400664451577 - imul r13, rax + ; INEG_R r5 + neg r13 randomx_isn_66: ; ISUB_R r4, 841292629 sub r12, 841292629 @@ -246,23 +267,19 @@ randomx_isn_67: ; IADD_RS r4, r6, SHFT 3 lea r12, [r12+r14*8] randomx_isn_68: - ; FSUB_M f3, L1[r4+613549729] - lea eax, [r12d+613549729] - and eax, 16376 - cvtdq2pd xmm12, qword ptr [rsi+rax] - subpd xmm3, xmm12 + ; FSCAL_R f3 + xorps xmm3, xmm15 randomx_isn_69: - ; IADD_RS r6, r4, SHFT 3 - lea r14, [r14+r12*8] + ; IADD_M r6, L2[r4-1863144764] + lea eax, [r12d-1863144764] + and eax, 262136 + add r14, qword ptr [rsi+rax] randomx_isn_70: - ; FSUB_M f1, L1[r5+629563256] - lea eax, [r13d+629563256] - and eax, 16376 - cvtdq2pd xmm12, qword ptr [rsi+rax] - subpd xmm1, xmm12 + ; FMUL_R e1, a1 + mulpd xmm5, xmm9 randomx_isn_71: - ; FSWAP_R e1 - shufpd xmm5, xmm5, 1 + ; FADD_R f1, a3 + addpd xmm1, xmm11 randomx_isn_72: ; FADD_R f2, a0 addpd xmm2, xmm8 @@ -271,20 +288,15 @@ randomx_isn_73: mulpd xmm4, xmm8 randomx_isn_74: ; CBRANCH -1200328848, COND 4 - add r9, -1200328848 - test r9, 2032 - jz randomx_isn_55 + add r15, -1200328848 + test r15, 4080 + jz randomx_isn_63 randomx_isn_75: - ; FMUL_R e0, a3 - mulpd xmm4, xmm11 + ; FSQRT_R e0 + sqrtpd xmm4, xmm4 randomx_isn_76: - ; FDIV_M e3, L1[r4+1170730568] - lea eax, [r12d+1170730568] - and eax, 16376 - cvtdq2pd xmm12, qword ptr [rsi+rax] - andps xmm12, xmm13 - orps xmm12, xmm14 - divpd xmm7, xmm12 + ; FSQRT_R e3 + sqrtpd xmm7, xmm7 randomx_isn_77: ; FADD_R f1, a2 addpd xmm1, xmm10 @@ -292,32 +304,35 @@ randomx_isn_78: ; FMUL_R e2, a1 mulpd xmm6, xmm9 randomx_isn_79: - ; IADD_RS r3, r1, SHFT 2 - lea r11, [r11+r9*4] + ; IADD_M r3, L1[r1-919815727] + lea eax, [r9d-919815727] + and eax, 16376 + add r11, qword ptr [rsi+rax] randomx_isn_80: ; ISTORE L1[r2+1885666804], r4 lea eax, [r10d+1885666804] and eax, 16376 mov qword ptr [rsi+rax], r12 randomx_isn_81: - ; IMULH_R r3, r0 - mov rax, r11 - mul r8 - mov r11, rdx + ; IMUL_RCP r3, 4074670449 + mov rax, 9722033168806130558 + imul r11, rax randomx_isn_82: ; IXOR_R r2, r6 xor r10, r14 randomx_isn_83: - ; FSUB_R f0, a2 - subpd xmm0, xmm10 + ; FSUB_M f0, L1[r2-528310755] + lea eax, [r10d-528310755] + and eax, 16376 + cvtdq2pd xmm12, qword ptr [rsi+rax] + subpd xmm0, xmm12 randomx_isn_84: - ; ISMULH_R r1, r7 - mov rax, r9 - imul r15 - mov r9, rdx + ; IMUL_RCP r1, 3960817810 + mov rax, 10001490388453936182 + imul r9, rax randomx_isn_85: - ; FSCAL_R f0 - xorps xmm0, xmm15 + ; FMUL_R e0, a2 + mulpd xmm4, xmm10 randomx_isn_86: ; ISUB_R r7, r3 sub r15, r11 @@ -325,12 +340,14 @@ randomx_isn_87: ; IXOR_R r4, r2 xor r12, r10 randomx_isn_88: - ; IMUL_R r1, r3 - imul r9, r11 + ; IMUL_M r1, L1[r3+1489284408] + lea eax, [r11d+1489284408] + and eax, 16376 + imul r9, qword ptr [rsi+rax] randomx_isn_89: ; CBRANCH -122257389, COND 13 - add r13, -122249197 - test r13, 1040384 + add r8, -122249197 + test r8, 2088960 jz randomx_isn_75 randomx_isn_90: ; ISTORE L1[r5+228116180], r7 @@ -352,25 +369,25 @@ randomx_isn_94: ; IXOR_R r6, r1 xor r14, r9 randomx_isn_95: - ; ISUB_R r0, 307094227 - sub r8, 307094227 + ; ISUB_M r0, L3[910032] + sub r8, qword ptr [rsi+910032] randomx_isn_96: - ; FSWAP_R e3 - shufpd xmm7, xmm7, 1 + ; FADD_R f3, a2 + addpd xmm3, xmm10 randomx_isn_97: - ; IMUL_M r4, L1[r2-30542523] - lea eax, [r10d-30542523] - and eax, 16376 - imul r12, qword ptr [rsi+rax] + ; IMULH_M r4, L1[r2-30542523] + lea ecx, [r10d-30542523] + and ecx, 16376 + mov rax, r12 + mul qword ptr [rsi+rcx] + mov r12, rdx randomx_isn_98: - ; ISUB_M r0, L1[r2+2144355962] - lea eax, [r10d+2144355962] - and eax, 16376 - sub r8, qword ptr [rsi+rax] + ; IMUL_R r0, r2 + imul r8, r10 randomx_isn_99: - ; IMULH_R r1, r5 + ; ISMULH_R r1, r5 mov rax, r9 - mul r13 + imul r13 mov r9, rdx randomx_isn_100: ; ISTORE L1[r7+818959056], r3 @@ -378,10 +395,13 @@ randomx_isn_100: and eax, 16376 mov qword ptr [rsi+rax], r11 randomx_isn_101: - ; ISWAP_R r0, r0 + ; FSWAP_R f0 + shufpd xmm0, xmm0, 1 randomx_isn_102: - ; IMUL_R r2, r7 - imul r10, r15 + ; IMULH_R r2, r7 + mov rax, r10 + mul r15 + mov r10, rdx randomx_isn_103: ; ISUB_R r2, -1777504751 sub r10, -1777504751 @@ -391,48 +411,56 @@ randomx_isn_104: and eax, 262136 mov qword ptr [rsi+rax], r15 randomx_isn_105: - ; FADD_R f3, a1 - addpd xmm3, xmm9 + ; FSUB_R f3, a1 + subpd xmm3, xmm9 randomx_isn_106: - ; FSUB_R f2, a2 - subpd xmm2, xmm10 + ; FSUB_M f2, L2[r6+1023745039] + lea eax, [r14d+1023745039] + and eax, 262136 + cvtdq2pd xmm12, qword ptr [rsi+rax] + subpd xmm2, xmm12 randomx_isn_107: - ; ISMULH_R r6, r5 - mov rax, r14 - imul r13 - mov r14, rdx + ; IMUL_RCP r6, 1839867980 + mov rax, 10765468416144773821 + imul r14, rax randomx_isn_108: ; IADD_RS r7, r0, SHFT 2 lea r15, [r15+r8*4] randomx_isn_109: - ; IMUL_R r6, r5 - imul r14, r13 + ; IMULH_R r6, r5 + mov rax, r14 + mul r13 + mov r14, rdx randomx_isn_110: ; IMUL_R r5, r1 imul r13, r9 randomx_isn_111: - ; FADD_M f2, L1[r0-1280829689] - lea eax, [r8d-1280829689] - and eax, 16376 - cvtdq2pd xmm12, qword ptr [rsi+rax] - addpd xmm2, xmm12 + ; FSUB_R f2, a0 + subpd xmm2, xmm8 randomx_isn_112: ; IADD_RS r0, r3, SHFT 1 lea r8, [r8+r11*2] randomx_isn_113: - ; IADD_RS r3, r4, SHFT 1 - lea r11, [r11+r12*2] + ; IADD_M r3, L1[r4-1138304368] + lea eax, [r12d-1138304368] + and eax, 16376 + add r11, qword ptr [rsi+rax] randomx_isn_114: ; IADD_RS r2, r4, SHFT 1 lea r10, [r10+r12*2] randomx_isn_115: - ; IMUL_M r7, L1[r2-106928748] - lea eax, [r10d-106928748] - and eax, 16376 - imul r15, qword ptr [rsi+rax] + ; IMULH_M r7, L1[r2-106928748] + lea ecx, [r10d-106928748] + and ecx, 16376 + mov rax, r15 + mul qword ptr [rsi+rcx] + mov r15, rdx randomx_isn_116: - ; FADD_R f1, a3 - addpd xmm1, xmm11 + ; FADD_M f1, L1[r3+1652235318] + lea eax, [r11d+1652235318] + and eax, 16376 + cvtdq2pd xmm12, qword ptr [rsi+rax] + addpd xmm1, xmm12 randomx_isn_117: ; FSUB_R f2, a2 subpd xmm2, xmm10 @@ -440,8 +468,8 @@ randomx_isn_118: ; IADD_RS r2, r2, SHFT 3 lea r10, [r10+r10*8] randomx_isn_119: - ; ISUB_R r7, -342152774 - sub r15, -342152774 + ; ISUB_M r7, L3[1780152] + sub r15, qword ptr [rsi+1780152] randomx_isn_120: ; IADD_RS r4, r1, SHFT 0 lea r12, [r12+r9*1] @@ -452,57 +480,66 @@ randomx_isn_122: ; FSUB_R f0, a1 subpd xmm0, xmm9 randomx_isn_123: - ; FSQRT_R e0 - sqrtpd xmm4, xmm4 + ; CBRANCH 269211216, COND 3 + add r9, 269211224 + test r9, 2040 + jz randomx_isn_100 randomx_isn_124: - ; FSUB_R f2, a2 - subpd xmm2, xmm10 -randomx_isn_125: - ; ISMULH_M r2, L2[r1+1421890385] - lea ecx, [r9d+1421890385] - and ecx, 262136 - mov rax, r10 - imul qword ptr [rsi+rcx] - mov r10, rdx -randomx_isn_126: - ; FSUB_M f2, L2[r2+875507660] - lea eax, [r10d+875507660] - and eax, 262136 + ; FSUB_M f2, L1[r6-1615966581] + lea eax, [r14d-1615966581] + and eax, 16376 cvtdq2pd xmm12, qword ptr [rsi+rax] subpd xmm2, xmm12 +randomx_isn_125: + ; IMUL_RCP r2, 1421890385 + mov rax, 13930075649654304680 + imul r10, rax +randomx_isn_126: + ; FSCAL_R f2 + xorps xmm2, xmm15 randomx_isn_127: - ; IMUL_R r2, r4 - imul r10, r12 + ; IMUL_M r2, L1[r4+48032324] + lea eax, [r12d+48032324] + and eax, 16376 + imul r10, qword ptr [rsi+rax] randomx_isn_128: ; FSUB_R f3, a1 subpd xmm3, xmm9 randomx_isn_129: - ; IADD_RS r1, r2, SHFT 2 - lea r9, [r9+r10*4] + ; IADD_M r1, L1[r2+697183462] + lea eax, [r10d+697183462] + and eax, 16376 + add r9, qword ptr [rsi+rax] randomx_isn_130: ; FSUB_R f1, a1 subpd xmm1, xmm9 randomx_isn_131: - ; IMUL_M r2, L1[r3+63855818] - lea eax, [r11d+63855818] - and eax, 16376 - imul r10, qword ptr [rsi+rax] + ; ISMULH_R r2, r3 + mov rax, r10 + imul r11 + mov r10, rdx randomx_isn_132: - ; IXOR_M r5, L3[1438200] - xor r13, qword ptr [rsi+1438200] + ; IROR_R r5, 59 + ror r13, 59 randomx_isn_133: - ; FMUL_R e3, a3 - mulpd xmm7, xmm11 + ; FDIV_M e3, L1[r3-1456190436] + lea eax, [r11d-1456190436] + and eax, 16376 + cvtdq2pd xmm12, qword ptr [rsi+rax] + andps xmm12, xmm13 + orps xmm12, xmm14 + divpd xmm7, xmm12 randomx_isn_134: - ; IROR_R r5, r1 - mov ecx, r9d - ror r13, cl + ; FSWAP_R e1 + shufpd xmm5, xmm5, 1 randomx_isn_135: ; FMUL_R e1, a2 mulpd xmm5, xmm10 randomx_isn_136: - ; ISUB_R r3, r6 - sub r11, r14 + ; ISUB_M r3, L2[r6+561570278] + lea eax, [r14d+561570278] + and eax, 262136 + sub r11, qword ptr [rsi+rax] randomx_isn_137: ; IADD_RS r4, r1, SHFT 1 lea r12, [r12+r9*2] @@ -512,65 +549,68 @@ randomx_isn_138: and eax, 16376 mov qword ptr [rsi+rax], r8 randomx_isn_139: - ; FADD_M f0, L1[r5+195344615] - lea eax, [r13d+195344615] - and eax, 16376 - cvtdq2pd xmm12, qword ptr [rsi+rax] - addpd xmm0, xmm12 + ; FSUB_R f0, a1 + subpd xmm0, xmm9 randomx_isn_140: - ; ISUB_R r7, r3 - sub r15, r11 + ; ISUB_M r7, L1[r3-1548418722] + lea eax, [r11d-1548418722] + and eax, 16376 + sub r15, qword ptr [rsi+rax] randomx_isn_141: - ; IROR_R r3, r2 - mov ecx, r10d - ror r11, cl + ; FSWAP_R f3 + shufpd xmm3, xmm3, 1 randomx_isn_142: ; FADD_R f1, a0 addpd xmm1, xmm8 randomx_isn_143: ; CBRANCH 880467599, COND 5 add r14, 880467631 - test r14, 4064 - jz randomx_isn_110 + test r14, 8160 + jz randomx_isn_124 randomx_isn_144: - ; FSUB_M f1, L1[r5+1283529302] - lea eax, [r13d+1283529302] - and eax, 16376 - cvtdq2pd xmm12, qword ptr [rsi+rax] - subpd xmm1, xmm12 + ; FMUL_R e1, a1 + mulpd xmm5, xmm9 randomx_isn_145: ; ISUB_R r5, r3 sub r13, r11 randomx_isn_146: - ; IADD_RS r0, r3, SHFT 3 - lea r8, [r8+r11*8] + ; IADD_M r0, L1[r3+1228198394] + lea eax, [r11d+1228198394] + and eax, 16376 + add r8, qword ptr [rsi+rax] randomx_isn_147: - ; IADD_RS r1, r3, SHFT 2 - lea r9, [r9+r11*4] + ; IADD_M r1, L1[r3+1747766580] + lea eax, [r11d+1747766580] + and eax, 16376 + add r9, qword ptr [rsi+rax] randomx_isn_148: - ; FSQRT_R e1 - sqrtpd xmm5, xmm5 + ; CBRANCH -1843326985, COND 14 + add r10, -1843310601 + test r10, 4177920 + jz randomx_isn_144 randomx_isn_149: ; IADD_RS r4, r3, SHFT 2 lea r12, [r12+r11*4] randomx_isn_150: - ; FADD_M f1, L1[r0-1977073973] - lea eax, [r8d-1977073973] - and eax, 16376 - cvtdq2pd xmm12, qword ptr [rsi+rax] - addpd xmm1, xmm12 + ; FSUB_R f1, a0 + subpd xmm1, xmm8 randomx_isn_151: ; IADD_RS r1, r0, SHFT 3 lea r9, [r9+r8*8] randomx_isn_152: - ; FSUB_R f1, a0 - subpd xmm1, xmm8 + ; FSUB_M f1, L2[r4+969560460] + lea eax, [r12d+969560460] + and eax, 262136 + cvtdq2pd xmm12, qword ptr [rsi+rax] + subpd xmm1, xmm12 randomx_isn_153: ; FSUB_R f0, a1 subpd xmm0, xmm9 randomx_isn_154: - ; IMUL_R r2, r6 - imul r10, r14 + ; IMULH_R r2, r6 + mov rax, r10 + mul r14 + mov r10, rdx randomx_isn_155: ; CFROUND r3, 46 mov rax, r11 @@ -581,8 +621,11 @@ randomx_isn_155: ldmxcsr dword ptr [rsp] pop rax randomx_isn_156: - ; FSUB_R f3, a2 - subpd xmm3, xmm10 + ; FSUB_M f3, L1[r6+1704814547] + lea eax, [r14d+1704814547] + and eax, 16376 + cvtdq2pd xmm12, qword ptr [rsi+rax] + subpd xmm3, xmm12 randomx_isn_157: ; ISTORE L1[r1+883418866], r1 lea eax, [r9d+883418866] @@ -597,131 +640,131 @@ randomx_isn_159: ; IADD_RS r7, r2, SHFT 2 lea r15, [r15+r10*4] randomx_isn_160: - ; IMUL_RCP r7, 2040763167 - mov rax, 9705702723791900149 - imul r15, rax + ; IXOR_R r7, r1 + xor r15, r9 randomx_isn_161: ; FADD_R f3, a3 addpd xmm3, xmm11 randomx_isn_162: - ; IADD_RS r6, r4, SHFT 3 - lea r14, [r14+r12*8] + ; IADD_M r6, L1[r4-783948693] + lea eax, [r12d-783948693] + and eax, 16376 + add r14, qword ptr [rsi+rax] randomx_isn_163: - ; ISWAP_R r3, r5 - xchg r11, r13 + ; FSWAP_R f3 + shufpd xmm3, xmm3, 1 randomx_isn_164: - ; FSQRT_R e3 - sqrtpd xmm7, xmm7 + ; CBRANCH -2107581963, COND 4 + add r11, -2107581963 + test r11, 4080 + jz randomx_isn_149 randomx_isn_165: ; FSUB_R f1, a2 subpd xmm1, xmm10 randomx_isn_166: - ; IROR_R r5, r3 - mov ecx, r11d - ror r13, cl + ; FSWAP_R e1 + shufpd xmm5, xmm5, 1 randomx_isn_167: - ; ISUB_M r2, L2[r0+805006473] - lea eax, [r8d+805006473] - and eax, 262136 - sub r10, qword ptr [rsi+rax] + ; IMUL_R r2, r0 + imul r10, r8 randomx_isn_168: - ; FDIV_M e0, L1[r4-2098372994] - lea eax, [r12d-2098372994] - and eax, 16376 - cvtdq2pd xmm12, qword ptr [rsi+rax] - andps xmm12, xmm13 - orps xmm12, xmm14 - divpd xmm4, xmm12 + ; FSQRT_R e0 + sqrtpd xmm4, xmm4 randomx_isn_169: - ; ISUB_M r3, L2[r4+1773188989] - lea eax, [r12d+1773188989] - and eax, 262136 - sub r11, qword ptr [rsi+rax] + ; IMUL_R r3, r4 + imul r11, r12 randomx_isn_170: - ; FADD_R f0, a3 - addpd xmm0, xmm11 + ; FSUB_R f0, a3 + subpd xmm0, xmm11 randomx_isn_171: - ; FADD_R f1, a0 - addpd xmm1, xmm8 + ; FADD_M f1, L2[r4+102970518] + lea eax, [r12d+102970518] + and eax, 262136 + cvtdq2pd xmm12, qword ptr [rsi+rax] + addpd xmm1, xmm12 randomx_isn_172: ; ISTORE L1[r7-933780249], r6 lea eax, [r15d-933780249] and eax, 16376 mov qword ptr [rsi+rax], r14 randomx_isn_173: - ; FSUB_M f0, L1[r7-1204687701] - lea eax, [r15d-1204687701] - and eax, 16376 - cvtdq2pd xmm12, qword ptr [rsi+rax] - subpd xmm0, xmm12 + ; FSCAL_R f0 + xorps xmm0, xmm15 randomx_isn_174: - ; ISWAP_R r3, r0 - xchg r11, r8 + ; FSWAP_R f3 + shufpd xmm3, xmm3, 1 randomx_isn_175: - ; IMULH_R r0, r3 - mov rax, r8 - mul r11 - mov r8, rdx + ; IMUL_RCP r0, 770576157 + mov rax, 12852098036408674138 + imul r8, rax randomx_isn_176: - ; IMUL_M r2, L3[1439696] - imul r10, qword ptr [rsi+1439696] + ; ISMULH_R r2, r2 + mov rax, r10 + imul r10 + mov r10, rdx randomx_isn_177: - ; IMUL_M r3, L3[232968] - imul r11, qword ptr [rsi+232968] + ; IMULH_M r3, L3[232968] + mov rax, r11 + mul qword ptr [rsi+232968] + mov r11, rdx randomx_isn_178: - ; IADD_RS r5, r3, -2108568616, SHFT 0 - lea r13, [r13+r11*1-2108568616] -randomx_isn_179: - ; IADD_M r3, L1[r4+1322108729] - lea eax, [r12d+1322108729] + ; IADD_M r5, L1[r3-2108568616] + lea eax, [r11d-2108568616] and eax, 16376 - add r11, qword ptr [rsi+rax] + add r13, qword ptr [rsi+rax] +randomx_isn_179: + ; ISUB_R r3, r4 + sub r11, r12 randomx_isn_180: - ; FADD_R f3, a1 - addpd xmm3, xmm9 + ; FSUB_R f3, a1 + subpd xmm3, xmm9 randomx_isn_181: - ; FSQRT_R e3 - sqrtpd xmm7, xmm7 + ; CBRANCH 556152230, COND 12 + add r12, 556152230 + test r12, 1044480 + jz randomx_isn_165 randomx_isn_182: - ; FMUL_R e2, a2 - mulpd xmm6, xmm10 + ; FSQRT_R e2 + sqrtpd xmm6, xmm6 randomx_isn_183: ; IADD_RS r6, r2, SHFT 1 lea r14, [r14+r10*2] randomx_isn_184: - ; FADD_R f2, a3 - addpd xmm2, xmm11 + ; FADD_M f2, L2[r3+1545561007] + lea eax, [r11d+1545561007] + and eax, 262136 + cvtdq2pd xmm12, qword ptr [rsi+rax] + addpd xmm2, xmm12 randomx_isn_185: - ; FSWAP_R f3 - shufpd xmm3, xmm3, 1 + ; FADD_R f3, a3 + addpd xmm3, xmm11 randomx_isn_186: - ; FSCAL_R f3 - xorps xmm3, xmm15 + ; FMUL_R e3, a3 + mulpd xmm7, xmm11 randomx_isn_187: - ; IADD_RS r6, r6, SHFT 3 - lea r14, [r14+r14*8] + ; IADD_M r6, L3[1664992] + add r14, qword ptr [rsi+1664992] randomx_isn_188: - ; FSCAL_R f2 - xorps xmm2, xmm15 + ; FMUL_R e2, a1 + mulpd xmm6, xmm9 randomx_isn_189: - ; IMUL_M r4, L1[r5+1014226422] - lea eax, [r13d+1014226422] - and eax, 16376 - imul r12, qword ptr [rsi+rax] + ; ISMULH_R r4, r5 + mov rax, r12 + imul r13 + mov r12, rdx randomx_isn_190: - ; FSUB_M f2, L1[r3-87032284] - lea eax, [r11d-87032284] - and eax, 16376 - cvtdq2pd xmm12, qword ptr [rsi+rax] - subpd xmm2, xmm12 + ; FSCAL_R f2 + xorps xmm2, xmm15 randomx_isn_191: - ; IMUL_M r4, L2[r3+1279913094] - lea eax, [r11d+1279913094] - and eax, 262136 - imul r12, qword ptr [rsi+rax] + ; ISMULH_R r4, r3 + mov rax, r12 + imul r11 + mov r12, rdx randomx_isn_192: - ; ISUB_R r7, r3 - sub r15, r11 + ; ISUB_M r7, L1[r3+1266042411] + lea eax, [r11d+1266042411] + and eax, 16376 + sub r15, qword ptr [rsi+rax] randomx_isn_193: ; ISTORE L1[r1+901530824], r1 lea eax, [r9d+901530824] @@ -733,17 +776,14 @@ randomx_isn_194: and eax, 16376 mov qword ptr [rsi+rax], r12 randomx_isn_195: - ; FMUL_R e2, a2 - mulpd xmm6, xmm10 + ; FSQRT_R e2 + sqrtpd xmm6, xmm6 randomx_isn_196: ; FMUL_R e2, a0 mulpd xmm6, xmm8 randomx_isn_197: - ; FADD_M f2, L2[r0-197871122] - lea eax, [r8d-197871122] - and eax, 262136 - cvtdq2pd xmm12, qword ptr [rsi+rax] - addpd xmm2, xmm12 + ; FSUB_R f2, a0 + subpd xmm2, xmm8 randomx_isn_198: ; FADD_R f1, a2 addpd xmm1, xmm10 @@ -751,98 +791,94 @@ randomx_isn_199: ; FSUB_R f3, a3 subpd xmm3, xmm11 randomx_isn_200: - ; IADD_RS r2, r5, SHFT 0 - lea r10, [r10+r13*1] + ; IADD_M r2, L1[r5+248917123] + lea eax, [r13d+248917123] + and eax, 16376 + add r10, qword ptr [rsi+rax] randomx_isn_201: - ; ISUB_M r6, L2[r3+376384700] - lea eax, [r11d+376384700] - and eax, 262136 - sub r14, qword ptr [rsi+rax] + ; IMUL_R r6, r3 + imul r14, r11 randomx_isn_202: - ; ISWAP_R r3, r6 - xchg r11, r14 + ; FSWAP_R f3 + shufpd xmm3, xmm3, 1 randomx_isn_203: ; ISTORE L1[r1+330228321], r3 lea eax, [r9d+330228321] and eax, 16376 mov qword ptr [rsi+rax], r11 randomx_isn_204: - ; IMUL_R r6, r1 - imul r14, r9 -randomx_isn_205: - ; IADD_M r7, L2[r5-579800039] - lea eax, [r13d-579800039] + ; IMUL_M r6, L2[r1+329350850] + lea eax, [r9d+329350850] and eax, 262136 - add r15, qword ptr [rsi+rax] + imul r14, qword ptr [rsi+rax] +randomx_isn_205: + ; ISUB_R r7, r5 + sub r15, r13 randomx_isn_206: ; IADD_RS r3, r5, SHFT 2 lea r11, [r11+r13*4] randomx_isn_207: - ; FSCAL_R f1 - xorps xmm1, xmm15 + ; FMUL_R e1, a2 + mulpd xmm5, xmm10 randomx_isn_208: ; IADD_RS r6, r3, SHFT 0 lea r14, [r14+r11*1] randomx_isn_209: - ; FSUB_M f0, L1[r4-557177119] - lea eax, [r12d-557177119] - and eax, 16376 - cvtdq2pd xmm12, qword ptr [rsi+rax] - subpd xmm0, xmm12 + ; FSCAL_R f0 + xorps xmm0, xmm15 randomx_isn_210: - ; FSWAP_R e2 - shufpd xmm6, xmm6, 1 + ; FADD_R f2, a3 + addpd xmm2, xmm11 randomx_isn_211: ; FMUL_R e2, a3 mulpd xmm6, xmm11 randomx_isn_212: - ; IMUL_M r0, L1[r1-300353849] - lea eax, [r9d-300353849] - and eax, 16376 - imul r8, qword ptr [rsi+rax] + ; IMULH_M r0, L1[r1-300353849] + lea ecx, [r9d-300353849] + and ecx, 16376 + mov rax, r8 + mul qword ptr [rsi+rcx] + mov r8, rdx randomx_isn_213: - ; FSUB_M f2, L1[r5-2016234225] - lea eax, [r13d-2016234225] - and eax, 16376 - cvtdq2pd xmm12, qword ptr [rsi+rax] - subpd xmm2, xmm12 + ; FMUL_R e2, a1 + mulpd xmm6, xmm9 randomx_isn_214: - ; FMUL_R e1, a2 - mulpd xmm5, xmm10 + ; FSQRT_R e1 + sqrtpd xmm5, xmm5 randomx_isn_215: - ; FADD_R f3, a1 - addpd xmm3, xmm9 + ; FSUB_R f3, a1 + subpd xmm3, xmm9 randomx_isn_216: - ; IXOR_M r4, L2[r1+926150064] - lea eax, [r9d+926150064] - and eax, 262136 - xor r12, qword ptr [rsi+rax] + ; IROR_R r4, r1 + mov ecx, r9d + ror r12, cl randomx_isn_217: - ; IMUL_M r6, L1[r5-1692567271] - lea eax, [r13d-1692567271] - and eax, 16376 - imul r14, qword ptr [rsi+rax] + ; IMULH_M r6, L1[r5-1692567271] + lea ecx, [r13d-1692567271] + and ecx, 16376 + mov rax, r14 + mul qword ptr [rsi+rcx] + mov r14, rdx randomx_isn_218: - ; FSCAL_R f2 - xorps xmm2, xmm15 + ; FMUL_R e2, a1 + mulpd xmm6, xmm9 randomx_isn_219: - ; FADD_M f3, L1[r7+162195095] - lea eax, [r15d+162195095] - and eax, 16376 - cvtdq2pd xmm12, qword ptr [rsi+rax] - addpd xmm3, xmm12 + ; FSUB_R f3, a3 + subpd xmm3, xmm11 randomx_isn_220: ; FSUB_R f0, a0 subpd xmm0, xmm8 randomx_isn_221: - ; IMUL_R r1, r0 - imul r9, r8 + ; IMUL_M r1, L1[r0-1347065440] + lea eax, [r8d-1347065440] + and eax, 16376 + imul r9, qword ptr [rsi+rax] randomx_isn_222: ; IADD_RS r1, r0, SHFT 2 lea r9, [r9+r8*4] randomx_isn_223: - ; FSCAL_R f2 - xorps xmm2, xmm15 + ; FMUL_R e2, a0 + mulpd xmm6, xmm8 randomx_isn_224: ; IADD_RS r5, r4, 312567979, SHFT 3 lea r13, [r13+r12*8+312567979] @@ -855,25 +891,20 @@ randomx_isn_226: ; ISUB_R r6, -791575725 sub r14, -791575725 randomx_isn_227: - ; FDIV_M e3, L1[r0-1140408845] - lea eax, [r8d-1140408845] - and eax, 16376 - cvtdq2pd xmm12, qword ptr [rsi+rax] - andps xmm12, xmm13 - orps xmm12, xmm14 - divpd xmm7, xmm12 + ; FSQRT_R e3 + sqrtpd xmm7, xmm7 randomx_isn_228: ; IXOR_R r7, r1 xor r15, r9 randomx_isn_229: - ; ISWAP_R r0, r6 - xchg r8, r14 + ; FSWAP_R f0 + shufpd xmm0, xmm0, 1 randomx_isn_230: ; IADD_RS r2, r7, SHFT 3 lea r10, [r10+r15*8] randomx_isn_231: - ; FMUL_R e1, a0 - mulpd xmm5, xmm8 + ; FSQRT_R e1 + sqrtpd xmm5, xmm5 randomx_isn_232: ; FMUL_R e3, a3 mulpd xmm7, xmm11 @@ -881,13 +912,11 @@ randomx_isn_233: ; FMUL_R e0, a2 mulpd xmm4, xmm10 randomx_isn_234: - ; IADD_M r2, L1[r7+1435646464] - lea eax, [r15d+1435646464] - and eax, 16376 - add r10, qword ptr [rsi+rax] + ; ISUB_R r2, r7 + sub r10, r15 randomx_isn_235: - ; ISWAP_R r7, r6 - xchg r15, r14 + ; FSWAP_R e3 + shufpd xmm7, xmm7, 1 randomx_isn_236: ; FMUL_R e3, a2 mulpd xmm7, xmm10 @@ -898,41 +927,38 @@ randomx_isn_238: ; IADD_RS r4, r2, SHFT 0 lea r12, [r12+r10*1] randomx_isn_239: - ; IMUL_RCP r7, 3065786637 - mov rax, 12921343181238534701 - imul r15, rax + ; IXOR_R r7, r0 + xor r15, r8 randomx_isn_240: - ; IMUL_R r5, r7 - imul r13, r15 + ; IMULH_R r5, r7 + mov rax, r13 + mul r15 + mov r13, rdx randomx_isn_241: - ; IROR_R r6, r5 - mov ecx, r13d - ror r14, cl + ; FSWAP_R e2 + shufpd xmm6, xmm6, 1 randomx_isn_242: - ; IMUL_R r6, r4 - imul r14, r12 + ; IMUL_M r6, L1[r4-162027475] + lea eax, [r12d-162027475] + and eax, 16376 + imul r14, qword ptr [rsi+rax] randomx_isn_243: - ; FSUB_R f0, a3 - subpd xmm0, xmm11 + ; FSCAL_R f0 + xorps xmm0, xmm15 randomx_isn_244: - ; FADD_M f1, L1[r0-389606015] - lea eax, [r8d-389606015] - and eax, 16376 - cvtdq2pd xmm12, qword ptr [rsi+rax] - addpd xmm1, xmm12 + ; FSUB_R f1, a0 + subpd xmm1, xmm8 randomx_isn_245: - ; INEG_R r3 - neg r11 + ; IXOR_R r3, r2 + xor r11, r10 randomx_isn_246: - ; ISUB_M r7, L2[r2+1938400676] - lea eax, [r10d+1938400676] - and eax, 262136 - sub r15, qword ptr [rsi+rax] + ; IMUL_R r7, r2 + imul r15, r10 randomx_isn_247: ; CBRANCH -8545330, COND 4 - add r9, -8545314 - test r9, 2032 - jz randomx_isn_223 + add r8, -8545314 + test r8, 4080 + jz randomx_isn_213 randomx_isn_248: ; ISTORE L1[r0+1951752498], r5 lea eax, [r8d+1951752498] @@ -942,8 +968,11 @@ randomx_isn_249: ; IADD_RS r6, r5, SHFT 3 lea r14, [r14+r13*8] randomx_isn_250: - ; FADD_R f3, a0 - addpd xmm3, xmm8 + ; FADD_M f3, L2[r0-1921753477] + lea eax, [r8d-1921753477] + and eax, 262136 + cvtdq2pd xmm12, qword ptr [rsi+rax] + addpd xmm3, xmm12 randomx_isn_251: ; IADD_RS r0, r0, SHFT 0 lea r8, [r8+r8*1] @@ -951,12 +980,13 @@ randomx_isn_252: ; ISUB_R r4, r2 sub r12, r10 randomx_isn_253: - ; IADD_RS r5, r4, 256175395, SHFT 3 - lea r13, [r13+r12*8+256175395] + ; IADD_M r5, L2[r4+256175395] + lea eax, [r12d+256175395] + and eax, 262136 + add r13, qword ptr [rsi+rax] randomx_isn_254: ; IADD_RS r6, r7, SHFT 2 lea r14, [r14+r15*4] randomx_isn_255: - ; IROR_R r7, r3 - mov ecx, r11d - ror r15, cl + ; FSWAP_R e3 + shufpd xmm7, xmm7, 1