Reputation: 504
I need to convert some code to the ISA of the intel i7-8705G but i do not know which version of the x86-64 ISA it uses.
I want to use godbolt here and select the ISA from the drop down list but there are several versions of the x86-64. Which one is correct for my processor?
I was surprised to see several versions. On the intel web site it simply lists it as 64 bit. here
Upvotes: 0
Views: 1125
Reputation: 37262
I need to convert some code to the ISA of the intel i7-8705G but i do not know which version of the x86-64 ISA it uses.
The x86-64 ISA doesn't have versions. It's the instruction set from an 8086 with a large number of optional extensions, where (at least in theory) each of these extensions could be present/not present on any (existing or future) 80x86 CPU, and where most of the extensions are indicated as present/not present by a set of about 100 flags returned by the CPUID
instruction.
To make sense of all the possibilities, GCC (its -mtune
and -march
options) have predefined "CPU names" based on the name Intel gives micro-architectures. For Intel i7-8705G, the micro-architecture was "Kaby Lake". The newest version of GCC doesn't have a pre-defined name for Kaby Lake; however Kaby Lake was an optimization of a previous micro-architecture that Intel called Skylake, and GCC does have the predefined name "skylake", so that would be the best possible option (e.g. -march=skylake
).
Note: I couldn't find any drop-down list of architectures on godbolt, so I'm wondering if you got confused and were thinking of something else (the list of compilers, where each compiler has multiple versions).
Upvotes: 4