如何解决无法识别 ARM M4-F 上用于从浮点转换为定点的 VCVT 指令
我正在尝试使用 Arm Keil IDE 和编译器版本 v5 和 v6 在 ARM Cortex M4-F 中使用汇编指令“vcvt.s32.f32 q8,q8,#0xf”。
很遗憾,编译器无法识别此指令。当我编写 C 代码时,编译器使用其他较慢的汇编指令代替这一指令; 如果直接写汇编指令,编译器不接受,导致编译错误。
有人知道吗?
这条指令看起来存在于 ARM M4-F ISA 中,但目前我无法使其工作!
解决方法
如果有帮助,它会使用 arm-none-eabi-as -mfpu=neon -mcpu=cortex-m4 -mthumb foo.s
与 GNU 汇编器进行汇编。
但不是 -mcpu=cortex-m4 -mfpu=vfpv4
。
维基百科 says M4 上的可选 FPU 是 VFPv4-SP(单精度),我认为这也意味着它不是完整的 NEON。 Tom V 还在评论中确认 Cortex-M4-F 不支持此 NEON SIMD 指令。
Keil 是对的 -
Cortex-M4-F 不支持 vcvt.s32.f32
或 q
寄存器的 d
,仅支持 s
寄存器。
以下确实可以与
一起组装
arm-none-eabi-as -mfpu=vfpv4 -mcpu=cortex-m4 -mthumb
:
vcvt.s32.f32 s8,s8,#0xf
vcvt.s32.f32 s9,s9,#0xf
vcvt.s32.f32 s10,s10,#0xf
vcvt.s32.f32 s11,s11,#0xf
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。