[llvm] AMDGPU/GlobalISel: Fix selecting i16 sext atomic loads on gfx6/gfx7 (PR #229723)

Matt Arsenault via llvm-commits llvm-commits at lists.llvm.org
Wed Oct 7 03:43:58 PDT 2026


https://github.com/arsenm created https://github.com/llvm/llvm-project/pull/229723

An atomic global sextload from i16 to i32 was incorrectly matched to
buffer_load_sbyte. The correct pattern to buffer_load_sshort is already there,
so remove the incorrect duplicate which was arbitrarily preferred.

Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>

>From cd72712fc82468e3b5607b3a9d708e4b00e8252d Mon Sep 17 00:00:00 2001
From: Matt Arsenault <Matthew.Arsenault at amd.com>
Date: Wed, 7 Oct 2026 12:34:04 +0200
Subject: [PATCH] AMDGPU/GlobalISel: Fix selecting i16 sext atomic loads on
 gfx6/gfx7

An atomic global sextload from i16 to i32 was incorrectly matched to
buffer_load_sbyte. The correct pattern to buffer_load_sshort is already there,
so remove the incorrect duplicate which was arbitrarily preferred.

Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
---
 llvm/lib/Target/AMDGPU/BUFInstructions.td                 | 1 -
 llvm/test/CodeGen/AMDGPU/GlobalISel/atomic_load_global.ll | 2 +-
 2 files changed, 1 insertion(+), 2 deletions(-)

diff --git a/llvm/lib/Target/AMDGPU/BUFInstructions.td b/llvm/lib/Target/AMDGPU/BUFInstructions.td
index 6cb0f77e0dbeb3..307d3afdfd4472 100644
--- a/llvm/lib/Target/AMDGPU/BUFInstructions.td
+++ b/llvm/lib/Target/AMDGPU/BUFInstructions.td
@@ -1076,7 +1076,6 @@ defm : MUBUF_Pseudo_Load_Pats<"BUFFER_LOAD_UBYTE", i32, extloadi8_global>;
 defm : MUBUF_Pseudo_Load_Pats<"BUFFER_LOAD_UBYTE", i32, zextloadi8_global>;
 defm : MUBUF_Pseudo_Load_Pats<"BUFFER_LOAD_SBYTE", i32, sextloadi8_global>;
 defm : MUBUF_Pseudo_Load_Pats<"BUFFER_LOAD_SBYTE", i32, atomic_load_sext_8_global>;
-defm : MUBUF_Pseudo_Load_Pats<"BUFFER_LOAD_SBYTE", i32, atomic_load_sext_16_global>;
 defm : MUBUF_Pseudo_Load_Pats<"BUFFER_LOAD_USHORT", i32, extloadi16_global>;
 defm : MUBUF_Pseudo_Load_Pats<"BUFFER_LOAD_USHORT", i32, zextloadi16_global>;
 defm : MUBUF_Pseudo_Load_Pats<"BUFFER_LOAD_SSHORT", i32, sextloadi16_global>;
diff --git a/llvm/test/CodeGen/AMDGPU/GlobalISel/atomic_load_global.ll b/llvm/test/CodeGen/AMDGPU/GlobalISel/atomic_load_global.ll
index f555a2073b46ce..09c61795666bfd 100644
--- a/llvm/test/CodeGen/AMDGPU/GlobalISel/atomic_load_global.ll
+++ b/llvm/test/CodeGen/AMDGPU/GlobalISel/atomic_load_global.ll
@@ -261,7 +261,7 @@ define i32 @atomic_load_global_monotonic_i16_sext_to_i32(ptr addrspace(1) %ptr)
 ; GFX6-NEXT:    s_mov_b32 s6, 0
 ; GFX6-NEXT:    s_mov_b32 s7, 0x100f000
 ; GFX6-NEXT:    s_mov_b64 s[4:5], 0
-; GFX6-NEXT:    buffer_load_sbyte v0, v[0:1], s[4:7], 0 addr64 glc
+; GFX6-NEXT:    buffer_load_sshort v0, v[0:1], s[4:7], 0 addr64 glc
 ; GFX6-NEXT:    s_waitcnt vmcnt(0)
 ; GFX6-NEXT:    s_setpc_b64 s[30:31]
 ;



More information about the llvm-commits mailing list