mirror of
				https://git.tardis.systems/mirrors/yuzu
				synced 2025-10-31 10:44:49 +01:00 
			
		
		
		
	Stop using reserved operator names (and/or/xor) with Xbyak
Also has the Dynarmic upgrade with the same change
This commit is contained in:
		
							parent
							
								
									da1bec121a
								
							
						
					
					
						commit
						f6715f98f5
					
				
							
								
								
									
										4
									
								
								externals/CMakeLists.txt
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								externals/CMakeLists.txt
									
									
									
									
										vendored
									
									
								
							| @ -46,7 +46,5 @@ if (ARCHITECTURE_x86_64) | ||||
|     # Defined before "dynarmic" above | ||||
|     # add_library(xbyak INTERFACE) | ||||
|     target_include_directories(xbyak INTERFACE ./xbyak/xbyak) | ||||
|     if (NOT MSVC) | ||||
|         target_compile_options(xbyak INTERFACE -fno-operator-names) | ||||
|     endif() | ||||
|     target_compile_definitions(xbyak INTERFACE XBYAK_NO_OP_NAMES) | ||||
| endif() | ||||
|  | ||||
							
								
								
									
										2
									
								
								externals/dynarmic
									
									
									
									
										vendored
									
									
								
							
							
								
								
								
								
								
								
							
						
						
									
										2
									
								
								externals/dynarmic
									
									
									
									
										vendored
									
									
								
							| @ -1 +1 @@ | ||||
| Subproject commit 7707ff13e981b0aecf87f3156ee0b641469f7bb3 | ||||
| Subproject commit 8f15e3f70cb96e56705e5de6ba97b5d09423a56b | ||||
| @ -321,27 +321,27 @@ void JitShader::Compile_EvaluateCondition(Instruction instr) { | ||||
|     case Instruction::FlowControlType::Or: | ||||
|         mov(eax, COND0); | ||||
|         mov(ebx, COND1); | ||||
|         xor(eax, (instr.flow_control.refx.Value() ^ 1)); | ||||
|         xor(ebx, (instr.flow_control.refy.Value() ^ 1)); | ||||
|         or (eax, ebx); | ||||
|         xor_(eax, (instr.flow_control.refx.Value() ^ 1)); | ||||
|         xor_(ebx, (instr.flow_control.refy.Value() ^ 1)); | ||||
|         or_(eax, ebx); | ||||
|         break; | ||||
| 
 | ||||
|     case Instruction::FlowControlType::And: | ||||
|         mov(eax, COND0); | ||||
|         mov(ebx, COND1); | ||||
|         xor(eax, (instr.flow_control.refx.Value() ^ 1)); | ||||
|         xor(ebx, (instr.flow_control.refy.Value() ^ 1)); | ||||
|         and(eax, ebx); | ||||
|         xor_(eax, (instr.flow_control.refx.Value() ^ 1)); | ||||
|         xor_(ebx, (instr.flow_control.refy.Value() ^ 1)); | ||||
|         and_(eax, ebx); | ||||
|         break; | ||||
| 
 | ||||
|     case Instruction::FlowControlType::JustX: | ||||
|         mov(eax, COND0); | ||||
|         xor(eax, (instr.flow_control.refx.Value() ^ 1)); | ||||
|         xor_(eax, (instr.flow_control.refx.Value() ^ 1)); | ||||
|         break; | ||||
| 
 | ||||
|     case Instruction::FlowControlType::JustY: | ||||
|         mov(eax, COND1); | ||||
|         xor(eax, (instr.flow_control.refy.Value() ^ 1)); | ||||
|         xor_(eax, (instr.flow_control.refy.Value() ^ 1)); | ||||
|         break; | ||||
|     } | ||||
| } | ||||
| @ -734,10 +734,10 @@ void JitShader::Compile_LOOP(Instruction instr) { | ||||
|     mov(LOOPCOUNT, dword[SETUP + offset]); | ||||
|     mov(LOOPCOUNT_REG, LOOPCOUNT); | ||||
|     shr(LOOPCOUNT_REG, 4); | ||||
|     and(LOOPCOUNT_REG, 0xFF0); // Y-component is the start
 | ||||
|     and_(LOOPCOUNT_REG, 0xFF0); // Y-component is the start
 | ||||
|     mov(LOOPINC, LOOPCOUNT); | ||||
|     shr(LOOPINC, 12); | ||||
|     and(LOOPINC, 0xFF0);                // Z-component is the incrementer
 | ||||
|     and_(LOOPINC, 0xFF0);               // Z-component is the incrementer
 | ||||
|     movzx(LOOPCOUNT, LOOPCOUNT.cvt8()); // X-component is iteration count
 | ||||
|     add(LOOPCOUNT, 1);                  // Iteration count is X-component + 1
 | ||||
| 
 | ||||
| @ -858,9 +858,9 @@ void JitShader::Compile(const std::array<u32, MAX_PROGRAM_CODE_LENGTH>* program_ | ||||
|     mov(STATE, ABI_PARAM2); | ||||
| 
 | ||||
|     // Zero address/loop  registers
 | ||||
|     xor(ADDROFFS_REG_0.cvt32(), ADDROFFS_REG_0.cvt32()); | ||||
|     xor(ADDROFFS_REG_1.cvt32(), ADDROFFS_REG_1.cvt32()); | ||||
|     xor(LOOPCOUNT_REG, LOOPCOUNT_REG); | ||||
|     xor_(ADDROFFS_REG_0.cvt32(), ADDROFFS_REG_0.cvt32()); | ||||
|     xor_(ADDROFFS_REG_1.cvt32(), ADDROFFS_REG_1.cvt32()); | ||||
|     xor_(LOOPCOUNT_REG, LOOPCOUNT_REG); | ||||
| 
 | ||||
|     // Used to set a register to one
 | ||||
|     static const __m128 one = {1.f, 1.f, 1.f, 1.f}; | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user