通过字母表并行化迭代

问题描述 投票:0回答:0

我必须编写一个从 aaaa 迭代到 zzzz 的小代码。 到目前为止,我使用 32 位整数和

的天真方法
static const char ASCII_A = 'a';
static const char ASCII_Z = 'z';
char C0, C1, C2, C3;
        
for (C3 = ASCII_A; C3 <= ASCII_Z; C3++) {
    for (C2 = ASCII_A; C2 <= ASCII_Z; C2++) {
        for (C1 = ASCII_A; C1 <= ASCII_Z; C1++) {
            for (C0 = ASCII_A; C0 <= ASCII_Z; C0++) {
                // set in values
                uint32_t w = (C0 << 24) | (C1 << 16) | (C2 << 8) | C3;

我现在想加强并使用 128 位向量和 SSE2 一次并行化其中的 4 个操作,因此 w0 携带 aaaa,w1 携带 aaab 等进行一次循环运行。 仅使用 4 步不会有效地解决问题,因为 26/4 不是整数,因此不会每次都填充向量。 我不能为此使用任何库,代码必须在 C99 中编译。

c c99 brute-force
© www.soinside.com 2019 - 2024. All rights reserved.