Add ARMv4/ARMv5E macros.
[opus.git] / m4 / as-gcc-inline-assembly.m4
1 dnl as-gcc-inline-assembly.m4 0.1.0
2
3 dnl autostars m4 macro for detection of gcc inline assembly
4
5 dnl David Schleef <ds@schleef.org>
6
7 dnl $Id$
8
9 dnl AS_COMPILER_FLAG(ACTION-IF-ACCEPTED, [ACTION-IF-NOT-ACCEPTED])
10 dnl Tries to compile with the given CFLAGS.
11 dnl Runs ACTION-IF-ACCEPTED if the compiler can compile with the flags,
12 dnl and ACTION-IF-NOT-ACCEPTED otherwise.
13
14 AC_DEFUN([AS_GCC_INLINE_ASSEMBLY],
15 [
16   AC_MSG_CHECKING([if compiler supports gcc-style inline assembly])
17
18   AC_TRY_COMPILE([], [
19 #ifdef __GNUC_MINOR__
20 #if (__GNUC__ * 1000 + __GNUC_MINOR__) < 3004
21 #error GCC before 3.4 has critical bugs compiling inline assembly
22 #endif
23 #endif
24 __asm__ (""::) ], [flag_ok=yes], [flag_ok=no])
25
26   if test "X$flag_ok" = Xyes ; then
27     $1
28     true
29   else
30     $2
31     true
32   fi
33   AC_MSG_RESULT([$flag_ok])
34 ])
35
36 AC_DEFUN([AC_TRY_ASSEMBLE],
37 [ac_c_ext=$ac_ext
38  ac_ext=${ac_s_ext-s}
39  cat > conftest.$ac_ext <<EOF
40  .file "configure"
41 [$1]
42 EOF
43 if AC_TRY_EVAL(ac_compile); then
44   ac_ext=$ac_c_ext
45   ifelse([$2], , :, [  $2
46   rm -rf conftest*])
47 else
48   echo "configure: failed program was:" >&AC_FD_CC
49   cat conftest.$ac_ext >&AC_FD_CC
50   ac_ext=$ac_c_ext
51 ifelse([$3], , , [  rm -rf conftest*
52   $3
53 ])dnl
54 fi
55 rm -rf conftest*])
56
57
58 AC_DEFUN([AS_ASM_ARM_NEON],
59 [
60   AC_MSG_CHECKING([if assembler supports NEON instructions on ARM])
61
62   AC_TRY_ASSEMBLE([vorr d0,d0,d0], [flag_ok=yes], [flag_ok=no])
63
64   if test "X$flag_ok" = Xyes ; then
65     $1
66     true
67   else
68     $2
69     true
70   fi
71   AC_MSG_RESULT([$flag_ok])
72 ])
73
74
75 AC_DEFUN([AS_ASM_ARM_MEDIA],
76 [
77   AC_MSG_CHECKING([if assembler supports ARMv6 media instructions on ARM])
78
79   AC_TRY_ASSEMBLE([shadd8 r3,r3,r3], [flag_ok=yes], [flag_ok=no])
80
81   if test "X$flag_ok" = Xyes ; then
82     $1
83     true
84   else
85     $2
86     true
87   fi
88   AC_MSG_RESULT([$flag_ok])
89 ])
90
91
92 AC_DEFUN([AS_ASM_ARM_EDSP],
93 [
94   AC_MSG_CHECKING([if assembler supports EDSP instructions on ARM])
95
96   AC_TRY_ASSEMBLE([qadd r3,r3,r3], [flag_ok=yes], [flag_ok=no])
97
98   if test "X$flag_ok" = Xyes ; then
99     $1
100     true
101   else
102     $2
103     true
104   fi
105   AC_MSG_RESULT([$flag_ok])
106 ])