mirror of
				https://github.com/PabloMK7/citra.git
				synced 2025-10-31 05:40:04 +00:00 
			
		
		
		
	shader_jit_a64: Optimize MOVA dest-enable (#7122)
				
					
				
			Rather than branching the 3 cases of dest-enablement, just emit a single move-and-sign-extend instruction for each case. From this review: https://github.com/citra-emu/citra/pull/7002#discussion_r1381560584
This commit is contained in:
		
							parent
							
								
									3f4b57635e
								
							
						
					
					
						commit
						1d4d421097
					
				
					 1 changed files with 4 additions and 13 deletions
				
			
		|  | @ -580,22 +580,13 @@ void JitShader::Compile_MOVA(Instruction instr) { | |||
|     MOV(XSCRATCH0, SRC1.Delem()[0]); | ||||
| 
 | ||||
|     // Handle destination enable
 | ||||
|     if (swiz.DestComponentEnabled(0) && swiz.DestComponentEnabled(1)) { | ||||
|     if (swiz.DestComponentEnabled(0)) { | ||||
|         // Move and sign-extend low 32 bits
 | ||||
|         SXTW(ADDROFFS_REG_0, XSCRATCH0.toW()); | ||||
| 
 | ||||
|     } | ||||
|     if (swiz.DestComponentEnabled(1)) { | ||||
|         // Move and sign-extend high 32 bits
 | ||||
|         LSR(XSCRATCH0, XSCRATCH0, 32); | ||||
|         SXTW(ADDROFFS_REG_1, XSCRATCH0.toW()); | ||||
|     } else { | ||||
|         if (swiz.DestComponentEnabled(0)) { | ||||
|             // Move and sign-extend low 32 bits
 | ||||
|             SXTW(ADDROFFS_REG_0, XSCRATCH0.toW()); | ||||
|         } else if (swiz.DestComponentEnabled(1)) { | ||||
|             // Move and sign-extend high 32 bits
 | ||||
|             LSR(XSCRATCH0, XSCRATCH0, 32); | ||||
|             SXTW(ADDROFFS_REG_1, XSCRATCH0.toW()); | ||||
|         } | ||||
|         ASR(ADDROFFS_REG_1, XSCRATCH0, 32); | ||||
|     } | ||||
| } | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue