【发布时间】:2010-09-29 08:07:09
【问题描述】:
我无法区分 ARM NEON 指令中的 vld4_f32 和 vld4q_f32。
当我提高编码水平并开始查看汇编指令而不是信息量较少的内在函数时,困惑就开始了。
我需要在这里使用 vld4 变体指令的原因是,我想从每个 第 4 个位置捕获 4 float32_t's strong> 我的大数组。
vld4_f32 内部函数和相应的汇编指令如下所示 (From this link)
float32x2x4_t vld4_f32 (const float32_t *)
Form of expected instruction(s): vld4.32 {d0, d1, d2, d3}, [r0]
vld4q_f32 内部函数及其对应的汇编指令如下所示
float32x4x4_t vld4q_f32 (const float32_t *)
Form of expected instruction(s): vld4.32 {d0, d1, d2, d3}, [r0]
嗯,在内部函数级别我看到的区别是返回类型,但是如果我查看汇编指令和寄存器的数量,它们看起来都一样。编译器或汇编器如何知道两者之间的区别?
有人可以对此进行更多澄清并解释我如何将 4 个 float32_t 值加载到单个寄存器中,这些值位于 每 4 个内存位置 到单个寄存器中?
【问题讨论】:
标签: memory assembly arm neon cpu-registers