[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