Intel® Fortran Compiler
Build applications that can scale for the future with optimized code designed for Intel® Xeon® and compatible processors.
28994 Discussions

severe(168): illegal instruction on computers with AMD processors (?)

jirina
New Contributor I
1,406 Views

I tried running application compiled using Intel Fortran 11.0.061 [IA-32] on two computers, each of them with Windows XP Pro, Service Pack 2 (I updated one of them to Service Pack 3), one with AMD Athlon MP 2200+, the other one with AMD Athlon MP 1600+.

In both cases, the application crashed with 'forrtl: severe(168): Program Exception - illegal instruction'. I created a version with the traceback information which told me that the line where the application crashes is iter_copy = 0 in the following block:

if ( .NOT.b4_active ) then
iter = 1
iter_copy = 1
else
iter = 0
iter_copy = 0
endif

iter and iter_copy are declared as integer*4 in a common block, b4_active is logical*4.

I have never had any illegal instruction problems on computers with Intel processors. Does this mean that AMD is not supported? Or am I using incorrect compiler and linker options for an application to be run on AMD processors?

/nologo /Oy- /D_OPENMP_ /fixed /extend_source:132 /Qopenmp /fpscomp:general /assume:byterecl /module:"Release Traceback\" /object:"Release Traceback\" /traceback /libs:static /threads /c /align:all /heap-arrays

/SUBSYSTEM:CONSOLE /DELAYLOAD:"ExternalFunctions.dll" /STACK:100000000 /IMPLIB:"...\myApp.lib" delayimp.lib libguide.lib

0 Kudos
1 Solution
Steven_L_Intel1
Employee
1,406 Views

In version 11.0, we changed the default so that the compiler assumes that the processor supports the Pentium 4 instruction set. This is called out in the release notes as a compatibility issue. If you will be running applications on older processors not compatible with the Pentium 4, use /arch:ia32. In Visual Studio, this is Code Generation > Enable enhanced instruction set > None.

View solution in original post

0 Kudos
7 Replies
jimdempseyatthecove
Honored Contributor III
1,406 Views


Check the Dissassembly window at the location of the failinginstruction. I would guess you will find a conditional move (CMOVcc) instruction. Your option switches may have to specify older generation processors (prior to P6).

Jim Dempsey

0 Kudos
Steven_L_Intel1
Employee
1,407 Views

In version 11.0, we changed the default so that the compiler assumes that the processor supports the Pentium 4 instruction set. This is called out in the release notes as a compatibility issue. If you will be running applications on older processors not compatible with the Pentium 4, use /arch:ia32. In Visual Studio, this is Code Generation > Enable enhanced instruction set > None.

0 Kudos
jirina
New Contributor I
1,406 Views

I have not tried running my application on AMD processors before, so I can't tell whether it would work after being compiled using the version 10. Anyway, I followed your recommendation and used the compiler option /arch:ia32 and it helped. Thank you very much; I should read the release notes more thoroughly :-[

0 Kudos
Steven_L_Intel1
Employee
1,406 Views

Recent (as in, last 8 years or so) AMD processors should be fine. Athlon XP series, I think and later. Earlier ones supported only the Pentium III instruction set.

0 Kudos
TimP
Honored Contributor III
1,406 Views

Recent (as in, last 8 years or so) AMD processors should be fine. Athlon XP series, I think and later. Earlier ones supported only the Pentium III instruction set.

Turion 1 was not fully compatible with SSE2, but, as Steve says, all more recent AMD processor would work with the ifort default.

0 Kudos
jirina
New Contributor I
1,406 Views

OK, I hope that none of the application's users keeps the "ancient" versions of AMD processors and that the /arch:ia32 option will thus not be needed. Thanks again, guys, for your prompt help.

0 Kudos
jon_barley
Beginner
1,406 Views
Quoting - jirina

OK, I hope that none of the application's users keeps the "ancient" versions of AMD processors and that the /arch:ia32 option will thus not be needed. Thanks again, guys, for your prompt help.


Ive just run into this error on a laptop using the AMD XP2400+ chipset.
Thanks to the contributions in this forum I fixed it with the recommended fix of Generation > Enable enhanced instruction set > enhanced instruction sets (/arch:IA32).
0 Kudos
Reply