[clang] [flang] [lld] [llvm] [AMDGPU] Introduce GFX9/10.1/10.3/11 Generic Targets (PR #76955)

Pierre van Houtryve via cfe-commits cfe-commits at lists.llvm.org
Fri Jan 12 06:49:36 PST 2024


================
@@ -520,6 +520,106 @@ Every processor supports every OS ABI (see :ref:`amdgpu-os`) with the following
 
      =========== =============== ============ ===== ================= =============== =============== ======================
 
+Generic processors also exist. They group multiple processors into one,
+allowing to build code once and run it on multiple targets at the cost
+of less features being available.
+
+Generic processors are only available on Code Object V6 and up.
+
+  .. table:: AMDGPU Generic Processors
+     :name: amdgpu-generic-processor-table
+
+     ==================== ============== ================= =================================
+     Processor             Target        Supported         Target
+                           Triple        Processors        Features
+                           Architecture                    Restrictions
+
+
+
+
+
+
+
+
+     ==================== ============== ================= =================================
+     ``gfx9-generic``     ``amdgcn``     - ``gfx900``      - ``v_mad_mix`` instructions
+                                         - ``gfx902``        are not available on
+                                         - ``gfx904``        ``gfx900``, ``gfx902``,
+                                         - ``gfx906``        ``gfx909``, ``gfx90c``
+                                         - ``gfx909``      - ``v_fma_mix`` instructions
+                                         - ``gfx90c``        are not available on ``gfx904``
+                                                           - sramecc is not available on
+                                                             ``gfx906``
+                                                           - The following instructions
+                                                             are not available on ``gfx906``:
+
+                                                             - ``v_fmac_f32``
+                                                             - ``v_xnor_b32``
+                                                             - ``v_dot4_i32_i8``
+                                                             - ``v_dot8_i32_i4``
+                                                             - ``v_dot2_i32_i16``
+                                                             - ``v_dot2_u32_u16``
+                                                             - ``v_dot4_u32_u8``
+                                                             - ``v_dot8_u32_u4``
+                                                             - ``v_dot2_f32_f16``
+
+
+     ``gfx10.1-generic``  ``amdgcn``     - ``gfx1010``     - The following instructions are
+                                         - ``gfx1011``       not available on ``gfx1011``
+                                         - ``gfx1012``       and ``gfx1012``
+                                         - ``gfx1013``
+                                                             - ``v_dot4_i32_i8``
----------------
Pierre-vh wrote:

gfx1010 and gfx1012 are indeed not identical, but gfx1011 and gfx1012 are:
```
def FeatureISAVersion10_1_0 : FeatureSet<
  !listconcat(FeatureISAVersion10_1_Common.Features,
    [])>;

def FeatureISAVersion10_1_2 : FeatureSet<
  !listconcat(FeatureISAVersion10_1_Common.Features,
    [FeatureDot1Insts,
     FeatureDot2Insts,
     FeatureDot5Insts,
     FeatureDot6Insts,
     FeatureDot7Insts,
     FeatureDot10Insts])>;
```



https://github.com/llvm/llvm-project/pull/76955


More information about the cfe-commits mailing list