Xcode 项目中的 ARM NEON 代码 - iOS
ARM NEON code in Xcode Project - iOS
我正在尝试 运行 我的 Xcode 项目中的 NEON 代码用于学校目的。
我正在使用 Xcode 7、LLVM 7.0 并使用设备来执行程序。
我在项目中有一个包含代码的 .s 文件。如果我 运行 只是 ARM 代码,它可以完美运行,但是当我添加一行 NEON 代码时(如代码片段中),我收到以下消息:
AssemblyTest.s:22:5: error: unrecognized instruction mnemonic
vmul.f32 q14, q8, q8
^
我使用的测试代码是
.globl _addInts
.align 2
_addInts:
.cfi_startproc
sub sp, sp, #16
str w0, [sp, #12]
str w1, [sp, #8]
add w0, w0, w1
add sp, sp, #16
vmul.f32 q14, q8, q8 // --- This is the NEON line
ret
.cfi_endproc
我应该向项目添加任何编译器标志吗? LLVM 是否支持 NEON 指令集?
谢谢!!
正如 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
我正在尝试 运行 我的 Xcode 项目中的 NEON 代码用于学校目的。 我正在使用 Xcode 7、LLVM 7.0 并使用设备来执行程序。
我在项目中有一个包含代码的 .s 文件。如果我 运行 只是 ARM 代码,它可以完美运行,但是当我添加一行 NEON 代码时(如代码片段中),我收到以下消息:
AssemblyTest.s:22:5: error: unrecognized instruction mnemonic
vmul.f32 q14, q8, q8
^
我使用的测试代码是
.globl _addInts
.align 2
_addInts:
.cfi_startproc
sub sp, sp, #16
str w0, [sp, #12]
str w1, [sp, #8]
add w0, w0, w1
add sp, sp, #16
vmul.f32 q14, q8, q8 // --- This is the NEON line
ret
.cfi_endproc
我应该向项目添加任何编译器标志吗? LLVM 是否支持 NEON 指令集?
谢谢!!
正如 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