【发布时间】:2014-08-04 13:37:39
【问题描述】:
我想使用 SSE/AVX 命令并行化我现有的代码。 我完全是这些说明集的菜鸟
代码截图如下
static void inline enc_round(uint32_t b0[4], uint32_t b1[4], const uint32_t **kpp)
{
for (int n = 0; n<4; n++)
{
b0[n] = crypto_ft_tab[0][byte(b1[n], 0)] ^
crypto_ft_tab[1][byte(b1[(n + 1) & 3], 1)] ^
crypto_ft_tab[2][byte(b1[(n + 2) & 3], 2)] ^
crypto_ft_tab[3][byte(b1[(n + 3) & 3], 3)] ^ *(*kpp + n);
}
*kpp += 4;
}
具有以下类型定义
const uint32_t crypto_ft_tab[4][256]
static inline uint8_t byte(const uint32_t x, const unsigned n)
我想并行化逻辑 ANDS
编辑:对不起,我的意思是按位异或
任何建议什么是最好的启动方式或我应该启动哪些命令?
提前致谢
【问题讨论】:
-
我没有看到任何逻辑与 - 我看到按位异或 - 这就是你的意思吗?
-
@PaulR 也许他的意思是
(n + 1) & 3部分? -
啊 - 按位 ANDs - 也许 - 这个问题需要澄清一下。
-
@PaulR vOv 是的...您可以编辑(再次 :) )以便问题更清楚(因为显然根本没有合乎逻辑的
ands)。 -
当然 - 我只编辑了标签 - 我会让 OP 修复内容,因为我只是猜测真正的要求。