illegal instruction?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



I'm trying to  write a program that uses the  mmx intrinsic instructions
in order to get a faster code but I'm having some problems...

The little test code is

#include <mmintrin.h>
                                                                                                               
int main(void) {
        __m64 temp, soglie_minime;
        unsigned char rossomin = 1;
        unsigned char verdemin = 2;
        unsigned char blumin = 2;
        unsigned char rossomax = 3;
        unsigned char verdemax = 4;
        unsigned char blumax = 5;
                                                                                                               
        temp = _mm_cvtsi32_si64 ( (unsigned int) (blumin << 16) + (verdemin << 8) + rossomin);
        soglie_minime = _mm_slli_si64 (temp, 32);
        _mm_add_si64 (temp, soglie_minime);
                                                                                                               
        return 0;
}

which is compiled with gcc-3.3 -mmmx -g test.c -o test

If I run it I get illegal instruction, with gdb I see this:

14              _mm_add_si64 (temp, soglie_minime);
(gdb) step
_mm_add_si64 (__m1={131585, 0}, __m2={0, 131585}) at /usr/lib/gcc-lib/i386-linux/3.3/include/mmintrin.h:192
192       return (__m64) __builtin_ia32_paddq ((long long)__m1, (long long)__m2);
(gdb) step
 
Program received signal SIGILL, Illegal instruction.
0x080483e0 in _mm_add_si64 (__m1={131585, 0}, __m2={0, 131585})
    at /usr/lib/gcc-lib/i386-linux/3.3/include/mmintrin.h:192
192       return (__m64) __builtin_ia32_paddq ((long long)__m1, (long long)__m2);
(gdb)

What's the meaning of it? what's wrong?

Thank you.

PS: I don't understand if I have to do
_mm_add_si64 (temp, soglie_minime); or soglie_minime = _mm_add_si64 (temp, soglie_minime);
which is correct? They both give the same error.

PPS: I don't know if it ca be interesting, my pc has got 2 athlon mp 2000.

-- 
Non c'è più forza nella normalità, c'è solo monotonia.

Attachment: pgp00007.pgp
Description: PGP signature


[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux