我必须编写一个从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中编译