mirror of
				https://github.com/PabloMK7/citra.git
				synced 2025-10-31 13:50:03 +00:00 
			
		
		
		
	vfp: Normalize accumulator for multiply accumulate instructions
This commit is contained in:
		
							parent
							
								
									eb83ac48aa
								
							
						
					
					
						commit
						a86d5e2752
					
				
					 2 changed files with 6 additions and 0 deletions
				
			
		|  | @ -908,6 +908,9 @@ vfp_double_multiply_accumulate(ARMul_State* state, int dd, int dn, int dm, u32 f | ||||||
|         vdp.sign = vfp_sign_negate(vdp.sign); |         vdp.sign = vfp_sign_negate(vdp.sign); | ||||||
| 
 | 
 | ||||||
|     vfp_double_unpack(&vdn, vfp_get_double(state, dd)); |     vfp_double_unpack(&vdn, vfp_get_double(state, dd)); | ||||||
|  |     if (vdn.exponent == 0 && vdn.significand != 0) | ||||||
|  |         vfp_double_normalise_denormal(&vdn); | ||||||
|  | 
 | ||||||
|     if (negate & NEG_SUBTRACT) |     if (negate & NEG_SUBTRACT) | ||||||
|         vdn.sign = vfp_sign_negate(vdn.sign); |         vdn.sign = vfp_sign_negate(vdn.sign); | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -941,6 +941,9 @@ vfp_single_multiply_accumulate(ARMul_State* state, int sd, int sn, s32 m, u32 fp | ||||||
|     v = vfp_get_float(state, sd); |     v = vfp_get_float(state, sd); | ||||||
|     pr_debug("VFP: s%u = %08x\n", sd, v); |     pr_debug("VFP: s%u = %08x\n", sd, v); | ||||||
|     vfp_single_unpack(&vsn, v); |     vfp_single_unpack(&vsn, v); | ||||||
|  |     if (vsn.exponent == 0 && vsn.significand != 0) | ||||||
|  |         vfp_single_normalise_denormal(&vsn); | ||||||
|  | 
 | ||||||
|     if (negate & NEG_SUBTRACT) |     if (negate & NEG_SUBTRACT) | ||||||
|         vsn.sign = vfp_sign_negate(vsn.sign); |         vsn.sign = vfp_sign_negate(vsn.sign); | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue