[binutils-gdb] x86: Disable AMX-TF32 by default

Haochen Jiang via Binutils-cvs <[email protected]> Thu, 2 Jul 2026 02:43:00 +0000 (GMT)
Newsgroups gmane.comp.gnu.binutils.cvs
Message-ID <[email protected]>
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=ddd9b65d036ac0356edac981f9089486923caed2

commit ddd9b65d036ac0356edac981f9089486923caed2
Author: Haochen Jiang <[email protected]>
Date:   Tue Jun 30 15:58:35 2026 +0800

    x86: Disable AMX-TF32 by default
    
    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.
    
    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.

Diff:
---
 gas/testsuite/gas/i386/x86-64-amx-tf32-inval.l     |  2 +-
 gas/testsuite/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 +-
 7 files changed, 18 insertions(+), 14 deletions(-)

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",