Integrierte Assembler-Unterstützung für AVX2 und AVX-512
Nach oben zu Delphi-Compiler
Integrierte Assembler-Module (CHASM und CHASM64), die im Olympus Delphi-Compiler für Win32 und Win64 gelinkt sind, unterstützen AVX2- und AVX-512-Anweisungen.
Achtung: Zum Testen dieses Features benötigen Sie eine mit AVX-512 kompatible CPU (etwa eine der neuen INTEL-CPUs). Weitere Informationen finden Sie unter:
https://en.wikipedia.org/wiki/Advanced_Vector_Extensions#CPUs_with_AVX-512}} (Englisch)
Neue Register
| Register | dcc32 | dcc64 |
|---|---|---|
| XMM16 .. XMM31 | ||
| YMM0 .. YMM7 | ||
| YMM8 .. YMM31 | ||
| ZMM0 .. ZMM7 | ||
| ZMM8 .. ZMM31 | ||
| BND0 .. BND3 | ||
| K0 .. K7 |
Neue Anweisungspräfixe
| Anweisungspräfix | dcc32 | dcc64 | Intel-Syntax |
|---|---|---|---|
| xacquire | |||
| xrelease | |||
| <evex> | {evex} |
Neue Ausdruckspräfixe
| Präfix | dcc32 | dcc64 |
|---|---|---|
| oword | ||
| yword | ||
| zword |
Unterschied zwischen Delphi-Syntax und Intel-Syntax
Leider verwendet die Intel AVX-512-Syntax geschweifte Klammern { }, die bereits in Delphi als Anfangs- und Endzeichen für Kommentare verwendet werden.
Daher werden in dieser Implementierung stattdessen Kleiner-als- und Größer-als-Zeichen (< >) verwendet.
| Kategorie | Delphi-Syntax | Intel-Syntax |
|---|---|---|
| Opmask-Register | <k1> ,, <k7> | {k1} .. {k7} |
| Zeroing-Modifizierer | <z> | {z} |
| Eingebetteter Broadcast | <1to2> <1to4> <1to8> <1to16> | {1to2} {1to4} {1to8} {1to16} |
| Statischer Rundungsmodus | <sae> <rn-sae> <rd-sae> <ru-sae> <rz-sae> | {sae} {rn-sae} {rd-sae} {ru-sae} {rz-sae} |
| EVEX-Codierungspräfix durchsetzen | <evex> | {evex} |