linux - 如何测试你的 Linux 是否支持 SSE2

标签 linux unix compiler-construction sse2 itanium

其实我有两个问题:

  1. SSE2 兼容性是 CPU 问题还是编译器问题?
  2. 如何检查您的 CPU 或编译器是否支持 SSE2?

我使用的是 GCC 版本:

gcc (GCC) 4.5.1

当我试图编译一段代码时,它给我这个错误:

$ gcc -O3 -msse2 -fno-strict-aliasing -DHAVE_SSE2=1 -DMEXP=19937 -o test-sse2-M19937 test.c
cc1: error: unrecognized command line option "-msse2"

cpuinfo 显示了这个:

processor  : 0
vendor     : GenuineIntel
arch       : IA-64
family     : 32
model      : 1
model name : Dual-Core Intel(R) Itanium(R) Processor 9140M
revision   : 1
archrev    : 0
features   : branchlong, 16-byte atomic ops
cpu number : 0
cpu regs   : 4
cpu MHz    : 1669.000503
itc MHz    : 416.875000
BogoMIPS   : 3325.95
siblings   : 2
physical id: 0
core id    : 0
thread id  : 0

最佳答案

CPU 需要能够执行 SSE2 指令,编译器需要能够生成它们。

检查您的 cpu 是否支持 SSE2:

# cat /proc/cpuinfo

如果支持,它将位于“标志”下的某个位置。

更新:所以你的cpu不支持。

对于编译器:

# gcc -dumpmachine
# gcc --version

你的编译器目标需要一种 x86*,因为只有这个 cpus 支持 sse2,它是 x86 指令集的一部分

gcc 版本需要 >= 3.1(最有可能,因为它已经有 10 年左右的历史了)才能支持 SSE2。

更新:所以你的编译器不支持它在这个目标上,如果你将它用作 x86 的交叉编译器,它会支持。

关于linux - 如何测试你的 Linux 是否支持 SSE2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4203235/

相关文章:

linux - grep 和 grep -v 同时

c# - 在 C# 2.0 中使用关键字 var 不好吗?

linux - 两个同步的文件夹 - 一个用 CVS 更新

linux - 如何仅显示两个选定月份内最后修改的文件?

linux - 将 VMStat 数据记录到文件

c++ - 消息队列中的accept() IPC UNIX

linux - 无法打印进程的PID

c++ - C++ 中的模板类

java - 自定义 Java 编译器(扩展)

linux - 在 ksh 函数中使用 EOF