x86 AMX/ACE with >8 tiles
Christian Ludloff
ludloff@gmail.com
Tue Jul 28 20:11:59 GMT 2026
On Tue, Jul 28, 2026 at 12:49 AM Jan Beulich <jbeulich@suse.com> wrote:
> On 27.07.2026 18:08, Christian Ludloff wrote:
> > The new COLSB and ROWS fields in TILECFG [...]
> Of course this re-sizing is wasteful for ACE's palette 2.
With AMX/ACE the CPUID-reported TILECFG operand width is
palette-independent.
> On that page you may actually want to note that the
> shown layout is only for palette 1.
Yes, for ACE the START_ROW and the COLSB and ROWS fields
are reserved MBZ -- page updated.
> Do the TILE_CTRL bits imply effects on XSTATE component
> size (and hence on CPUID output)?
Yes.
> I.e. can they be used to safely perform such migration?
Yes.
> Talking of TILE_CTRL, does setting bit 0 imply / require
> also setting bit 1?
Yes, for a 32-tile implementation. [0-31 or 0-15 or 0-7]
No, for a 16-tile implementation. [bit1 = reserved MBZ]
> How is one to find out its MSR index?
The existing implementation supports querying as well as
relocating the index, i.e. it is flexible by design.
If Intel/AMD prefer a fixed index somewhere in their MSR
range, then they are of course free to allocate one.
> > Don't hard-code {LD,ST}TILECFG mem ops as 64-byte.
>
> This one is rather harder, as generally you want to be
> able to use compile-time-known operands / sizes.
Different tile count as well as different tile dimension
were a possibility from the get-go, back in ISE 040, and
they still are today, in SDM 092.
Personally, I actually like that.
>From here on out, SW should no longer hard-code. And for
existing SW that did hard-code, 8-tile mode works.
> > Prepare for EVEX-encoded AMX, needed for 32 tiles.
>
> I assume the extension to ACE insns is pretty natural
> then, as everything that's needed can be encoded there.
Yes.
> Remains merely the question of whether a wider operand
> to LDTILECFG is really needed there.
You want the full CPUID-reported width because there may
be additional bits or fields beyond COLSB and ROWS. :-)
> Perhaps for STTILECFG that's unavoidable, as you won't
> know what's to be stored.
Yes.
> Oh, also - are there intentions / desires to have this
> supported by gas and objdump?
A private patch exists.
It is straight-forward.
I'm not privy to plans.
Attached find a text file which describes the encodings.
If the mailing list strips it, then ping me directly.
--
C.
-------------- next part --------------
; TMM16...31
;============
;--- corrections for {LD,ST}TILECFG memory operand width ------------------------------------------------------------------------------------------------------------
VEX.128.NP.0F38.W0 49 !(11):000:bbb LDTILECFG M.TILECFG ; not Mz ; AMX_TILE|ACE
VEX.128.66.0F38.W0 49 !(11):000:bbb STTILECFG M.TILECFG ; not Mz ; AMX_TILE|ACE
EVEX.128.NP.0F38.W0 49 !(11):000:bbb LDTILECFG M.TILECFG ; not Mz ; AMX_TILE|ACE ; APX|TMM16...31
EVEX.128.66.0F38.W0 49 !(11):000:bbb STTILECFG M.TILECFG ; not Mz ; AMX_TILE|ACE ; APX|TMM16...31
;--- previously added: not just APX, but also TMM16...31 ------------------------------------------------------------------------------------------------------------
EVEX.128.66.0F38.W0 4A !(11):rrr:100 TILELOADDRST1 rT,M.ib ; AMX_MOVRS ; APX|TMM16...31
EVEX.128.F2.0F38.W0 4A !(11):rrr:100 TILELOADDRS rT,M.ib ; AMX_MOVRS ; APX|TMM16...31
EVEX.128.66.0F38.W0 4B !(11):rrr:100 TILELOADDT1 rT,M.ib ; AMX_TILE ; APX|TMM16...31
EVEX.128.F2.0F38.W0 4B !(11):rrr:100 TILELOADD rT,M.ib ; AMX_TILE ; APX|TMM16...31
EVEX.128.F3.0F38.W0 4B !(11):rrr:100 TILESTORED M.ib,rT ; AMX_TILE ; APX|TMM16...31
EVEX.128.NP.0F38.W0 6E !(11):rrr:100 T2RPNTLVWZ0 rT+1,M.ib ; AMX_TRANSPOSE ; APX|TMM16...31
EVEX.128.66.0F38.W0 6E !(11):rrr:100 T2RPNTLVWZ1 rT+1,M.ib ; AMX_TRANSPOSE ; APX|TMM16...31
EVEX.128.NP.0F38.W0 6F !(11):rrr:100 T2RPNTLVWZ0T1 rT+1,M.ib ; AMX_TRANSPOSE ; APX|TMM16...31
EVEX.128.66.0F38.W0 6F !(11):rrr:100 T2RPNTLVWZ1T1 rT+1,M.ib ; AMX_TRANSPOSE ; APX|TMM16...31
EVEX.128.NP.MAP5.W0 F8 !(11):rrr:100 T2RPNTLVWZ0RS rT+1,M.ib ; AMX_TRANSPOSE,AMX_MOVRS ; APX|TMM16...31
EVEX.128.66.MAP5.W0 F8 !(11):rrr:100 T2RPNTLVWZ1RS rT+1,M.ib ; AMX_TRANSPOSE,AMX_MOVRS ; APX|TMM16...31
EVEX.128.NP.MAP5.W0 F9 !(11):rrr:100 T2RPNTLVWZ0RST1 rT+1,M.ib ; AMX_TRANSPOSE,AMX_MOVRS ; APX|TMM16...31
EVEX.128.66.MAP5.W0 F9 !(11):rrr:100 T2RPNTLVWZ1RST1 rT+1,M.ib ; AMX_TRANSPOSE,AMX_MOVRS ; APX|TMM16...31
;--- newly added EVEX variants for TMM16...31 -----------------------------------------------------------------------------------------------------------------------
EVEX.128.NP.MAP5.W0 FD 11:rrr:bbb TDPBF8PS rT,mT,vT ; AMX_FP8
EVEX.128.66.MAP5.W0 FD 11:rrr:bbb TDPHF8PS rT,mT,vT ; AMX_FP8
EVEX.128.F3.MAP5.W0 FD 11:rrr:bbb TDPHBF8PS rT,mT,vT ; AMX_FP8
EVEX.128.F2.MAP5.W0 FD 11:rrr:bbb TDPBHF8PS rT,mT,vT ; AMX_FP8
EVEX.128.NP.0F38.W0 5D 11:rrr:bbb TDPBUUD rT,mT,vT ; AMX_INT8 ; note: moved from opc=5E
EVEX.128.66.0F38.W0 5D 11:rrr:bbb TDPBUSD rT,mT,vT ; AMX_INT8 ; note: moved from opc=5E
EVEX.128.F3.0F38.W0 5D 11:rrr:bbb TDPBSUD rT,mT,vT ; AMX_INT8 ; note: moved from opc=5E
EVEX.128.F2.0F38.W0 5D 11:rrr:bbb TDPBSSD rT,mT,vT ; AMX_INT8 ; note: moved from opc=5E
EVEX.128.F3.0F38.W0 5B 11:rrr:bbb TDPBF16PS rT,mT,vT ; AMX_BF16 ; note: moved from opc=5C
EVEX.128.F2.0F38.W0 5B 11:rrr:bbb TDPFP16PS rT,mT,vT ; AMX_FP16 ; note: moved from opc=5C
EVEX.128.NP.0F38.W0 6B 11:rrr:bbb TCONJTCMMIMFP16PS rT,mT,vT ; AMX_COMPLEX,AMX_TRANSPOSE
EVEX.128.66.0F38.W0 6B 11:rrr:bbb TCONJTFP16 rT,mT ; AMX_COMPLEX,AMX_TRANSPOSE ; yes, 2-op
EVEX.128.F3.0F38.W0 6B 11:rrr:bbb TTCMMRLFP16PS rT,mT,vT ; AMX_COMPLEX,AMX_TRANSPOSE
EVEX.128.F2.0F38.W0 6B 11:rrr:bbb TTCMMIMFP16PS rT,mT,vT ; AMX_COMPLEX,AMX_TRANSPOSE
EVEX.128.NP.0F38.W0 6C 11:rrr:bbb TCMMRLFP16PS rT,mT,vT ; AMX_COMPLEX
EVEX.128.66.0F38.W0 6C 11:rrr:bbb TCMMIMFP16PS rT,mT,vT ; AMX_COMPLEX
EVEX.128.F3.0F38.W0 6C 11:rrr:bbb TTDPBF16PS rT,mT,vT ; AMX_BF16,AMX_TRANSPOSE
EVEX.128.F2.0F38.W0 6C 11:rrr:bbb TTDPFP16PS rT,mT,vT ; AMX_FP16,AMX_TRANSPOSE
EVEX.128.NP.0F38.W0 48 11:rrr:bbb TTMMULTF32PS rT,mT,vT ; AMX_TF32,AMX_TRANSPOSE
EVEX.128.66.0F38.W0 48 11:rrr:bbb TMMULTF32PS rT,mT,vT ; AMX_TF32
EVEX.128.F3.0F38.W0 5F 11:rrr:bbb TTRANSPOSED rT,mT ; AMX_TRANSPOSE ; yes, 2-op
;--------------------------------------------------------------------------------------------------------------------------------------------------------------------
;
; EOF
More information about the Binutils
mailing list