Jump to content

Intel ADX: Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
new instructions
Monkbot (talk | contribs)
m Task 18 (cosmetic): eval 4 templates: hyphenate params (3×);
 
(29 intermediate revisions by 12 users not shown)
Line 1: Line 1:
'''Intel ADX''' ('''Multi-Precision Add-Carry Instruction Extensions''') is [[Intel]]'s [[arbitrary-precision arithmetic]] extension to the [[x86]] [[instruction set architecture]] (ISA). Intel ADX was first supported in the [[Broadwell (microarchitecture)|Broadwell microarchitecture]].<ref>{{cite web|url=http://software.intel.com/en-us/articles/intel-software-development-emulator |title=Intel Software Development Emulator |website=software.intel.com |date=July 23, 2013 |access-date=October 16, 2013}}</ref><ref>[https://software.intel.com/sites/default/files/319433-013b.pdf Intel Architecture Instruction Set Extensions Programming Reference] (Document number 319433-013B) // Intel, July 2012, Chapter 9: Additional new instructions</ref>
{{Multiple issues|
{{More footnotes|date=February 2014}}
{{Update|date=February 2015}}
}}


The instruction set extension contains just two new instructions, though <code>MULX</code> from [[BMI2]] is also considered as a part of the large integer arithmetic support.<ref name="adcref">{{cite web |url=http://www.intel.com/content/dam/www/public/us/en/documents/white-papers/ia-large-integer-arithmetic-paper.pdf |title= New Instructions Supporting Large Integer Arithmetic on Intel Architecture Processors |publisher=[[Intel]] |access-date=2 January 2015}}</ref>
'''Intel ADX''' ('''Multi-Precision Add-Carry Instruction Extensions''') is a set of extensions to the [[x86]] [[instruction set architecture]] for [[arbitrary-precision arithmetic]]. It was introduced as part of the [[Broadwell (microarchitecture)|Broadwell]] [[microarchitecture]].<ref>{{cite web|url=http://software.intel.com/en-us/articles/intel-software-development-emulator |title=Intel Software Development Emulator |website=software.intel.com |date=July 23, 2013 |accessdate=October 16, 2013}}</ref><ref>[http://software.intel.com/sites/default/files/m/0/1/9/3/4/45207-319433-013b.pdf Intel Architecture Instruction Set Extensions Programming Reference] (Document number 319433-013B) // Intel, July 2012, Chapter 9: Additional new instructions</ref>


Both instructions are more efficient variants of the existing <code>ADC</code> instruction, with the difference that each of the two new instructions affects only one flag, where <code>ADC</code> as a signed addition may set both overflow and carry flags, and as an old-style x86 instruction also reset the rest of the CPU flags. Having two versions affecting different flags means that two chains of additions with carry can be calculated in parallel.<ref name="adcref" />

AMD added support in their processors for these instructions starting with [[Ryzen]].


== New instructions ==
The instruction set extension contains just three new instructions
{| class="wikitable"
{| class="wikitable"
|-
|-
Line 14: Line 12:
! Description
! Description
|-
|-
| <code>ADC</code>
| <code>ADCX</code>
| Adds two integers with carry set and read from the carry flag.
| Adds two unsigned integers plus carry, reading the carry from the carry flag and if necessary setting it there. Does not affect other flags than the carry.
|-
|-
| <code>ADOX</code>
| <code>ADOX</code>
| Adds two integers with carry set and read from the overflow flag.
| Adds two unsigned integers plus carry, reading the carry from the overflow flag and if necessary setting it there. Does not affect other flags than the overflow.
|-
| <code>SBB</code>
| Subtract one integer from another, and set and read carry/burrow from the carry flag.
|}
|}


Line 29: Line 24:
== External links ==
== External links ==
* {{cite manual
* {{cite manual
| title = Intel Architecture Instruction Set Extensions Programming Reference
|title = Intel Architecture Instruction Set Extensions Programming Reference
| month = July
|date = July 2013
| year = 2013
|publisher = [[Intel]]
|access-date = 2013-09-10
| publisher = [[Intel]]
|url = http://download-software.intel.com/sites/default/files/319433-015.pdf
| accessdate = 2013-09-10
| url = http://download-software.intel.com/sites/default/files/319433-015.pdf
|archive-url = https://web.archive.org/web/20130929035331/http://download-software.intel.com/sites/default/files/319433-015.pdf
|archive-date = 2013-09-29
}}
|url-status = dead
}}
* {{cite web | url=http://www.intel.com/content/dam/www/public/us/en/documents/white-papers/ia-large-integer-arithmetic-paper.pdf | title=New Instructions Supporting Large Integer Arithmetic on Intel® Architecture Processors}}
* {{cite web | url=http://www.intel.com/content/dam/www/public/us/en/documents/white-papers/ia-large-integer-arithmetic-paper.pdf | title=New Instructions Supporting Large Integer Arithmetic on Intel® Architecture Processors}}
{{Intel}}

{{Multimedia extensions}}
[[Category:Articles created via the Article Wizard]]
[[Category:Intel Corporation]]
[[Category:Intel]]
[[Category:X86 instructions]]
[[Category:X86 instructions]]


{{hardware-stub}}

{{Microcompu-stub}}

Latest revision as of 06:13, 17 January 2021

Intel ADX (Multi-Precision Add-Carry Instruction Extensions) is Intel's arbitrary-precision arithmetic extension to the x86 instruction set architecture (ISA). Intel ADX was first supported in the Broadwell microarchitecture.[1][2]

The instruction set extension contains just two new instructions, though MULX from BMI2 is also considered as a part of the large integer arithmetic support.[3]

Both instructions are more efficient variants of the existing ADC instruction, with the difference that each of the two new instructions affects only one flag, where ADC as a signed addition may set both overflow and carry flags, and as an old-style x86 instruction also reset the rest of the CPU flags. Having two versions affecting different flags means that two chains of additions with carry can be calculated in parallel.[3]

AMD added support in their processors for these instructions starting with Ryzen.

Instruction Description
ADCX Adds two unsigned integers plus carry, reading the carry from the carry flag and if necessary setting it there. Does not affect other flags than the carry.
ADOX Adds two unsigned integers plus carry, reading the carry from the overflow flag and if necessary setting it there. Does not affect other flags than the overflow.

References

[edit]
  1. ^ "Intel Software Development Emulator". software.intel.com. July 23, 2013. Retrieved October 16, 2013.
  2. ^ Intel Architecture Instruction Set Extensions Programming Reference (Document number 319433-013B) // Intel, July 2012, Chapter 9: Additional new instructions
  3. ^ a b "New Instructions Supporting Large Integer Arithmetic on Intel Architecture Processors" (PDF). Intel. Retrieved 2 January 2015.
[edit]