mirror of
https://github.com/hrydgard/ppsspp.git
synced 2024-11-23 13:30:02 +00:00
Implement Vsrt1,Vsrt2,Vsrt3,Vsrt4
This commit is contained in:
parent
bf0792e42a
commit
ab0253d71c
@ -883,6 +883,98 @@ namespace MIPSInt
|
|||||||
EatPrefixes();
|
EatPrefixes();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Int_Vsrt1(u32 op)
|
||||||
|
{
|
||||||
|
float s[4];
|
||||||
|
float d[4];
|
||||||
|
int vd = _VD;
|
||||||
|
int vs = _VS;
|
||||||
|
VectorSize sz = GetVecSize(op);
|
||||||
|
ReadVector(s, sz, vs);
|
||||||
|
ApplySwizzleS(s, sz);
|
||||||
|
float x = s[0];
|
||||||
|
float y = s[1];
|
||||||
|
float z = s[2];
|
||||||
|
float w = s[3];
|
||||||
|
d[0] = std::min(x, y);
|
||||||
|
d[1] = std::max(x, y);
|
||||||
|
d[2] = std::min(z, w);
|
||||||
|
d[3] = std::max(z, w);
|
||||||
|
ApplyPrefixD(d, sz);
|
||||||
|
WriteVector(d, sz, vd);
|
||||||
|
PC += 4;
|
||||||
|
EatPrefixes();
|
||||||
|
}
|
||||||
|
|
||||||
|
void Int_Vsrt2(u32 op)
|
||||||
|
{
|
||||||
|
float s[4];
|
||||||
|
float d[4];
|
||||||
|
int vd = _VD;
|
||||||
|
int vs = _VS;
|
||||||
|
VectorSize sz = GetVecSize(op);
|
||||||
|
ReadVector(s, sz, vs);
|
||||||
|
ApplySwizzleS(s, sz);
|
||||||
|
float x = s[0];
|
||||||
|
float y = s[1];
|
||||||
|
float z = s[2];
|
||||||
|
float w = s[3];
|
||||||
|
d[0] = std::min(x, w);
|
||||||
|
d[1] = std::min(y, z);
|
||||||
|
d[2] = std::max(y, z);
|
||||||
|
d[3] = std::max(x, w);
|
||||||
|
ApplyPrefixD(d, sz);
|
||||||
|
WriteVector(d, sz, vd);
|
||||||
|
PC += 4;
|
||||||
|
EatPrefixes();
|
||||||
|
}
|
||||||
|
|
||||||
|
void Int_Vsrt3(u32 op)
|
||||||
|
{
|
||||||
|
float s[4];
|
||||||
|
float d[4];
|
||||||
|
int vd = _VD;
|
||||||
|
int vs = _VS;
|
||||||
|
VectorSize sz = GetVecSize(op);
|
||||||
|
ReadVector(s, sz, vs);
|
||||||
|
ApplySwizzleS(s, sz);
|
||||||
|
float x = s[0];
|
||||||
|
float y = s[1];
|
||||||
|
float z = s[2];
|
||||||
|
float w = s[3];
|
||||||
|
d[0] = std::max(x, y);
|
||||||
|
d[1] = std::min(x, y);
|
||||||
|
d[2] = std::max(z, w);
|
||||||
|
d[3] = std::min(z, w);
|
||||||
|
ApplyPrefixD(d, sz);
|
||||||
|
WriteVector(d, sz, vd);
|
||||||
|
PC += 4;
|
||||||
|
EatPrefixes();
|
||||||
|
}
|
||||||
|
|
||||||
|
void Int_Vsrt4(u32 op)
|
||||||
|
{
|
||||||
|
float s[4];
|
||||||
|
float d[4];
|
||||||
|
int vd = _VD;
|
||||||
|
int vs = _VS;
|
||||||
|
VectorSize sz = GetVecSize(op);
|
||||||
|
ReadVector(s, sz, vs);
|
||||||
|
ApplySwizzleS(s, sz);
|
||||||
|
float x = s[0];
|
||||||
|
float y = s[1];
|
||||||
|
float z = s[2];
|
||||||
|
float w = s[3];
|
||||||
|
d[0] = std::max(x, w);
|
||||||
|
d[1] = std::max(y, z);
|
||||||
|
d[2] = std::min(y, z);
|
||||||
|
d[3] = std::min(x, w);
|
||||||
|
ApplyPrefixD(d, sz);
|
||||||
|
WriteVector(d, sz, vd);
|
||||||
|
PC += 4;
|
||||||
|
EatPrefixes();
|
||||||
|
}
|
||||||
|
|
||||||
void Int_Vcrs(u32 op)
|
void Int_Vcrs(u32 op)
|
||||||
{
|
{
|
||||||
//half a cross product
|
//half a cross product
|
||||||
|
@ -55,6 +55,10 @@ namespace MIPSInt
|
|||||||
void Int_VPFX(u32 op);
|
void Int_VPFX(u32 op);
|
||||||
void Int_Vflush(u32 op);
|
void Int_Vflush(u32 op);
|
||||||
void Int_Vbfy(u32 op);
|
void Int_Vbfy(u32 op);
|
||||||
|
void Int_Vsrt1(u32 op);
|
||||||
|
void Int_Vsrt2(u32 op);
|
||||||
|
void Int_Vsrt3(u32 op);
|
||||||
|
void Int_Vsrt4(u32 op);
|
||||||
void Int_Vf2i(u32 op);
|
void Int_Vf2i(u32 op);
|
||||||
void Int_Vi2f(u32 op);
|
void Int_Vi2f(u32 op);
|
||||||
void Int_Vi2x(u32 op);
|
void Int_Vi2x(u32 op);
|
||||||
|
@ -685,8 +685,8 @@ MIPSInstruction tableVFPUMatrixSet1[16] = //111100 11100 0xxxx (rm x is 16)
|
|||||||
|
|
||||||
MIPSInstruction tableVFPU9[32] = //110100 00010 xxxxx
|
MIPSInstruction tableVFPU9[32] = //110100 00010 xxxxx
|
||||||
{
|
{
|
||||||
INSTR("vsrt1", &Jit::Comp_Generic, Dis_Generic, 0, IS_VFPU),
|
INSTR("vsrt1", &Jit::Comp_Generic, Dis_Vbfy, Int_Vsrt1, IS_VFPU),
|
||||||
INSTR("vsrt2", &Jit::Comp_Generic, Dis_Generic, 0, IS_VFPU),
|
INSTR("vsrt2", &Jit::Comp_Generic, Dis_Vbfy, Int_Vsrt2, IS_VFPU),
|
||||||
INSTR("vbfy1", &Jit::Comp_Generic, Dis_Vbfy, Int_Vbfy, IS_VFPU),
|
INSTR("vbfy1", &Jit::Comp_Generic, Dis_Vbfy, Int_Vbfy, IS_VFPU),
|
||||||
INSTR("vbfy2", &Jit::Comp_Generic, Dis_Vbfy, Int_Vbfy, IS_VFPU),
|
INSTR("vbfy2", &Jit::Comp_Generic, Dis_Vbfy, Int_Vbfy, IS_VFPU),
|
||||||
//4
|
//4
|
||||||
@ -695,8 +695,8 @@ MIPSInstruction tableVFPU9[32] = //110100 00010 xxxxx
|
|||||||
INSTR("vfad", &Jit::Comp_Generic, Dis_Vfad, Int_Vfad, IS_VFPU),
|
INSTR("vfad", &Jit::Comp_Generic, Dis_Vfad, Int_Vfad, IS_VFPU),
|
||||||
INSTR("vavg", &Jit::Comp_Generic, Dis_Vfad, Int_Vavg, IS_VFPU),
|
INSTR("vavg", &Jit::Comp_Generic, Dis_Vfad, Int_Vavg, IS_VFPU),
|
||||||
//8
|
//8
|
||||||
INSTR("vsrt3", &Jit::Comp_Generic, Dis_Generic, 0, IS_VFPU),
|
INSTR("vsrt3", &Jit::Comp_Generic, Dis_Vbfy, Int_Vsrt3, IS_VFPU),
|
||||||
INSTR("vsrt4", &Jit::Comp_Generic, Dis_Generic, 0, IS_VFPU),
|
INSTR("vsrt4", &Jit::Comp_Generic, Dis_Vbfy, Int_Vsrt4, IS_VFPU),
|
||||||
INSTR("vsgn", &Jit::Comp_Generic, Dis_Vbfy, Int_Vsgn, IS_VFPU),
|
INSTR("vsgn", &Jit::Comp_Generic, Dis_Vbfy, Int_Vsgn, IS_VFPU),
|
||||||
{-2},
|
{-2},
|
||||||
//12
|
//12
|
||||||
|
Loading…
Reference in New Issue
Block a user