gcc是否使用英特尔的SSE 4.2指令进行文本处理?

我在这里读到英特尔推出了加速字符串处理的SSE 4.2 instructions

从文章引用:

SSE 4.2指令集首先在Intel的Core i7中实现,提供了字符串和文本处理指令(STTNI),它们利用SIMD操作处理字符数据。 尽管这些指令最初是为加速字符串,文本和XML处理而设计的,但这些指令的强大新function在这些域之外是有用的,值得重新审视众多应用程序的搜索和识别阶段,以利用STTNI来提高性能

  • gcc是否可以使用这些说明?
  • 如果是这样,哪个版本?
  • 如果没有,是否有任何开源库提供此function?

关于软件库,我会看一下Agner Fog的asmlib。 它有许多例程的集合,包括几个使用SSE4.2的字符串操作,在汇编中进行了优化。 它提供了一些其他有用的function,我使用CPU上的返回信息,例如每个级别的高速缓存大小以及支持哪些扩展(例如SSE4.2)。

http://www.agner.org/optimize/asmlib.zip

要在GCC中使用-msse4.2编译SSE4.2,或者如果您使用AVX处理器,请使用-mavx

我不确定gcc是否使用它,但它应该无关紧要,因为文本处理通常是通过glibc完成的。 如果你使用string.h中的标准字符串函数(可能cstring会做同样的事情),并且有一个合理的glibc你应该自动使用它们。

我已经搜索过了它似乎glibc 2.15(可能更老的有它)已经有SSE4.2 strcasecmp优化:

http://upstream.rosalinux.ru/changelogs/glibc/2.15/changelog.html