自动向量化“字符串中是否有这些字符”

问题描述

检查字符是否在字符串中应该非常简单,以加快使用simd的速度。我希望现代自动矢量化能够为我带来可移植性和速度,但是我不知道如何给编译器足够的提示来实现这一目标。

这是我尝试过的:

static char find1[] = {
    '"','"','\\','\\'
};
int match8(char *tpl)
{ 
    int r = 0;
    for (int  at = 0; at < 8; at++) { 
        r |= (tpl[at] == find1[at]);
    }
    for (int  at = 0; at < 8; at++) { 
        r |= (tpl[at] == find1[at + 8]);
    } 
    return r;
}

根据天作之合

https://godbolt.org/z/7ao1rG

clang确实发出了一些漂亮的simd,但是gcc展开了循环。

这是gcc的继承限制,还是我可以更改我的代码以使其发出simd吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...