mirror of https://github.com/PCSX2/pcsx2.git
Various bizarreness to get Linux working again.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@2354 96395faa-99c1-11dd-bbfe-3dabce05a288
This commit is contained in:
parent
820c9c10ee
commit
7af22987b0
|
@ -321,6 +321,10 @@ static void __fastcall fUNPACK_V4_5(u32 *dest, u32 *data)
|
|||
|
||||
#define _upk (UNPACKFUNCTYPE)
|
||||
#define _odd (UNPACKFUNCTYPE_ODD)
|
||||
#define _unpk_s(bits) (UNPACKFUNCTYPE_S##bits)
|
||||
#define _odd_s(bits) (UNPACKFUNCTYPE_ODD_S##bits)
|
||||
#define _unpk_u(bits) (UNPACKFUNCTYPE_U##bits)
|
||||
#define _odd_u(bits) (UNPACKFUNCTYPE_ODD_U##bits)
|
||||
|
||||
// --------------------------------------------------------------------------------------
|
||||
// Main table for function unpacking.
|
||||
|
@ -331,16 +335,16 @@ static void __fastcall fUNPACK_V4_5(u32 *dest, u32 *data)
|
|||
|
||||
// 32-bits versions are unsigned-only!!
|
||||
#define UnpackFuncPair32( sizefac, vt, doMask ) \
|
||||
_upk fUNPACK_##vt<doMask, sizefac, u32>, \
|
||||
_upk fUNPACK_##vt<doMask, sizefac, u32>, \
|
||||
_odd UNPACK_##vt<doMask, u32>, \
|
||||
_odd UNPACK_##vt<doMask, u32>,
|
||||
(UNPACKFUNCTYPE)_unpk_u(32) fUNPACK_##vt<doMask, sizefac, u32>, \
|
||||
(UNPACKFUNCTYPE)_unpk_u(32) fUNPACK_##vt<doMask, sizefac, u32>, \
|
||||
(UNPACKFUNCTYPE_ODD)_odd_u(32) UNPACK_##vt<doMask, u32>, \
|
||||
(UNPACKFUNCTYPE_ODD)_odd_u(32) UNPACK_##vt<doMask, u32>,
|
||||
|
||||
#define UnpackFuncPair( sizefac, vt, bits, doMask ) \
|
||||
_upk fUNPACK_##vt<doMask, sizefac, u##bits>, \
|
||||
_upk fUNPACK_##vt<doMask, sizefac, s##bits>, \
|
||||
_odd UNPACK_##vt<doMask, u##bits>, \
|
||||
_odd UNPACK_##vt<doMask, s##bits>,
|
||||
(UNPACKFUNCTYPE)_unpk_u(bits) fUNPACK_##vt<doMask, sizefac, u##bits>, \
|
||||
(UNPACKFUNCTYPE)_unpk_s(bits) fUNPACK_##vt<doMask, sizefac, s##bits>, \
|
||||
(UNPACKFUNCTYPE_ODD)_odd_u(bits) UNPACK_##vt<doMask, u##bits>, \
|
||||
(UNPACKFUNCTYPE_ODD)_odd_s(bits) UNPACK_##vt<doMask, s##bits>,
|
||||
|
||||
#define UnpackFuncSet( doMask ) \
|
||||
{ UnpackFuncPair32( 4, S, doMask ) /* 0x0 - S-32 */ \
|
||||
|
@ -374,8 +378,8 @@ static void __fastcall fUNPACK_V4_5(u32 *dest, u32 *data)
|
|||
{ UnpackFuncPair ( 4, V4, 8, doMask ) /* 0xE - V4-8 */ \
|
||||
12, 1, 4, 4 }, \
|
||||
{ /* 0xF - V4-5 */ \
|
||||
_upk fUNPACK_V4_5<doMask>, _upk fUNPACK_V4_5<doMask>, \
|
||||
_odd UNPACK_V4_5<doMask>, _odd UNPACK_V4_5<doMask>, \
|
||||
(UNPACKFUNCTYPE)_unpk_u(32) fUNPACK_V4_5<doMask>, (UNPACKFUNCTYPE)_unpk_u(32) fUNPACK_V4_5<doMask>, \
|
||||
(UNPACKFUNCTYPE_ODD)_odd_u(32) UNPACK_V4_5<doMask>, (UNPACKFUNCTYPE_ODD)_odd_u(32) UNPACK_V4_5<doMask>, \
|
||||
6, 2, 2, 4 },
|
||||
|
||||
const __aligned16 VIFUnpackFuncTable VIFfuncTable[32] =
|
||||
|
|
|
@ -33,13 +33,28 @@ typedef void (__fastcall *UNPACKFUNCTYPE)(u32 *dest, u32 *data);
|
|||
typedef void (__fastcall *UNPACKFUNCTYPE_ODD)(u32 *dest, u32 *data, int size);
|
||||
typedef int (*UNPACKPARTFUNCTYPESSE)(u32 *dest, u32 *data, int size);
|
||||
|
||||
#define create_unpack_u_type(bits) typedef void (__fastcall *UNPACKFUNCTYPE_U##bits)(u32 *dest, u##bits *data);
|
||||
#define create_unpack_odd_u_type(bits) typedef void (__fastcall *UNPACKFUNCTYPE_ODD_U##bits)(u32 *dest, u##bits *data, int size);
|
||||
#define create_unpack_s_type(bits) typedef void (__fastcall *UNPACKFUNCTYPE_S##bits)(u32 *dest, s##bits *data);
|
||||
#define create_unpack_odd_s_type(bits) typedef void (__fastcall *UNPACKFUNCTYPE_ODD_S##bits)(u32 *dest, s##bits *data, int size);
|
||||
|
||||
#define create_some_unpacks(bits) \
|
||||
create_unpack_u_type(bits); \
|
||||
create_unpack_odd_u_type(bits); \
|
||||
create_unpack_s_type(bits); \
|
||||
create_unpack_odd_s_type(bits);
|
||||
|
||||
create_some_unpacks(32);
|
||||
create_some_unpacks(16);
|
||||
create_some_unpacks(8);
|
||||
|
||||
struct VIFUnpackFuncTable
|
||||
{
|
||||
UNPACKFUNCTYPE funcU;
|
||||
UNPACKFUNCTYPE funcS;
|
||||
UNPACKFUNCTYPE funcU;
|
||||
UNPACKFUNCTYPE funcS;
|
||||
|
||||
UNPACKFUNCTYPE_ODD oddU; // needed for old-style vif only, remove when old vif is removed.
|
||||
UNPACKFUNCTYPE_ODD oddS; // needed for old-style vif only, remove when old vif is removed.
|
||||
UNPACKFUNCTYPE_ODD oddU; // needed for old-style vif only, remove when old vif is removed.
|
||||
UNPACKFUNCTYPE_ODD oddS; // needed for old-style vif only, remove when old vif is removed.
|
||||
|
||||
u8 bsize; // currently unused
|
||||
u8 dsize; // byte size of one channel
|
||||
|
|
|
@ -20,7 +20,6 @@
|
|||
#include "x86emitter/x86emitter.h"
|
||||
using namespace x86Emitter;
|
||||
extern void mVUmergeRegs(int dest, int src, int xyzw, bool modXYZW = 0);
|
||||
extern void _nVifUnpack(int idx, u8 *data, u32 size);
|
||||
|
||||
typedef u32 (__fastcall *nVifCall)(void*, void*);
|
||||
|
||||
|
|
|
@ -20,6 +20,7 @@
|
|||
#pragma once
|
||||
|
||||
static __aligned16 nVifStruct nVif[2];
|
||||
static _f void _nVifUnpack(int idx, u8 *data, u32 size);
|
||||
|
||||
int nVifUnpack(int idx, u32 *data) {
|
||||
XMMRegisters::Freeze();
|
||||
|
|
Loading…
Reference in New Issue