2015-12-03 32 views
-4

我想通过使用内部函数来优化代码。有人可以为此进行指导。由于我的代码包含MAC(乘法和加法)语句,我想用SMLAxy指令代替。我试过,但得到链接错误。我用armintr.h头文件,但得到:手臂上的固有功能实现

error:armintr.h :No such file or directory 

我使用的是英特尔的Ubuntu桌面的主机和我的目标是ARM的Cortex-A8。我使用arm-none-linux-gnueabi-gcc编译器和-O3 -mcpu=cortex-a8 -Wall选项标志。

+3

错误很明显。但是你还没有给出任何有关哪个编译器,哪个平台等的信息,以便任何人都可以以任何方式帮助你。 –

+1

我使用arm-none-linux-gnueabi-gcc编译器和arm-cortex-a8 –

+1

它看起来像'armintr.h'是一个MSVC头,而不是GCC头。 –

回答

1

error:armintr.h :No such file or directory

通常,如果在指定路径中没有特定的头文件,就会出现此错误。或者你需要给这个头文件适当的路径。

在你的情况下,你没有启用内在指令,所以你得到错误。

要启用内部指定编译器option例如--fpu=name

+0

--fpu = name用您的拱门替换名字...并查看ans中给出的链接。如果你真的想优化代码去寻找Neon的内在。 – Mohan

+0

Mohan ....刚才我才知道gcc不支持内在函数。这是吗? http://stackoverflow.com/questions/14188262/how-to-enable-intrinsics-in-compiler –

+0

@ChethanShetty这个问题是关于android ......我认为你需要编辑你的问题与主机操作系统的细节,目标操作系统,在您开发代码的地方,如果可能的话发布您的代码或其中导致问题的一部分。以及您如何决定使用该头文件?所以人们可以帮助你...... – Mohan

1

我希望GCC在不使用内在函数的情况下为您生成SMLAL指令。

long long Acc; 
long a; 
long b; 

Acc += ((long long)a*b); 

这是否不会为您生成说明。

+0

Mr.colin,我正在优化代码,我想使用汇编指令 –

+0

事实上,GCC通常会生成'SMULL' /'SMLAL'/etc。正好。虽然,我试过的GCC 4.8似乎没有优化(虽然[显然是Clang做的](https://www.microsoft.com/downloads/details.aspx? //goo.gl/SrQ60y))。 – Notlikethat

+0

@ Nototkethat我似乎记得gcc在某些情况下发射这些。编译器通常很难做到这一点,因为在'C'中的溢出映射和其他情况下的吊坠映射。可能至少''安装数学'是有帮助/需要的?至少在[arm.md]中(https://gcc.gnu.org/git/?p=gcc.git;a=blob;f=gcc/config/arm/arm.md;h=5782b357aa2c3e02b1aecf93576cd6561d7d08d8; hb = HEAD#l1780),所以应该在某些情况下发射。 –