我试图在我的Xcode项目中运行NEON代码用于学校目的。 我正在使用Xcode 7,LLVM 7.0并使用设备来执行程序。
我在项目中有一个带有代码的.s文件。如果我只运行ARM代码它可以很好地工作,但是当我添加一个NEON代码行时(比如在代码片段中),我收到以下消息:
forEach
我使用的测试代码是
AssemblyTest.s:22:5: error: unrecognized instruction mnemonic
vmul.f32 q14, q8, q8
^
我应该在项目中添加任何编译器标志吗? LLVM是否支持NEON指令集?
谢谢!
答案 0 :(得分:0)
正如Notlikethat指出你正在混合AArch32和AArch64 ..例如vmul.f32 qx,qy,qz(AArch32)正在从64位Q寄存器执行两次浮点乘法。而fmul vx.4s,vy.4s,vz.4s(AArch64)从128位V寄存器执行4次浮点乘法。
您可以使用#ifdefs:
将项目中的两种架构混合在一起#ifdef __arm__ //AArch32
#ifdef __arm64__ //AArch64
使用架构编译以下内容:xcode中的arm64,你没问题。你需要将fmul修改为有用的东西;)
sub sp, sp, #16
str w0, [sp, #12]
str w1, [sp, #8]
add w0, w0, w1
add sp, sp, #16
fmul v14.4s, v8.4s, v9.4s
祝你好运。
/ A