Bit Manipulation Instruction Sets
Bit Manipulation Instructions Sets (BMI) sind Befehlssatzerweiterungen für Mikroprozessoren von Intel und AMD.
Es gibt mehrere Untermengen von BMI: BMI1 und BMI2 von Intel, die mit der Intel-Haswell-Mikroarchitektur eingeführt wurden sowie ABM und TBM von AMD. ABM (Advanced Bit Manipulation) beinhaltet Instruktionen aus Intels SSE4.2 und BMI1, TBM (Trailing Bit Manipulation) ist eine Erweiterung von BMI1, die mit der Piledriver-Architektur eingeführt wurde.
Neue Instruktionen
ABM
Instruktion | Beschreibung[1] |
---|---|
POPCNT |
Population count |
LZCNT |
Anzahl führender Nullen |
BMI1
Instruktion | Beschreibung[2] | Ausdruck in C[3] |
---|---|---|
ANDN |
AND NOT | ~x & y |
BEXTR |
Bitfeld-Extrakt | (src >> start) & ((1 << len)-1) [4] |
BLSI |
x & -x | |
BLSMSK |
x ^ (x - 1) | |
BLSR |
x & (x - 1) | |
TZCNT |
Anzahl schließender Nullen | – |
BMI2
Instruktion | Beschreibung |
---|---|
BZHI |
|
MULX |
Vorzeichenlose (unsigned) Multiplikation ohne Einfluss auf Flags (für RSA)[5] |
PDEP |
Paralleler Bit-Deposit |
PEXT |
Paralleler Bit-Extrakt |
RORX |
Bitweise Rotation nach rechts ohne Einfluss auf Flags (für SHA)[5] |
SARX |
Arithmetische Verschiebung nach rechts |
SHRX |
Logische Verschiebung nach rechts |
SHLX |
Logische Verschiebung nach links |
TBM
Instruktion | Beschreibung (englisch)[1] | Ausdruck in C[6] |
---|---|---|
BEXTR |
Bitfeld-Extrakt (unmittelbarer Kontroll-Wert) | (src >> start) & ((1 << len)-1) |
BLCFILL |
Fill from lowest clear bit | x & (x + 1) |
BLCI |
Isolate lowest clear bit | x | ~(x + 1) |
BLCIC |
Isolate lowest clear bit and complement | ~x & (x + 1) |
BLCMASK |
Mask from lowest clear bit | x ^ (x + 1) |
BLCS |
Set lowest clear bit | x | (x + 1) |
BLSFILL |
Fill from lowest set bit | x | (x - 1) |
BLSIC |
Isolate lowest set bit and complement | ~x | (x - 1) |
T1MSKC |
Inverse mask from trailing ones | ~x | (x + 1) |
TZMSK |
Mask from trailing zeros | ~x & (x - 1) |
Einzelnachweise
- AMD64 Architecture Programmer's Manual, Volume 3: General-Purpose and System Instructions (PDF) In: amd.com. AMD. Oktober 2013. Abgerufen am 2. Januar 2014.
- Intel Advanced Vector Extensions Programming Reference (PDF) In: intel.com. Intel. Juni 2011. Abgerufen am 3. Januar 2014.
- bmiintrin.h from GCC 4.8. Abgerufen am 17. März 2014.
- Chess Programming BMI1. Abgerufen am 8. April 2014.
- Haswell Cryptographic Performance, Juli 2013
- tbmintrin.h from GCC 4.8. Abgerufen am 17. März 2014.
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. The authors of the article are listed here. Additional terms may apply for the media files, click on images to show image meta data.