1

I have code compiled for Intel i7: how can I know which Xeon processors it could run on?

There seems to be no clear way to know.

I developed these rules-of-thumb, but am unsure if they suffice. The Xeon processors that could run i7 code should be:

  • Of or after the Nehalem_(microarchitecture) family of processors.
  • Support DDR-4 memory.
  • Of lithography process of 45nm or smaller.
  • From the year 2008 onwards.

Is there a table somewhere on the web that makes comparisons between Core and Xeon processors in terms of which code they could run?


Edit1:
The compiler switch is gcc --march=corei7

boardrider
  • 949
  • 2
  • 18
  • 29

1 Answers1

3

To get an idea on what processsor the binary can run it is important to look up the cpu flags. In this case:

https://gcc.gnu.org/onlinedocs/gcc/x86-Options.html

nehalem

Intel Nehalem CPU with 64-bit extensions, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2 and POPCNT instruction set support.

These do relate to the cpu hardware features, which can be found in /proc/cpuinfo on a Linux based system. If all of the above (and more) features are listed, then it should be possible to run the binary. The --march selector just summarizes several cpuflags into a single argument.

In case more detailed information on that topic is needed, I can recommed the Gentoo C(XX)FLAGS documentation.

https://wiki.gentoo.org/wiki/GCC_optimization#-march

If there is no access to /proc/cpuinfo available, these informations can be found as well in the hardware specifications (datasheet) of the processor. The names of the features in the specifications typically correspond to the gcc cpu flags.

hargut
  • 3,908
  • 7
  • 10