There are a few issues around the compiler options /arch and /Qx. The issues are relevant to both compiler versions 11.0 and 10.1, and below I use the terminology for 11.0:
Intel compiler & optimizations help files state that /Qx may generate Intel-specialized optimizations for the processor specified, and that /arch generates optimizations for the architecture specified, that addresses both Intel & non-Intel processors. Also, /Qx and /arch are used to generate the baseline code when using /Qax. Now:
1. What is the behaviour when both /arch and /Qx are specified (e.g., /QxSSE3 /arch:SSE4.1) ?
2. Using /Qax in addition to (1), what baseline would be created? (e.g. /QxSSE3 /arch:SSE4.1 /QaxSSE4.2)?
3. In the compiler doc for 11.0, under /Qx, it is stated that the default for this option is /arch:. It looks like a mistake, I'd expect the default to be /Qx. What is the correct default value?
4. Does /Qx generate code that might NOT RUN on non-Intel processors? Or will the generated code simply run ineffectively on non-Intel processors?