125 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			125 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| 
								 | 
							
								dnl @synopsis MN_C_CLIP_MODE
							 | 
						||
| 
								 | 
							
								dnl
							 | 
						||
| 
								 | 
							
								dnl Determine the clipping mode when converting float to int.
							 | 
						||
| 
								 | 
							
								dnl @version 1.0	May 17 2003
							 | 
						||
| 
								 | 
							
								dnl @author Erik de Castro Lopo <erikd AT mega-nerd DOT com>
							 | 
						||
| 
								 | 
							
								dnl
							 | 
						||
| 
								 | 
							
								dnl Permission to use, copy, modify, distribute, and sell this file for any 
							 | 
						||
| 
								 | 
							
								dnl purpose is hereby granted without fee, provided that the above copyright 
							 | 
						||
| 
								 | 
							
								dnl and this permission notice appear in all copies.  No representations are
							 | 
						||
| 
								 | 
							
								dnl made about the suitability of this software for any purpose.  It is 
							 | 
						||
| 
								 | 
							
								dnl provided "as is" without express or implied warranty.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								dnl Find the clipping mode in the following way:
							 | 
						||
| 
								 | 
							
								dnl    1) If we are not cross compiling test it.
							 | 
						||
| 
								 | 
							
								dnl    2) IF we are cross compiling, assume that clipping isn't done correctly.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								AC_DEFUN([MN_C_CLIP_MODE],
							 | 
						||
| 
								 | 
							
								[AC_CACHE_CHECK(processor clipping capabilities, 
							 | 
						||
| 
								 | 
							
									ac_cv_c_clip_type,
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Initialize to unknown
							 | 
						||
| 
								 | 
							
								ac_cv_c_clip_positive=unknown
							 | 
						||
| 
								 | 
							
								ac_cv_c_clip_negative=unknown
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								if test $ac_cv_c_clip_positive = unknown ; then
							 | 
						||
| 
								 | 
							
									AC_TRY_RUN(
							 | 
						||
| 
								 | 
							
									[[
							 | 
						||
| 
								 | 
							
									#define	_ISOC9X_SOURCE	1
							 | 
						||
| 
								 | 
							
									#define _ISOC99_SOURCE	1
							 | 
						||
| 
								 | 
							
									#define	__USE_ISOC99	1
							 | 
						||
| 
								 | 
							
									#define __USE_ISOC9X	1
							 | 
						||
| 
								 | 
							
									#include <math.h>
							 | 
						||
| 
								 | 
							
									int main (void)
							 | 
						||
| 
								 | 
							
									{	double	fval ;
							 | 
						||
| 
								 | 
							
										int k, ival ;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										fval = 1.0 * 0x7FFFFFFF ;
							 | 
						||
| 
								 | 
							
										for (k = 0 ; k < 100 ; k++)
							 | 
						||
| 
								 | 
							
										{	ival = (lrint (fval)) >> 24 ;
							 | 
						||
| 
								 | 
							
											if (ival != 127)
							 | 
						||
| 
								 | 
							
												return 1 ;
							 | 
						||
| 
								 | 
							
										
							 | 
						||
| 
								 | 
							
											fval *= 1.2499999 ;
							 | 
						||
| 
								 | 
							
											} ;
							 | 
						||
| 
								 | 
							
										
							 | 
						||
| 
								 | 
							
											return 0 ;
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										]],
							 | 
						||
| 
								 | 
							
										ac_cv_c_clip_positive=yes,
							 | 
						||
| 
								 | 
							
										ac_cv_c_clip_positive=no,
							 | 
						||
| 
								 | 
							
										ac_cv_c_clip_positive=unknown
							 | 
						||
| 
								 | 
							
										)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									AC_TRY_RUN(
							 | 
						||
| 
								 | 
							
									[[
							 | 
						||
| 
								 | 
							
									#define	_ISOC9X_SOURCE	1
							 | 
						||
| 
								 | 
							
									#define _ISOC99_SOURCE	1
							 | 
						||
| 
								 | 
							
									#define	__USE_ISOC99	1
							 | 
						||
| 
								 | 
							
									#define __USE_ISOC9X	1
							 | 
						||
| 
								 | 
							
									#include <math.h>
							 | 
						||
| 
								 | 
							
									int main (void)
							 | 
						||
| 
								 | 
							
									{	double	fval ;
							 | 
						||
| 
								 | 
							
										int k, ival ;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										fval = -8.0 * 0x10000000 ;
							 | 
						||
| 
								 | 
							
										for (k = 0 ; k < 100 ; k++)
							 | 
						||
| 
								 | 
							
										{	ival = (lrint (fval)) >> 24 ;
							 | 
						||
| 
								 | 
							
											if (ival != -128)
							 | 
						||
| 
								 | 
							
												return 1 ;
							 | 
						||
| 
								 | 
							
										
							 | 
						||
| 
								 | 
							
											fval *= 1.2499999 ;
							 | 
						||
| 
								 | 
							
											} ;
							 | 
						||
| 
								 | 
							
										
							 | 
						||
| 
								 | 
							
											return 0 ;
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										]],
							 | 
						||
| 
								 | 
							
										ac_cv_c_clip_negative=yes,
							 | 
						||
| 
								 | 
							
										ac_cv_c_clip_negative=no,
							 | 
						||
| 
								 | 
							
										ac_cv_c_clip_negative=unknown
							 | 
						||
| 
								 | 
							
										)
							 | 
						||
| 
								 | 
							
									fi
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								if test $ac_cv_c_clip_positive = yes ; then
							 | 
						||
| 
								 | 
							
									ac_cv_c_clip_positive=1
							 | 
						||
| 
								 | 
							
								else
							 | 
						||
| 
								 | 
							
									ac_cv_c_clip_positive=0
							 | 
						||
| 
								 | 
							
									fi
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								if test $ac_cv_c_clip_negative = yes ; then
							 | 
						||
| 
								 | 
							
									ac_cv_c_clip_negative=1
							 | 
						||
| 
								 | 
							
								else
							 | 
						||
| 
								 | 
							
									ac_cv_c_clip_negative=0
							 | 
						||
| 
								 | 
							
									fi
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								[[
							 | 
						||
| 
								 | 
							
								case "$ac_cv_c_clip_positive$ac_cv_c_clip_negative" in
							 | 
						||
| 
								 | 
							
									"00")
							 | 
						||
| 
								 | 
							
										ac_cv_c_clip_type="none"
							 | 
						||
| 
								 | 
							
										;;
							 | 
						||
| 
								 | 
							
									"10")
							 | 
						||
| 
								 | 
							
										ac_cv_c_clip_type="positive"
							 | 
						||
| 
								 | 
							
										;;
							 | 
						||
| 
								 | 
							
									"01")
							 | 
						||
| 
								 | 
							
										ac_cv_c_clip_type="negative"
							 | 
						||
| 
								 | 
							
										;;
							 | 
						||
| 
								 | 
							
									"11")
							 | 
						||
| 
								 | 
							
										ac_cv_c_clip_type="both"
							 | 
						||
| 
								 | 
							
										;;
							 | 
						||
| 
								 | 
							
									esac
							 | 
						||
| 
								 | 
							
									]]
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								)
							 | 
						||
| 
								 | 
							
								]
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								)# MN_C_CLIP_MODE
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 |