This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: -msse producing sse2 instructions


"Dylan Cuthbert" <dylan@q-games.com> writes:

> Hi all,
>
> I managed to whittle it down to the place where the instruction is being
> generated.. and the resulting executable produces an Illegal Instruction if
> run on Athlon 4 machines, but not on Athlon MP/XP or Pentium 4s.
>
> The line to compile with:
>
> $>
> g++ -mcpu=pentium3 -march=pentium3 -msse -mfpmath=387 -mpreferred-stack-boun
> dary=4 -fno-implement-inlines -Werror -Wall  -Dstdext=__gnu_cxx -O2 -mno-cyg
> win -mwin32  test.cpp -o test.exe
>
> Compiling with -march=athlon-4 -mcpu=athlon-4 also causes the same code to
> be generated.
>
> On another note, I also get an illegal instruction error on this:
>
> movss  0xfffffffc(%ebp),%xmm0
>
> Seems to be in the integer->float conversion code tho. so I hope this helps.

I compiled your code and it worked fine on both my Pentium III and
Athlon MP.

The first Athlon4 systems had SSE disabled in the BIOS.  As Honza
already mentioned, you should use the cpuid instruction and check
whether your systems support SSE at all.

For example my Athlon4 reports these flags via cpuinfo (this is read
from a Linux file):
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 mmx fxsr sse syscall mmxext 3dnowext 3dnow

Please write some assembler and check whether the Athlons do support
SSE and if not, investigate why not.

I do not think that this is a GCC problem,
Andreas
-- 
 Andreas Jaeger
  SuSE Labs aj@suse.de
   private aj@arthur.inka.de
    http://www.suse.de/~aj


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]