尝试检查 gcc 中的 neon 指令时如何解决错误指令“vadd.i16 q0,q0,q0" [英] How to solve bad instruction `vadd.i16 q0,q0,q0' when attempting to check gcc for neon instruction

查看:22
本文介绍了尝试检查 gcc 中的 neon 指令时如何解决错误指令“vadd.i16 q0,q0,q0"的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

Checking  gcc supports failed for neon instruction vadd.i16 q0,q0,q0
    test.c

    int main ()
    {
     __asm__("vadd.i16 q0, q0, q0"); return 0;
    }

    arm-linux-androideabi-gcc test.c
    /tmp/ccfc8m0G.s: Assembler messages:
    /tmp/ccfc8m0G.s:24: Error: bad instruction `vadd.i16 q0,q0,q0'

尝试使用标志 -mcpu=cortex-a8 -mfpu=neon 但仍然没有成功

Tried with flags -mcpu=cortex-a8 -mfpu=neon but stil no success

以上代码用于测试 gcc 对 neon 指令的支持.

Above code was used to test gcc support for neon instruction.

实际上我正在尝试为 ARM 平台构建具有 NEON 支持的 x264 运行配置脚本后x264 配置日志文件包含

Actually i am trying to build x264 with NEON support for ARM platformAfter running configure script x264 config log file contains

命令行选项:--cross-prefix=arm-linux-androideabi-" --enable-pic" --extra-cflags=-mcpu=cortex-a8" --host=arm-linux"

Command line options: "--cross-prefix=arm-linux-androideabi-" "--enable-pic" "--extra- cflags=-mcpu=cortex-a8" "--host=arm-linux"

checking whether arm-linux-androideabi-gcc works... yes
checking whether arm-linux-androideabi-gcc supports for( int i = 0; i < 9; i++ ); with -std=gnu99... yes
checking whether arm-linux-androideabi-gcc supports __asm__("rev ip, ip");... yes
checking whether arm-linux-androideabi-gcc supports __asm__("movt r0, #0");... yes
checking whether arm-linux-androideabi-gcc supports __asm__("vadd.i16 q0, q0, q0");... no

arm-linux-androideabi-gcc conftest.c  -Wall -I. -I$(SRCPATH) -mcpu=cortex-a8 -std=gnu99    -lm -o conftest
E:cygwin	mpccVtVI1i.s: Assembler messages:
E:cygwin	mpccVtVI1i.s:24: Error: bad instruction `vadd.i16 q0,q0,q0'
--------------------------------------------------
Failed program was:
--------------------------------------------------
int main () { __asm__("vadd.i16 q0, q0, q0"); return 0; }
--------------------------------------------------


config.h contains

#define HAVE_MALLOC_H 1
#define HAVE_ARMV6 1
#define HAVE_ARMV6T2 1
#define ARCH_ARM 1
#define SYS_LINUX 1
#define HAVE_VECTOREXT 1
#define fseek fseeko
#define ftell ftello
#define HAVE_GPL 1
#define HAVE_INTERLACED 1
#define HAVE_ALTIVEC 0
#define HAVE_ALTIVEC_H 0
#define HAVE_MMX 0
#define HAVE_NEON 0
#define HAVE_BEOSTHREAD 0
#define HAVE_POSIXTHREAD 0
#define HAVE_WIN32THREAD 0
#define HAVE_THREAD 0
#define HAVE_LOG2F 0
#define HAVE_VISUALIZE 0
#define HAVE_SWSCALE 0
#define HAVE_LAVF 0
#define HAVE_FFMS 0
#define HAVE_GPAC 0
#define HAVE_GF_MALLOC 0
#define HAVE_AVS 0
#define HAVE_CPU_COUNT 0


Running make command build x264 static lib  based on above config.h which contains HAVE_NEON 0


**Compiler Version**



arm-linux-androideabi-gcc -v
Using built-in specs.
Target: arm-linux-androideabi
Configured with: /tmp/ndk-digit/src/build/../gcc/gcc-4.4.3/configure --prefix=/usr/local/google/digit/repo/opensource/ndk/toolchains/arm-linux-androideabi-4.4.3/prebuilt/windows --target=arm-linux-androideabi --host=i586-mingw32msvc --build=x86_64-linux-gnu --with-gnu-as --with-gnu-ld --enable-languages=c,c++ --with-gmp=/tmp/ndk-digit/build/toolchain/temp-install --with-mpfr=/tmp/ndk-digit/build/toolchain/temp-install --disable-libssp --enable-threads --disable-nls --disable-libmudflap --disable
-libgomp --disable-libstdc__-v3 --disable-sjlj-exceptions --disable-shared --disable-tls --with-float=soft --with-fpu=vfp --with-arch=armv5te --enable-target-optspace --enable-initfini-array --disable-nls --prefix=/usr/local/google/digit/repo/opensource/ndk/toolchains/arm-linux-androideabi-4.4.3/prebuilt/windows --with-sysroot=/usr/local/google/digit/repo/opensource/ndk/toolchains/arm-linux-androideabi-4.4.3/prebuilt/windows/sysroot --with-binutils-version=2.20.1 --with-mpfr-version=2.4.1 --with
-gmp-version=4.2.4 --with-gcc-version=4.4.3 --with-gdb-version=6.6 --with-arch=armv5te --program-transform-name='s,^,arm-linux-androideabi-,'
Thread model: posix
gcc version 4.4.3 (GCC)    

目标是利用支持霓虹灯的 ARM 处理器来提升 x264 编码器性能...

Goal is to utilize neon enabled ARM processor to boost x264 encoder performance...

推荐答案

对于我来说,这条指令在 gcc 4.5.1 (CodeSourcery) 上运行良好.

For what it's worth this instruction works fine for me with gcc 4.5.1 (CodeSourcery).

试试这些开关:

-mfpu=neon
-mfloat-abi=softfp
-mcpu=cortex-a8
-march=armv7-a
-mthumb

这篇关于尝试检查 gcc 中的 neon 指令时如何解决错误指令“vadd.i16 q0,q0,q0"的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆