2.4 KiB
2.4 KiB
- terrible infinit error on ../debug/comment_as_space.eax
- X: Implement other utility instructions.
- X: Implement BMI1 and BMI2 into assembler.
- X: Write 'cpuid' tool to check for extensions.
- X: Check out AES and SHA integration.
Intel/AMD x86-64 CPU ISA Extensions:
- BMI1 -- I'm fine with these. A) andn, bextr, blsi, blsmsk, blsr, tzcnt, lzcnt (?);
- BMI2 -- Most CPUs have these too. A) bzhi, mulx, pdep, pext, rorx, sarx, shrx, shlx;
- MPX -- Mostly useless instructions, probable attack vector, not publicly disclosed tho.
- ADX -- Only two instructions, but my CPU doesn't support it, so no.
- SMAP -- This was added to make the glowie backdoors easier to use.
- MMX -- Useless remnaint of the past as far as I understand...
- SHA -- This might be useful, I'd like to see if I can implement it.
- AES -- Same case, even tho I don't know if anyone would ever use this.
- RTM/HLE -- This has history of being buggy and Incel disabling it via uops update.
- SSE1 -- It would be good to have it. A) movss, movaps, movups, movlps, movhps, movlhps, movhlps, movmskps; B) addss, subss, mulss, divss, rcpss, sqrtss, maxss, minss, rsqrtss; C) addps, subps, mulps, divps, rcpps, sqrtps, maxps, minps, rsqrtps, andps, orps, xorps, andnps; D) cmpss, comiss, ucomiss, cmpps, shufps, unpckhps, unpcklps; E) cvtsi2ss, cvtss2si, cvttss2si, cvtpi2ps, cvtps2pi, cvttps2pi; F) pmulhuw, psadbw, pavgb, pavgw, pmaxub, pminub, pmaxsw, pminsw, pextrw, pinsrw, pmovmskb, pshufw;
- SSE2 -- This doesn't introduces fully new instructions? I might make it...
- SSE3 -- What was the fucking point, all instructions are garbage...
- SSE4 -- Definitely not, it has several iterations, and not SIMD-only, fuck that.
- AVX1 -- Probably not going to implement it, but it can be useful. A) vbroadcastss, vbroadcastsd, vbroadcastf128, vinsertf128, vextractf128, vmaskmovps, vmaskmovpd; B) vpermilps, vpermilpd, vperm2f128, vtestps, vtestpd, vzeroall, vzeroupper;
- AVX2 -- Is it worth it? My CPU supports it, we'll see, tho I hate AVX. A) vpbroadcastb, vpbroadcastw, vpbroadcastd, vpbroadcastq; B) vgatherdpd, vgatherqpd, vgatherdps, vgatherqps, vpgatherdd, vpgatherdq, vpgatherqd, vpgatherqq; C) vpmaskmovd, vpmaskmovq, vpermps, vpermd, vpermpd, vpermq, vperm2i128; D) vpblendd, vpsllvd, vpsllvq, vpsrlvd, vpsrlvq, vpsravd;
- AVX5 -- Fuck this.
- AVX10 -- I'd rather die.