我想做以下事情:我在 Neon D-Register (=64Bit) 中有 8 个值 (8 x 1Byte)。现在我需要将每个值 3 向左移动,但我不想丢失任何位。之后我需要将相同的 32Bit 值添加到向量中的每个值。
据我了解,如果溢出,我可以使用VQSHL指令将结果放入 2 个 D 寄存器中?我如何知道是否发生溢出并保证/强制我的所有数据都在新寄存器中?
您还可以帮我提供一些用于班次和添加部分的代码吗?
示例代码:
out0 = CONSTANT_32BIT + ( input0 << 3)
out1 = CONSTANT_32BIT + ( input1 << 3)
out_n = CONSTANT_32BIT + ( input_n << 3)
所以理论上我可以使用 Neon 寄存器并行执行 8 或 16 条这些指令?
如果这很重要,目标是 ARM Cortex-A9。