Ian Lance Taylor wrote: > No. If I understand what you are doing, I don't think you want to use > -msse2 at all. In fact I think you want -mno-sse2.
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 line 208 in msvfilter.c is the closing "}" on the p7_MSVFilter function. line 2334 in emmintrin.h is the return statement in the snippet below static __inline __m128i __attribute__((__always_inline__)) _mm_shufflelo_epi16(__m128i __A, int __B){ __v8hi __tmp = { EMM_UINT2(__A)[__B & 3], EMM_UINT2(__A)[__B>>2 & 3], EMM_UINT2(__A)[__B>>4 & 3], EMM_UINT2(__A)[__B>>6 & 3], EMM_UINT2(__A)[4], EMM_UINT2(__A)[5], EMM_UINT2(__A)[6], EMM_UINT2(__A)[7]}; return (__m128i) __tmp; } where HMM_UINT2 is this: #define EMM_UINT2(a) ((unsigned short *)&(a)) If -mno-sse2 is changed to -msse2 that compile completes without errors or warnings. gcc --version is: gcc (GCC) 4.2.3 (4.2.3-6mnb1) What does that compiler error mean? Thanks, David Mathog mat...@caltech.edu Manager, Sequence Analysis Facility, Biology Division, Caltech