GCC 3.2.2 mmx compiler issue and question

"Nacmir" <imiranda@not_unwanted_crap.spectel.ie>
23 Aug 2003 23:18:57 -0400

          From comp.compilers

Related articles
GCC 3.2.2 mmx compiler issue and question imiranda@not_unwanted_crap.spectel.ie (Nacmir) (2003-08-23)
| List of all articles for this month |

From: "Nacmir" <imiranda@not_unwanted_crap.spectel.ie>
Newsgroups: comp.compilers
Date: 23 Aug 2003 23:18:57 -0400
Organization: Compilers Central
Keywords: GCC, code, question
Posted-Date: 23 Aug 2003 23:18:57 EDT

        Hi,


        I am using the intrinsic instructions on gcc 3.2.2 to use the MMX
registers and instructions, I seem to have an issue when compiling here isa
simple bit of code I did to test this:


          __m64 a,b,c;


    a = _mm_set_pi16(1, -1, 5, -20);
    b = _mm_set_pi16(5, 8, 5, -20);
    c = _mm_add_pi16 (a,b);


        Everything untill here is fine to move 4 shorts into a 64bit mmx
register or vector. and the add seems to compile fine, but my problem is to
get those back onto 4 short variables again.


        I try to use the intrinsic static "__inline int _mm_cvtsi64_si32 (__m64
__i)"
        To get the lower 32 bits into an integer variable, but it seems to crash
the compiler, here is the error.


[root@embedded0002 dtmfData]# make
g++ -O3 -mmmx -c -o dtmf_detect.o dtmf_detect.cpp
dtmf_detect.cpp: In constructor `dtmfDetect::dtmfDetect()':
dtmf_detect.cpp:202: Internal compiler error in find_reloads_toplev, at
      reload.c:4439
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://bugzilla.redhat.com/bugzilla/> for instructions.
make: *** [dtmf_detect.o] Error 1
[root@embedded0002 dtmfData]#


        Would anyone be able to help on how to get the 4 short variables on the
mmx register c back to 4
variables as efficiently as possible?.


        Thanks in advance.


        Nacmir


Post a followup to this message

Return to the comp.compilers page.
Search the comp.compilers archives again.