x86: Disable AMX-TF32 by default
Checks
Commit Message
Hi all,
AMX-TF32 got depublished in ISE062. Just like AMX-TRANSPOSE, we
will keep the AMX-TF32 support for now in case there are x86 vendors
want to utilize the feature. AMX-TF32 will not show up on any
Intel/AMD hardware. Also in foreseeable future, no hardware will
support AMX-TF32, we will disable it by default. For testcases,
we will simply add .arch .amx_tf32 to keep the original test
intuition.
Tested on x86-64. Ok for trunk?
Thx,
Haochen
gas/ChangeLog:
* testsuite/gas/i386/x86-64-amx-tf32.s: Add .amx_tf32.
* testsuite/gas/i386/x86-64-amx-tf32-inval.s: Ditto.
* testsuite/gas/i386/x86-64-amx-transpose.s: Ditto.
* testsuite/gas/i386/x86-64-amx-transpose-inval.s: Ditto.
* testsuite/gas/i386/x86-64-amx-tf32-inval.l: Adjust line
number.
* testsuite/gas/i386/x86-64-amx-transpose-inval.l: Ditto.
opcodes/ChangeLog:
* i386-gen.c: Disable AMX-TF32 by default.
* i386-init.h: Regenerated.
---
.../gas/i386/x86-64-amx-tf32-inval.l | 2 +-
.../gas/i386/x86-64-amx-tf32-inval.s | 1 +
gas/testsuite/gas/i386/x86-64-amx-tf32.s | 1 +
.../gas/i386/x86-64-amx-transpose-inval.l | 24 +++++++++----------
.../gas/i386/x86-64-amx-transpose-inval.s | 1 +
gas/testsuite/gas/i386/x86-64-amx-transpose.s | 1 +
opcodes/i386-gen.c | 2 +-
opcodes/i386-init.h | 2 +-
8 files changed, 19 insertions(+), 15 deletions(-)
Comments
On 30.06.2026 10:11, Haochen Jiang wrote:
> AMX-TF32 got depublished in ISE062. Just like AMX-TRANSPOSE, we
> will keep the AMX-TF32 support for now in case there are x86 vendors
> want to utilize the feature. AMX-TF32 will not show up on any
> Intel/AMD hardware. Also in foreseeable future, no hardware will
> support AMX-TF32, we will disable it by default. For testcases,
> we will simply add .arch .amx_tf32 to keep the original test
> intuition.
>
> Tested on x86-64. Ok for trunk?
Yes.
Jan
@@ -1,4 +1,4 @@
.* Assembler messages:
-.*:5: Error: all tmm registers must be distinct for `tmmultf32ps'
.*:6: Error: all tmm registers must be distinct for `tmmultf32ps'
.*:7: Error: all tmm registers must be distinct for `tmmultf32ps'
+.*:8: Error: all tmm registers must be distinct for `tmmultf32ps'
@@ -1,6 +1,7 @@
# Check Illegal 64bit AMX-TF32 instructions
.text
+ .arch .amx_tf32
_start:
tmmultf32ps %tmm1, %tmm1, %tmm2
tmmultf32ps %tmm1, %tmm2, %tmm1
@@ -1,6 +1,7 @@
# Check 64bit AMX-TF32 instructions
.text
+ .arch .amx_tf32
_start:
tmmultf32ps %tmm4, %tmm5, %tmm6
tmmultf32ps %tmm1, %tmm2, %tmm3
@@ -4,16 +4,15 @@
.*:7: Error: `t2rpntlvwz1rs' is not supported on `x86_64'
.*:8: Error: `t2rpntlvwz1rst1' is not supported on `x86_64'
.*:9: Error: `ttmmultf32ps' is not supported on `x86_64'
-.*:13: Error: all tmm registers must be distinct for `ttdpbf16ps'
.*:14: Error: all tmm registers must be distinct for `ttdpbf16ps'
.*:15: Error: all tmm registers must be distinct for `ttdpbf16ps'
-.*:16: Error: all tmm registers must be distinct for `ttdpfp16ps'
+.*:16: Error: all tmm registers must be distinct for `ttdpbf16ps'
.*:17: Error: all tmm registers must be distinct for `ttdpfp16ps'
.*:18: Error: all tmm registers must be distinct for `ttdpfp16ps'
-.*:19: Error: all tmm registers must be distinct for `ttmmultf32ps'
+.*:19: Error: all tmm registers must be distinct for `ttdpfp16ps'
.*:20: Error: all tmm registers must be distinct for `ttmmultf32ps'
.*:21: Error: all tmm registers must be distinct for `ttmmultf32ps'
-.*:22: Error: `\(%rip\)' cannot be used here
+.*:22: Error: all tmm registers must be distinct for `ttmmultf32ps'
.*:23: Error: `\(%rip\)' cannot be used here
.*:24: Error: `\(%rip\)' cannot be used here
.*:25: Error: `\(%rip\)' cannot be used here
@@ -21,11 +20,12 @@
.*:27: Error: `\(%rip\)' cannot be used here
.*:28: Error: `\(%rip\)' cannot be used here
.*:29: Error: `\(%rip\)' cannot be used here
-.*:30: Warning: operand 2 `%tmm1' implicitly denotes `%tmm0' to `%tmm1' group in `t2rpntlvwz0'
-.*:31: Warning: operand 2 `%tmm3' implicitly denotes `%tmm2' to `%tmm3' group in `t2rpntlvwz0t1'
-.*:32: Warning: operand 2 `%tmm5' implicitly denotes `%tmm4' to `%tmm5' group in `t2rpntlvwz1'
-.*:33: Warning: operand 2 `%tmm7' implicitly denotes `%tmm6' to `%tmm7' group in `t2rpntlvwz1t1'
-.*:34: Warning: operand 2 `%tmm1' implicitly denotes `%tmm0' to `%tmm1' group in `t2rpntlvwz0rs'
-.*:35: Warning: operand 2 `%tmm3' implicitly denotes `%tmm2' to `%tmm3' group in `t2rpntlvwz0rst1'
-.*:36: Warning: operand 2 `%tmm5' implicitly denotes `%tmm4' to `%tmm5' group in `t2rpntlvwz1rs'
-.*:37: Warning: operand 2 `%tmm7' implicitly denotes `%tmm6' to `%tmm7' group in `t2rpntlvwz1rst1'
+.*:30: Error: `\(%rip\)' cannot be used here
+.*:31: Warning: operand 2 `%tmm1' implicitly denotes `%tmm0' to `%tmm1' group in `t2rpntlvwz0'
+.*:32: Warning: operand 2 `%tmm3' implicitly denotes `%tmm2' to `%tmm3' group in `t2rpntlvwz0t1'
+.*:33: Warning: operand 2 `%tmm5' implicitly denotes `%tmm4' to `%tmm5' group in `t2rpntlvwz1'
+.*:34: Warning: operand 2 `%tmm7' implicitly denotes `%tmm6' to `%tmm7' group in `t2rpntlvwz1t1'
+.*:35: Warning: operand 2 `%tmm1' implicitly denotes `%tmm0' to `%tmm1' group in `t2rpntlvwz0rs'
+.*:36: Warning: operand 2 `%tmm3' implicitly denotes `%tmm2' to `%tmm3' group in `t2rpntlvwz0rst1'
+.*:37: Warning: operand 2 `%tmm5' implicitly denotes `%tmm4' to `%tmm5' group in `t2rpntlvwz1rs'
+.*:38: Warning: operand 2 `%tmm7' implicitly denotes `%tmm6' to `%tmm7' group in `t2rpntlvwz1rst1'
@@ -9,6 +9,7 @@ _start:
ttmmultf32ps %tmm1, %tmm2, %tmm3
.arch .amx_transpose
+ .arch .amx_tf32
_transpose:
ttdpbf16ps %tmm1, %tmm1, %tmm2
ttdpbf16ps %tmm1, %tmm2, %tmm1
@@ -1,6 +1,7 @@
# Check 64bit AMX-TRANSPOSE instructions
.arch .amx_transpose
+ .arch .amx_tf32
.text
_start:
ttdpbf16ps %tmm4, %tmm5, %tmm6
@@ -47,7 +47,7 @@ typedef struct dependency
static const dependency isa_dependencies[] =
{
{ "UNKNOWN",
- "~(IAMCU|MPX|AMX_TRANSPOSE)" },
+ "~(IAMCU|MPX|AMX_TRANSPOSE|AMX_TF32)" },
{ "GENERIC32",
"386" },
{ "GENERIC64",