1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-27 00:27:45 +00:00

LibX86: Add SSE support

This only adds the decodeing support for SSE, not SSE2, etc.
may contain traces of SSE2.
This commit is contained in:
Hediadyoin1 2021-09-02 14:04:15 +02:00 committed by Brian Gianforcaro
parent d91f194ddd
commit 3ad6d87a45
5 changed files with 617 additions and 0 deletions

View file

@ -657,6 +657,85 @@ public:
virtual void wrap_0xD3_16(const Instruction&) = 0;
virtual void wrap_0xD3_32(const Instruction&) = 0;
virtual void PREFETCHTNTA(Instruction const&) = 0;
virtual void PREFETCHT0(Instruction const&) = 0;
virtual void PREFETCHT1(Instruction const&) = 0;
virtual void PREFETCHT2(Instruction const&) = 0;
virtual void LDMXCSR(Instruction const&) = 0;
virtual void STMXCSR(Instruction const&) = 0;
virtual void MOVUPS_xmm1_xmm2m128(Instruction const&) = 0;
virtual void MOVSS_xmm1_xmm2m32(Instruction const&) = 0;
virtual void MOVUPS_xmm1m128_xmm2(Instruction const&) = 0;
virtual void MOVSS_xmm1m32_xmm2(Instruction const&) = 0;
virtual void MOVLPS_xmm1_xmm2m64(Instruction const&) = 0;
virtual void MOVLPS_m64_xmm2(Instruction const&) = 0;
virtual void UNPCKLPS_xmm1_xmm2m128(Instruction const&) = 0;
virtual void UNPCKHPS_xmm1_xmm2m128(Instruction const&) = 0;
virtual void MOVHPS_xmm1_xmm2m64(Instruction const&) = 0;
virtual void MOVHPS_m64_xmm2(Instruction const&) = 0;
virtual void MOVAPS_xmm1_xmm2m128(Instruction const&) = 0;
virtual void MOVAPS_xmm1m128_xmm2(Instruction const&) = 0;
virtual void CVTTPS2PI_mm1_xmm2m64(Instruction const&) = 0;
virtual void CVTTPS2PI_r32_xmm2m32(Instruction const&) = 0;
virtual void CVTPI2PS_xmm1_mm2m64(Instruction const&) = 0;
virtual void CVTSI2SS_xmm1_rm32(Instruction const&) = 0;
virtual void MOVNTPS_xmm1m128_xmm2(Instruction const&) = 0;
virtual void CVTPS2PI_xmm1_mm2m64(Instruction const&) = 0;
virtual void CVTSS2SI_xmm1_rm32(Instruction const&) = 0;
virtual void UCOMISS_xmm1_xmm2m32(Instruction const&) = 0;
virtual void COMISS_xmm1_xmm2m32(Instruction const&) = 0;
virtual void MOVMSKPS_reg_xmm(Instruction const&) = 0;
virtual void SQRTPS_xmm1_xmm2m128(Instruction const&) = 0;
virtual void SQRTSS_xmm1_xmm2m32(Instruction const&) = 0;
virtual void RSQRTPS_xmm1_xmm2m128(Instruction const&) = 0;
virtual void RSQRTSS_xmm1_xmm2m32(Instruction const&) = 0;
virtual void RCPPS_xmm1_xmm2m128(Instruction const&) = 0;
virtual void RCPSS_xmm1_xmm2m32(Instruction const&) = 0;
virtual void ANDPS_xmm1_xmm2m128(Instruction const&) = 0;
virtual void ANDNPS_xmm1_xmm2m128(Instruction const&) = 0;
virtual void ORPS_xmm1_xmm2m128(Instruction const&) = 0;
virtual void XORPS_xmm1_xmm2m128(Instruction const&) = 0;
virtual void ADDPS_xmm1_xmm2m128(Instruction const&) = 0;
virtual void ADDSS_xmm1_xmm2m32(Instruction const&) = 0;
virtual void MULPS_xmm1_xmm2m128(Instruction const&) = 0;
virtual void MULSS_xmm1_xmm2m32(Instruction const&) = 0;
virtual void SUBPS_xmm1_xmm2m128(Instruction const&) = 0;
virtual void SUBSS_xmm1_xmm2m32(Instruction const&) = 0;
virtual void MINPS_xmm1_xmm2m128(Instruction const&) = 0;
virtual void MINSS_xmm1_xmm2m32(Instruction const&) = 0;
virtual void DIVPS_xmm1_xmm2m128(Instruction const&) = 0;
virtual void DIVSS_xmm1_xmm2m32(Instruction const&) = 0;
virtual void MAXPS_xmm1_xmm2m128(Instruction const&) = 0;
virtual void MAXSS_xmm1_xmm2m32(Instruction const&) = 0;
virtual void PSHUFW_mm1_mm2m64_imm8(Instruction const&) = 0;
virtual void CMPPS_xmm1_xmm2m128_imm8(Instruction const&) = 0;
virtual void CMPSS_xmm1_xmm2m32_imm8(Instruction const&) = 0;
virtual void PINSRW_mm1_r32m16_imm8(Instruction const&) = 0;
virtual void PINSRW_xmm1_r32m16_imm8(Instruction const&) = 0;
virtual void PEXTRW_reg_mm1_imm8(Instruction const&) = 0;
virtual void PEXTRW_reg_xmm1_imm8(Instruction const&) = 0;
virtual void SHUFPS_xmm1_xmm2m128_imm8(Instruction const&) = 0;
virtual void PMOVMSKB_reg_mm1(Instruction const&) = 0;
virtual void PMOVMSKB_reg_xmm1(Instruction const&) = 0;
virtual void PMINUB_mm1_mm2m64(Instruction const&) = 0;
virtual void PMINUB_xmm1_xmm2m128(Instruction const&) = 0;
virtual void PMAXUB_mm1_mm2m64(Instruction const&) = 0;
virtual void PMAXUB_xmm1_xmm2m128(Instruction const&) = 0;
virtual void PAVGB_mm1_mm2m64(Instruction const&) = 0;
virtual void PAVGB_xmm1_xmm2m128(Instruction const&) = 0;
virtual void PAVGW_mm1_mm2m64(Instruction const&) = 0;
virtual void PAVGW_xmm1_xmm2m128(Instruction const&) = 0;
virtual void PMULHUW_mm1_mm2m64(Instruction const&) = 0;
virtual void PMULHUW_xmm1_xmm2m64(Instruction const&) = 0;
virtual void MOVNTQ_m64_mm1(Instruction const&) = 0;
virtual void PMINSB_mm1_mm2m64(Instruction const&) = 0;
virtual void PMINSB_xmm1_xmm2m128(Instruction const&) = 0;
virtual void PMAXSB_mm1_mm2m64(Instruction const&) = 0;
virtual void PMAXSB_xmm1_xmm2m128(Instruction const&) = 0;
virtual void PSADBB_mm1_mm2m64(Instruction const&) = 0;
virtual void PSADBB_xmm1_xmm2m128(Instruction const&) = 0;
virtual void MASKMOVQ_mm1_mm2m64(Instruction const&) = 0;
protected:
virtual ~Interpreter() = default;
};