On 19/01/2026 09:24, Thomas Schwinge wrote:
Hi!

On 2025-11-28T14:04:59+0100, Tobias Burnus <[email protected]> wrote:
GCN: Use generic instead of specific arch for default-built multilibs

--- a/gcc/doc/install.texi
+++ b/gcc/doc/install.texi
@@ -4084,16 +4084,17 @@ supported ISAs as multilib; use 
@code{--with-multilib-list=} to tailor the built
  multilibs.  Note that mixing ISAs in the same binary is not supported and 
gives
  a linker error.
-By default, multilib support is built for @code{gfx900}, @code{gfx906},
-@code{gfx908}, @code{gfx90a}, @code{gfx90c}, @code{gfx1030}, @code{gfx1036},
-@code{gfx1100} and @code{gfx1103}.  The default multilib configuration
-requires LLVM 15 or newer.  LLVM 13.0.1 or LLVM 14 can be used by specifying
-a @code{--with-multilib-list=} that does not list any GFX 11 device nor
-@code{gfx1036}.  At least LLVM 16 is required for @code{gfx1150} and
-@code{gfx1151}, LLVM 18 for @code{gfx942}, LLVM 19 for the generic
+By default, multilib support is built for @code{gfx908}, @code{gfx90a},
  @code{gfx9-generic}, @code{gfx9-4-generic}, @code{gfx10-3-generic}, and
-@code{gfx11-generic} targets and for @code{gfx1152}, while LLVM 20 is required
-for @code{gfx950} and @code{gfx1153}.
+@code{gfx11-generic}, which covers all supported archs.  The default multilib
+configuration requires LLVM 19 or newer.  LLVM 13.0.1 or LLVM 14 can be used by
+specifying a @code{--with-multilib-list=} that only lists GFX9 or GFX10-3
+devices, while LLVM 15 is required for GFX 11 device and @code{gfx1036}.
+At least LLVM 16 is required for @code{gfx1150} and @code{gfx1151},
+LLVM 18 for @code{gfx942}, LLVM 19 for the generic @code{gfx9-generic},
+@code{gfx9-4-generic}, @code{gfx10-3-generic}, and @code{gfx11-generic}
+targets and for @code{gfx1152}, while LLVM 20 is required for
+@code{gfx950} and @code{gfx1153}.

gcc-16/changes.html: Update AMD GPU (gcn) for updated multilib support

--- a/htdocs/gcc-16/changes.html
+++ b/htdocs/gcc-16/changes.html
@@ -229,9 +229,25 @@ for general information.</p>
  <ul>
    <li>Experimental support for AMD Instinct MI300 (<code>gfx942</code>) 
devices
        has been added, including the generic <code>gfx9-4-generic</code> and
-      mostly compatible <code>gfx950</code>. Consult GCC's
-      <a href="https://gcc.gnu.org/install/specific.html#amdgcn-x-amdhsa";>
-      installation notes</a> on how to enable multilib support for them.</li>
+      mostly compatible <code>gfx950</code>.</li>
+  <li>By default, the following multilibs are now built: <code>gfx908</code>,
+      <code>gfx90a</code>, <code>gfx9-generic</code>,
+      <code>gfx9-4-generic</code>, <code>gfx10-3-generic</code>, and
+      <code>gfx11-generic</code>. Multilibs for specific devices are no longer
+      built by default if a generic arch exists. Note:
+      <ul>
+        <li>When compiling for a specific arch and the multilib only exists
+            for the associated generic arch, GCC's error message suggests
+            the command-line option to do so.</li>
+        <li>Generic architectures require ROCm 6.4.0 or newer.</li>
+        <li>The new default-built set of multilibs now requires the assembler
+            and linker of LLVM 19 or newer.</li>
+        <li>Consult GCC'sm
+            <a 
href="https://gcc.gnu.org/install/specific.html#amdgcn-x-amdhsa";>
+            AMD installation notes</a> and
+            <a 
href="https://gcc.gnu.org/install/configure.html#:~:text=%2D%2Dwith%2Dmultilib%2Dlist";>
+            configuration notes</a> for setting the multilibs to be build.</li>
+      </ul></li>

I found that LLVM 19.1.7 (via Guix) doesn't support 'gfx9-4-generic':

     [...]
     checking for suffix of object files... configure: error: in 
`[...]/build-gcc-offload-amdgcn-amdhsa/amdgcn-amdhsa/gfx9-4-generic/libgcc':
     configure: error: cannot compute suffix of object files: cannot compile
     See `config.log' for more details
     make[1]: *** [Makefile:14238: configure-target-libgcc] Error 1
     [...]

     'gfx9-4-generic' is not a recognized processor for this target (ignoring 
processor)
     'gfx9-4-generic' is not a recognized processor for this target (ignoring 
processor)
     /tmp/cc5g6mSR.s:1:17: error: .amdgcn_target directive's target id 
amdgcn-unknown-amdhsa--gfx9-4-generic does not match the specified target id 
amdgcn-unknown-amdhsa--gfx000
             .amdgcn_target "amdgcn-unknown-amdhsa--gfx9-4-generic"
                            ^
     [...]

Switching to LLVM 20.1.8 (via Guix), it builds.

Do we update the LLVM requirement, or change the (default) configuration?

LLVM 20 is nearly a year old, so I think we change the documented requirement.

Actually, I've been thinking we should document the minimum ROCm version (6.4.0, according to the release notes), because that's the most convenient source of LLVM for our users, and I suspect that that compiler supports slightly more than its LLVM version (19.0.0) would usually.

Andrew

Reply via email to