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 _upk (UNPACKFUNCTYPE)
|
||||||
#define _odd (UNPACKFUNCTYPE_ODD)
|
#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.
|
// 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!!
|
// 32-bits versions are unsigned-only!!
|
||||||
#define UnpackFuncPair32( sizefac, vt, doMask ) \
|
#define UnpackFuncPair32( sizefac, vt, doMask ) \
|
||||||
_upk fUNPACK_##vt<doMask, sizefac, u32>, \
|
(UNPACKFUNCTYPE)_unpk_u(32) fUNPACK_##vt<doMask, sizefac, u32>, \
|
||||||
_upk fUNPACK_##vt<doMask, sizefac, u32>, \
|
(UNPACKFUNCTYPE)_unpk_u(32) fUNPACK_##vt<doMask, sizefac, u32>, \
|
||||||
_odd UNPACK_##vt<doMask, u32>, \
|
(UNPACKFUNCTYPE_ODD)_odd_u(32) UNPACK_##vt<doMask, u32>, \
|
||||||
_odd UNPACK_##vt<doMask, u32>,
|
(UNPACKFUNCTYPE_ODD)_odd_u(32) UNPACK_##vt<doMask, u32>,
|
||||||
|
|
||||||
#define UnpackFuncPair( sizefac, vt, bits, doMask ) \
|
#define UnpackFuncPair( sizefac, vt, bits, doMask ) \
|
||||||
_upk fUNPACK_##vt<doMask, sizefac, u##bits>, \
|
(UNPACKFUNCTYPE)_unpk_u(bits) fUNPACK_##vt<doMask, sizefac, u##bits>, \
|
||||||
_upk fUNPACK_##vt<doMask, sizefac, s##bits>, \
|
(UNPACKFUNCTYPE)_unpk_s(bits) fUNPACK_##vt<doMask, sizefac, s##bits>, \
|
||||||
_odd UNPACK_##vt<doMask, u##bits>, \
|
(UNPACKFUNCTYPE_ODD)_odd_u(bits) UNPACK_##vt<doMask, u##bits>, \
|
||||||
_odd UNPACK_##vt<doMask, s##bits>,
|
(UNPACKFUNCTYPE_ODD)_odd_s(bits) UNPACK_##vt<doMask, s##bits>,
|
||||||
|
|
||||||
#define UnpackFuncSet( doMask ) \
|
#define UnpackFuncSet( doMask ) \
|
||||||
{ UnpackFuncPair32( 4, S, doMask ) /* 0x0 - S-32 */ \
|
{ 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 */ \
|
{ UnpackFuncPair ( 4, V4, 8, doMask ) /* 0xE - V4-8 */ \
|
||||||
12, 1, 4, 4 }, \
|
12, 1, 4, 4 }, \
|
||||||
{ /* 0xF - V4-5 */ \
|
{ /* 0xF - V4-5 */ \
|
||||||
_upk fUNPACK_V4_5<doMask>, _upk fUNPACK_V4_5<doMask>, \
|
(UNPACKFUNCTYPE)_unpk_u(32) fUNPACK_V4_5<doMask>, (UNPACKFUNCTYPE)_unpk_u(32) fUNPACK_V4_5<doMask>, \
|
||||||
_odd UNPACK_V4_5<doMask>, _odd UNPACK_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 },
|
6, 2, 2, 4 },
|
||||||
|
|
||||||
const __aligned16 VIFUnpackFuncTable VIFfuncTable[32] =
|
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 void (__fastcall *UNPACKFUNCTYPE_ODD)(u32 *dest, u32 *data, int size);
|
||||||
typedef int (*UNPACKPARTFUNCTYPESSE)(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
|
struct VIFUnpackFuncTable
|
||||||
{
|
{
|
||||||
UNPACKFUNCTYPE funcU;
|
UNPACKFUNCTYPE funcU;
|
||||||
UNPACKFUNCTYPE funcS;
|
UNPACKFUNCTYPE funcS;
|
||||||
|
|
||||||
UNPACKFUNCTYPE_ODD oddU; // 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.
|
UNPACKFUNCTYPE_ODD oddS; // needed for old-style vif only, remove when old vif is removed.
|
||||||
|
|
||||||
u8 bsize; // currently unused
|
u8 bsize; // currently unused
|
||||||
u8 dsize; // byte size of one channel
|
u8 dsize; // byte size of one channel
|
||||||
|
|
|
@ -20,7 +20,6 @@
|
||||||
#include "x86emitter/x86emitter.h"
|
#include "x86emitter/x86emitter.h"
|
||||||
using namespace x86Emitter;
|
using namespace x86Emitter;
|
||||||
extern void mVUmergeRegs(int dest, int src, int xyzw, bool modXYZW = 0);
|
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*);
|
typedef u32 (__fastcall *nVifCall)(void*, void*);
|
||||||
|
|
||||||
|
|
|
@ -20,6 +20,7 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
static __aligned16 nVifStruct nVif[2];
|
static __aligned16 nVifStruct nVif[2];
|
||||||
|
static _f void _nVifUnpack(int idx, u8 *data, u32 size);
|
||||||
|
|
||||||
int nVifUnpack(int idx, u32 *data) {
|
int nVifUnpack(int idx, u32 *data) {
|
||||||
XMMRegisters::Freeze();
|
XMMRegisters::Freeze();
|
||||||
|
|
Loading…
Reference in New Issue