x86: introduce .bfloat16 directive

This is to be able to generate data acted upon by AVX512-BF16 and
AMX-BF16 insns. While not part of the IEEE standard, the format is
sufficiently standardized to warrant handling in config/atof-ieee.c.
Arm, where custom handling was implemented, may want to leverage this as
well. To be able to also use the hex forms supported for other floating
point formats, a small addition to the generic hex_float() is needed.

Extend existing x86 testcases.
This commit is contained in:
Jan Beulich
2021-08-11 08:33:49 +02:00
parent 7d19d09629
commit de133cf98c
8 changed files with 32 additions and 14 deletions

View File

@ -1314,20 +1314,22 @@ data type. Constructors build these data types into memory.
@cindex @code{double} directive, i386
@cindex @code{tfloat} directive, i386
@cindex @code{hfloat} directive, i386
@cindex @code{bfloat16} directive, i386
@cindex @code{float} directive, x86-64
@cindex @code{single} directive, x86-64
@cindex @code{double} directive, x86-64
@cindex @code{tfloat} directive, x86-64
@cindex @code{hfloat} directive, x86-64
@cindex @code{bfloat16} directive, x86-64
@itemize @bullet
@item
Floating point constructors are @samp{.float} or @samp{.single},
@samp{.double}, @samp{.tfloat}, and @samp{.hfloat} for 32-, 64-, 80-, and
16-bit formats respectively. The former three correspond to instruction
mnemonic suffixes @samp{s}, @samp{l}, and @samp{t}. @samp{t} stands for
80-bit (ten byte) real. The 80387 only supports this format via the
@samp{fldt} (load 80-bit real to stack top) and @samp{fstpt} (store 80-bit
real and pop stack) instructions.
@samp{.double}, @samp{.tfloat}, @samp{.hfloat}, and @samp{.bfloat16} for 32-,
64-, 80-, and 16-bit (two flavors) formats respectively. The former three
correspond to instruction mnemonic suffixes @samp{s}, @samp{l}, and @samp{t}.
@samp{t} stands for 80-bit (ten byte) real. The 80387 only supports this
format via the @samp{fldt} (load 80-bit real to stack top) and @samp{fstpt}
(store 80-bit real and pop stack) instructions.
@cindex @code{word} directive, i386
@cindex @code{long} directive, i386