First Commit
This commit is contained in:
186
common/emitter/legacy_instructions.h
Normal file
186
common/emitter/legacy_instructions.h
Normal file
@@ -0,0 +1,186 @@
|
||||
// SPDX-FileCopyrightText: 2002-2025 PCSX2 Dev Team
|
||||
// SPDX-License-Identifier: GPL-3.0+
|
||||
|
||||
#pragma once
|
||||
|
||||
//#define SPAM_DEPRECATION_WARNINGS
|
||||
#if defined(__linux__) && defined(__clang__) && defined(SPAM_DEPRECATION_WARNINGS)
|
||||
#define ATTR_DEP [[deprecated]]
|
||||
#else
|
||||
#define ATTR_DEP
|
||||
#endif
|
||||
|
||||
#ifdef FSCALE
|
||||
# undef FSCALE // Defined in a macOS header
|
||||
#endif
|
||||
|
||||
//------------------------------------------------------------------
|
||||
// legacy jump/align functions
|
||||
//------------------------------------------------------------------
|
||||
ATTR_DEP extern void x86SetJ8(u8* j8);
|
||||
ATTR_DEP extern void x86SetJ8A(u8* j8);
|
||||
ATTR_DEP extern void x86SetJ16(u16* j16);
|
||||
ATTR_DEP extern void x86SetJ16A(u16* j16);
|
||||
ATTR_DEP extern void x86SetJ32(u32* j32);
|
||||
ATTR_DEP extern void x86SetJ32A(u32* j32);
|
||||
//------------------------------------------------------------------
|
||||
|
||||
////////////////////////////////////
|
||||
// jump instructions //
|
||||
////////////////////////////////////
|
||||
|
||||
// jmp rel8
|
||||
ATTR_DEP extern u8* JMP8(u8 to);
|
||||
|
||||
// jmp rel32
|
||||
ATTR_DEP extern u32* JMP32(uptr to);
|
||||
|
||||
// jp rel8
|
||||
ATTR_DEP extern u8* JP8(u8 to);
|
||||
// jnp rel8
|
||||
ATTR_DEP extern u8* JNP8(u8 to);
|
||||
// je rel8
|
||||
ATTR_DEP extern u8* JE8(u8 to);
|
||||
// jz rel8
|
||||
ATTR_DEP extern u8* JZ8(u8 to);
|
||||
// jg rel8
|
||||
ATTR_DEP extern u8* JG8(u8 to);
|
||||
// jge rel8
|
||||
ATTR_DEP extern u8* JGE8(u8 to);
|
||||
// js rel8
|
||||
ATTR_DEP extern u8* JS8(u8 to);
|
||||
// jns rel8
|
||||
ATTR_DEP extern u8* JNS8(u8 to);
|
||||
// jl rel8
|
||||
ATTR_DEP extern u8* JL8(u8 to);
|
||||
// ja rel8
|
||||
ATTR_DEP extern u8* JA8(u8 to);
|
||||
// jae rel8
|
||||
ATTR_DEP extern u8* JAE8(u8 to);
|
||||
// jb rel8
|
||||
ATTR_DEP extern u8* JB8(u8 to);
|
||||
// jbe rel8
|
||||
ATTR_DEP extern u8* JBE8(u8 to);
|
||||
// jle rel8
|
||||
ATTR_DEP extern u8* JLE8(u8 to);
|
||||
// jne rel8
|
||||
ATTR_DEP extern u8* JNE8(u8 to);
|
||||
// jnz rel8
|
||||
ATTR_DEP extern u8* JNZ8(u8 to);
|
||||
// jng rel8
|
||||
ATTR_DEP extern u8* JNG8(u8 to);
|
||||
// jnge rel8
|
||||
ATTR_DEP extern u8* JNGE8(u8 to);
|
||||
// jnl rel8
|
||||
ATTR_DEP extern u8* JNL8(u8 to);
|
||||
// jnle rel8
|
||||
ATTR_DEP extern u8* JNLE8(u8 to);
|
||||
// jo rel8
|
||||
ATTR_DEP extern u8* JO8(u8 to);
|
||||
// jno rel8
|
||||
ATTR_DEP extern u8* JNO8(u8 to);
|
||||
|
||||
/*
|
||||
// jb rel16
|
||||
ATTR_DEP extern u16* JA16( u16 to );
|
||||
// jb rel16
|
||||
ATTR_DEP extern u16* JB16( u16 to );
|
||||
// je rel16
|
||||
ATTR_DEP extern u16* JE16( u16 to );
|
||||
// jz rel16
|
||||
ATTR_DEP extern u16* JZ16( u16 to );
|
||||
*/
|
||||
|
||||
// jns rel32
|
||||
ATTR_DEP extern u32* JNS32(u32 to);
|
||||
// js rel32
|
||||
ATTR_DEP extern u32* JS32(u32 to);
|
||||
|
||||
// jb rel32
|
||||
ATTR_DEP extern u32* JB32(u32 to);
|
||||
// je rel32
|
||||
ATTR_DEP extern u32* JE32(u32 to);
|
||||
// jz rel32
|
||||
ATTR_DEP extern u32* JZ32(u32 to);
|
||||
// jg rel32
|
||||
ATTR_DEP extern u32* JG32(u32 to);
|
||||
// jge rel32
|
||||
ATTR_DEP extern u32* JGE32(u32 to);
|
||||
// jl rel32
|
||||
ATTR_DEP extern u32* JL32(u32 to);
|
||||
// jle rel32
|
||||
ATTR_DEP extern u32* JLE32(u32 to);
|
||||
// jae rel32
|
||||
ATTR_DEP extern u32* JAE32(u32 to);
|
||||
// jne rel32
|
||||
ATTR_DEP extern u32* JNE32(u32 to);
|
||||
// jnz rel32
|
||||
ATTR_DEP extern u32* JNZ32(u32 to);
|
||||
// jng rel32
|
||||
ATTR_DEP extern u32* JNG32(u32 to);
|
||||
// jnge rel32
|
||||
ATTR_DEP extern u32* JNGE32(u32 to);
|
||||
// jnl rel32
|
||||
ATTR_DEP extern u32* JNL32(u32 to);
|
||||
// jnle rel32
|
||||
ATTR_DEP extern u32* JNLE32(u32 to);
|
||||
// jo rel32
|
||||
ATTR_DEP extern u32* JO32(u32 to);
|
||||
// jno rel32
|
||||
ATTR_DEP extern u32* JNO32(u32 to);
|
||||
// js rel32
|
||||
ATTR_DEP extern u32* JS32(u32 to);
|
||||
|
||||
//******************
|
||||
// FPU instructions
|
||||
//******************
|
||||
|
||||
// fld m32 to fpu reg stack
|
||||
ATTR_DEP extern void FLD32(u32 from);
|
||||
// fld st(i)
|
||||
ATTR_DEP extern void FLD(int st);
|
||||
// fld1 (push +1.0f on the stack)
|
||||
ATTR_DEP extern void FLD1();
|
||||
// fld1 (push log_2 e on the stack)
|
||||
ATTR_DEP extern void FLDL2E();
|
||||
// fstp m32 from fpu reg stack
|
||||
ATTR_DEP extern void FSTP32(u32 to);
|
||||
// fstp st(i)
|
||||
ATTR_DEP extern void FSTP(int st);
|
||||
|
||||
// frndint
|
||||
ATTR_DEP extern void FRNDINT();
|
||||
ATTR_DEP extern void FXCH(int st);
|
||||
ATTR_DEP extern void F2XM1();
|
||||
ATTR_DEP extern void FSCALE();
|
||||
|
||||
// fadd ST(0) to fpu reg stack ST(src)
|
||||
ATTR_DEP extern void FADD320toR(x86IntRegType src);
|
||||
// fsub ST(src) to fpu reg stack ST(0)
|
||||
ATTR_DEP extern void FSUB32Rto0(x86IntRegType src);
|
||||
|
||||
// fmul m32 to fpu reg stack
|
||||
ATTR_DEP extern void FMUL32(u32 from);
|
||||
// fdiv m32 to fpu reg stack
|
||||
ATTR_DEP extern void FDIV32(u32 from);
|
||||
// ftan fpu reg stack
|
||||
ATTR_DEP extern void FPATAN(void);
|
||||
// fsin fpu reg stack
|
||||
ATTR_DEP extern void FSIN(void);
|
||||
|
||||
//*********************
|
||||
// SSE instructions *
|
||||
//*********************
|
||||
ATTR_DEP extern void SSE_MAXSS_XMM_to_XMM(x86SSERegType to, x86SSERegType from);
|
||||
ATTR_DEP extern void SSE_MINSS_XMM_to_XMM(x86SSERegType to, x86SSERegType from);
|
||||
ATTR_DEP extern void SSE_ADDSS_XMM_to_XMM(x86SSERegType to, x86SSERegType from);
|
||||
ATTR_DEP extern void SSE_SUBSS_XMM_to_XMM(x86SSERegType to, x86SSERegType from);
|
||||
|
||||
//*********************
|
||||
// SSE 2 Instructions*
|
||||
//*********************
|
||||
|
||||
ATTR_DEP extern void SSE2_MAXSD_XMM_to_XMM(x86SSERegType to, x86SSERegType from);
|
||||
ATTR_DEP extern void SSE2_MINSD_XMM_to_XMM(x86SSERegType to, x86SSERegType from);
|
||||
ATTR_DEP extern void SSE2_ADDSD_XMM_to_XMM(x86SSERegType to, x86SSERegType from);
|
||||
ATTR_DEP extern void SSE2_SUBSD_XMM_to_XMM(x86SSERegType to, x86SSERegType from);
|
||||
Reference in New Issue
Block a user