epineurien
Messages postés83Date d'inscriptionsamedi 21 mai 2005StatutMembreDernière intervention22 mars 2011
-
10 mars 2008 à 19:02
edfed
Messages postés69Date d'inscriptionmercredi 12 décembre 2007StatutMembreDernière intervention22 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.
cs_Nasman
Messages postés202Date d'inscriptionmardi 17 mai 2005StatutMembreDernière intervention29 septembre 20083 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).
epineurien
Messages postés83Date d'inscriptionsamedi 21 mai 2005StatutMembreDernière intervention22 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 ?
epineurien
Messages postés83Date d'inscriptionsamedi 21 mai 2005StatutMembreDernière intervention22 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 ?
epineurien
Messages postés83Date d'inscriptionsamedi 21 mai 2005StatutMembreDernière intervention22 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!