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: Method to disable code SSE2 generation but still use -msse2


"David Mathog" <mathog@caltech.edu> writes:

> Following your suggestion mo-sse2 was tried, which generated an error
> message well beyond my comprehension:
>
> gcc -std=gnu99 -g -pg -pthread -O4 -DSOFT_SSE2 -msse -mno-sse2 
> -DHAVE_CONFIG_H  -I../../easel -I../../easel -I. -I.. -I. -I../../src -o
> msvfilter.o -c msvfilter.c
> msvfilter.c: In function 'p7_MSVFilter':
> msvfilter.c:208: error: unable to find a register to spill in class
> 'GENERAL_REGS'
> msvfilter.c:208: error: this is the insn:
> (insn:HI 3569 3568 3570 302 ../../easel/emmintrin.h:2334 (set
> (strict_low_part (subreg:HI (reg:TI 1514) 0))
>         (mem:HI (plus:SI (reg/f:SI 20 frame)
>                 (const_int -30 [0xffffffe2])) [14 S2 A16])) 40
> {*movstricthi_1} (insn_list:REG_DEP_TRUE 3568 (nil))
>     (nil))
> msvfilter.c:208: confused by earlier errors, bailing out
> make: *** [msvfilter.o] Error 1

This means that gcc was unable to store a __m128i value in the general
purpose registers.  It did not want to use the SSE2 registers because
you ruled out -msse2, which I assume is correct behaviour for what you
are trying to do.  It does seem likely that SSE2 code will stress out
the register allocator if it can't use the SSE2 registers.  That said, I
don't know offhand whether this is a bug or whether the scenario is
simply impossible to implement.

Ian


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