Test the compiler configuration, not the assembler

With gcc-4.4 at least, the raw asm.s files will always successfully
compile even if the default -march for the compiler would not support
those instructions.  So switch to testing the inline asm versions,
where the compiler will barf if they aren't supported by the default
arch if no -march is explicitly given, or if they aren't supported by
the requested -march when it is.
This commit is contained in:
Ron 2013-06-04 15:21:43 +09:30
parent 58d80ab9ea
commit aa6a1a16ad

View file

@ -4,8 +4,6 @@ dnl autostars m4 macro for detection of gcc inline assembly
dnl David Schleef <ds@schleef.org> dnl David Schleef <ds@schleef.org>
dnl $Id$
dnl AS_COMPILER_FLAG(ACTION-IF-ACCEPTED, [ACTION-IF-NOT-ACCEPTED]) dnl AS_COMPILER_FLAG(ACTION-IF-ACCEPTED, [ACTION-IF-NOT-ACCEPTED])
dnl Tries to compile with the given CFLAGS. dnl Tries to compile with the given CFLAGS.
dnl Runs ACTION-IF-ACCEPTED if the compiler can compile with the flags, dnl Runs ACTION-IF-ACCEPTED if the compiler can compile with the flags,
@ -33,42 +31,15 @@ __asm__ (""::) ], [flag_ok=yes], [flag_ok=no])
AC_MSG_RESULT([$flag_ok]) AC_MSG_RESULT([$flag_ok])
]) ])
AC_DEFUN([AC_TRY_ASSEMBLE],
[ac_c_ext=$ac_ext
ac_ext=${ac_s_ext-s}
cat > conftest.$ac_ext <<EOF
.file "configure"
[$1]
EOF
if AC_TRY_EVAL(ac_compile); then
ac_ext=$ac_c_ext
ifelse([$2], , :, [ $2
rm -rf conftest*])
else
echo "configure: failed program was:" >&AC_FD_CC
cat conftest.$ac_ext >&AC_FD_CC
ac_ext=$ac_c_ext
ifelse([$3], , , [ rm -rf conftest*
$3
])dnl
fi
rm -rf conftest*])
AC_DEFUN([AS_ASM_ARM_NEON], AC_DEFUN([AS_ASM_ARM_NEON],
[ [
AC_MSG_CHECKING([if assembler supports NEON instructions on ARM]) AC_MSG_CHECKING([if assembler supports NEON instructions on ARM])
AC_TRY_ASSEMBLE([vorr d0,d0,d0], [flag_ok=yes], [flag_ok=no]) AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[__asm__("vorr d0,d0,d0")])],
[AC_MSG_RESULT([yes])
if test "X$flag_ok" = Xyes ; then $1],
$1 [AC_MSG_RESULT([no])
true $2])
else
$2
true
fi
AC_MSG_RESULT([$flag_ok])
]) ])
@ -76,16 +47,11 @@ AC_DEFUN([AS_ASM_ARM_MEDIA],
[ [
AC_MSG_CHECKING([if assembler supports ARMv6 media instructions on ARM]) AC_MSG_CHECKING([if assembler supports ARMv6 media instructions on ARM])
AC_TRY_ASSEMBLE([shadd8 r3,r3,r3], [flag_ok=yes], [flag_ok=no]) AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[__asm__("shadd8 r3,r3,r3")])],
[AC_MSG_RESULT([yes])
if test "X$flag_ok" = Xyes ; then $1],
$1 [AC_MSG_RESULT([no])
true $2])
else
$2
true
fi
AC_MSG_RESULT([$flag_ok])
]) ])
@ -93,14 +59,9 @@ AC_DEFUN([AS_ASM_ARM_EDSP],
[ [
AC_MSG_CHECKING([if assembler supports EDSP instructions on ARM]) AC_MSG_CHECKING([if assembler supports EDSP instructions on ARM])
AC_TRY_ASSEMBLE([qadd r3,r3,r3], [flag_ok=yes], [flag_ok=no]) AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[__asm__("qadd r3,r3,r3")])],
[AC_MSG_RESULT([yes])
if test "X$flag_ok" = Xyes ; then $1],
$1 [AC_MSG_RESULT([no])
true $2])
else
$2
true
fi
AC_MSG_RESULT([$flag_ok])
]) ])