Call to the following function ... /*inline */ void ConvertFloatSSE(void *inBuff, void *outBuff, int len) { unsigned char* inByteBuffer = reinterpret_cast<unsigned char *>(inBuff); float* outFloatBuffer = reinterpret_cast<float *>(outBuff); for(int i = 0; i<len/4; i++) { __m128i register1 = _mm_set_epi8( *inByteBuffer , *(inByteBuffer+ 1), *(inByteBuffer+ 2), 0, *(inByteBuffer+3), *(inByteBuffer+ 4), *(inByteBuffer+ 5), 0, *(inByteBuffer+6), *(inByteBuffer+ 7), *(inByteBuffer+ 8), 0, *(inByteBuffer+9), *(inByteBuffer+10), *(inByteBuffer+11), 0 ); __m128i register2 = _mm_srai_epi32 (register1, 8); __m128 register3 = _mm_cvtepi32_ps (register2); _mm_store_ps (outFloatBuffer, register3); outFloatBuffer += 4; inByteBuffer += 12; } } generates... ************************************************************************************************************************************ if g++ -DHAVE_CONFIG_H -I. -I/home/gchernis/tryswap/src -I.. -O1 -g0 -Wall -march=opteron -MT tryswap.o -MD -MP -MF ".deps/tryswap.Tpo" -c -o tryswap.o /home/gchernis/tryswap/src/tryswap.cpp; then mv -f ".deps/tryswap.Tpo" ".deps/tryswap.Po"; else rm -f ".deps/tryswap.Tpo"; exit 1; fi /home/gchernis/tryswap/src/tryswap.cpp: In function ‘void ConvertFloatSSE(void*, void*, int)’: /home/gchernis/tryswap/src/tryswap.cpp:189: error: unable to find a register to spill in class ‘GENERAL_REGS’ /home/gchernis/tryswap/src/tryswap.cpp:189: error: this is the insn: (insn 90 89 91 2 (parallel [ (set (subreg:DI (reg:V16QI 21 xmm0 [102]) 0) (ashift:DI (reg:DI 1 dx [90]) (const_int 8 [0x8]))) (clobber (reg:CC 17 flags)) ]) 394 {*ashldi3_1_rex64} (insn_list:REG_DEP_TRUE 66 (nil)) (expr_list:REG_UNUSED (reg:CC 17 flags) (expr_list:REG_UNUSED (reg:CC 17 flags) (expr_list:REG_DEAD (reg:DI 1 dx [90]) (nil))))) /home/gchernis/tryswap/src/tryswap.cpp:189: confused by earlier errors, bailing out gmake[2]: *** [tryswap.o] Error 1 gmake[1]: *** [all-recursive] Error 1 gmake: *** [all] Error 2 *** Exited with status: 2 ***
can you give the full output of gcc -v?
Also can you follow the instructions on http://gcc.gnu.org/bugs.html and attach the preprocessed source?
Created attachment 10965 [details] Preprocessed source that fails
Created attachment 10966 [details] gcc /v
Reducing.
(In reply to comment #5) > Reducing. What does it mean? How do i change status to active?
Subject: RE: SSE byte-by-byte load instruction fails to compile Please let me know what is the status of this bug Please reply, Greg Chernis >From: "pinskia at gcc dot gnu dot org" <gcc-bugzilla@gcc.gnu.org> >Reply-To: gcc-bugzilla@gcc.gnu.org >To: gchernis11@msn.com >Subject: [Bug target/26445] SSE byte-by-byte load instruction fails to >compile >Date: 3 Mar 2006 20:54:42 -0000 > >------- Comment #5 from pinskia at gcc dot gnu dot org 2006-03-03 20:54 >------- >Reducing. > > >-- > >pinskia at gcc dot gnu dot org changed: > > What |Removed |Added >---------------------------------------------------------------------------- > CC| |pinskia at gcc dot gnu >dot > | |org > Keywords| |ice-on-valid-code > > >http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26445 > >------- You are receiving this mail because: ------- >You reported the bug, or are watching the reporter.
Subject: Bug 26445 Author: uros Date: Mon Apr 21 18:41:04 2008 New Revision: 134522 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=134522 Log: PR target/26445 * g++.dg/other/i386-4.C: New test. Added: trunk/gcc/testsuite/g++.dg/other/i386-4.C Modified: trunk/gcc/testsuite/ChangeLog
This is fixed in mainline (and probably for 4.3.0 too).