Debutant en SSE / SIMD

Résolu
epineurien Messages postés 83 Date d'inscription samedi 21 mai 2005 Statut Membre Dernière intervention 22 mars 2011 - 10 mars 2008 à 19:02
edfed Messages postés 69 Date d'inscription mercredi 12 décembre 2007 Statut Membre Dernière intervention 22 mars 2010 - 24 mars 2008 à 18:36
Bonsoir à tous !
Je débute en SSE et je suis confronté à un léger problême : mon compilateur refuse tout ce que je lui demande.
Bon , pour être exact j'ai le message 'instruction or register not accepted in current CPU mode'.
Je suis sous MASM32 (v9.00) , avec comme directive '.586' et '.model flat,stdcall' .

Les instructions que j'ai essayé (au hazard) sont :
prefetchT0 BYTE PTR esi
mulps xmm0,xmm2
addps xmm0,xmm2

Si quelqu'un a la réponse ... parceque même aprés des heures de tortures , ni google ni la doc. de MASM ne veulent cracher le morceaux.

6 réponses

cs_Nasman Messages postés 202 Date d'inscription mardi 17 mai 2005 Statut Membre Dernière intervention 29 septembre 2008 3
11 mars 2008 à 09:22
Le .586 est-il suffisant pour ces instructions ? Je crois que le .586 correspond à la première génération de Pentium.
3
cs_Nasman Messages postés 202 Date d'inscription mardi 17 mai 2005 Statut Membre Dernière intervention 29 septembre 2008 3
11 mars 2008 à 08:38
Bonjour,

D'après la documentation en ma possession, je pense que le problème provient de ce que l'instruction prefetcht0 (processeur KATMAI) ne fonctionne qu'avec une adresse mémoire d'un octet et ne peut utiliser de registre (à moins également que MASM32 (v9.00) ne gère pas ces nouvelles instructions).
0
epineurien Messages postés 83 Date d'inscription samedi 21 mai 2005 Statut Membre Dernière intervention 22 mars 2011
11 mars 2008 à 09:06
Merci , mais en fait la question est pas sur prefecth seul .
J'ai  essayé les trois premières instructions SSE qui me sont tombés sont la main, pour vérifier.
Hors pour les trois (pas seulement prefetcht0) , j'obtiens le message comme quoi le mode du CPU n'est pas correct. Au passage j'ai essayé aussi avec toute les variantes de prefetch et avec d'autre instructions SSE : toujours le même résultat : 'not accepted in current CPU mode' , pour chaque instruction.
Donc j'avoue que je comprend pas , parceque CPU mode pour moi c'est ce que l'on défini avec la directive '.model' ; et ca ne marche pas plus avec  huge , tiny & co. (de toute façon je programme en Win32 donc je suis obligé de rester en flat).

Ou alors d'aprés toi ce serait les registres (xmm0,xmm2 et esi) , au lieu des instructions , qui ne serait pas corrects ? Parceque sinon je doit utiliser lesquels ? ceux de la FPU ?

Visitez mon site : http://hydrargyrum.ifrance.com !
0
epineurien Messages postés 83 Date d'inscription samedi 21 mai 2005 Statut Membre Dernière intervention 22 mars 2011
11 mars 2008 à 11:14
Ah ???

Tiens google confirme ; les 586 n'ont pas de mmx  .
Ca à l'air d'être pareil pour les 686 (mmx ok , mais pas le SSE).
Le SSE commençe à partie de la génération des pentiums 3 apparament...
Mais c'est quoi la directive au dessus de 686 ? 786 ?

Visitez mon site : http://hydrargyrum.ifrance.com !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
epineurien Messages postés 83 Date d'inscription samedi 21 mai 2005 Statut Membre Dernière intervention 22 mars 2011
11 mars 2008 à 19:03
Je crois que j'ai (enfin) trouvé où était l'erreur sur le forum de developper.net , dans un vieux post de 2006 :

.686p ; toutes les instructions sont diponibles
.xmm ; utilisation des instructions SSE
.mmx ; utilisations des instructions MMX
.k3d ; utilisation des instructions 3Dnow!

Je vais tester ...
<hr size="2" width="100%" />Visitez mon site : http://hydrargyrum.ifrance.com !
0
edfed Messages postés 69 Date d'inscription mercredi 12 décembre 2007 Statut Membre Dernière intervention 22 mars 2010 1
24 mars 2008 à 18:36
changer de compilo.

masm, ça suxxxx grave.

me:
nop
ret
0
Rejoignez-nous