[go: up one dir, main page]

Aller au contenu

Intel ADX

Un article de Wikipédia, l'encyclopédie libre.

Intel ADX (Multi-Precision Add-Carry Instruction Extensions) est l’extension arithmétique multiprécision d’Intel à l’architecture de jeu d'instructions x86 (ISA). Intel ADX a d’abord été pris en charge dans la microarchitecture Broadwell[1],[2].

L’extension de jeu d’instructions ne contient que deux nouvelles instructions, bien que MULX de BMI2 soit également considérée comme faisant partie de la prise en charge de l’arithmétique des grands entiers[3].

Les deux instructions sont des variantes plus efficaces de l’instruction existante ADC, car chacune des deux nouvelles instructions n’affecte qu’un seul drapeau, alors qu’une addition signée avec ADC peut armer à la fois les drapeaux de débordement et de retenue, et qu’une instruction x86 à l’ancienne réinitialise également le reste des drapeaux du CPU. Le fait d’avoir deux versions affectant des drapeaux différents signifie que deux chaînes d’additions avec report peuvent être calculées en parallèle[3].

AMD a ajouté la prise en charge de ces instructions dans ses processeurs à partir de Ryzen.

Instruction Description
ADCX Ajoute deux entiers non signés plus retenue, en lisant la retenue à partir de l’indicateur de retenue et si nécessaire en le mettant à jour. N’affecte pas d'autres drapeaux que la retenue.
ADOX Ajoute deux entiers non signés plus retenue, en lisant la retenue à partir de l’indicateur de débordement et si nécessaire en le mettant à jour. N’affecte pas d'autres drapeaux que le débordement.

Références

[modifier | modifier le code]
  1. (en-US) « Intel Software Development Emulator », sur software.intel.com, (consulté le )
  2. (en-US) « Intel Architecture Instruction Set Extensions Programming Reference - Chapter 9: Additional new instructions (Document number 319433-013B) » [PDF], Intel,
  3. a et b (en-US) « New Instructions Supporting Large Integer Arithmetic on Intel Architecture Processors » [PDF], Intel (consulté le )

Liens externes

[modifier | modifier le code]