Bit Manipulation Instruction Sets

aus Wikipedia, der freien Enzyklopädie
Wechseln zu: Navigation, Suche

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[Bearbeiten | Quelltext bearbeiten]

ABM[Bearbeiten | Quelltext bearbeiten]

Instruktion Beschreibung[1]
POPCNT Population count
LZCNT Anzahl führender Nullen

BMI1[Bearbeiten | Quelltext bearbeiten]

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 N/A

BMI2[Bearbeiten | Quelltext bearbeiten]

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[Bearbeiten | Quelltext bearbeiten]

Instruktion Beschreibung (englisch)[1] Ausdruck in C[6]
BEXTR Bitfeld-Extrakt (sofort) (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[Bearbeiten | Quelltext bearbeiten]

  1. a b AMD64 Architecture Programmer's Manual, Volume 3: General-Purpose and System Instructions (PDF) In: amd.com. AMD. October 2013. Abgerufen am 2. Januar 2014.
  2. Intel Advanced Vector Extensions Programming Reference (PDF) In: intel.com. Intel. June 2011. Abgerufen am 3. Januar 2014.
  3. bmiintrin.h from GCC 4.8. Abgerufen am 17. März 2014.
  4. Chess Programming BMI1. Abgerufen am 8. April 2014.
  5. a b Haswell Cryptographic Performance, Juli 2013
  6. tbmintrin.h from GCC 4.8. Abgerufen am 17. März 2014.