Skip to content

[AMDGPU][GFX11] buffer_load_lds_{size} instructions do not exist #132916

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged

Conversation

jmmartinez
Copy link
Contributor

According to the shader manual there are not buffer load lds instructions of gfx11.

The tests for the regular buffer_load ... lds instructions for gfx11 are already present in AMDGPU/gfx11_asm_mubuf.s, where the compiler fails to encode the instructions for this target.

According to the shader manual there are not buffer load lds
instructions of gfx11.

The tests for the regular `buffer_load ... lds` instructions
for gfx11 are already present in AMDGPU/gfx11_asm_mubuf.s, where the
compiler fails to encode the instructions for this target.
@jmmartinez jmmartinez requested review from arsenm and shiltian March 25, 2025 10:56
@jmmartinez jmmartinez self-assigned this Mar 25, 2025
@llvmbot llvmbot added backend:AMDGPU mc Machine (object) code labels Mar 25, 2025
@llvmbot
Copy link
Member

llvmbot commented Mar 25, 2025

@llvm/pr-subscribers-backend-amdgpu

Author: Juan Manuel Martinez Caamaño (jmmartinez)

Changes

According to the shader manual there are not buffer load lds instructions of gfx11.

The tests for the regular buffer_load ... lds instructions for gfx11 are already present in AMDGPU/gfx11_asm_mubuf.s, where the compiler fails to encode the instructions for this target.


Patch is 46.55 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/132916.diff

6 Files Affected:

  • (modified) llvm/docs/AMDGPU/AMDGPUAsmGFX11.rst (-6)
  • (modified) llvm/lib/Target/AMDGPU/BUFInstructions.td (-44)
  • (modified) llvm/test/MC/AMDGPU/gfx11_asm_mubuf.s (-345)
  • (modified) llvm/test/MC/AMDGPU/gfx11_asm_mubuf_err.s (-18)
  • (modified) llvm/test/MC/AMDGPU/gfx12_unsupported.s (-18)
  • (modified) llvm/test/MC/Disassembler/AMDGPU/gfx11_dasm_mubuf.txt (-342)
diff --git a/llvm/docs/AMDGPU/AMDGPUAsmGFX11.rst b/llvm/docs/AMDGPU/AMDGPUAsmGFX11.rst
index c3eb05bdbd291..85e9c47a5c97d 100644
--- a/llvm/docs/AMDGPU/AMDGPUAsmGFX11.rst
+++ b/llvm/docs/AMDGPU/AMDGPUAsmGFX11.rst
@@ -695,12 +695,6 @@ MUBUF
     buffer_load_format_xyzw       :ref:`vdst<amdgpu_synid_gfx11_vdst_f47754>`, :ref:`vaddr<amdgpu_synid_gfx11_vaddr_b73dc0>`,           :ref:`srsrc<amdgpu_synid_gfx11_srsrc_80eef6>`, :ref:`soffset<amdgpu_synid_gfx11_soffset_fef808>`          :ref:`idxen<amdgpu_synid_idxen>` :ref:`offen<amdgpu_synid_offen>` :ref:`offset12<amdgpu_synid_buf_offset12>` :ref:`glc<amdgpu_synid_glc>` :ref:`slc<amdgpu_synid_slc>` :ref:`dlc<amdgpu_synid_dlc>` :ref:`tfe<amdgpu_synid_tfe>`
     buffer_load_i16               :ref:`vdst<amdgpu_synid_gfx11_vdst_5d50a1>`, :ref:`vaddr<amdgpu_synid_gfx11_vaddr_b73dc0>`,           :ref:`srsrc<amdgpu_synid_gfx11_srsrc_80eef6>`, :ref:`soffset<amdgpu_synid_gfx11_soffset_fef808>`          :ref:`idxen<amdgpu_synid_idxen>` :ref:`offen<amdgpu_synid_offen>` :ref:`offset12<amdgpu_synid_buf_offset12>` :ref:`glc<amdgpu_synid_glc>` :ref:`slc<amdgpu_synid_slc>` :ref:`dlc<amdgpu_synid_dlc>` :ref:`tfe<amdgpu_synid_tfe>`
     buffer_load_i8                :ref:`vdst<amdgpu_synid_gfx11_vdst_5d50a1>`, :ref:`vaddr<amdgpu_synid_gfx11_vaddr_b73dc0>`,           :ref:`srsrc<amdgpu_synid_gfx11_srsrc_80eef6>`, :ref:`soffset<amdgpu_synid_gfx11_soffset_fef808>`          :ref:`idxen<amdgpu_synid_idxen>` :ref:`offen<amdgpu_synid_offen>` :ref:`offset12<amdgpu_synid_buf_offset12>` :ref:`glc<amdgpu_synid_glc>` :ref:`slc<amdgpu_synid_slc>` :ref:`dlc<amdgpu_synid_dlc>` :ref:`tfe<amdgpu_synid_tfe>`
-    buffer_load_lds_b32                 :ref:`vaddr<amdgpu_synid_gfx11_vaddr_b73dc0>`,           :ref:`srsrc<amdgpu_synid_gfx11_srsrc_80eef6>`, :ref:`soffset<amdgpu_synid_gfx11_soffset_fef808>`          :ref:`idxen<amdgpu_synid_idxen>` :ref:`offen<amdgpu_synid_offen>` :ref:`offset12<amdgpu_synid_buf_offset12>` :ref:`glc<amdgpu_synid_glc>` :ref:`slc<amdgpu_synid_slc>` :ref:`dlc<amdgpu_synid_dlc>`
-    buffer_load_lds_format_x            :ref:`vaddr<amdgpu_synid_gfx11_vaddr_b73dc0>`,           :ref:`srsrc<amdgpu_synid_gfx11_srsrc_80eef6>`, :ref:`soffset<amdgpu_synid_gfx11_soffset_fef808>`          :ref:`idxen<amdgpu_synid_idxen>` :ref:`offen<amdgpu_synid_offen>` :ref:`offset12<amdgpu_synid_buf_offset12>` :ref:`glc<amdgpu_synid_glc>` :ref:`slc<amdgpu_synid_slc>` :ref:`dlc<amdgpu_synid_dlc>`
-    buffer_load_lds_i16                 :ref:`vaddr<amdgpu_synid_gfx11_vaddr_b73dc0>`,           :ref:`srsrc<amdgpu_synid_gfx11_srsrc_80eef6>`, :ref:`soffset<amdgpu_synid_gfx11_soffset_fef808>`          :ref:`idxen<amdgpu_synid_idxen>` :ref:`offen<amdgpu_synid_offen>` :ref:`offset12<amdgpu_synid_buf_offset12>` :ref:`glc<amdgpu_synid_glc>` :ref:`slc<amdgpu_synid_slc>` :ref:`dlc<amdgpu_synid_dlc>`
-    buffer_load_lds_i8                  :ref:`vaddr<amdgpu_synid_gfx11_vaddr_b73dc0>`,           :ref:`srsrc<amdgpu_synid_gfx11_srsrc_80eef6>`, :ref:`soffset<amdgpu_synid_gfx11_soffset_fef808>`          :ref:`idxen<amdgpu_synid_idxen>` :ref:`offen<amdgpu_synid_offen>` :ref:`offset12<amdgpu_synid_buf_offset12>` :ref:`glc<amdgpu_synid_glc>` :ref:`slc<amdgpu_synid_slc>` :ref:`dlc<amdgpu_synid_dlc>`
-    buffer_load_lds_u16                 :ref:`vaddr<amdgpu_synid_gfx11_vaddr_b73dc0>`,           :ref:`srsrc<amdgpu_synid_gfx11_srsrc_80eef6>`, :ref:`soffset<amdgpu_synid_gfx11_soffset_fef808>`          :ref:`idxen<amdgpu_synid_idxen>` :ref:`offen<amdgpu_synid_offen>` :ref:`offset12<amdgpu_synid_buf_offset12>` :ref:`glc<amdgpu_synid_glc>` :ref:`slc<amdgpu_synid_slc>` :ref:`dlc<amdgpu_synid_dlc>`
-    buffer_load_lds_u8                  :ref:`vaddr<amdgpu_synid_gfx11_vaddr_b73dc0>`,           :ref:`srsrc<amdgpu_synid_gfx11_srsrc_80eef6>`, :ref:`soffset<amdgpu_synid_gfx11_soffset_fef808>`          :ref:`idxen<amdgpu_synid_idxen>` :ref:`offen<amdgpu_synid_offen>` :ref:`offset12<amdgpu_synid_buf_offset12>` :ref:`glc<amdgpu_synid_glc>` :ref:`slc<amdgpu_synid_slc>` :ref:`dlc<amdgpu_synid_dlc>`
     buffer_load_sbyte             :ref:`vdst<amdgpu_synid_gfx11_vdst_5d50a1>`, :ref:`vaddr<amdgpu_synid_gfx11_vaddr_b73dc0>`,           :ref:`srsrc<amdgpu_synid_gfx11_srsrc_80eef6>`, :ref:`soffset<amdgpu_synid_gfx11_soffset_fef808>`          :ref:`idxen<amdgpu_synid_idxen>` :ref:`offen<amdgpu_synid_offen>` :ref:`offset12<amdgpu_synid_buf_offset12>` :ref:`glc<amdgpu_synid_glc>` :ref:`slc<amdgpu_synid_slc>` :ref:`dlc<amdgpu_synid_dlc>` :ref:`tfe<amdgpu_synid_tfe>`
     buffer_load_sbyte_d16         :ref:`vdst<amdgpu_synid_gfx11_vdst_5d50a1>`, :ref:`vaddr<amdgpu_synid_gfx11_vaddr_b73dc0>`,           :ref:`srsrc<amdgpu_synid_gfx11_srsrc_80eef6>`, :ref:`soffset<amdgpu_synid_gfx11_soffset_fef808>`          :ref:`idxen<amdgpu_synid_idxen>` :ref:`offen<amdgpu_synid_offen>` :ref:`offset12<amdgpu_synid_buf_offset12>` :ref:`glc<amdgpu_synid_glc>` :ref:`slc<amdgpu_synid_slc>` :ref:`dlc<amdgpu_synid_dlc>` :ref:`tfe<amdgpu_synid_tfe>`
     buffer_load_sbyte_d16_hi      :ref:`vdst<amdgpu_synid_gfx11_vdst_5d50a1>`, :ref:`vaddr<amdgpu_synid_gfx11_vaddr_b73dc0>`,           :ref:`srsrc<amdgpu_synid_gfx11_srsrc_80eef6>`, :ref:`soffset<amdgpu_synid_gfx11_soffset_fef808>`          :ref:`idxen<amdgpu_synid_idxen>` :ref:`offen<amdgpu_synid_offen>` :ref:`offset12<amdgpu_synid_buf_offset12>` :ref:`glc<amdgpu_synid_glc>` :ref:`slc<amdgpu_synid_slc>` :ref:`dlc<amdgpu_synid_dlc>` :ref:`tfe<amdgpu_synid_tfe>`
diff --git a/llvm/lib/Target/AMDGPU/BUFInstructions.td b/llvm/lib/Target/AMDGPU/BUFInstructions.td
index f2686bdf56b41..f4edfe1387731 100644
--- a/llvm/lib/Target/AMDGPU/BUFInstructions.td
+++ b/llvm/lib/Target/AMDGPU/BUFInstructions.td
@@ -588,25 +588,6 @@ multiclass MUBUF_Pseudo_Loads_Lds<string opName, ValueType load_vt = i32, Predic
 
 }
 
-multiclass MUBUF_Pseudo_Loads_LDSOpc<string opName,
-                                     ValueType load_vt = i32,
-                                     bit TiedDest = 0,
-                                     bit isLds = 0,
-                                     bit isLdsOpc = 1> {
-
-  defvar legal_load_vt = !if(!eq(!cast<string>(load_vt), !cast<string>(v3f16)), v4f16, load_vt);
-
-  def _OFFSET : MUBUF_Load_Pseudo <opName, BUFAddrKind.Offset, legal_load_vt, TiedDest, isLds, isLdsOpc>;
-  def _OFFEN  : MUBUF_Load_Pseudo <opName, BUFAddrKind.OffEn, legal_load_vt, TiedDest, isLds, isLdsOpc>;
-  def _IDXEN  : MUBUF_Load_Pseudo <opName, BUFAddrKind.IdxEn, legal_load_vt, TiedDest, isLds, isLdsOpc>;
-  def _BOTHEN : MUBUF_Load_Pseudo <opName, BUFAddrKind.BothEn, legal_load_vt, TiedDest, isLds, isLdsOpc>;
-
-  def _VBUFFER_OFFSET : MUBUF_Load_Pseudo <opName, BUFAddrKind.Offset, legal_load_vt, TiedDest, isLds, isLdsOpc, 0, 1>;
-  def _VBUFFER_OFFEN  : MUBUF_Load_Pseudo <opName, BUFAddrKind.OffEn, legal_load_vt, TiedDest, isLds, isLdsOpc, 0, 1>;
-  def _VBUFFER_IDXEN  : MUBUF_Load_Pseudo <opName, BUFAddrKind.IdxEn, legal_load_vt, TiedDest, isLds, isLdsOpc, 0, 1>;
-  def _VBUFFER_BOTHEN : MUBUF_Load_Pseudo <opName, BUFAddrKind.BothEn, legal_load_vt, TiedDest, isLds, isLdsOpc, 0, 1>;
-}
-
 class MUBUF_Store_Pseudo <string opName,
                           int addrKind,
                           ValueType store_vt,
@@ -972,25 +953,6 @@ defm BUFFER_LOAD_DWORDX4 : MUBUF_Pseudo_Loads_Lds <
   "buffer_load_dwordx4", v4i32, /*LDSPred=*/HasGFX950Insts
 >;
 
-defm BUFFER_LOAD_LDS_B32 : MUBUF_Pseudo_Loads_LDSOpc <
-  "buffer_load_lds_b32", i32
->;
-defm BUFFER_LOAD_LDS_FORMAT_X : MUBUF_Pseudo_Loads_LDSOpc <
-  "buffer_load_lds_format_x", f32
->;
-defm BUFFER_LOAD_LDS_I8 : MUBUF_Pseudo_Loads_LDSOpc <
-  "buffer_load_lds_i8", i32
->;
-defm BUFFER_LOAD_LDS_I16 : MUBUF_Pseudo_Loads_LDSOpc <
-  "buffer_load_lds_i16", i32
->;
-defm BUFFER_LOAD_LDS_U8 : MUBUF_Pseudo_Loads_LDSOpc <
-  "buffer_load_lds_u8", i32
->;
-defm BUFFER_LOAD_LDS_U16 : MUBUF_Pseudo_Loads_LDSOpc <
-  "buffer_load_lds_u16", i32
->;
-
 defm : MUBUF_Pseudo_Load_Pats<"BUFFER_LOAD_UBYTE", i32, atomic_load_8_global>;
 defm : MUBUF_Pseudo_Load_Pats<"BUFFER_LOAD_UBYTE", i32, atomic_load_zext_8_global>;
 defm : MUBUF_Pseudo_Load_Pats<"BUFFER_LOAD_USHORT", i32, atomic_load_16_global>;
@@ -2648,12 +2610,6 @@ defm BUFFER_LOAD_SBYTE            : MUBUF_Real_AllAddr_gfx11_gfx12<0x011, "buffe
 defm BUFFER_LOAD_SSHORT           : MUBUF_Real_AllAddr_gfx11_gfx12<0x013, "buffer_load_i16">;
 defm BUFFER_LOAD_UBYTE            : MUBUF_Real_AllAddr_gfx11_gfx12<0x010, "buffer_load_u8">;
 defm BUFFER_LOAD_USHORT           : MUBUF_Real_AllAddr_gfx11_gfx12<0x012, "buffer_load_u16">;
-defm BUFFER_LOAD_LDS_B32          : MUBUF_Real_AllAddr_gfx11<0x031, 0>;
-defm BUFFER_LOAD_LDS_FORMAT_X     : MUBUF_Real_AllAddr_gfx11<0x032, 0>;
-defm BUFFER_LOAD_LDS_I8           : MUBUF_Real_AllAddr_gfx11<0x02e, 0>;
-defm BUFFER_LOAD_LDS_I16          : MUBUF_Real_AllAddr_gfx11<0x030, 0>;
-defm BUFFER_LOAD_LDS_U8           : MUBUF_Real_AllAddr_gfx11<0x02d, 0>;
-defm BUFFER_LOAD_LDS_U16          : MUBUF_Real_AllAddr_gfx11<0x02f, 0>;
 defm BUFFER_STORE_BYTE            : MUBUF_Real_AllAddr_gfx11_gfx12<0x018, "buffer_store_b8">;
 defm BUFFER_STORE_SHORT           : MUBUF_Real_AllAddr_gfx11_gfx12<0x019, "buffer_store_b16">;
 defm BUFFER_STORE_DWORD           : MUBUF_Real_AllAddr_gfx11_gfx12<0x01A, "buffer_store_b32">;
diff --git a/llvm/test/MC/AMDGPU/gfx11_asm_mubuf.s b/llvm/test/MC/AMDGPU/gfx11_asm_mubuf.s
index 6dfb23771301b..dfc017acfc570 100644
--- a/llvm/test/MC/AMDGPU/gfx11_asm_mubuf.s
+++ b/llvm/test/MC/AMDGPU/gfx11_asm_mubuf.s
@@ -1324,351 +1324,6 @@ buffer_load_u16 v5, off, s[8:11], s3 offset:4095 dlc
 buffer_load_u16 v5, off, s[8:11], s3 offset:4095 glc slc dlc
 // GFX11: encoding: [0xff,0x7f,0x48,0xe0,0x00,0x05,0x02,0x03]
 
-buffer_load_lds_b32 off, s[8:11], s3 offset:4095
-// GFX11: encoding: [0xff,0x0f,0xc4,0xe0,0x00,0x00,0x02,0x03]
-
-buffer_load_lds_b32 off, s[8:11], s3 offset:4095
-// GFX11: encoding: [0xff,0x0f,0xc4,0xe0,0x00,0x00,0x02,0x03]
-
-buffer_load_lds_b32 off, s[12:15], s3 offset:4095
-// GFX11: encoding: [0xff,0x0f,0xc4,0xe0,0x00,0x00,0x03,0x03]
-
-buffer_load_lds_b32 off, s[96:99], s3 offset:4095
-// GFX11: encoding: [0xff,0x0f,0xc4,0xe0,0x00,0x00,0x18,0x03]
-
-buffer_load_lds_b32 off, s[8:11], s101 offset:4095
-// GFX11: encoding: [0xff,0x0f,0xc4,0xe0,0x00,0x00,0x02,0x65]
-
-buffer_load_lds_b32 off, s[8:11], m0 offset:4095
-// GFX11: encoding: [0xff,0x0f,0xc4,0xe0,0x00,0x00,0x02,0x7d]
-
-buffer_load_lds_b32 off, s[8:11], 0 offset:4095
-// GFX11: encoding: [0xff,0x0f,0xc4,0xe0,0x00,0x00,0x02,0x80]
-
-buffer_load_lds_b32 off, s[8:11], -1 offset:4095
-// GFX11: encoding: [0xff,0x0f,0xc4,0xe0,0x00,0x00,0x02,0xc1]
-
-buffer_load_lds_b32 off, s[8:11], 0.5 offset:4095
-// GFX11: encoding: [0xff,0x0f,0xc4,0xe0,0x00,0x00,0x02,0xf0]
-
-buffer_load_lds_b32 off, s[8:11], -4.0 offset:4095
-// GFX11: encoding: [0xff,0x0f,0xc4,0xe0,0x00,0x00,0x02,0xf7]
-
-buffer_load_lds_b32 v0, s[8:11], s3 idxen offset:4095
-// GFX11: encoding: [0xff,0x0f,0xc4,0xe0,0x00,0x00,0x82,0x03]
-
-buffer_load_lds_b32 v0, s[8:11], s3 offen offset:4095
-// GFX11: encoding: [0xff,0x0f,0xc4,0xe0,0x00,0x00,0x42,0x03]
-
-buffer_load_lds_b32 off, s[8:11], s3
-// GFX11: encoding: [0x00,0x00,0xc4,0xe0,0x00,0x00,0x02,0x03]
-
-buffer_load_lds_b32 off, s[8:11], s3 offset:0
-// GFX11: encoding: [0x00,0x00,0xc4,0xe0,0x00,0x00,0x02,0x03]
-
-buffer_load_lds_b32 off, s[8:11], s3 offset:7
-// GFX11: encoding: [0x07,0x00,0xc4,0xe0,0x00,0x00,0x02,0x03]
-
-buffer_load_lds_b32 off, s[8:11], s3 offset:4095 glc
-// GFX11: encoding: [0xff,0x4f,0xc4,0xe0,0x00,0x00,0x02,0x03]
-
-buffer_load_lds_b32 off, s[8:11], s3 offset:4095 slc
-// GFX11: encoding: [0xff,0x1f,0xc4,0xe0,0x00,0x00,0x02,0x03]
-
-buffer_load_lds_b32 off, s[8:11], s3 offset:4095 dlc
-// GFX11: encoding: [0xff,0x2f,0xc4,0xe0,0x00,0x00,0x02,0x03]
-
-buffer_load_lds_b32 off, s[8:11], s3 offset:4095 glc slc dlc
-// GFX11: encoding: [0xff,0x7f,0xc4,0xe0,0x00,0x00,0x02,0x03]
-
-buffer_load_lds_b32 off, s[8:11], s3 lds
-// GFX11-ERR: :[[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction
-
-buffer_load_lds_format_x off, s[8:11], s3 offset:4095
-// GFX11: encoding: [0xff,0x0f,0xc8,0xe0,0x00,0x00,0x02,0x03]
-
-buffer_load_lds_format_x off, s[8:11], s3 offset:4095
-// GFX11: encoding: [0xff,0x0f,0xc8,0xe0,0x00,0x00,0x02,0x03]
-
-buffer_load_lds_format_x off, s[12:15], s3 offset:4095
-// GFX11: encoding: [0xff,0x0f,0xc8,0xe0,0x00,0x00,0x03,0x03]
-
-buffer_load_lds_format_x off, s[96:99], s3 offset:4095
-// GFX11: encoding: [0xff,0x0f,0xc8,0xe0,0x00,0x00,0x18,0x03]
-
-buffer_load_lds_format_x off, s[8:11], s101 offset:4095
-// GFX11: encoding: [0xff,0x0f,0xc8,0xe0,0x00,0x00,0x02,0x65]
-
-buffer_load_lds_format_x off, s[8:11], m0 offset:4095
-// GFX11: encoding: [0xff,0x0f,0xc8,0xe0,0x00,0x00,0x02,0x7d]
-
-buffer_load_lds_format_x off, s[8:11], 0 offset:4095
-// GFX11: encoding: [0xff,0x0f,0xc8,0xe0,0x00,0x00,0x02,0x80]
-
-buffer_load_lds_format_x off, s[8:11], -1 offset:4095
-// GFX11: encoding: [0xff,0x0f,0xc8,0xe0,0x00,0x00,0x02,0xc1]
-
-buffer_load_lds_format_x off, s[8:11], 0.5 offset:4095
-// GFX11: encoding: [0xff,0x0f,0xc8,0xe0,0x00,0x00,0x02,0xf0]
-
-buffer_load_lds_format_x off, s[8:11], -4.0 offset:4095
-// GFX11: encoding: [0xff,0x0f,0xc8,0xe0,0x00,0x00,0x02,0xf7]
-
-buffer_load_lds_format_x v0, s[8:11], s3 idxen offset:4095
-// GFX11: encoding: [0xff,0x0f,0xc8,0xe0,0x00,0x00,0x82,0x03]
-
-buffer_load_lds_format_x v0, s[8:11], s3 offen offset:4095
-// GFX11: encoding: [0xff,0x0f,0xc8,0xe0,0x00,0x00,0x42,0x03]
-
-buffer_load_lds_format_x off, s[8:11], s3
-// GFX11: encoding: [0x00,0x00,0xc8,0xe0,0x00,0x00,0x02,0x03]
-
-buffer_load_lds_format_x off, s[8:11], s3 offset:0
-// GFX11: encoding: [0x00,0x00,0xc8,0xe0,0x00,0x00,0x02,0x03]
-
-buffer_load_lds_format_x off, s[8:11], s3 offset:7
-// GFX11: encoding: [0x07,0x00,0xc8,0xe0,0x00,0x00,0x02,0x03]
-
-buffer_load_lds_format_x off, s[8:11], s3 offset:4095 glc
-// GFX11: encoding: [0xff,0x4f,0xc8,0xe0,0x00,0x00,0x02,0x03]
-
-buffer_load_lds_format_x off, s[8:11], s3 offset:4095 slc
-// GFX11: encoding: [0xff,0x1f,0xc8,0xe0,0x00,0x00,0x02,0x03]
-
-buffer_load_lds_format_x off, s[8:11], s3 offset:4095 dlc
-// GFX11: encoding: [0xff,0x2f,0xc8,0xe0,0x00,0x00,0x02,0x03]
-
-buffer_load_lds_format_x off, s[8:11], s3 offset:4095 glc slc dlc
-// GFX11: encoding: [0xff,0x7f,0xc8,0xe0,0x00,0x00,0x02,0x03]
-
-buffer_load_lds_i8 off, s[8:11], s3 offset:4095
-// GFX11: encoding: [0xff,0x0f,0xb8,0xe0,0x00,0x00,0x02,0x03]
-
-buffer_load_lds_i8 off, s[8:11], s3 offset:4095
-// GFX11: encoding: [0xff,0x0f,0xb8,0xe0,0x00,0x00,0x02,0x03]
-
-buffer_load_lds_i8 off, s[12:15], s3 offset:4095
-// GFX11: encoding: [0xff,0x0f,0xb8,0xe0,0x00,0x00,0x03,0x03]
-
-buffer_load_lds_i8 off, s[96:99], s3 offset:4095
-// GFX11: encoding: [0xff,0x0f,0xb8,0xe0,0x00,0x00,0x18,0x03]
-
-buffer_load_lds_i8 off, s[8:11], s101 offset:4095
-// GFX11: encoding: [0xff,0x0f,0xb8,0xe0,0x00,0x00,0x02,0x65]
-
-buffer_load_lds_i8 off, s[8:11], m0 offset:4095
-// GFX11: encoding: [0xff,0x0f,0xb8,0xe0,0x00,0x00,0x02,0x7d]
-
-buffer_load_lds_i8 off, s[8:11], 0 offset:4095
-// GFX11: encoding: [0xff,0x0f,0xb8,0xe0,0x00,0x00,0x02,0x80]
-
-buffer_load_lds_i8 off, s[8:11], -1 offset:4095
-// GFX11: encoding: [0xff,0x0f,0xb8,0xe0,0x00,0x00,0x02,0xc1]
-
-buffer_load_lds_i8 off, s[8:11], 0.5 offset:4095
-// GFX11: encoding: [0xff,0x0f,0xb8,0xe0,0x00,0x00,0x02,0xf0]
-
-buffer_load_lds_i8 off, s[8:11], -4.0 offset:4095
-// GFX11: encoding: [0xff,0x0f,0xb8,0xe0,0x00,0x00,0x02,0xf7]
-
-buffer_load_lds_i8 v0, s[8:11], s3 idxen offset:4095
-// GFX11: encoding: [0xff,0x0f,0xb8,0xe0,0x00,0x00,0x82,0x03]
-
-buffer_load_lds_i8 v0, s[8:11], s3 offen offset:4095
-// GFX11: encoding: [0xff,0x0f,0xb8,0xe0,0x00,0x00,0x42,0x03]
-
-buffer_load_lds_i8 off, s[8:11], s3
-// GFX11: encoding: [0x00,0x00,0xb8,0xe0,0x00,0x00,0x02,0x03]
-
-buffer_load_lds_i8 off, s[8:11], s3 offset:0
-// GFX11: encoding: [0x00,0x00,0xb8,0xe0,0x00,0x00,0x02,0x03]
-
-buffer_load_lds_i8 off, s[8:11], s3 offset:7
-// GFX11: encoding: [0x07,0x00,0xb8,0xe0,0x00,0x00,0x02,0x03]
-
-buffer_load_lds_i8 off, s[8:11], s3 offset:4095 glc
-// GFX11: encoding: [0xff,0x4f,0xb8,0xe0,0x00,0x00,0x02,0x03]
-
-buffer_load_lds_i8 off, s[8:11], s3 offset:4095 slc
-// GFX11: encoding: [0xff,0x1f,0xb8,0xe0,0x00,0x00,0x02,0x03]
-
-buffer_load_lds_i8 off, s[8:11], s3 offset:4095 dlc
-// GFX11: encoding: [0xff,0x2f,0xb8,0xe0,0x00,0x00,0x02,0x03]
-
-buffer_load_lds_i8 off, s[8:11], s3 offset:4095 glc slc dlc
-// GFX11: encoding: [0xff,0x7f,0xb8,0xe0,0x00,0x00,0x02,0x03]
-
-buffer_load_lds_i16 off, s[8:11], s3 offset:4095
-// GFX11: encoding: [0xff,0x0f,0xc0,0xe0,0x00,0x00,0x02,0x03]
-
-buffer_load_lds_i16 off, s[8:11], s3 offset:4095
-// GFX11: encoding: [0xff,0x0f,0xc0,0xe0,0x00,0x00,0x02,0x03]
-
-buffer_load_lds_i16 off, s[12:15], s3 offset:4095
-// GFX11: encoding: [0xff,0x0f,0xc0,0xe0,0x00,0x00,0x03,0x03]
-
-buffer_load_lds_i16 off, s[96:99], s3 offset:4095
-// GFX11: encoding: [0xff,0x0f,0xc0,0xe0,0x00,0x00,0x18,0x03]
-
-buffer_load_lds_i16 off, s[8:11], s101 offset:4095
-// GFX11: encoding: [0xff,0x0f,0xc0,0xe0,0x00,0x00,0x02,0x65]
-
-buffer_load_lds_i16 off, s[8:11], m0 offset:4095
-// GFX11: encoding: [0xff,0x0f,0xc0,0xe0,0x00,0x00,0x02,0x7d]
-
-buffer_load_lds_i16 off, s[8:11], 0 offset:4095
-// GFX11: encoding: [0xff,0x0f,0xc0,0xe0,0x00,0x00,0x02,0x80]
-
-buffer_load_lds_i16 off, s[8:11], -1 offset:4095
-// GFX11: encoding: [0xff,0x0f,0xc0,0xe0,0x00,0x00,0x02,0xc1]
-
-buffer_load_lds_i16 off, s[8:11], 0.5 offset:4095
-// GFX11: encoding: [0xff,0x0f,0xc0,0xe0,0x00,0x00,0x02,0xf0]
-
-buffer_load_lds_i16 off, s[8:11], -4.0 offset:4095
-// GFX11: encoding: [0xff,0x0f,0xc0,0xe0,0x00,0x00,0x02,0xf7]
-
-buffer_load_lds_i16 v0, s[8:11], s3 idxen offset:4095
-// GFX11: encoding: [0xff,0x0f,0xc0,0xe0,0x00,0x00,0x82,0x03]
-
-buffer_load_lds_i16 v0, s[8:11], s3 offen offset:4095
-// GFX11: encoding: [0xff,0x0f,0xc0,0xe0,0x00,0x00,0x42,0x03]
-
-buffer_load_lds_i16 off, s[8:11], s3
-// GFX11: encoding: [0x00,0x00,0xc0,0xe0,0x00,0x00,0x02,0x03]
-
-buffer_load_lds_i16 off, s[8:11], s3 offset:0
-// GFX11: encoding: [0x00,0x00,0xc0,0xe0,0x00,0x00,0x02,0x03]
-
-buffer_load_lds_i16 off, s[8:11], s3 offset:7
-// GFX11: encoding: [0x07,0x00,0xc0,0xe0,0x00,0x00,0x02,0x03]
-
-buffer_load_lds_i16 off, s[8:11], s3 offset:4095 glc
-// GFX11: encoding: [0xff,0x4f,0xc0,0xe0,0x00,0x00,0x02,0x03]
-
-buffer_load_lds_i16 off, s[8:11], s3 offset:4095 slc
-// GFX11: encoding: [0xff,0x1f,0xc0,0xe0,0x00,0x00,0x02,0x03]
-
-buffer_load_lds_i16 off, s[8:11], s3 offset:4095 dlc
-// GFX11: encoding: [0xff,0x2f,0xc0,0xe0,0x00,0x00,0x02,0x03]
-
-buffer_load_lds_i16 off, s[8:11], s3 offset:4095 glc slc dlc
-// GFX11: encoding: [0xff,0x7f,0xc0,0xe0,0x00,0x00,0x02,0x03]
-
-buffer_load_lds_u8 off, s[8:11], s3 offset:4095
-// GFX11: encoding: [0xff,0x0f,0xb4,0xe0,0x00,0x00,0x02,0x03]
-
-buffer_load_lds_u8 off, s[8:11], s3 offset:4095
-// GFX11: encoding: [0xff,0x0f,0xb4,0xe0,0x00,0x00,0x02,0x03]
-
-buffer_load_lds_u8 off, s[12:15], s3 offset:4095
-// GFX11: encoding: [0xff,0x0f,0xb4,0xe0,0x00,0x00,0x03,0x03]
-
-buffer_load_lds_u8 off, s[96:99], s3 offset:4095
-// GFX11: encoding: [0xff,0x0f,0xb4,0xe0,0x00,0x00,0x18,0x03]
-
-buffer_load_lds_u8 off, s[8:11], s101 offset:4095
-// GFX11: encoding: [0xff,0x0f,0xb4,0xe0,0x00,0x00,0x02,0x65]
-
-buffer_load_lds_u8 off, s[8:11], m0 offset:4095
-// GFX11: encoding: [0xff,0x0f,0xb4,0xe0,0x00,0x00,0x02,0x7d]
-
-buffer_load_lds_u8 off, s[8:11], 0 offset:4095
-// GFX11: encoding: [0xff,0x0f,0xb4,0xe0,0x00,0x00,0x02,0x80]
-
-buffer_load_lds_u8 off, s[8:11], -1 offset:4095
-// GFX11: encoding: [0xff,0x0f,0xb4,0xe0,0x00,0x00,0x02,0xc1]
-
-buffer_load_lds_u8 off, s[8:11], 0.5 offset:4095
-// GFX11: encoding: [0xff,0x0f,0xb4,0xe0,0x00,0x00,0x02,0xf0]
-
-buffer_load_lds_u8 off, s[8:11], -4.0 offset:4095
-// GFX11: encoding: [0xff,0x0f,0xb4,0xe0,0x00,0x00,0x02,0xf7]
-
-buffer_load_lds_u8 v0, s[8:11], s3 idxen offset:4095
-// GFX11: encoding: [0xff,0x0f,0xb4,0xe0,0x00,0x00,0x82,0x03]
-
-buffer_load_lds_u8 v0, s[8:11], s3 offen offset:4095
-// GFX11: encoding: [0xff,0x0f,0xb4,0xe0,0x00,0x00,0x42,0x03]
-
-buffer_load_lds_u8 off, s[8:11], s3
-// GFX11: encoding: [0x00,0x00,0xb4,0xe0,0x00,0x00,0x02,0x03]
-
-buffer_load_lds_u8 off, s[8:11], s3 offset:0
-// GFX11: encoding: [0x00,0x00,0xb4,0xe0,0x00,0x00,0x02,0x03]
-
-buffer_load_lds_u8 off, s[8:11], s3 offset:7
-// GFX11: encoding: [0x07,0x00,0xb4,0xe0,0x00,0x00,0x02,0x03]
-
-buffer_load_lds_u8 off, s[8:11], s3 offset:4095 ...
[truncated]

@llvmbot
Copy link
Member

llvmbot commented Mar 25, 2025

@llvm/pr-subscribers-mc

Author: Juan Manuel Martinez Caamaño (jmmartinez)

Changes

According to the shader manual there are not buffer load lds instructions of gfx11.

The tests for the regular buffer_load ... lds instructions for gfx11 are already present in AMDGPU/gfx11_asm_mubuf.s, where the compiler fails to encode the instructions for this target.


Patch is 46.55 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/132916.diff

6 Files Affected:

  • (modified) llvm/docs/AMDGPU/AMDGPUAsmGFX11.rst (-6)
  • (modified) llvm/lib/Target/AMDGPU/BUFInstructions.td (-44)
  • (modified) llvm/test/MC/AMDGPU/gfx11_asm_mubuf.s (-345)
  • (modified) llvm/test/MC/AMDGPU/gfx11_asm_mubuf_err.s (-18)
  • (modified) llvm/test/MC/AMDGPU/gfx12_unsupported.s (-18)
  • (modified) llvm/test/MC/Disassembler/AMDGPU/gfx11_dasm_mubuf.txt (-342)
diff --git a/llvm/docs/AMDGPU/AMDGPUAsmGFX11.rst b/llvm/docs/AMDGPU/AMDGPUAsmGFX11.rst
index c3eb05bdbd291..85e9c47a5c97d 100644
--- a/llvm/docs/AMDGPU/AMDGPUAsmGFX11.rst
+++ b/llvm/docs/AMDGPU/AMDGPUAsmGFX11.rst
@@ -695,12 +695,6 @@ MUBUF
     buffer_load_format_xyzw       :ref:`vdst<amdgpu_synid_gfx11_vdst_f47754>`, :ref:`vaddr<amdgpu_synid_gfx11_vaddr_b73dc0>`,           :ref:`srsrc<amdgpu_synid_gfx11_srsrc_80eef6>`, :ref:`soffset<amdgpu_synid_gfx11_soffset_fef808>`          :ref:`idxen<amdgpu_synid_idxen>` :ref:`offen<amdgpu_synid_offen>` :ref:`offset12<amdgpu_synid_buf_offset12>` :ref:`glc<amdgpu_synid_glc>` :ref:`slc<amdgpu_synid_slc>` :ref:`dlc<amdgpu_synid_dlc>` :ref:`tfe<amdgpu_synid_tfe>`
     buffer_load_i16               :ref:`vdst<amdgpu_synid_gfx11_vdst_5d50a1>`, :ref:`vaddr<amdgpu_synid_gfx11_vaddr_b73dc0>`,           :ref:`srsrc<amdgpu_synid_gfx11_srsrc_80eef6>`, :ref:`soffset<amdgpu_synid_gfx11_soffset_fef808>`          :ref:`idxen<amdgpu_synid_idxen>` :ref:`offen<amdgpu_synid_offen>` :ref:`offset12<amdgpu_synid_buf_offset12>` :ref:`glc<amdgpu_synid_glc>` :ref:`slc<amdgpu_synid_slc>` :ref:`dlc<amdgpu_synid_dlc>` :ref:`tfe<amdgpu_synid_tfe>`
     buffer_load_i8                :ref:`vdst<amdgpu_synid_gfx11_vdst_5d50a1>`, :ref:`vaddr<amdgpu_synid_gfx11_vaddr_b73dc0>`,           :ref:`srsrc<amdgpu_synid_gfx11_srsrc_80eef6>`, :ref:`soffset<amdgpu_synid_gfx11_soffset_fef808>`          :ref:`idxen<amdgpu_synid_idxen>` :ref:`offen<amdgpu_synid_offen>` :ref:`offset12<amdgpu_synid_buf_offset12>` :ref:`glc<amdgpu_synid_glc>` :ref:`slc<amdgpu_synid_slc>` :ref:`dlc<amdgpu_synid_dlc>` :ref:`tfe<amdgpu_synid_tfe>`
-    buffer_load_lds_b32                 :ref:`vaddr<amdgpu_synid_gfx11_vaddr_b73dc0>`,           :ref:`srsrc<amdgpu_synid_gfx11_srsrc_80eef6>`, :ref:`soffset<amdgpu_synid_gfx11_soffset_fef808>`          :ref:`idxen<amdgpu_synid_idxen>` :ref:`offen<amdgpu_synid_offen>` :ref:`offset12<amdgpu_synid_buf_offset12>` :ref:`glc<amdgpu_synid_glc>` :ref:`slc<amdgpu_synid_slc>` :ref:`dlc<amdgpu_synid_dlc>`
-    buffer_load_lds_format_x            :ref:`vaddr<amdgpu_synid_gfx11_vaddr_b73dc0>`,           :ref:`srsrc<amdgpu_synid_gfx11_srsrc_80eef6>`, :ref:`soffset<amdgpu_synid_gfx11_soffset_fef808>`          :ref:`idxen<amdgpu_synid_idxen>` :ref:`offen<amdgpu_synid_offen>` :ref:`offset12<amdgpu_synid_buf_offset12>` :ref:`glc<amdgpu_synid_glc>` :ref:`slc<amdgpu_synid_slc>` :ref:`dlc<amdgpu_synid_dlc>`
-    buffer_load_lds_i16                 :ref:`vaddr<amdgpu_synid_gfx11_vaddr_b73dc0>`,           :ref:`srsrc<amdgpu_synid_gfx11_srsrc_80eef6>`, :ref:`soffset<amdgpu_synid_gfx11_soffset_fef808>`          :ref:`idxen<amdgpu_synid_idxen>` :ref:`offen<amdgpu_synid_offen>` :ref:`offset12<amdgpu_synid_buf_offset12>` :ref:`glc<amdgpu_synid_glc>` :ref:`slc<amdgpu_synid_slc>` :ref:`dlc<amdgpu_synid_dlc>`
-    buffer_load_lds_i8                  :ref:`vaddr<amdgpu_synid_gfx11_vaddr_b73dc0>`,           :ref:`srsrc<amdgpu_synid_gfx11_srsrc_80eef6>`, :ref:`soffset<amdgpu_synid_gfx11_soffset_fef808>`          :ref:`idxen<amdgpu_synid_idxen>` :ref:`offen<amdgpu_synid_offen>` :ref:`offset12<amdgpu_synid_buf_offset12>` :ref:`glc<amdgpu_synid_glc>` :ref:`slc<amdgpu_synid_slc>` :ref:`dlc<amdgpu_synid_dlc>`
-    buffer_load_lds_u16                 :ref:`vaddr<amdgpu_synid_gfx11_vaddr_b73dc0>`,           :ref:`srsrc<amdgpu_synid_gfx11_srsrc_80eef6>`, :ref:`soffset<amdgpu_synid_gfx11_soffset_fef808>`          :ref:`idxen<amdgpu_synid_idxen>` :ref:`offen<amdgpu_synid_offen>` :ref:`offset12<amdgpu_synid_buf_offset12>` :ref:`glc<amdgpu_synid_glc>` :ref:`slc<amdgpu_synid_slc>` :ref:`dlc<amdgpu_synid_dlc>`
-    buffer_load_lds_u8                  :ref:`vaddr<amdgpu_synid_gfx11_vaddr_b73dc0>`,           :ref:`srsrc<amdgpu_synid_gfx11_srsrc_80eef6>`, :ref:`soffset<amdgpu_synid_gfx11_soffset_fef808>`          :ref:`idxen<amdgpu_synid_idxen>` :ref:`offen<amdgpu_synid_offen>` :ref:`offset12<amdgpu_synid_buf_offset12>` :ref:`glc<amdgpu_synid_glc>` :ref:`slc<amdgpu_synid_slc>` :ref:`dlc<amdgpu_synid_dlc>`
     buffer_load_sbyte             :ref:`vdst<amdgpu_synid_gfx11_vdst_5d50a1>`, :ref:`vaddr<amdgpu_synid_gfx11_vaddr_b73dc0>`,           :ref:`srsrc<amdgpu_synid_gfx11_srsrc_80eef6>`, :ref:`soffset<amdgpu_synid_gfx11_soffset_fef808>`          :ref:`idxen<amdgpu_synid_idxen>` :ref:`offen<amdgpu_synid_offen>` :ref:`offset12<amdgpu_synid_buf_offset12>` :ref:`glc<amdgpu_synid_glc>` :ref:`slc<amdgpu_synid_slc>` :ref:`dlc<amdgpu_synid_dlc>` :ref:`tfe<amdgpu_synid_tfe>`
     buffer_load_sbyte_d16         :ref:`vdst<amdgpu_synid_gfx11_vdst_5d50a1>`, :ref:`vaddr<amdgpu_synid_gfx11_vaddr_b73dc0>`,           :ref:`srsrc<amdgpu_synid_gfx11_srsrc_80eef6>`, :ref:`soffset<amdgpu_synid_gfx11_soffset_fef808>`          :ref:`idxen<amdgpu_synid_idxen>` :ref:`offen<amdgpu_synid_offen>` :ref:`offset12<amdgpu_synid_buf_offset12>` :ref:`glc<amdgpu_synid_glc>` :ref:`slc<amdgpu_synid_slc>` :ref:`dlc<amdgpu_synid_dlc>` :ref:`tfe<amdgpu_synid_tfe>`
     buffer_load_sbyte_d16_hi      :ref:`vdst<amdgpu_synid_gfx11_vdst_5d50a1>`, :ref:`vaddr<amdgpu_synid_gfx11_vaddr_b73dc0>`,           :ref:`srsrc<amdgpu_synid_gfx11_srsrc_80eef6>`, :ref:`soffset<amdgpu_synid_gfx11_soffset_fef808>`          :ref:`idxen<amdgpu_synid_idxen>` :ref:`offen<amdgpu_synid_offen>` :ref:`offset12<amdgpu_synid_buf_offset12>` :ref:`glc<amdgpu_synid_glc>` :ref:`slc<amdgpu_synid_slc>` :ref:`dlc<amdgpu_synid_dlc>` :ref:`tfe<amdgpu_synid_tfe>`
diff --git a/llvm/lib/Target/AMDGPU/BUFInstructions.td b/llvm/lib/Target/AMDGPU/BUFInstructions.td
index f2686bdf56b41..f4edfe1387731 100644
--- a/llvm/lib/Target/AMDGPU/BUFInstructions.td
+++ b/llvm/lib/Target/AMDGPU/BUFInstructions.td
@@ -588,25 +588,6 @@ multiclass MUBUF_Pseudo_Loads_Lds<string opName, ValueType load_vt = i32, Predic
 
 }
 
-multiclass MUBUF_Pseudo_Loads_LDSOpc<string opName,
-                                     ValueType load_vt = i32,
-                                     bit TiedDest = 0,
-                                     bit isLds = 0,
-                                     bit isLdsOpc = 1> {
-
-  defvar legal_load_vt = !if(!eq(!cast<string>(load_vt), !cast<string>(v3f16)), v4f16, load_vt);
-
-  def _OFFSET : MUBUF_Load_Pseudo <opName, BUFAddrKind.Offset, legal_load_vt, TiedDest, isLds, isLdsOpc>;
-  def _OFFEN  : MUBUF_Load_Pseudo <opName, BUFAddrKind.OffEn, legal_load_vt, TiedDest, isLds, isLdsOpc>;
-  def _IDXEN  : MUBUF_Load_Pseudo <opName, BUFAddrKind.IdxEn, legal_load_vt, TiedDest, isLds, isLdsOpc>;
-  def _BOTHEN : MUBUF_Load_Pseudo <opName, BUFAddrKind.BothEn, legal_load_vt, TiedDest, isLds, isLdsOpc>;
-
-  def _VBUFFER_OFFSET : MUBUF_Load_Pseudo <opName, BUFAddrKind.Offset, legal_load_vt, TiedDest, isLds, isLdsOpc, 0, 1>;
-  def _VBUFFER_OFFEN  : MUBUF_Load_Pseudo <opName, BUFAddrKind.OffEn, legal_load_vt, TiedDest, isLds, isLdsOpc, 0, 1>;
-  def _VBUFFER_IDXEN  : MUBUF_Load_Pseudo <opName, BUFAddrKind.IdxEn, legal_load_vt, TiedDest, isLds, isLdsOpc, 0, 1>;
-  def _VBUFFER_BOTHEN : MUBUF_Load_Pseudo <opName, BUFAddrKind.BothEn, legal_load_vt, TiedDest, isLds, isLdsOpc, 0, 1>;
-}
-
 class MUBUF_Store_Pseudo <string opName,
                           int addrKind,
                           ValueType store_vt,
@@ -972,25 +953,6 @@ defm BUFFER_LOAD_DWORDX4 : MUBUF_Pseudo_Loads_Lds <
   "buffer_load_dwordx4", v4i32, /*LDSPred=*/HasGFX950Insts
 >;
 
-defm BUFFER_LOAD_LDS_B32 : MUBUF_Pseudo_Loads_LDSOpc <
-  "buffer_load_lds_b32", i32
->;
-defm BUFFER_LOAD_LDS_FORMAT_X : MUBUF_Pseudo_Loads_LDSOpc <
-  "buffer_load_lds_format_x", f32
->;
-defm BUFFER_LOAD_LDS_I8 : MUBUF_Pseudo_Loads_LDSOpc <
-  "buffer_load_lds_i8", i32
->;
-defm BUFFER_LOAD_LDS_I16 : MUBUF_Pseudo_Loads_LDSOpc <
-  "buffer_load_lds_i16", i32
->;
-defm BUFFER_LOAD_LDS_U8 : MUBUF_Pseudo_Loads_LDSOpc <
-  "buffer_load_lds_u8", i32
->;
-defm BUFFER_LOAD_LDS_U16 : MUBUF_Pseudo_Loads_LDSOpc <
-  "buffer_load_lds_u16", i32
->;
-
 defm : MUBUF_Pseudo_Load_Pats<"BUFFER_LOAD_UBYTE", i32, atomic_load_8_global>;
 defm : MUBUF_Pseudo_Load_Pats<"BUFFER_LOAD_UBYTE", i32, atomic_load_zext_8_global>;
 defm : MUBUF_Pseudo_Load_Pats<"BUFFER_LOAD_USHORT", i32, atomic_load_16_global>;
@@ -2648,12 +2610,6 @@ defm BUFFER_LOAD_SBYTE            : MUBUF_Real_AllAddr_gfx11_gfx12<0x011, "buffe
 defm BUFFER_LOAD_SSHORT           : MUBUF_Real_AllAddr_gfx11_gfx12<0x013, "buffer_load_i16">;
 defm BUFFER_LOAD_UBYTE            : MUBUF_Real_AllAddr_gfx11_gfx12<0x010, "buffer_load_u8">;
 defm BUFFER_LOAD_USHORT           : MUBUF_Real_AllAddr_gfx11_gfx12<0x012, "buffer_load_u16">;
-defm BUFFER_LOAD_LDS_B32          : MUBUF_Real_AllAddr_gfx11<0x031, 0>;
-defm BUFFER_LOAD_LDS_FORMAT_X     : MUBUF_Real_AllAddr_gfx11<0x032, 0>;
-defm BUFFER_LOAD_LDS_I8           : MUBUF_Real_AllAddr_gfx11<0x02e, 0>;
-defm BUFFER_LOAD_LDS_I16          : MUBUF_Real_AllAddr_gfx11<0x030, 0>;
-defm BUFFER_LOAD_LDS_U8           : MUBUF_Real_AllAddr_gfx11<0x02d, 0>;
-defm BUFFER_LOAD_LDS_U16          : MUBUF_Real_AllAddr_gfx11<0x02f, 0>;
 defm BUFFER_STORE_BYTE            : MUBUF_Real_AllAddr_gfx11_gfx12<0x018, "buffer_store_b8">;
 defm BUFFER_STORE_SHORT           : MUBUF_Real_AllAddr_gfx11_gfx12<0x019, "buffer_store_b16">;
 defm BUFFER_STORE_DWORD           : MUBUF_Real_AllAddr_gfx11_gfx12<0x01A, "buffer_store_b32">;
diff --git a/llvm/test/MC/AMDGPU/gfx11_asm_mubuf.s b/llvm/test/MC/AMDGPU/gfx11_asm_mubuf.s
index 6dfb23771301b..dfc017acfc570 100644
--- a/llvm/test/MC/AMDGPU/gfx11_asm_mubuf.s
+++ b/llvm/test/MC/AMDGPU/gfx11_asm_mubuf.s
@@ -1324,351 +1324,6 @@ buffer_load_u16 v5, off, s[8:11], s3 offset:4095 dlc
 buffer_load_u16 v5, off, s[8:11], s3 offset:4095 glc slc dlc
 // GFX11: encoding: [0xff,0x7f,0x48,0xe0,0x00,0x05,0x02,0x03]
 
-buffer_load_lds_b32 off, s[8:11], s3 offset:4095
-// GFX11: encoding: [0xff,0x0f,0xc4,0xe0,0x00,0x00,0x02,0x03]
-
-buffer_load_lds_b32 off, s[8:11], s3 offset:4095
-// GFX11: encoding: [0xff,0x0f,0xc4,0xe0,0x00,0x00,0x02,0x03]
-
-buffer_load_lds_b32 off, s[12:15], s3 offset:4095
-// GFX11: encoding: [0xff,0x0f,0xc4,0xe0,0x00,0x00,0x03,0x03]
-
-buffer_load_lds_b32 off, s[96:99], s3 offset:4095
-// GFX11: encoding: [0xff,0x0f,0xc4,0xe0,0x00,0x00,0x18,0x03]
-
-buffer_load_lds_b32 off, s[8:11], s101 offset:4095
-// GFX11: encoding: [0xff,0x0f,0xc4,0xe0,0x00,0x00,0x02,0x65]
-
-buffer_load_lds_b32 off, s[8:11], m0 offset:4095
-// GFX11: encoding: [0xff,0x0f,0xc4,0xe0,0x00,0x00,0x02,0x7d]
-
-buffer_load_lds_b32 off, s[8:11], 0 offset:4095
-// GFX11: encoding: [0xff,0x0f,0xc4,0xe0,0x00,0x00,0x02,0x80]
-
-buffer_load_lds_b32 off, s[8:11], -1 offset:4095
-// GFX11: encoding: [0xff,0x0f,0xc4,0xe0,0x00,0x00,0x02,0xc1]
-
-buffer_load_lds_b32 off, s[8:11], 0.5 offset:4095
-// GFX11: encoding: [0xff,0x0f,0xc4,0xe0,0x00,0x00,0x02,0xf0]
-
-buffer_load_lds_b32 off, s[8:11], -4.0 offset:4095
-// GFX11: encoding: [0xff,0x0f,0xc4,0xe0,0x00,0x00,0x02,0xf7]
-
-buffer_load_lds_b32 v0, s[8:11], s3 idxen offset:4095
-// GFX11: encoding: [0xff,0x0f,0xc4,0xe0,0x00,0x00,0x82,0x03]
-
-buffer_load_lds_b32 v0, s[8:11], s3 offen offset:4095
-// GFX11: encoding: [0xff,0x0f,0xc4,0xe0,0x00,0x00,0x42,0x03]
-
-buffer_load_lds_b32 off, s[8:11], s3
-// GFX11: encoding: [0x00,0x00,0xc4,0xe0,0x00,0x00,0x02,0x03]
-
-buffer_load_lds_b32 off, s[8:11], s3 offset:0
-// GFX11: encoding: [0x00,0x00,0xc4,0xe0,0x00,0x00,0x02,0x03]
-
-buffer_load_lds_b32 off, s[8:11], s3 offset:7
-// GFX11: encoding: [0x07,0x00,0xc4,0xe0,0x00,0x00,0x02,0x03]
-
-buffer_load_lds_b32 off, s[8:11], s3 offset:4095 glc
-// GFX11: encoding: [0xff,0x4f,0xc4,0xe0,0x00,0x00,0x02,0x03]
-
-buffer_load_lds_b32 off, s[8:11], s3 offset:4095 slc
-// GFX11: encoding: [0xff,0x1f,0xc4,0xe0,0x00,0x00,0x02,0x03]
-
-buffer_load_lds_b32 off, s[8:11], s3 offset:4095 dlc
-// GFX11: encoding: [0xff,0x2f,0xc4,0xe0,0x00,0x00,0x02,0x03]
-
-buffer_load_lds_b32 off, s[8:11], s3 offset:4095 glc slc dlc
-// GFX11: encoding: [0xff,0x7f,0xc4,0xe0,0x00,0x00,0x02,0x03]
-
-buffer_load_lds_b32 off, s[8:11], s3 lds
-// GFX11-ERR: :[[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction
-
-buffer_load_lds_format_x off, s[8:11], s3 offset:4095
-// GFX11: encoding: [0xff,0x0f,0xc8,0xe0,0x00,0x00,0x02,0x03]
-
-buffer_load_lds_format_x off, s[8:11], s3 offset:4095
-// GFX11: encoding: [0xff,0x0f,0xc8,0xe0,0x00,0x00,0x02,0x03]
-
-buffer_load_lds_format_x off, s[12:15], s3 offset:4095
-// GFX11: encoding: [0xff,0x0f,0xc8,0xe0,0x00,0x00,0x03,0x03]
-
-buffer_load_lds_format_x off, s[96:99], s3 offset:4095
-// GFX11: encoding: [0xff,0x0f,0xc8,0xe0,0x00,0x00,0x18,0x03]
-
-buffer_load_lds_format_x off, s[8:11], s101 offset:4095
-// GFX11: encoding: [0xff,0x0f,0xc8,0xe0,0x00,0x00,0x02,0x65]
-
-buffer_load_lds_format_x off, s[8:11], m0 offset:4095
-// GFX11: encoding: [0xff,0x0f,0xc8,0xe0,0x00,0x00,0x02,0x7d]
-
-buffer_load_lds_format_x off, s[8:11], 0 offset:4095
-// GFX11: encoding: [0xff,0x0f,0xc8,0xe0,0x00,0x00,0x02,0x80]
-
-buffer_load_lds_format_x off, s[8:11], -1 offset:4095
-// GFX11: encoding: [0xff,0x0f,0xc8,0xe0,0x00,0x00,0x02,0xc1]
-
-buffer_load_lds_format_x off, s[8:11], 0.5 offset:4095
-// GFX11: encoding: [0xff,0x0f,0xc8,0xe0,0x00,0x00,0x02,0xf0]
-
-buffer_load_lds_format_x off, s[8:11], -4.0 offset:4095
-// GFX11: encoding: [0xff,0x0f,0xc8,0xe0,0x00,0x00,0x02,0xf7]
-
-buffer_load_lds_format_x v0, s[8:11], s3 idxen offset:4095
-// GFX11: encoding: [0xff,0x0f,0xc8,0xe0,0x00,0x00,0x82,0x03]
-
-buffer_load_lds_format_x v0, s[8:11], s3 offen offset:4095
-// GFX11: encoding: [0xff,0x0f,0xc8,0xe0,0x00,0x00,0x42,0x03]
-
-buffer_load_lds_format_x off, s[8:11], s3
-// GFX11: encoding: [0x00,0x00,0xc8,0xe0,0x00,0x00,0x02,0x03]
-
-buffer_load_lds_format_x off, s[8:11], s3 offset:0
-// GFX11: encoding: [0x00,0x00,0xc8,0xe0,0x00,0x00,0x02,0x03]
-
-buffer_load_lds_format_x off, s[8:11], s3 offset:7
-// GFX11: encoding: [0x07,0x00,0xc8,0xe0,0x00,0x00,0x02,0x03]
-
-buffer_load_lds_format_x off, s[8:11], s3 offset:4095 glc
-// GFX11: encoding: [0xff,0x4f,0xc8,0xe0,0x00,0x00,0x02,0x03]
-
-buffer_load_lds_format_x off, s[8:11], s3 offset:4095 slc
-// GFX11: encoding: [0xff,0x1f,0xc8,0xe0,0x00,0x00,0x02,0x03]
-
-buffer_load_lds_format_x off, s[8:11], s3 offset:4095 dlc
-// GFX11: encoding: [0xff,0x2f,0xc8,0xe0,0x00,0x00,0x02,0x03]
-
-buffer_load_lds_format_x off, s[8:11], s3 offset:4095 glc slc dlc
-// GFX11: encoding: [0xff,0x7f,0xc8,0xe0,0x00,0x00,0x02,0x03]
-
-buffer_load_lds_i8 off, s[8:11], s3 offset:4095
-// GFX11: encoding: [0xff,0x0f,0xb8,0xe0,0x00,0x00,0x02,0x03]
-
-buffer_load_lds_i8 off, s[8:11], s3 offset:4095
-// GFX11: encoding: [0xff,0x0f,0xb8,0xe0,0x00,0x00,0x02,0x03]
-
-buffer_load_lds_i8 off, s[12:15], s3 offset:4095
-// GFX11: encoding: [0xff,0x0f,0xb8,0xe0,0x00,0x00,0x03,0x03]
-
-buffer_load_lds_i8 off, s[96:99], s3 offset:4095
-// GFX11: encoding: [0xff,0x0f,0xb8,0xe0,0x00,0x00,0x18,0x03]
-
-buffer_load_lds_i8 off, s[8:11], s101 offset:4095
-// GFX11: encoding: [0xff,0x0f,0xb8,0xe0,0x00,0x00,0x02,0x65]
-
-buffer_load_lds_i8 off, s[8:11], m0 offset:4095
-// GFX11: encoding: [0xff,0x0f,0xb8,0xe0,0x00,0x00,0x02,0x7d]
-
-buffer_load_lds_i8 off, s[8:11], 0 offset:4095
-// GFX11: encoding: [0xff,0x0f,0xb8,0xe0,0x00,0x00,0x02,0x80]
-
-buffer_load_lds_i8 off, s[8:11], -1 offset:4095
-// GFX11: encoding: [0xff,0x0f,0xb8,0xe0,0x00,0x00,0x02,0xc1]
-
-buffer_load_lds_i8 off, s[8:11], 0.5 offset:4095
-// GFX11: encoding: [0xff,0x0f,0xb8,0xe0,0x00,0x00,0x02,0xf0]
-
-buffer_load_lds_i8 off, s[8:11], -4.0 offset:4095
-// GFX11: encoding: [0xff,0x0f,0xb8,0xe0,0x00,0x00,0x02,0xf7]
-
-buffer_load_lds_i8 v0, s[8:11], s3 idxen offset:4095
-// GFX11: encoding: [0xff,0x0f,0xb8,0xe0,0x00,0x00,0x82,0x03]
-
-buffer_load_lds_i8 v0, s[8:11], s3 offen offset:4095
-// GFX11: encoding: [0xff,0x0f,0xb8,0xe0,0x00,0x00,0x42,0x03]
-
-buffer_load_lds_i8 off, s[8:11], s3
-// GFX11: encoding: [0x00,0x00,0xb8,0xe0,0x00,0x00,0x02,0x03]
-
-buffer_load_lds_i8 off, s[8:11], s3 offset:0
-// GFX11: encoding: [0x00,0x00,0xb8,0xe0,0x00,0x00,0x02,0x03]
-
-buffer_load_lds_i8 off, s[8:11], s3 offset:7
-// GFX11: encoding: [0x07,0x00,0xb8,0xe0,0x00,0x00,0x02,0x03]
-
-buffer_load_lds_i8 off, s[8:11], s3 offset:4095 glc
-// GFX11: encoding: [0xff,0x4f,0xb8,0xe0,0x00,0x00,0x02,0x03]
-
-buffer_load_lds_i8 off, s[8:11], s3 offset:4095 slc
-// GFX11: encoding: [0xff,0x1f,0xb8,0xe0,0x00,0x00,0x02,0x03]
-
-buffer_load_lds_i8 off, s[8:11], s3 offset:4095 dlc
-// GFX11: encoding: [0xff,0x2f,0xb8,0xe0,0x00,0x00,0x02,0x03]
-
-buffer_load_lds_i8 off, s[8:11], s3 offset:4095 glc slc dlc
-// GFX11: encoding: [0xff,0x7f,0xb8,0xe0,0x00,0x00,0x02,0x03]
-
-buffer_load_lds_i16 off, s[8:11], s3 offset:4095
-// GFX11: encoding: [0xff,0x0f,0xc0,0xe0,0x00,0x00,0x02,0x03]
-
-buffer_load_lds_i16 off, s[8:11], s3 offset:4095
-// GFX11: encoding: [0xff,0x0f,0xc0,0xe0,0x00,0x00,0x02,0x03]
-
-buffer_load_lds_i16 off, s[12:15], s3 offset:4095
-// GFX11: encoding: [0xff,0x0f,0xc0,0xe0,0x00,0x00,0x03,0x03]
-
-buffer_load_lds_i16 off, s[96:99], s3 offset:4095
-// GFX11: encoding: [0xff,0x0f,0xc0,0xe0,0x00,0x00,0x18,0x03]
-
-buffer_load_lds_i16 off, s[8:11], s101 offset:4095
-// GFX11: encoding: [0xff,0x0f,0xc0,0xe0,0x00,0x00,0x02,0x65]
-
-buffer_load_lds_i16 off, s[8:11], m0 offset:4095
-// GFX11: encoding: [0xff,0x0f,0xc0,0xe0,0x00,0x00,0x02,0x7d]
-
-buffer_load_lds_i16 off, s[8:11], 0 offset:4095
-// GFX11: encoding: [0xff,0x0f,0xc0,0xe0,0x00,0x00,0x02,0x80]
-
-buffer_load_lds_i16 off, s[8:11], -1 offset:4095
-// GFX11: encoding: [0xff,0x0f,0xc0,0xe0,0x00,0x00,0x02,0xc1]
-
-buffer_load_lds_i16 off, s[8:11], 0.5 offset:4095
-// GFX11: encoding: [0xff,0x0f,0xc0,0xe0,0x00,0x00,0x02,0xf0]
-
-buffer_load_lds_i16 off, s[8:11], -4.0 offset:4095
-// GFX11: encoding: [0xff,0x0f,0xc0,0xe0,0x00,0x00,0x02,0xf7]
-
-buffer_load_lds_i16 v0, s[8:11], s3 idxen offset:4095
-// GFX11: encoding: [0xff,0x0f,0xc0,0xe0,0x00,0x00,0x82,0x03]
-
-buffer_load_lds_i16 v0, s[8:11], s3 offen offset:4095
-// GFX11: encoding: [0xff,0x0f,0xc0,0xe0,0x00,0x00,0x42,0x03]
-
-buffer_load_lds_i16 off, s[8:11], s3
-// GFX11: encoding: [0x00,0x00,0xc0,0xe0,0x00,0x00,0x02,0x03]
-
-buffer_load_lds_i16 off, s[8:11], s3 offset:0
-// GFX11: encoding: [0x00,0x00,0xc0,0xe0,0x00,0x00,0x02,0x03]
-
-buffer_load_lds_i16 off, s[8:11], s3 offset:7
-// GFX11: encoding: [0x07,0x00,0xc0,0xe0,0x00,0x00,0x02,0x03]
-
-buffer_load_lds_i16 off, s[8:11], s3 offset:4095 glc
-// GFX11: encoding: [0xff,0x4f,0xc0,0xe0,0x00,0x00,0x02,0x03]
-
-buffer_load_lds_i16 off, s[8:11], s3 offset:4095 slc
-// GFX11: encoding: [0xff,0x1f,0xc0,0xe0,0x00,0x00,0x02,0x03]
-
-buffer_load_lds_i16 off, s[8:11], s3 offset:4095 dlc
-// GFX11: encoding: [0xff,0x2f,0xc0,0xe0,0x00,0x00,0x02,0x03]
-
-buffer_load_lds_i16 off, s[8:11], s3 offset:4095 glc slc dlc
-// GFX11: encoding: [0xff,0x7f,0xc0,0xe0,0x00,0x00,0x02,0x03]
-
-buffer_load_lds_u8 off, s[8:11], s3 offset:4095
-// GFX11: encoding: [0xff,0x0f,0xb4,0xe0,0x00,0x00,0x02,0x03]
-
-buffer_load_lds_u8 off, s[8:11], s3 offset:4095
-// GFX11: encoding: [0xff,0x0f,0xb4,0xe0,0x00,0x00,0x02,0x03]
-
-buffer_load_lds_u8 off, s[12:15], s3 offset:4095
-// GFX11: encoding: [0xff,0x0f,0xb4,0xe0,0x00,0x00,0x03,0x03]
-
-buffer_load_lds_u8 off, s[96:99], s3 offset:4095
-// GFX11: encoding: [0xff,0x0f,0xb4,0xe0,0x00,0x00,0x18,0x03]
-
-buffer_load_lds_u8 off, s[8:11], s101 offset:4095
-// GFX11: encoding: [0xff,0x0f,0xb4,0xe0,0x00,0x00,0x02,0x65]
-
-buffer_load_lds_u8 off, s[8:11], m0 offset:4095
-// GFX11: encoding: [0xff,0x0f,0xb4,0xe0,0x00,0x00,0x02,0x7d]
-
-buffer_load_lds_u8 off, s[8:11], 0 offset:4095
-// GFX11: encoding: [0xff,0x0f,0xb4,0xe0,0x00,0x00,0x02,0x80]
-
-buffer_load_lds_u8 off, s[8:11], -1 offset:4095
-// GFX11: encoding: [0xff,0x0f,0xb4,0xe0,0x00,0x00,0x02,0xc1]
-
-buffer_load_lds_u8 off, s[8:11], 0.5 offset:4095
-// GFX11: encoding: [0xff,0x0f,0xb4,0xe0,0x00,0x00,0x02,0xf0]
-
-buffer_load_lds_u8 off, s[8:11], -4.0 offset:4095
-// GFX11: encoding: [0xff,0x0f,0xb4,0xe0,0x00,0x00,0x02,0xf7]
-
-buffer_load_lds_u8 v0, s[8:11], s3 idxen offset:4095
-// GFX11: encoding: [0xff,0x0f,0xb4,0xe0,0x00,0x00,0x82,0x03]
-
-buffer_load_lds_u8 v0, s[8:11], s3 offen offset:4095
-// GFX11: encoding: [0xff,0x0f,0xb4,0xe0,0x00,0x00,0x42,0x03]
-
-buffer_load_lds_u8 off, s[8:11], s3
-// GFX11: encoding: [0x00,0x00,0xb4,0xe0,0x00,0x00,0x02,0x03]
-
-buffer_load_lds_u8 off, s[8:11], s3 offset:0
-// GFX11: encoding: [0x00,0x00,0xb4,0xe0,0x00,0x00,0x02,0x03]
-
-buffer_load_lds_u8 off, s[8:11], s3 offset:7
-// GFX11: encoding: [0x07,0x00,0xb4,0xe0,0x00,0x00,0x02,0x03]
-
-buffer_load_lds_u8 off, s[8:11], s3 offset:4095 ...
[truncated]

@jayfoad
Copy link
Contributor

jayfoad commented Mar 25, 2025

The tests for the regular buffer_load ... lds instructions for gfx11 are already present in AMDGPU/gfx11_asm_mubuf.s, where the compiler fails to encode the instructions for this target.

Could you please move those into gfx11_asm_mubuf_err.s? (Does not have to be part of this PR.)

Copy link
Contributor

@jayfoad jayfoad left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, thanks.

@jmmartinez jmmartinez merged commit db33978 into llvm:main Mar 25, 2025
15 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
backend:AMDGPU mc Machine (object) code
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants