Built-In Assembler support for AVX2 and AVX-512
Go Up to Delphi Compiler
Built-In Assembler modules (CHASM and CHASM64) linked in the Olympus Delphi compiler for Win32 and Win64 support AVX2 and AVX-512 instructions.
Attention: You’d need an AVX-512 compatible CPU (like one of the recent INTEL CPUs) to test this feature. You can find more information at:
https://en.wikipedia.org/wiki/Advanced_Vector_Extensions#CPUs_with_AVX-512
Contents
New Registers
Registers | dcc32 | dcc64 |
---|---|---|
XMM16 .. XMM31 | ![]() | |
YMM0 .. YMM7 | ![]() |
![]() |
YMM8 .. YMM31 | ![]() | |
ZMM0 .. ZMM7 | ![]() |
![]() |
ZMM8 .. ZMM31 | ![]() | |
BND0 .. BND3 | ![]() |
![]() |
K0 .. K7 | ![]() |
![]() |
New Instruction Prefixes
Instruction Prefix | dcc32 | dcc64 | Intel Syntax |
---|---|---|---|
xacquire | ![]() |
![]() |
|
xrelease | ![]() |
![]() |
|
<evex> | ![]() |
![]() |
{evex} |
New Expression Prefixes
Prefix | dcc32 | dcc64 |
---|---|---|
oword | ![]() |
![]() |
yword | ![]() |
![]() |
zword | ![]() |
![]() |
Difference between Delphi Syntax and Intel Syntax
Unfortunately, Intel AVX-512 syntax uses curly brackets characters { } which is already used as comment begin/end in Delphi.
So, this implementation uses less-than and greater-than characters < > instead.
Category | Delphi Syntax | Intel Syntax |
---|---|---|
Opmask register | <k1> ,, <k7> | {k1} .. {k7} |
Zeroing modifier | <z> | {z} |
Embedded broadcast | <1to2> <1to4> <1to8> <1to16> | {1to2} {1to4} {1to8} {1to16} |
Static rounding-mode | <sae> <rn-sae> <rd-sae> <ru-sae> <rz-sae> | {sae} {rn-sae} {rd-sae} {ru-sae} {rz-sae} |
Force EVEX encoding prefix | <evex> | {evex} |