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?


Grüße
 Thomas

Reply via email to