我无法区分ARM NEON 指令vld4_f32
之间的区别。vld4q_f32
当我提高编码水平并开始查看汇编指令而不是信息量较少的内在函数时,困惑就开始了。
我需要在这里使用vld4变体指令的原因是,我想从我的大数组的每4 个位置捕获4 个。 float32_t
内在函数和相应的vld4_f32
汇编指令如下所示(来自此链接)
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 个内存位置的4 个 float32_t值加载到单个寄存器中吗?