如何使用 neon 访问超过 256 字节的查找表?
Posted
技术标签:
【中文标题】如何使用 neon 访问超过 256 字节的查找表?【英文标题】:How a more than 256bytes Look Up table can be accessed using neon? 【发布时间】:2014-09-26 05:20:39 【问题描述】:我需要使用 neon 访问整数类型的 256 值查找表。 有没有可能这样访问?
如果我的向量中的索引以顺序方式进行,我将使用 VTBL,或者最多 256 位。 这里我的索引向量索引 0 - 255 范围内的任何一个。所以,我做不到。
如果有人知道这件事 请帮帮我。
问候, 笑脸
【问题讨论】:
【参考方案1】:看看VTBX指令,它可以用来扩展NEON查表。例如:
// indices in d30, result to d31
VMOV.8 d29, #16
VTBL.8 d31, q0, q1, d30
VSUB.8 d30, d30, d29
VTBX.8 d31, q2, q3, d30
VSUB.8 d30, d30, d29
VTBX.8 d31, q4, q5, d30
但是,一个 256 字节的表将需要整个 NEON 寄存器文件,因此您必须为每个向量查找重新加载(部分)表。
【讨论】:
【参考方案2】:NEON 不可能。
您首先应该考虑一下为什么要使用 LUT。大多数情况下,LUT 用于节省复杂数学运算的周期,但 NEON 功能强大,可以轻松处理此类数学运算。
蛮力算术是 NEON 游戏的名称。您应该先查看 LUT 是如何生成的,然后使用 NEON 即时进行数学运算。
【讨论】:
以上是关于如何使用 neon 访问超过 256 字节的查找表?的主要内容,如果未能解决你的问题,请参考以下文章