mirror of
				https://git.zaroz.cloud/nintendo-back-up/yuzu/yuzu-mainline.git
				synced 2025-03-21 01:53:15 +00:00 
			
		
		
		
	macro_jit_x64: Inline Engines::Maxwell3D::GetRegisterValue
This commit is contained in:
		
							parent
							
								
									a8ac99b619
								
							
						
					
					
						commit
						44f10d9b9f
					
				| @ -295,12 +295,20 @@ void MacroJITx64Impl::Compile_Read(Macro::Opcode opcode) { | ||||
|             sub(result, opcode.immediate * -1); | ||||
|         } | ||||
|     } | ||||
|     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_PopRegistersAndAdjustStack(*this, PersistentCallerSavedRegs(), 0); | ||||
|     mov(RESULT, Common::X64::ABI_RETURN.cvt32()); | ||||
| 
 | ||||
|     // Equivalent to Engines::Maxwell3D::GetRegisterValue:
 | ||||
|     if (optimizer.enable_asserts) { | ||||
|         Xbyak::Label pass_range_check; | ||||
|         cmp(RESULT, static_cast<u32>(Engines::Maxwell3D::Regs::NUM_REGS)); | ||||
|         jb(pass_range_check); | ||||
|         int3(); | ||||
|         L(pass_range_check); | ||||
|     } | ||||
|     mov(rax, qword[STATE]); | ||||
|     mov(RESULT, | ||||
|         dword[rax + offsetof(Engines::Maxwell3D, regs) + | ||||
|               offsetof(Engines::Maxwell3D::Regs, reg_array) + RESULT.cvt64() * sizeof(u32)]); | ||||
| 
 | ||||
|     Compile_ProcessResult(opcode.result_operation, opcode.dst); | ||||
| } | ||||
| 
 | ||||
| @ -435,6 +443,9 @@ void MacroJITx64Impl::Compile() { | ||||
|     // one if our register isn't "dirty"
 | ||||
|     optimizer.optimize_for_method_move = true; | ||||
| 
 | ||||
|     // Enable run-time assertions in JITted code
 | ||||
|     optimizer.enable_asserts = false; | ||||
| 
 | ||||
|     // Check to see if we can skip emitting certain instructions
 | ||||
|     Optimizer_ScanFlags(); | ||||
| 
 | ||||
|  | ||||
| @ -76,6 +76,7 @@ private: | ||||
|         bool zero_reg_skip{}; | ||||
|         bool skip_dummy_addimmediate{}; | ||||
|         bool optimize_for_method_move{}; | ||||
|         bool enable_asserts{}; | ||||
|     }; | ||||
|     OptimizerState optimizer{}; | ||||
| 
 | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 MerryMage
						MerryMage