mirror of
https://github.com/wheremyfoodat/Panda3DS.git
synced 2025-04-17 11:11:30 +12:00
[Shader JIT] Add more function definitions
This commit is contained in:
parent
fd411245fa
commit
ca3ae7a16e
2 changed files with 21 additions and 1 deletions
|
@ -52,9 +52,30 @@ class ShaderEmitter : public Xbyak::CodeGenerator {
|
||||||
|
|
||||||
// Instruction recompilation functions
|
// Instruction recompilation functions
|
||||||
void recADD(const PICAShader& shader, u32 instruction);
|
void recADD(const PICAShader& shader, u32 instruction);
|
||||||
|
void recCALL(const PICAShader& shader, u32 instruction);
|
||||||
|
void recCALLC(const PICAShader& shader, u32 instruction);
|
||||||
|
void recCALLU(const PICAShader& shader, u32 instruction);
|
||||||
|
void recCMP(const PICAShader& shader, u32 instruction);
|
||||||
|
void recDP3(const PICAShader& shader, u32 instruction);
|
||||||
void recDP4(const PICAShader& shader, u32 instruction);
|
void recDP4(const PICAShader& shader, u32 instruction);
|
||||||
void recEND(const PICAShader& shader, u32 instruction);
|
void recEND(const PICAShader& shader, u32 instruction);
|
||||||
|
void recFLR(const PICAShader& shader, u32 instruction);
|
||||||
|
void recIFC(const PICAShader& shader, u32 instruction);
|
||||||
|
void recIFU(const PICAShader& shader, u32 instruction);
|
||||||
|
void recJMPC(const PICAShader& shader, u32 instruction);
|
||||||
|
void recJMPU(const PICAShader& shader, u32 instruction);
|
||||||
|
void recLOOP(const PICAShader& shader, u32 instruction);
|
||||||
|
void recMAX(const PICAShader& shader, u32 instruction);
|
||||||
|
void recMIN(const PICAShader& shader, u32 instruction);
|
||||||
|
void recMOVA(const PICAShader& shader, u32 instruction);
|
||||||
void recMOV(const PICAShader& shader, u32 instruction);
|
void recMOV(const PICAShader& shader, u32 instruction);
|
||||||
|
void recMUL(const PICAShader& shader, u32 instruction);
|
||||||
|
void recRCP(const PICAShader& shader, u32 instruction);
|
||||||
|
void recRSQ(const PICAShader& shader, u32 instruction);
|
||||||
|
void recSGE(const PICAShader& shader, u32 instruction);
|
||||||
|
void recSGEI(const PICAShader& shader, u32 instruction);
|
||||||
|
void recSLT(const PICAShader& shader, u32 instruction);
|
||||||
|
void recSLTI(const PICAShader& shader, u32 instruction);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
using InstructionCallback = const void(*)(PICAShader& shaderUnit); // Callback type used for instructions
|
using InstructionCallback = const void(*)(PICAShader& shaderUnit); // Callback type used for instructions
|
||||||
|
|
|
@ -154,7 +154,6 @@ void ShaderEmitter::storeRegister(Xmm source, const PICAShader& shader, u32 dest
|
||||||
const uintptr_t offset = uintptr_t(&destRef) - uintptr_t(&shader); // Calculate offset of register from start of the state struct
|
const uintptr_t offset = uintptr_t(&destRef) - uintptr_t(&shader); // Calculate offset of register from start of the state struct
|
||||||
|
|
||||||
// Mask of which lanes to write
|
// Mask of which lanes to write
|
||||||
// TODO: If only 1 lane is being written to, use movss
|
|
||||||
u32 writeMask = operandDescriptor & 0xf;
|
u32 writeMask = operandDescriptor & 0xf;
|
||||||
if (writeMask == 0xf) { // No lanes are masked, just movaps
|
if (writeMask == 0xf) { // No lanes are masked, just movaps
|
||||||
movaps(xword[statePointer + offset], source);
|
movaps(xword[statePointer + offset], source);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue