x86: Add support for Intel AMX instructions
Cui, Lili
lili.cui@intel.com
Tue Jun 30 09:12:25 GMT 2020
> On Mon, Jun 29, 2020 at 7:48 AM Jan Beulich <jbeulich@suse.com> wrote:
> >
> > On 29.06.2020 14:46, H.J. Lu wrote:
> > > On Mon, Jun 29, 2020 at 3:03 AM Jan Beulich <jbeulich@suse.com> wrote:
> > >> On 28.06.2020 09:43, Cui, Lili via Binutils wrote:
> > >>> --- /dev/null
> > >>> +++ b/gas/testsuite/gas/i386/x86-64-amx-intel.d
> > >>> @@ -0,0 +1,69 @@
> > >>> +#as:
> > >>> +#objdump: -d -Mintel
> > >>> +#name: x86_64 AMX insns in Intel syntax
> > >>> +#source: x86-64-amx.s
> > >>> +
> > >>> +.*: +file format .*
> > >>> +
> > >>> +
> > >>> +Disassembly of section \.text:
> > >>> +
> > >>> +0+ <_start>:
> > >>> +[ ]*[a-f0-9]+:[ ]*c4 e2 78 49 04 51[ ]*ldtilecfg \[rcx\+rdx\*2\]
> > >>> +[ ]*[a-f0-9]+:[ ]*c4 e2 79 49 04 51[ ]*sttilecfg \[rcx\+rdx\*2\]
> > >>> +[ ]*[a-f0-9]+:[ ]*c4 e2 52 5c dc[ ]*tdpbf16ps tmm3,tmm4,tmm5
> > >>> +[ ]*[a-f0-9]+:[ ]*c4 e2 63 5e ca[ ]*tdpbssd tmm1,tmm2,tmm3
> > >>> +[ ]*[a-f0-9]+:[ ]*c4 e2 62 5e ca[ ]*tdpbsud tmm1,tmm2,tmm3
> > >>> +[ ]*[a-f0-9]+:[ ]*c4 e2 61 5e ca[ ]*tdpbusd tmm1,tmm2,tmm3
> > >>> +[ ]*[a-f0-9]+:[ ]*c4 e2 60 5e ca[ ]*tdpbuud tmm1,tmm2,tmm3
> > >>> +[ ]*[a-f0-9]+:[ ]*c4 e2 7b 4b 2c 25 00[ ]*tileloadd tmm5,ds:0x0
> > >>> +[ ]*[a-f0-9]+:[ ]*00 00 00[ ]*
> > >>> +[ ]*[a-f0-9]+:[ ]*c4 e2 7b 4b 2c 21[ ]*tileloadd tmm5,\[rcx\+riz\*1\]
> > >>> +[ ]*[a-f0-9]+:[ ]*67 c4 e2 7b 4b 2c 21[ ]*tileloadd
> tmm5,\[ecx\+eiz\*1\]
> > >>> +[ ]*[a-f0-9]+:[ ]*c4 e2 7b 4b 2c 11[ ]*tileloadd tmm5,\[rcx\+rdx\*1\]
> > >>> +[ ]*[a-f0-9]+:[ ]*67 c4 e2 7b 4b 0c 51[ ]*tileloadd
> tmm1,\[ecx\+edx\*2\]
> > >>
> > >> Is this (not very intuitive) representation agreed with Microsoft's
> > >> MASM team? I ask because I'd prefer it to be visually recognizable
> > >> that the effective address is _not_ [<base>+<index>*<scale>] here.
> > >> The form I'm planning to use in my own disassembler (at least until
> > >> knowing otherwise for MASM) is [<base>+<index>*<scale>n] (or maybe
> > >> [<base>,<index>*<scale>]).
> > >
> > > Does this comment apply only to AMX instructions? Are there any
> > > issues with disassembler in general?
> >
> > I'm not aware of any others, perhaps beside some of the more strange
> > MPX insns. But with MPX discontinued I don't think there's much point
> > worrying about them.
>
> Lili, please take a look.
Hi Jan,
Could you help figure out which format I should use? and what's the "n" meaning it the second format, Thanks.
[<base>+<index>*<scale>]
[<base>+<index>*<scale>n]
[<base>,<index>*<scale>]
> > @@ -383,6 +389,12 @@ static initializer cpu_flag_init[] =
> > "CpuAVX512_BITALG" },
> > { "CPU_ANY_AVX512_BF16_FLAGS",
> > "CpuAVX512_BF16" },
> > + { "CPU_ANY_AMX_INT8_FLAGS",
> > + "CpuAMX_INT8" },
> > + { "CPU_ANY_AMX_BF16_FLAGS",
> > + "CpuAMX_BF16" },
> > + { "CPU_ANY_AMX_TILE_FLAGS",
> > + "CpuAMX_TILE" },
>
> Doesn't this need to include the other two CpuAMX_* as well, as being
> the base feature?
Sorry, I didn't get what do you mean.
Thanks,
Lili.
More information about the Binutils
mailing list