x86: Disable AMX-TF32 by default

Message ID 20260630081126.3508651-1-haochen.jiang@intel.com
State New
Headers
Series x86: Disable AMX-TF32 by default |

Checks

Context Check Description
linaro-tcwg-bot/tcwg_binutils_build--master-aarch64 success Build passed
linaro-tcwg-bot/tcwg_binutils_build--master-arm success Build passed
linaro-tcwg-bot/tcwg_binutils_check--master-aarch64 fail Patch failed to apply
linaro-tcwg-bot/tcwg_binutils_check--master-arm fail Patch failed to apply

Commit Message

Jiang, Haochen June 30, 2026, 8:11 a.m. UTC
  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

Jan Beulich June 30, 2026, 9:26 a.m. UTC | #1
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
  

Patch

diff --git a/gas/testsuite/gas/i386/x86-64-amx-tf32-inval.l b/gas/testsuite/gas/i386/x86-64-amx-tf32-inval.l
index 2ac207f90ca..81db933e346 100644
--- a/gas/testsuite/gas/i386/x86-64-amx-tf32-inval.l
+++ b/gas/testsuite/gas/i386/x86-64-amx-tf32-inval.l
@@ -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'
diff --git a/gas/testsuite/gas/i386/x86-64-amx-tf32-inval.s b/gas/testsuite/gas/i386/x86-64-amx-tf32-inval.s
index 7357c3c392f..c7b4538e300 100644
--- a/gas/testsuite/gas/i386/x86-64-amx-tf32-inval.s
+++ b/gas/testsuite/gas/i386/x86-64-amx-tf32-inval.s
@@ -1,6 +1,7 @@ 
 # Check Illegal 64bit AMX-TF32 instructions
 
 	.text
+	.arch .amx_tf32
 _start:
 	tmmultf32ps	%tmm1, %tmm1, %tmm2
 	tmmultf32ps	%tmm1, %tmm2, %tmm1
diff --git a/gas/testsuite/gas/i386/x86-64-amx-tf32.s b/gas/testsuite/gas/i386/x86-64-amx-tf32.s
index bb82380da48..c7a4667b04f 100644
--- a/gas/testsuite/gas/i386/x86-64-amx-tf32.s
+++ b/gas/testsuite/gas/i386/x86-64-amx-tf32.s
@@ -1,6 +1,7 @@ 
 # Check 64bit AMX-TF32 instructions
 
 	.text
+	.arch .amx_tf32
 _start:
 	tmmultf32ps	%tmm4, %tmm5, %tmm6
 	tmmultf32ps	%tmm1, %tmm2, %tmm3
diff --git a/gas/testsuite/gas/i386/x86-64-amx-transpose-inval.l b/gas/testsuite/gas/i386/x86-64-amx-transpose-inval.l
index 02ad60d8343..406be53fa2c 100644
--- a/gas/testsuite/gas/i386/x86-64-amx-transpose-inval.l
+++ b/gas/testsuite/gas/i386/x86-64-amx-transpose-inval.l
@@ -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'
diff --git a/gas/testsuite/gas/i386/x86-64-amx-transpose-inval.s b/gas/testsuite/gas/i386/x86-64-amx-transpose-inval.s
index 7bbc1babb17..a2d8d3818b4 100644
--- a/gas/testsuite/gas/i386/x86-64-amx-transpose-inval.s
+++ b/gas/testsuite/gas/i386/x86-64-amx-transpose-inval.s
@@ -9,6 +9,7 @@  _start:
 	ttmmultf32ps	%tmm1, %tmm2, %tmm3
 
 	.arch .amx_transpose
+	.arch .amx_tf32
 _transpose:
 	ttdpbf16ps	%tmm1, %tmm1, %tmm2
 	ttdpbf16ps	%tmm1, %tmm2, %tmm1
diff --git a/gas/testsuite/gas/i386/x86-64-amx-transpose.s b/gas/testsuite/gas/i386/x86-64-amx-transpose.s
index ef4a72a0cae..885a1a68391 100644
--- a/gas/testsuite/gas/i386/x86-64-amx-transpose.s
+++ b/gas/testsuite/gas/i386/x86-64-amx-transpose.s
@@ -1,6 +1,7 @@ 
 # Check 64bit AMX-TRANSPOSE instructions
 
 	.arch .amx_transpose
+	.arch .amx_tf32
 	.text
 _start:
 	ttdpbf16ps	%tmm4, %tmm5, %tmm6
diff --git a/opcodes/i386-gen.c b/opcodes/i386-gen.c
index be580d48a18..dd8f936edcd 100644
--- a/opcodes/i386-gen.c
+++ b/opcodes/i386-gen.c
@@ -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",