xbyak_abi: Remove *GPS variants of stack manipulation functions
This commit is contained in:
		@@ -223,40 +223,4 @@ inline void ABI_PopRegistersAndAdjustStack(Xbyak::CodeGenerator& code, std::bits
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
inline size_t ABI_PushRegistersAndAdjustStackGPS(Xbyak::CodeGenerator& code, std::bitset<32> regs,
 | 
			
		||||
                                                 size_t rsp_alignment,
 | 
			
		||||
                                                 size_t needed_frame_size = 0) {
 | 
			
		||||
    s32 subtraction, xmm_offset;
 | 
			
		||||
    ABI_CalculateFrameSize(regs, rsp_alignment, needed_frame_size, &subtraction, &xmm_offset);
 | 
			
		||||
 | 
			
		||||
    for (std::size_t i = 0; i < regs.size(); ++i) {
 | 
			
		||||
        if (regs[i] && ABI_ALL_GPRS[i]) {
 | 
			
		||||
            code.push(IndexToReg64(static_cast<int>(i)));
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (subtraction != 0) {
 | 
			
		||||
        code.sub(code.rsp, subtraction);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return ABI_SHADOW_SPACE;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
inline void ABI_PopRegistersAndAdjustStackGPS(Xbyak::CodeGenerator& code, std::bitset<32> regs,
 | 
			
		||||
                                              size_t rsp_alignment, size_t needed_frame_size = 0) {
 | 
			
		||||
    s32 subtraction, xmm_offset;
 | 
			
		||||
    ABI_CalculateFrameSize(regs, rsp_alignment, needed_frame_size, &subtraction, &xmm_offset);
 | 
			
		||||
 | 
			
		||||
    if (subtraction != 0) {
 | 
			
		||||
        code.add(code.rsp, subtraction);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // GPRs need to be popped in reverse order
 | 
			
		||||
    for (int i = 15; i >= 0; i--) {
 | 
			
		||||
        if (regs[i]) {
 | 
			
		||||
            code.pop(IndexToReg64(i));
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
} // namespace Common::X64
 | 
			
		||||
 
 | 
			
		||||
@@ -302,22 +302,22 @@ void MacroJITx64Impl::Compile_Read(Macro::Opcode opcode) {
 | 
			
		||||
            sub(result, opcode.immediate * -1);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    Common::X64::ABI_PushRegistersAndAdjustStackGPS(*this, PersistentCallerSavedRegs(), 0);
 | 
			
		||||
    Common::X64::ABI_PushRegistersAndAdjustStack(*this, PersistentCallerSavedRegs(), 0);
 | 
			
		||||
    mov(Common::X64::ABI_PARAM1, qword[STATE]);
 | 
			
		||||
    mov(Common::X64::ABI_PARAM2, RESULT);
 | 
			
		||||
    Common::X64::CallFarFunction(*this, &Read);
 | 
			
		||||
    Common::X64::ABI_PopRegistersAndAdjustStackGPS(*this, PersistentCallerSavedRegs(), 0);
 | 
			
		||||
    Common::X64::ABI_PopRegistersAndAdjustStack(*this, PersistentCallerSavedRegs(), 0);
 | 
			
		||||
    mov(RESULT, Common::X64::ABI_RETURN.cvt32());
 | 
			
		||||
    Compile_ProcessResult(opcode.result_operation, opcode.dst);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void Tegra::MacroJITx64Impl::Compile_Send(Xbyak::Reg32 value) {
 | 
			
		||||
    Common::X64::ABI_PushRegistersAndAdjustStackGPS(*this, PersistentCallerSavedRegs(), 0);
 | 
			
		||||
    Common::X64::ABI_PushRegistersAndAdjustStack(*this, PersistentCallerSavedRegs(), 0);
 | 
			
		||||
    mov(Common::X64::ABI_PARAM1, qword[STATE]);
 | 
			
		||||
    mov(Common::X64::ABI_PARAM2, METHOD_ADDRESS);
 | 
			
		||||
    mov(Common::X64::ABI_PARAM3, value);
 | 
			
		||||
    Common::X64::CallFarFunction(*this, &Send);
 | 
			
		||||
    Common::X64::ABI_PopRegistersAndAdjustStackGPS(*this, PersistentCallerSavedRegs(), 0);
 | 
			
		||||
    Common::X64::ABI_PopRegistersAndAdjustStack(*this, PersistentCallerSavedRegs(), 0);
 | 
			
		||||
 | 
			
		||||
    Xbyak::Label dont_process{};
 | 
			
		||||
    // Get increment
 | 
			
		||||
@@ -421,7 +421,7 @@ void MacroJITx64Impl::Compile() {
 | 
			
		||||
    bool keep_executing = true;
 | 
			
		||||
    labels.fill(Xbyak::Label());
 | 
			
		||||
 | 
			
		||||
    Common::X64::ABI_PushRegistersAndAdjustStackGPS(*this, Common::X64::ABI_ALL_CALLEE_SAVED, 8);
 | 
			
		||||
    Common::X64::ABI_PushRegistersAndAdjustStack(*this, Common::X64::ABI_ALL_CALLEE_SAVED, 8);
 | 
			
		||||
    // JIT state
 | 
			
		||||
    mov(STATE, Common::X64::ABI_PARAM1);
 | 
			
		||||
    mov(PARAMETERS, qword[Common::X64::ABI_PARAM1 +
 | 
			
		||||
@@ -463,7 +463,7 @@ void MacroJITx64Impl::Compile() {
 | 
			
		||||
 | 
			
		||||
    L(end_of_code);
 | 
			
		||||
 | 
			
		||||
    Common::X64::ABI_PopRegistersAndAdjustStackGPS(*this, Common::X64::ABI_ALL_CALLEE_SAVED, 8);
 | 
			
		||||
    Common::X64::ABI_PopRegistersAndAdjustStack(*this, Common::X64::ABI_ALL_CALLEE_SAVED, 8);
 | 
			
		||||
    ret();
 | 
			
		||||
    ready();
 | 
			
		||||
    program = getCode<ProgramType>();
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user