|GCC 3.2.2 mmx compiler issue and question imiranda@not_unwanted_crap.spectel.ie (Nacmir) (2003-08-23)|
|Date:||23 Aug 2003 23:18:57 -0400|
|Keywords:||GCC, code, question|
|Posted-Date:||23 Aug 2003 23:18:57 EDT|
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:
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
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
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
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.
Return to the
Search the comp.compilers archives again.