1
1

per conversation with George, don't try to figure out all the assembly

information on Windows with the CL compiler.  We don't use it, and we
were running into trouble with the compiler on some tests

This commit was SVN r8558.
Этот коммит содержится в:
Brian Barrett 2005-12-20 01:34:27 +00:00
родитель 209fe64de0
Коммит f9018a148c

Просмотреть файл

@ -132,7 +132,6 @@ ${sym}mytestlabel$ompi_cv_asm_label_suffix],
# OMPI_CHECK_ASM_LSYM() # OMPI_CHECK_ASM_LSYM()
# --------------------- # ---------------------
AC_DEFUN([OMPI_CHECK_ASM_LSYM],[ AC_DEFUN([OMPI_CHECK_ASM_LSYM],[
AC_REQUIRE([OMPI_CHECK_ASM_LABEL_SUFFIX])
AC_REQUIRE([AC_PROG_NM]) AC_REQUIRE([AC_PROG_NM])
AC_CACHE_CHECK([prefix for lsym labels], AC_CACHE_CHECK([prefix for lsym labels],
@ -170,10 +169,6 @@ AC_DEFUN([OMPI_CHECK_ASM_GSYM],[
]) ])
AC_DEFUN([_OMPI_CHECK_ASM_GSYM],[ AC_DEFUN([_OMPI_CHECK_ASM_GSYM],[
AC_REQUIRE([OMPI_CHECK_ASM_TEXT])
AC_REQUIRE([OMPI_CHECK_ASM_GLOBAL])
AC_REQUIRE([OMPI_CHECK_ASM_LABEL_SUFFIX])
ompi_cv_asm_gsym="none" ompi_cv_asm_gsym="none"
for sym in "_" "" "." ; do for sym in "_" "" "." ; do
@ -267,9 +262,6 @@ dnl logarithmically, 0 otherwise
dnl dnl
dnl ################################################################# dnl #################################################################
AC_DEFUN([OMPI_CHECK_ASM_ALIGN_LOG],[ AC_DEFUN([OMPI_CHECK_ASM_ALIGN_LOG],[
AC_REQUIRE([OMPI_CHECK_ASM_TEXT])
AC_REQUIRE([OMPI_CHECK_ASM_GLOBAL])
AC_REQUIRE([OMPI_CHECK_ASM_LABEL_SUFFIX])
AC_REQUIRE([AC_PROG_NM]) AC_REQUIRE([AC_PROG_NM])
AC_CACHE_CHECK([if .align directive takes logarithmic value], AC_CACHE_CHECK([if .align directive takes logarithmic value],
@ -397,7 +389,6 @@ dnl or rX (OS X)
dnl dnl
dnl ################################################################# dnl #################################################################
AC_DEFUN([OMPI_CHECK_POWERPC_REG],[ AC_DEFUN([OMPI_CHECK_POWERPC_REG],[
AC_REQUIRE([OMPI_CHECK_ASM_TEXT])
AC_MSG_CHECKING([if PowerPC registers have r prefix]) AC_MSG_CHECKING([if PowerPC registers have r prefix])
OMPI_TRY_ASSEMBLE([$ompi_cv_asm_text OMPI_TRY_ASSEMBLE([$ompi_cv_asm_text
addi 1,1,0], addi 1,1,0],
@ -429,8 +420,6 @@ dnl operations (on a long long).
dnl dnl
dnl ################################################################# dnl #################################################################
AC_DEFUN([OMPI_CHECK_POWERPC_64BIT],[ AC_DEFUN([OMPI_CHECK_POWERPC_64BIT],[
AC_REQUIRE([OMPI_CHECK_ASM_TEXT])
AC_MSG_CHECKING([for 64-bit PowerPC assembly support]) AC_MSG_CHECKING([for 64-bit PowerPC assembly support])
ppc64_result=0 ppc64_result=0
if test "$ompi_cv_asm_powerpc_r_reg" = "1" ; then if test "$ompi_cv_asm_powerpc_r_reg" = "1" ; then
@ -460,8 +449,6 @@ dnl OMPI_CHECK_SPARCV8PLUS
dnl dnl
dnl ################################################################# dnl #################################################################
AC_DEFUN([OMPI_CHECK_SPARCV8PLUS],[ AC_DEFUN([OMPI_CHECK_SPARCV8PLUS],[
AC_REQUIRE([OMPI_CHECK_ASM_TEXT])
AC_MSG_CHECKING([if have Sparc v8+/v9 support]) AC_MSG_CHECKING([if have Sparc v8+/v9 support])
sparc_result=0 sparc_result=0
OMPI_TRY_ASSEMBLE([$ompi_cv_asm_text OMPI_TRY_ASSEMBLE([$ompi_cv_asm_text
@ -730,44 +717,40 @@ AC_DEFUN([OMPI_CONFIG_ASM],[
AC_REQUIRE([OMPI_SETUP_CC]) AC_REQUIRE([OMPI_SETUP_CC])
AC_REQUIRE([OMPI_SETUP_CXX]) AC_REQUIRE([OMPI_SETUP_CXX])
AC_REQUIRE([AM_PROG_AS]) AC_REQUIRE([AM_PROG_AS])
AC_REQUIRE([OMPI_CHECK_ASM_TEXT])
AC_REQUIRE([OMPI_CHECK_ASM_GLOBAL])
AC_REQUIRE([OMPI_CHECK_ASM_GSYM])
AC_REQUIRE([OMPI_CHECK_ASM_LSYM])
AC_REQUIRE([OMPI_CHECK_ASM_TYPE])
AC_REQUIRE([OMPI_CHECK_ASM_SIZE])
AC_REQUIRE([OMPI_CHECK_ASM_LABEL_SUFFIX])
AC_REQUIRE([OMPI_CHECK_ASM_ALIGN_LOG])
AC_MSG_CHECKING([whether to enable smp locks])
AC_ARG_ENABLE(smp-locks,
AC_HELP_STRING([--enable-smp-locks],
[disable smp locks in atomic ops (default: enabled)]))
if test "$enable_smp_locks" != "no"; then
AC_MSG_RESULT([yes])
want_smp_locks=1
else
AC_MSG_RESULT([no])
want_smp_locks=0
fi
AC_DEFINE_UNQUOTED([OMPI_WANT_SMP_LOCKS], [$want_smp_locks],
[whether we want to have smp locks in atomic ops or not])
# find our architecture for purposes of assembly stuff AC_MSG_CHECKING([whether to enable smp locks])
ompi_cv_asm_arch="UNSUPPORTED" AC_ARG_ENABLE([smp-locks],
OMPI_GCC_INLINE_ASSIGN="" [AC_HELP_STRING([--enable-smp-locks],
OMPI_ASM_SUPPORT_64BIT=0 [disable smp locks in atomic ops (default: enabled)])])
case "${host}" in if test "$enable_smp_locks" != "no"; then
*-winnt*) AC_MSG_RESULT([yes])
want_smp_locks=1
else
AC_MSG_RESULT([no])
want_smp_locks=0
fi
AC_DEFINE_UNQUOTED([OMPI_WANT_SMP_LOCKS], [$want_smp_locks],
[whether we want to have smp locks in atomic ops or not])
if test "$ompi_cv_c_compiler_vendor" = "microsoft" ; then
ompi_cv_asm_arch="WINDOWS" ompi_cv_asm_arch="WINDOWS"
;; else
OMPI_CHECK_ASM_TEXT
OMPI_CHECK_ASM_GLOBAL
OMPI_CHECK_ASM_LABEL_SUFFIX
OMPI_CHECK_ASM_GSYM
OMPI_CHECK_ASM_LSYM
OMPI_CHECK_ASM_TYPE
OMPI_CHECK_ASM_SIZE
OMPI_CHECK_ASM_ALIGN_LOG
i?86-*|x86_64*) # find our architecture for purposes of assembly stuff
if test "$ompi_cv_c_compiler_vendor" = "microsoft" ; then ompi_cv_asm_arch="UNSUPPORTED"
ompi_cv_asm_arch="WINDOWS" OMPI_GCC_INLINE_ASSIGN=""
OMPI_GCC_INLINE_ASSIGN='"MOVL [$]0, %0" : "=&r"(ret)' OMPI_ASM_SUPPORT_64BIT=0
else case "${host}" in
i?86-*|x86_64*)
if test "$ac_cv_sizeof_long" = "4" ; then if test "$ac_cv_sizeof_long" = "4" ; then
ompi_cv_asm_arch="IA32" ompi_cv_asm_arch="IA32"
else else
@ -775,58 +758,57 @@ case "${host}" in
fi fi
OMPI_ASM_SUPPORT_64BIT=1 OMPI_ASM_SUPPORT_64BIT=1
OMPI_GCC_INLINE_ASSIGN='"movl [$]0, %0" : "=&r"(ret)' OMPI_GCC_INLINE_ASSIGN='"movl [$]0, %0" : "=&r"(ret)'
fi ;;
;;
ia64-*) ia64-*)
ompi_cv_asm_arch="IA64" ompi_cv_asm_arch="IA64"
OMPI_ASM_SUPPORT_64BIT=1
OMPI_GCC_INLINE_ASSIGN='"mov %0=r0\n;;\n" : "=&r"(ret)'
;;
alpha-*)
ompi_cv_asm_arch="ALPHA"
OMPI_ASM_SUPPORT_64BIT=1
OMPI_GCC_INLINE_ASSIGN='"bis zero,zero,%0" : "=&r"(ret)'
;;
mips-*)
# Should really find some way to make sure that we are on
# a MIPS III machine (r4000 and later)
ompi_cv_asm_arch="MIPS"
OMPI_ASM_SUPPORT_64BIT=1
OMPI_GCC_INLINE_ASSIGN='"or %0,[$]0,[$]0" : "=&r"(ret)'
;;
powerpc-*|powerpc64-*)
OMPI_CHECK_POWERPC_REG
if test "$ac_cv_sizeof_long" = "4" ; then
ompi_cv_asm_arch="POWERPC32"
# Note that on some platforms (Apple G5), even if we are
# compiling in 32 bit mode (and therefore should assume
# sizeof(long) == 4), we can use the 64 bit test and set
# operations.
OMPI_CHECK_POWERPC_64BIT(OMPI_ASM_SUPPORT_64BIT=1)
elif test "$ac_cv_sizeof_long" = "8" ; then
OMPI_ASM_SUPPORT_64BIT=1 OMPI_ASM_SUPPORT_64BIT=1
ompi_cv_asm_arch="POWERPC64" OMPI_GCC_INLINE_ASSIGN='"mov %0=r0\n;;\n" : "=&r"(ret)'
else ;;
AC_MSG_ERROR([Could not determine PowerPC word size: $ac_cv_sizeof_long])
fi
OMPI_GCC_INLINE_ASSIGN='"1: li %0,0" : "=&r"(ret)'
;;
sparc*-*) alpha-*)
# SPARC v9 (and above) are the only ones with 64bit support ompi_cv_asm_arch="ALPHA"
# if compiling 32 bit, see if we are v9 (aka v8plus) or OMPI_ASM_SUPPORT_64BIT=1
# earlier (casa is v8+/v9). OMPI_GCC_INLINE_ASSIGN='"bis zero,zero,%0" : "=&r"(ret)'
if test "$ac_cv_sizeof_long" = "4" ; then ;;
have_v8plus=0
OMPI_CHECK_SPARCV8PLUS([have_v8plus=1]) mips-*)
if test "$have_v8plus" = "0" ; then # Should really find some way to make sure that we are on
OMPI_ASM_SUPPORT_64BIT=0 # a MIPS III machine (r4000 and later)
ompi_cv_asm_arch="SPARC" ompi_cv_asm_arch="MIPS"
OMPI_ASM_SUPPORT_64BIT=1
OMPI_GCC_INLINE_ASSIGN='"or %0,[$]0,[$]0" : "=&r"(ret)'
;;
powerpc-*|powerpc64-*)
OMPI_CHECK_POWERPC_REG
if test "$ac_cv_sizeof_long" = "4" ; then
ompi_cv_asm_arch="POWERPC32"
# Note that on some platforms (Apple G5), even if we are
# compiling in 32 bit mode (and therefore should assume
# sizeof(long) == 4), we can use the 64 bit test and set
# operations.
OMPI_CHECK_POWERPC_64BIT(OMPI_ASM_SUPPORT_64BIT=1)
elif test "$ac_cv_sizeof_long" = "8" ; then
OMPI_ASM_SUPPORT_64BIT=1
ompi_cv_asm_arch="POWERPC64"
else
AC_MSG_ERROR([Could not determine PowerPC word size: $ac_cv_sizeof_long])
fi
OMPI_GCC_INLINE_ASSIGN='"1: li %0,0" : "=&r"(ret)'
;;
sparc*-*)
# SPARC v9 (and above) are the only ones with 64bit support
# if compiling 32 bit, see if we are v9 (aka v8plus) or
# earlier (casa is v8+/v9).
if test "$ac_cv_sizeof_long" = "4" ; then
have_v8plus=0
OMPI_CHECK_SPARCV8PLUS([have_v8plus=1])
if test "$have_v8plus" = "0" ; then
OMPI_ASM_SUPPORT_64BIT=0
ompi_cv_asm_arch="SPARC"
AC_MSG_WARN([Using SPARC V8 assembly for atomic operations. This]) AC_MSG_WARN([Using SPARC V8 assembly for atomic operations. This])
AC_MSG_WARN([may result in reduced performance on UltraSparc platforms.]) AC_MSG_WARN([may result in reduced performance on UltraSparc platforms.])
AC_MSG_WARN([If you are compiling for the UltraSparc, consider ]) AC_MSG_WARN([If you are compiling for the UltraSparc, consider ])
@ -834,84 +816,84 @@ AC_MSG_WARN([specifying the architecture v8plus (cc: -xarch=v8plus, ])
AC_MSG_WARN([gcc: -mv8plus) when compiling Open MPI, as you may see a]) AC_MSG_WARN([gcc: -mv8plus) when compiling Open MPI, as you may see a])
AC_MSG_WARN([significant performance increase.]) AC_MSG_WARN([significant performance increase.])
else else
OMPI_ASM_SUPPORT_64BIT=1
ompi_cv_asm_arch="SPARCV9_32"
fi
elif test "$ac_cv_sizeof_long" = "8" ; then
OMPI_ASM_SUPPORT_64BIT=1 OMPI_ASM_SUPPORT_64BIT=1
ompi_cv_asm_arch="SPARCV9_32" ompi_cv_asm_arch="SPARCV9_64"
else
AC_MSG_ERROR([Could not determine Sparc word size: $ac_cv_sizeof_long])
fi fi
OMPI_GCC_INLINE_ASSIGN='"mov 0,%0" : "=&r"(ret)'
;;
elif test "$ac_cv_sizeof_long" = "8" ; then *)
OMPI_ASM_SUPPORT_64BIT=1 AC_MSG_ERROR([No atomic primitives available for $host])
ompi_cv_asm_arch="SPARCV9_64" ;;
else esac
AC_MSG_ERROR([Could not determine Sparc word size: $ac_cv_sizeof_long])
fi
OMPI_GCC_INLINE_ASSIGN='"mov 0,%0" : "=&r"(ret)'
;;
*) AC_DEFINE_UNQUOTED([OMPI_ASM_SUPPORT_64BIT],
AC_MSG_ERROR([No atomic primitives available for $host]) [$OMPI_ASM_SUPPORT_64BIT],
;; [Whether we can do 64bit assembly operations or not. Should not be used outside of the assembly header files])
esac AC_SUBST([OMPI_ASM_SUPPORT_64BIT])
AC_DEFINE_UNQUOTED([OMPI_ASM_SUPPORT_64BIT], #
[$OMPI_ASM_SUPPORT_64BIT], # figure out if we need any special function start / stop code
[Whether we can do 64bit assembly operations or not. Should not be used outside of the assembly header files]) #
AC_SUBST([OMPI_ASM_SUPPORT_64BIT]) case $host_os in
aix*)
ompi_asm_arch_config="aix"
;;
*)
ompi_asm_arch_config="default"
;;
esac
# # now that we know our architecture, try to inline assemble
# figure out if we need any special function start / stop code OMPI_CHECK_INLINE_C_GCC([$OMPI_GCC_INLINE_ASSIGN])
# OMPI_CHECK_INLINE_C_DEC
case $host_os in OMPI_CHECK_INLINE_C_XLC
aix*) OMPI_CHECK_INLINE_CXX_GCC([$OMPI_GCC_INLINE_ASSIGN])
ompi_asm_arch_config="aix" OMPI_CHECK_INLINE_CXX_DEC
;; OMPI_CHECK_INLINE_CXX_XLC
*)
ompi_asm_arch_config="default"
;;
esac
# format:
# config_file-text-global-label_suffix-gsym-lsym-type-size-align_log-ppc_r_reg-64_bit
asm_format="${ompi_asm_arch_config}"
asm_format="${asm_format}-${ompi_cv_asm_text}-${ompi_cv_asm_global}"
asm_format="${asm_format}-${ompi_cv_asm_label_suffix}-${ompi_cv_asm_gsym}"
asm_format="${asm_format}-${ompi_cv_asm_lsym}"
asm_format="${asm_format}-${ompi_cv_asm_type}-${ompi_asm_size}"
asm_format="${asm_format}-${ompi_asm_align_log_result}"
if test "$ompi_cv_asm_arch" = "POWERPC32" -o "$ompi_cv_asm_arch" = "POWERPC64" ; then
asm_format="${asm_format}-${ompi_cv_asm_powerpc_r_reg}"
else
asm_format="${asm_format}-1"
fi
ompi_cv_asm_format="${asm_format}-${OMPI_ASM_SUPPORT_64BIT}"
OMPI_ASSEMBLY_FORMAT="$ompi_cv_asm_format"
# now that we know our architecture, try to inline assemble AC_MSG_CHECKING([for assembly format])
OMPI_CHECK_INLINE_C_GCC([$OMPI_GCC_INLINE_ASSIGN]) AC_MSG_RESULT([$OMPI_ASSEMBLY_FORMAT])
OMPI_CHECK_INLINE_C_DEC AC_DEFINE_UNQUOTED([OMPI_ASSEMBLY_FORMAT], ["$OMPI_ASSEMBLY_FORMAT"],
OMPI_CHECK_INLINE_C_XLC [Format of assembly file])
OMPI_CHECK_INLINE_CXX_GCC([$OMPI_GCC_INLINE_ASSIGN]) AC_SUBST([OMPI_ASSEMBLY_FORMAT])
OMPI_CHECK_INLINE_CXX_DEC fi # if cv_c_compiler_vendor = microsoft
OMPI_CHECK_INLINE_CXX_XLC
# format: result="OMPI_$ompi_cv_asm_arch"
# config_file-text-global-label_suffix-gsym-lsym-type-size-align_log-ppc_r_reg-64_bit OMPI_ASSEMBLY_ARCH="$ompi_cv_asm_arch"
asm_format="${ompi_asm_arch_config}" AC_MSG_CHECKING([for asssembly architecture])
asm_format="${asm_format}-${ompi_cv_asm_text}-${ompi_cv_asm_global}" AC_MSG_RESULT([$ompi_cv_asm_arch])
asm_format="${asm_format}-${ompi_cv_asm_label_suffix}-${ompi_cv_asm_gsym}" AC_DEFINE_UNQUOTED([OMPI_ASSEMBLY_ARCH], [$result],
asm_format="${asm_format}-${ompi_cv_asm_lsym}" [Architecture type of assembly to use for atomic operations])
asm_format="${asm_format}-${ompi_cv_asm_type}-${ompi_asm_size}" AC_SUBST([OMPI_ASSEMBLY_ARCH])
asm_format="${asm_format}-${ompi_asm_align_log_result}"
if test "$ompi_cv_asm_arch" = "POWERPC32" -o "$ompi_cv_asm_arch" = "POWERPC64" ; then
asm_format="${asm_format}-${ompi_cv_asm_powerpc_r_reg}"
else
asm_format="${asm_format}-1"
fi
ompi_cv_asm_format="${asm_format}-${OMPI_ASM_SUPPORT_64BIT}"
OMPI_ASSEMBLY_FORMAT="$ompi_cv_asm_format"
AC_MSG_CHECKING([for assembly format]) OMPI_ASM_FIND_FILE
AC_MSG_RESULT([$OMPI_ASSEMBLY_FORMAT])
AC_DEFINE_UNQUOTED([OMPI_ASSEMBLY_FORMAT], ["$OMPI_ASSEMBLY_FORMAT"],
[Format of assembly file])
AC_SUBST([OMPI_ASSEMBLY_FORMAT])
result="OMPI_$ompi_cv_asm_arch" unset result asm_format
OMPI_ASSEMBLY_ARCH="$ompi_cv_asm_arch"
AC_MSG_CHECKING([for asssembly architecture])
AC_MSG_RESULT([$ompi_cv_asm_arch])
AC_DEFINE_UNQUOTED([OMPI_ASSEMBLY_ARCH], [$result],
[Architecture type of assembly to use for atomic operations])
AC_SUBST([OMPI_ASSEMBLY_ARCH])
OMPI_ASM_FIND_FILE
unset result asm_format
])dnl ])dnl