Debutant en SSE / SIMD [Résolu]

Messages postés
83
Date d'inscription
samedi 21 mai 2005
Statut
Membre
Dernière intervention
22 mars 2011
- - Dernière réponse : 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.
Afficher la suite 

6 réponses

Meilleure réponse
Messages postés
202
Date d'inscription
mardi 17 mai 2005
Statut
Membre
Dernière intervention
29 septembre 2008
3
Merci
Le .586 est-il suffisant pour ces instructions ? Je crois que le .586 correspond à la première génération de Pentium.

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 220 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_Nasman
Messages postés
202
Date d'inscription
mardi 17 mai 2005
Statut
Membre
Dernière intervention
29 septembre 2008
0
Merci
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).
Commenter la réponse de cs_Nasman
Messages postés
83
Date d'inscription
samedi 21 mai 2005
Statut
Membre
Dernière intervention
22 mars 2011
0
Merci
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 !
Commenter la réponse de epineurien
Messages postés
83
Date d'inscription
samedi 21 mai 2005
Statut
Membre
Dernière intervention
22 mars 2011
0
Merci
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 !
Commenter la réponse de epineurien
Messages postés
83
Date d'inscription
samedi 21 mai 2005
Statut
Membre
Dernière intervention
22 mars 2011
0
Merci
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 !
Commenter la réponse de epineurien
Messages postés
69
Date d'inscription
mercredi 12 décembre 2007
Statut
Membre
Dernière intervention
22 mars 2010
1
0
Merci
changer de compilo.

masm, ça suxxxx grave.

me:
nop
ret
Commenter la réponse de edfed