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

时间:2013-05-14 01:06:28

标签: c++ c gcc sse simd

我读过here英特尔为加速字符串处理而引入SSE 4.2 instructions

引用文章:

  

SSE 4.2指令集,首先在Intel的Core i7中实现,   提供使用的字符串和文本处理指令(STTNI)   用于处理字符数据的SIMD操作。虽然最初   为加速字符串,文本和XML处理而设想的   这些指令的强大新功能在外面是有用的   这些领域,值得重新审视搜索和识别   利用STTNI改进的众多应用程序的各个阶段   性能

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

2 个答案:

答案 0 :(得分:4)

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

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

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

答案 1 :(得分:1)

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

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

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