================
@@ -105,6 +108,113 @@ to specify the target triple:
*<empty>* Default.
============
==============================================================
+.. _amdgpu-subarch-compatibility:
+
+Subarchitecture Compatibility
+-----------------------------
+
+For the ``amdgpu`` architecture the ISA version is encoded in the
+triple's *SubArch* component. Every unique ISA has its own *minor
+subarch* (for example ``amdgpu9.00`` for ``gfx900``). ``amdgcn`` is a
+legacy alias of ``amdgpu`` (see :ref:`amdgpu-architecture-table`)
+which does not support subarches.
+
+Minor subarches are grouped into *major subarches* that name a family
+of largely compatible ISA versions (for example ``amdgpu9``). A major
+subarch corresponds to a :ref:`generic processor
+<amdgpu-generic-processor-table>` when one exists for that family; the
+remaining major subarches are placeholders for families that do not
+yet have a generic target for code generation.
+
+Two subarches are considered *compatible* when:
+
+* they are identical, or
+* one of them is the major subarch of the family that the other belongs to.
+
+In particular, two distinct *minor* subarches are never compatible
+with each other, even within the same family (for example
+``amdgpu9.00`` and ``amdgpu9.06`` are not compatible). A minor subarch
+is only compatible with its own major subarch, and a major subarch is
+compatible with itself and every minor subarch it covers. A triple
+with no subarch (``amdgpu``) is treated as compatible with anything,
+as a backwards-compatibility allowance. When linking modules with
+compatible-but-unequal subarches, the more specific (minor) subarch is
+selected for the merged module.
+
+The following table lists each major subarch and the minor subarches it covers.
+The *Default Generic Processor* column gives the generic processor that a major
+subarch selects by default for code generation; this is the corresponding
+generic processor for families that have one (see
+:ref:`amdgpu-generic-processor-table`). Major subarches listed as *(none)* are
+placeholders for families that do not yet have a generic target.
+
+ .. list-table:: AMDGPU Major SubArchitecture Coverage
+ :name: amdgpu-major-subarch-table
+ :header-rows: 1
+
+ * - Major SubArch
+ - Default Processor
+ - Covered SubArches (Processor)
+ * - ``amdgpu6``
+ - *(none)*
+ - ``amdgpu6.00`` (``gfx600``), ``amdgpu6.01`` (``gfx601``),
+ ``amdgpu6.02`` (``gfx602``)
+ * - ``amdgpu7``
+ - *(none)*
+ - ``amdgpu7.00`` (``gfx700``), ``amdgpu7.01`` (``gfx701``),
+ ``amdgpu7.02`` (``gfx702``), ``amdgpu7.03`` (``gfx703``),
+ ``amdgpu7.04`` (``gfx704``), ``amdgpu7.05`` (``gfx705``)
+ * - ``amdgpu8``
+ - *(none)*
+ - ``amdgpu8.01`` (``gfx801``), ``amdgpu8.02`` (``gfx802``),
+ ``amdgpu8.03`` (``gfx803``), ``amdgpu8.05`` (``gfx805``)
+ * - ``amdgpu8.10``
+ - *(none)*
+ - ``amdgpu8.10`` (``gfx810``)
+ * - ``amdgpu9``
+ - ``gfx9-generic``
+ - ``amdgpu9.00`` (``gfx900``), ``amdgpu9.02`` (``gfx902``),
+ ``amdgpu9.04`` (``gfx904``), ``amdgpu9.06`` (``gfx906``),
+ ``amdgpu9.09`` (``gfx909``), ``amdgpu9.0c`` (``gfx90c``)
+ * - ``amdgpu9.08``
+ - *(none)*
+ - ``amdgpu9.08`` (``gfx908``)
+ * - ``amdgpu9.0a``
+ - *(none)*
+ - ``amdgpu9.0a`` (``gfx90a``)
+ * - ``amdgpu9.4``
+ - ``gfx9-4-generic``
+ - ``amdgpu9.42`` (``gfx942``), ``amdgpu9.50`` (``gfx950``)
----------------
ro-i wrote:
why is amdgpu9.50/gfx950 part of amdgpu9.4/gfx9-4-generic?
https://github.com/llvm/llvm-project/pull/206480
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits