无法在 xcode 8.3.2 上编译 NEON 代码
Cannot compile NEON code on xcode 8.3.2
我在单独的文件中写了一个 ARM NEON 函数 csc_rotation.S 来进行颜色空间转换,我将纯汇编文件添加到 iOS 应用程序项目中进行测试,然后编译代码在 Xcode 上的 armv7 arch 下。
然后我得到这些错误:
.text
csc_rotation.S:3:1: Cannot use dot operator on a type
ldr r4, [sp, #24] //Save width to r4
csc_rotation.S:20:1: Unknown type name 'ldr'
csc_rotation.S:20:15: Expected identifier
csc_rotation.S:20:19: Expected ';' after top level declarator
image_rotate_180D_neon(y_ptr, y_stride, x_ptr, x_stride, width, height);
i420_888.cpp:536:5: Use of undeclared identifier 'image_rotate_180D_neon'
好像LLVM不能编译neon汇编代码?
你能帮帮我吗?
是的,您可以使用 __asm__ 指令。
例如像这样:
-(int) roundff:(float)a {
int y;
__asm__("fcvtzs %w0, %s1\n\t" : "=r"(y) : "w"(a));
return y;
}
但是,如果您想在 Xcode 中编写 NEON 代码,我建议您通过包含 ->
使用内部函数
#include <arm_neon.h>
同时使用:
#ifdef __arm__ //AArch32
#ifdef __arm64__ //AArch64
如果您的目标未知,则将架构分开。
/A
我在单独的文件中写了一个 ARM NEON 函数 csc_rotation.S 来进行颜色空间转换,我将纯汇编文件添加到 iOS 应用程序项目中进行测试,然后编译代码在 Xcode 上的 armv7 arch 下。
然后我得到这些错误:
.text
csc_rotation.S:3:1: Cannot use dot operator on a type
ldr r4, [sp, #24] //Save width to r4
csc_rotation.S:20:1: Unknown type name 'ldr'
csc_rotation.S:20:15: Expected identifier
csc_rotation.S:20:19: Expected ';' after top level declarator
image_rotate_180D_neon(y_ptr, y_stride, x_ptr, x_stride, width, height);
i420_888.cpp:536:5: Use of undeclared identifier 'image_rotate_180D_neon'
好像LLVM不能编译neon汇编代码? 你能帮帮我吗?
是的,您可以使用 __asm__ 指令。
例如像这样:
-(int) roundff:(float)a {
int y;
__asm__("fcvtzs %w0, %s1\n\t" : "=r"(y) : "w"(a));
return y;
}
但是,如果您想在 Xcode 中编写 NEON 代码,我建议您通过包含 ->
使用内部函数#include <arm_neon.h>
同时使用:
#ifdef __arm__ //AArch32
#ifdef __arm64__ //AArch64
如果您的目标未知,则将架构分开。
/A