如何使用SSE检查字符串是否包含某些字母

问题描述

我试图使用SSE来加速任务:

在高级方面:

string a = "^&a&*";
string b = "abcdef";
bool c = a_contain_any_alphabet_in_b(a,b);

使用SSE(伪代码)的更多细节:

a = _mm_set_epi8('^',.....);
b = _mm_set_epi8('a',.....);
mask = _mm_cmpestrm (a,la,b,lb,imm8); // _SIDD_CMP_EQUAL_ANY toggle

... and then extract mask

我的问题是如果我的b包含128位以上怎么办? 诸如我要检查字符串a之类的情况包含b中记录的任何字母(a〜zA〜Z)。但是字母集是8*52位,比128大。

我发现的幼稚方法是将b分成许多__mm128i

mask1 = _mm_cmpestrm (a,b1,imm8);
mask2 = _mm_cmpestrm (a,b2,imm8);
...
and do some operation with all masks

我想知道有什么方法可以做得更聪明吗?

解决方法

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

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

小编邮箱: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...