这个答案仅适用于英特尔处理器。
首先,从最早的处理器到最新的处理器,所有英特尔Atom处理器都支持SSSE3。英特尔手册的第1.2.14节说明:
最初的英特尔Atom处理器系列和随后的几代处理器,包括英特尔Atom处理器D2000、N2000、E2000、Z2000、C1000系列提供以下功能:
- ...
- 支持直到并包括Supplemental Streaming SIMD Extensions 3(SSSE3)的指令集扩展。
- ...
此外,手册的表5-1还说明:
SSSE3扩展:英特尔至强处理器3xxx、5100、5200、5300、5400、5500、5600、7300、7400、7500系列,英特尔Core 2 Extreme处理器QX6000系列,英特尔Core 2 Duo,英特尔Core 2 Quad处理器,英特尔Pentium双核处理器,英特尔Atom处理器。
这也与维基百科一致。
我不确定说明书是否明确说明如果支持SSE4,则支持SSSE3,但我们可以推导出来。
第12.7.3节讨论了如何检查SSSE3支持:
在应用程序尝试使用SSSE3扩展之前,应用程序应遵循第11.6.2节“检查SSE / SSE2支持”的步骤。接下来,使用以下附加步骤:
- 检查处理器是否支持SSSE3(如果CPUID.01H:ECX.SSSE3 [位9] = 1)。
此外,第12.12.2节讨论了如何检查SSE4.1支持:
- 检查处理器是否支持SSE4.1(如果CPUID.01H:ECX.SSE4_1 [位19] = 1)、SSE3(如果CPUID.01H:ECX.SSE3 [位0] = 1)和SSSE3(如果CPUID.01H:ECX.SSSE3 [位9] = 1)。
最后,第12.12.3节讨论了如何检查SSE4.2支持:
检查处理器是否支持SSE4.2(如果CPUID.01H:ECX.SSE4_2 [位20] = 1),SSE4.1(如果CPUID.01H:ECX.SSE4_1 [位19] = 1)
和SSSE3(如果CPUID.01H:ECX.SSSE3 [位9] = 1)。
正如您所看到的,SSE4.1和SSE4.1都需要支持SSSE3。我们还可以得出结论,SSSE3需要支持SSE2。
警告:尽管很难确定100%,但最有可能将来仍然保持不变。
有趣的一点是,当比较支持SSSE3处理器列表与支持SSE4.1和SSE4.2的处理器列表时(请参见表5-1和表5-2),只有一个处理器Intel Core i7 965在SSE4.2列表中但不在SSSE3列表中,然而该处理器实际上支持SSSE3。不确定这是否是手册中的错误,或更可怕的是,它是不完整的。
另一个有趣的观察是,在Atom之外的处理器中(请参见上面第1.2.14节的引用),似乎支持SSSE3、SSE4.1或SSE4.2并不一定意味着支持SSE3。我没有在手册中找到任何能让我得出这个结论的东西。同时,我不知道有哪个处理器支持SSSE3、SSE4.1或SSE4.2,但不支持SSE3。
第12.1.1节指定了哪些寄存器在SSSE3中可用:
在兼容模式下,SSE3、SSSE3和SSE4的功能与保护模式下相同。在64位模式下,可以访问另外八个XMM寄存器。使用REX前缀可以访问寄存器XMM8-XMM15。
第12.7.1节讨论了操作系统对SSSE3的支持:
确保您的操作系统支持SSE/SSE2/SSE3/SSSE3扩展。(操作系统对SSE扩展的支持意味着对SSE2、SSE3和SSSE3有足够的支持。)
因此,任何需要SSE的操作系统自动支持SSSE3。