mirror of
				https://git.zaroz.cloud/nintendo-back-up/yuzu/yuzu.git
				synced 2025-05-12 00:45:25 +00:00 
			
		
		
		
	Merge pull request #2692 from Subv/vfp_ftz
Dyncom/VFP: Convert denormal outputs into 0 when the FTZ flag is enabled.
This commit is contained in:
		
						commit
						c291db72e7
					
				@ -134,6 +134,19 @@ u32 vfp_double_normaliseround(ARMul_State* state, int dd, struct vfp_double* vd,
 | 
				
			|||||||
#endif
 | 
					#endif
 | 
				
			||||||
        if (!(significand & ((1ULL << (VFP_DOUBLE_LOW_BITS + 1)) - 1)))
 | 
					        if (!(significand & ((1ULL << (VFP_DOUBLE_LOW_BITS + 1)) - 1)))
 | 
				
			||||||
            underflow = 0;
 | 
					            underflow = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        int type = vfp_double_type(vd);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if ((type & VFP_DENORMAL) && (fpscr & FPSCR_FLUSH_TO_ZERO)) {
 | 
				
			||||||
 | 
					            // Flush denormal to positive 0
 | 
				
			||||||
 | 
					            significand = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            vd->sign = 0;
 | 
				
			||||||
 | 
					            vd->significand = significand;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            underflow = 0;
 | 
				
			||||||
 | 
					            exceptions |= FPSCR_UFC;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /*
 | 
					    /*
 | 
				
			||||||
 | 
				
			|||||||
@ -137,6 +137,19 @@ u32 vfp_single_normaliseround(ARMul_State* state, int sd, struct vfp_single* vs,
 | 
				
			|||||||
#endif
 | 
					#endif
 | 
				
			||||||
        if (!(significand & ((1 << (VFP_SINGLE_LOW_BITS + 1)) - 1)))
 | 
					        if (!(significand & ((1 << (VFP_SINGLE_LOW_BITS + 1)) - 1)))
 | 
				
			||||||
            underflow = 0;
 | 
					            underflow = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        int type = vfp_single_type(vs);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if ((type & VFP_DENORMAL) && (fpscr & FPSCR_FLUSH_TO_ZERO)) {
 | 
				
			||||||
 | 
					            // Flush denormal to positive 0
 | 
				
			||||||
 | 
					            significand = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            vs->sign = 0;
 | 
				
			||||||
 | 
					            vs->significand = significand;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            underflow = 0;
 | 
				
			||||||
 | 
					            exceptions |= FPSCR_UFC;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /*
 | 
					    /*
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user