Présentation des intrinsèques
[Cette documentation constitue un aperçu et peut faire l'objet de modifications avec les versions ultérieures. Blank topics are included as placeholders.]
Spécifique à Microsoft
3DNow ! la technologie fournit jusqu'à 26 instructions supplémentaires pour prendre en charge le traitement graphique 3D et audio haute performance. 3DNow ! l'instruction est une instruction vectorielle qui traitent les registres 64 bits. 3DNow ! l'instruction est SIMD ; chaque instruction opère des paires de valeurs 32 bits. Consultez 3DNow! Intrinsèques pour la documentation de référence pour les éléments intrinsèques d'AMD.
L'instruction vectorielle s'exécute en parallèle sur deux jeux de simple précision 32 bits, mots à virgule flottante. L'instruction scalaire traite un seul ensemble d'opérandes 32 bits (les insuffisantes moitiés les deux opérandes 64 bits).
le 3DNow ! la simple précision, format à virgule flottante est compatible avec le format en simple précision IEEE 754. Ce format comporte un signe de 1 bits, un exposant décentré de 8 bits, et un significand de 23 bits avec un bit entier masqué pour un total de 24 bits dans le significand. La écart de l'exposant est 127, compatible avec la norme de simple précision IEEE. Les significands sont normalisés pour se situer dans la plage de [1,2).
Contrairement à la norme IEEE qui déterminent quatre modes d'arrondi, 3DNow ! technologie prend en charge un mode d'arrondi, comme rond-à-proche ou rond-à-zéro (troncation). L'implémentation matérielle de 3DNow ! la technologie détermine le mode d'arrondi. Les processeurs AMD d'implémentent le mode rond-à-proche. Quel que soit le mode d'arrondi utilisé, l'instruction de conversion de flottant-point-à-entier et d'entier-à-flottant-point, PF2ID et PI2FD, utilise toujours rond--zéro en mode (de troncation).
Le plus grand nombre normal qui peut être représenté dans la variable pour cette précision au format hexadécimal a un exposant de FEh et un significand de 7FFFFFh, avec une valeur numérique de 2127 (2 - 2-23). Tous les résultats qui se heurtent au-dessus de la valeur positive qui peut être représenté maximale sont saturés à l'un ou l'autre de ce nombre normal qui peut être représenté maximal ou à l'infini positif. De même, tous les résultats qui se heurtent inférieure à la valeur négative qui peut être représenté minimum sont saturés à l'une ou l'autre de ce nombre normal qui peut être représenté minimum ou à l'infini négatif.
l'implémentation de 3DNow ! la technologie détermine comment le dépassement arithmétique est géré, comme maximale correctement signé ou nombres représentables minimum de normale ou infinis signés correctement. Le processeur génère le maximum correctement signé ou des nombres représentables minimum de normale.
Les infinis et le NANs ne sont pas pris en charge comme opérandes à 3DNow ! instruction.
Le plus petit nombre normal qui peut être représenté dans la variable pour cette précision au format hexadécimal a un exposant de 01:00 et un significand de 000000h, avec une valeur numérique de 2-126. Par conséquent, les résultats inférieure à cette valeur qui peut être représenté minimale dans la variable sont conservés à zéro. Le tableau suivant indique les plages d'exposant prises en charge par le 3DNow ! technologie.
3DNow !chaînes d'exposant de technologie
exposant décentré |
Description |
---|---|
FFh |
Non pris en charge. Les nombres non prises en charge peuvent être utilisés comme opérandes. les résultats des opérations avec les nombres non pris en charge sont indéfinis. |
00:00 |
Zéro. |
00h<x<FFh |
Normal. |
01:00 |
(1-127) le plus petit possible exposant 2. |
FEh |
(254-127) la plus grande possible exposant 2. |
comme MMX l'instruction, 3DNow ! l'instruction ne génère pas d'exceptions numériques ou ne définit aucune balise d'état. Il revient à l'utilisateur de garantir que les données de dans-plage est fournie à 3DNow ! instruction et que tous les calculs restent dans les limites valides (ou sont traités comme prévu).
Les opérations de registre du 3DNow ! l'instruction à virgule flottante est exécutée par l'unité du registre X ou unité d'O de registre. Une opération peut être publiée sur chaque unité de registre à chaque cycle d'horloge à un taux maximale de problème et d'exécution de deux 3DNow ! opérations par cycle.
Normalement, dans les performances élevées 3DNow ! code, tout le 3DNow ! l'instruction est correctement planifié en dehors de l'un l'autre pour éviter des délais provoqués par des conflits de ressources d'exécution (ainsi que de prendre en compte les dépendances et des latences d'exécution).
Pour plus d'informations concernant l'optimisation du code sur le processeur AMD-K6, consultez la note d'application en optimisation du code du processeur AMD-K6commande, le nombre 21924. Ce document fournit des examens des techniques d'optimisation du code pour le processeur.
Pour les informations de ressources de exécution sur le processeur d'Athlon AMD, consultez le guide d'optimisation du code x86 de processeur d'AMD Athloncommande, le nombre 22007.
le 3DNow ! l'instruction d'amélioration des performances pour les processeurs AMD d'est résumée dans les tableaux suivants.
AMD 3DNow !instruction à virgule flottante
Opération |
Fonction |
L'opcode |
---|---|---|
PAVGUSB |
Calculer la moyenne compressé d'entier non signé 8 bits |
BFh |
PFADD |
Ajout à virgule flottante compressé |
9Eh |
PFSUB |
Soustraction à virgule flottante compressée |
9Ah |
PFSUBR |
Soustraction compressée d'inverse de virgule flottante |
Aah |
PFACC |
La virgule flottante compressée accumulate |
Aeh |
PFCMPGE |
Comparaison à virgule flottante compressée, supérieur ou égal à |
90h |
PFCMPGT |
Comparaison à virgule flottante compressée, supérieure |
A0h |
PFCMPEQ |
Comparaison à virgule flottante compressée, égal |
B0h |
PFMIN |
Minimaux à virgule flottante compressé |
94h |
PFMAX |
Maximale à virgule flottante compressé |
A4h |
PI2FD |
Entier 32 bits compressé à la conversion à virgule flottante |
0Dh |
PF2ID |
Virgule flottante compressée à l'entier 32 bits |
1Dh |
PFRCP |
Approximation réciproque à virgule flottante compressée |
96h |
PFRSQRT |
Approximation réciproque à virgule flottante compressée sqrt |
97h |
PFMUL |
Multiplication à virgule flottante compressée |
B4h |
PFR CPIT1 |
Première étape réciproque à virgule flottante compressée d'itération |
A6h |
PFRSQIT1 |
Première étape compressée d'itération racine carrée réciproque à virgule flottante |
A7h |
PFR CPIT2 |
Étape réciproque/réciproque à virgule flottante compressée d'itération racine carrée deuxième |
B6h |
PMULHRW |
L'entier 16 bits compressé multiply avec l'arrondi |
B7h |
AMD 3DNow !instruction d'amélioration des performances
Opération |
Fonction |
Octet de l'opcode deuxième |
---|---|---|
FEMMS |
Une entrée/sortie plus rapide de MMX ou un état à virgule flottante. |
0Eh |
PREFETCH/PREFETCHW |
|
0Dh |
processeur 3DNow d'AMD Athlon !Extensions de fournisseur de schémas de technologie
Opération |
Fonction |
L'opcode/imm8 |
---|---|---|
PF2IW |
La virgule flottante compressée à la conversion entière de mot avec le signe étendent |
0Fh 0Fh/1Ch |
PFNACC |
Le négatif à virgule flottante compressé accumulate |
0Fh 0Fh/8Ah |
PFPNACC |
Positif-négatifs mixtes compressés de virgule flottante s'accumulent |
0Fh 0Fh/8Eh |
PI2FW |
Mot entier compressé à la conversion à virgule flottante |
0Fh 0Fh/0Ch |
PSWAPD |
Mot double compressé d'échange |
0Fh 0Fh/BBh |
MMX extensions de jeu d'instructions à partir de le processeur d'AMD Athlon
Opération |
Fonction |
L'opcode/imm8 |
---|---|---|
MASKMOVQ |
Diffusion en continu magasin (de contournement de cache) à l'aide de le masque d'octet |
0Fh F7h |
MOVNTQ |
Diffusion en continu magasin (de contournement de cache) |
0Fh E7h |
PAVGB |
Moyen compressé de l'octet non signé |
0Fh E0h |
PAVGW |
Moyenne compressée de mot non signé |
0Fh E3h |
PEXTRW |
mot d'extrait dans le registre entier |
0Fh C5 h |
PINSRW |
mot d'insertion à partir de registre entier |
0Fh C4 h |
PMAXSW |
Mot signé par maximale compressé |
0Fh Eeh |
PMAXUB |
Octets non signé maximale compressé |
0Fh Deh |
PMINSW |
Mot signé minimum compressé |
0Fh Eah |
PMINUB |
Octets non signé minimum compressé |
0Fh Dah |
PMOVMSKB |
Masque d'octet de passer au registre entier |
0Fh D7h |
PMULHUW |
packed multiplient le mot non signé élevé |
0Fh E4h |
PREFETCHNTA |
Déplacez les données plus proche du processeur à l'aide de la référence de NTA |
0Fh 18:0 * |
PREFET CHT0 |
Déplacez les données plus proche du processeur à l'aide de la référence T0 |
0Fh 18:1 * |
PREFET CHT1 |
Déplacez les données plus proche du processeur à l'aide de la référence T1 |
0Fh 18:2 * |
PREFET CHT2 |
Déplacez les données plus proche du processeur à l'aide de la référence de T2 |
0Fh 18:3 * |
PSADBW |
Somme compressée de différences absolues d'octet |
0Fh F6h |
PSHUFW |
Mot les fichiers pas traînant |
0Fh 70h |
SFENCE |
Barrière magasin |
0Fh AEh/7:00 |
le numéro de *The après l'opcode indique les différents modes de les dans l'octet de modR/M.
Pour plus d'informations concernant l'optimisation du code sur le processeur AMD-K6-2, consultez la note d'application en optimisation du code du processeur AMD-K6-2 commande, le nombre 21924. Ce document fournit des examens des techniques d'optimisation du code pour le processeur de la famille AMD-K6.
Pour les informations de ressources de exécution sur le processeur d'Athlon AMD, consultez le guide d'optimisation du code x86 de processeur d'AMD Athlon commande, le nombre 22007. Ce document fournit des examens des techniques d'optimisation du code pour le processeur de AMD Athlon.
Consultez https://go.microsoft.com/fwlink/?LinkID=95131 pour les versions en ligne de ces documents.
Voir aussi
Référence
AMD 3DNow ! Vue d'ensemble de la technologie et intrinsèques