Skip to content

Commit 62f5f69

Browse files
InstLatx64maciejwieczorretman
authored andcommitted
AMX-COMPLEX support
-- TCMMIMFP16PS, TCMMRLFP16PS instructions -- AMX.asm fix: Similar to GATHER instructions, 3-operand AMX instructions cannot have the same operand more than once Checked with XED version: [v2025.06.08]
1 parent 8f47ba7 commit 62f5f69

File tree

3 files changed

+20
-10
lines changed

3 files changed

+20
-10
lines changed

test/amx.asm

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
bits 64
22

3-
%macro amx 1
3+
%macro amx 3
44
%define treg tmm %+ %1
5+
%define treg2 tmm %+ %2
6+
%define treg3 tmm %+ %3
57

68
ldtilecfg [rsi]
79
sttilecfg [rdi]
@@ -16,11 +18,14 @@
1618
tileloaddt1 treg, [rax,rdx]
1719
tileloaddt1 treg, [rax,rdx*2]
1820

19-
tdpbf16ps treg, treg, treg
20-
tdpbssd treg, treg, treg
21-
tdpbusd treg, treg, treg
22-
tdpbsud treg, treg, treg
23-
tdpbuud treg, treg, treg
21+
tdpbf16ps treg, treg2, treg3
22+
tdpbssd treg, treg2, treg3
23+
tdpbusd treg, treg2, treg3
24+
tdpbsud treg, treg2, treg3
25+
tdpbuud treg, treg2, treg3
26+
tdpfp16ps treg, treg2, treg3
27+
tcmmimfp16ps treg, treg2, treg3
28+
tcmmrlfp16ps treg, treg2, treg3
2429

2530
tilestored [rax], treg
2631
tilestored [rax,rdx], treg
@@ -30,7 +35,11 @@
3035
%endmacro
3136

3237
%assign n 0
38+
%assign m 1
39+
%assign l 2
3340
%rep 8
34-
amx n
35-
%assign n n+1
41+
amx n, m, l
42+
%assign n ((n+1) % 8)
43+
%assign m ((m+1) % 8)
44+
%assign l ((l+1) % 8)
3645
%endrep

x86/iflags.ph

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,7 @@ if_("AMXTILE", "AMX tile configuration instructions");
157157
if_("AMXBF16", "AMX bfloat16 multiplication");
158158
if_("AMXFP16", "AMX FP16 multiplication");
159159
if_("AMXINT8", "AMX 8-bit integer multiplication");
160+
if_("AMXCOMPLEX", "AMX float16 complex multiplication");
160161
if_("FRED", "Flexible Return and Exception Delivery (FRED)");
161162
if_("RAOINT", "Remote atomic operations (RAO-INT)");
162163
if_("UINTR", "User interrupts");

x86/insns.dat

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5420,6 +5420,8 @@ LDTILECFG mem512 [m: vex+.128.np.0f38.w0 49 /0] AMXTILE,SZ,LONG
54205420
STTILECFG mem512 [m: vex+.128.66.0f38.w0 49 /0] AMXTILE,SZ,LONG
54215421
TDPBF16PS tmmreg,tmmreg,tmmreg [rmv: vex.128.f3.0f38.w0 5c /r] AMXBF16,LONG
54225422
TDPFP16PS tmmreg,tmmreg,tmmreg [rmv: vex.128.f2.0f38.w0 5c /r] AMXFP16,LONG
5423+
TCMMIMFP16PS tmmreg,tmmreg,tmmreg [rmv: vex.128.66.0f38.w0 6c /r] AMXCOMPLEX,LONG
5424+
TCMMRLFP16PS tmmreg,tmmreg,tmmreg [rmv: vex.128.np.0f38.w0 6c /r] AMXCOMPLEX,LONG
54235425
TDPBSSD tmmreg,tmmreg,tmmreg [rmv: vex.128.f2.0f38.w0 5e /r] AMXINT8,LONG
54245426
TDPBSUD tmmreg,tmmreg,tmmreg [rmv: vex.128.f3.0f38.w0 5e /r] AMXINT8,LONG
54255427
TDPBUSD tmmreg,tmmreg,tmmreg [rmv: vex.128.66.0f38.w0 5e /r] AMXINT8,LONG
@@ -5442,8 +5444,6 @@ T2RPNTLVWZ0RST1 tmmreg,mem [rm: vex.128.np.map5.w0 f9 /r] FUTURE,SIB
54425444
T2RPNTLVWZ1RS tmmreg,mem [rm: vex.128.66.map5.w0 f8 /r] FUTURE,SIB
54435445
T2RPNTLVWZ1RST1 tmmreg,mem [rm: vex.128.66.map5.w0 f9 /r] FUTURE,SIB
54445446

5445-
TCMMIMFP16PS tmmreg,tmmreg,tmmreg [rmv: vex.128.66.0f38.w0 6c /r] FUTURE
5446-
TCMMRLFP16PS tmmreg,tmmreg,tmmreg [rmv: vex.128.np.0f38.w0 6c /r] FUTURE
54475447
TCONJTCMMIMFP16PS tmmreg,tmmreg,tmmreg [rmv: vex.128.np.0f38.w0 6b /r] FUTURE
54485448
TCONJTFP16 tmmreg,tmmreg [rm: vex.128.66.0f38.w0 6b /r] FUTURE
54495449
TCVTROWD2PS zmmreg,tmmreg,reg32 [rmv: evex.512.f3.0f38.w0 4a /r] FUTURE

0 commit comments

Comments
 (0)