Intel® C++ Compiler
Community support and assistance for creating C++ code that runs on platforms based on Intel® processors.
7944 Discussions

arch:IA32 not generating portable code anymore - intel cc 11.x

Stan
Beginner
831 Views
Hello, According to the help distributed by Intel - I should report a bug in compiler... but the question is whether this is a bug or done by intention.. arch:ia32 no longer generates code which can be used on Pentium processors - with compiler version 11.x - while using version 10.x - it was still possible.

So far I was using paraller compilation with ia32 + SSE2 or even SSE3 (of course any other approach would be fine - even generating separate binaries).

Now - using version 11.x it is simply NOT possible - arch:ia32 is simply NOT working on Pentium (Intel pentium III) processor anymore.

I'd be very glad if anybody from Intel could comment that - as I'd not report a bug if there is a good explanation for that - and this is done by intention (then there will be no reason to report the bug - or only report a bug to help distributed with compiler).

Thanks,
Stan
0 Kudos
9 Replies
TimP
Honored Contributor III
831 Views
Pentium III is no longer supported with vectorization, but it is meant to be supported by /Qxia32 and /arch:ia32. Are you using /arch:ia32 by itself, or attempting to make a dual path such as /QaxSSE3 /arch:ia32 ? I guess you find the documentation obscure.
We had been trying to use /QxK with 9.1 and 10.1, but it didn't select the math library reliably on Northwood and earlier CPUs. It is meant to continue to work on P-III, but without vectorization; as you saw, it is meant to be replaced by ia32.
You're doing well if you've been able to keep a P-III working all this time.
0 Kudos
Stan
Beginner
831 Views
Quoting - tim18
Pentium III is no longer supported with vectorization, but it is meant to be supported by /Qxia32 and /arch:ia32. Are you using /arch:ia32 by itself, or attempting to make a dual path such as /QaxSSE3 /arch:ia32 ? I guess you find the documentation obscure.
We had been trying to use /QxK with 9.1 and 10.1, but it didn't select the math library reliably on Northwood and earlier CPUs. It is meant to continue to work on P-III, but without vectorization; as you saw, it is meant to be replaced by ia32.
You're doing well if you've been able to keep a P-III working all this time.

Thanks for your comment Tim,

What I did so far up to version 10.x - was to generate dual path - SSE and SSE2 (or 3) - and that was working fine with older Pentium (SSE only) processors.
With the actual compiler - even compiling with a single path - and not using vectorization - does NOT work. However - maybe the problem is parallerization I'm using - as maybe the OpenMP library won't work on SSE? - that I'll check.

Anyway - for me the only working solution is to prepare separate version of binaries using 10.x - what in my opinion is definitely not a good solution.

Either let Intel clearly define that older - SSE-only processors are no longer supported, OR they make it working or at least informing that with certain compiler options that will not work.

0 Kudos
TimP
Honored Contributor III
831 Views
There is no way to generate P-III style SSE code with 11.x, and there were bugs in that support since 9.1, so we are stuck with no vectorization for P-III (or use gcc).
Dual code path builds are increasing in popularity again, so I agree it is important to support them well.
/Qopenmp should not be tied to SSE2 or non-SSE2. If you find a combination which doesn't work, please submit a problem report.
0 Kudos
levicki
Valued Contributor I
831 Views
Quoting - tim18
There is no way to generate P-III style SSE code with 11.x, and there were bugs in that support since 9.1, so we are stuck with no vectorization for P-III (or use gcc).
Dual code path builds are increasing in popularity again, so I agree it is important to support them well.
/Qpenmp should not be tied to SSE2 or non-SSE2. If you find a combination which doesn't work, please submit a problem report.

Tim,

He said that IA32 doesn't work even without vectorization.
0 Kudos
Stan
Beginner
831 Views
Quoting - Igor Levicki

Tim,

He said that IA32 doesn't work even without vectorization.

I'll report a bug - at least (I hope) intel will clarify the status... Anyway - I did hope - somebody from intel will explain here status...

Thanks,
Stan
0 Kudos
JenniferJ
Moderator
831 Views
Quoting - Stan
Now - using version 11.x it is simply NOT possible - arch:ia32 is simply NOT working on Pentium (Intel pentium III) processor anymore.
It's a bug if /arch:ia32 does not run on P3. Please this article http://software.intel.com/en-us/articles/system-does-not-meet-the-minimum-requirements/ 's note section.
0 Kudos
Stan
Beginner
831 Views
It's a bug if /arch:ia32 does not run on P3. Please this article http://software.intel.com/en-us/articles/system-does-not-meet-the-minimum-requirements/ 's note section.

Jennifer,

I did report a bug - which seems to be partly confirmed (hey - you don't have at intel old PC - do you? :) ) - so far I can only confirm that version 10.x was able to generate a real ia32 code while with 11.x there is a problem...

Thanks,
Stan
0 Kudos
Stan
Beginner
831 Views
Quoting - Stan

Jennifer,

I did report a bug - which seems to be partly confirmed (hey - you don't have at intel old PC - do you? :) ) - so far I can only confirm that version 10.x was able to generate a real ia32 code while with 11.x there is a problem...

Thanks,
Stan

I think - it is worth to share the final solution I got from the intel support. I do confirm - it works - at least for me.

*********************************************************************************************
Stanislaw,

Thanks for your clarification.

Another support engineer has a PIII in his cubical. He tried to use /arch:IA32 on it. The failure message is "The system cannot execute the specified program", which I think comes from Microsoft. Is it the error message you saw? He said that the error only arises when you link dynamically and create a manifest. But he can still reproduce it when he compiles with a very simple script:

icl /c /Od /MD /arch:IA32 test.cpp
icl test.obj
test

This executable works on Core 2 and fails on P III. If he changes /MD to /MT, it works.

The manifest:










His Core 2 has MSVS 2005 with SP1, whereas the PIII does not have SP1.

The only reason this worked with an earlier 11.0 compiler is that this could be installed natively on the PIII. We no longer allow that, so you have to cross compile, which unleashes these compatibility issues. With 11.1.061, he could reproduce the problem if he cross compiles, but it worked fine if he compiles natively on the PIII.

He just updated my PIII to SP1, and that seems to have fixed the problem. A workaround for you might be to link statically in the meantime. And please check your SP level for VS2005.

Please let me know if this helps.

Thank you.
--
Feilong H.
Intel Developer Support
0 Kudos
Feilong_H_Intel
Employee
831 Views
Hi Stan,

Thanks for sharing this with all the forum users.

I just created an article for this issue. See here. Just FYI.

Thanks,
Feilong
0 Kudos
Reply