@@ -2730,19 +2730,6 @@ if test "$MPID_NO_LONG_LONG" != "yes" ; then
27302730 AC_DEFINE ( HAVE_LONG_LONG_INT ,1 ,[ Define if long long is supported] )
27312731 fi
27322732fi
2733- # Add HAVE_FLOAT16 detection
2734- if test "$MPID_NO_FLOAT16" != "yes" ; then
2735- AC_CACHE_CHECK ( [ whether _Float16 is supported] ,
2736- pac_cv_have_float16 ,[
2737- # The compiler might optimize out _Float16 usage and give a false
2738- # positive for this test (observed with clang 6 on Linux with -O2).
2739- # We use volatile as a way to disable optimizations.
2740- AC_LINK_IFELSE ( [ AC_LANG_PROGRAM ( [ ] ,[ volatile _Float16 a=1; return (int)a;] ) ] ,
2741- pac_cv_have_float16=yes ,pac_cv_have_float16=no ) ] )
2742- if test "$pac_cv_have_float16" = "yes" ; then
2743- AC_DEFINE ( HAVE_FLOAT16 ,1 ,[ Define if _Float16 is supported] )
2744- fi
2745- fi
27462733
27472734# ----------------------------------------------------------------------------
27482735AC_CHECK_ALIGNOF ( [ max_align_t] ,[ 0] ,[ #include <stddef.h>] )
@@ -2788,30 +2775,13 @@ AC_CHECK_SIZEOF(wchar_t, 0, [
27882775#endif
27892776] )
27902777
2791- AC_CHECK_SIZEOF ( __float128 , 0 )
2792- if test "$ac_cv_sizeof___float128" = "16" ; then
2793- AC_DEFINE ( HAVE_FLOAT128 , 1 , [ Define if __float128 is supported] )
2794- fi
2795-
27962778AC_CHECK_SIZEOF ( float_int , 0 , [ typedef struct { float a; int b; } float_int; ] )
27972779AC_CHECK_SIZEOF ( double_int , 0 , [ typedef struct { double a; int b; } double_int; ] )
27982780AC_CHECK_SIZEOF ( long_int , 0 , [ typedef struct { long a; int b; } long_int; ] )
27992781AC_CHECK_SIZEOF ( short_int , 0 , [ typedef struct { short a; int b; } short_int; ] )
28002782AC_CHECK_SIZEOF ( two_int , 0 , [ typedef struct { int a; int b; } two_int; ] )
28012783AC_CHECK_SIZEOF ( long_double_int , 0 , [ typedef struct { long double a; int b;} long_double_int; ] )
28022784
2803- # alignments for basic types
2804- AC_CHECK_ALIGNOF ( char )
2805- AC_CHECK_ALIGNOF ( float )
2806- AC_CHECK_ALIGNOF ( double )
2807- AC_CHECK_ALIGNOF ( long )
2808- AC_CHECK_ALIGNOF ( long long )
2809- AC_CHECK_ALIGNOF ( long double )
2810- AC_CHECK_ALIGNOF ( short )
2811- AC_CHECK_ALIGNOF ( int )
2812- AC_CHECK_ALIGNOF ( bool )
2813- AC_CHECK_ALIGNOF ( wchar_t )
2814-
28152785# sys/bitypes.h defines the int16_t etc. on some systems (e.g., OSF1).
28162786# Include it when testing for these types
28172787AC_CHECK_HEADER ( sys/bitypes.h ,[ use_bitypes="#include <sys/bitypes.h>"
@@ -2829,37 +2799,6 @@ AC_CHECK_SIZEOF(uint16_t)
28292799AC_CHECK_SIZEOF ( uint32_t )
28302800AC_CHECK_SIZEOF ( uint64_t )
28312801
2832- AC_CHECK_ALIGNOF ( int8_t )
2833- AC_CHECK_ALIGNOF ( int16_t )
2834- AC_CHECK_ALIGNOF ( int32_t )
2835- AC_CHECK_ALIGNOF ( int64_t )
2836-
2837- if test "$ac_cv_sizeof_int8_t" -eq 1 ; then
2838- AC_DEFINE ( HAVE_INT8_T ,1 ,[ Define if int8_t is supported by the C compiler] )
2839- fi
2840- if test "$ac_cv_sizeof_int16_t" -eq 2 ; then
2841- AC_DEFINE ( HAVE_INT16_T ,1 ,[ Define if int16_t is supported by the C compiler] )
2842- fi
2843- if test "$ac_cv_sizeof_int32_t" -eq 4 ; then
2844- AC_DEFINE ( HAVE_INT32_T ,1 ,[ Define if int32_t is supported by the C compiler] )
2845- fi
2846- if test "$ac_cv_sizeof_int64_t" -eq 8 ; then
2847- AC_DEFINE ( HAVE_INT64_T ,1 ,[ Define if int64_t is supported by the C compiler] )
2848- fi
2849-
2850- if test "$ac_cv_sizeof_uint8_t" -eq 1 ; then
2851- AC_DEFINE ( HAVE_UINT8_T ,1 ,[ Define if uint8_t is supported by the C compiler] )
2852- fi
2853- if test "$ac_cv_sizeof_uint16_t" -eq 2 ; then
2854- AC_DEFINE ( HAVE_UINT16_T ,1 ,[ Define if uint16_t is supported by the C compiler] )
2855- fi
2856- if test "$ac_cv_sizeof_uint32_t" -eq 4 ; then
2857- AC_DEFINE ( HAVE_UINT32_T ,1 ,[ Define if uint32_t is supported by the C compiler] )
2858- fi
2859- if test "$ac_cv_sizeof_uint64_t" -eq 8 ; then
2860- AC_DEFINE ( HAVE_UINT64_T ,1 ,[ Define if uint64_t is supported by the C compiler] )
2861- fi
2862-
28632802# Other C99 types.
28642803AC_CHECK_HEADERS ( [ stdbool.h complex.h] )
28652804AC_CHECK_SIZEOF ( [ _Bool] ,0 ,[
@@ -2884,7 +2823,6 @@ AS_IF([test "X$pac_cv_have_long_double" = "Xyes"],[
28842823#endif
28852824 ] )
28862825] )
2887- AC_CHECK_SIZEOF ( [ _Float16] )
28882826
28892827# we need really could just use the result of AC_CHECK_SIZEOF, but having a
28902828# HAVE_typename macro is useful for consistency
@@ -2912,57 +2850,105 @@ template and manually set the correct values.])
29122850 fi
29132851done
29142852
2915- # Generate _CTYPE for internal types
2853+ # Generate _CTYPE and _ALIGN for internal types
2854+
2855+ if test "$ac_cv_sizeof_int8_t" -eq 1 ; then
2856+ AC_DEFINE_UNQUOTED ( [ MPIR_INT8_CTYPE] ,[ int8_t] , [ The C type for MPIR_INT8] )
2857+ AC_DEFINE_UNQUOTED ( [ MPIR_UINT8_CTYPE] ,[ uint8_t] , [ The C type for MPIR_UINT8] )
2858+ AC_CHECK_ALIGNOF ( int8_t )
2859+ AC_DEFINE_UNQUOTED ( [ MPIR_INT8_ALIGN] ,[ $ac_cv_alignof_int8_t] , [ The alignment for MPIR_INT8] )
2860+ fi
29162861
2917- for i in 1 2 4 8 16 ; do
2918- AC_MSG_CHECKING ( [ for C type matching $i-byte integer] )
2919- get_c_int_type $i
2920- AC_MSG_RESULT ( $pac_retval )
2921- if test $pac_retval != "unavailable" ; then
2922- len=`expr $i \* 8`
2923- AC_DEFINE_UNQUOTED ( [ MPIR_INT${len}_CTYPE] ,[ $pac_retval] , [ The C type for MPIR_INT${len}] )
2924- AC_DEFINE_UNQUOTED ( [ MPIR_UINT${len}_CTYPE] ,[ $pac_retval] , [ The C type for MPIR_UINT${len}] )
2862+ if test "$ac_cv_sizeof_int16_t" -eq 2 ; then
2863+ AC_DEFINE_UNQUOTED ( [ MPIR_INT16_CTYPE] ,[ int16_t] , [ The C type for MPIR_INT16] )
2864+ AC_DEFINE_UNQUOTED ( [ MPIR_UINT16_CTYPE] ,[ uint16_t] , [ The C type for MPIR_UINT16] )
2865+ AC_CHECK_ALIGNOF ( int16_t )
2866+ AC_DEFINE_UNQUOTED ( [ MPIR_INT16_ALIGN] ,[ $ac_cv_alignof_int16_t] , [ The alignment for MPIR_INT16] )
2867+ fi
2868+
2869+ if test "$ac_cv_sizeof_int32_t" -eq 4 ; then
2870+ AC_DEFINE_UNQUOTED ( [ MPIR_INT32_CTYPE] ,[ int32_t] , [ The C type for MPIR_INT32] )
2871+ AC_DEFINE_UNQUOTED ( [ MPIR_UINT32_CTYPE] ,[ uint32_t] , [ The C type for MPIR_UINT32] )
2872+ AC_CHECK_ALIGNOF ( int32_t )
2873+ AC_DEFINE_UNQUOTED ( [ MPIR_INT32_ALIGN] ,[ $ac_cv_alignof_int32_t] , [ The alignment for MPIR_INT32] )
2874+ fi
2875+
2876+ if test "$ac_cv_sizeof_int64_t" -eq 8 ; then
2877+ AC_DEFINE_UNQUOTED ( [ MPIR_INT64_CTYPE] ,[ int64_t] , [ The C type for MPIR_INT64] )
2878+ AC_DEFINE_UNQUOTED ( [ MPIR_UINT64_CTYPE] ,[ uint64_t] , [ The C type for MPIR_UINT64] )
2879+ AC_CHECK_ALIGNOF ( int64_t )
2880+ AC_DEFINE_UNQUOTED ( [ MPIR_INT64_ALIGN] ,[ $ac_cv_alignof_int64_t] , [ The alignment for MPIR_INT64] )
2881+ fi
2882+
2883+ if test "$MPID_NO_INT128" != "yes" ; then
2884+ AC_CHECK_SIZEOF ( __int128 )
2885+ if test "$ac_cv_sizeof___int128" -eq 16 ; then
2886+ AC_DEFINE_UNQUOTED ( [ MPIR_INT128_CTYPE] ,[ __int128] , [ The C type for MPIR_INT128] )
2887+ AC_DEFINE_UNQUOTED ( [ MPIR_UINT128_CTYPE] ,[ unsigned __int128] , [ The C type for MPIR_UINT128] )
2888+ AC_CHECK_ALIGNOF ( __int128 )
2889+ AC_DEFINE_UNQUOTED ( [ MPIR_INT128_ALIGN] ,[ $ac_cv_alignof___int128] , [ The alignment for MPIR_INT128] )
29252890 fi
2926- done
2891+ fi
29272892
2928- for i in 2 4 8 16; do
2929- AC_MSG_CHECKING ( [ for C type matching $i-byte float] )
2930- get_c_float_type $i
2931- AC_MSG_RESULT ( $pac_retval )
2932- if test $pac_retval != "unavailable" ; then
2933- len=`expr $i \* 8`
2934- AC_DEFINE_UNQUOTED ( [ MPIR_FLOAT${len}_CTYPE] ,[ $pac_retval] , [ The C type for MPIR_FLOAT${len}] )
2893+ if test "$MPID_NO_FLOAT16" != "yes" ; then
2894+ AC_CHECK_SIZEOF ( _Float16 )
2895+ AC_CHECK_SIZEOF ( __fp16 )
2896+ if test "$ac_cv_sizeof__Float16" -eq 2 ; then
2897+ AC_DEFINE_UNQUOTED ( [ MPIR_FLOAT16_CTYPE] ,[ _Float16] , [ The C type for MPIR_FLOAT16] )
2898+ AC_CHECK_ALIGNOF ( _Float16 )
2899+ AC_DEFINE_UNQUOTED ( [ MPIR_FLOAT16_ALIGN] ,[ $ac_cv_alignof__Float16] , [ The alignment for MPIR_FLOAT16] )
2900+ elif test "$ac_cv_sizeof___fp16" -eq 2 ; then
2901+ # enable it on ARM with -mfp16-format
2902+ AC_DEFINE_UNQUOTED ( [ MPIR_FLOAT16_CTYPE] ,[ __fp16] , [ The C type for MPIR_FLOAT16] )
2903+ AC_CHECK_ALIGNOF ( __fp16 )
2904+ AC_DEFINE_UNQUOTED ( [ MPIR_FLOAT16_ALIGN] ,[ $ac_cv_alignof___fp16] , [ The alignment for MPIR_FLOAT16] )
29352905 fi
2936- done
2906+ fi
2907+
2908+ if test "$ac_cv_sizeof_float" -eq 4 ; then
2909+ AC_DEFINE_UNQUOTED ( [ MPIR_FLOAT32_CTYPE] ,[ float] , [ The C type for MPIR_FLOAT32] )
2910+ AC_CHECK_ALIGNOF ( float )
2911+ AC_DEFINE_UNQUOTED ( [ MPIR_FLOAT32_ALIGN] ,[ $ac_cv_alignof_float] , [ The alignment for MPIR_FLOAT32] )
2912+ fi
2913+
2914+ if test "$ac_cv_sizeof_double" -eq 8 ; then
2915+ AC_DEFINE_UNQUOTED ( [ MPIR_FLOAT64_CTYPE] ,[ double] , [ The C type for MPIR_FLOAT64] )
2916+ AC_CHECK_ALIGNOF ( double )
2917+ AC_DEFINE_UNQUOTED ( [ MPIR_FLOAT64_ALIGN] ,[ $ac_cv_alignof_double] , [ The alignment for MPIR_FLOAT64] )
2918+ fi
2919+
2920+ if test "$MPID_NO_FLOAT128" != "yes" ; then
2921+ AC_CHECK_SIZEOF ( __float128 )
2922+ if test "$ac_cv_sizeof___float128" -eq 16 ; then
2923+ AC_DEFINE_UNQUOTED ( [ MPIR_FLOAT128_CTYPE] ,[ __float128] , [ The C type for MPIR_FLOAT128] )
2924+ AC_CHECK_ALIGNOF ( __float128 )
2925+ AC_DEFINE_UNQUOTED ( [ MPIR_FLOAT128_ALIGN] ,[ $ac_cv_alignof___float128] , [ The alignment for MPIR_FLOAT64] )
2926+ fi
2927+ fi
29372928
29382929if test "$ac_cv_sizeof_long_double" -gt 0 ; then
29392930 len=`expr $ac_cv_sizeof_long_double \* 8`
29402931 AC_DEFINE_UNQUOTED ( [ MPIR_ALT_FLOAT${len}_CTYPE] ,[ long double] , [ The C type for MPIR_ALT_FLOAT${len}] )
2932+ AC_CHECK_ALIGNOF ( long double )
2933+ AC_DEFINE_UNQUOTED ( [ MPIR_ALT_FLOAT${len}_ALIGN] ,[ $ac_cv_alignof_long_double] , [ The alignment for MPIR_ALT_FLOAT${len}] )
2934+ fi
2935+
2936+ if test "$ac_cv_sizeof_float__Complex" -eq 8 ; then
2937+ AC_DEFINE_UNQUOTED ( [ MPIR_COMPLEX32_CTYPE] , [ float _Complex] , [ The C type for MPIR_COMPLEX32] )
2938+ fi
2939+ if test "$ac_cv_sizeof_double__Complex" -eq 16 ; then
2940+ AC_DEFINE_UNQUOTED ( [ MPIR_COMPLEX64_CTYPE] , [ double _Complex] , [ The C type for MPIR_COMPLEX64] )
2941+ fi
2942+ if test "$ac_cv_sizeof_long_double__Complex" -gt 0 ; then
2943+ len=`expr $ac_cv_sizeof_long_double \* 8`
2944+ AC_DEFINE_UNQUOTED ( [ MPIR_ALT_COMPLEX${len}_CTYPE] , [ long double _Complex] , [ The C type for MPIR_ALT_COMPLEX${len}] )
29412945fi
29422946
29432947# autoheader won't recognize keys with variable expansion, so -
2944- AH_TEMPLATE ( [ MPIR_INT8_CTYPE] , [ The C type for MPIR_INT8] )
2945- AH_TEMPLATE ( [ MPIR_INT16_CTYPE] , [ The C type for MPIR_INT16] )
2946- AH_TEMPLATE ( [ MPIR_INT32_CTYPE] , [ The C type for MPIR_INT32] )
2947- AH_TEMPLATE ( [ MPIR_INT64_CTYPE] , [ The C type for MPIR_INT64] )
2948- AH_TEMPLATE ( [ MPIR_INT128_CTYPE] , [ The C type for MPIR_INT128] )
2949- AH_TEMPLATE ( [ MPIR_UINT8_CTYPE] , [ The C type for MPIR_UINT8] )
2950- AH_TEMPLATE ( [ MPIR_UINT16_CTYPE] , [ The C type for MPIR_UINT16] )
2951- AH_TEMPLATE ( [ MPIR_UINT32_CTYPE] , [ The C type for MPIR_UINT32] )
2952- AH_TEMPLATE ( [ MPIR_UINT64_CTYPE] , [ The C type for MPIR_UINT64] )
2953- AH_TEMPLATE ( [ MPIR_UINT128_CTYPE] , [ The C type for MPIR_UINT128] )
2954- AH_TEMPLATE ( [ MPIR_FLOAT8_CTYPE] , [ The C type for MPIR_FLOAT8] )
2955- AH_TEMPLATE ( [ MPIR_FLOAT16_CTYPE] , [ The C type for MPIR_FLOAT16] )
2956- AH_TEMPLATE ( [ MPIR_FLOAT32_CTYPE] , [ The C type for MPIR_FLOAT32] )
2957- AH_TEMPLATE ( [ MPIR_FLOAT64_CTYPE] , [ The C type for MPIR_FLOAT64] )
2958- AH_TEMPLATE ( [ MPIR_FLOAT128_CTYPE] , [ The C type for MPIR_FLOAT128] )
29592948AH_TEMPLATE ( [ MPIR_ALT_FLOAT96_CTYPE] , [ The C type for MPIR_ALT_FLOAT96] )
29602949AH_TEMPLATE ( [ MPIR_ALT_FLOAT128_CTYPE] , [ The C type for MPIR_ALT_FLOAT128] )
2961- dnl optionally define the following to use C native complex types in reduction op
2962- AH_TEMPLATE ( [ MPIR_COMPLEX16_CTYPE] , [ The C type for MPIR_COMPLEX16] )
2963- AH_TEMPLATE ( [ MPIR_COMPLEX32_CTYPE] , [ The C type for MPIR_COMPLEX32] )
2964- AH_TEMPLATE ( [ MPIR_COMPLEX64_CTYPE] , [ The C type for MPIR_COMPLEX64] )
2965- AH_TEMPLATE ( [ MPIR_COMPLEX128_CTYPE] , [ The C type for MPIR_COMPLEX128] )
2950+ AH_TEMPLATE ( [ MPIR_ALT_FLOAT96_ALIGN] , [ The alignment for MPIR_ALT_FLOAT96] )
2951+ AH_TEMPLATE ( [ MPIR_ALT_FLOAT128_ALIGN] , [ The alignment for MPIR_ALT_FLOAT128] )
29662952AH_TEMPLATE ( [ MPIR_ALT_COMPLEX96_CTYPE] , [ The C type for MPIR_ALT_COMPLEX96] )
29672953AH_TEMPLATE ( [ MPIR_ALT_COMPLEX128_CTYPE] , [ The C type for MPIR_ALT_COMPLEX128] )
29682954
0 commit comments