【发布时间】:2016-04-10 12:37:10
【问题描述】:
我正在尝试将此霓虹灯代码转换为内在函数:
vld1.32 {d0}, [%[pInVertex1]]
flds s2, [%[pInVertex1], #8]
这会将变量 pInVertex1 中的 3 个 32 位浮点数加载到 d0 和 d1 寄存器中。 我找不到任何等效的 instrinsics 版本。有 vld1q_f32,但仅适用于 4 个浮点数。任何人都知道这样做的有效方法(我的意思是无需额外复制)?
【问题讨论】:
-
是否可以调整寄存器的使用,使其可以使用单通道
vld3,即s0、s2、s4而不是s0、@987654327 @,s2? (尽管我不确定内在函数中会是什么样子。)否则,可能值得考虑使用单个vld1加载 4 个元素并忽略其中一个元素的效率将不低于两个单独的指令(并且可能更多),前提是 a) 可以丢弃s3和 b) 您对数据进行布局,以便阅读到最后不会有问题。 -
也许,我可以做到,但它只适用于加载值。当我将 3 个值写入数组时,我遇到了同样的问题。如果我写入 4 个值,那么我将覆盖来自不同顶点的数据。
标签: arm neon intrinsics