Proper armv5te instructions support detection.
authorSiarhei Siamashka <siarhei.siamashka@gmail.com>
Wed, 13 Sep 2006 21:39:41 +0000 (21:39 +0000)
committerDiego Biurrun <diego@biurrun.de>
Wed, 13 Sep 2006 21:39:41 +0000 (21:39 +0000)
patch by Siarhei Siamashka, siarhei dot siamashka gmail com

Originally committed as revision 6246 to svn://svn.ffmpeg.org/ffmpeg/trunk

configure
libavcodec/mpegaudiodec.c

index 9e1b6e3..308e2f1 100755 (executable)
--- a/configure
+++ b/configure
@@ -78,6 +78,7 @@ show_help(){
   echo "  --powerpc-perf-enable    enable performance report on PPC"
   echo "                           (requires enabling PMC)"
   echo "  --disable-mmx            disable MMX usage"
+  echo "  --disable-armv5te        disable armv5te usage"
   echo "  --disable-iwmmxt         disable iwmmxt usage"
   echo "  --disable-altivec        disable AltiVec usage"
   echo "  --disable-audio-oss      disable OSS audio support [default=no]"
@@ -345,6 +346,7 @@ cpu=`uname -m`
 tune="generic"
 powerpc_perf="no"
 mmx="default"
+armv5te="default"
 iwmmxt="default"
 altivec="default"
 mmi="default"
@@ -362,7 +364,7 @@ case "$cpu" in
     fi
   ;;
   # armv4l is a subset of armv5tel
-  armv4l|armv5tel)
+  arm|armv4l|armv5tel)
     cpu="armv4l"
   ;;
   alpha)
@@ -719,6 +721,8 @@ for opt do
   ;;
   --disable-mmx) mmx="no"
   ;;
+  --disable-armv5te) armv5te="no"
+  ;;
   --disable-iwmmxt) iwmmxt="no"
   ;;
   --disable-altivec) altivec="no"
@@ -999,6 +1003,16 @@ if test $mmx = "default"; then
     fi
 fi
 
+# check armv5te instructions support
+if test $armv5te = "default" -a $cpu = "armv4l"; then
+    armv5te=no
+    check_cc <<EOF && armv5te=yes
+        int main(void) {
+        __asm__ __volatile__ ("qadd r0, r0, r0");
+        }
+EOF
+fi
+
 # check iwmmxt support
 if test $iwmmxt = "default" -a $cpu = "armv4l"; then
     iwmmxt=no
@@ -1526,6 +1540,7 @@ if test $cpu = "x86" -o $cpu = "x86_64"; then
     echo "3DNow! Builtins  $mm3dnow"
 fi
 if test $cpu = "armv4l"; then
+    echo "ARMv5TE enabled  $armv5te"
     echo "IWMMXT enabled   $iwmmxt"
 fi
 if test $cpu = "mips"; then
@@ -1711,6 +1726,10 @@ if test "$mm3dnow" = "yes" ; then
   echo "TARGET_BUILTIN_3DNOW=yes" >> config.mak
   echo "#define HAVE_MM3DNOW 1" >> $TMPH
 fi
+if test "$armv5te" = "yes" ; then
+  echo "TARGET_ARMV5TE=yes" >> config.mak
+  echo "#define HAVE_ARMV5TE 1" >> $TMPH
+fi
 if test "$iwmmxt" = "yes" ; then
   echo "TARGET_IWMMXT=yes" >> config.mak
   echo "#define HAVE_IWMMXT 1" >> $TMPH
index e9c7833..d49ce66 100644 (file)
 #include "bitstream.h"
 #include "dsputil.h"
 
-/* Assume that all Intel XScale processors support armv5 edsp instructions */
-#if defined(ARCH_ARMV4L) && defined (HAVE_IWMMXT)
-#define ARCH_ARM5E
-#endif
-
 /*
  * TODO:
  *  - in low precision mode, use more 16 bit multiplies in synth filter
@@ -797,7 +792,7 @@ static inline int round_sample(int *sum)
 #       define MULS(ra, rb) \
             ({ int __rt; asm ("mullhw %0, %1, %2" : "=r" (__rt) : "r" (ra), "r" (rb)); __rt; })
 
-#   elif defined(ARCH_ARM5E)
+#   elif defined(HAVE_ARMV5TE)
 
         /* signed 16x16 -> 32 multiply add accumulate */
 #       define MACS(rt, ra, rb) \