[llvm] 89eb732 - [AMDGPU] Add VDSDIR encoding to gfx13 (#181620)

via llvm-commits llvm-commits at lists.llvm.org
Tue Feb 17 00:25:18 PST 2026


Author: Mariusz Sikora
Date: 2026-02-17T09:25:14+01:00
New Revision: 89eb7329bfad4b5096edee93fcf907542704ce7b

URL: https://github.com/llvm/llvm-project/commit/89eb7329bfad4b5096edee93fcf907542704ce7b
DIFF: https://github.com/llvm/llvm-project/commit/89eb7329bfad4b5096edee93fcf907542704ce7b.diff

LOG: [AMDGPU] Add VDSDIR encoding to gfx13 (#181620)

Added: 
    llvm/test/MC/AMDGPU/gfx13_asm_vdsdir.s
    llvm/test/MC/AMDGPU/gfx13_asm_vdsdir_alias.s

Modified: 
    llvm/lib/Target/AMDGPU/DSDIRInstructions.td

Removed: 
    


################################################################################
diff  --git a/llvm/lib/Target/AMDGPU/DSDIRInstructions.td b/llvm/lib/Target/AMDGPU/DSDIRInstructions.td
index d9d7a650dfc21..09053b324e063 100644
--- a/llvm/lib/Target/AMDGPU/DSDIRInstructions.td
+++ b/llvm/lib/Target/AMDGPU/DSDIRInstructions.td
@@ -177,22 +177,26 @@ defm LDS_PARAM_LOAD : DSDIR_Real_gfx11<0x0>;
 defm LDS_DIRECT_LOAD : DSDIR_Real_gfx11<0x1>;
 
 //===----------------------------------------------------------------------===//
-// GFX12+
+// GFX12, GFX13
 //===----------------------------------------------------------------------===//
 
-multiclass DSDIR_Real_gfx12<bits<2> op> {
+multiclass DSDIR_Real<GFXGen Gen, bits<2> op> {
   defvar lds = !cast<DSDIR_Pseudo>(NAME);
-  def _gfx12 : DSDIR_Real<lds, lds.InOperandList,
-                          VDSDIR_getAsm<lds.is_direct>.ret,
-                          SIEncodingFamily.GFX12>,
-               VDSDIRe<op, lds.is_direct> {
-    let AssemblerPredicate = isGFX12Plus;
-    let DecoderNamespace = "GFX12";
+  def Gen.Suffix : DSDIR_Real<lds, lds.InOperandList,
+                              VDSDIR_getAsm<lds.is_direct>.ret,
+                              Gen.Subtarget>,
+                   VDSDIRe<op, lds.is_direct> {
+    let AssemblerPredicate = Gen.AssemblerPredicate;
+    let DecoderNamespace = Gen.DecoderNamespace;
   }
 }
 
-defm DS_PARAM_LOAD : DSDIR_Real_gfx12<0x0>;
-defm DS_DIRECT_LOAD : DSDIR_Real_gfx12<0x1>;
+multiclass DSDIR_Real_gfx12_gfx13<bits<2> op> :
+  DSDIR_Real<GFX12Gen, op>,
+  DSDIR_Real<GFX13Gen, op>;
+
+defm DS_PARAM_LOAD  : DSDIR_Real_gfx12_gfx13<0x0>;
+defm DS_DIRECT_LOAD : DSDIR_Real_gfx12_gfx13<0x1>;
 
 let SubtargetPredicate = isGFX12Plus in {
   def : AMDGPUMnemonicAlias<"lds_param_load", "ds_param_load">;

diff  --git a/llvm/test/MC/AMDGPU/gfx13_asm_vdsdir.s b/llvm/test/MC/AMDGPU/gfx13_asm_vdsdir.s
new file mode 100644
index 0000000000000..e9d26a43164b4
--- /dev/null
+++ b/llvm/test/MC/AMDGPU/gfx13_asm_vdsdir.s
@@ -0,0 +1,39 @@
+// NOTE: Assertions have been autogenerated by utils/update_mc_test_checks.py UTC_ARGS: --version 6
+// RUN: llvm-mc -triple=amdgcn -mcpu=gfx1310 -show-encoding < %s | FileCheck -check-prefix=GFX13 %s
+// RUN: llvm-mc -triple=amdgcn -mcpu=gfx1310 -show-encoding < %s | %extract-encodings | llvm-mc -triple=amdgcn -mcpu=gfx1310 -disassemble -show-encoding | FileCheck -check-prefix=GFX13 %s
+
+ds_direct_load v1 wait_va_vdst:15
+// GFX13: ds_direct_load v1 wait_va_vdst:15 wait_vm_vsrc:0 ; encoding: [0x01,0x00,0x1f,0xce]
+
+ds_direct_load v16 wait_va_vdst:0
+// GFX13: ds_direct_load v16 wait_va_vdst:0 wait_vm_vsrc:0 ; encoding: [0x10,0x00,0x10,0xce]
+
+ds_direct_load v17
+// GFX13: ds_direct_load v17 wait_va_vdst:0 wait_vm_vsrc:0 ; encoding: [0x11,0x00,0x10,0xce]
+
+ds_param_load v1, attr0.x wait_va_vdst:15
+// GFX13: ds_param_load v1, attr0.x wait_va_vdst:15 wait_vm_vsrc:0 ; encoding: [0x01,0x00,0x0f,0xce]
+
+ds_param_load v16, attr32.w wait_va_vdst:0
+// GFX13: ds_param_load v16, attr32.w wait_va_vdst:0 wait_vm_vsrc:0 ; encoding: [0x10,0x83,0x00,0xce]
+
+ds_param_load v17, attr32.w
+// GFX13: ds_param_load v17, attr32.w wait_va_vdst:0 wait_vm_vsrc:0 ; encoding: [0x11,0x83,0x00,0xce]
+
+ds_direct_load v1 wait_va_vdst:15 wait_vm_vsrc:1
+// GFX13: ds_direct_load v1 wait_va_vdst:15 wait_vm_vsrc:1 ; encoding: [0x01,0x00,0x9f,0xce]
+
+ds_direct_load v16 wait_va_vdst:0 wait_vm_vsrc:1
+// GFX13: ds_direct_load v16 wait_va_vdst:0 wait_vm_vsrc:1 ; encoding: [0x10,0x00,0x90,0xce]
+
+ds_direct_load v17 wait_vm_vsrc:1
+// GFX13: ds_direct_load v17 wait_va_vdst:0 wait_vm_vsrc:1 ; encoding: [0x11,0x00,0x90,0xce]
+
+ds_param_load v1, attr0.x wait_va_vdst:15 wait_vm_vsrc:1
+// GFX13: ds_param_load v1, attr0.x wait_va_vdst:15 wait_vm_vsrc:1 ; encoding: [0x01,0x00,0x8f,0xce]
+
+ds_param_load v16, attr32.w wait_va_vdst:0 wait_vm_vsrc:1
+// GFX13: ds_param_load v16, attr32.w wait_va_vdst:0 wait_vm_vsrc:1 ; encoding: [0x10,0x83,0x80,0xce]
+
+ds_param_load v17, attr32.w wait_vm_vsrc:1
+// GFX13: ds_param_load v17, attr32.w wait_va_vdst:0 wait_vm_vsrc:1 ; encoding: [0x11,0x83,0x80,0xce]

diff  --git a/llvm/test/MC/AMDGPU/gfx13_asm_vdsdir_alias.s b/llvm/test/MC/AMDGPU/gfx13_asm_vdsdir_alias.s
new file mode 100644
index 0000000000000..b3c14e5c44000
--- /dev/null
+++ b/llvm/test/MC/AMDGPU/gfx13_asm_vdsdir_alias.s
@@ -0,0 +1,9 @@
+// NOTE: Assertions have been autogenerated by utils/update_mc_test_checks.py UTC_ARGS: --version 5
+// RUN: llvm-mc -triple=amdgcn -mcpu=gfx1310 -show-encoding < %s | FileCheck -check-prefix=GFX13 %s
+// RUN: llvm-mc -triple=amdgcn -mcpu=gfx1310 -show-encoding < %s | %extract-encodings | llvm-mc -triple=amdgcn -mcpu=gfx1310 -disassemble -show-encoding | FileCheck -check-prefix=GFX13 %s
+
+lds_direct_load v0
+// GFX13: ds_direct_load v0 wait_va_vdst:0 wait_vm_vsrc:0 ; encoding: [0x00,0x00,0x10,0xce]
+
+lds_param_load v0, attr0.x
+// GFX13: ds_param_load v0, attr0.x wait_va_vdst:0 wait_vm_vsrc:0 ; encoding: [0x00,0x00,0x00,0xce]


        


More information about the llvm-commits mailing list