MMX mit GCC unter Linux
-
Hallo,
ich versuche gerade einen MMX Befehl in mein Programm einzubauen. Alerdings kann es nciht compiliert werden, obwohl ich den Parameter "-mmmx" gesetzt habe.
GCC 4.6.3 habe ich installiert.
#include <mmintrin.h> #include <iostream> using namespace std; int main(int argc, char *argv[]) { __mm64 tmp; tmp = _m_paddsw(0xABCDCAFE4711ADAC, 0x8001FAFA23457DFB); cout << hex << tmp; return 0; }
Aufruf:
g++ -mmmx mmx.cc -o mmx
Ich bekomme dann die Meldung:
mmx.cc: In Funktion »int main(int, char**)«: mmx.cc:9:2: Fehler: »__mm64« wurde in diesem Gültigkeitsbereich nicht definiert mmx.cc:9:9: Fehler: expected »;« before »tmp« mmx.cc:10:3: Fehler: »tmp« wurde in diesem Gültigkeitsbereich nicht definiert mmx.cc:10:57: Fehler: »long unsigned int« kann nicht nach »__m64 {aka __vector(2) int}« für Argument »1« nach »__m64 _m_paddsw(__m64, __m64)« umgewandelt werden
Was muss ich denn noch einstellen, damit es funktioniert?
-
Dieser Thread wurde von Moderator/in SeppJ aus dem Forum C++ (auch C++0x und C++11) in das Forum Compiler- und IDE-Forum verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Der Typ heißt __m64.
Es würde übrigens wahrscheinlich mehr bringen, dich gleich mit SSE und SSE2 zu befassen.
MMX war vor 15 Jahren ganz nett, aber heute...
-
gucke auch hier:
-
ok danke.
Aber mir geht es zur Zeit eher um das Verständnis von SIMD befehlen allgemein.
-
Athar schrieb:
Der Typ heißt __m64.
Es würde übrigens wahrscheinlich mehr bringen, dich gleich mit SSE und SSE2 zu befassen.
MMX war vor 15 Jahren ganz nett, aber heute...SSE ist für Flieskommazahlen, MMX für Integer (Ganzzahlen).
-
Nein, SSE/SSE2 sind für Fließkommazahlen und Integer, während MMX nur Integeroperationen beinhaltete.