[llvm-branch-commits] [llvm] [AMDGPU] Add amdgcn.av.global.(load|store).b128 intrinsics (PR #191390)

Sameer Sahasrabuddhe via llvm-branch-commits llvm-branch-commits at lists.llvm.org
Sun Apr 12 22:06:01 PDT 2026


https://github.com/ssahasra updated https://github.com/llvm/llvm-project/pull/191390

>From c162ed802b2cf98b06c709e0f13895da69cdc973 Mon Sep 17 00:00:00 2001
From: Sameer Sahasrabuddhe <sameer.sahasrabuddhe at amd.com>
Date: Fri, 10 Apr 2026 14:25:04 +0530
Subject: [PATCH 1/3] [AMDGPU] Add amdgcn.av.global.(load|store).b128
 intrinsics

The two new intrinsica llvm.amdgcn.global.load.b128 and
llvm.amdgcn.global.store.b128 have availability and visibility semantics as
described in #191246. Each of them takes a scope operand that is then translated
to target-specific cache policy bits. This allows the user to control how the
side-effects of these loads and stores are made visible to other threads.

This is patch was extracted from #172090.

Co-authored-by: macurtis-amd <macurtis at amd.com>
Assisted-by: Claude Opus 4.6
---
 llvm/docs/AMDGPUUsage.rst                     |   105 +
 llvm/include/llvm/IR/IntrinsicsAMDGPU.td      |    25 +
 llvm/lib/IR/Verifier.cpp                      |    11 +
 .../Target/AMDGPU/AMDGPURegisterBankInfo.cpp  |     3 +
 llvm/lib/Target/AMDGPU/FLATInstructions.td    |    27 +-
 llvm/lib/Target/AMDGPU/SIISelLowering.cpp     |    23 +
 llvm/test/CodeGen/AMDGPU/amdgcn-av-scopes.ll  |   741 +
 .../AMDGPU/llvm.amdgcn.av.global.load.b128.ll | 30869 ++++++++++++++++
 .../llvm.amdgcn.av.global.store.b128.ll       |  3888 ++
 .../AMDGPU/unsupported-av-global-load.ll      |    22 +
 .../AMDGPU/unsupported-av-global-store.ll     |    22 +
 llvm/test/Verifier/AMDGPU/intrinsics-av.ll    |    15 +
 12 files changed, 35744 insertions(+), 7 deletions(-)
 create mode 100644 llvm/test/CodeGen/AMDGPU/amdgcn-av-scopes.ll
 create mode 100644 llvm/test/CodeGen/AMDGPU/llvm.amdgcn.av.global.load.b128.ll
 create mode 100644 llvm/test/CodeGen/AMDGPU/llvm.amdgcn.av.global.store.b128.ll
 create mode 100644 llvm/test/CodeGen/AMDGPU/unsupported-av-global-load.ll
 create mode 100644 llvm/test/CodeGen/AMDGPU/unsupported-av-global-store.ll
 create mode 100644 llvm/test/Verifier/AMDGPU/intrinsics-av.ll

diff --git a/llvm/docs/AMDGPUUsage.rst b/llvm/docs/AMDGPUUsage.rst
index 84db071445f53..bb7b43401f954 100644
--- a/llvm/docs/AMDGPUUsage.rst
+++ b/llvm/docs/AMDGPUUsage.rst
@@ -1775,6 +1775,111 @@ The AMDGPU backend implements the following LLVM IR intrinsics.
                                                    * :ref:`Synchronization Scope<amdgpu-intrinsics-syncscope-metadata-operand>`.
                                                      Note that the scope used must ensure that the L2 cache will be hit.
 
+  llvm.amdgcn.av.global.load.b128                     This intrinsic is supported on gfx9, gfx10, gfx11, and gfx12 targets.
+
+                                                   Signature:
+
+                                                   .. code-block:: llvm
+
+                                                      <4 x i32> @llvm.amdgcn.av.global.load.b128(
+                                                          ptr addrspace(1), ; source
+                                                          metadata)         ; scope    - e.g. '!0' where '!0 = !{!"wavegroup"}'
+
+                                                   Reads the value from the source address with cache behavior specified by the scope.
+
+                                                   The following table shows the mapping between valid scope values and target
+                                                   instruction flags or field values.
+
+                                                   ============== ========================== ========================== ========================== ========================== ==========================
+                                                   targets        instruction                           ``"wavefront"``            ``"workgroup"``                ``"agent"``      ``""`` (empty string)
+                                                   ============== ========================== ========================== ========================== ========================== ==========================
+                                                   gfx90*         ``global_load_dwordx4``                                                                             ``glc``                    ``glc``
+
+                                                   gfx942, gfx950 ``global_load_dwordx4``                        (wave)            ``sc0`` (group)           ``sc1`` (device)       ``sc0 sc1`` (system)
+
+                                                   gfx10*         ``global_load_dwordx4``                                                  ``glc``                ``glc dlc``                ``glc dlc``
+
+                                                   gfx11*         ``global_load_dwordx4``                                                  ``glc``                    ``glc``                    ``glc``
+
+                                                   gfx120*        ``av_global_load_b128``                             (CU)    ``scope:SCOPE_SE`` (SE)  ``scope:SCOPE_DEV`` (DEV)  ``scope:SCOPE_SYS`` (SYS)
+
+                                                   gfx125*        ``av_global_load_b128``                             (CU)                             ``scope:SCOPE_DEV`` (DEV)  ``scope:SCOPE_SYS`` (SYS)
+                                                   ============== ========================== ========================== ========================== ========================== ==========================
+
+                                                   For gfx90*, see "GLC Bit Explained" in the appropriate instruction set reference
+                                                   (e.g. Chapter 9.1.10 in "AMD Instinct MI100" Instruction Set Architecture Reference
+                                                   Guide).
+
+                                                   For gfx942 and gfx950 targets, see "Memory Scope and Temporal Controls" in the
+                                                   appropriate instruction set reference (e.g. Chapter 9.1.10.2 in the "AMD Instinct
+                                                   MI300" Instruction Set Architecture Reference Guide).
+
+                                                   For gfx10* targets, see "GLC, DLC and SLC Bit Explained" in the appropriate
+                                                   instruction set reference (e.g. Chapter 8.1.10 in "RDNA 2" Instruction Set Architecture
+                                                   Reference Guide)
+
+                                                   For gfx11* targets, see "Cache Controls: SLC, GLC and DLC" in the appropriate
+                                                   instruction set reference (e.g. Chapter 4.1.1 in "RDNA3" Instruction Set Architecture
+                                                   Reference Guide).
+
+                                                   For gfx12* targets, see "Cache Controls: SCOPE and Temporal-Hint" in the
+                                                   appropriate instruction set reference (e.g. Chapter 4.1.1 in the "RDNA4"
+                                                   Instruction Set Architecture Reference Guide).
+
+
+  llvm.amdgcn.av.global.store.b128                    This intrinsic is supported on gfx9, gfx10, gfx11, and gfx12 targets.
+
+                                                   Signature:
+
+                                                   .. code-block:: llvm
+
+                                                      void @llvm.amdgcn.av.global.store.b128(
+                                                          ptr addrspace(1), ; destination
+                                                          <4 x i32>,        ; value
+                                                          metadata)         ; scope    - e.g. '!0' where '!0 = !{!"wavegroup"}'
+
+                                                   Writes the value to the destination address with cache
+                                                   behavior specified by the scope.
+
+                                                   The following table shows the mapping between valid scope values and target
+                                                   instruction flags or field values.
+
+                                                   ============== ========================== ========================== ========================== ========================== ==========================
+                                                   targets        instruction                           ``"wavefront"``            ``"workgroup"``                ``"agent"``      ``""`` (empty string)
+                                                   ============== ========================== ========================== ========================== ========================== ==========================
+                                                   gfx90*         ``global_store_dwordx4``
+
+                                                   gfx942, gfx950 ``global_store_dwordx4``                       (wave)            ``sc0`` (group)           ``sc1`` (device)       ``sc0 sc1`` (system)
+
+                                                   gfx10*         ``global_store_dwordx4``
+
+                                                   gfx11*         ``global_store_dwordx4``
+
+                                                   gfx120*        ``av_global_store_b128``                            (CU)    ``scope:SCOPE_SE`` (SE)  ``scope:SCOPE_DEV`` (DEV)  ``scope:SCOPE_SYS`` (SYS)
+
+                                                   gfx125*        ``av_global_store_b128``                            (CU)                             ``scope:SCOPE_DEV`` (DEV)  ``scope:SCOPE_SYS`` (SYS)
+                                                   ============== ========================== ========================== ========================== ========================== ==========================
+
+                                                   For gfx90*, see "GLC Bit Explained" in the appropriate instruction set reference
+                                                   (e.g. Chapter 9.1.10 in "AMD Instinct MI100" Instruction Set Architecture Reference
+                                                   Guide).
+
+                                                   For gfx942 and gfx950 targets, see "Memory Scope and Temporal Controls" in the
+                                                   appropriate instruction set reference (e.g. Chapter 9.1.10.2 in the "AMD Instinct
+                                                   MI300" Instruction Set Architecture Reference Guide).
+
+                                                   For gfx10* targets, see "GLC, DLC and SLC Bit Explained" in the appropriate
+                                                   instruction set reference (e.g. Chapter 8.1.10 in "RDNA 2" Instruction Set
+                                                   Architecture Reference Guide)
+
+                                                   For gfx11* targets, see "Cache Controls: SLC, GLC and DLC" in the appropriate
+                                                   instruction set reference (e.g. Chapter 4.1.1 in "RDNA3" Instruction Set
+                                                   Architecture Reference Guide).
+
+                                                   For gfx12* targets, see "Cache Controls: SCOPE and Temporal-Hint" in the
+                                                   appropriate instruction set reference (e.g. Chapter 4.1.1 in the "RDNA4"
+                                                   Instruction Set Architecture Reference Guide).
+
   ==============================================   ==========================================================
 
 .. TODO::
diff --git a/llvm/include/llvm/IR/IntrinsicsAMDGPU.td b/llvm/include/llvm/IR/IntrinsicsAMDGPU.td
index 9528fb2b446bc..9fd2fee7c82fe 100644
--- a/llvm/include/llvm/IR/IntrinsicsAMDGPU.td
+++ b/llvm/include/llvm/IR/IntrinsicsAMDGPU.td
@@ -902,6 +902,31 @@ def int_amdgcn_bitop3 :
                         [LLVMMatchType<0>, LLVMMatchType<0>, LLVMMatchType<0>, llvm_i32_ty],
                         [ImmArg<ArgIndex<3>>]>;
 
+class AMDGPUAVGlobalStore : Intrinsic <
+  [],
+  [global_ptr_ty,          // Base global pointer to store to
+   llvm_v4i32_ty,          // Data to store
+   llvm_metadata_ty],      // Scope
+  [ IntrWriteMem, WriteOnly<ArgIndex<0>>, NoCapture<ArgIndex<0>>,
+    NonNull<ArgIndex<0>>, IntrWillReturn, IntrNoCallback, IntrNoFree ],
+  "",
+  [SDNPMemOperand, SDNPMayStore]
+>;
+
+def int_amdgcn_av_global_store_b128 : AMDGPUAVGlobalStore;
+
+class AMDGPUAVGlobalLoad : Intrinsic <
+  [llvm_v4i32_ty],
+  [global_ptr_ty,          // Base global pointer to load from
+   llvm_metadata_ty],      // Scope
+  [ IntrReadMem, ReadOnly<ArgIndex<0>>, NoCapture<ArgIndex<0>>,
+    NonNull<ArgIndex<0>>, IntrWillReturn, IntrNoCallback, IntrNoFree ],
+  "",
+  [SDNPMemOperand, SDNPMayLoad]
+>;
+
+def int_amdgcn_av_global_load_b128 : AMDGPUAVGlobalLoad;
+
 } // TargetPrefix = "amdgcn"
 
 // New-style image intrinsics
diff --git a/llvm/lib/IR/Verifier.cpp b/llvm/lib/IR/Verifier.cpp
index a86e8fdb7d73a..13294a6bb4bbc 100644
--- a/llvm/lib/IR/Verifier.cpp
+++ b/llvm/lib/IR/Verifier.cpp
@@ -7239,6 +7239,17 @@ void Verifier::visitIntrinsicCall(Intrinsic::ID ID, CallBase &Call) {
           &Call, Op);
     break;
   }
+  case Intrinsic::amdgcn_av_global_load_b128:
+  case Intrinsic::amdgcn_av_global_store_b128: {
+    // Last argument must be a MD string
+    auto *Op = cast<MetadataAsValue>(Call.getArgOperand(Call.arg_size() - 1));
+    auto *MD = dyn_cast<MDNode>(Op->getMetadata());
+    Check(MD && (MD->getNumOperands() == 1) && isa<MDString>(MD->getOperand(0)),
+          "global load/store intrinsics require that the last argument is a "
+          "metadata string",
+          &Call, Op);
+    break;
+  }
   case Intrinsic::nvvm_setmaxnreg_inc_sync_aligned_u32:
   case Intrinsic::nvvm_setmaxnreg_dec_sync_aligned_u32: {
     Value *V = Call.getArgOperand(0);
diff --git a/llvm/lib/Target/AMDGPU/AMDGPURegisterBankInfo.cpp b/llvm/lib/Target/AMDGPU/AMDGPURegisterBankInfo.cpp
index ebdd709c34f08..da19a8c14f197 100644
--- a/llvm/lib/Target/AMDGPU/AMDGPURegisterBankInfo.cpp
+++ b/llvm/lib/Target/AMDGPU/AMDGPURegisterBankInfo.cpp
@@ -5668,6 +5668,9 @@ AMDGPURegisterBankInfo::getInstrMapping(const MachineInstr &MI) const {
     case Intrinsic::amdgcn_flat_prefetch:
     case Intrinsic::amdgcn_global_prefetch:
       return getDefaultMappingVOP(MI);
+    case Intrinsic::amdgcn_av_global_load_b128:
+    case Intrinsic::amdgcn_av_global_store_b128:
+      return getDefaultMappingAllVGPR(MI);
     default:
       return getInvalidInstructionMapping();
     }
diff --git a/llvm/lib/Target/AMDGPU/FLATInstructions.td b/llvm/lib/Target/AMDGPU/FLATInstructions.td
index c0fb73df9c764..c156ec148de76 100644
--- a/llvm/lib/Target/AMDGPU/FLATInstructions.td
+++ b/llvm/lib/Target/AMDGPU/FLATInstructions.td
@@ -1827,6 +1827,19 @@ multiclass GlobalFLATStorePats<FLAT_Pseudo inst, SDPatternOperator node,
   }
 }
 
+def av_global_load_b128_intrin_pat : PatFrag<
+  (ops node:$ptr),
+  (int_amdgcn_av_global_load_b128 $ptr, srcvalue)>;
+
+def av_global_store_b128_intrin_pat : PatFrag<
+  (ops node:$data, node:$ptr),
+  (int_amdgcn_av_global_store_b128 $ptr, $data, srcvalue)>;
+
+let SubtargetPredicate = HasFlatGlobalInsts in {
+defm : GlobalFLATLoadPats <GLOBAL_LOAD_DWORDX4, av_global_load_b128_intrin_pat, v4i32>;
+defm : GlobalFLATStorePats <GLOBAL_STORE_DWORDX4, av_global_store_b128_intrin_pat, v4i32>;
+}
+
 multiclass GlobalFLATStorePats_D16_t16<string inst, SDPatternOperator node, ValueType vt> {
   def : FlatStoreSignedPat<!cast<FLAT_Pseudo>(inst#"_t16"), node, vt> {
     let AddedComplexity = 10;
@@ -3326,13 +3339,13 @@ defm GLOBAL_LOAD_SSHORT         : GLOBAL_Real_AllAddr_gfx11<0x013, "global_load_
 defm GLOBAL_LOAD_DWORD          : GLOBAL_Real_AllAddr_gfx11<0x014, "global_load_b32">;
 defm GLOBAL_LOAD_DWORDX2        : GLOBAL_Real_AllAddr_gfx11<0x015, "global_load_b64">;
 defm GLOBAL_LOAD_DWORDX3        : GLOBAL_Real_AllAddr_gfx11<0x016, "global_load_b96">;
-defm GLOBAL_LOAD_DWORDX4        : GLOBAL_Real_AllAddr_gfx11<0x017, "global_load_b128">;
+defm GLOBAL_LOAD_DWORDX4        : GLOBAL_Real_AllAddr_gfx11<0x017, "av_global_load_b128">;
 defm GLOBAL_STORE_BYTE          : GLOBAL_Real_AllAddr_gfx11<0x018, "global_store_b8">;
 defm GLOBAL_STORE_SHORT         : GLOBAL_Real_AllAddr_gfx11<0x019, "global_store_b16">;
 defm GLOBAL_STORE_DWORD         : GLOBAL_Real_AllAddr_gfx11<0x01a, "global_store_b32">;
 defm GLOBAL_STORE_DWORDX2       : GLOBAL_Real_AllAddr_gfx11<0x01b, "global_store_b64">;
 defm GLOBAL_STORE_DWORDX3       : GLOBAL_Real_AllAddr_gfx11<0x01c, "global_store_b96">;
-defm GLOBAL_STORE_DWORDX4       : GLOBAL_Real_AllAddr_gfx11<0x01d, "global_store_b128">;
+defm GLOBAL_STORE_DWORDX4       : GLOBAL_Real_AllAddr_gfx11<0x01d, "av_global_store_b128">;
 defm GLOBAL_LOAD_UBYTE_D16      : GLOBAL_Real_AllAddr_gfx11<0x01e, "global_load_d16_u8">;
 defm GLOBAL_LOAD_SBYTE_D16      : GLOBAL_Real_AllAddr_gfx11<0x01f, "global_load_d16_i8">;
 defm GLOBAL_LOAD_SHORT_D16      : GLOBAL_Real_AllAddr_gfx11<0x020, "global_load_d16_b16">;
@@ -3535,13 +3548,13 @@ defm GLOBAL_LOAD_SSHORT            : VFLAT_Real_AllAddr_gfx12<0x013, "global_loa
 defm GLOBAL_LOAD_DWORD             : VFLAT_Real_AllAddr_gfx12<0x014, "global_load_b32">;
 defm GLOBAL_LOAD_DWORDX2           : VFLAT_Real_AllAddr_gfx12<0x015, "global_load_b64">;
 defm GLOBAL_LOAD_DWORDX3           : VFLAT_Real_AllAddr_gfx12<0x016, "global_load_b96">;
-defm GLOBAL_LOAD_DWORDX4           : VFLAT_Real_AllAddr_gfx12<0x017, "global_load_b128">;
+defm GLOBAL_LOAD_DWORDX4           : VFLAT_Real_AllAddr_gfx12<0x017, "av_global_load_b128">;
 defm GLOBAL_STORE_BYTE             : VFLAT_Real_AllAddr_gfx12<0x018, "global_store_b8">;
 defm GLOBAL_STORE_SHORT            : VFLAT_Real_AllAddr_gfx12<0x019, "global_store_b16">;
 defm GLOBAL_STORE_DWORD            : VFLAT_Real_AllAddr_gfx12<0x01a, "global_store_b32">;
 defm GLOBAL_STORE_DWORDX2          : VFLAT_Real_AllAddr_gfx12<0x01b, "global_store_b64">;
 defm GLOBAL_STORE_DWORDX3          : VFLAT_Real_AllAddr_gfx12<0x01c, "global_store_b96">;
-defm GLOBAL_STORE_DWORDX4          : VFLAT_Real_AllAddr_gfx12<0x01d, "global_store_b128">;
+defm GLOBAL_STORE_DWORDX4          : VFLAT_Real_AllAddr_gfx12<0x01d, "av_global_store_b128">;
 defm GLOBAL_LOAD_UBYTE_D16         : VFLAT_Real_AllAddr_gfx12<0x01e, "global_load_d16_u8">;
 defm GLOBAL_LOAD_SBYTE_D16         : VFLAT_Real_AllAddr_gfx12<0x01f, "global_load_d16_i8">;
 defm GLOBAL_LOAD_SHORT_D16         : VFLAT_Real_AllAddr_gfx12<0x020, "global_load_d16_b16">;
@@ -3709,7 +3722,7 @@ defm GLOBAL_LOAD_TR4_B64              : VFLAT_Real_AllAddr_gfx1250<0x073>;
 defm GLOBAL_LOAD_TR6_B96              : VFLAT_Real_AllAddr_gfx1250<0x074>;
 
 // Additional aliases for global load transpose instructions.
-def : MnemonicAlias<"global_load_b128_tr_b16", "global_load_tr16_b128">, Requires<[isGFX125xOnly]>;
+def : MnemonicAlias<"av_global_load_b128_tr_b16", "global_load_tr16_b128">, Requires<[isGFX125xOnly]>;
 def : MnemonicAlias<"global_load_b64_tr_b8", "global_load_tr8_b64">, Requires<[isGFX125xOnly]>;
 def : MnemonicAlias<"global_load_b64_tr_b4", "global_load_tr4_b64">, Requires<[isGFX125xOnly]>;
 def : MnemonicAlias<"global_load_b96_tr_b6", "global_load_tr6_b96">, Requires<[isGFX125xOnly]>;
@@ -3852,7 +3865,7 @@ defm GLOBAL_LOAD_USHORT               : VFLAT_Real_AllAddr_gfx13<0x0a, "global_l
 defm GLOBAL_LOAD_SSHORT               : VFLAT_Real_AllAddr_gfx13<0x0b, "global_load_i16">;
 defm GLOBAL_LOAD_DWORD                : VFLAT_Real_AllAddr_gfx13<0x0c, "global_load_b32">;
 defm GLOBAL_LOAD_DWORDX2              : VFLAT_Real_AllAddr_gfx13<0x0d, "global_load_b64">;
-defm GLOBAL_LOAD_DWORDX4              : VFLAT_Real_AllAddr_gfx13<0x0e, "global_load_b128">;
+defm GLOBAL_LOAD_DWORDX4              : VFLAT_Real_AllAddr_gfx13<0x0e, "av_global_load_b128">;
 defm GLOBAL_LOAD_DWORDX3              : VFLAT_Real_AllAddr_gfx13<0x0f, "global_load_b96">;
 defm GLOBAL_LOAD_DWORD_ADDTID         : VFLAT_Real_AllAddr_gfx13<0x16, "global_load_addtid_b32">;
 defm GLOBAL_STORE_DWORD_ADDTID        : VFLAT_Real_AllAddr_gfx13<0x17, "global_store_addtid_b32">;
@@ -3862,7 +3875,7 @@ defm GLOBAL_STORE_SHORT               : VFLAT_Real_AllAddr_gfx13<0x1a, "global_s
 defm GLOBAL_STORE_SHORT_D16_HI        : VFLAT_Real_AllAddr_gfx13<0x1b, "global_store_d16_hi_b16">;
 defm GLOBAL_STORE_DWORD               : VFLAT_Real_AllAddr_gfx13<0x1c, "global_store_b32">;
 defm GLOBAL_STORE_DWORDX2             : VFLAT_Real_AllAddr_gfx13<0x1d, "global_store_b64">;
-defm GLOBAL_STORE_DWORDX4             : VFLAT_Real_AllAddr_gfx13<0x1e, "global_store_b128">;
+defm GLOBAL_STORE_DWORDX4             : VFLAT_Real_AllAddr_gfx13<0x1e, "av_global_store_b128">;
 defm GLOBAL_STORE_DWORDX3             : VFLAT_Real_AllAddr_gfx13<0x1f, "global_store_b96">;
 defm GLOBAL_LOAD_UBYTE_D16            : VFLAT_Real_AllAddr_gfx13<0x20, "global_load_d16_u8">;
 defm GLOBAL_LOAD_UBYTE_D16_HI         : VFLAT_Real_AllAddr_gfx13<0x21, "global_load_d16_hi_u8">;
diff --git a/llvm/lib/Target/AMDGPU/SIISelLowering.cpp b/llvm/lib/Target/AMDGPU/SIISelLowering.cpp
index 6750dfcbaac62..2393f2aa47244 100644
--- a/llvm/lib/Target/AMDGPU/SIISelLowering.cpp
+++ b/llvm/lib/Target/AMDGPU/SIISelLowering.cpp
@@ -1718,6 +1718,27 @@ void SITargetLowering::getTgtMemIntrinsic(SmallVectorImpl<IntrinsicInfo> &Infos,
     Infos.push_back(Info);
     return;
   }
+  case Intrinsic::amdgcn_av_global_load_b128:
+  case Intrinsic::amdgcn_av_global_store_b128: {
+    bool IsStore = IntrID == Intrinsic::amdgcn_av_global_store_b128;
+    Info.opc = IsStore ? ISD::INTRINSIC_VOID : ISD::INTRINSIC_W_CHAIN;
+    Info.memVT = MVT::v4i32;
+    Info.ptrVal = CI.getArgOperand(0);
+    Info.flags |=
+        IsStore ? MachineMemOperand::MOStore : MachineMemOperand::MOLoad;
+    // Pretend to be atomic so that SIMemoryLegalizer::expandStore sets cache
+    // flags appropriately.
+    Info.order = AtomicOrdering::Monotonic;
+
+    LLVMContext &Ctx = CI.getContext();
+    unsigned ScopeIdx = CI.arg_size() - 1;
+    MDNode *ScopeMD = cast<MDNode>(
+        cast<MetadataAsValue>(CI.getArgOperand(ScopeIdx))->getMetadata());
+    StringRef Scope = cast<MDString>(ScopeMD->getOperand(0))->getString();
+    Info.ssid = Ctx.getOrInsertSyncScopeID(Scope);
+    Infos.push_back(Info);
+    return;
+  }
   case Intrinsic::amdgcn_load_to_lds:
   case Intrinsic::amdgcn_load_async_to_lds:
   case Intrinsic::amdgcn_global_load_lds:
@@ -1834,6 +1855,8 @@ bool SITargetLowering::getAddrModeArguments(const IntrinsicInst *II,
   case Intrinsic::amdgcn_global_store_async_from_lds_b32:
   case Intrinsic::amdgcn_global_store_async_from_lds_b64:
   case Intrinsic::amdgcn_global_store_async_from_lds_b128:
+  case Intrinsic::amdgcn_av_global_load_b128:
+  case Intrinsic::amdgcn_av_global_store_b128:
     Ptr = II->getArgOperand(0);
     break;
   case Intrinsic::amdgcn_load_to_lds:
diff --git a/llvm/test/CodeGen/AMDGPU/amdgcn-av-scopes.ll b/llvm/test/CodeGen/AMDGPU/amdgcn-av-scopes.ll
new file mode 100644
index 0000000000000..1ff775944bb88
--- /dev/null
+++ b/llvm/test/CodeGen/AMDGPU/amdgcn-av-scopes.ll
@@ -0,0 +1,741 @@
+; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
+
+; Test that the scope metadata on global_load/store_b128 produces the same
+; cache policy bits as corresponding atomic operations.
+
+; RUN: llc -global-isel=0 -mtriple=amdgcn -mcpu=gfx942  < %s | FileCheck -check-prefixes=GFX942-SDAG  %s
+; RUN: llc -global-isel=0 -mtriple=amdgcn -mcpu=gfx1012 < %s | FileCheck -check-prefixes=GFX1012-SDAG %s
+; RUN: llc -global-isel=0 -mtriple=amdgcn -mcpu=gfx1100 < %s | FileCheck -check-prefixes=GFX1100-SDAG %s
+; RUN: llc -global-isel=0 -mtriple=amdgcn -mcpu=gfx1250 < %s | FileCheck -check-prefixes=GFX1250-SDAG %s
+
+; RUN: llc -global-isel=1 -mtriple=amdgcn -mcpu=gfx942  < %s | FileCheck -check-prefixes=GFX942-ISEL  %s
+; RUN: llc -global-isel=1 -mtriple=amdgcn -mcpu=gfx1012 < %s | FileCheck -check-prefixes=GFX1012-ISEL %s
+; RUN: llc -global-isel=1 -mtriple=amdgcn -mcpu=gfx1100 < %s | FileCheck -check-prefixes=GFX1100-ISEL %s
+; RUN: llc -global-isel=1 -mtriple=amdgcn -mcpu=gfx1250 < %s | FileCheck -check-prefixes=GFX1250-ISEL %s
+
+; scope: wavefront
+define <4 x i32> @load_wavefront(ptr addrspace(1) %p) {
+; GFX942-SDAG-LABEL: load_wavefront:
+; GFX942-SDAG:       ; %bb.0:
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: load_wavefront:
+; GFX1012-SDAG:       ; %bb.0:
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1100-SDAG-LABEL: load_wavefront:
+; GFX1100-SDAG:       ; %bb.0:
+; GFX1100-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1100-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX1100-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1100-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: load_wavefront:
+; GFX1250-SDAG:       ; %bb.0:
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX942-ISEL-LABEL: load_wavefront:
+; GFX942-ISEL:       ; %bb.0:
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: load_wavefront:
+; GFX1012-ISEL:       ; %bb.0:
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1100-ISEL-LABEL: load_wavefront:
+; GFX1100-ISEL:       ; %bb.0:
+; GFX1100-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1100-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX1100-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1100-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: load_wavefront:
+; GFX1250-ISEL:       ; %bb.0:
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+  %v = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %p, metadata !0)
+  ret <4 x i32> %v
+}
+
+; scope: workgroup
+define <4 x i32> @load_workgroup(ptr addrspace(1) %p) {
+; GFX942-SDAG-LABEL: load_workgroup:
+; GFX942-SDAG:       ; %bb.0:
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: load_workgroup:
+; GFX1012-SDAG:       ; %bb.0:
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1100-SDAG-LABEL: load_workgroup:
+; GFX1100-SDAG:       ; %bb.0:
+; GFX1100-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1100-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX1100-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1100-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: load_workgroup:
+; GFX1250-SDAG:       ; %bb.0:
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX942-ISEL-LABEL: load_workgroup:
+; GFX942-ISEL:       ; %bb.0:
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: load_workgroup:
+; GFX1012-ISEL:       ; %bb.0:
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1100-ISEL-LABEL: load_workgroup:
+; GFX1100-ISEL:       ; %bb.0:
+; GFX1100-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1100-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX1100-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1100-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: load_workgroup:
+; GFX1250-ISEL:       ; %bb.0:
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+  %v = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %p, metadata !1)
+  ret <4 x i32> %v
+}
+
+; scope: agent
+define <4 x i32> @load_agent(ptr addrspace(1) %p) {
+; GFX942-SDAG-LABEL: load_agent:
+; GFX942-SDAG:       ; %bb.0:
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc1
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: load_agent:
+; GFX1012-SDAG:       ; %bb.0:
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1100-SDAG-LABEL: load_agent:
+; GFX1100-SDAG:       ; %bb.0:
+; GFX1100-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1100-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX1100-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1100-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: load_agent:
+; GFX1250-SDAG:       ; %bb.0:
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_DEV
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX942-ISEL-LABEL: load_agent:
+; GFX942-ISEL:       ; %bb.0:
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc1
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: load_agent:
+; GFX1012-ISEL:       ; %bb.0:
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1100-ISEL-LABEL: load_agent:
+; GFX1100-ISEL:       ; %bb.0:
+; GFX1100-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1100-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX1100-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1100-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: load_agent:
+; GFX1250-ISEL:       ; %bb.0:
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_DEV
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+  %v = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %p, metadata !2)
+  ret <4 x i32> %v
+}
+
+; scope: system (empty string = system scope)
+define <4 x i32> @load_system(ptr addrspace(1) %p) {
+; GFX942-SDAG-LABEL: load_system:
+; GFX942-SDAG:       ; %bb.0:
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0 sc1
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: load_system:
+; GFX1012-SDAG:       ; %bb.0:
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1100-SDAG-LABEL: load_system:
+; GFX1100-SDAG:       ; %bb.0:
+; GFX1100-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1100-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX1100-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1100-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: load_system:
+; GFX1250-SDAG:       ; %bb.0:
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SYS
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX942-ISEL-LABEL: load_system:
+; GFX942-ISEL:       ; %bb.0:
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0 sc1
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: load_system:
+; GFX1012-ISEL:       ; %bb.0:
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1100-ISEL-LABEL: load_system:
+; GFX1100-ISEL:       ; %bb.0:
+; GFX1100-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1100-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX1100-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1100-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: load_system:
+; GFX1250-ISEL:       ; %bb.0:
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SYS
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+  %v = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %p, metadata !3)
+  ret <4 x i32> %v
+}
+
+; scope: singlethread
+define <4 x i32> @load_singlethread(ptr addrspace(1) %p) {
+; GFX942-SDAG-LABEL: load_singlethread:
+; GFX942-SDAG:       ; %bb.0:
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: load_singlethread:
+; GFX1012-SDAG:       ; %bb.0:
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1100-SDAG-LABEL: load_singlethread:
+; GFX1100-SDAG:       ; %bb.0:
+; GFX1100-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1100-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX1100-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1100-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: load_singlethread:
+; GFX1250-SDAG:       ; %bb.0:
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX942-ISEL-LABEL: load_singlethread:
+; GFX942-ISEL:       ; %bb.0:
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: load_singlethread:
+; GFX1012-ISEL:       ; %bb.0:
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1100-ISEL-LABEL: load_singlethread:
+; GFX1100-ISEL:       ; %bb.0:
+; GFX1100-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1100-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX1100-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1100-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: load_singlethread:
+; GFX1250-ISEL:       ; %bb.0:
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+  %v = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %p, metadata !4)
+  ret <4 x i32> %v
+}
+
+; scope: cluster
+define <4 x i32> @load_cluster(ptr addrspace(1) %p) {
+; GFX942-SDAG-LABEL: load_cluster:
+; GFX942-SDAG:       ; %bb.0:
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc1
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: load_cluster:
+; GFX1012-SDAG:       ; %bb.0:
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1100-SDAG-LABEL: load_cluster:
+; GFX1100-SDAG:       ; %bb.0:
+; GFX1100-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1100-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX1100-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1100-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: load_cluster:
+; GFX1250-SDAG:       ; %bb.0:
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SE
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX942-ISEL-LABEL: load_cluster:
+; GFX942-ISEL:       ; %bb.0:
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc1
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: load_cluster:
+; GFX1012-ISEL:       ; %bb.0:
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1100-ISEL-LABEL: load_cluster:
+; GFX1100-ISEL:       ; %bb.0:
+; GFX1100-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1100-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX1100-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1100-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: load_cluster:
+; GFX1250-ISEL:       ; %bb.0:
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SE
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+  %v = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %p, metadata !5)
+  ret <4 x i32> %v
+}
+
+; scope: wavefront
+define void @store_wavefront(ptr addrspace(1) %p, <4 x i32> %v) {
+; GFX942-SDAG-LABEL: store_wavefront:
+; GFX942-SDAG:       ; %bb.0:
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: store_wavefront:
+; GFX1012-SDAG:       ; %bb.0:
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1100-SDAG-LABEL: store_wavefront:
+; GFX1100-SDAG:       ; %bb.0:
+; GFX1100-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1100-SDAG-NEXT:    av_global_store_b128 v[0:1], v[2:5], off
+; GFX1100-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: store_wavefront:
+; GFX1250-SDAG:       ; %bb.0:
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    av_global_store_b128 v[0:1], v[2:5], off
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX942-ISEL-LABEL: store_wavefront:
+; GFX942-ISEL:       ; %bb.0:
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: store_wavefront:
+; GFX1012-ISEL:       ; %bb.0:
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1100-ISEL-LABEL: store_wavefront:
+; GFX1100-ISEL:       ; %bb.0:
+; GFX1100-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1100-ISEL-NEXT:    av_global_store_b128 v[0:1], v[2:5], off
+; GFX1100-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: store_wavefront:
+; GFX1250-ISEL:       ; %bb.0:
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    av_global_store_b128 v[0:1], v[2:5], off
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+  call void @llvm.amdgcn.av.global.store.b128(ptr addrspace(1) %p, <4 x i32> %v, metadata !0)
+  ret void
+}
+
+; scope: workgroup
+define void @store_workgroup(ptr addrspace(1) %p, <4 x i32> %v) {
+; GFX942-SDAG-LABEL: store_workgroup:
+; GFX942-SDAG:       ; %bb.0:
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off sc0
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: store_workgroup:
+; GFX1012-SDAG:       ; %bb.0:
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1100-SDAG-LABEL: store_workgroup:
+; GFX1100-SDAG:       ; %bb.0:
+; GFX1100-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1100-SDAG-NEXT:    av_global_store_b128 v[0:1], v[2:5], off
+; GFX1100-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: store_workgroup:
+; GFX1250-SDAG:       ; %bb.0:
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    av_global_store_b128 v[0:1], v[2:5], off
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX942-ISEL-LABEL: store_workgroup:
+; GFX942-ISEL:       ; %bb.0:
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off sc0
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: store_workgroup:
+; GFX1012-ISEL:       ; %bb.0:
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1100-ISEL-LABEL: store_workgroup:
+; GFX1100-ISEL:       ; %bb.0:
+; GFX1100-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1100-ISEL-NEXT:    av_global_store_b128 v[0:1], v[2:5], off
+; GFX1100-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: store_workgroup:
+; GFX1250-ISEL:       ; %bb.0:
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    av_global_store_b128 v[0:1], v[2:5], off
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+  call void @llvm.amdgcn.av.global.store.b128(ptr addrspace(1) %p, <4 x i32> %v, metadata !1)
+  ret void
+}
+
+; scope: agent
+define void @store_agent(ptr addrspace(1) %p, <4 x i32> %v) {
+; GFX942-SDAG-LABEL: store_agent:
+; GFX942-SDAG:       ; %bb.0:
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off sc1
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: store_agent:
+; GFX1012-SDAG:       ; %bb.0:
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1100-SDAG-LABEL: store_agent:
+; GFX1100-SDAG:       ; %bb.0:
+; GFX1100-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1100-SDAG-NEXT:    av_global_store_b128 v[0:1], v[2:5], off
+; GFX1100-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: store_agent:
+; GFX1250-SDAG:       ; %bb.0:
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    av_global_store_b128 v[0:1], v[2:5], off scope:SCOPE_DEV
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX942-ISEL-LABEL: store_agent:
+; GFX942-ISEL:       ; %bb.0:
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off sc1
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: store_agent:
+; GFX1012-ISEL:       ; %bb.0:
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1100-ISEL-LABEL: store_agent:
+; GFX1100-ISEL:       ; %bb.0:
+; GFX1100-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1100-ISEL-NEXT:    av_global_store_b128 v[0:1], v[2:5], off
+; GFX1100-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: store_agent:
+; GFX1250-ISEL:       ; %bb.0:
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    av_global_store_b128 v[0:1], v[2:5], off scope:SCOPE_DEV
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+  call void @llvm.amdgcn.av.global.store.b128(ptr addrspace(1) %p, <4 x i32> %v, metadata !2)
+  ret void
+}
+
+; scope: system (empty string = system scope)
+define void @store_system(ptr addrspace(1) %p, <4 x i32> %v) {
+; GFX942-SDAG-LABEL: store_system:
+; GFX942-SDAG:       ; %bb.0:
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off sc0 sc1
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: store_system:
+; GFX1012-SDAG:       ; %bb.0:
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1100-SDAG-LABEL: store_system:
+; GFX1100-SDAG:       ; %bb.0:
+; GFX1100-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1100-SDAG-NEXT:    av_global_store_b128 v[0:1], v[2:5], off
+; GFX1100-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: store_system:
+; GFX1250-SDAG:       ; %bb.0:
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    av_global_store_b128 v[0:1], v[2:5], off scope:SCOPE_SYS
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX942-ISEL-LABEL: store_system:
+; GFX942-ISEL:       ; %bb.0:
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off sc0 sc1
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: store_system:
+; GFX1012-ISEL:       ; %bb.0:
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1100-ISEL-LABEL: store_system:
+; GFX1100-ISEL:       ; %bb.0:
+; GFX1100-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1100-ISEL-NEXT:    av_global_store_b128 v[0:1], v[2:5], off
+; GFX1100-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: store_system:
+; GFX1250-ISEL:       ; %bb.0:
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    av_global_store_b128 v[0:1], v[2:5], off scope:SCOPE_SYS
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+  call void @llvm.amdgcn.av.global.store.b128(ptr addrspace(1) %p, <4 x i32> %v, metadata !3)
+  ret void
+}
+
+; scope: singlethread
+define void @store_singlethread(ptr addrspace(1) %p, <4 x i32> %v) {
+; GFX942-SDAG-LABEL: store_singlethread:
+; GFX942-SDAG:       ; %bb.0:
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: store_singlethread:
+; GFX1012-SDAG:       ; %bb.0:
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1100-SDAG-LABEL: store_singlethread:
+; GFX1100-SDAG:       ; %bb.0:
+; GFX1100-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1100-SDAG-NEXT:    av_global_store_b128 v[0:1], v[2:5], off
+; GFX1100-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: store_singlethread:
+; GFX1250-SDAG:       ; %bb.0:
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    av_global_store_b128 v[0:1], v[2:5], off
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX942-ISEL-LABEL: store_singlethread:
+; GFX942-ISEL:       ; %bb.0:
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: store_singlethread:
+; GFX1012-ISEL:       ; %bb.0:
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1100-ISEL-LABEL: store_singlethread:
+; GFX1100-ISEL:       ; %bb.0:
+; GFX1100-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1100-ISEL-NEXT:    av_global_store_b128 v[0:1], v[2:5], off
+; GFX1100-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: store_singlethread:
+; GFX1250-ISEL:       ; %bb.0:
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    av_global_store_b128 v[0:1], v[2:5], off
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+  call void @llvm.amdgcn.av.global.store.b128(ptr addrspace(1) %p, <4 x i32> %v, metadata !4)
+  ret void
+}
+
+; scope: cluster
+define void @store_cluster(ptr addrspace(1) %p, <4 x i32> %v) {
+; GFX942-SDAG-LABEL: store_cluster:
+; GFX942-SDAG:       ; %bb.0:
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off sc1
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: store_cluster:
+; GFX1012-SDAG:       ; %bb.0:
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1100-SDAG-LABEL: store_cluster:
+; GFX1100-SDAG:       ; %bb.0:
+; GFX1100-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1100-SDAG-NEXT:    av_global_store_b128 v[0:1], v[2:5], off
+; GFX1100-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: store_cluster:
+; GFX1250-SDAG:       ; %bb.0:
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    av_global_store_b128 v[0:1], v[2:5], off scope:SCOPE_SE
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX942-ISEL-LABEL: store_cluster:
+; GFX942-ISEL:       ; %bb.0:
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off sc1
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: store_cluster:
+; GFX1012-ISEL:       ; %bb.0:
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1100-ISEL-LABEL: store_cluster:
+; GFX1100-ISEL:       ; %bb.0:
+; GFX1100-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1100-ISEL-NEXT:    av_global_store_b128 v[0:1], v[2:5], off
+; GFX1100-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: store_cluster:
+; GFX1250-ISEL:       ; %bb.0:
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    av_global_store_b128 v[0:1], v[2:5], off scope:SCOPE_SE
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+  call void @llvm.amdgcn.av.global.store.b128(ptr addrspace(1) %p, <4 x i32> %v, metadata !5)
+  ret void
+}
+
+!0 = !{!"wavefront"}
+!1 = !{!"workgroup"}
+!2 = !{!"agent"}
+!3 = !{!""}
+!4 = !{!"singlethread"}
+!5 = !{!"cluster"}
diff --git a/llvm/test/CodeGen/AMDGPU/llvm.amdgcn.av.global.load.b128.ll b/llvm/test/CodeGen/AMDGPU/llvm.amdgcn.av.global.load.b128.ll
new file mode 100644
index 0000000000000..3c5c80a5b64e7
--- /dev/null
+++ b/llvm/test/CodeGen/AMDGPU/llvm.amdgcn.av.global.load.b128.ll
@@ -0,0 +1,30869 @@
+; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
+
+; RUN: llc -global-isel=0 -mtriple=amdgcn -mcpu=gfx9-generic    < %s  | FileCheck -check-prefixes=GFX,GFX-SDAG,GFX9-GENERIC-SDAG    %s
+; RUN: llc -global-isel=0 -mtriple=amdgcn -mcpu=gfx906          < %s  | FileCheck -check-prefixes=GFX,GFX-SDAG,GFX906-SDAG          %s
+; RUN: llc -global-isel=0 -mtriple=amdgcn -mcpu=gfx908          < %s  | FileCheck -check-prefixes=GFX,GFX-SDAG,GFX908-SDAG          %s
+; RUN: llc -global-isel=0 -mtriple=amdgcn -mcpu=gfx90a          < %s  | FileCheck -check-prefixes=GFX,GFX-SDAG,GFX90A-SDAG          %s
+; RUN: llc -global-isel=0 -mtriple=amdgcn -mcpu=gfx9-4-generic  < %s  | FileCheck -check-prefixes=GFX,GFX-SDAG,GFX9-4-GENERIC-SDAG  %s
+; RUN: llc -global-isel=0 -mtriple=amdgcn -mcpu=gfx942          < %s  | FileCheck -check-prefixes=GFX,GFX-SDAG,GFX942-SDAG          %s
+; RUN: llc -global-isel=0 -mtriple=amdgcn -mcpu=gfx950          < %s  | FileCheck -check-prefixes=GFX,GFX-SDAG,GFX950-SDAG          %s
+; RUN: llc -global-isel=0 -mtriple=amdgcn -mcpu=gfx10-1-generic < %s  | FileCheck -check-prefixes=GFX,GFX-SDAG,GFX10-1-GENERIC-SDAG %s
+; RUN: llc -global-isel=0 -mtriple=amdgcn -mcpu=gfx1012         < %s  | FileCheck -check-prefixes=GFX,GFX-SDAG,GFX1012-SDAG         %s
+; RUN: llc -global-isel=0 -mtriple=amdgcn -mcpu=gfx10-3-generic < %s  | FileCheck -check-prefixes=GFX,GFX-SDAG,GFX10-3-GENERIC-SDAG %s
+; RUN: llc -global-isel=0 -mtriple=amdgcn -mcpu=gfx11-generic   < %s  | FileCheck -check-prefixes=GFX,GFX-SDAG,GFX11-GENERIC-SDAG   %s
+; RUN: llc -global-isel=0 -mtriple=amdgcn -mcpu=gfx1250         < %s  | FileCheck -check-prefixes=GFX,GFX-SDAG,GFX1250-SDAG         %s
+; RUN: llc -global-isel=0 -mtriple=amdgcn -mcpu=gfx12-generic   < %s  | FileCheck -check-prefixes=GFX,GFX-SDAG,GFX12-GENERIC-SDAG   %s
+
+; RUN: llc -global-isel=1 -mtriple=amdgcn -mcpu=gfx9-generic    < %s  | FileCheck -check-prefixes=GFX,GFX-ISEL,GFX9-GENERIC-ISEL    %s
+; RUN: llc -global-isel=1 -mtriple=amdgcn -mcpu=gfx906          < %s  | FileCheck -check-prefixes=GFX,GFX-ISEL,GFX906-ISEL          %s
+; RUN: llc -global-isel=1 -mtriple=amdgcn -mcpu=gfx908          < %s  | FileCheck -check-prefixes=GFX,GFX-ISEL,GFX908-ISEL          %s
+; RUN: llc -global-isel=1 -mtriple=amdgcn -mcpu=gfx90a          < %s  | FileCheck -check-prefixes=GFX,GFX-ISEL,GFX90A-ISEL          %s
+; RUN: llc -global-isel=1 -mtriple=amdgcn -mcpu=gfx9-4-generic  < %s  | FileCheck -check-prefixes=GFX,GFX-ISEL,GFX9-4-GENERIC-ISEL  %s
+; RUN: llc -global-isel=1 -mtriple=amdgcn -mcpu=gfx942          < %s  | FileCheck -check-prefixes=GFX,GFX-ISEL,GFX942-ISEL          %s
+; RUN: llc -global-isel=1 -mtriple=amdgcn -mcpu=gfx950          < %s  | FileCheck -check-prefixes=GFX,GFX-ISEL,GFX950-ISEL          %s
+; RUN: llc -global-isel=1 -mtriple=amdgcn -mcpu=gfx10-1-generic < %s  | FileCheck -check-prefixes=GFX,GFX-ISEL,GFX10-1-GENERIC-ISEL %s
+; RUN: llc -global-isel=1 -mtriple=amdgcn -mcpu=gfx1012         < %s  | FileCheck -check-prefixes=GFX,GFX-ISEL,GFX1012-ISEL         %s
+; RUN: llc -global-isel=1 -mtriple=amdgcn -mcpu=gfx10-3-generic < %s  | FileCheck -check-prefixes=GFX,GFX-ISEL,GFX10-3-GENERIC-ISEL %s
+; RUN: llc -global-isel=1 -mtriple=amdgcn -mcpu=gfx11-generic   < %s  | FileCheck -check-prefixes=GFX,GFX-ISEL,GFX11-GENERIC-ISEL   %s
+; RUN: llc -global-isel=1 -mtriple=amdgcn -mcpu=gfx1250         < %s  | FileCheck -check-prefixes=GFX,GFX-ISEL,GFX1250-ISEL         %s
+; RUN: llc -global-isel=1 -mtriple=amdgcn -mcpu=gfx12-generic   < %s  | FileCheck -check-prefixes=GFX,GFX-ISEL,GFX12-GENERIC-ISEL   %s
+
+
+;;==============================================================================
+;; A few basic test cases
+;;==============================================================================
+define <4 x i32> @av_global_load_b128_0_00(ptr addrspace(1) %addr) {
+; GFX9-GENERIC-SDAG-LABEL: av_global_load_b128_0_00:
+; GFX9-GENERIC-SDAG:       ; %bb.0: ; %entry
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-SDAG-LABEL: av_global_load_b128_0_00:
+; GFX906-SDAG:       ; %bb.0: ; %entry
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-SDAG-LABEL: av_global_load_b128_0_00:
+; GFX908-SDAG:       ; %bb.0: ; %entry
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-SDAG-LABEL: av_global_load_b128_0_00:
+; GFX90A-SDAG:       ; %bb.0: ; %entry
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-SDAG-LABEL: av_global_load_b128_0_00:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0: ; %entry
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-SDAG-LABEL: av_global_load_b128_0_00:
+; GFX942-SDAG:       ; %bb.0: ; %entry
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-SDAG-LABEL: av_global_load_b128_0_00:
+; GFX950-SDAG:       ; %bb.0: ; %entry
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-SDAG-LABEL: av_global_load_b128_0_00:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0: ; %entry
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: av_global_load_b128_0_00:
+; GFX1012-SDAG:       ; %bb.0: ; %entry
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-SDAG-LABEL: av_global_load_b128_0_00:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0: ; %entry
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-SDAG-LABEL: av_global_load_b128_0_00:
+; GFX11-GENERIC-SDAG:       ; %bb.0: ; %entry
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: av_global_load_b128_0_00:
+; GFX1250-SDAG:       ; %bb.0: ; %entry
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-SDAG-LABEL: av_global_load_b128_0_00:
+; GFX12-GENERIC-SDAG:       ; %bb.0: ; %entry
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-GENERIC-ISEL-LABEL: av_global_load_b128_0_00:
+; GFX9-GENERIC-ISEL:       ; %bb.0: ; %entry
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-ISEL-LABEL: av_global_load_b128_0_00:
+; GFX906-ISEL:       ; %bb.0: ; %entry
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-ISEL-LABEL: av_global_load_b128_0_00:
+; GFX908-ISEL:       ; %bb.0: ; %entry
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-ISEL-LABEL: av_global_load_b128_0_00:
+; GFX90A-ISEL:       ; %bb.0: ; %entry
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-ISEL-LABEL: av_global_load_b128_0_00:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0: ; %entry
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-ISEL-LABEL: av_global_load_b128_0_00:
+; GFX942-ISEL:       ; %bb.0: ; %entry
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-ISEL-LABEL: av_global_load_b128_0_00:
+; GFX950-ISEL:       ; %bb.0: ; %entry
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-ISEL-LABEL: av_global_load_b128_0_00:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0: ; %entry
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: av_global_load_b128_0_00:
+; GFX1012-ISEL:       ; %bb.0: ; %entry
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-ISEL-LABEL: av_global_load_b128_0_00:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0: ; %entry
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-ISEL-LABEL: av_global_load_b128_0_00:
+; GFX11-GENERIC-ISEL:       ; %bb.0: ; %entry
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: av_global_load_b128_0_00:
+; GFX1250-ISEL:       ; %bb.0: ; %entry
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-ISEL-LABEL: av_global_load_b128_0_00:
+; GFX12-GENERIC-ISEL:       ; %bb.0: ; %entry
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+entry:
+  %data = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %addr, metadata !0)
+  ret <4 x i32> %data
+}
+
+define <4 x i32> @av_global_load_b128_0_01(ptr addrspace(1) %addr) {
+; GFX9-GENERIC-SDAG-LABEL: av_global_load_b128_0_01:
+; GFX9-GENERIC-SDAG:       ; %bb.0: ; %entry
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-SDAG-LABEL: av_global_load_b128_0_01:
+; GFX906-SDAG:       ; %bb.0: ; %entry
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-SDAG-LABEL: av_global_load_b128_0_01:
+; GFX908-SDAG:       ; %bb.0: ; %entry
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-SDAG-LABEL: av_global_load_b128_0_01:
+; GFX90A-SDAG:       ; %bb.0: ; %entry
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-SDAG-LABEL: av_global_load_b128_0_01:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0: ; %entry
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-SDAG-LABEL: av_global_load_b128_0_01:
+; GFX942-SDAG:       ; %bb.0: ; %entry
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-SDAG-LABEL: av_global_load_b128_0_01:
+; GFX950-SDAG:       ; %bb.0: ; %entry
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-SDAG-LABEL: av_global_load_b128_0_01:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0: ; %entry
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: av_global_load_b128_0_01:
+; GFX1012-SDAG:       ; %bb.0: ; %entry
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-SDAG-LABEL: av_global_load_b128_0_01:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0: ; %entry
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-SDAG-LABEL: av_global_load_b128_0_01:
+; GFX11-GENERIC-SDAG:       ; %bb.0: ; %entry
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: av_global_load_b128_0_01:
+; GFX1250-SDAG:       ; %bb.0: ; %entry
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-SDAG-LABEL: av_global_load_b128_0_01:
+; GFX12-GENERIC-SDAG:       ; %bb.0: ; %entry
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SE
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-GENERIC-ISEL-LABEL: av_global_load_b128_0_01:
+; GFX9-GENERIC-ISEL:       ; %bb.0: ; %entry
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-ISEL-LABEL: av_global_load_b128_0_01:
+; GFX906-ISEL:       ; %bb.0: ; %entry
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-ISEL-LABEL: av_global_load_b128_0_01:
+; GFX908-ISEL:       ; %bb.0: ; %entry
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-ISEL-LABEL: av_global_load_b128_0_01:
+; GFX90A-ISEL:       ; %bb.0: ; %entry
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-ISEL-LABEL: av_global_load_b128_0_01:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0: ; %entry
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-ISEL-LABEL: av_global_load_b128_0_01:
+; GFX942-ISEL:       ; %bb.0: ; %entry
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-ISEL-LABEL: av_global_load_b128_0_01:
+; GFX950-ISEL:       ; %bb.0: ; %entry
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-ISEL-LABEL: av_global_load_b128_0_01:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0: ; %entry
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: av_global_load_b128_0_01:
+; GFX1012-ISEL:       ; %bb.0: ; %entry
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-ISEL-LABEL: av_global_load_b128_0_01:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0: ; %entry
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-ISEL-LABEL: av_global_load_b128_0_01:
+; GFX11-GENERIC-ISEL:       ; %bb.0: ; %entry
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: av_global_load_b128_0_01:
+; GFX1250-ISEL:       ; %bb.0: ; %entry
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-ISEL-LABEL: av_global_load_b128_0_01:
+; GFX12-GENERIC-ISEL:       ; %bb.0: ; %entry
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SE
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+entry:
+  %data = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %addr, metadata !1)
+  ret <4 x i32> %data
+}
+
+define <4 x i32> @av_global_load_b128_0_10(ptr addrspace(1) %addr) {
+; GFX9-GENERIC-SDAG-LABEL: av_global_load_b128_0_10:
+; GFX9-GENERIC-SDAG:       ; %bb.0: ; %entry
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-SDAG-LABEL: av_global_load_b128_0_10:
+; GFX906-SDAG:       ; %bb.0: ; %entry
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-SDAG-LABEL: av_global_load_b128_0_10:
+; GFX908-SDAG:       ; %bb.0: ; %entry
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-SDAG-LABEL: av_global_load_b128_0_10:
+; GFX90A-SDAG:       ; %bb.0: ; %entry
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-SDAG-LABEL: av_global_load_b128_0_10:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0: ; %entry
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc1
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-SDAG-LABEL: av_global_load_b128_0_10:
+; GFX942-SDAG:       ; %bb.0: ; %entry
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc1
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-SDAG-LABEL: av_global_load_b128_0_10:
+; GFX950-SDAG:       ; %bb.0: ; %entry
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc1
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-SDAG-LABEL: av_global_load_b128_0_10:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0: ; %entry
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: av_global_load_b128_0_10:
+; GFX1012-SDAG:       ; %bb.0: ; %entry
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-SDAG-LABEL: av_global_load_b128_0_10:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0: ; %entry
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-SDAG-LABEL: av_global_load_b128_0_10:
+; GFX11-GENERIC-SDAG:       ; %bb.0: ; %entry
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: av_global_load_b128_0_10:
+; GFX1250-SDAG:       ; %bb.0: ; %entry
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_DEV
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-SDAG-LABEL: av_global_load_b128_0_10:
+; GFX12-GENERIC-SDAG:       ; %bb.0: ; %entry
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_DEV
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-GENERIC-ISEL-LABEL: av_global_load_b128_0_10:
+; GFX9-GENERIC-ISEL:       ; %bb.0: ; %entry
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-ISEL-LABEL: av_global_load_b128_0_10:
+; GFX906-ISEL:       ; %bb.0: ; %entry
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-ISEL-LABEL: av_global_load_b128_0_10:
+; GFX908-ISEL:       ; %bb.0: ; %entry
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-ISEL-LABEL: av_global_load_b128_0_10:
+; GFX90A-ISEL:       ; %bb.0: ; %entry
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-ISEL-LABEL: av_global_load_b128_0_10:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0: ; %entry
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc1
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-ISEL-LABEL: av_global_load_b128_0_10:
+; GFX942-ISEL:       ; %bb.0: ; %entry
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc1
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-ISEL-LABEL: av_global_load_b128_0_10:
+; GFX950-ISEL:       ; %bb.0: ; %entry
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc1
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-ISEL-LABEL: av_global_load_b128_0_10:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0: ; %entry
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: av_global_load_b128_0_10:
+; GFX1012-ISEL:       ; %bb.0: ; %entry
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-ISEL-LABEL: av_global_load_b128_0_10:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0: ; %entry
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-ISEL-LABEL: av_global_load_b128_0_10:
+; GFX11-GENERIC-ISEL:       ; %bb.0: ; %entry
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: av_global_load_b128_0_10:
+; GFX1250-ISEL:       ; %bb.0: ; %entry
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_DEV
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-ISEL-LABEL: av_global_load_b128_0_10:
+; GFX12-GENERIC-ISEL:       ; %bb.0: ; %entry
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_DEV
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+entry:
+  %data = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %addr, metadata !2)
+  ret <4 x i32> %data
+}
+
+define <4 x i32> @av_global_load_b128_0_11(ptr addrspace(1) %addr) {
+; GFX9-GENERIC-SDAG-LABEL: av_global_load_b128_0_11:
+; GFX9-GENERIC-SDAG:       ; %bb.0: ; %entry
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-SDAG-LABEL: av_global_load_b128_0_11:
+; GFX906-SDAG:       ; %bb.0: ; %entry
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-SDAG-LABEL: av_global_load_b128_0_11:
+; GFX908-SDAG:       ; %bb.0: ; %entry
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-SDAG-LABEL: av_global_load_b128_0_11:
+; GFX90A-SDAG:       ; %bb.0: ; %entry
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-SDAG-LABEL: av_global_load_b128_0_11:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0: ; %entry
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0 sc1
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-SDAG-LABEL: av_global_load_b128_0_11:
+; GFX942-SDAG:       ; %bb.0: ; %entry
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0 sc1
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-SDAG-LABEL: av_global_load_b128_0_11:
+; GFX950-SDAG:       ; %bb.0: ; %entry
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0 sc1
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-SDAG-LABEL: av_global_load_b128_0_11:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0: ; %entry
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: av_global_load_b128_0_11:
+; GFX1012-SDAG:       ; %bb.0: ; %entry
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-SDAG-LABEL: av_global_load_b128_0_11:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0: ; %entry
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-SDAG-LABEL: av_global_load_b128_0_11:
+; GFX11-GENERIC-SDAG:       ; %bb.0: ; %entry
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: av_global_load_b128_0_11:
+; GFX1250-SDAG:       ; %bb.0: ; %entry
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SYS
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-SDAG-LABEL: av_global_load_b128_0_11:
+; GFX12-GENERIC-SDAG:       ; %bb.0: ; %entry
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SYS
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-GENERIC-ISEL-LABEL: av_global_load_b128_0_11:
+; GFX9-GENERIC-ISEL:       ; %bb.0: ; %entry
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-ISEL-LABEL: av_global_load_b128_0_11:
+; GFX906-ISEL:       ; %bb.0: ; %entry
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-ISEL-LABEL: av_global_load_b128_0_11:
+; GFX908-ISEL:       ; %bb.0: ; %entry
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-ISEL-LABEL: av_global_load_b128_0_11:
+; GFX90A-ISEL:       ; %bb.0: ; %entry
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-ISEL-LABEL: av_global_load_b128_0_11:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0: ; %entry
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0 sc1
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-ISEL-LABEL: av_global_load_b128_0_11:
+; GFX942-ISEL:       ; %bb.0: ; %entry
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0 sc1
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-ISEL-LABEL: av_global_load_b128_0_11:
+; GFX950-ISEL:       ; %bb.0: ; %entry
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0 sc1
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-ISEL-LABEL: av_global_load_b128_0_11:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0: ; %entry
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: av_global_load_b128_0_11:
+; GFX1012-ISEL:       ; %bb.0: ; %entry
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-ISEL-LABEL: av_global_load_b128_0_11:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0: ; %entry
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-ISEL-LABEL: av_global_load_b128_0_11:
+; GFX11-GENERIC-ISEL:       ; %bb.0: ; %entry
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: av_global_load_b128_0_11:
+; GFX1250-ISEL:       ; %bb.0: ; %entry
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SYS
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-ISEL-LABEL: av_global_load_b128_0_11:
+; GFX12-GENERIC-ISEL:       ; %bb.0: ; %entry
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SYS
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+entry:
+  %data = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %addr, metadata !3)
+  ret <4 x i32> %data
+}
+
+define <4 x i32> @av_global_load_b128_saddr_0_00(ptr addrspace(1) inreg %addr) {
+; GFX9-GENERIC-SDAG-LABEL: av_global_load_b128_saddr_0_00:
+; GFX9-GENERIC-SDAG:       ; %bb.0: ; %entry
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17]
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-SDAG-LABEL: av_global_load_b128_saddr_0_00:
+; GFX906-SDAG:       ; %bb.0: ; %entry
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX906-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17]
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-SDAG-LABEL: av_global_load_b128_saddr_0_00:
+; GFX908-SDAG:       ; %bb.0: ; %entry
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX908-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17]
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-SDAG-LABEL: av_global_load_b128_saddr_0_00:
+; GFX90A-SDAG:       ; %bb.0: ; %entry
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX90A-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17]
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-SDAG-LABEL: av_global_load_b128_saddr_0_00:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0: ; %entry
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1]
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-SDAG-LABEL: av_global_load_b128_saddr_0_00:
+; GFX942-SDAG:       ; %bb.0: ; %entry
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX942-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1]
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-SDAG-LABEL: av_global_load_b128_saddr_0_00:
+; GFX950-SDAG:       ; %bb.0: ; %entry
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX950-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1]
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-SDAG-LABEL: av_global_load_b128_saddr_0_00:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0: ; %entry
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17]
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: av_global_load_b128_saddr_0_00:
+; GFX1012-SDAG:       ; %bb.0: ; %entry
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX1012-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17]
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-SDAG-LABEL: av_global_load_b128_saddr_0_00:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0: ; %entry
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17]
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-SDAG-LABEL: av_global_load_b128_saddr_0_00:
+; GFX11-GENERIC-SDAG:       ; %bb.0: ; %entry
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1]
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: av_global_load_b128_saddr_0_00:
+; GFX1250-SDAG:       ; %bb.0: ; %entry
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1]
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-SDAG-LABEL: av_global_load_b128_saddr_0_00:
+; GFX12-GENERIC-SDAG:       ; %bb.0: ; %entry
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1]
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-GENERIC-ISEL-LABEL: av_global_load_b128_saddr_0_00:
+; GFX9-GENERIC-ISEL:       ; %bb.0: ; %entry
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17]
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-ISEL-LABEL: av_global_load_b128_saddr_0_00:
+; GFX906-ISEL:       ; %bb.0: ; %entry
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX906-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17]
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-ISEL-LABEL: av_global_load_b128_saddr_0_00:
+; GFX908-ISEL:       ; %bb.0: ; %entry
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX908-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17]
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-ISEL-LABEL: av_global_load_b128_saddr_0_00:
+; GFX90A-ISEL:       ; %bb.0: ; %entry
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX90A-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17]
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-ISEL-LABEL: av_global_load_b128_saddr_0_00:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0: ; %entry
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1]
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-ISEL-LABEL: av_global_load_b128_saddr_0_00:
+; GFX942-ISEL:       ; %bb.0: ; %entry
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX942-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1]
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-ISEL-LABEL: av_global_load_b128_saddr_0_00:
+; GFX950-ISEL:       ; %bb.0: ; %entry
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX950-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1]
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-ISEL-LABEL: av_global_load_b128_saddr_0_00:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0: ; %entry
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17]
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: av_global_load_b128_saddr_0_00:
+; GFX1012-ISEL:       ; %bb.0: ; %entry
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX1012-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17]
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-ISEL-LABEL: av_global_load_b128_saddr_0_00:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0: ; %entry
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17]
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-ISEL-LABEL: av_global_load_b128_saddr_0_00:
+; GFX11-GENERIC-ISEL:       ; %bb.0: ; %entry
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1]
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: av_global_load_b128_saddr_0_00:
+; GFX1250-ISEL:       ; %bb.0: ; %entry
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1]
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-ISEL-LABEL: av_global_load_b128_saddr_0_00:
+; GFX12-GENERIC-ISEL:       ; %bb.0: ; %entry
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1]
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+entry:
+  %data = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %addr, metadata !0)
+  ret <4 x i32> %data
+}
+
+define <4 x i32> @av_global_load_b128_saddr_0_01(ptr addrspace(1) inreg %addr) {
+; GFX9-GENERIC-SDAG-LABEL: av_global_load_b128_saddr_0_01:
+; GFX9-GENERIC-SDAG:       ; %bb.0: ; %entry
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17]
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-SDAG-LABEL: av_global_load_b128_saddr_0_01:
+; GFX906-SDAG:       ; %bb.0: ; %entry
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX906-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17]
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-SDAG-LABEL: av_global_load_b128_saddr_0_01:
+; GFX908-SDAG:       ; %bb.0: ; %entry
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX908-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17]
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-SDAG-LABEL: av_global_load_b128_saddr_0_01:
+; GFX90A-SDAG:       ; %bb.0: ; %entry
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX90A-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17]
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-SDAG-LABEL: av_global_load_b128_saddr_0_01:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0: ; %entry
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] sc0
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-SDAG-LABEL: av_global_load_b128_saddr_0_01:
+; GFX942-SDAG:       ; %bb.0: ; %entry
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX942-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] sc0
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-SDAG-LABEL: av_global_load_b128_saddr_0_01:
+; GFX950-SDAG:       ; %bb.0: ; %entry
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX950-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] sc0
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-SDAG-LABEL: av_global_load_b128_saddr_0_01:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0: ; %entry
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: av_global_load_b128_saddr_0_01:
+; GFX1012-SDAG:       ; %bb.0: ; %entry
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX1012-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-SDAG-LABEL: av_global_load_b128_saddr_0_01:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0: ; %entry
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-SDAG-LABEL: av_global_load_b128_saddr_0_01:
+; GFX11-GENERIC-SDAG:       ; %bb.0: ; %entry
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] glc
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: av_global_load_b128_saddr_0_01:
+; GFX1250-SDAG:       ; %bb.0: ; %entry
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1]
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-SDAG-LABEL: av_global_load_b128_saddr_0_01:
+; GFX12-GENERIC-SDAG:       ; %bb.0: ; %entry
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] scope:SCOPE_SE
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-GENERIC-ISEL-LABEL: av_global_load_b128_saddr_0_01:
+; GFX9-GENERIC-ISEL:       ; %bb.0: ; %entry
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17]
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-ISEL-LABEL: av_global_load_b128_saddr_0_01:
+; GFX906-ISEL:       ; %bb.0: ; %entry
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX906-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17]
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-ISEL-LABEL: av_global_load_b128_saddr_0_01:
+; GFX908-ISEL:       ; %bb.0: ; %entry
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX908-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17]
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-ISEL-LABEL: av_global_load_b128_saddr_0_01:
+; GFX90A-ISEL:       ; %bb.0: ; %entry
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX90A-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17]
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-ISEL-LABEL: av_global_load_b128_saddr_0_01:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0: ; %entry
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] sc0
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-ISEL-LABEL: av_global_load_b128_saddr_0_01:
+; GFX942-ISEL:       ; %bb.0: ; %entry
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX942-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] sc0
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-ISEL-LABEL: av_global_load_b128_saddr_0_01:
+; GFX950-ISEL:       ; %bb.0: ; %entry
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX950-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] sc0
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-ISEL-LABEL: av_global_load_b128_saddr_0_01:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0: ; %entry
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: av_global_load_b128_saddr_0_01:
+; GFX1012-ISEL:       ; %bb.0: ; %entry
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX1012-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-ISEL-LABEL: av_global_load_b128_saddr_0_01:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0: ; %entry
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-ISEL-LABEL: av_global_load_b128_saddr_0_01:
+; GFX11-GENERIC-ISEL:       ; %bb.0: ; %entry
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] glc
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: av_global_load_b128_saddr_0_01:
+; GFX1250-ISEL:       ; %bb.0: ; %entry
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1]
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-ISEL-LABEL: av_global_load_b128_saddr_0_01:
+; GFX12-GENERIC-ISEL:       ; %bb.0: ; %entry
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] scope:SCOPE_SE
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+entry:
+  %data = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %addr, metadata !1)
+  ret <4 x i32> %data
+}
+
+define <4 x i32> @av_global_load_b128_saddr_0_02(ptr addrspace(1) inreg %addr) {
+; GFX9-GENERIC-SDAG-LABEL: av_global_load_b128_saddr_0_02:
+; GFX9-GENERIC-SDAG:       ; %bb.0: ; %entry
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-SDAG-LABEL: av_global_load_b128_saddr_0_02:
+; GFX906-SDAG:       ; %bb.0: ; %entry
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX906-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-SDAG-LABEL: av_global_load_b128_saddr_0_02:
+; GFX908-SDAG:       ; %bb.0: ; %entry
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX908-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-SDAG-LABEL: av_global_load_b128_saddr_0_02:
+; GFX90A-SDAG:       ; %bb.0: ; %entry
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX90A-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-SDAG-LABEL: av_global_load_b128_saddr_0_02:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0: ; %entry
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] sc1
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-SDAG-LABEL: av_global_load_b128_saddr_0_02:
+; GFX942-SDAG:       ; %bb.0: ; %entry
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX942-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] sc1
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-SDAG-LABEL: av_global_load_b128_saddr_0_02:
+; GFX950-SDAG:       ; %bb.0: ; %entry
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX950-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] sc1
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-SDAG-LABEL: av_global_load_b128_saddr_0_02:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0: ; %entry
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc dlc
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: av_global_load_b128_saddr_0_02:
+; GFX1012-SDAG:       ; %bb.0: ; %entry
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX1012-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc dlc
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-SDAG-LABEL: av_global_load_b128_saddr_0_02:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0: ; %entry
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc dlc
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-SDAG-LABEL: av_global_load_b128_saddr_0_02:
+; GFX11-GENERIC-SDAG:       ; %bb.0: ; %entry
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] glc
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: av_global_load_b128_saddr_0_02:
+; GFX1250-SDAG:       ; %bb.0: ; %entry
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] scope:SCOPE_DEV
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-SDAG-LABEL: av_global_load_b128_saddr_0_02:
+; GFX12-GENERIC-SDAG:       ; %bb.0: ; %entry
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] scope:SCOPE_DEV
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-GENERIC-ISEL-LABEL: av_global_load_b128_saddr_0_02:
+; GFX9-GENERIC-ISEL:       ; %bb.0: ; %entry
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-ISEL-LABEL: av_global_load_b128_saddr_0_02:
+; GFX906-ISEL:       ; %bb.0: ; %entry
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX906-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-ISEL-LABEL: av_global_load_b128_saddr_0_02:
+; GFX908-ISEL:       ; %bb.0: ; %entry
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX908-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-ISEL-LABEL: av_global_load_b128_saddr_0_02:
+; GFX90A-ISEL:       ; %bb.0: ; %entry
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX90A-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-ISEL-LABEL: av_global_load_b128_saddr_0_02:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0: ; %entry
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] sc1
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-ISEL-LABEL: av_global_load_b128_saddr_0_02:
+; GFX942-ISEL:       ; %bb.0: ; %entry
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX942-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] sc1
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-ISEL-LABEL: av_global_load_b128_saddr_0_02:
+; GFX950-ISEL:       ; %bb.0: ; %entry
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX950-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] sc1
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-ISEL-LABEL: av_global_load_b128_saddr_0_02:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0: ; %entry
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc dlc
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: av_global_load_b128_saddr_0_02:
+; GFX1012-ISEL:       ; %bb.0: ; %entry
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX1012-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc dlc
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-ISEL-LABEL: av_global_load_b128_saddr_0_02:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0: ; %entry
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc dlc
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-ISEL-LABEL: av_global_load_b128_saddr_0_02:
+; GFX11-GENERIC-ISEL:       ; %bb.0: ; %entry
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] glc
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: av_global_load_b128_saddr_0_02:
+; GFX1250-ISEL:       ; %bb.0: ; %entry
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] scope:SCOPE_DEV
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-ISEL-LABEL: av_global_load_b128_saddr_0_02:
+; GFX12-GENERIC-ISEL:       ; %bb.0: ; %entry
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] scope:SCOPE_DEV
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+entry:
+  %data = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %addr, metadata !2)
+  ret <4 x i32> %data
+}
+
+define <4 x i32> @av_global_load_b128_saddr_0_03(ptr addrspace(1) inreg %addr) {
+; GFX9-GENERIC-SDAG-LABEL: av_global_load_b128_saddr_0_03:
+; GFX9-GENERIC-SDAG:       ; %bb.0: ; %entry
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-SDAG-LABEL: av_global_load_b128_saddr_0_03:
+; GFX906-SDAG:       ; %bb.0: ; %entry
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX906-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-SDAG-LABEL: av_global_load_b128_saddr_0_03:
+; GFX908-SDAG:       ; %bb.0: ; %entry
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX908-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-SDAG-LABEL: av_global_load_b128_saddr_0_03:
+; GFX90A-SDAG:       ; %bb.0: ; %entry
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX90A-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-SDAG-LABEL: av_global_load_b128_saddr_0_03:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0: ; %entry
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] sc0 sc1
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-SDAG-LABEL: av_global_load_b128_saddr_0_03:
+; GFX942-SDAG:       ; %bb.0: ; %entry
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX942-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] sc0 sc1
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-SDAG-LABEL: av_global_load_b128_saddr_0_03:
+; GFX950-SDAG:       ; %bb.0: ; %entry
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX950-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] sc0 sc1
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-SDAG-LABEL: av_global_load_b128_saddr_0_03:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0: ; %entry
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc dlc
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: av_global_load_b128_saddr_0_03:
+; GFX1012-SDAG:       ; %bb.0: ; %entry
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX1012-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc dlc
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-SDAG-LABEL: av_global_load_b128_saddr_0_03:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0: ; %entry
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc dlc
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-SDAG-LABEL: av_global_load_b128_saddr_0_03:
+; GFX11-GENERIC-SDAG:       ; %bb.0: ; %entry
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] glc
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: av_global_load_b128_saddr_0_03:
+; GFX1250-SDAG:       ; %bb.0: ; %entry
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] scope:SCOPE_SYS
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-SDAG-LABEL: av_global_load_b128_saddr_0_03:
+; GFX12-GENERIC-SDAG:       ; %bb.0: ; %entry
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] scope:SCOPE_SYS
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-GENERIC-ISEL-LABEL: av_global_load_b128_saddr_0_03:
+; GFX9-GENERIC-ISEL:       ; %bb.0: ; %entry
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-ISEL-LABEL: av_global_load_b128_saddr_0_03:
+; GFX906-ISEL:       ; %bb.0: ; %entry
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX906-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-ISEL-LABEL: av_global_load_b128_saddr_0_03:
+; GFX908-ISEL:       ; %bb.0: ; %entry
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX908-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-ISEL-LABEL: av_global_load_b128_saddr_0_03:
+; GFX90A-ISEL:       ; %bb.0: ; %entry
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX90A-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-ISEL-LABEL: av_global_load_b128_saddr_0_03:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0: ; %entry
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] sc0 sc1
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-ISEL-LABEL: av_global_load_b128_saddr_0_03:
+; GFX942-ISEL:       ; %bb.0: ; %entry
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX942-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] sc0 sc1
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-ISEL-LABEL: av_global_load_b128_saddr_0_03:
+; GFX950-ISEL:       ; %bb.0: ; %entry
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX950-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] sc0 sc1
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-ISEL-LABEL: av_global_load_b128_saddr_0_03:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0: ; %entry
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc dlc
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: av_global_load_b128_saddr_0_03:
+; GFX1012-ISEL:       ; %bb.0: ; %entry
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX1012-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc dlc
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-ISEL-LABEL: av_global_load_b128_saddr_0_03:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0: ; %entry
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc dlc
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-ISEL-LABEL: av_global_load_b128_saddr_0_03:
+; GFX11-GENERIC-ISEL:       ; %bb.0: ; %entry
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] glc
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: av_global_load_b128_saddr_0_03:
+; GFX1250-ISEL:       ; %bb.0: ; %entry
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] scope:SCOPE_SYS
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-ISEL-LABEL: av_global_load_b128_saddr_0_03:
+; GFX12-GENERIC-ISEL:       ; %bb.0: ; %entry
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] scope:SCOPE_SYS
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+entry:
+  %data = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %addr, metadata !3)
+  ret <4 x i32> %data
+}
+
+;;==============================================================================
+;; Signed offset addressing modes (derived from global-saddr-load.ll) {
+;;==============================================================================
+;;------------------------------------------------------------------------------
+;; No vgpr offset, constants
+;;------------------------------------------------------------------------------
+
+;; base only
+define <4 x float> @global_load_i8_offset_0(ptr addrspace(1) %sbase) {
+; GFX9-GENERIC-SDAG-LABEL: global_load_i8_offset_0:
+; GFX9-GENERIC-SDAG:       ; %bb.0:
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-SDAG-LABEL: global_load_i8_offset_0:
+; GFX906-SDAG:       ; %bb.0:
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-SDAG-LABEL: global_load_i8_offset_0:
+; GFX908-SDAG:       ; %bb.0:
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-SDAG-LABEL: global_load_i8_offset_0:
+; GFX90A-SDAG:       ; %bb.0:
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-SDAG-LABEL: global_load_i8_offset_0:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0:
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-SDAG-LABEL: global_load_i8_offset_0:
+; GFX942-SDAG:       ; %bb.0:
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-SDAG-LABEL: global_load_i8_offset_0:
+; GFX950-SDAG:       ; %bb.0:
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-SDAG-LABEL: global_load_i8_offset_0:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0:
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: global_load_i8_offset_0:
+; GFX1012-SDAG:       ; %bb.0:
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-SDAG-LABEL: global_load_i8_offset_0:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0:
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-SDAG-LABEL: global_load_i8_offset_0:
+; GFX11-GENERIC-SDAG:       ; %bb.0:
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: global_load_i8_offset_0:
+; GFX1250-SDAG:       ; %bb.0:
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-SDAG-LABEL: global_load_i8_offset_0:
+; GFX12-GENERIC-SDAG:       ; %bb.0:
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-GENERIC-ISEL-LABEL: global_load_i8_offset_0:
+; GFX9-GENERIC-ISEL:       ; %bb.0:
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-ISEL-LABEL: global_load_i8_offset_0:
+; GFX906-ISEL:       ; %bb.0:
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-ISEL-LABEL: global_load_i8_offset_0:
+; GFX908-ISEL:       ; %bb.0:
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-ISEL-LABEL: global_load_i8_offset_0:
+; GFX90A-ISEL:       ; %bb.0:
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-ISEL-LABEL: global_load_i8_offset_0:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0:
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-ISEL-LABEL: global_load_i8_offset_0:
+; GFX942-ISEL:       ; %bb.0:
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-ISEL-LABEL: global_load_i8_offset_0:
+; GFX950-ISEL:       ; %bb.0:
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-ISEL-LABEL: global_load_i8_offset_0:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0:
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: global_load_i8_offset_0:
+; GFX1012-ISEL:       ; %bb.0:
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-ISEL-LABEL: global_load_i8_offset_0:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0:
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-ISEL-LABEL: global_load_i8_offset_0:
+; GFX11-GENERIC-ISEL:       ; %bb.0:
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: global_load_i8_offset_0:
+; GFX1250-ISEL:       ; %bb.0:
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-ISEL-LABEL: global_load_i8_offset_0:
+; GFX12-GENERIC-ISEL:       ; %bb.0:
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+  %load = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %sbase, metadata !0)
+  %cast.load = bitcast <4 x i32> %load to <4 x float>
+  ret <4 x float> %cast.load
+}
+
+;; base with maximum gfx9 immediate offset
+define <4 x float> @global_load_i8_offset_4095(ptr addrspace(1) %sbase) {
+; GFX9-GENERIC-SDAG-LABEL: global_load_i8_offset_4095:
+; GFX9-GENERIC-SDAG:       ; %bb.0:
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:4095
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-SDAG-LABEL: global_load_i8_offset_4095:
+; GFX906-SDAG:       ; %bb.0:
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:4095
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-SDAG-LABEL: global_load_i8_offset_4095:
+; GFX908-SDAG:       ; %bb.0:
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:4095
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-SDAG-LABEL: global_load_i8_offset_4095:
+; GFX90A-SDAG:       ; %bb.0:
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:4095
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-SDAG-LABEL: global_load_i8_offset_4095:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0:
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:4095 sc0
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-SDAG-LABEL: global_load_i8_offset_4095:
+; GFX942-SDAG:       ; %bb.0:
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:4095 sc0
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-SDAG-LABEL: global_load_i8_offset_4095:
+; GFX950-SDAG:       ; %bb.0:
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:4095 sc0
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-SDAG-LABEL: global_load_i8_offset_4095:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0:
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0x800, v0
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:2047 glc
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: global_load_i8_offset_4095:
+; GFX1012-SDAG:       ; %bb.0:
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0x800, v0
+; GFX1012-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX1012-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:2047 glc
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-SDAG-LABEL: global_load_i8_offset_4095:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0:
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0x800, v0
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:2047 glc
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-SDAG-LABEL: global_load_i8_offset_4095:
+; GFX11-GENERIC-SDAG:       ; %bb.0:
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:4095 glc
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: global_load_i8_offset_4095:
+; GFX1250-SDAG:       ; %bb.0:
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:4095
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-SDAG-LABEL: global_load_i8_offset_4095:
+; GFX12-GENERIC-SDAG:       ; %bb.0:
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:4095 scope:SCOPE_SE
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-GENERIC-ISEL-LABEL: global_load_i8_offset_4095:
+; GFX9-GENERIC-ISEL:       ; %bb.0:
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:4095
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-ISEL-LABEL: global_load_i8_offset_4095:
+; GFX906-ISEL:       ; %bb.0:
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:4095
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-ISEL-LABEL: global_load_i8_offset_4095:
+; GFX908-ISEL:       ; %bb.0:
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:4095
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-ISEL-LABEL: global_load_i8_offset_4095:
+; GFX90A-ISEL:       ; %bb.0:
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:4095
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-ISEL-LABEL: global_load_i8_offset_4095:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0:
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:4095 sc0
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-ISEL-LABEL: global_load_i8_offset_4095:
+; GFX942-ISEL:       ; %bb.0:
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:4095 sc0
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-ISEL-LABEL: global_load_i8_offset_4095:
+; GFX950-ISEL:       ; %bb.0:
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:4095 sc0
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-ISEL-LABEL: global_load_i8_offset_4095:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0:
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfff, v0
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: global_load_i8_offset_4095:
+; GFX1012-ISEL:       ; %bb.0:
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfff, v0
+; GFX1012-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX1012-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-ISEL-LABEL: global_load_i8_offset_4095:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0:
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfff, v0
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-ISEL-LABEL: global_load_i8_offset_4095:
+; GFX11-GENERIC-ISEL:       ; %bb.0:
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:4095 glc
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: global_load_i8_offset_4095:
+; GFX1250-ISEL:       ; %bb.0:
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:4095
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-ISEL-LABEL: global_load_i8_offset_4095:
+; GFX12-GENERIC-ISEL:       ; %bb.0:
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:4095 scope:SCOPE_SE
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+  %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 4095
+  %load = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %gep0, metadata !1)
+  %cast.load = bitcast <4 x i32> %load to <4 x float>
+  ret <4 x float> %cast.load
+}
+
+;; base with maximum gfx9 immediate offset + 1
+define <4 x float> @global_load_i8_offset_4096(ptr addrspace(1) %sbase) {
+; GFX9-GENERIC-SDAG-LABEL: global_load_i8_offset_4096:
+; GFX9-GENERIC-SDAG:       ; %bb.0:
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0x1000, v0
+; GFX9-GENERIC-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-SDAG-LABEL: global_load_i8_offset_4096:
+; GFX906-SDAG:       ; %bb.0:
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0x1000, v0
+; GFX906-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX906-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-SDAG-LABEL: global_load_i8_offset_4096:
+; GFX908-SDAG:       ; %bb.0:
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0x1000, v0
+; GFX908-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX908-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-SDAG-LABEL: global_load_i8_offset_4096:
+; GFX90A-SDAG:       ; %bb.0:
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0x1000, v0
+; GFX90A-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX90A-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-SDAG-LABEL: global_load_i8_offset_4096:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0:
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0x1000, v0
+; GFX9-4-GENERIC-SDAG-NEXT:    s_nop 1
+; GFX9-4-GENERIC-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc1
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-SDAG-LABEL: global_load_i8_offset_4096:
+; GFX942-SDAG:       ; %bb.0:
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0x1000, v0
+; GFX942-SDAG-NEXT:    s_nop 1
+; GFX942-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX942-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc1
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-SDAG-LABEL: global_load_i8_offset_4096:
+; GFX950-SDAG:       ; %bb.0:
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0x1000, v0
+; GFX950-SDAG-NEXT:    s_nop 1
+; GFX950-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX950-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc1
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-SDAG-LABEL: global_load_i8_offset_4096:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0:
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0x1000, v0
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: global_load_i8_offset_4096:
+; GFX1012-SDAG:       ; %bb.0:
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0x1000, v0
+; GFX1012-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX1012-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-SDAG-LABEL: global_load_i8_offset_4096:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0:
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0x1000, v0
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-SDAG-LABEL: global_load_i8_offset_4096:
+; GFX11-GENERIC-SDAG:       ; %bb.0:
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0x1000, v0
+; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: global_load_i8_offset_4096:
+; GFX1250-SDAG:       ; %bb.0:
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:4096 scope:SCOPE_DEV
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-SDAG-LABEL: global_load_i8_offset_4096:
+; GFX12-GENERIC-SDAG:       ; %bb.0:
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:4096 scope:SCOPE_DEV
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-GENERIC-ISEL-LABEL: global_load_i8_offset_4096:
+; GFX9-GENERIC-ISEL:       ; %bb.0:
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 0x1000, v0
+; GFX9-GENERIC-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-ISEL-LABEL: global_load_i8_offset_4096:
+; GFX906-ISEL:       ; %bb.0:
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 0x1000, v0
+; GFX906-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX906-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-ISEL-LABEL: global_load_i8_offset_4096:
+; GFX908-ISEL:       ; %bb.0:
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 0x1000, v0
+; GFX908-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX908-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-ISEL-LABEL: global_load_i8_offset_4096:
+; GFX90A-ISEL:       ; %bb.0:
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 0x1000, v0
+; GFX90A-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX90A-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-ISEL-LABEL: global_load_i8_offset_4096:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0:
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 0x1000, v0
+; GFX9-4-GENERIC-ISEL-NEXT:    s_nop 1
+; GFX9-4-GENERIC-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc1
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-ISEL-LABEL: global_load_i8_offset_4096:
+; GFX942-ISEL:       ; %bb.0:
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 0x1000, v0
+; GFX942-ISEL-NEXT:    s_nop 1
+; GFX942-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX942-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc1
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-ISEL-LABEL: global_load_i8_offset_4096:
+; GFX950-ISEL:       ; %bb.0:
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 0x1000, v0
+; GFX950-ISEL-NEXT:    s_nop 1
+; GFX950-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX950-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc1
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-ISEL-LABEL: global_load_i8_offset_4096:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0:
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0x1000, v0
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: global_load_i8_offset_4096:
+; GFX1012-ISEL:       ; %bb.0:
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0x1000, v0
+; GFX1012-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX1012-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-ISEL-LABEL: global_load_i8_offset_4096:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0:
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0x1000, v0
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-ISEL-LABEL: global_load_i8_offset_4096:
+; GFX11-GENERIC-ISEL:       ; %bb.0:
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0x1000, v0
+; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: global_load_i8_offset_4096:
+; GFX1250-ISEL:       ; %bb.0:
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:4096 scope:SCOPE_DEV
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-ISEL-LABEL: global_load_i8_offset_4096:
+; GFX12-GENERIC-ISEL:       ; %bb.0:
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:4096 scope:SCOPE_DEV
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+  %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 4096
+  %load = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %gep0, metadata !2)
+  %cast.load = bitcast <4 x i32> %load to <4 x float>
+  ret <4 x float> %cast.load
+}
+
+;; base with maximum gfx9 immediate offset + 2
+define <4 x float> @global_load_i8_offset_4097(ptr addrspace(1) %sbase) {
+; GFX9-GENERIC-SDAG-LABEL: global_load_i8_offset_4097:
+; GFX9-GENERIC-SDAG:       ; %bb.0:
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0x1000, v0
+; GFX9-GENERIC-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:1 glc
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-SDAG-LABEL: global_load_i8_offset_4097:
+; GFX906-SDAG:       ; %bb.0:
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0x1000, v0
+; GFX906-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX906-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:1 glc
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-SDAG-LABEL: global_load_i8_offset_4097:
+; GFX908-SDAG:       ; %bb.0:
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0x1000, v0
+; GFX908-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX908-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:1 glc
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-SDAG-LABEL: global_load_i8_offset_4097:
+; GFX90A-SDAG:       ; %bb.0:
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0x1000, v0
+; GFX90A-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX90A-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:1 glc
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-SDAG-LABEL: global_load_i8_offset_4097:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0:
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0x1000, v0
+; GFX9-4-GENERIC-SDAG-NEXT:    s_nop 1
+; GFX9-4-GENERIC-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:1 sc0 sc1
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-SDAG-LABEL: global_load_i8_offset_4097:
+; GFX942-SDAG:       ; %bb.0:
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0x1000, v0
+; GFX942-SDAG-NEXT:    s_nop 1
+; GFX942-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX942-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:1 sc0 sc1
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-SDAG-LABEL: global_load_i8_offset_4097:
+; GFX950-SDAG:       ; %bb.0:
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0x1000, v0
+; GFX950-SDAG-NEXT:    s_nop 1
+; GFX950-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX950-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:1 sc0 sc1
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-SDAG-LABEL: global_load_i8_offset_4097:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0:
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0x1000, v0
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:1 glc dlc
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: global_load_i8_offset_4097:
+; GFX1012-SDAG:       ; %bb.0:
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0x1000, v0
+; GFX1012-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX1012-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:1 glc dlc
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-SDAG-LABEL: global_load_i8_offset_4097:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0:
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0x1000, v0
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:1 glc dlc
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-SDAG-LABEL: global_load_i8_offset_4097:
+; GFX11-GENERIC-SDAG:       ; %bb.0:
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0x1000, v0
+; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:1 glc
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: global_load_i8_offset_4097:
+; GFX1250-SDAG:       ; %bb.0:
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:4097 scope:SCOPE_SYS
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-SDAG-LABEL: global_load_i8_offset_4097:
+; GFX12-GENERIC-SDAG:       ; %bb.0:
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:4097 scope:SCOPE_SYS
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-GENERIC-ISEL-LABEL: global_load_i8_offset_4097:
+; GFX9-GENERIC-ISEL:       ; %bb.0:
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 0x1001, v0
+; GFX9-GENERIC-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-ISEL-LABEL: global_load_i8_offset_4097:
+; GFX906-ISEL:       ; %bb.0:
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 0x1001, v0
+; GFX906-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX906-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-ISEL-LABEL: global_load_i8_offset_4097:
+; GFX908-ISEL:       ; %bb.0:
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 0x1001, v0
+; GFX908-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX908-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-ISEL-LABEL: global_load_i8_offset_4097:
+; GFX90A-ISEL:       ; %bb.0:
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 0x1001, v0
+; GFX90A-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX90A-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-ISEL-LABEL: global_load_i8_offset_4097:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0:
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 0x1001, v0
+; GFX9-4-GENERIC-ISEL-NEXT:    s_nop 1
+; GFX9-4-GENERIC-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0 sc1
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-ISEL-LABEL: global_load_i8_offset_4097:
+; GFX942-ISEL:       ; %bb.0:
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 0x1001, v0
+; GFX942-ISEL-NEXT:    s_nop 1
+; GFX942-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX942-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0 sc1
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-ISEL-LABEL: global_load_i8_offset_4097:
+; GFX950-ISEL:       ; %bb.0:
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 0x1001, v0
+; GFX950-ISEL-NEXT:    s_nop 1
+; GFX950-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX950-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0 sc1
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-ISEL-LABEL: global_load_i8_offset_4097:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0:
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0x1001, v0
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: global_load_i8_offset_4097:
+; GFX1012-ISEL:       ; %bb.0:
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0x1001, v0
+; GFX1012-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX1012-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-ISEL-LABEL: global_load_i8_offset_4097:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0:
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0x1001, v0
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-ISEL-LABEL: global_load_i8_offset_4097:
+; GFX11-GENERIC-ISEL:       ; %bb.0:
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0x1001, v0
+; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: global_load_i8_offset_4097:
+; GFX1250-ISEL:       ; %bb.0:
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:4097 scope:SCOPE_SYS
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-ISEL-LABEL: global_load_i8_offset_4097:
+; GFX12-GENERIC-ISEL:       ; %bb.0:
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:4097 scope:SCOPE_SYS
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+  %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 4097
+  %load = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %gep0, metadata !3)
+  %cast.load = bitcast <4 x i32> %load to <4 x float>
+  ret <4 x float> %cast.load
+}
+
+;; base with maximum negative gfx9 immediate offset
+define <4 x float> @global_load_i8_offset_neg4096(ptr addrspace(1) %sbase) {
+; GFX9-GENERIC-SDAG-LABEL: global_load_i8_offset_neg4096:
+; GFX9-GENERIC-SDAG:       ; %bb.0:
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-4096
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-SDAG-LABEL: global_load_i8_offset_neg4096:
+; GFX906-SDAG:       ; %bb.0:
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-4096
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-SDAG-LABEL: global_load_i8_offset_neg4096:
+; GFX908-SDAG:       ; %bb.0:
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-4096
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-SDAG-LABEL: global_load_i8_offset_neg4096:
+; GFX90A-SDAG:       ; %bb.0:
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-4096
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-SDAG-LABEL: global_load_i8_offset_neg4096:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0:
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-4096
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-SDAG-LABEL: global_load_i8_offset_neg4096:
+; GFX942-SDAG:       ; %bb.0:
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-4096
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-SDAG-LABEL: global_load_i8_offset_neg4096:
+; GFX950-SDAG:       ; %bb.0:
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-4096
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-SDAG-LABEL: global_load_i8_offset_neg4096:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0:
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfffff000, v0
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, -1, v1, vcc_lo
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: global_load_i8_offset_neg4096:
+; GFX1012-SDAG:       ; %bb.0:
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfffff000, v0
+; GFX1012-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, -1, v1, vcc_lo
+; GFX1012-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-SDAG-LABEL: global_load_i8_offset_neg4096:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0:
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfffff000, v0
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-SDAG-LABEL: global_load_i8_offset_neg4096:
+; GFX11-GENERIC-SDAG:       ; %bb.0:
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-4096
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: global_load_i8_offset_neg4096:
+; GFX1250-SDAG:       ; %bb.0:
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-4096
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-SDAG-LABEL: global_load_i8_offset_neg4096:
+; GFX12-GENERIC-SDAG:       ; %bb.0:
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-4096
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-GENERIC-ISEL-LABEL: global_load_i8_offset_neg4096:
+; GFX9-GENERIC-ISEL:       ; %bb.0:
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-4096
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-ISEL-LABEL: global_load_i8_offset_neg4096:
+; GFX906-ISEL:       ; %bb.0:
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-4096
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-ISEL-LABEL: global_load_i8_offset_neg4096:
+; GFX908-ISEL:       ; %bb.0:
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-4096
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-ISEL-LABEL: global_load_i8_offset_neg4096:
+; GFX90A-ISEL:       ; %bb.0:
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-4096
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-ISEL-LABEL: global_load_i8_offset_neg4096:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0:
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-4096
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-ISEL-LABEL: global_load_i8_offset_neg4096:
+; GFX942-ISEL:       ; %bb.0:
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-4096
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-ISEL-LABEL: global_load_i8_offset_neg4096:
+; GFX950-ISEL:       ; %bb.0:
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-4096
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-ISEL-LABEL: global_load_i8_offset_neg4096:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0:
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfffff000, v0
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, -1, v1, vcc_lo
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: global_load_i8_offset_neg4096:
+; GFX1012-ISEL:       ; %bb.0:
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfffff000, v0
+; GFX1012-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, -1, v1, vcc_lo
+; GFX1012-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-ISEL-LABEL: global_load_i8_offset_neg4096:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0:
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfffff000, v0
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-ISEL-LABEL: global_load_i8_offset_neg4096:
+; GFX11-GENERIC-ISEL:       ; %bb.0:
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-4096
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: global_load_i8_offset_neg4096:
+; GFX1250-ISEL:       ; %bb.0:
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-4096
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-ISEL-LABEL: global_load_i8_offset_neg4096:
+; GFX12-GENERIC-ISEL:       ; %bb.0:
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-4096
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+  %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 -4096
+  %load = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %gep0, metadata !0)
+  %cast.load = bitcast <4 x i32> %load to <4 x float>
+  ret <4 x float> %cast.load
+}
+
+;; base with maximum negative gfx9 immediate offset -1
+define <4 x float> @global_load_i8_offset_neg4097(ptr addrspace(1) %sbase) {
+; GFX9-GENERIC-SDAG-LABEL: global_load_i8_offset_neg4097:
+; GFX9-GENERIC-SDAG:       ; %bb.0:
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0xfffff000, v0
+; GFX9-GENERIC-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-1
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-SDAG-LABEL: global_load_i8_offset_neg4097:
+; GFX906-SDAG:       ; %bb.0:
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0xfffff000, v0
+; GFX906-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX906-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-1
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-SDAG-LABEL: global_load_i8_offset_neg4097:
+; GFX908-SDAG:       ; %bb.0:
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0xfffff000, v0
+; GFX908-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX908-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-1
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-SDAG-LABEL: global_load_i8_offset_neg4097:
+; GFX90A-SDAG:       ; %bb.0:
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0xfffff000, v0
+; GFX90A-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX90A-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-1
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-SDAG-LABEL: global_load_i8_offset_neg4097:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0:
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0xfffff000, v0
+; GFX9-4-GENERIC-SDAG-NEXT:    s_nop 1
+; GFX9-4-GENERIC-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-1 sc0
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-SDAG-LABEL: global_load_i8_offset_neg4097:
+; GFX942-SDAG:       ; %bb.0:
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0xfffff000, v0
+; GFX942-SDAG-NEXT:    s_nop 1
+; GFX942-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX942-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-1 sc0
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-SDAG-LABEL: global_load_i8_offset_neg4097:
+; GFX950-SDAG:       ; %bb.0:
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0xfffff000, v0
+; GFX950-SDAG-NEXT:    s_nop 1
+; GFX950-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX950-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-1 sc0
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-SDAG-LABEL: global_load_i8_offset_neg4097:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0:
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfffff000, v0
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, -1, v1, vcc_lo
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-1 glc
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: global_load_i8_offset_neg4097:
+; GFX1012-SDAG:       ; %bb.0:
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfffff000, v0
+; GFX1012-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, -1, v1, vcc_lo
+; GFX1012-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-1 glc
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-SDAG-LABEL: global_load_i8_offset_neg4097:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0:
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfffff000, v0
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-1 glc
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-SDAG-LABEL: global_load_i8_offset_neg4097:
+; GFX11-GENERIC-SDAG:       ; %bb.0:
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfffff000, v0
+; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo
+; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-1 glc
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: global_load_i8_offset_neg4097:
+; GFX1250-SDAG:       ; %bb.0:
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-4097
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-SDAG-LABEL: global_load_i8_offset_neg4097:
+; GFX12-GENERIC-SDAG:       ; %bb.0:
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-4097 scope:SCOPE_SE
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-GENERIC-ISEL-LABEL: global_load_i8_offset_neg4097:
+; GFX9-GENERIC-ISEL:       ; %bb.0:
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 0xffffefff, v0
+; GFX9-GENERIC-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-ISEL-LABEL: global_load_i8_offset_neg4097:
+; GFX906-ISEL:       ; %bb.0:
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 0xffffefff, v0
+; GFX906-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX906-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-ISEL-LABEL: global_load_i8_offset_neg4097:
+; GFX908-ISEL:       ; %bb.0:
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 0xffffefff, v0
+; GFX908-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX908-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-ISEL-LABEL: global_load_i8_offset_neg4097:
+; GFX90A-ISEL:       ; %bb.0:
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 0xffffefff, v0
+; GFX90A-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX90A-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-ISEL-LABEL: global_load_i8_offset_neg4097:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0:
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 0xffffefff, v0
+; GFX9-4-GENERIC-ISEL-NEXT:    s_nop 1
+; GFX9-4-GENERIC-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-ISEL-LABEL: global_load_i8_offset_neg4097:
+; GFX942-ISEL:       ; %bb.0:
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 0xffffefff, v0
+; GFX942-ISEL-NEXT:    s_nop 1
+; GFX942-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX942-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-ISEL-LABEL: global_load_i8_offset_neg4097:
+; GFX950-ISEL:       ; %bb.0:
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 0xffffefff, v0
+; GFX950-ISEL-NEXT:    s_nop 1
+; GFX950-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX950-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-ISEL-LABEL: global_load_i8_offset_neg4097:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0:
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0xffffefff, v0
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, -1, v1, vcc_lo
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: global_load_i8_offset_neg4097:
+; GFX1012-ISEL:       ; %bb.0:
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0xffffefff, v0
+; GFX1012-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, -1, v1, vcc_lo
+; GFX1012-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-ISEL-LABEL: global_load_i8_offset_neg4097:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0:
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0xffffefff, v0
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-ISEL-LABEL: global_load_i8_offset_neg4097:
+; GFX11-GENERIC-ISEL:       ; %bb.0:
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0xffffefff, v0
+; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo
+; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: global_load_i8_offset_neg4097:
+; GFX1250-ISEL:       ; %bb.0:
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-4097
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-ISEL-LABEL: global_load_i8_offset_neg4097:
+; GFX12-GENERIC-ISEL:       ; %bb.0:
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-4097 scope:SCOPE_SE
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+  %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 -4097
+  %load = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %gep0, metadata !1)
+  %cast.load = bitcast <4 x i32> %load to <4 x float>
+  ret <4 x float> %cast.load
+}
+
+;; base with maximum negative gfx9 immediate offset -2
+define <4 x float> @global_load_i8_offset_neg4098(ptr addrspace(1) %sbase) {
+; GFX9-GENERIC-SDAG-LABEL: global_load_i8_offset_neg4098:
+; GFX9-GENERIC-SDAG:       ; %bb.0:
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0xfffff000, v0
+; GFX9-GENERIC-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-2 glc
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-SDAG-LABEL: global_load_i8_offset_neg4098:
+; GFX906-SDAG:       ; %bb.0:
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0xfffff000, v0
+; GFX906-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX906-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-2 glc
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-SDAG-LABEL: global_load_i8_offset_neg4098:
+; GFX908-SDAG:       ; %bb.0:
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0xfffff000, v0
+; GFX908-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX908-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-2 glc
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-SDAG-LABEL: global_load_i8_offset_neg4098:
+; GFX90A-SDAG:       ; %bb.0:
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0xfffff000, v0
+; GFX90A-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX90A-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-2 glc
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-SDAG-LABEL: global_load_i8_offset_neg4098:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0:
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0xfffff000, v0
+; GFX9-4-GENERIC-SDAG-NEXT:    s_nop 1
+; GFX9-4-GENERIC-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-2 sc1
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-SDAG-LABEL: global_load_i8_offset_neg4098:
+; GFX942-SDAG:       ; %bb.0:
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0xfffff000, v0
+; GFX942-SDAG-NEXT:    s_nop 1
+; GFX942-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX942-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-2 sc1
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-SDAG-LABEL: global_load_i8_offset_neg4098:
+; GFX950-SDAG:       ; %bb.0:
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0xfffff000, v0
+; GFX950-SDAG-NEXT:    s_nop 1
+; GFX950-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX950-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-2 sc1
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-SDAG-LABEL: global_load_i8_offset_neg4098:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0:
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfffff000, v0
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, -1, v1, vcc_lo
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-2 glc dlc
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: global_load_i8_offset_neg4098:
+; GFX1012-SDAG:       ; %bb.0:
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfffff000, v0
+; GFX1012-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, -1, v1, vcc_lo
+; GFX1012-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-2 glc dlc
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-SDAG-LABEL: global_load_i8_offset_neg4098:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0:
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfffff000, v0
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-2 glc dlc
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-SDAG-LABEL: global_load_i8_offset_neg4098:
+; GFX11-GENERIC-SDAG:       ; %bb.0:
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfffff000, v0
+; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo
+; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-2 glc
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: global_load_i8_offset_neg4098:
+; GFX1250-SDAG:       ; %bb.0:
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-4098 scope:SCOPE_DEV
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-SDAG-LABEL: global_load_i8_offset_neg4098:
+; GFX12-GENERIC-SDAG:       ; %bb.0:
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-4098 scope:SCOPE_DEV
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-GENERIC-ISEL-LABEL: global_load_i8_offset_neg4098:
+; GFX9-GENERIC-ISEL:       ; %bb.0:
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 0xffffeffe, v0
+; GFX9-GENERIC-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-ISEL-LABEL: global_load_i8_offset_neg4098:
+; GFX906-ISEL:       ; %bb.0:
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 0xffffeffe, v0
+; GFX906-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX906-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-ISEL-LABEL: global_load_i8_offset_neg4098:
+; GFX908-ISEL:       ; %bb.0:
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 0xffffeffe, v0
+; GFX908-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX908-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-ISEL-LABEL: global_load_i8_offset_neg4098:
+; GFX90A-ISEL:       ; %bb.0:
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 0xffffeffe, v0
+; GFX90A-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX90A-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-ISEL-LABEL: global_load_i8_offset_neg4098:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0:
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 0xffffeffe, v0
+; GFX9-4-GENERIC-ISEL-NEXT:    s_nop 1
+; GFX9-4-GENERIC-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc1
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-ISEL-LABEL: global_load_i8_offset_neg4098:
+; GFX942-ISEL:       ; %bb.0:
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 0xffffeffe, v0
+; GFX942-ISEL-NEXT:    s_nop 1
+; GFX942-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX942-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc1
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-ISEL-LABEL: global_load_i8_offset_neg4098:
+; GFX950-ISEL:       ; %bb.0:
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 0xffffeffe, v0
+; GFX950-ISEL-NEXT:    s_nop 1
+; GFX950-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX950-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc1
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-ISEL-LABEL: global_load_i8_offset_neg4098:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0:
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0xffffeffe, v0
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, -1, v1, vcc_lo
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: global_load_i8_offset_neg4098:
+; GFX1012-ISEL:       ; %bb.0:
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0xffffeffe, v0
+; GFX1012-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, -1, v1, vcc_lo
+; GFX1012-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-ISEL-LABEL: global_load_i8_offset_neg4098:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0:
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0xffffeffe, v0
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-ISEL-LABEL: global_load_i8_offset_neg4098:
+; GFX11-GENERIC-ISEL:       ; %bb.0:
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0xffffeffe, v0
+; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo
+; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: global_load_i8_offset_neg4098:
+; GFX1250-ISEL:       ; %bb.0:
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-4098 scope:SCOPE_DEV
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-ISEL-LABEL: global_load_i8_offset_neg4098:
+; GFX12-GENERIC-ISEL:       ; %bb.0:
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-4098 scope:SCOPE_DEV
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+  %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 -4098
+  %load = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %gep0, metadata !2)
+  %cast.load = bitcast <4 x i32> %load to <4 x float>
+  ret <4 x float> %cast.load
+}
+
+;; base with maximum gfx10 immediate offset
+define <4 x float> @global_load_i8_offset_2048(ptr addrspace(1) %sbase) {
+; GFX9-GENERIC-SDAG-LABEL: global_load_i8_offset_2048:
+; GFX9-GENERIC-SDAG:       ; %bb.0:
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:2048 glc
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-SDAG-LABEL: global_load_i8_offset_2048:
+; GFX906-SDAG:       ; %bb.0:
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:2048 glc
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-SDAG-LABEL: global_load_i8_offset_2048:
+; GFX908-SDAG:       ; %bb.0:
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:2048 glc
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-SDAG-LABEL: global_load_i8_offset_2048:
+; GFX90A-SDAG:       ; %bb.0:
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:2048 glc
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-SDAG-LABEL: global_load_i8_offset_2048:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0:
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:2048 sc0 sc1
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-SDAG-LABEL: global_load_i8_offset_2048:
+; GFX942-SDAG:       ; %bb.0:
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:2048 sc0 sc1
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-SDAG-LABEL: global_load_i8_offset_2048:
+; GFX950-SDAG:       ; %bb.0:
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:2048 sc0 sc1
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-SDAG-LABEL: global_load_i8_offset_2048:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0:
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0x800, v0
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: global_load_i8_offset_2048:
+; GFX1012-SDAG:       ; %bb.0:
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0x800, v0
+; GFX1012-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX1012-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-SDAG-LABEL: global_load_i8_offset_2048:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0:
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0x800, v0
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-SDAG-LABEL: global_load_i8_offset_2048:
+; GFX11-GENERIC-SDAG:       ; %bb.0:
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:2048 glc
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: global_load_i8_offset_2048:
+; GFX1250-SDAG:       ; %bb.0:
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:2048 scope:SCOPE_SYS
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-SDAG-LABEL: global_load_i8_offset_2048:
+; GFX12-GENERIC-SDAG:       ; %bb.0:
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:2048 scope:SCOPE_SYS
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-GENERIC-ISEL-LABEL: global_load_i8_offset_2048:
+; GFX9-GENERIC-ISEL:       ; %bb.0:
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:2048 glc
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-ISEL-LABEL: global_load_i8_offset_2048:
+; GFX906-ISEL:       ; %bb.0:
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:2048 glc
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-ISEL-LABEL: global_load_i8_offset_2048:
+; GFX908-ISEL:       ; %bb.0:
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:2048 glc
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-ISEL-LABEL: global_load_i8_offset_2048:
+; GFX90A-ISEL:       ; %bb.0:
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:2048 glc
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-ISEL-LABEL: global_load_i8_offset_2048:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0:
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:2048 sc0 sc1
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-ISEL-LABEL: global_load_i8_offset_2048:
+; GFX942-ISEL:       ; %bb.0:
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:2048 sc0 sc1
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-ISEL-LABEL: global_load_i8_offset_2048:
+; GFX950-ISEL:       ; %bb.0:
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:2048 sc0 sc1
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-ISEL-LABEL: global_load_i8_offset_2048:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0:
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0x800, v0
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: global_load_i8_offset_2048:
+; GFX1012-ISEL:       ; %bb.0:
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0x800, v0
+; GFX1012-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX1012-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-ISEL-LABEL: global_load_i8_offset_2048:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0:
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0x800, v0
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-ISEL-LABEL: global_load_i8_offset_2048:
+; GFX11-GENERIC-ISEL:       ; %bb.0:
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:2048 glc
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: global_load_i8_offset_2048:
+; GFX1250-ISEL:       ; %bb.0:
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:2048 scope:SCOPE_SYS
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-ISEL-LABEL: global_load_i8_offset_2048:
+; GFX12-GENERIC-ISEL:       ; %bb.0:
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:2048 scope:SCOPE_SYS
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+  %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 2048
+  %load = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %gep0, metadata !3)
+  %cast.load = bitcast <4 x i32> %load to <4 x float>
+  ret <4 x float> %cast.load
+}
+
+;; base with maximum gfx10 immediate offset + 1
+define <4 x float> @global_load_i8_offset_2049(ptr addrspace(1) %sbase) {
+; GFX9-GENERIC-SDAG-LABEL: global_load_i8_offset_2049:
+; GFX9-GENERIC-SDAG:       ; %bb.0:
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:2049
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-SDAG-LABEL: global_load_i8_offset_2049:
+; GFX906-SDAG:       ; %bb.0:
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:2049
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-SDAG-LABEL: global_load_i8_offset_2049:
+; GFX908-SDAG:       ; %bb.0:
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:2049
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-SDAG-LABEL: global_load_i8_offset_2049:
+; GFX90A-SDAG:       ; %bb.0:
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:2049
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-SDAG-LABEL: global_load_i8_offset_2049:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0:
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:2049
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-SDAG-LABEL: global_load_i8_offset_2049:
+; GFX942-SDAG:       ; %bb.0:
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:2049
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-SDAG-LABEL: global_load_i8_offset_2049:
+; GFX950-SDAG:       ; %bb.0:
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:2049
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-SDAG-LABEL: global_load_i8_offset_2049:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0:
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0x800, v0
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:1
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: global_load_i8_offset_2049:
+; GFX1012-SDAG:       ; %bb.0:
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0x800, v0
+; GFX1012-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX1012-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:1
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-SDAG-LABEL: global_load_i8_offset_2049:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0:
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0x800, v0
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:1
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-SDAG-LABEL: global_load_i8_offset_2049:
+; GFX11-GENERIC-SDAG:       ; %bb.0:
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:2049
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: global_load_i8_offset_2049:
+; GFX1250-SDAG:       ; %bb.0:
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:2049
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-SDAG-LABEL: global_load_i8_offset_2049:
+; GFX12-GENERIC-SDAG:       ; %bb.0:
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:2049
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-GENERIC-ISEL-LABEL: global_load_i8_offset_2049:
+; GFX9-GENERIC-ISEL:       ; %bb.0:
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:2049
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-ISEL-LABEL: global_load_i8_offset_2049:
+; GFX906-ISEL:       ; %bb.0:
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:2049
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-ISEL-LABEL: global_load_i8_offset_2049:
+; GFX908-ISEL:       ; %bb.0:
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:2049
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-ISEL-LABEL: global_load_i8_offset_2049:
+; GFX90A-ISEL:       ; %bb.0:
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:2049
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-ISEL-LABEL: global_load_i8_offset_2049:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0:
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:2049
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-ISEL-LABEL: global_load_i8_offset_2049:
+; GFX942-ISEL:       ; %bb.0:
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:2049
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-ISEL-LABEL: global_load_i8_offset_2049:
+; GFX950-ISEL:       ; %bb.0:
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:2049
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-ISEL-LABEL: global_load_i8_offset_2049:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0:
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0x801, v0
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: global_load_i8_offset_2049:
+; GFX1012-ISEL:       ; %bb.0:
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0x801, v0
+; GFX1012-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX1012-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-ISEL-LABEL: global_load_i8_offset_2049:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0:
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0x801, v0
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-ISEL-LABEL: global_load_i8_offset_2049:
+; GFX11-GENERIC-ISEL:       ; %bb.0:
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:2049
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: global_load_i8_offset_2049:
+; GFX1250-ISEL:       ; %bb.0:
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:2049
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-ISEL-LABEL: global_load_i8_offset_2049:
+; GFX12-GENERIC-ISEL:       ; %bb.0:
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:2049
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+  %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 2049
+  %load = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %gep0, metadata !0)
+  %cast.load = bitcast <4 x i32> %load to <4 x float>
+  ret <4 x float> %cast.load
+}
+
+;; base with maximum gfx10 immediate offset + 2
+define <4 x float> @global_load_i8_offset_2050(ptr addrspace(1) %sbase) {
+; GFX9-GENERIC-SDAG-LABEL: global_load_i8_offset_2050:
+; GFX9-GENERIC-SDAG:       ; %bb.0:
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:2050
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-SDAG-LABEL: global_load_i8_offset_2050:
+; GFX906-SDAG:       ; %bb.0:
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:2050
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-SDAG-LABEL: global_load_i8_offset_2050:
+; GFX908-SDAG:       ; %bb.0:
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:2050
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-SDAG-LABEL: global_load_i8_offset_2050:
+; GFX90A-SDAG:       ; %bb.0:
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:2050
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-SDAG-LABEL: global_load_i8_offset_2050:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0:
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:2050 sc0
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-SDAG-LABEL: global_load_i8_offset_2050:
+; GFX942-SDAG:       ; %bb.0:
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:2050 sc0
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-SDAG-LABEL: global_load_i8_offset_2050:
+; GFX950-SDAG:       ; %bb.0:
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:2050 sc0
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-SDAG-LABEL: global_load_i8_offset_2050:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0:
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0x800, v0
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:2 glc
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: global_load_i8_offset_2050:
+; GFX1012-SDAG:       ; %bb.0:
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0x800, v0
+; GFX1012-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX1012-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:2 glc
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-SDAG-LABEL: global_load_i8_offset_2050:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0:
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0x800, v0
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:2 glc
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-SDAG-LABEL: global_load_i8_offset_2050:
+; GFX11-GENERIC-SDAG:       ; %bb.0:
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:2050 glc
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: global_load_i8_offset_2050:
+; GFX1250-SDAG:       ; %bb.0:
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:2050
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-SDAG-LABEL: global_load_i8_offset_2050:
+; GFX12-GENERIC-SDAG:       ; %bb.0:
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:2050 scope:SCOPE_SE
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-GENERIC-ISEL-LABEL: global_load_i8_offset_2050:
+; GFX9-GENERIC-ISEL:       ; %bb.0:
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:2050
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-ISEL-LABEL: global_load_i8_offset_2050:
+; GFX906-ISEL:       ; %bb.0:
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:2050
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-ISEL-LABEL: global_load_i8_offset_2050:
+; GFX908-ISEL:       ; %bb.0:
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:2050
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-ISEL-LABEL: global_load_i8_offset_2050:
+; GFX90A-ISEL:       ; %bb.0:
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:2050
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-ISEL-LABEL: global_load_i8_offset_2050:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0:
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:2050 sc0
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-ISEL-LABEL: global_load_i8_offset_2050:
+; GFX942-ISEL:       ; %bb.0:
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:2050 sc0
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-ISEL-LABEL: global_load_i8_offset_2050:
+; GFX950-ISEL:       ; %bb.0:
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:2050 sc0
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-ISEL-LABEL: global_load_i8_offset_2050:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0:
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0x802, v0
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: global_load_i8_offset_2050:
+; GFX1012-ISEL:       ; %bb.0:
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0x802, v0
+; GFX1012-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX1012-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-ISEL-LABEL: global_load_i8_offset_2050:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0:
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0x802, v0
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-ISEL-LABEL: global_load_i8_offset_2050:
+; GFX11-GENERIC-ISEL:       ; %bb.0:
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:2050 glc
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: global_load_i8_offset_2050:
+; GFX1250-ISEL:       ; %bb.0:
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:2050
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-ISEL-LABEL: global_load_i8_offset_2050:
+; GFX12-GENERIC-ISEL:       ; %bb.0:
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:2050 scope:SCOPE_SE
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+  %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 2050
+  %load = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %gep0, metadata !1)
+  %cast.load = bitcast <4 x i32> %load to <4 x float>
+  ret <4 x float> %cast.load
+}
+
+;; base with maximum negative gfx10 immediate offset
+define <4 x float> @global_load_i8_offset_neg2048(ptr addrspace(1) %sbase) {
+; GFX9-GENERIC-SDAG-LABEL: global_load_i8_offset_neg2048:
+; GFX9-GENERIC-SDAG:       ; %bb.0:
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-2048 glc
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-SDAG-LABEL: global_load_i8_offset_neg2048:
+; GFX906-SDAG:       ; %bb.0:
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-2048 glc
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-SDAG-LABEL: global_load_i8_offset_neg2048:
+; GFX908-SDAG:       ; %bb.0:
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-2048 glc
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-SDAG-LABEL: global_load_i8_offset_neg2048:
+; GFX90A-SDAG:       ; %bb.0:
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-2048 glc
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-SDAG-LABEL: global_load_i8_offset_neg2048:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0:
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-2048 sc1
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-SDAG-LABEL: global_load_i8_offset_neg2048:
+; GFX942-SDAG:       ; %bb.0:
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-2048 sc1
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-SDAG-LABEL: global_load_i8_offset_neg2048:
+; GFX950-SDAG:       ; %bb.0:
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-2048 sc1
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-SDAG-LABEL: global_load_i8_offset_neg2048:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0:
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-2048 glc dlc
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: global_load_i8_offset_neg2048:
+; GFX1012-SDAG:       ; %bb.0:
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-2048 glc dlc
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-SDAG-LABEL: global_load_i8_offset_neg2048:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0:
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-2048 glc dlc
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-SDAG-LABEL: global_load_i8_offset_neg2048:
+; GFX11-GENERIC-SDAG:       ; %bb.0:
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-2048 glc
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: global_load_i8_offset_neg2048:
+; GFX1250-SDAG:       ; %bb.0:
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-2048 scope:SCOPE_DEV
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-SDAG-LABEL: global_load_i8_offset_neg2048:
+; GFX12-GENERIC-SDAG:       ; %bb.0:
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-2048 scope:SCOPE_DEV
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-GENERIC-ISEL-LABEL: global_load_i8_offset_neg2048:
+; GFX9-GENERIC-ISEL:       ; %bb.0:
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-2048 glc
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-ISEL-LABEL: global_load_i8_offset_neg2048:
+; GFX906-ISEL:       ; %bb.0:
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-2048 glc
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-ISEL-LABEL: global_load_i8_offset_neg2048:
+; GFX908-ISEL:       ; %bb.0:
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-2048 glc
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-ISEL-LABEL: global_load_i8_offset_neg2048:
+; GFX90A-ISEL:       ; %bb.0:
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-2048 glc
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-ISEL-LABEL: global_load_i8_offset_neg2048:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0:
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-2048 sc1
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-ISEL-LABEL: global_load_i8_offset_neg2048:
+; GFX942-ISEL:       ; %bb.0:
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-2048 sc1
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-ISEL-LABEL: global_load_i8_offset_neg2048:
+; GFX950-ISEL:       ; %bb.0:
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-2048 sc1
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-ISEL-LABEL: global_load_i8_offset_neg2048:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0:
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-2048 glc dlc
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: global_load_i8_offset_neg2048:
+; GFX1012-ISEL:       ; %bb.0:
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-2048 glc dlc
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-ISEL-LABEL: global_load_i8_offset_neg2048:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0:
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-2048 glc dlc
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-ISEL-LABEL: global_load_i8_offset_neg2048:
+; GFX11-GENERIC-ISEL:       ; %bb.0:
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-2048 glc
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: global_load_i8_offset_neg2048:
+; GFX1250-ISEL:       ; %bb.0:
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-2048 scope:SCOPE_DEV
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-ISEL-LABEL: global_load_i8_offset_neg2048:
+; GFX12-GENERIC-ISEL:       ; %bb.0:
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-2048 scope:SCOPE_DEV
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+  %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 -2048
+  %load = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %gep0, metadata !2)
+  %cast.load = bitcast <4 x i32> %load to <4 x float>
+  ret <4 x float> %cast.load
+}
+
+;; base with maximum negative gfx10 immediate offset - 1
+define <4 x float> @global_load_i8_offset_neg2049(ptr addrspace(1) %sbase) {
+; GFX9-GENERIC-SDAG-LABEL: global_load_i8_offset_neg2049:
+; GFX9-GENERIC-SDAG:       ; %bb.0:
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-2049 glc
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-SDAG-LABEL: global_load_i8_offset_neg2049:
+; GFX906-SDAG:       ; %bb.0:
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-2049 glc
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-SDAG-LABEL: global_load_i8_offset_neg2049:
+; GFX908-SDAG:       ; %bb.0:
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-2049 glc
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-SDAG-LABEL: global_load_i8_offset_neg2049:
+; GFX90A-SDAG:       ; %bb.0:
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-2049 glc
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-SDAG-LABEL: global_load_i8_offset_neg2049:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0:
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-2049 sc0 sc1
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-SDAG-LABEL: global_load_i8_offset_neg2049:
+; GFX942-SDAG:       ; %bb.0:
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-2049 sc0 sc1
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-SDAG-LABEL: global_load_i8_offset_neg2049:
+; GFX950-SDAG:       ; %bb.0:
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-2049 sc0 sc1
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-SDAG-LABEL: global_load_i8_offset_neg2049:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0:
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfffff800, v0
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, -1, v1, vcc_lo
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-1 glc dlc
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: global_load_i8_offset_neg2049:
+; GFX1012-SDAG:       ; %bb.0:
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfffff800, v0
+; GFX1012-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, -1, v1, vcc_lo
+; GFX1012-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-1 glc dlc
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-SDAG-LABEL: global_load_i8_offset_neg2049:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0:
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfffff800, v0
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-1 glc dlc
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-SDAG-LABEL: global_load_i8_offset_neg2049:
+; GFX11-GENERIC-SDAG:       ; %bb.0:
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-2049 glc
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: global_load_i8_offset_neg2049:
+; GFX1250-SDAG:       ; %bb.0:
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-2049 scope:SCOPE_SYS
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-SDAG-LABEL: global_load_i8_offset_neg2049:
+; GFX12-GENERIC-SDAG:       ; %bb.0:
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-2049 scope:SCOPE_SYS
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-GENERIC-ISEL-LABEL: global_load_i8_offset_neg2049:
+; GFX9-GENERIC-ISEL:       ; %bb.0:
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-2049 glc
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-ISEL-LABEL: global_load_i8_offset_neg2049:
+; GFX906-ISEL:       ; %bb.0:
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-2049 glc
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-ISEL-LABEL: global_load_i8_offset_neg2049:
+; GFX908-ISEL:       ; %bb.0:
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-2049 glc
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-ISEL-LABEL: global_load_i8_offset_neg2049:
+; GFX90A-ISEL:       ; %bb.0:
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-2049 glc
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-ISEL-LABEL: global_load_i8_offset_neg2049:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0:
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-2049 sc0 sc1
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-ISEL-LABEL: global_load_i8_offset_neg2049:
+; GFX942-ISEL:       ; %bb.0:
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-2049 sc0 sc1
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-ISEL-LABEL: global_load_i8_offset_neg2049:
+; GFX950-ISEL:       ; %bb.0:
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-2049 sc0 sc1
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-ISEL-LABEL: global_load_i8_offset_neg2049:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0:
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfffff7ff, v0
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, -1, v1, vcc_lo
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: global_load_i8_offset_neg2049:
+; GFX1012-ISEL:       ; %bb.0:
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfffff7ff, v0
+; GFX1012-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, -1, v1, vcc_lo
+; GFX1012-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-ISEL-LABEL: global_load_i8_offset_neg2049:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0:
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfffff7ff, v0
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-ISEL-LABEL: global_load_i8_offset_neg2049:
+; GFX11-GENERIC-ISEL:       ; %bb.0:
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-2049 glc
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: global_load_i8_offset_neg2049:
+; GFX1250-ISEL:       ; %bb.0:
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-2049 scope:SCOPE_SYS
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-ISEL-LABEL: global_load_i8_offset_neg2049:
+; GFX12-GENERIC-ISEL:       ; %bb.0:
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-2049 scope:SCOPE_SYS
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+  %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 -2049
+  %load = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %gep0, metadata !3)
+  %cast.load = bitcast <4 x i32> %load to <4 x float>
+  ret <4 x float> %cast.load
+}
+
+;; base with maximum negative gfx10 immediate offset - 1
+define <4 x float> @global_load_i8_offset_neg2050(ptr addrspace(1) %sbase) {
+; GFX9-GENERIC-SDAG-LABEL: global_load_i8_offset_neg2050:
+; GFX9-GENERIC-SDAG:       ; %bb.0:
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-2050
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-SDAG-LABEL: global_load_i8_offset_neg2050:
+; GFX906-SDAG:       ; %bb.0:
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-2050
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-SDAG-LABEL: global_load_i8_offset_neg2050:
+; GFX908-SDAG:       ; %bb.0:
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-2050
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-SDAG-LABEL: global_load_i8_offset_neg2050:
+; GFX90A-SDAG:       ; %bb.0:
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-2050
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-SDAG-LABEL: global_load_i8_offset_neg2050:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0:
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-2050
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-SDAG-LABEL: global_load_i8_offset_neg2050:
+; GFX942-SDAG:       ; %bb.0:
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-2050
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-SDAG-LABEL: global_load_i8_offset_neg2050:
+; GFX950-SDAG:       ; %bb.0:
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-2050
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-SDAG-LABEL: global_load_i8_offset_neg2050:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0:
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfffff800, v0
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, -1, v1, vcc_lo
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-2
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: global_load_i8_offset_neg2050:
+; GFX1012-SDAG:       ; %bb.0:
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfffff800, v0
+; GFX1012-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, -1, v1, vcc_lo
+; GFX1012-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-2
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-SDAG-LABEL: global_load_i8_offset_neg2050:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0:
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfffff800, v0
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-2
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-SDAG-LABEL: global_load_i8_offset_neg2050:
+; GFX11-GENERIC-SDAG:       ; %bb.0:
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-2050
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: global_load_i8_offset_neg2050:
+; GFX1250-SDAG:       ; %bb.0:
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-2050
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-SDAG-LABEL: global_load_i8_offset_neg2050:
+; GFX12-GENERIC-SDAG:       ; %bb.0:
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-2050
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-GENERIC-ISEL-LABEL: global_load_i8_offset_neg2050:
+; GFX9-GENERIC-ISEL:       ; %bb.0:
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-2050
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-ISEL-LABEL: global_load_i8_offset_neg2050:
+; GFX906-ISEL:       ; %bb.0:
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-2050
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-ISEL-LABEL: global_load_i8_offset_neg2050:
+; GFX908-ISEL:       ; %bb.0:
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-2050
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-ISEL-LABEL: global_load_i8_offset_neg2050:
+; GFX90A-ISEL:       ; %bb.0:
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-2050
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-ISEL-LABEL: global_load_i8_offset_neg2050:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0:
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-2050
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-ISEL-LABEL: global_load_i8_offset_neg2050:
+; GFX942-ISEL:       ; %bb.0:
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-2050
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-ISEL-LABEL: global_load_i8_offset_neg2050:
+; GFX950-ISEL:       ; %bb.0:
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-2050
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-ISEL-LABEL: global_load_i8_offset_neg2050:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0:
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfffff7fe, v0
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, -1, v1, vcc_lo
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: global_load_i8_offset_neg2050:
+; GFX1012-ISEL:       ; %bb.0:
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfffff7fe, v0
+; GFX1012-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, -1, v1, vcc_lo
+; GFX1012-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-ISEL-LABEL: global_load_i8_offset_neg2050:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0:
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfffff7fe, v0
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-ISEL-LABEL: global_load_i8_offset_neg2050:
+; GFX11-GENERIC-ISEL:       ; %bb.0:
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-2050
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: global_load_i8_offset_neg2050:
+; GFX1250-ISEL:       ; %bb.0:
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-2050
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-ISEL-LABEL: global_load_i8_offset_neg2050:
+; GFX12-GENERIC-ISEL:       ; %bb.0:
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-2050
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+  %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 -2050
+  %load = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %gep0, metadata !0)
+  %cast.load = bitcast <4 x i32> %load to <4 x float>
+  ret <4 x float> %cast.load
+}
+
+define <4 x float> @global_load_i8_offset_0x7FFFFF(ptr addrspace(1) %sbase) {
+; GFX9-GENERIC-SDAG-LABEL: global_load_i8_offset_0x7FFFFF:
+; GFX9-GENERIC-SDAG:       ; %bb.0:
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0x7ff000, v0
+; GFX9-GENERIC-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:4095
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-SDAG-LABEL: global_load_i8_offset_0x7FFFFF:
+; GFX906-SDAG:       ; %bb.0:
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0x7ff000, v0
+; GFX906-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX906-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:4095
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-SDAG-LABEL: global_load_i8_offset_0x7FFFFF:
+; GFX908-SDAG:       ; %bb.0:
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0x7ff000, v0
+; GFX908-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX908-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:4095
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-SDAG-LABEL: global_load_i8_offset_0x7FFFFF:
+; GFX90A-SDAG:       ; %bb.0:
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0x7ff000, v0
+; GFX90A-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX90A-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:4095
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-SDAG-LABEL: global_load_i8_offset_0x7FFFFF:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0:
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0x7ff000, v0
+; GFX9-4-GENERIC-SDAG-NEXT:    s_nop 1
+; GFX9-4-GENERIC-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:4095 sc0
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-SDAG-LABEL: global_load_i8_offset_0x7FFFFF:
+; GFX942-SDAG:       ; %bb.0:
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0x7ff000, v0
+; GFX942-SDAG-NEXT:    s_nop 1
+; GFX942-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX942-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:4095 sc0
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-SDAG-LABEL: global_load_i8_offset_0x7FFFFF:
+; GFX950-SDAG:       ; %bb.0:
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0x7ff000, v0
+; GFX950-SDAG-NEXT:    s_nop 1
+; GFX950-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX950-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:4095 sc0
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-SDAG-LABEL: global_load_i8_offset_0x7FFFFF:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0:
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0x7ff800, v0
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:2047 glc
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: global_load_i8_offset_0x7FFFFF:
+; GFX1012-SDAG:       ; %bb.0:
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0x7ff800, v0
+; GFX1012-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX1012-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:2047 glc
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-SDAG-LABEL: global_load_i8_offset_0x7FFFFF:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0:
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0x7ff800, v0
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:2047 glc
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-SDAG-LABEL: global_load_i8_offset_0x7FFFFF:
+; GFX11-GENERIC-SDAG:       ; %bb.0:
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0x7ff000, v0
+; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:4095 glc
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: global_load_i8_offset_0x7FFFFF:
+; GFX1250-SDAG:       ; %bb.0:
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:8388607
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-SDAG-LABEL: global_load_i8_offset_0x7FFFFF:
+; GFX12-GENERIC-SDAG:       ; %bb.0:
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:8388607 scope:SCOPE_SE
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-GENERIC-ISEL-LABEL: global_load_i8_offset_0x7FFFFF:
+; GFX9-GENERIC-ISEL:       ; %bb.0:
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 0x7fffff, v0
+; GFX9-GENERIC-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-ISEL-LABEL: global_load_i8_offset_0x7FFFFF:
+; GFX906-ISEL:       ; %bb.0:
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 0x7fffff, v0
+; GFX906-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX906-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-ISEL-LABEL: global_load_i8_offset_0x7FFFFF:
+; GFX908-ISEL:       ; %bb.0:
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 0x7fffff, v0
+; GFX908-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX908-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-ISEL-LABEL: global_load_i8_offset_0x7FFFFF:
+; GFX90A-ISEL:       ; %bb.0:
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 0x7fffff, v0
+; GFX90A-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX90A-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-ISEL-LABEL: global_load_i8_offset_0x7FFFFF:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0:
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 0x7fffff, v0
+; GFX9-4-GENERIC-ISEL-NEXT:    s_nop 1
+; GFX9-4-GENERIC-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-ISEL-LABEL: global_load_i8_offset_0x7FFFFF:
+; GFX942-ISEL:       ; %bb.0:
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 0x7fffff, v0
+; GFX942-ISEL-NEXT:    s_nop 1
+; GFX942-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX942-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-ISEL-LABEL: global_load_i8_offset_0x7FFFFF:
+; GFX950-ISEL:       ; %bb.0:
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 0x7fffff, v0
+; GFX950-ISEL-NEXT:    s_nop 1
+; GFX950-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX950-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-ISEL-LABEL: global_load_i8_offset_0x7FFFFF:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0:
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0x7fffff, v0
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: global_load_i8_offset_0x7FFFFF:
+; GFX1012-ISEL:       ; %bb.0:
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0x7fffff, v0
+; GFX1012-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX1012-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-ISEL-LABEL: global_load_i8_offset_0x7FFFFF:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0:
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0x7fffff, v0
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-ISEL-LABEL: global_load_i8_offset_0x7FFFFF:
+; GFX11-GENERIC-ISEL:       ; %bb.0:
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0x7fffff, v0
+; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: global_load_i8_offset_0x7FFFFF:
+; GFX1250-ISEL:       ; %bb.0:
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:8388607
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-ISEL-LABEL: global_load_i8_offset_0x7FFFFF:
+; GFX12-GENERIC-ISEL:       ; %bb.0:
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:8388607 scope:SCOPE_SE
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+  %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 8388607
+  %load = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %gep0, metadata !1)
+  %cast.load = bitcast <4 x i32> %load to <4 x float>
+  ret <4 x float> %cast.load
+}
+
+define <4 x float> @global_load_i8_offset_0xFFFFFF(ptr addrspace(1) %sbase) {
+; GFX9-GENERIC-SDAG-LABEL: global_load_i8_offset_0xFFFFFF:
+; GFX9-GENERIC-SDAG:       ; %bb.0:
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0xff800000, v0
+; GFX9-GENERIC-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-SDAG-LABEL: global_load_i8_offset_0xFFFFFF:
+; GFX906-SDAG:       ; %bb.0:
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0xff800000, v0
+; GFX906-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX906-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-SDAG-LABEL: global_load_i8_offset_0xFFFFFF:
+; GFX908-SDAG:       ; %bb.0:
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0xff800000, v0
+; GFX908-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX908-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-SDAG-LABEL: global_load_i8_offset_0xFFFFFF:
+; GFX90A-SDAG:       ; %bb.0:
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0xff800000, v0
+; GFX90A-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX90A-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-SDAG-LABEL: global_load_i8_offset_0xFFFFFF:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0:
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0xff800000, v0
+; GFX9-4-GENERIC-SDAG-NEXT:    s_nop 1
+; GFX9-4-GENERIC-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc1
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-SDAG-LABEL: global_load_i8_offset_0xFFFFFF:
+; GFX942-SDAG:       ; %bb.0:
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0xff800000, v0
+; GFX942-SDAG-NEXT:    s_nop 1
+; GFX942-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX942-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc1
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-SDAG-LABEL: global_load_i8_offset_0xFFFFFF:
+; GFX950-SDAG:       ; %bb.0:
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0xff800000, v0
+; GFX950-SDAG-NEXT:    s_nop 1
+; GFX950-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX950-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc1
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-SDAG-LABEL: global_load_i8_offset_0xFFFFFF:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0:
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0xff800000, v0
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, -1, v1, vcc_lo
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: global_load_i8_offset_0xFFFFFF:
+; GFX1012-SDAG:       ; %bb.0:
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0xff800000, v0
+; GFX1012-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, -1, v1, vcc_lo
+; GFX1012-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-SDAG-LABEL: global_load_i8_offset_0xFFFFFF:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0:
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0xff800000, v0
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-SDAG-LABEL: global_load_i8_offset_0xFFFFFF:
+; GFX11-GENERIC-SDAG:       ; %bb.0:
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0xff800000, v0
+; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo
+; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: global_load_i8_offset_0xFFFFFF:
+; GFX1250-SDAG:       ; %bb.0:
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-8388608 scope:SCOPE_DEV
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-SDAG-LABEL: global_load_i8_offset_0xFFFFFF:
+; GFX12-GENERIC-SDAG:       ; %bb.0:
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-8388608 scope:SCOPE_DEV
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-GENERIC-ISEL-LABEL: global_load_i8_offset_0xFFFFFF:
+; GFX9-GENERIC-ISEL:       ; %bb.0:
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 0xff800000, v0
+; GFX9-GENERIC-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-ISEL-LABEL: global_load_i8_offset_0xFFFFFF:
+; GFX906-ISEL:       ; %bb.0:
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 0xff800000, v0
+; GFX906-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX906-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-ISEL-LABEL: global_load_i8_offset_0xFFFFFF:
+; GFX908-ISEL:       ; %bb.0:
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 0xff800000, v0
+; GFX908-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX908-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-ISEL-LABEL: global_load_i8_offset_0xFFFFFF:
+; GFX90A-ISEL:       ; %bb.0:
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 0xff800000, v0
+; GFX90A-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX90A-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-ISEL-LABEL: global_load_i8_offset_0xFFFFFF:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0:
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 0xff800000, v0
+; GFX9-4-GENERIC-ISEL-NEXT:    s_nop 1
+; GFX9-4-GENERIC-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc1
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-ISEL-LABEL: global_load_i8_offset_0xFFFFFF:
+; GFX942-ISEL:       ; %bb.0:
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 0xff800000, v0
+; GFX942-ISEL-NEXT:    s_nop 1
+; GFX942-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX942-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc1
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-ISEL-LABEL: global_load_i8_offset_0xFFFFFF:
+; GFX950-ISEL:       ; %bb.0:
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 0xff800000, v0
+; GFX950-ISEL-NEXT:    s_nop 1
+; GFX950-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX950-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc1
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-ISEL-LABEL: global_load_i8_offset_0xFFFFFF:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0:
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0xff800000, v0
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, -1, v1, vcc_lo
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: global_load_i8_offset_0xFFFFFF:
+; GFX1012-ISEL:       ; %bb.0:
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0xff800000, v0
+; GFX1012-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, -1, v1, vcc_lo
+; GFX1012-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-ISEL-LABEL: global_load_i8_offset_0xFFFFFF:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0:
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0xff800000, v0
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-ISEL-LABEL: global_load_i8_offset_0xFFFFFF:
+; GFX11-GENERIC-ISEL:       ; %bb.0:
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0xff800000, v0
+; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo
+; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: global_load_i8_offset_0xFFFFFF:
+; GFX1250-ISEL:       ; %bb.0:
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-8388608 scope:SCOPE_DEV
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-ISEL-LABEL: global_load_i8_offset_0xFFFFFF:
+; GFX12-GENERIC-ISEL:       ; %bb.0:
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-8388608 scope:SCOPE_DEV
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+  %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 -8388608
+  %load = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %gep0, metadata !2)
+  %cast.load = bitcast <4 x i32> %load to <4 x float>
+  ret <4 x float> %cast.load
+}
+
+define <4 x float> @global_load_i8_offset_0xFFFFFFFF(ptr addrspace(1) %sbase) {
+; GFX9-GENERIC-SDAG-LABEL: global_load_i8_offset_0xFFFFFFFF:
+; GFX9-GENERIC-SDAG:       ; %bb.0:
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0xfffff000, v0
+; GFX9-GENERIC-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:4095 glc
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-SDAG-LABEL: global_load_i8_offset_0xFFFFFFFF:
+; GFX906-SDAG:       ; %bb.0:
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0xfffff000, v0
+; GFX906-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX906-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:4095 glc
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-SDAG-LABEL: global_load_i8_offset_0xFFFFFFFF:
+; GFX908-SDAG:       ; %bb.0:
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0xfffff000, v0
+; GFX908-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX908-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:4095 glc
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-SDAG-LABEL: global_load_i8_offset_0xFFFFFFFF:
+; GFX90A-SDAG:       ; %bb.0:
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0xfffff000, v0
+; GFX90A-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX90A-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:4095 glc
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-SDAG-LABEL: global_load_i8_offset_0xFFFFFFFF:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0:
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0xfffff000, v0
+; GFX9-4-GENERIC-SDAG-NEXT:    s_nop 1
+; GFX9-4-GENERIC-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:4095 sc0 sc1
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-SDAG-LABEL: global_load_i8_offset_0xFFFFFFFF:
+; GFX942-SDAG:       ; %bb.0:
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0xfffff000, v0
+; GFX942-SDAG-NEXT:    s_nop 1
+; GFX942-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX942-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:4095 sc0 sc1
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-SDAG-LABEL: global_load_i8_offset_0xFFFFFFFF:
+; GFX950-SDAG:       ; %bb.0:
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0xfffff000, v0
+; GFX950-SDAG-NEXT:    s_nop 1
+; GFX950-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX950-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:4095 sc0 sc1
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-SDAG-LABEL: global_load_i8_offset_0xFFFFFFFF:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0:
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfffff800, v0
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:2047 glc dlc
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: global_load_i8_offset_0xFFFFFFFF:
+; GFX1012-SDAG:       ; %bb.0:
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfffff800, v0
+; GFX1012-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX1012-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:2047 glc dlc
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-SDAG-LABEL: global_load_i8_offset_0xFFFFFFFF:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0:
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfffff800, v0
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:2047 glc dlc
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-SDAG-LABEL: global_load_i8_offset_0xFFFFFFFF:
+; GFX11-GENERIC-SDAG:       ; %bb.0:
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfffff000, v0
+; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:4095 glc
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: global_load_i8_offset_0xFFFFFFFF:
+; GFX1250-SDAG:       ; %bb.0:
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0xff800000, v0
+; GFX1250-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX1250-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:8388607 scope:SCOPE_SYS
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-SDAG-LABEL: global_load_i8_offset_0xFFFFFFFF:
+; GFX12-GENERIC-SDAG:       ; %bb.0:
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0xff800000, v0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)
+; GFX12-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:8388607 scope:SCOPE_SYS
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-GENERIC-ISEL-LABEL: global_load_i8_offset_0xFFFFFFFF:
+; GFX9-GENERIC-ISEL:       ; %bb.0:
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, -1, v0
+; GFX9-GENERIC-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-ISEL-LABEL: global_load_i8_offset_0xFFFFFFFF:
+; GFX906-ISEL:       ; %bb.0:
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, -1, v0
+; GFX906-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX906-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-ISEL-LABEL: global_load_i8_offset_0xFFFFFFFF:
+; GFX908-ISEL:       ; %bb.0:
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, -1, v0
+; GFX908-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX908-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-ISEL-LABEL: global_load_i8_offset_0xFFFFFFFF:
+; GFX90A-ISEL:       ; %bb.0:
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, -1, v0
+; GFX90A-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX90A-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-ISEL-LABEL: global_load_i8_offset_0xFFFFFFFF:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0:
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, -1, v0
+; GFX9-4-GENERIC-ISEL-NEXT:    s_nop 1
+; GFX9-4-GENERIC-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0 sc1
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-ISEL-LABEL: global_load_i8_offset_0xFFFFFFFF:
+; GFX942-ISEL:       ; %bb.0:
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, -1, v0
+; GFX942-ISEL-NEXT:    s_nop 1
+; GFX942-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX942-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0 sc1
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-ISEL-LABEL: global_load_i8_offset_0xFFFFFFFF:
+; GFX950-ISEL:       ; %bb.0:
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, -1, v0
+; GFX950-ISEL-NEXT:    s_nop 1
+; GFX950-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX950-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0 sc1
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-ISEL-LABEL: global_load_i8_offset_0xFFFFFFFF:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0:
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, -1
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: global_load_i8_offset_0xFFFFFFFF:
+; GFX1012-ISEL:       ; %bb.0:
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, -1
+; GFX1012-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX1012-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-ISEL-LABEL: global_load_i8_offset_0xFFFFFFFF:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0:
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, -1
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-ISEL-LABEL: global_load_i8_offset_0xFFFFFFFF:
+; GFX11-GENERIC-ISEL:       ; %bb.0:
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, -1
+; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: global_load_i8_offset_0xFFFFFFFF:
+; GFX1250-ISEL:       ; %bb.0:
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, -1
+; GFX1250-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX1250-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SYS
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-ISEL-LABEL: global_load_i8_offset_0xFFFFFFFF:
+; GFX12-GENERIC-ISEL:       ; %bb.0:
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, -1
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_alu depctr_va_vcc(0)
+; GFX12-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SYS
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+  %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 4294967295
+  %load = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %gep0, metadata !3)
+  %cast.load = bitcast <4 x i32> %load to <4 x float>
+  ret <4 x float> %cast.load
+}
+
+define <4 x float> @global_load_i8_offset_0x100000000(ptr addrspace(1) %sbase) {
+; GFX9-GENERIC-SDAG-LABEL: global_load_i8_offset_0x100000000:
+; GFX9-GENERIC-SDAG:       ; %bb.0:
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    v_add_u32_e32 v1, 1, v1
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-SDAG-LABEL: global_load_i8_offset_0x100000000:
+; GFX906-SDAG:       ; %bb.0:
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-SDAG-NEXT:    v_add_u32_e32 v1, 1, v1
+; GFX906-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-SDAG-LABEL: global_load_i8_offset_0x100000000:
+; GFX908-SDAG:       ; %bb.0:
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-SDAG-NEXT:    v_add_u32_e32 v1, 1, v1
+; GFX908-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-SDAG-LABEL: global_load_i8_offset_0x100000000:
+; GFX90A-SDAG:       ; %bb.0:
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-SDAG-NEXT:    v_add_u32_e32 v1, 1, v1
+; GFX90A-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-SDAG-LABEL: global_load_i8_offset_0x100000000:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0:
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    v_add_u32_e32 v1, 1, v1
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-SDAG-LABEL: global_load_i8_offset_0x100000000:
+; GFX942-SDAG:       ; %bb.0:
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    v_add_u32_e32 v1, 1, v1
+; GFX942-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-SDAG-LABEL: global_load_i8_offset_0x100000000:
+; GFX950-SDAG:       ; %bb.0:
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-SDAG-NEXT:    v_add_u32_e32 v1, 1, v1
+; GFX950-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-SDAG-LABEL: global_load_i8_offset_0x100000000:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0:
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_nc_u32_e32 v1, 1, v1
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: global_load_i8_offset_0x100000000:
+; GFX1012-SDAG:       ; %bb.0:
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    v_add_nc_u32_e32 v1, 1, v1
+; GFX1012-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-SDAG-LABEL: global_load_i8_offset_0x100000000:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0:
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_nc_u32_e32 v1, 1, v1
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-SDAG-LABEL: global_load_i8_offset_0x100000000:
+; GFX11-GENERIC-SDAG:       ; %bb.0:
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    v_add_nc_u32_e32 v1, 1, v1
+; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: global_load_i8_offset_0x100000000:
+; GFX1250-SDAG:       ; %bb.0:
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    v_add_nc_u32_e32 v1, 1, v1
+; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-SDAG-LABEL: global_load_i8_offset_0x100000000:
+; GFX12-GENERIC-SDAG:       ; %bb.0:
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    v_add_nc_u32_e32 v1, 1, v1
+; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-GENERIC-ISEL-LABEL: global_load_i8_offset_0x100000000:
+; GFX9-GENERIC-ISEL:       ; %bb.0:
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 0, v0
+; GFX9-GENERIC-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 1, v1, vcc
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-ISEL-LABEL: global_load_i8_offset_0x100000000:
+; GFX906-ISEL:       ; %bb.0:
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 0, v0
+; GFX906-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 1, v1, vcc
+; GFX906-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-ISEL-LABEL: global_load_i8_offset_0x100000000:
+; GFX908-ISEL:       ; %bb.0:
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 0, v0
+; GFX908-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 1, v1, vcc
+; GFX908-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-ISEL-LABEL: global_load_i8_offset_0x100000000:
+; GFX90A-ISEL:       ; %bb.0:
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 0, v0
+; GFX90A-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 1, v1, vcc
+; GFX90A-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-ISEL-LABEL: global_load_i8_offset_0x100000000:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0:
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 0, v0
+; GFX9-4-GENERIC-ISEL-NEXT:    s_nop 1
+; GFX9-4-GENERIC-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 1, v1, vcc
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-ISEL-LABEL: global_load_i8_offset_0x100000000:
+; GFX942-ISEL:       ; %bb.0:
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 0, v0
+; GFX942-ISEL-NEXT:    s_nop 1
+; GFX942-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 1, v1, vcc
+; GFX942-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-ISEL-LABEL: global_load_i8_offset_0x100000000:
+; GFX950-ISEL:       ; %bb.0:
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 0, v0
+; GFX950-ISEL-NEXT:    s_nop 1
+; GFX950-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 1, v1, vcc
+; GFX950-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-ISEL-LABEL: global_load_i8_offset_0x100000000:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0:
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, 0
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 1, v1, vcc_lo
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: global_load_i8_offset_0x100000000:
+; GFX1012-ISEL:       ; %bb.0:
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, 0
+; GFX1012-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 1, v1, vcc_lo
+; GFX1012-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-ISEL-LABEL: global_load_i8_offset_0x100000000:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0:
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, 0
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 1, v1, vcc_lo
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-ISEL-LABEL: global_load_i8_offset_0x100000000:
+; GFX11-GENERIC-ISEL:       ; %bb.0:
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, 0
+; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 1, v1, vcc_lo
+; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: global_load_i8_offset_0x100000000:
+; GFX1250-ISEL:       ; %bb.0:
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, 0
+; GFX1250-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX1250-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 1, v1, vcc_lo
+; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-ISEL-LABEL: global_load_i8_offset_0x100000000:
+; GFX12-GENERIC-ISEL:       ; %bb.0:
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, 0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_alu depctr_va_vcc(0)
+; GFX12-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 1, v1, vcc_lo
+; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+  %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 4294967296
+  %load = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %gep0, metadata !0)
+  %cast.load = bitcast <4 x i32> %load to <4 x float>
+  ret <4 x float> %cast.load
+}
+
+define <4 x float> @global_load_i8_offset_0x100000001(ptr addrspace(1) %sbase) {
+; GFX9-GENERIC-SDAG-LABEL: global_load_i8_offset_0x100000001:
+; GFX9-GENERIC-SDAG:       ; %bb.0:
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0, v0
+; GFX9-GENERIC-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 1, v1, vcc
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:1
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-SDAG-LABEL: global_load_i8_offset_0x100000001:
+; GFX906-SDAG:       ; %bb.0:
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0, v0
+; GFX906-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 1, v1, vcc
+; GFX906-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:1
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-SDAG-LABEL: global_load_i8_offset_0x100000001:
+; GFX908-SDAG:       ; %bb.0:
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0, v0
+; GFX908-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 1, v1, vcc
+; GFX908-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:1
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-SDAG-LABEL: global_load_i8_offset_0x100000001:
+; GFX90A-SDAG:       ; %bb.0:
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0, v0
+; GFX90A-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 1, v1, vcc
+; GFX90A-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:1
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-SDAG-LABEL: global_load_i8_offset_0x100000001:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0:
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0, v0
+; GFX9-4-GENERIC-SDAG-NEXT:    s_nop 1
+; GFX9-4-GENERIC-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 1, v1, vcc
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:1 sc0
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-SDAG-LABEL: global_load_i8_offset_0x100000001:
+; GFX942-SDAG:       ; %bb.0:
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0, v0
+; GFX942-SDAG-NEXT:    s_nop 1
+; GFX942-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 1, v1, vcc
+; GFX942-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:1 sc0
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-SDAG-LABEL: global_load_i8_offset_0x100000001:
+; GFX950-SDAG:       ; %bb.0:
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0, v0
+; GFX950-SDAG-NEXT:    s_nop 1
+; GFX950-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 1, v1, vcc
+; GFX950-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:1 sc0
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-SDAG-LABEL: global_load_i8_offset_0x100000001:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0:
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0, v0
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 1, v1, vcc_lo
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:1 glc
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: global_load_i8_offset_0x100000001:
+; GFX1012-SDAG:       ; %bb.0:
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0, v0
+; GFX1012-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 1, v1, vcc_lo
+; GFX1012-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:1 glc
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-SDAG-LABEL: global_load_i8_offset_0x100000001:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0:
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0, v0
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 1, v1, vcc_lo
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:1 glc
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-SDAG-LABEL: global_load_i8_offset_0x100000001:
+; GFX11-GENERIC-SDAG:       ; %bb.0:
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0, v0
+; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 1, v1, vcc_lo
+; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:1 glc
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: global_load_i8_offset_0x100000001:
+; GFX1250-SDAG:       ; %bb.0:
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0, v0
+; GFX1250-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX1250-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 1, v1, vcc_lo
+; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:1
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-SDAG-LABEL: global_load_i8_offset_0x100000001:
+; GFX12-GENERIC-SDAG:       ; %bb.0:
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0, v0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)
+; GFX12-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 1, v1, vcc_lo
+; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:1 scope:SCOPE_SE
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-GENERIC-ISEL-LABEL: global_load_i8_offset_0x100000001:
+; GFX9-GENERIC-ISEL:       ; %bb.0:
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 1, v0
+; GFX9-GENERIC-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 1, v1, vcc
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-ISEL-LABEL: global_load_i8_offset_0x100000001:
+; GFX906-ISEL:       ; %bb.0:
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 1, v0
+; GFX906-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 1, v1, vcc
+; GFX906-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-ISEL-LABEL: global_load_i8_offset_0x100000001:
+; GFX908-ISEL:       ; %bb.0:
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 1, v0
+; GFX908-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 1, v1, vcc
+; GFX908-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-ISEL-LABEL: global_load_i8_offset_0x100000001:
+; GFX90A-ISEL:       ; %bb.0:
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 1, v0
+; GFX90A-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 1, v1, vcc
+; GFX90A-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-ISEL-LABEL: global_load_i8_offset_0x100000001:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0:
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 1, v0
+; GFX9-4-GENERIC-ISEL-NEXT:    s_nop 1
+; GFX9-4-GENERIC-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 1, v1, vcc
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-ISEL-LABEL: global_load_i8_offset_0x100000001:
+; GFX942-ISEL:       ; %bb.0:
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 1, v0
+; GFX942-ISEL-NEXT:    s_nop 1
+; GFX942-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 1, v1, vcc
+; GFX942-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-ISEL-LABEL: global_load_i8_offset_0x100000001:
+; GFX950-ISEL:       ; %bb.0:
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 1, v0
+; GFX950-ISEL-NEXT:    s_nop 1
+; GFX950-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 1, v1, vcc
+; GFX950-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-ISEL-LABEL: global_load_i8_offset_0x100000001:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0:
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, 1
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 1, v1, vcc_lo
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: global_load_i8_offset_0x100000001:
+; GFX1012-ISEL:       ; %bb.0:
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, 1
+; GFX1012-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 1, v1, vcc_lo
+; GFX1012-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-ISEL-LABEL: global_load_i8_offset_0x100000001:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0:
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, 1
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 1, v1, vcc_lo
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-ISEL-LABEL: global_load_i8_offset_0x100000001:
+; GFX11-GENERIC-ISEL:       ; %bb.0:
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, 1
+; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 1, v1, vcc_lo
+; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: global_load_i8_offset_0x100000001:
+; GFX1250-ISEL:       ; %bb.0:
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, 1
+; GFX1250-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX1250-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 1, v1, vcc_lo
+; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-ISEL-LABEL: global_load_i8_offset_0x100000001:
+; GFX12-GENERIC-ISEL:       ; %bb.0:
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, 1
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_alu depctr_va_vcc(0)
+; GFX12-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 1, v1, vcc_lo
+; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SE
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+  %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 4294967297
+  %load = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %gep0, metadata !1)
+  %cast.load = bitcast <4 x i32> %load to <4 x float>
+  ret <4 x float> %cast.load
+}
+
+define <4 x float> @global_load_i8_offset_0x100000FFF(ptr addrspace(1) %sbase) {
+; GFX9-GENERIC-SDAG-LABEL: global_load_i8_offset_0x100000FFF:
+; GFX9-GENERIC-SDAG:       ; %bb.0:
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0, v0
+; GFX9-GENERIC-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 1, v1, vcc
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:4095 glc
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-SDAG-LABEL: global_load_i8_offset_0x100000FFF:
+; GFX906-SDAG:       ; %bb.0:
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0, v0
+; GFX906-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 1, v1, vcc
+; GFX906-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:4095 glc
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-SDAG-LABEL: global_load_i8_offset_0x100000FFF:
+; GFX908-SDAG:       ; %bb.0:
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0, v0
+; GFX908-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 1, v1, vcc
+; GFX908-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:4095 glc
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-SDAG-LABEL: global_load_i8_offset_0x100000FFF:
+; GFX90A-SDAG:       ; %bb.0:
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0, v0
+; GFX90A-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 1, v1, vcc
+; GFX90A-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:4095 glc
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-SDAG-LABEL: global_load_i8_offset_0x100000FFF:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0:
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0, v0
+; GFX9-4-GENERIC-SDAG-NEXT:    s_nop 1
+; GFX9-4-GENERIC-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 1, v1, vcc
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:4095 sc1
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-SDAG-LABEL: global_load_i8_offset_0x100000FFF:
+; GFX942-SDAG:       ; %bb.0:
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0, v0
+; GFX942-SDAG-NEXT:    s_nop 1
+; GFX942-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 1, v1, vcc
+; GFX942-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:4095 sc1
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-SDAG-LABEL: global_load_i8_offset_0x100000FFF:
+; GFX950-SDAG:       ; %bb.0:
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0, v0
+; GFX950-SDAG-NEXT:    s_nop 1
+; GFX950-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 1, v1, vcc
+; GFX950-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:4095 sc1
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-SDAG-LABEL: global_load_i8_offset_0x100000FFF:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0:
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0x800, v0
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 1, v1, vcc_lo
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:2047 glc dlc
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: global_load_i8_offset_0x100000FFF:
+; GFX1012-SDAG:       ; %bb.0:
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0x800, v0
+; GFX1012-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 1, v1, vcc_lo
+; GFX1012-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:2047 glc dlc
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-SDAG-LABEL: global_load_i8_offset_0x100000FFF:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0:
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0x800, v0
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 1, v1, vcc_lo
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:2047 glc dlc
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-SDAG-LABEL: global_load_i8_offset_0x100000FFF:
+; GFX11-GENERIC-SDAG:       ; %bb.0:
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0, v0
+; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 1, v1, vcc_lo
+; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:4095 glc
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: global_load_i8_offset_0x100000FFF:
+; GFX1250-SDAG:       ; %bb.0:
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0, v0
+; GFX1250-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX1250-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 1, v1, vcc_lo
+; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:4095 scope:SCOPE_DEV
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-SDAG-LABEL: global_load_i8_offset_0x100000FFF:
+; GFX12-GENERIC-SDAG:       ; %bb.0:
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0, v0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)
+; GFX12-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 1, v1, vcc_lo
+; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:4095 scope:SCOPE_DEV
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-GENERIC-ISEL-LABEL: global_load_i8_offset_0x100000FFF:
+; GFX9-GENERIC-ISEL:       ; %bb.0:
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 0xfff, v0
+; GFX9-GENERIC-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 1, v1, vcc
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-ISEL-LABEL: global_load_i8_offset_0x100000FFF:
+; GFX906-ISEL:       ; %bb.0:
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 0xfff, v0
+; GFX906-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 1, v1, vcc
+; GFX906-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-ISEL-LABEL: global_load_i8_offset_0x100000FFF:
+; GFX908-ISEL:       ; %bb.0:
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 0xfff, v0
+; GFX908-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 1, v1, vcc
+; GFX908-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-ISEL-LABEL: global_load_i8_offset_0x100000FFF:
+; GFX90A-ISEL:       ; %bb.0:
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 0xfff, v0
+; GFX90A-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 1, v1, vcc
+; GFX90A-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-ISEL-LABEL: global_load_i8_offset_0x100000FFF:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0:
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 0xfff, v0
+; GFX9-4-GENERIC-ISEL-NEXT:    s_nop 1
+; GFX9-4-GENERIC-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 1, v1, vcc
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc1
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-ISEL-LABEL: global_load_i8_offset_0x100000FFF:
+; GFX942-ISEL:       ; %bb.0:
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 0xfff, v0
+; GFX942-ISEL-NEXT:    s_nop 1
+; GFX942-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 1, v1, vcc
+; GFX942-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc1
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-ISEL-LABEL: global_load_i8_offset_0x100000FFF:
+; GFX950-ISEL:       ; %bb.0:
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 0xfff, v0
+; GFX950-ISEL-NEXT:    s_nop 1
+; GFX950-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 1, v1, vcc
+; GFX950-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc1
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-ISEL-LABEL: global_load_i8_offset_0x100000FFF:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0:
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfff, v0
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 1, v1, vcc_lo
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: global_load_i8_offset_0x100000FFF:
+; GFX1012-ISEL:       ; %bb.0:
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfff, v0
+; GFX1012-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 1, v1, vcc_lo
+; GFX1012-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-ISEL-LABEL: global_load_i8_offset_0x100000FFF:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0:
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfff, v0
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 1, v1, vcc_lo
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-ISEL-LABEL: global_load_i8_offset_0x100000FFF:
+; GFX11-GENERIC-ISEL:       ; %bb.0:
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfff, v0
+; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 1, v1, vcc_lo
+; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: global_load_i8_offset_0x100000FFF:
+; GFX1250-ISEL:       ; %bb.0:
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfff, v0
+; GFX1250-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX1250-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 1, v1, vcc_lo
+; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_DEV
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-ISEL-LABEL: global_load_i8_offset_0x100000FFF:
+; GFX12-GENERIC-ISEL:       ; %bb.0:
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfff, v0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_alu depctr_va_vcc(0)
+; GFX12-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 1, v1, vcc_lo
+; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_DEV
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+  %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 4294971391
+  %load = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %gep0, metadata !2)
+  %cast.load = bitcast <4 x i32> %load to <4 x float>
+  ret <4 x float> %cast.load
+}
+
+define <4 x float> @global_load_i8_offset_0x100001000(ptr addrspace(1) %sbase) {
+; GFX9-GENERIC-SDAG-LABEL: global_load_i8_offset_0x100001000:
+; GFX9-GENERIC-SDAG:       ; %bb.0:
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0x1000, v0
+; GFX9-GENERIC-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 1, v1, vcc
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-SDAG-LABEL: global_load_i8_offset_0x100001000:
+; GFX906-SDAG:       ; %bb.0:
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0x1000, v0
+; GFX906-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 1, v1, vcc
+; GFX906-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-SDAG-LABEL: global_load_i8_offset_0x100001000:
+; GFX908-SDAG:       ; %bb.0:
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0x1000, v0
+; GFX908-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 1, v1, vcc
+; GFX908-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-SDAG-LABEL: global_load_i8_offset_0x100001000:
+; GFX90A-SDAG:       ; %bb.0:
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0x1000, v0
+; GFX90A-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 1, v1, vcc
+; GFX90A-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-SDAG-LABEL: global_load_i8_offset_0x100001000:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0:
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0x1000, v0
+; GFX9-4-GENERIC-SDAG-NEXT:    s_nop 1
+; GFX9-4-GENERIC-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 1, v1, vcc
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0 sc1
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-SDAG-LABEL: global_load_i8_offset_0x100001000:
+; GFX942-SDAG:       ; %bb.0:
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0x1000, v0
+; GFX942-SDAG-NEXT:    s_nop 1
+; GFX942-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 1, v1, vcc
+; GFX942-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0 sc1
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-SDAG-LABEL: global_load_i8_offset_0x100001000:
+; GFX950-SDAG:       ; %bb.0:
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0x1000, v0
+; GFX950-SDAG-NEXT:    s_nop 1
+; GFX950-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 1, v1, vcc
+; GFX950-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0 sc1
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-SDAG-LABEL: global_load_i8_offset_0x100001000:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0:
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0x1000, v0
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 1, v1, vcc_lo
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: global_load_i8_offset_0x100001000:
+; GFX1012-SDAG:       ; %bb.0:
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0x1000, v0
+; GFX1012-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 1, v1, vcc_lo
+; GFX1012-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-SDAG-LABEL: global_load_i8_offset_0x100001000:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0:
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0x1000, v0
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 1, v1, vcc_lo
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-SDAG-LABEL: global_load_i8_offset_0x100001000:
+; GFX11-GENERIC-SDAG:       ; %bb.0:
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0x1000, v0
+; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 1, v1, vcc_lo
+; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: global_load_i8_offset_0x100001000:
+; GFX1250-SDAG:       ; %bb.0:
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0, v0
+; GFX1250-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX1250-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 1, v1, vcc_lo
+; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:4096 scope:SCOPE_SYS
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-SDAG-LABEL: global_load_i8_offset_0x100001000:
+; GFX12-GENERIC-SDAG:       ; %bb.0:
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0, v0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)
+; GFX12-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 1, v1, vcc_lo
+; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:4096 scope:SCOPE_SYS
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-GENERIC-ISEL-LABEL: global_load_i8_offset_0x100001000:
+; GFX9-GENERIC-ISEL:       ; %bb.0:
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 0x1000, v0
+; GFX9-GENERIC-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 1, v1, vcc
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-ISEL-LABEL: global_load_i8_offset_0x100001000:
+; GFX906-ISEL:       ; %bb.0:
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 0x1000, v0
+; GFX906-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 1, v1, vcc
+; GFX906-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-ISEL-LABEL: global_load_i8_offset_0x100001000:
+; GFX908-ISEL:       ; %bb.0:
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 0x1000, v0
+; GFX908-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 1, v1, vcc
+; GFX908-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-ISEL-LABEL: global_load_i8_offset_0x100001000:
+; GFX90A-ISEL:       ; %bb.0:
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 0x1000, v0
+; GFX90A-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 1, v1, vcc
+; GFX90A-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-ISEL-LABEL: global_load_i8_offset_0x100001000:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0:
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 0x1000, v0
+; GFX9-4-GENERIC-ISEL-NEXT:    s_nop 1
+; GFX9-4-GENERIC-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 1, v1, vcc
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0 sc1
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-ISEL-LABEL: global_load_i8_offset_0x100001000:
+; GFX942-ISEL:       ; %bb.0:
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 0x1000, v0
+; GFX942-ISEL-NEXT:    s_nop 1
+; GFX942-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 1, v1, vcc
+; GFX942-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0 sc1
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-ISEL-LABEL: global_load_i8_offset_0x100001000:
+; GFX950-ISEL:       ; %bb.0:
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 0x1000, v0
+; GFX950-ISEL-NEXT:    s_nop 1
+; GFX950-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 1, v1, vcc
+; GFX950-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0 sc1
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-ISEL-LABEL: global_load_i8_offset_0x100001000:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0:
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0x1000, v0
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 1, v1, vcc_lo
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: global_load_i8_offset_0x100001000:
+; GFX1012-ISEL:       ; %bb.0:
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0x1000, v0
+; GFX1012-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 1, v1, vcc_lo
+; GFX1012-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-ISEL-LABEL: global_load_i8_offset_0x100001000:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0:
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0x1000, v0
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 1, v1, vcc_lo
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-ISEL-LABEL: global_load_i8_offset_0x100001000:
+; GFX11-GENERIC-ISEL:       ; %bb.0:
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0x1000, v0
+; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 1, v1, vcc_lo
+; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: global_load_i8_offset_0x100001000:
+; GFX1250-ISEL:       ; %bb.0:
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0x1000, v0
+; GFX1250-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX1250-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 1, v1, vcc_lo
+; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SYS
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-ISEL-LABEL: global_load_i8_offset_0x100001000:
+; GFX12-GENERIC-ISEL:       ; %bb.0:
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0x1000, v0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_alu depctr_va_vcc(0)
+; GFX12-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 1, v1, vcc_lo
+; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SYS
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+  %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 4294971392
+  %load = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %gep0, metadata !3)
+  %cast.load = bitcast <4 x i32> %load to <4 x float>
+  ret <4 x float> %cast.load
+}
+
+define <4 x float> @global_load_i8_offset_neg0xFFFFFFFF(ptr addrspace(1) %sbase) {
+; GFX9-GENERIC-SDAG-LABEL: global_load_i8_offset_neg0xFFFFFFFF:
+; GFX9-GENERIC-SDAG:       ; %bb.0:
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0x1000, v0
+; GFX9-GENERIC-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-4095
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-SDAG-LABEL: global_load_i8_offset_neg0xFFFFFFFF:
+; GFX906-SDAG:       ; %bb.0:
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0x1000, v0
+; GFX906-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX906-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-4095
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-SDAG-LABEL: global_load_i8_offset_neg0xFFFFFFFF:
+; GFX908-SDAG:       ; %bb.0:
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0x1000, v0
+; GFX908-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX908-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-4095
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-SDAG-LABEL: global_load_i8_offset_neg0xFFFFFFFF:
+; GFX90A-SDAG:       ; %bb.0:
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0x1000, v0
+; GFX90A-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX90A-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-4095
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-SDAG-LABEL: global_load_i8_offset_neg0xFFFFFFFF:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0:
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0x1000, v0
+; GFX9-4-GENERIC-SDAG-NEXT:    s_nop 1
+; GFX9-4-GENERIC-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-4095
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-SDAG-LABEL: global_load_i8_offset_neg0xFFFFFFFF:
+; GFX942-SDAG:       ; %bb.0:
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0x1000, v0
+; GFX942-SDAG-NEXT:    s_nop 1
+; GFX942-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX942-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-4095
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-SDAG-LABEL: global_load_i8_offset_neg0xFFFFFFFF:
+; GFX950-SDAG:       ; %bb.0:
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0x1000, v0
+; GFX950-SDAG-NEXT:    s_nop 1
+; GFX950-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX950-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-4095
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-SDAG-LABEL: global_load_i8_offset_neg0xFFFFFFFF:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0:
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0x800, v0
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, -1, v1, vcc_lo
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-2047
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: global_load_i8_offset_neg0xFFFFFFFF:
+; GFX1012-SDAG:       ; %bb.0:
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0x800, v0
+; GFX1012-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, -1, v1, vcc_lo
+; GFX1012-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-2047
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-SDAG-LABEL: global_load_i8_offset_neg0xFFFFFFFF:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0:
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0x800, v0
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-2047
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-SDAG-LABEL: global_load_i8_offset_neg0xFFFFFFFF:
+; GFX11-GENERIC-SDAG:       ; %bb.0:
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0x1000, v0
+; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo
+; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-4095
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: global_load_i8_offset_neg0xFFFFFFFF:
+; GFX1250-SDAG:       ; %bb.0:
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0x800000, v0
+; GFX1250-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX1250-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo
+; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-8388607
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-SDAG-LABEL: global_load_i8_offset_neg0xFFFFFFFF:
+; GFX12-GENERIC-SDAG:       ; %bb.0:
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0x800000, v0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)
+; GFX12-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo
+; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-8388607
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-GENERIC-ISEL-LABEL: global_load_i8_offset_neg0xFFFFFFFF:
+; GFX9-GENERIC-ISEL:       ; %bb.0:
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 1, v0
+; GFX9-GENERIC-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-ISEL-LABEL: global_load_i8_offset_neg0xFFFFFFFF:
+; GFX906-ISEL:       ; %bb.0:
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 1, v0
+; GFX906-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX906-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-ISEL-LABEL: global_load_i8_offset_neg0xFFFFFFFF:
+; GFX908-ISEL:       ; %bb.0:
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 1, v0
+; GFX908-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX908-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-ISEL-LABEL: global_load_i8_offset_neg0xFFFFFFFF:
+; GFX90A-ISEL:       ; %bb.0:
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 1, v0
+; GFX90A-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX90A-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-ISEL-LABEL: global_load_i8_offset_neg0xFFFFFFFF:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0:
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 1, v0
+; GFX9-4-GENERIC-ISEL-NEXT:    s_nop 1
+; GFX9-4-GENERIC-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-ISEL-LABEL: global_load_i8_offset_neg0xFFFFFFFF:
+; GFX942-ISEL:       ; %bb.0:
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 1, v0
+; GFX942-ISEL-NEXT:    s_nop 1
+; GFX942-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX942-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-ISEL-LABEL: global_load_i8_offset_neg0xFFFFFFFF:
+; GFX950-ISEL:       ; %bb.0:
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 1, v0
+; GFX950-ISEL-NEXT:    s_nop 1
+; GFX950-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX950-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-ISEL-LABEL: global_load_i8_offset_neg0xFFFFFFFF:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0:
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, 1
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, -1, v1, vcc_lo
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: global_load_i8_offset_neg0xFFFFFFFF:
+; GFX1012-ISEL:       ; %bb.0:
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, 1
+; GFX1012-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, -1, v1, vcc_lo
+; GFX1012-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-ISEL-LABEL: global_load_i8_offset_neg0xFFFFFFFF:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0:
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, 1
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-ISEL-LABEL: global_load_i8_offset_neg0xFFFFFFFF:
+; GFX11-GENERIC-ISEL:       ; %bb.0:
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, 1
+; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo
+; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: global_load_i8_offset_neg0xFFFFFFFF:
+; GFX1250-ISEL:       ; %bb.0:
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, 1
+; GFX1250-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX1250-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo
+; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-ISEL-LABEL: global_load_i8_offset_neg0xFFFFFFFF:
+; GFX12-GENERIC-ISEL:       ; %bb.0:
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, 1
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_alu depctr_va_vcc(0)
+; GFX12-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo
+; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+  %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 -4294967295
+  %load = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %gep0, metadata !0)
+  %cast.load = bitcast <4 x i32> %load to <4 x float>
+  ret <4 x float> %cast.load
+}
+
+define <4 x float> @global_load_i8_offset_neg0x100000000(ptr addrspace(1) %sbase) {
+; GFX9-GENERIC-SDAG-LABEL: global_load_i8_offset_neg0x100000000:
+; GFX9-GENERIC-SDAG:       ; %bb.0:
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    v_add_u32_e32 v1, -1, v1
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-SDAG-LABEL: global_load_i8_offset_neg0x100000000:
+; GFX906-SDAG:       ; %bb.0:
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-SDAG-NEXT:    v_add_u32_e32 v1, -1, v1
+; GFX906-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-SDAG-LABEL: global_load_i8_offset_neg0x100000000:
+; GFX908-SDAG:       ; %bb.0:
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-SDAG-NEXT:    v_add_u32_e32 v1, -1, v1
+; GFX908-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-SDAG-LABEL: global_load_i8_offset_neg0x100000000:
+; GFX90A-SDAG:       ; %bb.0:
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-SDAG-NEXT:    v_add_u32_e32 v1, -1, v1
+; GFX90A-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-SDAG-LABEL: global_load_i8_offset_neg0x100000000:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0:
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    v_add_u32_e32 v1, -1, v1
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-SDAG-LABEL: global_load_i8_offset_neg0x100000000:
+; GFX942-SDAG:       ; %bb.0:
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    v_add_u32_e32 v1, -1, v1
+; GFX942-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-SDAG-LABEL: global_load_i8_offset_neg0x100000000:
+; GFX950-SDAG:       ; %bb.0:
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-SDAG-NEXT:    v_add_u32_e32 v1, -1, v1
+; GFX950-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-SDAG-LABEL: global_load_i8_offset_neg0x100000000:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0:
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_nc_u32_e32 v1, -1, v1
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: global_load_i8_offset_neg0x100000000:
+; GFX1012-SDAG:       ; %bb.0:
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    v_add_nc_u32_e32 v1, -1, v1
+; GFX1012-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-SDAG-LABEL: global_load_i8_offset_neg0x100000000:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0:
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_nc_u32_e32 v1, -1, v1
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-SDAG-LABEL: global_load_i8_offset_neg0x100000000:
+; GFX11-GENERIC-SDAG:       ; %bb.0:
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    v_add_nc_u32_e32 v1, -1, v1
+; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: global_load_i8_offset_neg0x100000000:
+; GFX1250-SDAG:       ; %bb.0:
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    v_add_nc_u32_e32 v1, -1, v1
+; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-SDAG-LABEL: global_load_i8_offset_neg0x100000000:
+; GFX12-GENERIC-SDAG:       ; %bb.0:
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    v_add_nc_u32_e32 v1, -1, v1
+; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SE
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-GENERIC-ISEL-LABEL: global_load_i8_offset_neg0x100000000:
+; GFX9-GENERIC-ISEL:       ; %bb.0:
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 0, v0
+; GFX9-GENERIC-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-ISEL-LABEL: global_load_i8_offset_neg0x100000000:
+; GFX906-ISEL:       ; %bb.0:
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 0, v0
+; GFX906-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX906-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-ISEL-LABEL: global_load_i8_offset_neg0x100000000:
+; GFX908-ISEL:       ; %bb.0:
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 0, v0
+; GFX908-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX908-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-ISEL-LABEL: global_load_i8_offset_neg0x100000000:
+; GFX90A-ISEL:       ; %bb.0:
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 0, v0
+; GFX90A-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX90A-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-ISEL-LABEL: global_load_i8_offset_neg0x100000000:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0:
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 0, v0
+; GFX9-4-GENERIC-ISEL-NEXT:    s_nop 1
+; GFX9-4-GENERIC-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-ISEL-LABEL: global_load_i8_offset_neg0x100000000:
+; GFX942-ISEL:       ; %bb.0:
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 0, v0
+; GFX942-ISEL-NEXT:    s_nop 1
+; GFX942-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX942-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-ISEL-LABEL: global_load_i8_offset_neg0x100000000:
+; GFX950-ISEL:       ; %bb.0:
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 0, v0
+; GFX950-ISEL-NEXT:    s_nop 1
+; GFX950-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX950-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-ISEL-LABEL: global_load_i8_offset_neg0x100000000:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0:
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, 0
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, -1, v1, vcc_lo
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: global_load_i8_offset_neg0x100000000:
+; GFX1012-ISEL:       ; %bb.0:
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, 0
+; GFX1012-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, -1, v1, vcc_lo
+; GFX1012-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-ISEL-LABEL: global_load_i8_offset_neg0x100000000:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0:
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, 0
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-ISEL-LABEL: global_load_i8_offset_neg0x100000000:
+; GFX11-GENERIC-ISEL:       ; %bb.0:
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, 0
+; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo
+; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: global_load_i8_offset_neg0x100000000:
+; GFX1250-ISEL:       ; %bb.0:
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, 0
+; GFX1250-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX1250-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo
+; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-ISEL-LABEL: global_load_i8_offset_neg0x100000000:
+; GFX12-GENERIC-ISEL:       ; %bb.0:
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, 0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_alu depctr_va_vcc(0)
+; GFX12-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo
+; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SE
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+  %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 -4294967296
+  %load = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %gep0, metadata !1)
+  %cast.load = bitcast <4 x i32> %load to <4 x float>
+  ret <4 x float> %cast.load
+}
+
+define <4 x float> @global_load_i8_offset_neg0x100000001(ptr addrspace(1) %sbase) {
+; GFX9-GENERIC-SDAG-LABEL: global_load_i8_offset_neg0x100000001:
+; GFX9-GENERIC-SDAG:       ; %bb.0:
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0, v0
+; GFX9-GENERIC-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-1 glc
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-SDAG-LABEL: global_load_i8_offset_neg0x100000001:
+; GFX906-SDAG:       ; %bb.0:
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0, v0
+; GFX906-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX906-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-1 glc
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-SDAG-LABEL: global_load_i8_offset_neg0x100000001:
+; GFX908-SDAG:       ; %bb.0:
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0, v0
+; GFX908-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX908-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-1 glc
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-SDAG-LABEL: global_load_i8_offset_neg0x100000001:
+; GFX90A-SDAG:       ; %bb.0:
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0, v0
+; GFX90A-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX90A-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-1 glc
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-SDAG-LABEL: global_load_i8_offset_neg0x100000001:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0:
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0, v0
+; GFX9-4-GENERIC-SDAG-NEXT:    s_nop 1
+; GFX9-4-GENERIC-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-1 sc1
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-SDAG-LABEL: global_load_i8_offset_neg0x100000001:
+; GFX942-SDAG:       ; %bb.0:
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0, v0
+; GFX942-SDAG-NEXT:    s_nop 1
+; GFX942-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX942-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-1 sc1
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-SDAG-LABEL: global_load_i8_offset_neg0x100000001:
+; GFX950-SDAG:       ; %bb.0:
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0, v0
+; GFX950-SDAG-NEXT:    s_nop 1
+; GFX950-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX950-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-1 sc1
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-SDAG-LABEL: global_load_i8_offset_neg0x100000001:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0:
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0, v0
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, -1, v1, vcc_lo
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-1 glc dlc
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: global_load_i8_offset_neg0x100000001:
+; GFX1012-SDAG:       ; %bb.0:
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0, v0
+; GFX1012-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, -1, v1, vcc_lo
+; GFX1012-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-1 glc dlc
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-SDAG-LABEL: global_load_i8_offset_neg0x100000001:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0:
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0, v0
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-1 glc dlc
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-SDAG-LABEL: global_load_i8_offset_neg0x100000001:
+; GFX11-GENERIC-SDAG:       ; %bb.0:
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0, v0
+; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo
+; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-1 glc
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: global_load_i8_offset_neg0x100000001:
+; GFX1250-SDAG:       ; %bb.0:
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0, v0
+; GFX1250-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX1250-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo
+; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-1 scope:SCOPE_DEV
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-SDAG-LABEL: global_load_i8_offset_neg0x100000001:
+; GFX12-GENERIC-SDAG:       ; %bb.0:
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0, v0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)
+; GFX12-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo
+; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-1 scope:SCOPE_DEV
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-GENERIC-ISEL-LABEL: global_load_i8_offset_neg0x100000001:
+; GFX9-GENERIC-ISEL:       ; %bb.0:
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, -1, v0
+; GFX9-GENERIC-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, -2, v1, vcc
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-ISEL-LABEL: global_load_i8_offset_neg0x100000001:
+; GFX906-ISEL:       ; %bb.0:
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, -1, v0
+; GFX906-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, -2, v1, vcc
+; GFX906-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-ISEL-LABEL: global_load_i8_offset_neg0x100000001:
+; GFX908-ISEL:       ; %bb.0:
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, -1, v0
+; GFX908-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, -2, v1, vcc
+; GFX908-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-ISEL-LABEL: global_load_i8_offset_neg0x100000001:
+; GFX90A-ISEL:       ; %bb.0:
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, -1, v0
+; GFX90A-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, -2, v1, vcc
+; GFX90A-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-ISEL-LABEL: global_load_i8_offset_neg0x100000001:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0:
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, -1, v0
+; GFX9-4-GENERIC-ISEL-NEXT:    s_nop 1
+; GFX9-4-GENERIC-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, -2, v1, vcc
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc1
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-ISEL-LABEL: global_load_i8_offset_neg0x100000001:
+; GFX942-ISEL:       ; %bb.0:
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, -1, v0
+; GFX942-ISEL-NEXT:    s_nop 1
+; GFX942-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, -2, v1, vcc
+; GFX942-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc1
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-ISEL-LABEL: global_load_i8_offset_neg0x100000001:
+; GFX950-ISEL:       ; %bb.0:
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, -1, v0
+; GFX950-ISEL-NEXT:    s_nop 1
+; GFX950-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, -2, v1, vcc
+; GFX950-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc1
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-ISEL-LABEL: global_load_i8_offset_neg0x100000001:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0:
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, -1
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, -2, v1, vcc_lo
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: global_load_i8_offset_neg0x100000001:
+; GFX1012-ISEL:       ; %bb.0:
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, -1
+; GFX1012-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, -2, v1, vcc_lo
+; GFX1012-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-ISEL-LABEL: global_load_i8_offset_neg0x100000001:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0:
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, -1
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, -2, v1, vcc_lo
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-ISEL-LABEL: global_load_i8_offset_neg0x100000001:
+; GFX11-GENERIC-ISEL:       ; %bb.0:
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, -1
+; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, -2, v1, vcc_lo
+; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: global_load_i8_offset_neg0x100000001:
+; GFX1250-ISEL:       ; %bb.0:
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, -1
+; GFX1250-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX1250-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, -2, v1, vcc_lo
+; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_DEV
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-ISEL-LABEL: global_load_i8_offset_neg0x100000001:
+; GFX12-GENERIC-ISEL:       ; %bb.0:
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, -1
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_alu depctr_va_vcc(0)
+; GFX12-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, -2, v1, vcc_lo
+; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_DEV
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+  %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 -4294967297
+  %load = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %gep0, metadata !2)
+  %cast.load = bitcast <4 x i32> %load to <4 x float>
+  ret <4 x float> %cast.load
+}
+
+;;------------------------------------------------------------------------------
+;; Basic addressing patterns
+;;------------------------------------------------------------------------------
+
+;; Basic pattern, no immediate offset.
+define <4 x float> @global_load_i8_zext_vgpr(ptr addrspace(1) %sbase, i32 %voffset) {
+; GFX9-GENERIC-SDAG-LABEL: global_load_i8_zext_vgpr:
+; GFX9-GENERIC-SDAG:       ; %bb.0:
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX9-GENERIC-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-SDAG-LABEL: global_load_i8_zext_vgpr:
+; GFX906-SDAG:       ; %bb.0:
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX906-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX906-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-SDAG-LABEL: global_load_i8_zext_vgpr:
+; GFX908-SDAG:       ; %bb.0:
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX908-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX908-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-SDAG-LABEL: global_load_i8_zext_vgpr:
+; GFX90A-SDAG:       ; %bb.0:
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX90A-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX90A-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-SDAG-LABEL: global_load_i8_zext_vgpr:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0:
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX9-4-GENERIC-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 0, v[2:3]
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0 sc1
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-SDAG-LABEL: global_load_i8_zext_vgpr:
+; GFX942-SDAG:       ; %bb.0:
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX942-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 0, v[2:3]
+; GFX942-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0 sc1
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-SDAG-LABEL: global_load_i8_zext_vgpr:
+; GFX950-SDAG:       ; %bb.0:
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX950-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 0, v[2:3]
+; GFX950-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0 sc1
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-SDAG-LABEL: global_load_i8_zext_vgpr:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0:
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: global_load_i8_zext_vgpr:
+; GFX1012-SDAG:       ; %bb.0:
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX1012-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX1012-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-SDAG-LABEL: global_load_i8_zext_vgpr:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0:
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-SDAG-LABEL: global_load_i8_zext_vgpr:
+; GFX11-GENERIC-SDAG:       ; %bb.0:
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: global_load_i8_zext_vgpr:
+; GFX1250-SDAG:       ; %bb.0:
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX1250-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX1250-SDAG-NEXT:    v_add_nc_u64_e32 v[0:1], v[0:1], v[2:3]
+; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SYS
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-SDAG-LABEL: global_load_i8_zext_vgpr:
+; GFX12-GENERIC-SDAG:       ; %bb.0:
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)
+; GFX12-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SYS
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-GENERIC-ISEL-LABEL: global_load_i8_zext_vgpr:
+; GFX9-GENERIC-ISEL:       ; %bb.0:
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX9-GENERIC-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-ISEL-LABEL: global_load_i8_zext_vgpr:
+; GFX906-ISEL:       ; %bb.0:
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX906-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX906-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-ISEL-LABEL: global_load_i8_zext_vgpr:
+; GFX908-ISEL:       ; %bb.0:
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX908-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX908-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-ISEL-LABEL: global_load_i8_zext_vgpr:
+; GFX90A-ISEL:       ; %bb.0:
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX90A-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX90A-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-ISEL-LABEL: global_load_i8_zext_vgpr:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0:
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX9-4-GENERIC-ISEL-NEXT:    s_nop 1
+; GFX9-4-GENERIC-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0 sc1
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-ISEL-LABEL: global_load_i8_zext_vgpr:
+; GFX942-ISEL:       ; %bb.0:
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX942-ISEL-NEXT:    s_nop 1
+; GFX942-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX942-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0 sc1
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-ISEL-LABEL: global_load_i8_zext_vgpr:
+; GFX950-ISEL:       ; %bb.0:
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX950-ISEL-NEXT:    s_nop 1
+; GFX950-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX950-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0 sc1
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-ISEL-LABEL: global_load_i8_zext_vgpr:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0:
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: global_load_i8_zext_vgpr:
+; GFX1012-ISEL:       ; %bb.0:
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX1012-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX1012-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-ISEL-LABEL: global_load_i8_zext_vgpr:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0:
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-ISEL-LABEL: global_load_i8_zext_vgpr:
+; GFX11-GENERIC-ISEL:       ; %bb.0:
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: global_load_i8_zext_vgpr:
+; GFX1250-ISEL:       ; %bb.0:
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX1250-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX1250-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SYS
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-ISEL-LABEL: global_load_i8_zext_vgpr:
+; GFX12-GENERIC-ISEL:       ; %bb.0:
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_alu depctr_va_vcc(0)
+; GFX12-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SYS
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+  %zext.offset = zext i32 %voffset to i64
+  %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 %zext.offset
+  %load = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %gep0, metadata !3)
+  %cast.load = bitcast <4 x i32> %load to <4 x float>
+  ret <4 x float> %cast.load
+}
+
+;; Maximum positive offset on gfx9
+define <4 x float> @global_load_i8_zext_vgpr_offset_4095(ptr addrspace(1) %sbase, i32 %voffset) {
+; GFX9-GENERIC-SDAG-LABEL: global_load_i8_zext_vgpr_offset_4095:
+; GFX9-GENERIC-SDAG:       ; %bb.0:
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX9-GENERIC-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:4095
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-SDAG-LABEL: global_load_i8_zext_vgpr_offset_4095:
+; GFX906-SDAG:       ; %bb.0:
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX906-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX906-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:4095
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-SDAG-LABEL: global_load_i8_zext_vgpr_offset_4095:
+; GFX908-SDAG:       ; %bb.0:
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX908-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX908-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:4095
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-SDAG-LABEL: global_load_i8_zext_vgpr_offset_4095:
+; GFX90A-SDAG:       ; %bb.0:
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX90A-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX90A-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:4095
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-SDAG-LABEL: global_load_i8_zext_vgpr_offset_4095:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0:
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX9-4-GENERIC-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 0, v[2:3]
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:4095
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-SDAG-LABEL: global_load_i8_zext_vgpr_offset_4095:
+; GFX942-SDAG:       ; %bb.0:
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX942-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 0, v[2:3]
+; GFX942-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:4095
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-SDAG-LABEL: global_load_i8_zext_vgpr_offset_4095:
+; GFX950-SDAG:       ; %bb.0:
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX950-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 0, v[2:3]
+; GFX950-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:4095
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-SDAG-LABEL: global_load_i8_zext_vgpr_offset_4095:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0:
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0x800, v0
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:2047
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: global_load_i8_zext_vgpr_offset_4095:
+; GFX1012-SDAG:       ; %bb.0:
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX1012-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX1012-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0x800, v0
+; GFX1012-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX1012-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:2047
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-SDAG-LABEL: global_load_i8_zext_vgpr_offset_4095:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0:
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0x800, v0
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:2047
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-SDAG-LABEL: global_load_i8_zext_vgpr_offset_4095:
+; GFX11-GENERIC-SDAG:       ; %bb.0:
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:4095
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: global_load_i8_zext_vgpr_offset_4095:
+; GFX1250-SDAG:       ; %bb.0:
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX1250-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX1250-SDAG-NEXT:    v_add_nc_u64_e32 v[0:1], v[0:1], v[2:3]
+; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:4095
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-SDAG-LABEL: global_load_i8_zext_vgpr_offset_4095:
+; GFX12-GENERIC-SDAG:       ; %bb.0:
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)
+; GFX12-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:4095
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-GENERIC-ISEL-LABEL: global_load_i8_zext_vgpr_offset_4095:
+; GFX9-GENERIC-ISEL:       ; %bb.0:
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX9-GENERIC-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:4095
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-ISEL-LABEL: global_load_i8_zext_vgpr_offset_4095:
+; GFX906-ISEL:       ; %bb.0:
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX906-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX906-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:4095
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-ISEL-LABEL: global_load_i8_zext_vgpr_offset_4095:
+; GFX908-ISEL:       ; %bb.0:
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX908-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX908-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:4095
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-ISEL-LABEL: global_load_i8_zext_vgpr_offset_4095:
+; GFX90A-ISEL:       ; %bb.0:
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX90A-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX90A-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:4095
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-ISEL-LABEL: global_load_i8_zext_vgpr_offset_4095:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0:
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX9-4-GENERIC-ISEL-NEXT:    s_nop 1
+; GFX9-4-GENERIC-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:4095
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-ISEL-LABEL: global_load_i8_zext_vgpr_offset_4095:
+; GFX942-ISEL:       ; %bb.0:
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX942-ISEL-NEXT:    s_nop 1
+; GFX942-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX942-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:4095
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-ISEL-LABEL: global_load_i8_zext_vgpr_offset_4095:
+; GFX950-ISEL:       ; %bb.0:
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX950-ISEL-NEXT:    s_nop 1
+; GFX950-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX950-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:4095
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-ISEL-LABEL: global_load_i8_zext_vgpr_offset_4095:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0:
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfff, v0
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: global_load_i8_zext_vgpr_offset_4095:
+; GFX1012-ISEL:       ; %bb.0:
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX1012-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX1012-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfff, v0
+; GFX1012-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX1012-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-ISEL-LABEL: global_load_i8_zext_vgpr_offset_4095:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0:
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfff, v0
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-ISEL-LABEL: global_load_i8_zext_vgpr_offset_4095:
+; GFX11-GENERIC-ISEL:       ; %bb.0:
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:4095
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: global_load_i8_zext_vgpr_offset_4095:
+; GFX1250-ISEL:       ; %bb.0:
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX1250-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX1250-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:4095
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-ISEL-LABEL: global_load_i8_zext_vgpr_offset_4095:
+; GFX12-GENERIC-ISEL:       ; %bb.0:
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_alu depctr_va_vcc(0)
+; GFX12-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:4095
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+  %zext.offset = zext i32 %voffset to i64
+  %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 %zext.offset
+  %gep1 = getelementptr inbounds i8, ptr addrspace(1) %gep0, i64 4095
+  %load = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %gep1, metadata !0)
+  %cast.load = bitcast <4 x i32> %load to <4 x float>
+  ret <4 x float> %cast.load
+}
+
+;; Maximum positive offset on gfx9 + 1
+define <4 x float> @global_load_i8_zext_vgpr_offset_4096(ptr addrspace(1) %sbase, i32 %voffset) {
+; GFX9-GENERIC-SDAG-LABEL: global_load_i8_zext_vgpr_offset_4096:
+; GFX9-GENERIC-SDAG:       ; %bb.0:
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX9-GENERIC-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX9-GENERIC-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0x1000, v0
+; GFX9-GENERIC-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-SDAG-LABEL: global_load_i8_zext_vgpr_offset_4096:
+; GFX906-SDAG:       ; %bb.0:
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX906-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX906-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0x1000, v0
+; GFX906-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX906-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-SDAG-LABEL: global_load_i8_zext_vgpr_offset_4096:
+; GFX908-SDAG:       ; %bb.0:
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX908-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX908-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0x1000, v0
+; GFX908-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX908-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-SDAG-LABEL: global_load_i8_zext_vgpr_offset_4096:
+; GFX90A-SDAG:       ; %bb.0:
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX90A-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX90A-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0x1000, v0
+; GFX90A-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX90A-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-SDAG-LABEL: global_load_i8_zext_vgpr_offset_4096:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0:
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX9-4-GENERIC-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 0, v[2:3]
+; GFX9-4-GENERIC-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0x1000, v0
+; GFX9-4-GENERIC-SDAG-NEXT:    s_nop 1
+; GFX9-4-GENERIC-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-SDAG-LABEL: global_load_i8_zext_vgpr_offset_4096:
+; GFX942-SDAG:       ; %bb.0:
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX942-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 0, v[2:3]
+; GFX942-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0x1000, v0
+; GFX942-SDAG-NEXT:    s_nop 1
+; GFX942-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX942-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-SDAG-LABEL: global_load_i8_zext_vgpr_offset_4096:
+; GFX950-SDAG:       ; %bb.0:
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX950-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 0, v[2:3]
+; GFX950-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0x1000, v0
+; GFX950-SDAG-NEXT:    s_nop 1
+; GFX950-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX950-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-SDAG-LABEL: global_load_i8_zext_vgpr_offset_4096:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0:
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0x1000, v0
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: global_load_i8_zext_vgpr_offset_4096:
+; GFX1012-SDAG:       ; %bb.0:
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX1012-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX1012-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0x1000, v0
+; GFX1012-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX1012-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-SDAG-LABEL: global_load_i8_zext_vgpr_offset_4096:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0:
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0x1000, v0
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-SDAG-LABEL: global_load_i8_zext_vgpr_offset_4096:
+; GFX11-GENERIC-SDAG:       ; %bb.0:
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0x1000, v0
+; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: global_load_i8_zext_vgpr_offset_4096:
+; GFX1250-SDAG:       ; %bb.0:
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX1250-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX1250-SDAG-NEXT:    v_add_nc_u64_e32 v[0:1], v[0:1], v[2:3]
+; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:4096
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-SDAG-LABEL: global_load_i8_zext_vgpr_offset_4096:
+; GFX12-GENERIC-SDAG:       ; %bb.0:
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)
+; GFX12-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:4096 scope:SCOPE_SE
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-GENERIC-ISEL-LABEL: global_load_i8_zext_vgpr_offset_4096:
+; GFX9-GENERIC-ISEL:       ; %bb.0:
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX9-GENERIC-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX9-GENERIC-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 0x1000, v0
+; GFX9-GENERIC-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-ISEL-LABEL: global_load_i8_zext_vgpr_offset_4096:
+; GFX906-ISEL:       ; %bb.0:
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX906-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX906-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 0x1000, v0
+; GFX906-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX906-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-ISEL-LABEL: global_load_i8_zext_vgpr_offset_4096:
+; GFX908-ISEL:       ; %bb.0:
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX908-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX908-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 0x1000, v0
+; GFX908-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX908-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-ISEL-LABEL: global_load_i8_zext_vgpr_offset_4096:
+; GFX90A-ISEL:       ; %bb.0:
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX90A-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX90A-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 0x1000, v0
+; GFX90A-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX90A-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-ISEL-LABEL: global_load_i8_zext_vgpr_offset_4096:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0:
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX9-4-GENERIC-ISEL-NEXT:    s_nop 1
+; GFX9-4-GENERIC-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX9-4-GENERIC-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 0x1000, v0
+; GFX9-4-GENERIC-ISEL-NEXT:    s_nop 1
+; GFX9-4-GENERIC-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-ISEL-LABEL: global_load_i8_zext_vgpr_offset_4096:
+; GFX942-ISEL:       ; %bb.0:
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX942-ISEL-NEXT:    s_nop 1
+; GFX942-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX942-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 0x1000, v0
+; GFX942-ISEL-NEXT:    s_nop 1
+; GFX942-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX942-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-ISEL-LABEL: global_load_i8_zext_vgpr_offset_4096:
+; GFX950-ISEL:       ; %bb.0:
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX950-ISEL-NEXT:    s_nop 1
+; GFX950-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX950-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 0x1000, v0
+; GFX950-ISEL-NEXT:    s_nop 1
+; GFX950-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX950-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-ISEL-LABEL: global_load_i8_zext_vgpr_offset_4096:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0:
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0x1000, v0
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: global_load_i8_zext_vgpr_offset_4096:
+; GFX1012-ISEL:       ; %bb.0:
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX1012-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX1012-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0x1000, v0
+; GFX1012-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX1012-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-ISEL-LABEL: global_load_i8_zext_vgpr_offset_4096:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0:
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0x1000, v0
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-ISEL-LABEL: global_load_i8_zext_vgpr_offset_4096:
+; GFX11-GENERIC-ISEL:       ; %bb.0:
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0x1000, v0
+; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: global_load_i8_zext_vgpr_offset_4096:
+; GFX1250-ISEL:       ; %bb.0:
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX1250-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX1250-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:4096
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-ISEL-LABEL: global_load_i8_zext_vgpr_offset_4096:
+; GFX12-GENERIC-ISEL:       ; %bb.0:
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_alu depctr_va_vcc(0)
+; GFX12-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:4096 scope:SCOPE_SE
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+  %zext.offset = zext i32 %voffset to i64
+  %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 %zext.offset
+  %gep1 = getelementptr inbounds i8, ptr addrspace(1) %gep0, i64 4096
+  %load = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %gep1, metadata !1)
+  %cast.load = bitcast <4 x i32> %load to <4 x float>
+  ret <4 x float> %cast.load
+}
+
+;; Maximum negative offset on gfx9
+define <4 x float> @global_load_i8_zext_vgpr_offset_neg4096(ptr addrspace(1) %sbase, i32 %voffset) {
+; GFX9-GENERIC-SDAG-LABEL: global_load_i8_zext_vgpr_offset_neg4096:
+; GFX9-GENERIC-SDAG:       ; %bb.0:
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX9-GENERIC-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-4096 glc
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-SDAG-LABEL: global_load_i8_zext_vgpr_offset_neg4096:
+; GFX906-SDAG:       ; %bb.0:
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX906-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX906-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-4096 glc
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-SDAG-LABEL: global_load_i8_zext_vgpr_offset_neg4096:
+; GFX908-SDAG:       ; %bb.0:
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX908-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX908-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-4096 glc
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-SDAG-LABEL: global_load_i8_zext_vgpr_offset_neg4096:
+; GFX90A-SDAG:       ; %bb.0:
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX90A-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX90A-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-4096 glc
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-SDAG-LABEL: global_load_i8_zext_vgpr_offset_neg4096:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0:
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX9-4-GENERIC-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 0, v[2:3]
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-4096 sc1
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-SDAG-LABEL: global_load_i8_zext_vgpr_offset_neg4096:
+; GFX942-SDAG:       ; %bb.0:
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX942-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 0, v[2:3]
+; GFX942-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-4096 sc1
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-SDAG-LABEL: global_load_i8_zext_vgpr_offset_neg4096:
+; GFX950-SDAG:       ; %bb.0:
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX950-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 0, v[2:3]
+; GFX950-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-4096 sc1
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-SDAG-LABEL: global_load_i8_zext_vgpr_offset_neg4096:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0:
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfffff000, v0
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, -1, v1, vcc_lo
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: global_load_i8_zext_vgpr_offset_neg4096:
+; GFX1012-SDAG:       ; %bb.0:
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX1012-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX1012-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfffff000, v0
+; GFX1012-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, -1, v1, vcc_lo
+; GFX1012-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-SDAG-LABEL: global_load_i8_zext_vgpr_offset_neg4096:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0:
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfffff000, v0
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-SDAG-LABEL: global_load_i8_zext_vgpr_offset_neg4096:
+; GFX11-GENERIC-SDAG:       ; %bb.0:
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-4096 glc
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: global_load_i8_zext_vgpr_offset_neg4096:
+; GFX1250-SDAG:       ; %bb.0:
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX1250-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX1250-SDAG-NEXT:    v_add_nc_u64_e32 v[0:1], v[0:1], v[2:3]
+; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-4096 scope:SCOPE_DEV
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-SDAG-LABEL: global_load_i8_zext_vgpr_offset_neg4096:
+; GFX12-GENERIC-SDAG:       ; %bb.0:
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)
+; GFX12-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-4096 scope:SCOPE_DEV
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-GENERIC-ISEL-LABEL: global_load_i8_zext_vgpr_offset_neg4096:
+; GFX9-GENERIC-ISEL:       ; %bb.0:
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX9-GENERIC-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-4096 glc
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-ISEL-LABEL: global_load_i8_zext_vgpr_offset_neg4096:
+; GFX906-ISEL:       ; %bb.0:
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX906-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX906-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-4096 glc
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-ISEL-LABEL: global_load_i8_zext_vgpr_offset_neg4096:
+; GFX908-ISEL:       ; %bb.0:
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX908-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX908-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-4096 glc
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-ISEL-LABEL: global_load_i8_zext_vgpr_offset_neg4096:
+; GFX90A-ISEL:       ; %bb.0:
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX90A-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX90A-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-4096 glc
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-ISEL-LABEL: global_load_i8_zext_vgpr_offset_neg4096:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0:
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX9-4-GENERIC-ISEL-NEXT:    s_nop 1
+; GFX9-4-GENERIC-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-4096 sc1
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-ISEL-LABEL: global_load_i8_zext_vgpr_offset_neg4096:
+; GFX942-ISEL:       ; %bb.0:
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX942-ISEL-NEXT:    s_nop 1
+; GFX942-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX942-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-4096 sc1
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-ISEL-LABEL: global_load_i8_zext_vgpr_offset_neg4096:
+; GFX950-ISEL:       ; %bb.0:
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX950-ISEL-NEXT:    s_nop 1
+; GFX950-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX950-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-4096 sc1
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-ISEL-LABEL: global_load_i8_zext_vgpr_offset_neg4096:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0:
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfffff000, v0
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, -1, v1, vcc_lo
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: global_load_i8_zext_vgpr_offset_neg4096:
+; GFX1012-ISEL:       ; %bb.0:
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX1012-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX1012-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfffff000, v0
+; GFX1012-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, -1, v1, vcc_lo
+; GFX1012-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-ISEL-LABEL: global_load_i8_zext_vgpr_offset_neg4096:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0:
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfffff000, v0
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-ISEL-LABEL: global_load_i8_zext_vgpr_offset_neg4096:
+; GFX11-GENERIC-ISEL:       ; %bb.0:
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-4096 glc
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: global_load_i8_zext_vgpr_offset_neg4096:
+; GFX1250-ISEL:       ; %bb.0:
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX1250-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX1250-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-4096 scope:SCOPE_DEV
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-ISEL-LABEL: global_load_i8_zext_vgpr_offset_neg4096:
+; GFX12-GENERIC-ISEL:       ; %bb.0:
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_alu depctr_va_vcc(0)
+; GFX12-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-4096 scope:SCOPE_DEV
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+  %zext.offset = zext i32 %voffset to i64
+  %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 %zext.offset
+  %gep1 = getelementptr inbounds i8, ptr addrspace(1) %gep0, i64 -4096
+  %load = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %gep1, metadata !2)
+  %cast.load = bitcast <4 x i32> %load to <4 x float>
+  ret <4 x float> %cast.load
+}
+
+;; Maximum negative offset on gfx9 - 1
+define <4 x float> @global_load_i8_zext_vgpr_offset_neg4097(ptr addrspace(1) %sbase, i32 %voffset) {
+; GFX9-GENERIC-SDAG-LABEL: global_load_i8_zext_vgpr_offset_neg4097:
+; GFX9-GENERIC-SDAG:       ; %bb.0:
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX9-GENERIC-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX9-GENERIC-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0xfffff000, v0
+; GFX9-GENERIC-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-1 glc
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-SDAG-LABEL: global_load_i8_zext_vgpr_offset_neg4097:
+; GFX906-SDAG:       ; %bb.0:
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX906-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX906-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0xfffff000, v0
+; GFX906-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX906-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-1 glc
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-SDAG-LABEL: global_load_i8_zext_vgpr_offset_neg4097:
+; GFX908-SDAG:       ; %bb.0:
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX908-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX908-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0xfffff000, v0
+; GFX908-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX908-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-1 glc
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-SDAG-LABEL: global_load_i8_zext_vgpr_offset_neg4097:
+; GFX90A-SDAG:       ; %bb.0:
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX90A-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX90A-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0xfffff000, v0
+; GFX90A-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX90A-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-1 glc
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-SDAG-LABEL: global_load_i8_zext_vgpr_offset_neg4097:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0:
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX9-4-GENERIC-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 0, v[2:3]
+; GFX9-4-GENERIC-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0xfffff000, v0
+; GFX9-4-GENERIC-SDAG-NEXT:    s_nop 1
+; GFX9-4-GENERIC-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-1 sc0 sc1
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-SDAG-LABEL: global_load_i8_zext_vgpr_offset_neg4097:
+; GFX942-SDAG:       ; %bb.0:
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX942-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 0, v[2:3]
+; GFX942-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0xfffff000, v0
+; GFX942-SDAG-NEXT:    s_nop 1
+; GFX942-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX942-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-1 sc0 sc1
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-SDAG-LABEL: global_load_i8_zext_vgpr_offset_neg4097:
+; GFX950-SDAG:       ; %bb.0:
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX950-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 0, v[2:3]
+; GFX950-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0xfffff000, v0
+; GFX950-SDAG-NEXT:    s_nop 1
+; GFX950-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX950-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-1 sc0 sc1
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-SDAG-LABEL: global_load_i8_zext_vgpr_offset_neg4097:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0:
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfffff000, v0
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, -1, v1, vcc_lo
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-1 glc dlc
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: global_load_i8_zext_vgpr_offset_neg4097:
+; GFX1012-SDAG:       ; %bb.0:
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX1012-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX1012-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfffff000, v0
+; GFX1012-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, -1, v1, vcc_lo
+; GFX1012-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-1 glc dlc
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-SDAG-LABEL: global_load_i8_zext_vgpr_offset_neg4097:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0:
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfffff000, v0
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-1 glc dlc
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-SDAG-LABEL: global_load_i8_zext_vgpr_offset_neg4097:
+; GFX11-GENERIC-SDAG:       ; %bb.0:
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfffff000, v0
+; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo
+; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-1 glc
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: global_load_i8_zext_vgpr_offset_neg4097:
+; GFX1250-SDAG:       ; %bb.0:
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX1250-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX1250-SDAG-NEXT:    v_add_nc_u64_e32 v[0:1], v[0:1], v[2:3]
+; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-4097 scope:SCOPE_SYS
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-SDAG-LABEL: global_load_i8_zext_vgpr_offset_neg4097:
+; GFX12-GENERIC-SDAG:       ; %bb.0:
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)
+; GFX12-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-4097 scope:SCOPE_SYS
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-GENERIC-ISEL-LABEL: global_load_i8_zext_vgpr_offset_neg4097:
+; GFX9-GENERIC-ISEL:       ; %bb.0:
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX9-GENERIC-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX9-GENERIC-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 0xffffefff, v0
+; GFX9-GENERIC-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-ISEL-LABEL: global_load_i8_zext_vgpr_offset_neg4097:
+; GFX906-ISEL:       ; %bb.0:
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX906-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX906-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 0xffffefff, v0
+; GFX906-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX906-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-ISEL-LABEL: global_load_i8_zext_vgpr_offset_neg4097:
+; GFX908-ISEL:       ; %bb.0:
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX908-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX908-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 0xffffefff, v0
+; GFX908-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX908-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-ISEL-LABEL: global_load_i8_zext_vgpr_offset_neg4097:
+; GFX90A-ISEL:       ; %bb.0:
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX90A-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX90A-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 0xffffefff, v0
+; GFX90A-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX90A-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-ISEL-LABEL: global_load_i8_zext_vgpr_offset_neg4097:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0:
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX9-4-GENERIC-ISEL-NEXT:    s_nop 1
+; GFX9-4-GENERIC-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX9-4-GENERIC-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 0xffffefff, v0
+; GFX9-4-GENERIC-ISEL-NEXT:    s_nop 1
+; GFX9-4-GENERIC-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0 sc1
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-ISEL-LABEL: global_load_i8_zext_vgpr_offset_neg4097:
+; GFX942-ISEL:       ; %bb.0:
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX942-ISEL-NEXT:    s_nop 1
+; GFX942-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX942-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 0xffffefff, v0
+; GFX942-ISEL-NEXT:    s_nop 1
+; GFX942-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX942-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0 sc1
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-ISEL-LABEL: global_load_i8_zext_vgpr_offset_neg4097:
+; GFX950-ISEL:       ; %bb.0:
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX950-ISEL-NEXT:    s_nop 1
+; GFX950-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX950-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 0xffffefff, v0
+; GFX950-ISEL-NEXT:    s_nop 1
+; GFX950-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX950-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0 sc1
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-ISEL-LABEL: global_load_i8_zext_vgpr_offset_neg4097:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0:
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0xffffefff, v0
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, -1, v1, vcc_lo
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: global_load_i8_zext_vgpr_offset_neg4097:
+; GFX1012-ISEL:       ; %bb.0:
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX1012-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX1012-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0xffffefff, v0
+; GFX1012-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, -1, v1, vcc_lo
+; GFX1012-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-ISEL-LABEL: global_load_i8_zext_vgpr_offset_neg4097:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0:
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0xffffefff, v0
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-ISEL-LABEL: global_load_i8_zext_vgpr_offset_neg4097:
+; GFX11-GENERIC-ISEL:       ; %bb.0:
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0xffffefff, v0
+; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo
+; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: global_load_i8_zext_vgpr_offset_neg4097:
+; GFX1250-ISEL:       ; %bb.0:
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX1250-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX1250-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-4097 scope:SCOPE_SYS
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-ISEL-LABEL: global_load_i8_zext_vgpr_offset_neg4097:
+; GFX12-GENERIC-ISEL:       ; %bb.0:
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_alu depctr_va_vcc(0)
+; GFX12-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-4097 scope:SCOPE_SYS
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+  %zext.offset = zext i32 %voffset to i64
+  %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 %zext.offset
+  %gep1 = getelementptr inbounds i8, ptr addrspace(1) %gep0, i64 -4097
+  %load = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %gep1, metadata !3)
+  %cast.load = bitcast <4 x i32> %load to <4 x float>
+  ret <4 x float> %cast.load
+}
+
+;; Maximum positive offset on gfx10
+define <4 x float> @global_load_i8_zext_vgpr_offset_2047(ptr addrspace(1) %sbase, i32 %voffset) {
+; GFX9-GENERIC-SDAG-LABEL: global_load_i8_zext_vgpr_offset_2047:
+; GFX9-GENERIC-SDAG:       ; %bb.0:
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX9-GENERIC-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:2047
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-SDAG-LABEL: global_load_i8_zext_vgpr_offset_2047:
+; GFX906-SDAG:       ; %bb.0:
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX906-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX906-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:2047
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-SDAG-LABEL: global_load_i8_zext_vgpr_offset_2047:
+; GFX908-SDAG:       ; %bb.0:
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX908-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX908-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:2047
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-SDAG-LABEL: global_load_i8_zext_vgpr_offset_2047:
+; GFX90A-SDAG:       ; %bb.0:
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX90A-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX90A-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:2047
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-SDAG-LABEL: global_load_i8_zext_vgpr_offset_2047:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0:
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX9-4-GENERIC-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 0, v[2:3]
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:2047
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-SDAG-LABEL: global_load_i8_zext_vgpr_offset_2047:
+; GFX942-SDAG:       ; %bb.0:
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX942-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 0, v[2:3]
+; GFX942-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:2047
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-SDAG-LABEL: global_load_i8_zext_vgpr_offset_2047:
+; GFX950-SDAG:       ; %bb.0:
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX950-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 0, v[2:3]
+; GFX950-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:2047
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-SDAG-LABEL: global_load_i8_zext_vgpr_offset_2047:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0:
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:2047
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: global_load_i8_zext_vgpr_offset_2047:
+; GFX1012-SDAG:       ; %bb.0:
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX1012-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX1012-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:2047
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-SDAG-LABEL: global_load_i8_zext_vgpr_offset_2047:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0:
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:2047
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-SDAG-LABEL: global_load_i8_zext_vgpr_offset_2047:
+; GFX11-GENERIC-SDAG:       ; %bb.0:
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:2047
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: global_load_i8_zext_vgpr_offset_2047:
+; GFX1250-SDAG:       ; %bb.0:
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX1250-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX1250-SDAG-NEXT:    v_add_nc_u64_e32 v[0:1], v[0:1], v[2:3]
+; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:2047
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-SDAG-LABEL: global_load_i8_zext_vgpr_offset_2047:
+; GFX12-GENERIC-SDAG:       ; %bb.0:
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)
+; GFX12-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:2047
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-GENERIC-ISEL-LABEL: global_load_i8_zext_vgpr_offset_2047:
+; GFX9-GENERIC-ISEL:       ; %bb.0:
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX9-GENERIC-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:2047
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-ISEL-LABEL: global_load_i8_zext_vgpr_offset_2047:
+; GFX906-ISEL:       ; %bb.0:
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX906-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX906-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:2047
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-ISEL-LABEL: global_load_i8_zext_vgpr_offset_2047:
+; GFX908-ISEL:       ; %bb.0:
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX908-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX908-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:2047
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-ISEL-LABEL: global_load_i8_zext_vgpr_offset_2047:
+; GFX90A-ISEL:       ; %bb.0:
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX90A-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX90A-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:2047
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-ISEL-LABEL: global_load_i8_zext_vgpr_offset_2047:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0:
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX9-4-GENERIC-ISEL-NEXT:    s_nop 1
+; GFX9-4-GENERIC-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:2047
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-ISEL-LABEL: global_load_i8_zext_vgpr_offset_2047:
+; GFX942-ISEL:       ; %bb.0:
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX942-ISEL-NEXT:    s_nop 1
+; GFX942-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX942-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:2047
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-ISEL-LABEL: global_load_i8_zext_vgpr_offset_2047:
+; GFX950-ISEL:       ; %bb.0:
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX950-ISEL-NEXT:    s_nop 1
+; GFX950-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX950-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:2047
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-ISEL-LABEL: global_load_i8_zext_vgpr_offset_2047:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0:
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:2047
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: global_load_i8_zext_vgpr_offset_2047:
+; GFX1012-ISEL:       ; %bb.0:
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX1012-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX1012-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:2047
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-ISEL-LABEL: global_load_i8_zext_vgpr_offset_2047:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0:
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:2047
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-ISEL-LABEL: global_load_i8_zext_vgpr_offset_2047:
+; GFX11-GENERIC-ISEL:       ; %bb.0:
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:2047
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: global_load_i8_zext_vgpr_offset_2047:
+; GFX1250-ISEL:       ; %bb.0:
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX1250-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX1250-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:2047
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-ISEL-LABEL: global_load_i8_zext_vgpr_offset_2047:
+; GFX12-GENERIC-ISEL:       ; %bb.0:
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_alu depctr_va_vcc(0)
+; GFX12-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:2047
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+  %zext.offset = zext i32 %voffset to i64
+  %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 %zext.offset
+  %gep1 = getelementptr inbounds i8, ptr addrspace(1) %gep0, i64 2047
+  %load = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %gep1, metadata !0)
+  %cast.load = bitcast <4 x i32> %load to <4 x float>
+  ret <4 x float> %cast.load
+}
+
+;; Maximum positive offset on gfx10 + 1
+define <4 x float> @global_load_i8_zext_vgpr_offset_2048(ptr addrspace(1) %sbase, i32 %voffset) {
+; GFX9-GENERIC-SDAG-LABEL: global_load_i8_zext_vgpr_offset_2048:
+; GFX9-GENERIC-SDAG:       ; %bb.0:
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX9-GENERIC-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:2048
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-SDAG-LABEL: global_load_i8_zext_vgpr_offset_2048:
+; GFX906-SDAG:       ; %bb.0:
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX906-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX906-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:2048
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-SDAG-LABEL: global_load_i8_zext_vgpr_offset_2048:
+; GFX908-SDAG:       ; %bb.0:
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX908-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX908-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:2048
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-SDAG-LABEL: global_load_i8_zext_vgpr_offset_2048:
+; GFX90A-SDAG:       ; %bb.0:
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX90A-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX90A-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:2048
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-SDAG-LABEL: global_load_i8_zext_vgpr_offset_2048:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0:
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX9-4-GENERIC-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 0, v[2:3]
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:2048 sc0
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-SDAG-LABEL: global_load_i8_zext_vgpr_offset_2048:
+; GFX942-SDAG:       ; %bb.0:
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX942-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 0, v[2:3]
+; GFX942-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:2048 sc0
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-SDAG-LABEL: global_load_i8_zext_vgpr_offset_2048:
+; GFX950-SDAG:       ; %bb.0:
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX950-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 0, v[2:3]
+; GFX950-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:2048 sc0
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-SDAG-LABEL: global_load_i8_zext_vgpr_offset_2048:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0:
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0x800, v0
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: global_load_i8_zext_vgpr_offset_2048:
+; GFX1012-SDAG:       ; %bb.0:
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX1012-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX1012-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0x800, v0
+; GFX1012-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX1012-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-SDAG-LABEL: global_load_i8_zext_vgpr_offset_2048:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0:
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0x800, v0
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-SDAG-LABEL: global_load_i8_zext_vgpr_offset_2048:
+; GFX11-GENERIC-SDAG:       ; %bb.0:
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:2048 glc
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: global_load_i8_zext_vgpr_offset_2048:
+; GFX1250-SDAG:       ; %bb.0:
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX1250-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX1250-SDAG-NEXT:    v_add_nc_u64_e32 v[0:1], v[0:1], v[2:3]
+; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:2048
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-SDAG-LABEL: global_load_i8_zext_vgpr_offset_2048:
+; GFX12-GENERIC-SDAG:       ; %bb.0:
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)
+; GFX12-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:2048 scope:SCOPE_SE
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-GENERIC-ISEL-LABEL: global_load_i8_zext_vgpr_offset_2048:
+; GFX9-GENERIC-ISEL:       ; %bb.0:
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX9-GENERIC-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:2048
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-ISEL-LABEL: global_load_i8_zext_vgpr_offset_2048:
+; GFX906-ISEL:       ; %bb.0:
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX906-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX906-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:2048
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-ISEL-LABEL: global_load_i8_zext_vgpr_offset_2048:
+; GFX908-ISEL:       ; %bb.0:
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX908-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX908-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:2048
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-ISEL-LABEL: global_load_i8_zext_vgpr_offset_2048:
+; GFX90A-ISEL:       ; %bb.0:
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX90A-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX90A-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:2048
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-ISEL-LABEL: global_load_i8_zext_vgpr_offset_2048:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0:
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX9-4-GENERIC-ISEL-NEXT:    s_nop 1
+; GFX9-4-GENERIC-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:2048 sc0
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-ISEL-LABEL: global_load_i8_zext_vgpr_offset_2048:
+; GFX942-ISEL:       ; %bb.0:
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX942-ISEL-NEXT:    s_nop 1
+; GFX942-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX942-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:2048 sc0
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-ISEL-LABEL: global_load_i8_zext_vgpr_offset_2048:
+; GFX950-ISEL:       ; %bb.0:
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX950-ISEL-NEXT:    s_nop 1
+; GFX950-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX950-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:2048 sc0
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-ISEL-LABEL: global_load_i8_zext_vgpr_offset_2048:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0:
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0x800, v0
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: global_load_i8_zext_vgpr_offset_2048:
+; GFX1012-ISEL:       ; %bb.0:
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX1012-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX1012-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0x800, v0
+; GFX1012-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX1012-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-ISEL-LABEL: global_load_i8_zext_vgpr_offset_2048:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0:
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0x800, v0
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-ISEL-LABEL: global_load_i8_zext_vgpr_offset_2048:
+; GFX11-GENERIC-ISEL:       ; %bb.0:
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:2048 glc
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: global_load_i8_zext_vgpr_offset_2048:
+; GFX1250-ISEL:       ; %bb.0:
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX1250-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX1250-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:2048
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-ISEL-LABEL: global_load_i8_zext_vgpr_offset_2048:
+; GFX12-GENERIC-ISEL:       ; %bb.0:
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_alu depctr_va_vcc(0)
+; GFX12-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:2048 scope:SCOPE_SE
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+  %zext.offset = zext i32 %voffset to i64
+  %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 %zext.offset
+  %gep1 = getelementptr inbounds i8, ptr addrspace(1) %gep0, i64 2048
+  %load = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %gep1, metadata !1)
+  %cast.load = bitcast <4 x i32> %load to <4 x float>
+  ret <4 x float> %cast.load
+}
+
+;; Maximum negative offset on gfx10
+define <4 x float> @global_load_i8_zext_vgpr_offset_neg2048(ptr addrspace(1) %sbase, i32 %voffset) {
+; GFX9-GENERIC-SDAG-LABEL: global_load_i8_zext_vgpr_offset_neg2048:
+; GFX9-GENERIC-SDAG:       ; %bb.0:
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX9-GENERIC-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-2048 glc
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-SDAG-LABEL: global_load_i8_zext_vgpr_offset_neg2048:
+; GFX906-SDAG:       ; %bb.0:
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX906-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX906-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-2048 glc
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-SDAG-LABEL: global_load_i8_zext_vgpr_offset_neg2048:
+; GFX908-SDAG:       ; %bb.0:
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX908-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX908-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-2048 glc
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-SDAG-LABEL: global_load_i8_zext_vgpr_offset_neg2048:
+; GFX90A-SDAG:       ; %bb.0:
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX90A-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX90A-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-2048 glc
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-SDAG-LABEL: global_load_i8_zext_vgpr_offset_neg2048:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0:
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX9-4-GENERIC-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 0, v[2:3]
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-2048 sc1
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-SDAG-LABEL: global_load_i8_zext_vgpr_offset_neg2048:
+; GFX942-SDAG:       ; %bb.0:
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX942-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 0, v[2:3]
+; GFX942-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-2048 sc1
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-SDAG-LABEL: global_load_i8_zext_vgpr_offset_neg2048:
+; GFX950-SDAG:       ; %bb.0:
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX950-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 0, v[2:3]
+; GFX950-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-2048 sc1
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-SDAG-LABEL: global_load_i8_zext_vgpr_offset_neg2048:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0:
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-2048 glc dlc
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: global_load_i8_zext_vgpr_offset_neg2048:
+; GFX1012-SDAG:       ; %bb.0:
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX1012-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX1012-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-2048 glc dlc
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-SDAG-LABEL: global_load_i8_zext_vgpr_offset_neg2048:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0:
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-2048 glc dlc
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-SDAG-LABEL: global_load_i8_zext_vgpr_offset_neg2048:
+; GFX11-GENERIC-SDAG:       ; %bb.0:
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-2048 glc
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: global_load_i8_zext_vgpr_offset_neg2048:
+; GFX1250-SDAG:       ; %bb.0:
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX1250-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX1250-SDAG-NEXT:    v_add_nc_u64_e32 v[0:1], v[0:1], v[2:3]
+; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-2048 scope:SCOPE_DEV
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-SDAG-LABEL: global_load_i8_zext_vgpr_offset_neg2048:
+; GFX12-GENERIC-SDAG:       ; %bb.0:
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)
+; GFX12-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-2048 scope:SCOPE_DEV
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-GENERIC-ISEL-LABEL: global_load_i8_zext_vgpr_offset_neg2048:
+; GFX9-GENERIC-ISEL:       ; %bb.0:
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX9-GENERIC-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-2048 glc
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-ISEL-LABEL: global_load_i8_zext_vgpr_offset_neg2048:
+; GFX906-ISEL:       ; %bb.0:
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX906-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX906-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-2048 glc
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-ISEL-LABEL: global_load_i8_zext_vgpr_offset_neg2048:
+; GFX908-ISEL:       ; %bb.0:
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX908-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX908-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-2048 glc
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-ISEL-LABEL: global_load_i8_zext_vgpr_offset_neg2048:
+; GFX90A-ISEL:       ; %bb.0:
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX90A-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX90A-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-2048 glc
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-ISEL-LABEL: global_load_i8_zext_vgpr_offset_neg2048:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0:
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX9-4-GENERIC-ISEL-NEXT:    s_nop 1
+; GFX9-4-GENERIC-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-2048 sc1
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-ISEL-LABEL: global_load_i8_zext_vgpr_offset_neg2048:
+; GFX942-ISEL:       ; %bb.0:
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX942-ISEL-NEXT:    s_nop 1
+; GFX942-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX942-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-2048 sc1
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-ISEL-LABEL: global_load_i8_zext_vgpr_offset_neg2048:
+; GFX950-ISEL:       ; %bb.0:
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX950-ISEL-NEXT:    s_nop 1
+; GFX950-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX950-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-2048 sc1
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-ISEL-LABEL: global_load_i8_zext_vgpr_offset_neg2048:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0:
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-2048 glc dlc
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: global_load_i8_zext_vgpr_offset_neg2048:
+; GFX1012-ISEL:       ; %bb.0:
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX1012-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX1012-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-2048 glc dlc
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-ISEL-LABEL: global_load_i8_zext_vgpr_offset_neg2048:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0:
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-2048 glc dlc
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-ISEL-LABEL: global_load_i8_zext_vgpr_offset_neg2048:
+; GFX11-GENERIC-ISEL:       ; %bb.0:
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-2048 glc
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: global_load_i8_zext_vgpr_offset_neg2048:
+; GFX1250-ISEL:       ; %bb.0:
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX1250-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX1250-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-2048 scope:SCOPE_DEV
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-ISEL-LABEL: global_load_i8_zext_vgpr_offset_neg2048:
+; GFX12-GENERIC-ISEL:       ; %bb.0:
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_alu depctr_va_vcc(0)
+; GFX12-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-2048 scope:SCOPE_DEV
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+  %zext.offset = zext i32 %voffset to i64
+  %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 %zext.offset
+  %gep1 = getelementptr inbounds i8, ptr addrspace(1) %gep0, i64 -2048
+  %load = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %gep1, metadata !2)
+  %cast.load = bitcast <4 x i32> %load to <4 x float>
+  ret <4 x float> %cast.load
+}
+
+;; Maximum negative offset on gfx10 - 1
+define <4 x float> @global_load_i8_zext_vgpr_offset_neg2049(ptr addrspace(1) %sbase, i32 %voffset) {
+; GFX9-GENERIC-SDAG-LABEL: global_load_i8_zext_vgpr_offset_neg2049:
+; GFX9-GENERIC-SDAG:       ; %bb.0:
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX9-GENERIC-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-2049 glc
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-SDAG-LABEL: global_load_i8_zext_vgpr_offset_neg2049:
+; GFX906-SDAG:       ; %bb.0:
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX906-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX906-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-2049 glc
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-SDAG-LABEL: global_load_i8_zext_vgpr_offset_neg2049:
+; GFX908-SDAG:       ; %bb.0:
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX908-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX908-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-2049 glc
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-SDAG-LABEL: global_load_i8_zext_vgpr_offset_neg2049:
+; GFX90A-SDAG:       ; %bb.0:
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX90A-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX90A-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-2049 glc
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-SDAG-LABEL: global_load_i8_zext_vgpr_offset_neg2049:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0:
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX9-4-GENERIC-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 0, v[2:3]
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-2049 sc0 sc1
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-SDAG-LABEL: global_load_i8_zext_vgpr_offset_neg2049:
+; GFX942-SDAG:       ; %bb.0:
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX942-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 0, v[2:3]
+; GFX942-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-2049 sc0 sc1
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-SDAG-LABEL: global_load_i8_zext_vgpr_offset_neg2049:
+; GFX950-SDAG:       ; %bb.0:
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX950-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 0, v[2:3]
+; GFX950-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-2049 sc0 sc1
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-SDAG-LABEL: global_load_i8_zext_vgpr_offset_neg2049:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0:
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfffff800, v0
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, -1, v1, vcc_lo
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-1 glc dlc
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: global_load_i8_zext_vgpr_offset_neg2049:
+; GFX1012-SDAG:       ; %bb.0:
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX1012-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX1012-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfffff800, v0
+; GFX1012-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, -1, v1, vcc_lo
+; GFX1012-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-1 glc dlc
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-SDAG-LABEL: global_load_i8_zext_vgpr_offset_neg2049:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0:
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfffff800, v0
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-1 glc dlc
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-SDAG-LABEL: global_load_i8_zext_vgpr_offset_neg2049:
+; GFX11-GENERIC-SDAG:       ; %bb.0:
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-2049 glc
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: global_load_i8_zext_vgpr_offset_neg2049:
+; GFX1250-SDAG:       ; %bb.0:
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX1250-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX1250-SDAG-NEXT:    v_add_nc_u64_e32 v[0:1], v[0:1], v[2:3]
+; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-2049 scope:SCOPE_SYS
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-SDAG-LABEL: global_load_i8_zext_vgpr_offset_neg2049:
+; GFX12-GENERIC-SDAG:       ; %bb.0:
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)
+; GFX12-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-2049 scope:SCOPE_SYS
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-GENERIC-ISEL-LABEL: global_load_i8_zext_vgpr_offset_neg2049:
+; GFX9-GENERIC-ISEL:       ; %bb.0:
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX9-GENERIC-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-2049 glc
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-ISEL-LABEL: global_load_i8_zext_vgpr_offset_neg2049:
+; GFX906-ISEL:       ; %bb.0:
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX906-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX906-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-2049 glc
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-ISEL-LABEL: global_load_i8_zext_vgpr_offset_neg2049:
+; GFX908-ISEL:       ; %bb.0:
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX908-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX908-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-2049 glc
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-ISEL-LABEL: global_load_i8_zext_vgpr_offset_neg2049:
+; GFX90A-ISEL:       ; %bb.0:
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX90A-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX90A-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-2049 glc
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-ISEL-LABEL: global_load_i8_zext_vgpr_offset_neg2049:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0:
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX9-4-GENERIC-ISEL-NEXT:    s_nop 1
+; GFX9-4-GENERIC-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-2049 sc0 sc1
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-ISEL-LABEL: global_load_i8_zext_vgpr_offset_neg2049:
+; GFX942-ISEL:       ; %bb.0:
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX942-ISEL-NEXT:    s_nop 1
+; GFX942-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX942-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-2049 sc0 sc1
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-ISEL-LABEL: global_load_i8_zext_vgpr_offset_neg2049:
+; GFX950-ISEL:       ; %bb.0:
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX950-ISEL-NEXT:    s_nop 1
+; GFX950-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX950-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-2049 sc0 sc1
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-ISEL-LABEL: global_load_i8_zext_vgpr_offset_neg2049:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0:
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfffff7ff, v0
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, -1, v1, vcc_lo
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: global_load_i8_zext_vgpr_offset_neg2049:
+; GFX1012-ISEL:       ; %bb.0:
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX1012-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX1012-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfffff7ff, v0
+; GFX1012-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, -1, v1, vcc_lo
+; GFX1012-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-ISEL-LABEL: global_load_i8_zext_vgpr_offset_neg2049:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0:
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfffff7ff, v0
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-ISEL-LABEL: global_load_i8_zext_vgpr_offset_neg2049:
+; GFX11-GENERIC-ISEL:       ; %bb.0:
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-2049 glc
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: global_load_i8_zext_vgpr_offset_neg2049:
+; GFX1250-ISEL:       ; %bb.0:
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX1250-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX1250-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-2049 scope:SCOPE_SYS
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-ISEL-LABEL: global_load_i8_zext_vgpr_offset_neg2049:
+; GFX12-GENERIC-ISEL:       ; %bb.0:
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_alu depctr_va_vcc(0)
+; GFX12-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-2049 scope:SCOPE_SYS
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+  %zext.offset = zext i32 %voffset to i64
+  %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 %zext.offset
+  %gep1 = getelementptr inbounds i8, ptr addrspace(1) %gep0, i64 -2049
+  %load = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %gep1, metadata !3)
+  %cast.load = bitcast <4 x i32> %load to <4 x float>
+  ret <4 x float> %cast.load
+}
+
+;; Maximum positive offset on gfx12.
+define <4 x float> @global_load_i8_zext_vgpr_offset_0x7FFFFF(ptr addrspace(1) %sbase, i32 %voffset) { %zext.offset = zext i32 %voffset to i64
+; GFX9-GENERIC-SDAG-LABEL: global_load_i8_zext_vgpr_offset_0x7FFFFF:
+; GFX9-GENERIC-SDAG:       ; %bb.0:
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX9-GENERIC-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX9-GENERIC-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0x7ff000, v0
+; GFX9-GENERIC-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:4095
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-SDAG-LABEL: global_load_i8_zext_vgpr_offset_0x7FFFFF:
+; GFX906-SDAG:       ; %bb.0:
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX906-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX906-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0x7ff000, v0
+; GFX906-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX906-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:4095
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-SDAG-LABEL: global_load_i8_zext_vgpr_offset_0x7FFFFF:
+; GFX908-SDAG:       ; %bb.0:
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX908-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX908-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0x7ff000, v0
+; GFX908-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX908-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:4095
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-SDAG-LABEL: global_load_i8_zext_vgpr_offset_0x7FFFFF:
+; GFX90A-SDAG:       ; %bb.0:
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX90A-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX90A-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0x7ff000, v0
+; GFX90A-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX90A-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:4095
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-SDAG-LABEL: global_load_i8_zext_vgpr_offset_0x7FFFFF:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0:
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX9-4-GENERIC-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 0, v[2:3]
+; GFX9-4-GENERIC-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0x7ff000, v0
+; GFX9-4-GENERIC-SDAG-NEXT:    s_nop 1
+; GFX9-4-GENERIC-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:4095
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-SDAG-LABEL: global_load_i8_zext_vgpr_offset_0x7FFFFF:
+; GFX942-SDAG:       ; %bb.0:
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX942-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 0, v[2:3]
+; GFX942-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0x7ff000, v0
+; GFX942-SDAG-NEXT:    s_nop 1
+; GFX942-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX942-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:4095
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-SDAG-LABEL: global_load_i8_zext_vgpr_offset_0x7FFFFF:
+; GFX950-SDAG:       ; %bb.0:
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX950-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 0, v[2:3]
+; GFX950-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0x7ff000, v0
+; GFX950-SDAG-NEXT:    s_nop 1
+; GFX950-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX950-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:4095
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-SDAG-LABEL: global_load_i8_zext_vgpr_offset_0x7FFFFF:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0:
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0x7ff800, v0
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:2047
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: global_load_i8_zext_vgpr_offset_0x7FFFFF:
+; GFX1012-SDAG:       ; %bb.0:
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX1012-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX1012-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0x7ff800, v0
+; GFX1012-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX1012-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:2047
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-SDAG-LABEL: global_load_i8_zext_vgpr_offset_0x7FFFFF:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0:
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0x7ff800, v0
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:2047
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-SDAG-LABEL: global_load_i8_zext_vgpr_offset_0x7FFFFF:
+; GFX11-GENERIC-SDAG:       ; %bb.0:
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0x7ff000, v0
+; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:4095
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: global_load_i8_zext_vgpr_offset_0x7FFFFF:
+; GFX1250-SDAG:       ; %bb.0:
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX1250-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX1250-SDAG-NEXT:    v_add_nc_u64_e32 v[0:1], v[0:1], v[2:3]
+; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:8388607
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-SDAG-LABEL: global_load_i8_zext_vgpr_offset_0x7FFFFF:
+; GFX12-GENERIC-SDAG:       ; %bb.0:
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)
+; GFX12-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:8388607
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-GENERIC-ISEL-LABEL: global_load_i8_zext_vgpr_offset_0x7FFFFF:
+; GFX9-GENERIC-ISEL:       ; %bb.0:
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX9-GENERIC-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX9-GENERIC-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 0x7fffff, v0
+; GFX9-GENERIC-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-ISEL-LABEL: global_load_i8_zext_vgpr_offset_0x7FFFFF:
+; GFX906-ISEL:       ; %bb.0:
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX906-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX906-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 0x7fffff, v0
+; GFX906-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX906-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-ISEL-LABEL: global_load_i8_zext_vgpr_offset_0x7FFFFF:
+; GFX908-ISEL:       ; %bb.0:
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX908-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX908-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 0x7fffff, v0
+; GFX908-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX908-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-ISEL-LABEL: global_load_i8_zext_vgpr_offset_0x7FFFFF:
+; GFX90A-ISEL:       ; %bb.0:
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX90A-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX90A-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 0x7fffff, v0
+; GFX90A-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX90A-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-ISEL-LABEL: global_load_i8_zext_vgpr_offset_0x7FFFFF:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0:
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX9-4-GENERIC-ISEL-NEXT:    s_nop 1
+; GFX9-4-GENERIC-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX9-4-GENERIC-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 0x7fffff, v0
+; GFX9-4-GENERIC-ISEL-NEXT:    s_nop 1
+; GFX9-4-GENERIC-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-ISEL-LABEL: global_load_i8_zext_vgpr_offset_0x7FFFFF:
+; GFX942-ISEL:       ; %bb.0:
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX942-ISEL-NEXT:    s_nop 1
+; GFX942-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX942-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 0x7fffff, v0
+; GFX942-ISEL-NEXT:    s_nop 1
+; GFX942-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX942-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-ISEL-LABEL: global_load_i8_zext_vgpr_offset_0x7FFFFF:
+; GFX950-ISEL:       ; %bb.0:
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX950-ISEL-NEXT:    s_nop 1
+; GFX950-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX950-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 0x7fffff, v0
+; GFX950-ISEL-NEXT:    s_nop 1
+; GFX950-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX950-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-ISEL-LABEL: global_load_i8_zext_vgpr_offset_0x7FFFFF:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0:
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0x7fffff, v0
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: global_load_i8_zext_vgpr_offset_0x7FFFFF:
+; GFX1012-ISEL:       ; %bb.0:
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX1012-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX1012-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0x7fffff, v0
+; GFX1012-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX1012-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-ISEL-LABEL: global_load_i8_zext_vgpr_offset_0x7FFFFF:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0:
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0x7fffff, v0
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-ISEL-LABEL: global_load_i8_zext_vgpr_offset_0x7FFFFF:
+; GFX11-GENERIC-ISEL:       ; %bb.0:
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0x7fffff, v0
+; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: global_load_i8_zext_vgpr_offset_0x7FFFFF:
+; GFX1250-ISEL:       ; %bb.0:
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX1250-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX1250-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:8388607
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-ISEL-LABEL: global_load_i8_zext_vgpr_offset_0x7FFFFF:
+; GFX12-GENERIC-ISEL:       ; %bb.0:
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_alu depctr_va_vcc(0)
+; GFX12-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:8388607
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+  %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 %zext.offset
+  %gep1 = getelementptr inbounds i8, ptr addrspace(1) %gep0, i64 8388607
+  %load = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %gep1, metadata !0)
+  %cast.load = bitcast <4 x i32> %load to <4 x float>
+  ret <4 x float> %cast.load
+}
+
+;; Minimum offset on gfx12.
+define <4 x float> @global_load_i8_zext_vgpr_offset_0xFFFFFF(ptr addrspace(1) %sbase, i32 %voffset) { %zext.offset = zext i32 %voffset to i64
+; GFX9-GENERIC-SDAG-LABEL: global_load_i8_zext_vgpr_offset_0xFFFFFF:
+; GFX9-GENERIC-SDAG:       ; %bb.0:
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX9-GENERIC-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX9-GENERIC-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0xff800000, v0
+; GFX9-GENERIC-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-SDAG-LABEL: global_load_i8_zext_vgpr_offset_0xFFFFFF:
+; GFX906-SDAG:       ; %bb.0:
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX906-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX906-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0xff800000, v0
+; GFX906-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX906-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-SDAG-LABEL: global_load_i8_zext_vgpr_offset_0xFFFFFF:
+; GFX908-SDAG:       ; %bb.0:
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX908-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX908-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0xff800000, v0
+; GFX908-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX908-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-SDAG-LABEL: global_load_i8_zext_vgpr_offset_0xFFFFFF:
+; GFX90A-SDAG:       ; %bb.0:
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX90A-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX90A-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0xff800000, v0
+; GFX90A-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX90A-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-SDAG-LABEL: global_load_i8_zext_vgpr_offset_0xFFFFFF:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0:
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX9-4-GENERIC-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 0, v[2:3]
+; GFX9-4-GENERIC-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0xff800000, v0
+; GFX9-4-GENERIC-SDAG-NEXT:    s_nop 1
+; GFX9-4-GENERIC-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-SDAG-LABEL: global_load_i8_zext_vgpr_offset_0xFFFFFF:
+; GFX942-SDAG:       ; %bb.0:
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX942-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 0, v[2:3]
+; GFX942-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0xff800000, v0
+; GFX942-SDAG-NEXT:    s_nop 1
+; GFX942-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX942-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-SDAG-LABEL: global_load_i8_zext_vgpr_offset_0xFFFFFF:
+; GFX950-SDAG:       ; %bb.0:
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX950-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 0, v[2:3]
+; GFX950-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0xff800000, v0
+; GFX950-SDAG-NEXT:    s_nop 1
+; GFX950-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX950-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-SDAG-LABEL: global_load_i8_zext_vgpr_offset_0xFFFFFF:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0:
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0xff800000, v0
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, -1, v1, vcc_lo
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: global_load_i8_zext_vgpr_offset_0xFFFFFF:
+; GFX1012-SDAG:       ; %bb.0:
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX1012-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX1012-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0xff800000, v0
+; GFX1012-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, -1, v1, vcc_lo
+; GFX1012-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-SDAG-LABEL: global_load_i8_zext_vgpr_offset_0xFFFFFF:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0:
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0xff800000, v0
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-SDAG-LABEL: global_load_i8_zext_vgpr_offset_0xFFFFFF:
+; GFX11-GENERIC-SDAG:       ; %bb.0:
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0xff800000, v0
+; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo
+; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: global_load_i8_zext_vgpr_offset_0xFFFFFF:
+; GFX1250-SDAG:       ; %bb.0:
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX1250-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX1250-SDAG-NEXT:    v_add_nc_u64_e32 v[0:1], v[0:1], v[2:3]
+; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-8388608
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-SDAG-LABEL: global_load_i8_zext_vgpr_offset_0xFFFFFF:
+; GFX12-GENERIC-SDAG:       ; %bb.0:
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)
+; GFX12-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-8388608 scope:SCOPE_SE
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-GENERIC-ISEL-LABEL: global_load_i8_zext_vgpr_offset_0xFFFFFF:
+; GFX9-GENERIC-ISEL:       ; %bb.0:
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX9-GENERIC-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX9-GENERIC-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 0xff800000, v0
+; GFX9-GENERIC-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-ISEL-LABEL: global_load_i8_zext_vgpr_offset_0xFFFFFF:
+; GFX906-ISEL:       ; %bb.0:
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX906-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX906-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 0xff800000, v0
+; GFX906-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX906-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-ISEL-LABEL: global_load_i8_zext_vgpr_offset_0xFFFFFF:
+; GFX908-ISEL:       ; %bb.0:
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX908-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX908-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 0xff800000, v0
+; GFX908-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX908-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-ISEL-LABEL: global_load_i8_zext_vgpr_offset_0xFFFFFF:
+; GFX90A-ISEL:       ; %bb.0:
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX90A-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX90A-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 0xff800000, v0
+; GFX90A-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX90A-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-ISEL-LABEL: global_load_i8_zext_vgpr_offset_0xFFFFFF:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0:
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX9-4-GENERIC-ISEL-NEXT:    s_nop 1
+; GFX9-4-GENERIC-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX9-4-GENERIC-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 0xff800000, v0
+; GFX9-4-GENERIC-ISEL-NEXT:    s_nop 1
+; GFX9-4-GENERIC-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-ISEL-LABEL: global_load_i8_zext_vgpr_offset_0xFFFFFF:
+; GFX942-ISEL:       ; %bb.0:
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX942-ISEL-NEXT:    s_nop 1
+; GFX942-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX942-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 0xff800000, v0
+; GFX942-ISEL-NEXT:    s_nop 1
+; GFX942-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX942-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-ISEL-LABEL: global_load_i8_zext_vgpr_offset_0xFFFFFF:
+; GFX950-ISEL:       ; %bb.0:
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX950-ISEL-NEXT:    s_nop 1
+; GFX950-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX950-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 0xff800000, v0
+; GFX950-ISEL-NEXT:    s_nop 1
+; GFX950-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX950-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-ISEL-LABEL: global_load_i8_zext_vgpr_offset_0xFFFFFF:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0:
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0xff800000, v0
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, -1, v1, vcc_lo
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: global_load_i8_zext_vgpr_offset_0xFFFFFF:
+; GFX1012-ISEL:       ; %bb.0:
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX1012-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX1012-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0xff800000, v0
+; GFX1012-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, -1, v1, vcc_lo
+; GFX1012-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-ISEL-LABEL: global_load_i8_zext_vgpr_offset_0xFFFFFF:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0:
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0xff800000, v0
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-ISEL-LABEL: global_load_i8_zext_vgpr_offset_0xFFFFFF:
+; GFX11-GENERIC-ISEL:       ; %bb.0:
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0xff800000, v0
+; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo
+; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: global_load_i8_zext_vgpr_offset_0xFFFFFF:
+; GFX1250-ISEL:       ; %bb.0:
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX1250-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX1250-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-8388608
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-ISEL-LABEL: global_load_i8_zext_vgpr_offset_0xFFFFFF:
+; GFX12-GENERIC-ISEL:       ; %bb.0:
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_alu depctr_va_vcc(0)
+; GFX12-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-8388608 scope:SCOPE_SE
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+  %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 %zext.offset
+  %gep1 = getelementptr inbounds i8, ptr addrspace(1) %gep0, i64 -8388608
+  %load = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %gep1, metadata !1)
+  %cast.load = bitcast <4 x i32> %load to <4 x float>
+  ret <4 x float> %cast.load
+}
+
+
+;; Maximum positive offset on gfx9, and immediate needs to be moved lower.
+define <4 x float> @global_load_i8_zext_vgpr_offset_4095_gep_order(ptr addrspace(1) %sbase, i32 %voffset) {
+; GFX9-GENERIC-SDAG-LABEL: global_load_i8_zext_vgpr_offset_4095_gep_order:
+; GFX9-GENERIC-SDAG:       ; %bb.0:
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX9-GENERIC-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:4095 glc
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-SDAG-LABEL: global_load_i8_zext_vgpr_offset_4095_gep_order:
+; GFX906-SDAG:       ; %bb.0:
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX906-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX906-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:4095 glc
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-SDAG-LABEL: global_load_i8_zext_vgpr_offset_4095_gep_order:
+; GFX908-SDAG:       ; %bb.0:
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX908-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX908-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:4095 glc
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-SDAG-LABEL: global_load_i8_zext_vgpr_offset_4095_gep_order:
+; GFX90A-SDAG:       ; %bb.0:
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX90A-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX90A-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:4095 glc
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-SDAG-LABEL: global_load_i8_zext_vgpr_offset_4095_gep_order:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0:
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX9-4-GENERIC-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 0, v[2:3]
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:4095 sc1
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-SDAG-LABEL: global_load_i8_zext_vgpr_offset_4095_gep_order:
+; GFX942-SDAG:       ; %bb.0:
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX942-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 0, v[2:3]
+; GFX942-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:4095 sc1
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-SDAG-LABEL: global_load_i8_zext_vgpr_offset_4095_gep_order:
+; GFX950-SDAG:       ; %bb.0:
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX950-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 0, v[2:3]
+; GFX950-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:4095 sc1
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-SDAG-LABEL: global_load_i8_zext_vgpr_offset_4095_gep_order:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0:
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0x800, v0
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:2047 glc dlc
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: global_load_i8_zext_vgpr_offset_4095_gep_order:
+; GFX1012-SDAG:       ; %bb.0:
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX1012-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX1012-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0x800, v0
+; GFX1012-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX1012-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:2047 glc dlc
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-SDAG-LABEL: global_load_i8_zext_vgpr_offset_4095_gep_order:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0:
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0x800, v0
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:2047 glc dlc
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-SDAG-LABEL: global_load_i8_zext_vgpr_offset_4095_gep_order:
+; GFX11-GENERIC-SDAG:       ; %bb.0:
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:4095 glc
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: global_load_i8_zext_vgpr_offset_4095_gep_order:
+; GFX1250-SDAG:       ; %bb.0:
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX1250-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX1250-SDAG-NEXT:    v_add_nc_u64_e32 v[0:1], v[0:1], v[2:3]
+; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:4095 scope:SCOPE_DEV
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-SDAG-LABEL: global_load_i8_zext_vgpr_offset_4095_gep_order:
+; GFX12-GENERIC-SDAG:       ; %bb.0:
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)
+; GFX12-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:4095 scope:SCOPE_DEV
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-GENERIC-ISEL-LABEL: global_load_i8_zext_vgpr_offset_4095_gep_order:
+; GFX9-GENERIC-ISEL:       ; %bb.0:
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX9-GENERIC-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:4095 glc
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-ISEL-LABEL: global_load_i8_zext_vgpr_offset_4095_gep_order:
+; GFX906-ISEL:       ; %bb.0:
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX906-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX906-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:4095 glc
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-ISEL-LABEL: global_load_i8_zext_vgpr_offset_4095_gep_order:
+; GFX908-ISEL:       ; %bb.0:
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX908-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX908-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:4095 glc
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-ISEL-LABEL: global_load_i8_zext_vgpr_offset_4095_gep_order:
+; GFX90A-ISEL:       ; %bb.0:
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX90A-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX90A-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:4095 glc
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-ISEL-LABEL: global_load_i8_zext_vgpr_offset_4095_gep_order:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0:
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX9-4-GENERIC-ISEL-NEXT:    s_nop 1
+; GFX9-4-GENERIC-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:4095 sc1
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-ISEL-LABEL: global_load_i8_zext_vgpr_offset_4095_gep_order:
+; GFX942-ISEL:       ; %bb.0:
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX942-ISEL-NEXT:    s_nop 1
+; GFX942-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX942-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:4095 sc1
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-ISEL-LABEL: global_load_i8_zext_vgpr_offset_4095_gep_order:
+; GFX950-ISEL:       ; %bb.0:
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX950-ISEL-NEXT:    s_nop 1
+; GFX950-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX950-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:4095 sc1
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-ISEL-LABEL: global_load_i8_zext_vgpr_offset_4095_gep_order:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0:
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfff, v0
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: global_load_i8_zext_vgpr_offset_4095_gep_order:
+; GFX1012-ISEL:       ; %bb.0:
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX1012-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX1012-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfff, v0
+; GFX1012-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX1012-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-ISEL-LABEL: global_load_i8_zext_vgpr_offset_4095_gep_order:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0:
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfff, v0
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-ISEL-LABEL: global_load_i8_zext_vgpr_offset_4095_gep_order:
+; GFX11-GENERIC-ISEL:       ; %bb.0:
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:4095 glc
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: global_load_i8_zext_vgpr_offset_4095_gep_order:
+; GFX1250-ISEL:       ; %bb.0:
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX1250-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX1250-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:4095 scope:SCOPE_DEV
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-ISEL-LABEL: global_load_i8_zext_vgpr_offset_4095_gep_order:
+; GFX12-GENERIC-ISEL:       ; %bb.0:
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_alu depctr_va_vcc(0)
+; GFX12-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:4095 scope:SCOPE_DEV
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+  %zext.offset = zext i32 %voffset to i64
+  %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 4095
+  %gep1 = getelementptr inbounds i8, ptr addrspace(1) %gep0, i64 %zext.offset
+  %load = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %gep1, metadata !2)
+  %cast.load = bitcast <4 x i32> %load to <4 x float>
+  ret <4 x float> %cast.load
+}
+
+;; pointer addressing done in integers
+define <4 x float> @global_load_i8_zext_vgpr_ptrtoint(ptr addrspace(1) %sbase, i32 %voffset) {
+; GFX9-GENERIC-SDAG-LABEL: global_load_i8_zext_vgpr_ptrtoint:
+; GFX9-GENERIC-SDAG:       ; %bb.0:
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX9-GENERIC-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-SDAG-LABEL: global_load_i8_zext_vgpr_ptrtoint:
+; GFX906-SDAG:       ; %bb.0:
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX906-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX906-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-SDAG-LABEL: global_load_i8_zext_vgpr_ptrtoint:
+; GFX908-SDAG:       ; %bb.0:
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX908-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX908-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-SDAG-LABEL: global_load_i8_zext_vgpr_ptrtoint:
+; GFX90A-SDAG:       ; %bb.0:
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX90A-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX90A-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-SDAG-LABEL: global_load_i8_zext_vgpr_ptrtoint:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0:
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX9-4-GENERIC-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 0, v[2:3]
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0 sc1
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-SDAG-LABEL: global_load_i8_zext_vgpr_ptrtoint:
+; GFX942-SDAG:       ; %bb.0:
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX942-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 0, v[2:3]
+; GFX942-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0 sc1
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-SDAG-LABEL: global_load_i8_zext_vgpr_ptrtoint:
+; GFX950-SDAG:       ; %bb.0:
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX950-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 0, v[2:3]
+; GFX950-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0 sc1
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-SDAG-LABEL: global_load_i8_zext_vgpr_ptrtoint:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0:
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: global_load_i8_zext_vgpr_ptrtoint:
+; GFX1012-SDAG:       ; %bb.0:
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX1012-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX1012-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-SDAG-LABEL: global_load_i8_zext_vgpr_ptrtoint:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0:
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-SDAG-LABEL: global_load_i8_zext_vgpr_ptrtoint:
+; GFX11-GENERIC-SDAG:       ; %bb.0:
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: global_load_i8_zext_vgpr_ptrtoint:
+; GFX1250-SDAG:       ; %bb.0:
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX1250-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX1250-SDAG-NEXT:    v_add_nc_u64_e32 v[0:1], v[0:1], v[2:3]
+; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SYS
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-SDAG-LABEL: global_load_i8_zext_vgpr_ptrtoint:
+; GFX12-GENERIC-SDAG:       ; %bb.0:
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)
+; GFX12-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SYS
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-GENERIC-ISEL-LABEL: global_load_i8_zext_vgpr_ptrtoint:
+; GFX9-GENERIC-ISEL:       ; %bb.0:
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX9-GENERIC-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-ISEL-LABEL: global_load_i8_zext_vgpr_ptrtoint:
+; GFX906-ISEL:       ; %bb.0:
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX906-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX906-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-ISEL-LABEL: global_load_i8_zext_vgpr_ptrtoint:
+; GFX908-ISEL:       ; %bb.0:
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX908-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX908-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-ISEL-LABEL: global_load_i8_zext_vgpr_ptrtoint:
+; GFX90A-ISEL:       ; %bb.0:
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX90A-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX90A-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-ISEL-LABEL: global_load_i8_zext_vgpr_ptrtoint:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0:
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX9-4-GENERIC-ISEL-NEXT:    s_nop 1
+; GFX9-4-GENERIC-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0 sc1
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-ISEL-LABEL: global_load_i8_zext_vgpr_ptrtoint:
+; GFX942-ISEL:       ; %bb.0:
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX942-ISEL-NEXT:    s_nop 1
+; GFX942-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX942-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0 sc1
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-ISEL-LABEL: global_load_i8_zext_vgpr_ptrtoint:
+; GFX950-ISEL:       ; %bb.0:
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX950-ISEL-NEXT:    s_nop 1
+; GFX950-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX950-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0 sc1
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-ISEL-LABEL: global_load_i8_zext_vgpr_ptrtoint:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0:
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: global_load_i8_zext_vgpr_ptrtoint:
+; GFX1012-ISEL:       ; %bb.0:
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX1012-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX1012-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-ISEL-LABEL: global_load_i8_zext_vgpr_ptrtoint:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0:
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-ISEL-LABEL: global_load_i8_zext_vgpr_ptrtoint:
+; GFX11-GENERIC-ISEL:       ; %bb.0:
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: global_load_i8_zext_vgpr_ptrtoint:
+; GFX1250-ISEL:       ; %bb.0:
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX1250-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX1250-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SYS
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-ISEL-LABEL: global_load_i8_zext_vgpr_ptrtoint:
+; GFX12-GENERIC-ISEL:       ; %bb.0:
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_alu depctr_va_vcc(0)
+; GFX12-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SYS
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+  %zext.offset = zext i32 %voffset to i64
+  %sbase.as.int = ptrtoint ptr addrspace(1) %sbase to i64
+  %add = add i64 %sbase.as.int, %zext.offset
+  %dirty.gep = inttoptr i64 %add to ptr addrspace(1)
+  %load = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %dirty.gep, metadata !3)
+  %cast.load = bitcast <4 x i32> %load to <4 x float>
+  ret <4 x float> %cast.load
+}
+
+;; zext forced to LHS of addressing expression
+define <4 x float> @global_load_i8_zext_vgpr_ptrtoint_commute_add(ptr addrspace(1) %sbase, i32 %voffset) {
+; GFX9-GENERIC-SDAG-LABEL: global_load_i8_zext_vgpr_ptrtoint_commute_add:
+; GFX9-GENERIC-SDAG:       ; %bb.0:
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, v2, v0
+; GFX9-GENERIC-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-SDAG-LABEL: global_load_i8_zext_vgpr_ptrtoint_commute_add:
+; GFX906-SDAG:       ; %bb.0:
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, v2, v0
+; GFX906-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX906-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-SDAG-LABEL: global_load_i8_zext_vgpr_ptrtoint_commute_add:
+; GFX908-SDAG:       ; %bb.0:
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, v2, v0
+; GFX908-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX908-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-SDAG-LABEL: global_load_i8_zext_vgpr_ptrtoint_commute_add:
+; GFX90A-SDAG:       ; %bb.0:
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, v2, v0
+; GFX90A-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX90A-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-SDAG-LABEL: global_load_i8_zext_vgpr_ptrtoint_commute_add:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0:
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX9-4-GENERIC-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[2:3], 0, v[0:1]
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-SDAG-LABEL: global_load_i8_zext_vgpr_ptrtoint_commute_add:
+; GFX942-SDAG:       ; %bb.0:
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX942-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[2:3], 0, v[0:1]
+; GFX942-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-SDAG-LABEL: global_load_i8_zext_vgpr_ptrtoint_commute_add:
+; GFX950-SDAG:       ; %bb.0:
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX950-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[2:3], 0, v[0:1]
+; GFX950-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-SDAG-LABEL: global_load_i8_zext_vgpr_ptrtoint_commute_add:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0:
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v2, v0
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: global_load_i8_zext_vgpr_ptrtoint_commute_add:
+; GFX1012-SDAG:       ; %bb.0:
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v2, v0
+; GFX1012-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX1012-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-SDAG-LABEL: global_load_i8_zext_vgpr_ptrtoint_commute_add:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0:
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v2, v0
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-SDAG-LABEL: global_load_i8_zext_vgpr_ptrtoint_commute_add:
+; GFX11-GENERIC-SDAG:       ; %bb.0:
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v2, v0
+; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: global_load_i8_zext_vgpr_ptrtoint_commute_add:
+; GFX1250-SDAG:       ; %bb.0:
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX1250-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX1250-SDAG-NEXT:    v_add_nc_u64_e32 v[0:1], v[2:3], v[0:1]
+; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-SDAG-LABEL: global_load_i8_zext_vgpr_ptrtoint_commute_add:
+; GFX12-GENERIC-SDAG:       ; %bb.0:
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v2, v0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)
+; GFX12-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-GENERIC-ISEL-LABEL: global_load_i8_zext_vgpr_ptrtoint_commute_add:
+; GFX9-GENERIC-ISEL:       ; %bb.0:
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX9-GENERIC-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-ISEL-LABEL: global_load_i8_zext_vgpr_ptrtoint_commute_add:
+; GFX906-ISEL:       ; %bb.0:
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX906-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX906-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-ISEL-LABEL: global_load_i8_zext_vgpr_ptrtoint_commute_add:
+; GFX908-ISEL:       ; %bb.0:
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX908-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX908-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-ISEL-LABEL: global_load_i8_zext_vgpr_ptrtoint_commute_add:
+; GFX90A-ISEL:       ; %bb.0:
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX90A-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX90A-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-ISEL-LABEL: global_load_i8_zext_vgpr_ptrtoint_commute_add:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0:
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX9-4-GENERIC-ISEL-NEXT:    s_nop 1
+; GFX9-4-GENERIC-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-ISEL-LABEL: global_load_i8_zext_vgpr_ptrtoint_commute_add:
+; GFX942-ISEL:       ; %bb.0:
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX942-ISEL-NEXT:    s_nop 1
+; GFX942-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX942-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-ISEL-LABEL: global_load_i8_zext_vgpr_ptrtoint_commute_add:
+; GFX950-ISEL:       ; %bb.0:
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX950-ISEL-NEXT:    s_nop 1
+; GFX950-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX950-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-ISEL-LABEL: global_load_i8_zext_vgpr_ptrtoint_commute_add:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0:
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: global_load_i8_zext_vgpr_ptrtoint_commute_add:
+; GFX1012-ISEL:       ; %bb.0:
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX1012-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX1012-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-ISEL-LABEL: global_load_i8_zext_vgpr_ptrtoint_commute_add:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0:
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-ISEL-LABEL: global_load_i8_zext_vgpr_ptrtoint_commute_add:
+; GFX11-GENERIC-ISEL:       ; %bb.0:
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: global_load_i8_zext_vgpr_ptrtoint_commute_add:
+; GFX1250-ISEL:       ; %bb.0:
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX1250-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX1250-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-ISEL-LABEL: global_load_i8_zext_vgpr_ptrtoint_commute_add:
+; GFX12-GENERIC-ISEL:       ; %bb.0:
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_alu depctr_va_vcc(0)
+; GFX12-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+  %zext.offset = zext i32 %voffset to i64
+  %sbase.as.int = ptrtoint ptr addrspace(1) %sbase to i64
+  %add = add i64 %zext.offset, %sbase.as.int
+  %dirty.gep = inttoptr i64 %add to ptr addrspace(1)
+  %load = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %dirty.gep, metadata !0)
+  %cast.load = bitcast <4 x i32> %load to <4 x float>
+  ret <4 x float> %cast.load
+}
+
+;; zext forced to LHS of addressing expression, with immediate offset
+define <4 x float> @global_load_i8_zext_vgpr_ptrtoint_commute_add_imm_offset0(ptr addrspace(1) %sbase, i32 %voffset) {
+; GFX9-GENERIC-SDAG-LABEL: global_load_i8_zext_vgpr_ptrtoint_commute_add_imm_offset0:
+; GFX9-GENERIC-SDAG:       ; %bb.0:
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, v2, v0
+; GFX9-GENERIC-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:128
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-SDAG-LABEL: global_load_i8_zext_vgpr_ptrtoint_commute_add_imm_offset0:
+; GFX906-SDAG:       ; %bb.0:
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, v2, v0
+; GFX906-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX906-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:128
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-SDAG-LABEL: global_load_i8_zext_vgpr_ptrtoint_commute_add_imm_offset0:
+; GFX908-SDAG:       ; %bb.0:
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, v2, v0
+; GFX908-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX908-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:128
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-SDAG-LABEL: global_load_i8_zext_vgpr_ptrtoint_commute_add_imm_offset0:
+; GFX90A-SDAG:       ; %bb.0:
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, v2, v0
+; GFX90A-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX90A-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:128
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-SDAG-LABEL: global_load_i8_zext_vgpr_ptrtoint_commute_add_imm_offset0:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0:
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX9-4-GENERIC-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[2:3], 0, v[0:1]
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:128 sc0
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-SDAG-LABEL: global_load_i8_zext_vgpr_ptrtoint_commute_add_imm_offset0:
+; GFX942-SDAG:       ; %bb.0:
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX942-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[2:3], 0, v[0:1]
+; GFX942-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:128 sc0
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-SDAG-LABEL: global_load_i8_zext_vgpr_ptrtoint_commute_add_imm_offset0:
+; GFX950-SDAG:       ; %bb.0:
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX950-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[2:3], 0, v[0:1]
+; GFX950-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:128 sc0
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-SDAG-LABEL: global_load_i8_zext_vgpr_ptrtoint_commute_add_imm_offset0:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0:
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v2, v0
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:128 glc
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: global_load_i8_zext_vgpr_ptrtoint_commute_add_imm_offset0:
+; GFX1012-SDAG:       ; %bb.0:
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v2, v0
+; GFX1012-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX1012-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:128 glc
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-SDAG-LABEL: global_load_i8_zext_vgpr_ptrtoint_commute_add_imm_offset0:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0:
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v2, v0
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:128 glc
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-SDAG-LABEL: global_load_i8_zext_vgpr_ptrtoint_commute_add_imm_offset0:
+; GFX11-GENERIC-SDAG:       ; %bb.0:
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v2, v0
+; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:128 glc
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: global_load_i8_zext_vgpr_ptrtoint_commute_add_imm_offset0:
+; GFX1250-SDAG:       ; %bb.0:
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX1250-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX1250-SDAG-NEXT:    v_add_nc_u64_e32 v[0:1], v[2:3], v[0:1]
+; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:128
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-SDAG-LABEL: global_load_i8_zext_vgpr_ptrtoint_commute_add_imm_offset0:
+; GFX12-GENERIC-SDAG:       ; %bb.0:
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v2, v0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)
+; GFX12-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:128 scope:SCOPE_SE
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-GENERIC-ISEL-LABEL: global_load_i8_zext_vgpr_ptrtoint_commute_add_imm_offset0:
+; GFX9-GENERIC-ISEL:       ; %bb.0:
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX9-GENERIC-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:128
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-ISEL-LABEL: global_load_i8_zext_vgpr_ptrtoint_commute_add_imm_offset0:
+; GFX906-ISEL:       ; %bb.0:
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX906-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX906-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:128
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-ISEL-LABEL: global_load_i8_zext_vgpr_ptrtoint_commute_add_imm_offset0:
+; GFX908-ISEL:       ; %bb.0:
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX908-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX908-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:128
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-ISEL-LABEL: global_load_i8_zext_vgpr_ptrtoint_commute_add_imm_offset0:
+; GFX90A-ISEL:       ; %bb.0:
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX90A-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX90A-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:128
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-ISEL-LABEL: global_load_i8_zext_vgpr_ptrtoint_commute_add_imm_offset0:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0:
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX9-4-GENERIC-ISEL-NEXT:    s_nop 1
+; GFX9-4-GENERIC-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:128 sc0
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-ISEL-LABEL: global_load_i8_zext_vgpr_ptrtoint_commute_add_imm_offset0:
+; GFX942-ISEL:       ; %bb.0:
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX942-ISEL-NEXT:    s_nop 1
+; GFX942-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX942-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:128 sc0
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-ISEL-LABEL: global_load_i8_zext_vgpr_ptrtoint_commute_add_imm_offset0:
+; GFX950-ISEL:       ; %bb.0:
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX950-ISEL-NEXT:    s_nop 1
+; GFX950-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX950-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:128 sc0
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-ISEL-LABEL: global_load_i8_zext_vgpr_ptrtoint_commute_add_imm_offset0:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0:
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:128 glc
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: global_load_i8_zext_vgpr_ptrtoint_commute_add_imm_offset0:
+; GFX1012-ISEL:       ; %bb.0:
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX1012-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX1012-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:128 glc
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-ISEL-LABEL: global_load_i8_zext_vgpr_ptrtoint_commute_add_imm_offset0:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0:
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:128 glc
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-ISEL-LABEL: global_load_i8_zext_vgpr_ptrtoint_commute_add_imm_offset0:
+; GFX11-GENERIC-ISEL:       ; %bb.0:
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:128 glc
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: global_load_i8_zext_vgpr_ptrtoint_commute_add_imm_offset0:
+; GFX1250-ISEL:       ; %bb.0:
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX1250-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX1250-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:128
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-ISEL-LABEL: global_load_i8_zext_vgpr_ptrtoint_commute_add_imm_offset0:
+; GFX12-GENERIC-ISEL:       ; %bb.0:
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_alu depctr_va_vcc(0)
+; GFX12-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:128 scope:SCOPE_SE
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+  %zext.offset = zext i32 %voffset to i64
+  %sbase.as.int = ptrtoint ptr addrspace(1) %sbase to i64
+  %add = add i64 %zext.offset, %sbase.as.int
+  %add.immoffset = add i64 %add, 128
+  %dirty.gep = inttoptr i64 %add.immoffset to ptr addrspace(1)
+  %load = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %dirty.gep, metadata !1)
+  %cast.load = bitcast <4 x i32> %load to <4 x float>
+  ret <4 x float> %cast.load
+}
+
+;; zext forced to LHS of addressing expression, with immediate offset in non-canonical position
+define <4 x float> @global_load_i8_zext_vgpr_ptrtoint_commute_add_imm_offset1(ptr addrspace(1) %sbase, i32 %voffset) {
+; GFX9-GENERIC-SDAG-LABEL: global_load_i8_zext_vgpr_ptrtoint_commute_add_imm_offset1:
+; GFX9-GENERIC-SDAG:       ; %bb.0:
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX9-GENERIC-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:128 glc
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-SDAG-LABEL: global_load_i8_zext_vgpr_ptrtoint_commute_add_imm_offset1:
+; GFX906-SDAG:       ; %bb.0:
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX906-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX906-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:128 glc
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-SDAG-LABEL: global_load_i8_zext_vgpr_ptrtoint_commute_add_imm_offset1:
+; GFX908-SDAG:       ; %bb.0:
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX908-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX908-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:128 glc
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-SDAG-LABEL: global_load_i8_zext_vgpr_ptrtoint_commute_add_imm_offset1:
+; GFX90A-SDAG:       ; %bb.0:
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX90A-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX90A-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:128 glc
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-SDAG-LABEL: global_load_i8_zext_vgpr_ptrtoint_commute_add_imm_offset1:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0:
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX9-4-GENERIC-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 0, v[2:3]
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:128 sc1
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-SDAG-LABEL: global_load_i8_zext_vgpr_ptrtoint_commute_add_imm_offset1:
+; GFX942-SDAG:       ; %bb.0:
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX942-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 0, v[2:3]
+; GFX942-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:128 sc1
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-SDAG-LABEL: global_load_i8_zext_vgpr_ptrtoint_commute_add_imm_offset1:
+; GFX950-SDAG:       ; %bb.0:
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX950-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 0, v[2:3]
+; GFX950-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:128 sc1
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-SDAG-LABEL: global_load_i8_zext_vgpr_ptrtoint_commute_add_imm_offset1:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0:
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:128 glc dlc
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: global_load_i8_zext_vgpr_ptrtoint_commute_add_imm_offset1:
+; GFX1012-SDAG:       ; %bb.0:
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX1012-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX1012-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:128 glc dlc
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-SDAG-LABEL: global_load_i8_zext_vgpr_ptrtoint_commute_add_imm_offset1:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0:
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:128 glc dlc
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-SDAG-LABEL: global_load_i8_zext_vgpr_ptrtoint_commute_add_imm_offset1:
+; GFX11-GENERIC-SDAG:       ; %bb.0:
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:128 glc
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: global_load_i8_zext_vgpr_ptrtoint_commute_add_imm_offset1:
+; GFX1250-SDAG:       ; %bb.0:
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX1250-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX1250-SDAG-NEXT:    v_add_nc_u64_e32 v[0:1], v[0:1], v[2:3]
+; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:128 scope:SCOPE_DEV
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-SDAG-LABEL: global_load_i8_zext_vgpr_ptrtoint_commute_add_imm_offset1:
+; GFX12-GENERIC-SDAG:       ; %bb.0:
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)
+; GFX12-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:128 scope:SCOPE_DEV
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-GENERIC-ISEL-LABEL: global_load_i8_zext_vgpr_ptrtoint_commute_add_imm_offset1:
+; GFX9-GENERIC-ISEL:       ; %bb.0:
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX9-GENERIC-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:128 glc
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-ISEL-LABEL: global_load_i8_zext_vgpr_ptrtoint_commute_add_imm_offset1:
+; GFX906-ISEL:       ; %bb.0:
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX906-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX906-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:128 glc
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-ISEL-LABEL: global_load_i8_zext_vgpr_ptrtoint_commute_add_imm_offset1:
+; GFX908-ISEL:       ; %bb.0:
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX908-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX908-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:128 glc
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-ISEL-LABEL: global_load_i8_zext_vgpr_ptrtoint_commute_add_imm_offset1:
+; GFX90A-ISEL:       ; %bb.0:
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX90A-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX90A-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:128 glc
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-ISEL-LABEL: global_load_i8_zext_vgpr_ptrtoint_commute_add_imm_offset1:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0:
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX9-4-GENERIC-ISEL-NEXT:    s_nop 1
+; GFX9-4-GENERIC-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:128 sc1
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-ISEL-LABEL: global_load_i8_zext_vgpr_ptrtoint_commute_add_imm_offset1:
+; GFX942-ISEL:       ; %bb.0:
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX942-ISEL-NEXT:    s_nop 1
+; GFX942-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX942-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:128 sc1
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-ISEL-LABEL: global_load_i8_zext_vgpr_ptrtoint_commute_add_imm_offset1:
+; GFX950-ISEL:       ; %bb.0:
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX950-ISEL-NEXT:    s_nop 1
+; GFX950-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX950-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:128 sc1
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-ISEL-LABEL: global_load_i8_zext_vgpr_ptrtoint_commute_add_imm_offset1:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0:
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:128 glc dlc
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: global_load_i8_zext_vgpr_ptrtoint_commute_add_imm_offset1:
+; GFX1012-ISEL:       ; %bb.0:
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX1012-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX1012-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:128 glc dlc
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-ISEL-LABEL: global_load_i8_zext_vgpr_ptrtoint_commute_add_imm_offset1:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0:
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:128 glc dlc
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-ISEL-LABEL: global_load_i8_zext_vgpr_ptrtoint_commute_add_imm_offset1:
+; GFX11-GENERIC-ISEL:       ; %bb.0:
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:128 glc
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: global_load_i8_zext_vgpr_ptrtoint_commute_add_imm_offset1:
+; GFX1250-ISEL:       ; %bb.0:
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX1250-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX1250-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:128 scope:SCOPE_DEV
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-ISEL-LABEL: global_load_i8_zext_vgpr_ptrtoint_commute_add_imm_offset1:
+; GFX12-GENERIC-ISEL:       ; %bb.0:
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_alu depctr_va_vcc(0)
+; GFX12-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:128 scope:SCOPE_DEV
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+  %zext.offset = zext i32 %voffset to i64
+  %sbase.as.int = ptrtoint ptr addrspace(1) %sbase to i64
+  %add.immoffset = add i64 %sbase.as.int, 128
+  %add = add i64 %zext.offset, %add.immoffset
+  %dirty.gep = inttoptr i64 %add to ptr addrspace(1)
+  %load = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %dirty.gep, metadata !2)
+  %cast.load = bitcast <4 x i32> %load to <4 x float>
+  ret <4 x float> %cast.load
+}
+
+;;------------------------------------------------------------------------------
+;; Uniformity edge cases
+;;------------------------------------------------------------------------------
+
+;; Both 64-bit base and 32-bit offset are scalar
+define <4 x float> @global_load_i8_zext_uniform_offset(ptr addrspace(1) %sbase, i32 %soffset) {
+; GFX9-GENERIC-SDAG-LABEL: global_load_i8_zext_uniform_offset:
+; GFX9-GENERIC-SDAG:       ; %bb.0:
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX9-GENERIC-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-SDAG-LABEL: global_load_i8_zext_uniform_offset:
+; GFX906-SDAG:       ; %bb.0:
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX906-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX906-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-SDAG-LABEL: global_load_i8_zext_uniform_offset:
+; GFX908-SDAG:       ; %bb.0:
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX908-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX908-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-SDAG-LABEL: global_load_i8_zext_uniform_offset:
+; GFX90A-SDAG:       ; %bb.0:
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX90A-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX90A-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-SDAG-LABEL: global_load_i8_zext_uniform_offset:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0:
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX9-4-GENERIC-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 0, v[2:3]
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0 sc1
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-SDAG-LABEL: global_load_i8_zext_uniform_offset:
+; GFX942-SDAG:       ; %bb.0:
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX942-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 0, v[2:3]
+; GFX942-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0 sc1
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-SDAG-LABEL: global_load_i8_zext_uniform_offset:
+; GFX950-SDAG:       ; %bb.0:
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX950-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 0, v[2:3]
+; GFX950-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0 sc1
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-SDAG-LABEL: global_load_i8_zext_uniform_offset:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0:
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: global_load_i8_zext_uniform_offset:
+; GFX1012-SDAG:       ; %bb.0:
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX1012-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX1012-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-SDAG-LABEL: global_load_i8_zext_uniform_offset:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0:
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-SDAG-LABEL: global_load_i8_zext_uniform_offset:
+; GFX11-GENERIC-SDAG:       ; %bb.0:
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: global_load_i8_zext_uniform_offset:
+; GFX1250-SDAG:       ; %bb.0:
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX1250-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX1250-SDAG-NEXT:    v_add_nc_u64_e32 v[0:1], v[0:1], v[2:3]
+; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SYS
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-SDAG-LABEL: global_load_i8_zext_uniform_offset:
+; GFX12-GENERIC-SDAG:       ; %bb.0:
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)
+; GFX12-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SYS
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-GENERIC-ISEL-LABEL: global_load_i8_zext_uniform_offset:
+; GFX9-GENERIC-ISEL:       ; %bb.0:
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX9-GENERIC-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-ISEL-LABEL: global_load_i8_zext_uniform_offset:
+; GFX906-ISEL:       ; %bb.0:
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX906-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX906-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-ISEL-LABEL: global_load_i8_zext_uniform_offset:
+; GFX908-ISEL:       ; %bb.0:
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX908-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX908-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-ISEL-LABEL: global_load_i8_zext_uniform_offset:
+; GFX90A-ISEL:       ; %bb.0:
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX90A-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX90A-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-ISEL-LABEL: global_load_i8_zext_uniform_offset:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0:
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX9-4-GENERIC-ISEL-NEXT:    s_nop 1
+; GFX9-4-GENERIC-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0 sc1
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-ISEL-LABEL: global_load_i8_zext_uniform_offset:
+; GFX942-ISEL:       ; %bb.0:
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX942-ISEL-NEXT:    s_nop 1
+; GFX942-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX942-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0 sc1
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-ISEL-LABEL: global_load_i8_zext_uniform_offset:
+; GFX950-ISEL:       ; %bb.0:
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX950-ISEL-NEXT:    s_nop 1
+; GFX950-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX950-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0 sc1
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-ISEL-LABEL: global_load_i8_zext_uniform_offset:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0:
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: global_load_i8_zext_uniform_offset:
+; GFX1012-ISEL:       ; %bb.0:
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX1012-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX1012-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-ISEL-LABEL: global_load_i8_zext_uniform_offset:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0:
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-ISEL-LABEL: global_load_i8_zext_uniform_offset:
+; GFX11-GENERIC-ISEL:       ; %bb.0:
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: global_load_i8_zext_uniform_offset:
+; GFX1250-ISEL:       ; %bb.0:
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX1250-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX1250-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SYS
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-ISEL-LABEL: global_load_i8_zext_uniform_offset:
+; GFX12-GENERIC-ISEL:       ; %bb.0:
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_alu depctr_va_vcc(0)
+; GFX12-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SYS
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+  %zext.offset = zext i32 %soffset to i64
+  %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 %zext.offset
+  %load = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %gep0, metadata !3)
+  %cast.load = bitcast <4 x i32> %load to <4 x float>
+  ret <4 x float> %cast.load
+}
+
+;; Both 64-bit base and 32-bit offset are scalar, with immediate offset.
+define <4 x float> @global_load_i8_zext_uniform_offset_immoffset(ptr addrspace(1) %sbase, i32 %soffset) {
+; GFX9-GENERIC-SDAG-LABEL: global_load_i8_zext_uniform_offset_immoffset:
+; GFX9-GENERIC-SDAG:       ; %bb.0:
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX9-GENERIC-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-24
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-SDAG-LABEL: global_load_i8_zext_uniform_offset_immoffset:
+; GFX906-SDAG:       ; %bb.0:
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX906-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX906-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-24
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-SDAG-LABEL: global_load_i8_zext_uniform_offset_immoffset:
+; GFX908-SDAG:       ; %bb.0:
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX908-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX908-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-24
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-SDAG-LABEL: global_load_i8_zext_uniform_offset_immoffset:
+; GFX90A-SDAG:       ; %bb.0:
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX90A-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX90A-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-24
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-SDAG-LABEL: global_load_i8_zext_uniform_offset_immoffset:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0:
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX9-4-GENERIC-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 0, v[2:3]
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-24
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-SDAG-LABEL: global_load_i8_zext_uniform_offset_immoffset:
+; GFX942-SDAG:       ; %bb.0:
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX942-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 0, v[2:3]
+; GFX942-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-24
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-SDAG-LABEL: global_load_i8_zext_uniform_offset_immoffset:
+; GFX950-SDAG:       ; %bb.0:
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX950-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 0, v[2:3]
+; GFX950-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-24
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-SDAG-LABEL: global_load_i8_zext_uniform_offset_immoffset:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0:
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-24
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: global_load_i8_zext_uniform_offset_immoffset:
+; GFX1012-SDAG:       ; %bb.0:
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX1012-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX1012-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-24
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-SDAG-LABEL: global_load_i8_zext_uniform_offset_immoffset:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0:
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-24
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-SDAG-LABEL: global_load_i8_zext_uniform_offset_immoffset:
+; GFX11-GENERIC-SDAG:       ; %bb.0:
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-24
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: global_load_i8_zext_uniform_offset_immoffset:
+; GFX1250-SDAG:       ; %bb.0:
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX1250-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX1250-SDAG-NEXT:    v_add_nc_u64_e32 v[0:1], v[0:1], v[2:3]
+; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-24
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-SDAG-LABEL: global_load_i8_zext_uniform_offset_immoffset:
+; GFX12-GENERIC-SDAG:       ; %bb.0:
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)
+; GFX12-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-24
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-GENERIC-ISEL-LABEL: global_load_i8_zext_uniform_offset_immoffset:
+; GFX9-GENERIC-ISEL:       ; %bb.0:
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX9-GENERIC-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-24
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-ISEL-LABEL: global_load_i8_zext_uniform_offset_immoffset:
+; GFX906-ISEL:       ; %bb.0:
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX906-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX906-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-24
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-ISEL-LABEL: global_load_i8_zext_uniform_offset_immoffset:
+; GFX908-ISEL:       ; %bb.0:
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX908-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX908-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-24
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-ISEL-LABEL: global_load_i8_zext_uniform_offset_immoffset:
+; GFX90A-ISEL:       ; %bb.0:
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX90A-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX90A-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-24
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-ISEL-LABEL: global_load_i8_zext_uniform_offset_immoffset:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0:
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX9-4-GENERIC-ISEL-NEXT:    s_nop 1
+; GFX9-4-GENERIC-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-24
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-ISEL-LABEL: global_load_i8_zext_uniform_offset_immoffset:
+; GFX942-ISEL:       ; %bb.0:
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX942-ISEL-NEXT:    s_nop 1
+; GFX942-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX942-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-24
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-ISEL-LABEL: global_load_i8_zext_uniform_offset_immoffset:
+; GFX950-ISEL:       ; %bb.0:
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX950-ISEL-NEXT:    s_nop 1
+; GFX950-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX950-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-24
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-ISEL-LABEL: global_load_i8_zext_uniform_offset_immoffset:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0:
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-24
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: global_load_i8_zext_uniform_offset_immoffset:
+; GFX1012-ISEL:       ; %bb.0:
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX1012-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX1012-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-24
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-ISEL-LABEL: global_load_i8_zext_uniform_offset_immoffset:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0:
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-24
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-ISEL-LABEL: global_load_i8_zext_uniform_offset_immoffset:
+; GFX11-GENERIC-ISEL:       ; %bb.0:
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-24
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: global_load_i8_zext_uniform_offset_immoffset:
+; GFX1250-ISEL:       ; %bb.0:
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX1250-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX1250-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-24
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-ISEL-LABEL: global_load_i8_zext_uniform_offset_immoffset:
+; GFX12-GENERIC-ISEL:       ; %bb.0:
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_alu depctr_va_vcc(0)
+; GFX12-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-24
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+  %zext.offset = zext i32 %soffset to i64
+  %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 %zext.offset
+  %gep1 = getelementptr inbounds i8, ptr addrspace(1) %gep0, i64 -24
+  %load = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %gep1, metadata !0)
+  %cast.load = bitcast <4 x i32> %load to <4 x float>
+  ret <4 x float> %cast.load
+}
+
+;; Both components uniform, zext forced to LHS of addressing expression
+define <4 x float> @global_load_i8_zext_sgpr_ptrtoint_commute_add(ptr addrspace(1) %sbase, i32 %soffset) {
+; GFX9-GENERIC-SDAG-LABEL: global_load_i8_zext_sgpr_ptrtoint_commute_add:
+; GFX9-GENERIC-SDAG:       ; %bb.0:
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, v2, v0
+; GFX9-GENERIC-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-SDAG-LABEL: global_load_i8_zext_sgpr_ptrtoint_commute_add:
+; GFX906-SDAG:       ; %bb.0:
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, v2, v0
+; GFX906-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX906-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-SDAG-LABEL: global_load_i8_zext_sgpr_ptrtoint_commute_add:
+; GFX908-SDAG:       ; %bb.0:
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, v2, v0
+; GFX908-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX908-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-SDAG-LABEL: global_load_i8_zext_sgpr_ptrtoint_commute_add:
+; GFX90A-SDAG:       ; %bb.0:
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, v2, v0
+; GFX90A-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX90A-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-SDAG-LABEL: global_load_i8_zext_sgpr_ptrtoint_commute_add:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0:
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX9-4-GENERIC-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[2:3], 0, v[0:1]
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-SDAG-LABEL: global_load_i8_zext_sgpr_ptrtoint_commute_add:
+; GFX942-SDAG:       ; %bb.0:
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX942-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[2:3], 0, v[0:1]
+; GFX942-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-SDAG-LABEL: global_load_i8_zext_sgpr_ptrtoint_commute_add:
+; GFX950-SDAG:       ; %bb.0:
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX950-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[2:3], 0, v[0:1]
+; GFX950-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-SDAG-LABEL: global_load_i8_zext_sgpr_ptrtoint_commute_add:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0:
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v2, v0
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: global_load_i8_zext_sgpr_ptrtoint_commute_add:
+; GFX1012-SDAG:       ; %bb.0:
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v2, v0
+; GFX1012-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX1012-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-SDAG-LABEL: global_load_i8_zext_sgpr_ptrtoint_commute_add:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0:
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v2, v0
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-SDAG-LABEL: global_load_i8_zext_sgpr_ptrtoint_commute_add:
+; GFX11-GENERIC-SDAG:       ; %bb.0:
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v2, v0
+; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: global_load_i8_zext_sgpr_ptrtoint_commute_add:
+; GFX1250-SDAG:       ; %bb.0:
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX1250-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX1250-SDAG-NEXT:    v_add_nc_u64_e32 v[0:1], v[2:3], v[0:1]
+; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-SDAG-LABEL: global_load_i8_zext_sgpr_ptrtoint_commute_add:
+; GFX12-GENERIC-SDAG:       ; %bb.0:
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v2, v0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)
+; GFX12-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SE
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-GENERIC-ISEL-LABEL: global_load_i8_zext_sgpr_ptrtoint_commute_add:
+; GFX9-GENERIC-ISEL:       ; %bb.0:
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX9-GENERIC-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-ISEL-LABEL: global_load_i8_zext_sgpr_ptrtoint_commute_add:
+; GFX906-ISEL:       ; %bb.0:
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX906-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX906-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-ISEL-LABEL: global_load_i8_zext_sgpr_ptrtoint_commute_add:
+; GFX908-ISEL:       ; %bb.0:
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX908-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX908-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-ISEL-LABEL: global_load_i8_zext_sgpr_ptrtoint_commute_add:
+; GFX90A-ISEL:       ; %bb.0:
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX90A-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX90A-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-ISEL-LABEL: global_load_i8_zext_sgpr_ptrtoint_commute_add:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0:
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX9-4-GENERIC-ISEL-NEXT:    s_nop 1
+; GFX9-4-GENERIC-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-ISEL-LABEL: global_load_i8_zext_sgpr_ptrtoint_commute_add:
+; GFX942-ISEL:       ; %bb.0:
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX942-ISEL-NEXT:    s_nop 1
+; GFX942-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX942-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-ISEL-LABEL: global_load_i8_zext_sgpr_ptrtoint_commute_add:
+; GFX950-ISEL:       ; %bb.0:
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX950-ISEL-NEXT:    s_nop 1
+; GFX950-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX950-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-ISEL-LABEL: global_load_i8_zext_sgpr_ptrtoint_commute_add:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0:
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: global_load_i8_zext_sgpr_ptrtoint_commute_add:
+; GFX1012-ISEL:       ; %bb.0:
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX1012-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX1012-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-ISEL-LABEL: global_load_i8_zext_sgpr_ptrtoint_commute_add:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0:
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-ISEL-LABEL: global_load_i8_zext_sgpr_ptrtoint_commute_add:
+; GFX11-GENERIC-ISEL:       ; %bb.0:
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: global_load_i8_zext_sgpr_ptrtoint_commute_add:
+; GFX1250-ISEL:       ; %bb.0:
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX1250-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX1250-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-ISEL-LABEL: global_load_i8_zext_sgpr_ptrtoint_commute_add:
+; GFX12-GENERIC-ISEL:       ; %bb.0:
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_alu depctr_va_vcc(0)
+; GFX12-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SE
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+  %zext.offset = zext i32 %soffset to i64
+  %sbase.as.int = ptrtoint ptr addrspace(1) %sbase to i64
+  %add = add i64 %zext.offset, %sbase.as.int
+  %dirty.gep = inttoptr i64 %add to ptr addrspace(1)
+  %load = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %dirty.gep, metadata !1)
+  %cast.load = bitcast <4 x i32> %load to <4 x float>
+  ret <4 x float> %cast.load
+}
+
+;; Both components uniform, zext forced to LHS of addressing expression, with immediate offset
+define <4 x float> @global_load_i8_zext_sgpr_ptrtoint_commute_add_imm_offset0(ptr addrspace(1) %sbase, i32 %soffset) {
+; GFX9-GENERIC-SDAG-LABEL: global_load_i8_zext_sgpr_ptrtoint_commute_add_imm_offset0:
+; GFX9-GENERIC-SDAG:       ; %bb.0:
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, v2, v0
+; GFX9-GENERIC-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:128 glc
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-SDAG-LABEL: global_load_i8_zext_sgpr_ptrtoint_commute_add_imm_offset0:
+; GFX906-SDAG:       ; %bb.0:
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, v2, v0
+; GFX906-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX906-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:128 glc
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-SDAG-LABEL: global_load_i8_zext_sgpr_ptrtoint_commute_add_imm_offset0:
+; GFX908-SDAG:       ; %bb.0:
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, v2, v0
+; GFX908-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX908-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:128 glc
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-SDAG-LABEL: global_load_i8_zext_sgpr_ptrtoint_commute_add_imm_offset0:
+; GFX90A-SDAG:       ; %bb.0:
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, v2, v0
+; GFX90A-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX90A-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:128 glc
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-SDAG-LABEL: global_load_i8_zext_sgpr_ptrtoint_commute_add_imm_offset0:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0:
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX9-4-GENERIC-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[2:3], 0, v[0:1]
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:128 sc1
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-SDAG-LABEL: global_load_i8_zext_sgpr_ptrtoint_commute_add_imm_offset0:
+; GFX942-SDAG:       ; %bb.0:
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX942-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[2:3], 0, v[0:1]
+; GFX942-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:128 sc1
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-SDAG-LABEL: global_load_i8_zext_sgpr_ptrtoint_commute_add_imm_offset0:
+; GFX950-SDAG:       ; %bb.0:
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX950-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[2:3], 0, v[0:1]
+; GFX950-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:128 sc1
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-SDAG-LABEL: global_load_i8_zext_sgpr_ptrtoint_commute_add_imm_offset0:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0:
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v2, v0
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:128 glc dlc
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: global_load_i8_zext_sgpr_ptrtoint_commute_add_imm_offset0:
+; GFX1012-SDAG:       ; %bb.0:
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v2, v0
+; GFX1012-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX1012-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:128 glc dlc
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-SDAG-LABEL: global_load_i8_zext_sgpr_ptrtoint_commute_add_imm_offset0:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0:
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v2, v0
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:128 glc dlc
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-SDAG-LABEL: global_load_i8_zext_sgpr_ptrtoint_commute_add_imm_offset0:
+; GFX11-GENERIC-SDAG:       ; %bb.0:
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v2, v0
+; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:128 glc
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: global_load_i8_zext_sgpr_ptrtoint_commute_add_imm_offset0:
+; GFX1250-SDAG:       ; %bb.0:
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX1250-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX1250-SDAG-NEXT:    v_add_nc_u64_e32 v[0:1], v[2:3], v[0:1]
+; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:128 scope:SCOPE_DEV
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-SDAG-LABEL: global_load_i8_zext_sgpr_ptrtoint_commute_add_imm_offset0:
+; GFX12-GENERIC-SDAG:       ; %bb.0:
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v2, v0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)
+; GFX12-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:128 scope:SCOPE_DEV
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-GENERIC-ISEL-LABEL: global_load_i8_zext_sgpr_ptrtoint_commute_add_imm_offset0:
+; GFX9-GENERIC-ISEL:       ; %bb.0:
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX9-GENERIC-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:128 glc
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-ISEL-LABEL: global_load_i8_zext_sgpr_ptrtoint_commute_add_imm_offset0:
+; GFX906-ISEL:       ; %bb.0:
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX906-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX906-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:128 glc
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-ISEL-LABEL: global_load_i8_zext_sgpr_ptrtoint_commute_add_imm_offset0:
+; GFX908-ISEL:       ; %bb.0:
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX908-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX908-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:128 glc
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-ISEL-LABEL: global_load_i8_zext_sgpr_ptrtoint_commute_add_imm_offset0:
+; GFX90A-ISEL:       ; %bb.0:
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX90A-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX90A-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:128 glc
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-ISEL-LABEL: global_load_i8_zext_sgpr_ptrtoint_commute_add_imm_offset0:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0:
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX9-4-GENERIC-ISEL-NEXT:    s_nop 1
+; GFX9-4-GENERIC-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:128 sc1
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-ISEL-LABEL: global_load_i8_zext_sgpr_ptrtoint_commute_add_imm_offset0:
+; GFX942-ISEL:       ; %bb.0:
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX942-ISEL-NEXT:    s_nop 1
+; GFX942-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX942-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:128 sc1
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-ISEL-LABEL: global_load_i8_zext_sgpr_ptrtoint_commute_add_imm_offset0:
+; GFX950-ISEL:       ; %bb.0:
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX950-ISEL-NEXT:    s_nop 1
+; GFX950-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX950-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:128 sc1
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-ISEL-LABEL: global_load_i8_zext_sgpr_ptrtoint_commute_add_imm_offset0:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0:
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:128 glc dlc
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: global_load_i8_zext_sgpr_ptrtoint_commute_add_imm_offset0:
+; GFX1012-ISEL:       ; %bb.0:
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX1012-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX1012-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:128 glc dlc
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-ISEL-LABEL: global_load_i8_zext_sgpr_ptrtoint_commute_add_imm_offset0:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0:
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:128 glc dlc
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-ISEL-LABEL: global_load_i8_zext_sgpr_ptrtoint_commute_add_imm_offset0:
+; GFX11-GENERIC-ISEL:       ; %bb.0:
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:128 glc
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: global_load_i8_zext_sgpr_ptrtoint_commute_add_imm_offset0:
+; GFX1250-ISEL:       ; %bb.0:
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX1250-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX1250-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:128 scope:SCOPE_DEV
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-ISEL-LABEL: global_load_i8_zext_sgpr_ptrtoint_commute_add_imm_offset0:
+; GFX12-GENERIC-ISEL:       ; %bb.0:
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_alu depctr_va_vcc(0)
+; GFX12-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:128 scope:SCOPE_DEV
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+  %zext.offset = zext i32 %soffset to i64
+  %sbase.as.int = ptrtoint ptr addrspace(1) %sbase to i64
+  %add = add i64 %zext.offset, %sbase.as.int
+  %add.immoffset = add i64 %add, 128
+  %dirty.gep = inttoptr i64 %add.immoffset to ptr addrspace(1)
+  %load = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %dirty.gep, metadata !2)
+  %cast.load = bitcast <4 x i32> %load to <4 x float>
+  ret <4 x float> %cast.load
+}
+
+;; divergent 64-bit base, 32-bit scalar offset.
+define <4 x float> @global_load_i8_vgpr64_sgpr32(ptr addrspace(1) %vbase, i32 %soffset) {
+; GFX9-GENERIC-SDAG-LABEL: global_load_i8_vgpr64_sgpr32:
+; GFX9-GENERIC-SDAG:       ; %bb.0:
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX9-GENERIC-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-SDAG-LABEL: global_load_i8_vgpr64_sgpr32:
+; GFX906-SDAG:       ; %bb.0:
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX906-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX906-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-SDAG-LABEL: global_load_i8_vgpr64_sgpr32:
+; GFX908-SDAG:       ; %bb.0:
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX908-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX908-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-SDAG-LABEL: global_load_i8_vgpr64_sgpr32:
+; GFX90A-SDAG:       ; %bb.0:
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX90A-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX90A-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-SDAG-LABEL: global_load_i8_vgpr64_sgpr32:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0:
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX9-4-GENERIC-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 0, v[2:3]
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0 sc1
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-SDAG-LABEL: global_load_i8_vgpr64_sgpr32:
+; GFX942-SDAG:       ; %bb.0:
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX942-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 0, v[2:3]
+; GFX942-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0 sc1
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-SDAG-LABEL: global_load_i8_vgpr64_sgpr32:
+; GFX950-SDAG:       ; %bb.0:
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX950-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 0, v[2:3]
+; GFX950-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0 sc1
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-SDAG-LABEL: global_load_i8_vgpr64_sgpr32:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0:
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: global_load_i8_vgpr64_sgpr32:
+; GFX1012-SDAG:       ; %bb.0:
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX1012-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX1012-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-SDAG-LABEL: global_load_i8_vgpr64_sgpr32:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0:
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-SDAG-LABEL: global_load_i8_vgpr64_sgpr32:
+; GFX11-GENERIC-SDAG:       ; %bb.0:
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: global_load_i8_vgpr64_sgpr32:
+; GFX1250-SDAG:       ; %bb.0:
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX1250-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX1250-SDAG-NEXT:    v_add_nc_u64_e32 v[0:1], v[0:1], v[2:3]
+; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SYS
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-SDAG-LABEL: global_load_i8_vgpr64_sgpr32:
+; GFX12-GENERIC-SDAG:       ; %bb.0:
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)
+; GFX12-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SYS
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-GENERIC-ISEL-LABEL: global_load_i8_vgpr64_sgpr32:
+; GFX9-GENERIC-ISEL:       ; %bb.0:
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX9-GENERIC-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-ISEL-LABEL: global_load_i8_vgpr64_sgpr32:
+; GFX906-ISEL:       ; %bb.0:
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX906-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX906-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-ISEL-LABEL: global_load_i8_vgpr64_sgpr32:
+; GFX908-ISEL:       ; %bb.0:
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX908-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX908-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-ISEL-LABEL: global_load_i8_vgpr64_sgpr32:
+; GFX90A-ISEL:       ; %bb.0:
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX90A-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX90A-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-ISEL-LABEL: global_load_i8_vgpr64_sgpr32:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0:
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX9-4-GENERIC-ISEL-NEXT:    s_nop 1
+; GFX9-4-GENERIC-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0 sc1
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-ISEL-LABEL: global_load_i8_vgpr64_sgpr32:
+; GFX942-ISEL:       ; %bb.0:
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX942-ISEL-NEXT:    s_nop 1
+; GFX942-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX942-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0 sc1
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-ISEL-LABEL: global_load_i8_vgpr64_sgpr32:
+; GFX950-ISEL:       ; %bb.0:
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX950-ISEL-NEXT:    s_nop 1
+; GFX950-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX950-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0 sc1
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-ISEL-LABEL: global_load_i8_vgpr64_sgpr32:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0:
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: global_load_i8_vgpr64_sgpr32:
+; GFX1012-ISEL:       ; %bb.0:
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX1012-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX1012-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-ISEL-LABEL: global_load_i8_vgpr64_sgpr32:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0:
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-ISEL-LABEL: global_load_i8_vgpr64_sgpr32:
+; GFX11-GENERIC-ISEL:       ; %bb.0:
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: global_load_i8_vgpr64_sgpr32:
+; GFX1250-ISEL:       ; %bb.0:
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX1250-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX1250-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SYS
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-ISEL-LABEL: global_load_i8_vgpr64_sgpr32:
+; GFX12-GENERIC-ISEL:       ; %bb.0:
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_alu depctr_va_vcc(0)
+; GFX12-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SYS
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+  %zext.offset = zext i32 %soffset to i64
+  %gep0 = getelementptr inbounds i8, ptr addrspace(1) %vbase, i64 %zext.offset
+  %load = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %gep0, metadata !3)
+  %cast.load = bitcast <4 x i32> %load to <4 x float>
+  ret <4 x float> %cast.load
+}
+
+;; divergent 64-bit base, 32-bit scalar offset, with imm offset
+define <4 x float> @global_load_i8_vgpr64_sgpr32_offset_4095(ptr addrspace(1) %vbase, i32 %soffset) {
+; GFX9-GENERIC-SDAG-LABEL: global_load_i8_vgpr64_sgpr32_offset_4095:
+; GFX9-GENERIC-SDAG:       ; %bb.0:
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX9-GENERIC-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:4095
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-SDAG-LABEL: global_load_i8_vgpr64_sgpr32_offset_4095:
+; GFX906-SDAG:       ; %bb.0:
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX906-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX906-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:4095
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-SDAG-LABEL: global_load_i8_vgpr64_sgpr32_offset_4095:
+; GFX908-SDAG:       ; %bb.0:
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX908-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX908-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:4095
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-SDAG-LABEL: global_load_i8_vgpr64_sgpr32_offset_4095:
+; GFX90A-SDAG:       ; %bb.0:
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX90A-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX90A-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:4095
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-SDAG-LABEL: global_load_i8_vgpr64_sgpr32_offset_4095:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0:
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX9-4-GENERIC-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 0, v[2:3]
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:4095
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-SDAG-LABEL: global_load_i8_vgpr64_sgpr32_offset_4095:
+; GFX942-SDAG:       ; %bb.0:
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX942-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 0, v[2:3]
+; GFX942-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:4095
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-SDAG-LABEL: global_load_i8_vgpr64_sgpr32_offset_4095:
+; GFX950-SDAG:       ; %bb.0:
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX950-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 0, v[2:3]
+; GFX950-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:4095
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-SDAG-LABEL: global_load_i8_vgpr64_sgpr32_offset_4095:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0:
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0x800, v0
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:2047
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: global_load_i8_vgpr64_sgpr32_offset_4095:
+; GFX1012-SDAG:       ; %bb.0:
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX1012-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX1012-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0x800, v0
+; GFX1012-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX1012-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:2047
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-SDAG-LABEL: global_load_i8_vgpr64_sgpr32_offset_4095:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0:
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0x800, v0
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:2047
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-SDAG-LABEL: global_load_i8_vgpr64_sgpr32_offset_4095:
+; GFX11-GENERIC-SDAG:       ; %bb.0:
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:4095
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: global_load_i8_vgpr64_sgpr32_offset_4095:
+; GFX1250-SDAG:       ; %bb.0:
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX1250-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX1250-SDAG-NEXT:    v_add_nc_u64_e32 v[0:1], v[0:1], v[2:3]
+; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:4095
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-SDAG-LABEL: global_load_i8_vgpr64_sgpr32_offset_4095:
+; GFX12-GENERIC-SDAG:       ; %bb.0:
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)
+; GFX12-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:4095
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-GENERIC-ISEL-LABEL: global_load_i8_vgpr64_sgpr32_offset_4095:
+; GFX9-GENERIC-ISEL:       ; %bb.0:
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX9-GENERIC-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:4095
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-ISEL-LABEL: global_load_i8_vgpr64_sgpr32_offset_4095:
+; GFX906-ISEL:       ; %bb.0:
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX906-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX906-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:4095
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-ISEL-LABEL: global_load_i8_vgpr64_sgpr32_offset_4095:
+; GFX908-ISEL:       ; %bb.0:
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX908-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX908-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:4095
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-ISEL-LABEL: global_load_i8_vgpr64_sgpr32_offset_4095:
+; GFX90A-ISEL:       ; %bb.0:
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX90A-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX90A-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:4095
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-ISEL-LABEL: global_load_i8_vgpr64_sgpr32_offset_4095:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0:
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX9-4-GENERIC-ISEL-NEXT:    s_nop 1
+; GFX9-4-GENERIC-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:4095
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-ISEL-LABEL: global_load_i8_vgpr64_sgpr32_offset_4095:
+; GFX942-ISEL:       ; %bb.0:
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX942-ISEL-NEXT:    s_nop 1
+; GFX942-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX942-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:4095
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-ISEL-LABEL: global_load_i8_vgpr64_sgpr32_offset_4095:
+; GFX950-ISEL:       ; %bb.0:
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX950-ISEL-NEXT:    s_nop 1
+; GFX950-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX950-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:4095
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-ISEL-LABEL: global_load_i8_vgpr64_sgpr32_offset_4095:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0:
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfff, v0
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: global_load_i8_vgpr64_sgpr32_offset_4095:
+; GFX1012-ISEL:       ; %bb.0:
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX1012-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX1012-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfff, v0
+; GFX1012-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX1012-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-ISEL-LABEL: global_load_i8_vgpr64_sgpr32_offset_4095:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0:
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfff, v0
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-ISEL-LABEL: global_load_i8_vgpr64_sgpr32_offset_4095:
+; GFX11-GENERIC-ISEL:       ; %bb.0:
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:4095
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: global_load_i8_vgpr64_sgpr32_offset_4095:
+; GFX1250-ISEL:       ; %bb.0:
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX1250-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX1250-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:4095
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-ISEL-LABEL: global_load_i8_vgpr64_sgpr32_offset_4095:
+; GFX12-GENERIC-ISEL:       ; %bb.0:
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_alu depctr_va_vcc(0)
+; GFX12-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:4095
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+  %zext.offset = zext i32 %soffset to i64
+  %gep0 = getelementptr inbounds i8, ptr addrspace(1) %vbase, i64 %zext.offset
+  %gep1 = getelementptr inbounds i8, ptr addrspace(1) %gep0, i64 4095
+  %load = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %gep1, metadata !0)
+  %cast.load = bitcast <4 x i32> %load to <4 x float>
+  ret <4 x float> %cast.load
+}
+
+;;------------------------------------------------------------------------------
+;; Natural addressing shifts with restricted range
+;;------------------------------------------------------------------------------
+
+;; Cannot push the shift into 32-bits, and cannot match.
+define <4 x float> @global_load_f32_natural_addressing(ptr addrspace(1) %sbase, ptr addrspace(1) %voffset.ptr) {
+; GFX9-GENERIC-SDAG-LABEL: global_load_f32_natural_addressing:
+; GFX9-GENERIC-SDAG:       ; %bb.0:
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dword v2, v[2:3], off
+; GFX9-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    v_lshlrev_b64 v[2:3], 2, v[2:3]
+; GFX9-GENERIC-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX9-GENERIC-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, v1, v3, vcc
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-SDAG-LABEL: global_load_f32_natural_addressing:
+; GFX906-SDAG:       ; %bb.0:
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-SDAG-NEXT:    global_load_dword v2, v[2:3], off
+; GFX906-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    v_lshlrev_b64 v[2:3], 2, v[2:3]
+; GFX906-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX906-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, v1, v3, vcc
+; GFX906-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-SDAG-LABEL: global_load_f32_natural_addressing:
+; GFX908-SDAG:       ; %bb.0:
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-SDAG-NEXT:    global_load_dword v2, v[2:3], off
+; GFX908-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    v_lshlrev_b64 v[2:3], 2, v[2:3]
+; GFX908-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX908-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, v1, v3, vcc
+; GFX908-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-SDAG-LABEL: global_load_f32_natural_addressing:
+; GFX90A-SDAG:       ; %bb.0:
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-SDAG-NEXT:    global_load_dword v2, v[2:3], off
+; GFX90A-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-SDAG-NEXT:    v_lshlrev_b64 v[2:3], 2, v[2:3]
+; GFX90A-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX90A-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, v1, v3, vcc
+; GFX90A-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-SDAG-LABEL: global_load_f32_natural_addressing:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0:
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dword v2, v[2:3], off
+; GFX9-4-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[2:3], 2, v[0:1]
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-SDAG-LABEL: global_load_f32_natural_addressing:
+; GFX942-SDAG:       ; %bb.0:
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    global_load_dword v2, v[2:3], off
+; GFX942-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[2:3], 2, v[0:1]
+; GFX942-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-SDAG-LABEL: global_load_f32_natural_addressing:
+; GFX950-SDAG:       ; %bb.0:
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-SDAG-NEXT:    global_load_dword v2, v[2:3], off
+; GFX950-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[2:3], 2, v[0:1]
+; GFX950-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-SDAG-LABEL: global_load_f32_natural_addressing:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0:
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dword v2, v[2:3], off
+; GFX10-1-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    v_lshlrev_b64 v[2:3], 2, v[2:3]
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, v1, v3, vcc_lo
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: global_load_f32_natural_addressing:
+; GFX1012-SDAG:       ; %bb.0:
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    global_load_dword v2, v[2:3], off
+; GFX1012-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    v_lshlrev_b64 v[2:3], 2, v[2:3]
+; GFX1012-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX1012-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, v1, v3, vcc_lo
+; GFX1012-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-SDAG-LABEL: global_load_f32_natural_addressing:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0:
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dword v2, v[2:3], off
+; GFX10-3-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    v_lshlrev_b64 v[2:3], 2, v[2:3]
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, v1, v3, vcc_lo
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-SDAG-LABEL: global_load_f32_natural_addressing:
+; GFX11-GENERIC-SDAG:       ; %bb.0:
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b32 v2, v[2:3], off
+; GFX11-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX11-GENERIC-SDAG-NEXT:    v_lshlrev_b64 v[2:3], 2, v[2:3]
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, v1, v3, vcc_lo
+; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: global_load_f32_natural_addressing:
+; GFX1250-SDAG:       ; %bb.0:
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    global_load_b32 v2, v[2:3], off
+; GFX1250-SDAG-NEXT:    s_wait_xcnt 0x0
+; GFX1250-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX1250-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[2:3], 2, v[0:1]
+; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-SDAG-LABEL: global_load_f32_natural_addressing:
+; GFX12-GENERIC-SDAG:       ; %bb.0:
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b32 v2, v[2:3], off
+; GFX12-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX12-GENERIC-SDAG-NEXT:    v_lshlrev_b64_e32 v[2:3], 2, v[2:3]
+; GFX12-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)
+; GFX12-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_2)
+; GFX12-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, v1, v3, vcc_lo
+; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SE
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-GENERIC-ISEL-LABEL: global_load_f32_natural_addressing:
+; GFX9-GENERIC-ISEL:       ; %bb.0:
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dword v2, v[2:3], off
+; GFX9-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v3, 0
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    v_lshlrev_b64 v[2:3], 2, v[2:3]
+; GFX9-GENERIC-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX9-GENERIC-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, v1, v3, vcc
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-ISEL-LABEL: global_load_f32_natural_addressing:
+; GFX906-ISEL:       ; %bb.0:
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-ISEL-NEXT:    global_load_dword v2, v[2:3], off
+; GFX906-ISEL-NEXT:    v_mov_b32_e32 v3, 0
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    v_lshlrev_b64 v[2:3], 2, v[2:3]
+; GFX906-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX906-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, v1, v3, vcc
+; GFX906-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-ISEL-LABEL: global_load_f32_natural_addressing:
+; GFX908-ISEL:       ; %bb.0:
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-ISEL-NEXT:    global_load_dword v2, v[2:3], off
+; GFX908-ISEL-NEXT:    v_mov_b32_e32 v3, 0
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    v_lshlrev_b64 v[2:3], 2, v[2:3]
+; GFX908-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX908-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, v1, v3, vcc
+; GFX908-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-ISEL-LABEL: global_load_f32_natural_addressing:
+; GFX90A-ISEL:       ; %bb.0:
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-ISEL-NEXT:    global_load_dword v2, v[2:3], off
+; GFX90A-ISEL-NEXT:    v_mov_b32_e32 v3, 0
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-ISEL-NEXT:    v_lshlrev_b64 v[2:3], 2, v[2:3]
+; GFX90A-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX90A-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, v1, v3, vcc
+; GFX90A-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-ISEL-LABEL: global_load_f32_natural_addressing:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0:
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dword v2, v[2:3], off
+; GFX9-4-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v3, 0
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    v_lshl_add_u64 v[0:1], v[2:3], 2, v[0:1]
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-ISEL-LABEL: global_load_f32_natural_addressing:
+; GFX942-ISEL:       ; %bb.0:
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    global_load_dword v2, v[2:3], off
+; GFX942-ISEL-NEXT:    v_mov_b32_e32 v3, 0
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    v_lshl_add_u64 v[0:1], v[2:3], 2, v[0:1]
+; GFX942-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-ISEL-LABEL: global_load_f32_natural_addressing:
+; GFX950-ISEL:       ; %bb.0:
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-ISEL-NEXT:    global_load_dword v2, v[2:3], off
+; GFX950-ISEL-NEXT:    v_mov_b32_e32 v3, 0
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    v_lshl_add_u64 v[0:1], v[2:3], 2, v[0:1]
+; GFX950-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-ISEL-LABEL: global_load_f32_natural_addressing:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0:
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dword v2, v[2:3], off
+; GFX10-1-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v3, 0
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    v_lshlrev_b64 v[2:3], 2, v[2:3]
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, v1, v3, vcc_lo
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: global_load_f32_natural_addressing:
+; GFX1012-ISEL:       ; %bb.0:
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    global_load_dword v2, v[2:3], off
+; GFX1012-ISEL-NEXT:    v_mov_b32_e32 v3, 0
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    v_lshlrev_b64 v[2:3], 2, v[2:3]
+; GFX1012-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX1012-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, v1, v3, vcc_lo
+; GFX1012-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-ISEL-LABEL: global_load_f32_natural_addressing:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0:
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dword v2, v[2:3], off
+; GFX10-3-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v3, 0
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    v_lshlrev_b64 v[2:3], 2, v[2:3]
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, v1, v3, vcc_lo
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-ISEL-LABEL: global_load_f32_natural_addressing:
+; GFX11-GENERIC-ISEL:       ; %bb.0:
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b32 v2, v[2:3], off
+; GFX11-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v3, 0
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX11-GENERIC-ISEL-NEXT:    v_lshlrev_b64 v[2:3], 2, v[2:3]
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, v1, v3, vcc_lo
+; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: global_load_f32_natural_addressing:
+; GFX1250-ISEL:       ; %bb.0:
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    global_load_b32 v2, v[2:3], off
+; GFX1250-ISEL-NEXT:    s_wait_xcnt 0x0
+; GFX1250-ISEL-NEXT:    v_mov_b32_e32 v3, 0
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX1250-ISEL-NEXT:    v_lshl_add_u64 v[0:1], v[2:3], 2, v[0:1]
+; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-ISEL-LABEL: global_load_f32_natural_addressing:
+; GFX12-GENERIC-ISEL:       ; %bb.0:
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b32 v2, v[2:3], off
+; GFX12-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v3, 0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX12-GENERIC-ISEL-NEXT:    v_lshlrev_b64_e32 v[2:3], 2, v[2:3]
+; GFX12-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_alu depctr_va_vcc(0)
+; GFX12-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_2)
+; GFX12-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, v1, v3, vcc_lo
+; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SE
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+  %voffset = load i32, ptr addrspace(1) %voffset.ptr
+  %zext.offset = zext i32 %voffset to i64
+  %gep = getelementptr inbounds float, ptr addrspace(1) %sbase, i64 %zext.offset
+  %load = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %gep, metadata !1)
+  %cast.load = bitcast <4 x i32> %load to <4 x float>
+  ret <4 x float> %cast.load
+}
+
+;; Cannot push the shift into 32-bits, with an immediate offset.
+define <4 x float> @global_load_f32_natural_addressing_immoffset(ptr addrspace(1) %sbase, ptr addrspace(1) %voffset.ptr) {
+; GFX9-GENERIC-SDAG-LABEL: global_load_f32_natural_addressing_immoffset:
+; GFX9-GENERIC-SDAG:       ; %bb.0:
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dword v2, v[2:3], off
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX9-GENERIC-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:128 glc
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-SDAG-LABEL: global_load_f32_natural_addressing_immoffset:
+; GFX906-SDAG:       ; %bb.0:
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-SDAG-NEXT:    global_load_dword v2, v[2:3], off
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX906-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX906-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:128 glc
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-SDAG-LABEL: global_load_f32_natural_addressing_immoffset:
+; GFX908-SDAG:       ; %bb.0:
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-SDAG-NEXT:    global_load_dword v2, v[2:3], off
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX908-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX908-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:128 glc
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-SDAG-LABEL: global_load_f32_natural_addressing_immoffset:
+; GFX90A-SDAG:       ; %bb.0:
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-SDAG-NEXT:    global_load_dword v2, v[2:3], off
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX90A-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX90A-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:128 glc
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-SDAG-LABEL: global_load_f32_natural_addressing_immoffset:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0:
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dword v2, v[2:3], off
+; GFX9-4-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 0, v[2:3]
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:128 sc1
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-SDAG-LABEL: global_load_f32_natural_addressing_immoffset:
+; GFX942-SDAG:       ; %bb.0:
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    global_load_dword v2, v[2:3], off
+; GFX942-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 0, v[2:3]
+; GFX942-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:128 sc1
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-SDAG-LABEL: global_load_f32_natural_addressing_immoffset:
+; GFX950-SDAG:       ; %bb.0:
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-SDAG-NEXT:    global_load_dword v2, v[2:3], off
+; GFX950-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 0, v[2:3]
+; GFX950-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:128 sc1
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-SDAG-LABEL: global_load_f32_natural_addressing_immoffset:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0:
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dword v2, v[2:3], off
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:128 glc dlc
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: global_load_f32_natural_addressing_immoffset:
+; GFX1012-SDAG:       ; %bb.0:
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    global_load_dword v2, v[2:3], off
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX1012-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX1012-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:128 glc dlc
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-SDAG-LABEL: global_load_f32_natural_addressing_immoffset:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0:
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dword v2, v[2:3], off
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:128 glc dlc
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-SDAG-LABEL: global_load_f32_natural_addressing_immoffset:
+; GFX11-GENERIC-SDAG:       ; %bb.0:
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b32 v2, v[2:3], off
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:128 glc
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: global_load_f32_natural_addressing_immoffset:
+; GFX1250-SDAG:       ; %bb.0:
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    global_load_b32 v2, v[2:3], off
+; GFX1250-SDAG-NEXT:    s_wait_xcnt 0x0
+; GFX1250-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX1250-SDAG-NEXT:    v_add_nc_u64_e32 v[0:1], v[0:1], v[2:3]
+; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:128 scope:SCOPE_DEV
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-SDAG-LABEL: global_load_f32_natural_addressing_immoffset:
+; GFX12-GENERIC-SDAG:       ; %bb.0:
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b32 v2, v[2:3], off
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)
+; GFX12-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:128 scope:SCOPE_DEV
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-GENERIC-ISEL-LABEL: global_load_f32_natural_addressing_immoffset:
+; GFX9-GENERIC-ISEL:       ; %bb.0:
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dword v2, v[2:3], off
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX9-GENERIC-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:128 glc
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-ISEL-LABEL: global_load_f32_natural_addressing_immoffset:
+; GFX906-ISEL:       ; %bb.0:
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-ISEL-NEXT:    global_load_dword v2, v[2:3], off
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX906-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX906-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:128 glc
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-ISEL-LABEL: global_load_f32_natural_addressing_immoffset:
+; GFX908-ISEL:       ; %bb.0:
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-ISEL-NEXT:    global_load_dword v2, v[2:3], off
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX908-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX908-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:128 glc
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-ISEL-LABEL: global_load_f32_natural_addressing_immoffset:
+; GFX90A-ISEL:       ; %bb.0:
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-ISEL-NEXT:    global_load_dword v2, v[2:3], off
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX90A-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX90A-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:128 glc
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-ISEL-LABEL: global_load_f32_natural_addressing_immoffset:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0:
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dword v2, v[2:3], off
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX9-4-GENERIC-ISEL-NEXT:    s_nop 1
+; GFX9-4-GENERIC-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:128 sc1
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-ISEL-LABEL: global_load_f32_natural_addressing_immoffset:
+; GFX942-ISEL:       ; %bb.0:
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    global_load_dword v2, v[2:3], off
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX942-ISEL-NEXT:    s_nop 1
+; GFX942-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX942-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:128 sc1
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-ISEL-LABEL: global_load_f32_natural_addressing_immoffset:
+; GFX950-ISEL:       ; %bb.0:
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-ISEL-NEXT:    global_load_dword v2, v[2:3], off
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX950-ISEL-NEXT:    s_nop 1
+; GFX950-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX950-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:128 sc1
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-ISEL-LABEL: global_load_f32_natural_addressing_immoffset:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0:
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dword v2, v[2:3], off
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:128 glc dlc
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: global_load_f32_natural_addressing_immoffset:
+; GFX1012-ISEL:       ; %bb.0:
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    global_load_dword v2, v[2:3], off
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX1012-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX1012-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:128 glc dlc
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-ISEL-LABEL: global_load_f32_natural_addressing_immoffset:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0:
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dword v2, v[2:3], off
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:128 glc dlc
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-ISEL-LABEL: global_load_f32_natural_addressing_immoffset:
+; GFX11-GENERIC-ISEL:       ; %bb.0:
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b32 v2, v[2:3], off
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:128 glc
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: global_load_f32_natural_addressing_immoffset:
+; GFX1250-ISEL:       ; %bb.0:
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    global_load_b32 v2, v[2:3], off
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX1250-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX1250-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:128 scope:SCOPE_DEV
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-ISEL-LABEL: global_load_f32_natural_addressing_immoffset:
+; GFX12-GENERIC-ISEL:       ; %bb.0:
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b32 v2, v[2:3], off
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_alu depctr_va_vcc(0)
+; GFX12-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:128 scope:SCOPE_DEV
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+  %voffset = load i32, ptr addrspace(1) %voffset.ptr
+  %zext.offset = zext i32 %voffset to i64
+  %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 %zext.offset
+  %gep1 = getelementptr inbounds i8, ptr addrspace(1) %gep0, i64 128
+  %load = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %gep1, metadata !2)
+  %cast.load = bitcast <4 x i32> %load to <4 x float>
+  ret <4 x float> %cast.load
+}
+
+;; Range is sufficiently restricted to push the shift into 32-bits.
+define <4 x float> @global_load_f32_zext_vgpr_range(ptr addrspace(1) %sbase, ptr addrspace(1) %voffset.ptr) {
+; GFX9-GENERIC-SDAG-LABEL: global_load_f32_zext_vgpr_range:
+; GFX9-GENERIC-SDAG:       ; %bb.0:
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dword v2, v[2:3], off
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    v_lshlrev_b32_e32 v2, 2, v2
+; GFX9-GENERIC-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX9-GENERIC-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-SDAG-LABEL: global_load_f32_zext_vgpr_range:
+; GFX906-SDAG:       ; %bb.0:
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-SDAG-NEXT:    global_load_dword v2, v[2:3], off
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    v_lshlrev_b32_e32 v2, 2, v2
+; GFX906-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX906-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX906-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-SDAG-LABEL: global_load_f32_zext_vgpr_range:
+; GFX908-SDAG:       ; %bb.0:
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-SDAG-NEXT:    global_load_dword v2, v[2:3], off
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    v_lshlrev_b32_e32 v2, 2, v2
+; GFX908-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX908-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX908-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-SDAG-LABEL: global_load_f32_zext_vgpr_range:
+; GFX90A-SDAG:       ; %bb.0:
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-SDAG-NEXT:    global_load_dword v2, v[2:3], off
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-SDAG-NEXT:    v_lshlrev_b32_e32 v2, 2, v2
+; GFX90A-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX90A-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX90A-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-SDAG-LABEL: global_load_f32_zext_vgpr_range:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0:
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dword v2, v[2:3], off
+; GFX9-4-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    v_lshlrev_b32_e32 v2, 2, v2
+; GFX9-4-GENERIC-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 0, v[2:3]
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0 sc1
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-SDAG-LABEL: global_load_f32_zext_vgpr_range:
+; GFX942-SDAG:       ; %bb.0:
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    global_load_dword v2, v[2:3], off
+; GFX942-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    v_lshlrev_b32_e32 v2, 2, v2
+; GFX942-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 0, v[2:3]
+; GFX942-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0 sc1
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-SDAG-LABEL: global_load_f32_zext_vgpr_range:
+; GFX950-SDAG:       ; %bb.0:
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-SDAG-NEXT:    global_load_dword v2, v[2:3], off
+; GFX950-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    v_lshlrev_b32_e32 v2, 2, v2
+; GFX950-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 0, v[2:3]
+; GFX950-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0 sc1
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-SDAG-LABEL: global_load_f32_zext_vgpr_range:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0:
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dword v2, v[2:3], off
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    v_lshlrev_b32_e32 v2, 2, v2
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: global_load_f32_zext_vgpr_range:
+; GFX1012-SDAG:       ; %bb.0:
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    global_load_dword v2, v[2:3], off
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    v_lshlrev_b32_e32 v2, 2, v2
+; GFX1012-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX1012-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX1012-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-SDAG-LABEL: global_load_f32_zext_vgpr_range:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0:
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dword v2, v[2:3], off
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    v_lshlrev_b32_e32 v2, 2, v2
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-SDAG-LABEL: global_load_f32_zext_vgpr_range:
+; GFX11-GENERIC-SDAG:       ; %bb.0:
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b32 v2, v[2:3], off
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    v_lshlrev_b32_e32 v2, 2, v2
+; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: global_load_f32_zext_vgpr_range:
+; GFX1250-SDAG:       ; %bb.0:
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    global_load_b32 v2, v[2:3], off
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_xcnt 0x0
+; GFX1250-SDAG-NEXT:    v_dual_mov_b32 v3, 0 :: v_dual_lshlrev_b32 v2, 2, v2
+; GFX1250-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX1250-SDAG-NEXT:    v_add_nc_u64_e32 v[0:1], v[0:1], v[2:3]
+; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SYS
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-SDAG-LABEL: global_load_f32_zext_vgpr_range:
+; GFX12-GENERIC-SDAG:       ; %bb.0:
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b32 v2, v[2:3], off
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    v_lshlrev_b32_e32 v2, 2, v2
+; GFX12-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX12-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)
+; GFX12-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SYS
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-GENERIC-ISEL-LABEL: global_load_f32_zext_vgpr_range:
+; GFX9-GENERIC-ISEL:       ; %bb.0:
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dword v2, v[2:3], off
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    v_lshlrev_b32_e32 v2, 2, v2
+; GFX9-GENERIC-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX9-GENERIC-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-ISEL-LABEL: global_load_f32_zext_vgpr_range:
+; GFX906-ISEL:       ; %bb.0:
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-ISEL-NEXT:    global_load_dword v2, v[2:3], off
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    v_lshlrev_b32_e32 v2, 2, v2
+; GFX906-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX906-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX906-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-ISEL-LABEL: global_load_f32_zext_vgpr_range:
+; GFX908-ISEL:       ; %bb.0:
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-ISEL-NEXT:    global_load_dword v2, v[2:3], off
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    v_lshlrev_b32_e32 v2, 2, v2
+; GFX908-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX908-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX908-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-ISEL-LABEL: global_load_f32_zext_vgpr_range:
+; GFX90A-ISEL:       ; %bb.0:
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-ISEL-NEXT:    global_load_dword v2, v[2:3], off
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-ISEL-NEXT:    v_lshlrev_b32_e32 v2, 2, v2
+; GFX90A-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX90A-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX90A-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-ISEL-LABEL: global_load_f32_zext_vgpr_range:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0:
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dword v2, v[2:3], off
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    v_lshlrev_b32_e32 v2, 2, v2
+; GFX9-4-GENERIC-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX9-4-GENERIC-ISEL-NEXT:    s_nop 1
+; GFX9-4-GENERIC-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0 sc1
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-ISEL-LABEL: global_load_f32_zext_vgpr_range:
+; GFX942-ISEL:       ; %bb.0:
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    global_load_dword v2, v[2:3], off
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    v_lshlrev_b32_e32 v2, 2, v2
+; GFX942-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX942-ISEL-NEXT:    s_nop 1
+; GFX942-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX942-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0 sc1
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-ISEL-LABEL: global_load_f32_zext_vgpr_range:
+; GFX950-ISEL:       ; %bb.0:
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-ISEL-NEXT:    global_load_dword v2, v[2:3], off
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    v_lshlrev_b32_e32 v2, 2, v2
+; GFX950-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX950-ISEL-NEXT:    s_nop 1
+; GFX950-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX950-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0 sc1
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-ISEL-LABEL: global_load_f32_zext_vgpr_range:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0:
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dword v2, v[2:3], off
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    v_lshlrev_b32_e32 v2, 2, v2
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: global_load_f32_zext_vgpr_range:
+; GFX1012-ISEL:       ; %bb.0:
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    global_load_dword v2, v[2:3], off
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    v_lshlrev_b32_e32 v2, 2, v2
+; GFX1012-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX1012-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX1012-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-ISEL-LABEL: global_load_f32_zext_vgpr_range:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0:
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dword v2, v[2:3], off
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    v_lshlrev_b32_e32 v2, 2, v2
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-ISEL-LABEL: global_load_f32_zext_vgpr_range:
+; GFX11-GENERIC-ISEL:       ; %bb.0:
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b32 v2, v[2:3], off
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    v_lshlrev_b32_e32 v2, 2, v2
+; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: global_load_f32_zext_vgpr_range:
+; GFX1250-ISEL:       ; %bb.0:
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    global_load_b32 v2, v[2:3], off
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_xcnt 0x0
+; GFX1250-ISEL-NEXT:    v_lshlrev_b32_e32 v2, 2, v2
+; GFX1250-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX1250-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX1250-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SYS
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-ISEL-LABEL: global_load_f32_zext_vgpr_range:
+; GFX12-GENERIC-ISEL:       ; %bb.0:
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b32 v2, v[2:3], off
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    v_lshlrev_b32_e32 v2, 2, v2
+; GFX12-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX12-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_alu depctr_va_vcc(0)
+; GFX12-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SYS
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+  %voffset = load i32, ptr addrspace(1) %voffset.ptr, !range !4, !noundef !{}
+  %zext.offset = zext i32 %voffset to i64
+  %gep = getelementptr inbounds float, ptr addrspace(1) %sbase, i64 %zext.offset
+  %load = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %gep, metadata !3)
+  %cast.load = bitcast <4 x i32> %load to <4 x float>
+  ret <4 x float> %cast.load
+}
+
+;; Range is sufficiently restricted to push the shift into 32-bits, with an imm offset
+define <4 x float> @global_load_f32_zext_vgpr_range_imm_offset(ptr addrspace(1) %sbase, ptr addrspace(1) %voffset.ptr) {
+; GFX9-GENERIC-SDAG-LABEL: global_load_f32_zext_vgpr_range_imm_offset:
+; GFX9-GENERIC-SDAG:       ; %bb.0:
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dword v2, v[2:3], off
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    v_lshlrev_b32_e32 v2, 2, v2
+; GFX9-GENERIC-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX9-GENERIC-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:400
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-SDAG-LABEL: global_load_f32_zext_vgpr_range_imm_offset:
+; GFX906-SDAG:       ; %bb.0:
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-SDAG-NEXT:    global_load_dword v2, v[2:3], off
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    v_lshlrev_b32_e32 v2, 2, v2
+; GFX906-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX906-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX906-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:400
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-SDAG-LABEL: global_load_f32_zext_vgpr_range_imm_offset:
+; GFX908-SDAG:       ; %bb.0:
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-SDAG-NEXT:    global_load_dword v2, v[2:3], off
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    v_lshlrev_b32_e32 v2, 2, v2
+; GFX908-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX908-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX908-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:400
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-SDAG-LABEL: global_load_f32_zext_vgpr_range_imm_offset:
+; GFX90A-SDAG:       ; %bb.0:
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-SDAG-NEXT:    global_load_dword v2, v[2:3], off
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-SDAG-NEXT:    v_lshlrev_b32_e32 v2, 2, v2
+; GFX90A-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX90A-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX90A-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:400
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-SDAG-LABEL: global_load_f32_zext_vgpr_range_imm_offset:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0:
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dword v2, v[2:3], off
+; GFX9-4-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    v_lshlrev_b32_e32 v2, 2, v2
+; GFX9-4-GENERIC-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 0, v[2:3]
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:400
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-SDAG-LABEL: global_load_f32_zext_vgpr_range_imm_offset:
+; GFX942-SDAG:       ; %bb.0:
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    global_load_dword v2, v[2:3], off
+; GFX942-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    v_lshlrev_b32_e32 v2, 2, v2
+; GFX942-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 0, v[2:3]
+; GFX942-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:400
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-SDAG-LABEL: global_load_f32_zext_vgpr_range_imm_offset:
+; GFX950-SDAG:       ; %bb.0:
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-SDAG-NEXT:    global_load_dword v2, v[2:3], off
+; GFX950-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    v_lshlrev_b32_e32 v2, 2, v2
+; GFX950-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 0, v[2:3]
+; GFX950-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:400
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-SDAG-LABEL: global_load_f32_zext_vgpr_range_imm_offset:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0:
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dword v2, v[2:3], off
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    v_lshlrev_b32_e32 v2, 2, v2
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:400
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: global_load_f32_zext_vgpr_range_imm_offset:
+; GFX1012-SDAG:       ; %bb.0:
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    global_load_dword v2, v[2:3], off
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    v_lshlrev_b32_e32 v2, 2, v2
+; GFX1012-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX1012-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX1012-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:400
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-SDAG-LABEL: global_load_f32_zext_vgpr_range_imm_offset:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0:
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dword v2, v[2:3], off
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    v_lshlrev_b32_e32 v2, 2, v2
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:400
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-SDAG-LABEL: global_load_f32_zext_vgpr_range_imm_offset:
+; GFX11-GENERIC-SDAG:       ; %bb.0:
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b32 v2, v[2:3], off
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    v_lshlrev_b32_e32 v2, 2, v2
+; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:400
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: global_load_f32_zext_vgpr_range_imm_offset:
+; GFX1250-SDAG:       ; %bb.0:
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    global_load_b32 v2, v[2:3], off
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_xcnt 0x0
+; GFX1250-SDAG-NEXT:    v_dual_mov_b32 v3, 0 :: v_dual_lshlrev_b32 v2, 2, v2
+; GFX1250-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX1250-SDAG-NEXT:    v_add_nc_u64_e32 v[0:1], v[0:1], v[2:3]
+; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:400
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-SDAG-LABEL: global_load_f32_zext_vgpr_range_imm_offset:
+; GFX12-GENERIC-SDAG:       ; %bb.0:
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b32 v2, v[2:3], off
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    v_lshlrev_b32_e32 v2, 2, v2
+; GFX12-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX12-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)
+; GFX12-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:400
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-GENERIC-ISEL-LABEL: global_load_f32_zext_vgpr_range_imm_offset:
+; GFX9-GENERIC-ISEL:       ; %bb.0:
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dword v2, v[2:3], off
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    v_lshlrev_b32_e32 v2, 2, v2
+; GFX9-GENERIC-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX9-GENERIC-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:400
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-ISEL-LABEL: global_load_f32_zext_vgpr_range_imm_offset:
+; GFX906-ISEL:       ; %bb.0:
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-ISEL-NEXT:    global_load_dword v2, v[2:3], off
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    v_lshlrev_b32_e32 v2, 2, v2
+; GFX906-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX906-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX906-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:400
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-ISEL-LABEL: global_load_f32_zext_vgpr_range_imm_offset:
+; GFX908-ISEL:       ; %bb.0:
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-ISEL-NEXT:    global_load_dword v2, v[2:3], off
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    v_lshlrev_b32_e32 v2, 2, v2
+; GFX908-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX908-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX908-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:400
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-ISEL-LABEL: global_load_f32_zext_vgpr_range_imm_offset:
+; GFX90A-ISEL:       ; %bb.0:
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-ISEL-NEXT:    global_load_dword v2, v[2:3], off
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-ISEL-NEXT:    v_lshlrev_b32_e32 v2, 2, v2
+; GFX90A-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX90A-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX90A-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:400
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-ISEL-LABEL: global_load_f32_zext_vgpr_range_imm_offset:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0:
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dword v2, v[2:3], off
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    v_lshlrev_b32_e32 v2, 2, v2
+; GFX9-4-GENERIC-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX9-4-GENERIC-ISEL-NEXT:    s_nop 1
+; GFX9-4-GENERIC-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:400
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-ISEL-LABEL: global_load_f32_zext_vgpr_range_imm_offset:
+; GFX942-ISEL:       ; %bb.0:
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    global_load_dword v2, v[2:3], off
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    v_lshlrev_b32_e32 v2, 2, v2
+; GFX942-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX942-ISEL-NEXT:    s_nop 1
+; GFX942-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX942-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:400
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-ISEL-LABEL: global_load_f32_zext_vgpr_range_imm_offset:
+; GFX950-ISEL:       ; %bb.0:
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-ISEL-NEXT:    global_load_dword v2, v[2:3], off
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    v_lshlrev_b32_e32 v2, 2, v2
+; GFX950-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX950-ISEL-NEXT:    s_nop 1
+; GFX950-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX950-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:400
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-ISEL-LABEL: global_load_f32_zext_vgpr_range_imm_offset:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0:
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dword v2, v[2:3], off
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    v_lshlrev_b32_e32 v2, 2, v2
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:400
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: global_load_f32_zext_vgpr_range_imm_offset:
+; GFX1012-ISEL:       ; %bb.0:
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    global_load_dword v2, v[2:3], off
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    v_lshlrev_b32_e32 v2, 2, v2
+; GFX1012-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX1012-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX1012-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:400
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-ISEL-LABEL: global_load_f32_zext_vgpr_range_imm_offset:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0:
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dword v2, v[2:3], off
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    v_lshlrev_b32_e32 v2, 2, v2
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:400
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-ISEL-LABEL: global_load_f32_zext_vgpr_range_imm_offset:
+; GFX11-GENERIC-ISEL:       ; %bb.0:
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b32 v2, v[2:3], off
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    v_lshlrev_b32_e32 v2, 2, v2
+; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:400
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: global_load_f32_zext_vgpr_range_imm_offset:
+; GFX1250-ISEL:       ; %bb.0:
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    global_load_b32 v2, v[2:3], off
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_xcnt 0x0
+; GFX1250-ISEL-NEXT:    v_lshlrev_b32_e32 v2, 2, v2
+; GFX1250-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX1250-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX1250-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:400
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-ISEL-LABEL: global_load_f32_zext_vgpr_range_imm_offset:
+; GFX12-GENERIC-ISEL:       ; %bb.0:
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b32 v2, v[2:3], off
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    v_lshlrev_b32_e32 v2, 2, v2
+; GFX12-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX12-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_alu depctr_va_vcc(0)
+; GFX12-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:400
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+  %voffset = load i32, ptr addrspace(1) %voffset.ptr, !range !4, !noundef !{}
+  %zext.offset = zext i32 %voffset to i64
+  %gep0 = getelementptr inbounds float, ptr addrspace(1) %sbase, i64 %zext.offset
+  %gep1 = getelementptr inbounds float, ptr addrspace(1) %gep0, i64 100
+  %load = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %gep1, metadata !0)
+  %cast.load = bitcast <4 x i32> %load to <4 x float>
+  ret <4 x float> %cast.load
+}
+
+;; Range is 1 beyond the limit where we can move the shift into 32-bits.
+define <4 x float> @global_load_f32_zext_vgpr_range_too_large(ptr addrspace(1) %sbase, ptr addrspace(1) %voffset.ptr) {
+; GFX9-GENERIC-SDAG-LABEL: global_load_f32_zext_vgpr_range_too_large:
+; GFX9-GENERIC-SDAG:       ; %bb.0:
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dword v2, v[2:3], off
+; GFX9-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    v_lshlrev_b64 v[2:3], 2, v[2:3]
+; GFX9-GENERIC-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX9-GENERIC-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, v1, v3, vcc
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-SDAG-LABEL: global_load_f32_zext_vgpr_range_too_large:
+; GFX906-SDAG:       ; %bb.0:
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-SDAG-NEXT:    global_load_dword v2, v[2:3], off
+; GFX906-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    v_lshlrev_b64 v[2:3], 2, v[2:3]
+; GFX906-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX906-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, v1, v3, vcc
+; GFX906-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-SDAG-LABEL: global_load_f32_zext_vgpr_range_too_large:
+; GFX908-SDAG:       ; %bb.0:
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-SDAG-NEXT:    global_load_dword v2, v[2:3], off
+; GFX908-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    v_lshlrev_b64 v[2:3], 2, v[2:3]
+; GFX908-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX908-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, v1, v3, vcc
+; GFX908-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-SDAG-LABEL: global_load_f32_zext_vgpr_range_too_large:
+; GFX90A-SDAG:       ; %bb.0:
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-SDAG-NEXT:    global_load_dword v2, v[2:3], off
+; GFX90A-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-SDAG-NEXT:    v_lshlrev_b64 v[2:3], 2, v[2:3]
+; GFX90A-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX90A-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, v1, v3, vcc
+; GFX90A-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-SDAG-LABEL: global_load_f32_zext_vgpr_range_too_large:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0:
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dword v2, v[2:3], off
+; GFX9-4-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[2:3], 2, v[0:1]
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-SDAG-LABEL: global_load_f32_zext_vgpr_range_too_large:
+; GFX942-SDAG:       ; %bb.0:
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    global_load_dword v2, v[2:3], off
+; GFX942-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[2:3], 2, v[0:1]
+; GFX942-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-SDAG-LABEL: global_load_f32_zext_vgpr_range_too_large:
+; GFX950-SDAG:       ; %bb.0:
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-SDAG-NEXT:    global_load_dword v2, v[2:3], off
+; GFX950-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[2:3], 2, v[0:1]
+; GFX950-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-SDAG-LABEL: global_load_f32_zext_vgpr_range_too_large:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0:
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dword v2, v[2:3], off
+; GFX10-1-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    v_lshlrev_b64 v[2:3], 2, v[2:3]
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, v1, v3, vcc_lo
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: global_load_f32_zext_vgpr_range_too_large:
+; GFX1012-SDAG:       ; %bb.0:
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    global_load_dword v2, v[2:3], off
+; GFX1012-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    v_lshlrev_b64 v[2:3], 2, v[2:3]
+; GFX1012-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX1012-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, v1, v3, vcc_lo
+; GFX1012-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-SDAG-LABEL: global_load_f32_zext_vgpr_range_too_large:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0:
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dword v2, v[2:3], off
+; GFX10-3-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    v_lshlrev_b64 v[2:3], 2, v[2:3]
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, v1, v3, vcc_lo
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-SDAG-LABEL: global_load_f32_zext_vgpr_range_too_large:
+; GFX11-GENERIC-SDAG:       ; %bb.0:
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b32 v2, v[2:3], off
+; GFX11-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX11-GENERIC-SDAG-NEXT:    v_lshlrev_b64 v[2:3], 2, v[2:3]
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, v1, v3, vcc_lo
+; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: global_load_f32_zext_vgpr_range_too_large:
+; GFX1250-SDAG:       ; %bb.0:
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    global_load_b32 v2, v[2:3], off
+; GFX1250-SDAG-NEXT:    s_wait_xcnt 0x0
+; GFX1250-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX1250-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[2:3], 2, v[0:1]
+; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-SDAG-LABEL: global_load_f32_zext_vgpr_range_too_large:
+; GFX12-GENERIC-SDAG:       ; %bb.0:
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b32 v2, v[2:3], off
+; GFX12-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX12-GENERIC-SDAG-NEXT:    v_lshlrev_b64_e32 v[2:3], 2, v[2:3]
+; GFX12-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)
+; GFX12-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_2)
+; GFX12-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, v1, v3, vcc_lo
+; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SE
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-GENERIC-ISEL-LABEL: global_load_f32_zext_vgpr_range_too_large:
+; GFX9-GENERIC-ISEL:       ; %bb.0:
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dword v2, v[2:3], off
+; GFX9-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v3, 0
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    v_lshlrev_b64 v[2:3], 2, v[2:3]
+; GFX9-GENERIC-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX9-GENERIC-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, v1, v3, vcc
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-ISEL-LABEL: global_load_f32_zext_vgpr_range_too_large:
+; GFX906-ISEL:       ; %bb.0:
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-ISEL-NEXT:    global_load_dword v2, v[2:3], off
+; GFX906-ISEL-NEXT:    v_mov_b32_e32 v3, 0
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    v_lshlrev_b64 v[2:3], 2, v[2:3]
+; GFX906-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX906-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, v1, v3, vcc
+; GFX906-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-ISEL-LABEL: global_load_f32_zext_vgpr_range_too_large:
+; GFX908-ISEL:       ; %bb.0:
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-ISEL-NEXT:    global_load_dword v2, v[2:3], off
+; GFX908-ISEL-NEXT:    v_mov_b32_e32 v3, 0
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    v_lshlrev_b64 v[2:3], 2, v[2:3]
+; GFX908-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX908-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, v1, v3, vcc
+; GFX908-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-ISEL-LABEL: global_load_f32_zext_vgpr_range_too_large:
+; GFX90A-ISEL:       ; %bb.0:
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-ISEL-NEXT:    global_load_dword v2, v[2:3], off
+; GFX90A-ISEL-NEXT:    v_mov_b32_e32 v3, 0
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-ISEL-NEXT:    v_lshlrev_b64 v[2:3], 2, v[2:3]
+; GFX90A-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX90A-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, v1, v3, vcc
+; GFX90A-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-ISEL-LABEL: global_load_f32_zext_vgpr_range_too_large:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0:
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dword v2, v[2:3], off
+; GFX9-4-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v3, 0
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    v_lshl_add_u64 v[0:1], v[2:3], 2, v[0:1]
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-ISEL-LABEL: global_load_f32_zext_vgpr_range_too_large:
+; GFX942-ISEL:       ; %bb.0:
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    global_load_dword v2, v[2:3], off
+; GFX942-ISEL-NEXT:    v_mov_b32_e32 v3, 0
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    v_lshl_add_u64 v[0:1], v[2:3], 2, v[0:1]
+; GFX942-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-ISEL-LABEL: global_load_f32_zext_vgpr_range_too_large:
+; GFX950-ISEL:       ; %bb.0:
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-ISEL-NEXT:    global_load_dword v2, v[2:3], off
+; GFX950-ISEL-NEXT:    v_mov_b32_e32 v3, 0
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    v_lshl_add_u64 v[0:1], v[2:3], 2, v[0:1]
+; GFX950-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-ISEL-LABEL: global_load_f32_zext_vgpr_range_too_large:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0:
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dword v2, v[2:3], off
+; GFX10-1-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v3, 0
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    v_lshlrev_b64 v[2:3], 2, v[2:3]
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, v1, v3, vcc_lo
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: global_load_f32_zext_vgpr_range_too_large:
+; GFX1012-ISEL:       ; %bb.0:
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    global_load_dword v2, v[2:3], off
+; GFX1012-ISEL-NEXT:    v_mov_b32_e32 v3, 0
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    v_lshlrev_b64 v[2:3], 2, v[2:3]
+; GFX1012-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX1012-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, v1, v3, vcc_lo
+; GFX1012-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-ISEL-LABEL: global_load_f32_zext_vgpr_range_too_large:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0:
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dword v2, v[2:3], off
+; GFX10-3-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v3, 0
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    v_lshlrev_b64 v[2:3], 2, v[2:3]
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, v1, v3, vcc_lo
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-ISEL-LABEL: global_load_f32_zext_vgpr_range_too_large:
+; GFX11-GENERIC-ISEL:       ; %bb.0:
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b32 v2, v[2:3], off
+; GFX11-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v3, 0
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX11-GENERIC-ISEL-NEXT:    v_lshlrev_b64 v[2:3], 2, v[2:3]
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, v1, v3, vcc_lo
+; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: global_load_f32_zext_vgpr_range_too_large:
+; GFX1250-ISEL:       ; %bb.0:
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    global_load_b32 v2, v[2:3], off
+; GFX1250-ISEL-NEXT:    s_wait_xcnt 0x0
+; GFX1250-ISEL-NEXT:    v_mov_b32_e32 v3, 0
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX1250-ISEL-NEXT:    v_lshl_add_u64 v[0:1], v[2:3], 2, v[0:1]
+; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-ISEL-LABEL: global_load_f32_zext_vgpr_range_too_large:
+; GFX12-GENERIC-ISEL:       ; %bb.0:
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b32 v2, v[2:3], off
+; GFX12-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v3, 0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX12-GENERIC-ISEL-NEXT:    v_lshlrev_b64_e32 v[2:3], 2, v[2:3]
+; GFX12-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_alu depctr_va_vcc(0)
+; GFX12-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_2)
+; GFX12-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, v1, v3, vcc_lo
+; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SE
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+  %voffset = load i32, ptr addrspace(1) %voffset.ptr, !range !5, !noundef !{}
+  %zext.offset = zext i32 %voffset to i64
+  %gep = getelementptr inbounds float, ptr addrspace(1) %sbase, i64 %zext.offset
+  %load = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %gep, metadata !1)
+  %cast.load = bitcast <4 x i32> %load to <4 x float>
+  ret <4 x float> %cast.load
+}
+
+;;------------------------------------------------------------------------------
+;; or-with-constant as add
+;;------------------------------------------------------------------------------
+
+;; Check add-as-or with split 64-bit or.
+define <4 x float> @global_load_i8_offset_or_i64_imm_offset_16(ptr addrspace(6) %sbase, i32 %idx) {
+; GFX9-GENERIC-SDAG-LABEL: global_load_i8_offset_or_i64_imm_offset_16:
+; GFX9-GENERIC-SDAG:       ; %bb.0:
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    v_or_b32_e32 v0, 16, v1
+; GFX9-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v1, 0
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-SDAG-LABEL: global_load_i8_offset_or_i64_imm_offset_16:
+; GFX906-SDAG:       ; %bb.0:
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-SDAG-NEXT:    v_or_b32_e32 v0, 16, v1
+; GFX906-SDAG-NEXT:    v_mov_b32_e32 v1, 0
+; GFX906-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-SDAG-LABEL: global_load_i8_offset_or_i64_imm_offset_16:
+; GFX908-SDAG:       ; %bb.0:
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-SDAG-NEXT:    v_or_b32_e32 v0, 16, v1
+; GFX908-SDAG-NEXT:    v_mov_b32_e32 v1, 0
+; GFX908-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-SDAG-LABEL: global_load_i8_offset_or_i64_imm_offset_16:
+; GFX90A-SDAG:       ; %bb.0:
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-SDAG-NEXT:    v_or_b32_e32 v0, 16, v1
+; GFX90A-SDAG-NEXT:    v_mov_b32_e32 v1, 0
+; GFX90A-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-SDAG-LABEL: global_load_i8_offset_or_i64_imm_offset_16:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0:
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    v_or_b32_e32 v0, 16, v1
+; GFX9-4-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v1, 0
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc1
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-SDAG-LABEL: global_load_i8_offset_or_i64_imm_offset_16:
+; GFX942-SDAG:       ; %bb.0:
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    v_or_b32_e32 v0, 16, v1
+; GFX942-SDAG-NEXT:    v_mov_b32_e32 v1, 0
+; GFX942-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc1
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-SDAG-LABEL: global_load_i8_offset_or_i64_imm_offset_16:
+; GFX950-SDAG:       ; %bb.0:
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-SDAG-NEXT:    v_or_b32_e32 v0, 16, v1
+; GFX950-SDAG-NEXT:    v_mov_b32_e32 v1, 0
+; GFX950-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc1
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-SDAG-LABEL: global_load_i8_offset_or_i64_imm_offset_16:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0:
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v2, 0
+; GFX10-1-GENERIC-SDAG-NEXT:    v_or_b32_e32 v1, 16, v1
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[1:2], off glc dlc
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: global_load_i8_offset_or_i64_imm_offset_16:
+; GFX1012-SDAG:       ; %bb.0:
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    v_mov_b32_e32 v2, 0
+; GFX1012-SDAG-NEXT:    v_or_b32_e32 v1, 16, v1
+; GFX1012-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[1:2], off glc dlc
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-SDAG-LABEL: global_load_i8_offset_or_i64_imm_offset_16:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0:
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v2, 0
+; GFX10-3-GENERIC-SDAG-NEXT:    v_or_b32_e32 v1, 16, v1
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[1:2], off glc dlc
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-SDAG-LABEL: global_load_i8_offset_or_i64_imm_offset_16:
+; GFX11-GENERIC-SDAG:       ; %bb.0:
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v2, 0
+; GFX11-GENERIC-SDAG-NEXT:    v_or_b32_e32 v1, 16, v1
+; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[1:2], off glc
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: global_load_i8_offset_or_i64_imm_offset_16:
+; GFX1250-SDAG:       ; %bb.0:
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    v_dual_mov_b32 v3, 0 :: v_dual_bitop2_b32 v2, 16, v1 bitop3:0x54
+; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[2:3], off scope:SCOPE_DEV
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-SDAG-LABEL: global_load_i8_offset_or_i64_imm_offset_16:
+; GFX12-GENERIC-SDAG:       ; %bb.0:
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v2, 0
+; GFX12-GENERIC-SDAG-NEXT:    v_or_b32_e32 v1, 16, v1
+; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[1:2], off scope:SCOPE_DEV
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-GENERIC-ISEL-LABEL: global_load_i8_offset_or_i64_imm_offset_16:
+; GFX9-GENERIC-ISEL:       ; %bb.0:
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    v_or_b32_e32 v0, 16, v1
+; GFX9-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v1, 0
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-ISEL-LABEL: global_load_i8_offset_or_i64_imm_offset_16:
+; GFX906-ISEL:       ; %bb.0:
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-ISEL-NEXT:    v_or_b32_e32 v0, 16, v1
+; GFX906-ISEL-NEXT:    v_mov_b32_e32 v1, 0
+; GFX906-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-ISEL-LABEL: global_load_i8_offset_or_i64_imm_offset_16:
+; GFX908-ISEL:       ; %bb.0:
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-ISEL-NEXT:    v_or_b32_e32 v0, 16, v1
+; GFX908-ISEL-NEXT:    v_mov_b32_e32 v1, 0
+; GFX908-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-ISEL-LABEL: global_load_i8_offset_or_i64_imm_offset_16:
+; GFX90A-ISEL:       ; %bb.0:
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-ISEL-NEXT:    v_or_b32_e32 v0, 16, v1
+; GFX90A-ISEL-NEXT:    v_mov_b32_e32 v1, 0
+; GFX90A-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-ISEL-LABEL: global_load_i8_offset_or_i64_imm_offset_16:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0:
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    v_or_b32_e32 v0, 16, v1
+; GFX9-4-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v1, 0
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc1
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-ISEL-LABEL: global_load_i8_offset_or_i64_imm_offset_16:
+; GFX942-ISEL:       ; %bb.0:
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    v_or_b32_e32 v0, 16, v1
+; GFX942-ISEL-NEXT:    v_mov_b32_e32 v1, 0
+; GFX942-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc1
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-ISEL-LABEL: global_load_i8_offset_or_i64_imm_offset_16:
+; GFX950-ISEL:       ; %bb.0:
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-ISEL-NEXT:    v_or_b32_e32 v0, 16, v1
+; GFX950-ISEL-NEXT:    v_mov_b32_e32 v1, 0
+; GFX950-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc1
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-ISEL-LABEL: global_load_i8_offset_or_i64_imm_offset_16:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0:
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v2, 0
+; GFX10-1-GENERIC-ISEL-NEXT:    v_or_b32_e32 v1, 16, v1
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[1:2], off glc dlc
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: global_load_i8_offset_or_i64_imm_offset_16:
+; GFX1012-ISEL:       ; %bb.0:
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    v_mov_b32_e32 v2, 0
+; GFX1012-ISEL-NEXT:    v_or_b32_e32 v1, 16, v1
+; GFX1012-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[1:2], off glc dlc
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-ISEL-LABEL: global_load_i8_offset_or_i64_imm_offset_16:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0:
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v2, 0
+; GFX10-3-GENERIC-ISEL-NEXT:    v_or_b32_e32 v1, 16, v1
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[1:2], off glc dlc
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-ISEL-LABEL: global_load_i8_offset_or_i64_imm_offset_16:
+; GFX11-GENERIC-ISEL:       ; %bb.0:
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v2, 0
+; GFX11-GENERIC-ISEL-NEXT:    v_or_b32_e32 v1, 16, v1
+; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[1:2], off glc
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: global_load_i8_offset_or_i64_imm_offset_16:
+; GFX1250-ISEL:       ; %bb.0:
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    v_dual_mov_b32 v3, 0 :: v_dual_bitop2_b32 v2, 16, v1 bitop3:0x54
+; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[2:3], off scope:SCOPE_DEV
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-ISEL-LABEL: global_load_i8_offset_or_i64_imm_offset_16:
+; GFX12-GENERIC-ISEL:       ; %bb.0:
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v2, 0
+; GFX12-GENERIC-ISEL-NEXT:    v_or_b32_e32 v1, 16, v1
+; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[1:2], off scope:SCOPE_DEV
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+  %zext.idx = zext i32 %idx to i64
+  %or = or i64 %zext.idx, 16
+  %addr = inttoptr i64 %or to ptr addrspace(1)
+  %load = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %addr, metadata !2)
+  %cast.load = bitcast <4 x i32> %load to <4 x float>
+  ret <4 x float> %cast.load
+}
+
+define <4 x float> @global_load_i8_offset_or_i64_imm_offset_4160(ptr addrspace(6) %sbase, i32 %idx) {
+; GFX9-GENERIC-SDAG-LABEL: global_load_i8_offset_or_i64_imm_offset_4160:
+; GFX9-GENERIC-SDAG:       ; %bb.0:
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    v_or_b32_e32 v0, 0x1040, v1
+; GFX9-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v1, 0
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-SDAG-LABEL: global_load_i8_offset_or_i64_imm_offset_4160:
+; GFX906-SDAG:       ; %bb.0:
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-SDAG-NEXT:    v_or_b32_e32 v0, 0x1040, v1
+; GFX906-SDAG-NEXT:    v_mov_b32_e32 v1, 0
+; GFX906-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-SDAG-LABEL: global_load_i8_offset_or_i64_imm_offset_4160:
+; GFX908-SDAG:       ; %bb.0:
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-SDAG-NEXT:    v_or_b32_e32 v0, 0x1040, v1
+; GFX908-SDAG-NEXT:    v_mov_b32_e32 v1, 0
+; GFX908-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-SDAG-LABEL: global_load_i8_offset_or_i64_imm_offset_4160:
+; GFX90A-SDAG:       ; %bb.0:
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-SDAG-NEXT:    v_or_b32_e32 v0, 0x1040, v1
+; GFX90A-SDAG-NEXT:    v_mov_b32_e32 v1, 0
+; GFX90A-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-SDAG-LABEL: global_load_i8_offset_or_i64_imm_offset_4160:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0:
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    v_or_b32_e32 v0, 0x1040, v1
+; GFX9-4-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v1, 0
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0 sc1
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-SDAG-LABEL: global_load_i8_offset_or_i64_imm_offset_4160:
+; GFX942-SDAG:       ; %bb.0:
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    v_or_b32_e32 v0, 0x1040, v1
+; GFX942-SDAG-NEXT:    v_mov_b32_e32 v1, 0
+; GFX942-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0 sc1
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-SDAG-LABEL: global_load_i8_offset_or_i64_imm_offset_4160:
+; GFX950-SDAG:       ; %bb.0:
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-SDAG-NEXT:    v_or_b32_e32 v0, 0x1040, v1
+; GFX950-SDAG-NEXT:    v_mov_b32_e32 v1, 0
+; GFX950-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0 sc1
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-SDAG-LABEL: global_load_i8_offset_or_i64_imm_offset_4160:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0:
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v2, 0
+; GFX10-1-GENERIC-SDAG-NEXT:    v_or_b32_e32 v1, 0x1040, v1
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[1:2], off glc dlc
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: global_load_i8_offset_or_i64_imm_offset_4160:
+; GFX1012-SDAG:       ; %bb.0:
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    v_mov_b32_e32 v2, 0
+; GFX1012-SDAG-NEXT:    v_or_b32_e32 v1, 0x1040, v1
+; GFX1012-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[1:2], off glc dlc
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-SDAG-LABEL: global_load_i8_offset_or_i64_imm_offset_4160:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0:
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v2, 0
+; GFX10-3-GENERIC-SDAG-NEXT:    v_or_b32_e32 v1, 0x1040, v1
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[1:2], off glc dlc
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-SDAG-LABEL: global_load_i8_offset_or_i64_imm_offset_4160:
+; GFX11-GENERIC-SDAG:       ; %bb.0:
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v2, 0
+; GFX11-GENERIC-SDAG-NEXT:    v_or_b32_e32 v1, 0x1040, v1
+; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[1:2], off glc
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: global_load_i8_offset_or_i64_imm_offset_4160:
+; GFX1250-SDAG:       ; %bb.0:
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX1250-SDAG-NEXT:    v_or_b32_e32 v2, 0x1040, v1
+; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[2:3], off scope:SCOPE_SYS
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-SDAG-LABEL: global_load_i8_offset_or_i64_imm_offset_4160:
+; GFX12-GENERIC-SDAG:       ; %bb.0:
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v2, 0
+; GFX12-GENERIC-SDAG-NEXT:    v_or_b32_e32 v1, 0x1040, v1
+; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[1:2], off scope:SCOPE_SYS
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-GENERIC-ISEL-LABEL: global_load_i8_offset_or_i64_imm_offset_4160:
+; GFX9-GENERIC-ISEL:       ; %bb.0:
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    v_or_b32_e32 v0, 0x1040, v1
+; GFX9-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v1, 0
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-ISEL-LABEL: global_load_i8_offset_or_i64_imm_offset_4160:
+; GFX906-ISEL:       ; %bb.0:
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-ISEL-NEXT:    v_or_b32_e32 v0, 0x1040, v1
+; GFX906-ISEL-NEXT:    v_mov_b32_e32 v1, 0
+; GFX906-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-ISEL-LABEL: global_load_i8_offset_or_i64_imm_offset_4160:
+; GFX908-ISEL:       ; %bb.0:
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-ISEL-NEXT:    v_or_b32_e32 v0, 0x1040, v1
+; GFX908-ISEL-NEXT:    v_mov_b32_e32 v1, 0
+; GFX908-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-ISEL-LABEL: global_load_i8_offset_or_i64_imm_offset_4160:
+; GFX90A-ISEL:       ; %bb.0:
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-ISEL-NEXT:    v_or_b32_e32 v0, 0x1040, v1
+; GFX90A-ISEL-NEXT:    v_mov_b32_e32 v1, 0
+; GFX90A-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-ISEL-LABEL: global_load_i8_offset_or_i64_imm_offset_4160:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0:
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    v_or_b32_e32 v0, 0x1040, v1
+; GFX9-4-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v1, 0
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0 sc1
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-ISEL-LABEL: global_load_i8_offset_or_i64_imm_offset_4160:
+; GFX942-ISEL:       ; %bb.0:
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    v_or_b32_e32 v0, 0x1040, v1
+; GFX942-ISEL-NEXT:    v_mov_b32_e32 v1, 0
+; GFX942-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0 sc1
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-ISEL-LABEL: global_load_i8_offset_or_i64_imm_offset_4160:
+; GFX950-ISEL:       ; %bb.0:
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-ISEL-NEXT:    v_or_b32_e32 v0, 0x1040, v1
+; GFX950-ISEL-NEXT:    v_mov_b32_e32 v1, 0
+; GFX950-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0 sc1
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-ISEL-LABEL: global_load_i8_offset_or_i64_imm_offset_4160:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0:
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v2, 0
+; GFX10-1-GENERIC-ISEL-NEXT:    v_or_b32_e32 v1, 0x1040, v1
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[1:2], off glc dlc
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: global_load_i8_offset_or_i64_imm_offset_4160:
+; GFX1012-ISEL:       ; %bb.0:
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    v_mov_b32_e32 v2, 0
+; GFX1012-ISEL-NEXT:    v_or_b32_e32 v1, 0x1040, v1
+; GFX1012-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[1:2], off glc dlc
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-ISEL-LABEL: global_load_i8_offset_or_i64_imm_offset_4160:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0:
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v2, 0
+; GFX10-3-GENERIC-ISEL-NEXT:    v_or_b32_e32 v1, 0x1040, v1
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[1:2], off glc dlc
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-ISEL-LABEL: global_load_i8_offset_or_i64_imm_offset_4160:
+; GFX11-GENERIC-ISEL:       ; %bb.0:
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v2, 0
+; GFX11-GENERIC-ISEL-NEXT:    v_or_b32_e32 v1, 0x1040, v1
+; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[1:2], off glc
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: global_load_i8_offset_or_i64_imm_offset_4160:
+; GFX1250-ISEL:       ; %bb.0:
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    v_mov_b32_e32 v3, 0
+; GFX1250-ISEL-NEXT:    v_or_b32_e32 v2, 0x1040, v1
+; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[2:3], off scope:SCOPE_SYS
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-ISEL-LABEL: global_load_i8_offset_or_i64_imm_offset_4160:
+; GFX12-GENERIC-ISEL:       ; %bb.0:
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v2, 0
+; GFX12-GENERIC-ISEL-NEXT:    v_or_b32_e32 v1, 0x1040, v1
+; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[1:2], off scope:SCOPE_SYS
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+  %zext.idx = zext i32 %idx to i64
+  %or = or i64 %zext.idx, 4160
+  %addr = inttoptr i64 %or to ptr addrspace(1)
+  %load = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %addr, metadata !3)
+  %cast.load = bitcast <4 x i32> %load to <4 x float>
+  ret <4 x float> %cast.load
+}
+
+;;------------------------------------------------------------------------------
+;; Full 64-bit scalar add.
+;;------------------------------------------------------------------------------
+define <4 x float> @global_addr_64bit_lsr_iv(ptr addrspace(1) %arg) {
+; GFX9-GENERIC-SDAG-LABEL: global_addr_64bit_lsr_iv:
+; GFX9-GENERIC-SDAG:       ; %bb.0: ; %bb
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_mov_b32 s4, -1
+; GFX9-GENERIC-SDAG-NEXT:  .LBB60_1: ; %bb3
+; GFX9-GENERIC-SDAG-NEXT:    ; =>This Inner Loop Header: Depth=1
+; GFX9-GENERIC-SDAG-NEXT:    s_add_i32 s4, s4, 1
+; GFX9-GENERIC-SDAG-NEXT:    s_cmpk_eq_i32 s4, 0xff
+; GFX9-GENERIC-SDAG-NEXT:    s_cbranch_scc0 .LBB60_1
+; GFX9-GENERIC-SDAG-NEXT:  ; %bb.2: ; %bb2
+; GFX9-GENERIC-SDAG-NEXT:    s_mov_b32 s5, 0
+; GFX9-GENERIC-SDAG-NEXT:    s_lshl_b64 s[4:5], s[4:5], 2
+; GFX9-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v2, s5
+; GFX9-GENERIC-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, s4, v0
+; GFX9-GENERIC-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, v1, v2, vcc
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-SDAG-LABEL: global_addr_64bit_lsr_iv:
+; GFX906-SDAG:       ; %bb.0: ; %bb
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-SDAG-NEXT:    s_mov_b32 s4, -1
+; GFX906-SDAG-NEXT:  .LBB60_1: ; %bb3
+; GFX906-SDAG-NEXT:    ; =>This Inner Loop Header: Depth=1
+; GFX906-SDAG-NEXT:    s_add_i32 s4, s4, 1
+; GFX906-SDAG-NEXT:    s_cmpk_eq_i32 s4, 0xff
+; GFX906-SDAG-NEXT:    s_cbranch_scc0 .LBB60_1
+; GFX906-SDAG-NEXT:  ; %bb.2: ; %bb2
+; GFX906-SDAG-NEXT:    s_mov_b32 s5, 0
+; GFX906-SDAG-NEXT:    s_lshl_b64 s[4:5], s[4:5], 2
+; GFX906-SDAG-NEXT:    v_mov_b32_e32 v2, s5
+; GFX906-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, s4, v0
+; GFX906-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, v1, v2, vcc
+; GFX906-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-SDAG-LABEL: global_addr_64bit_lsr_iv:
+; GFX908-SDAG:       ; %bb.0: ; %bb
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-SDAG-NEXT:    s_mov_b32 s4, -1
+; GFX908-SDAG-NEXT:  .LBB60_1: ; %bb3
+; GFX908-SDAG-NEXT:    ; =>This Inner Loop Header: Depth=1
+; GFX908-SDAG-NEXT:    s_add_i32 s4, s4, 1
+; GFX908-SDAG-NEXT:    s_cmpk_eq_i32 s4, 0xff
+; GFX908-SDAG-NEXT:    s_cbranch_scc0 .LBB60_1
+; GFX908-SDAG-NEXT:  ; %bb.2: ; %bb2
+; GFX908-SDAG-NEXT:    s_mov_b32 s5, 0
+; GFX908-SDAG-NEXT:    s_lshl_b64 s[4:5], s[4:5], 2
+; GFX908-SDAG-NEXT:    v_mov_b32_e32 v2, s5
+; GFX908-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, s4, v0
+; GFX908-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, v1, v2, vcc
+; GFX908-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-SDAG-LABEL: global_addr_64bit_lsr_iv:
+; GFX90A-SDAG:       ; %bb.0: ; %bb
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-SDAG-NEXT:    s_mov_b32 s4, -1
+; GFX90A-SDAG-NEXT:  .LBB60_1: ; %bb3
+; GFX90A-SDAG-NEXT:    ; =>This Inner Loop Header: Depth=1
+; GFX90A-SDAG-NEXT:    s_add_i32 s4, s4, 1
+; GFX90A-SDAG-NEXT:    s_cmpk_eq_i32 s4, 0xff
+; GFX90A-SDAG-NEXT:    s_cbranch_scc0 .LBB60_1
+; GFX90A-SDAG-NEXT:  ; %bb.2: ; %bb2
+; GFX90A-SDAG-NEXT:    s_mov_b32 s5, 0
+; GFX90A-SDAG-NEXT:    s_lshl_b64 s[4:5], s[4:5], 2
+; GFX90A-SDAG-NEXT:    v_mov_b32_e32 v2, s5
+; GFX90A-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, s4, v0
+; GFX90A-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, v1, v2, vcc
+; GFX90A-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-SDAG-LABEL: global_addr_64bit_lsr_iv:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0: ; %bb
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_mov_b32 s0, -1
+; GFX9-4-GENERIC-SDAG-NEXT:  .LBB60_1: ; %bb3
+; GFX9-4-GENERIC-SDAG-NEXT:    ; =>This Inner Loop Header: Depth=1
+; GFX9-4-GENERIC-SDAG-NEXT:    s_add_i32 s0, s0, 1
+; GFX9-4-GENERIC-SDAG-NEXT:    s_cmpk_eq_i32 s0, 0xff
+; GFX9-4-GENERIC-SDAG-NEXT:    s_cbranch_scc0 .LBB60_1
+; GFX9-4-GENERIC-SDAG-NEXT:  ; %bb.2: ; %bb2
+; GFX9-4-GENERIC-SDAG-NEXT:    s_mov_b32 s1, 0
+; GFX9-4-GENERIC-SDAG-NEXT:    v_lshl_add_u64 v[0:1], s[0:1], 2, v[0:1]
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-SDAG-LABEL: global_addr_64bit_lsr_iv:
+; GFX942-SDAG:       ; %bb.0: ; %bb
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    s_mov_b32 s0, -1
+; GFX942-SDAG-NEXT:  .LBB60_1: ; %bb3
+; GFX942-SDAG-NEXT:    ; =>This Inner Loop Header: Depth=1
+; GFX942-SDAG-NEXT:    s_add_i32 s0, s0, 1
+; GFX942-SDAG-NEXT:    s_cmpk_eq_i32 s0, 0xff
+; GFX942-SDAG-NEXT:    s_cbranch_scc0 .LBB60_1
+; GFX942-SDAG-NEXT:  ; %bb.2: ; %bb2
+; GFX942-SDAG-NEXT:    s_mov_b32 s1, 0
+; GFX942-SDAG-NEXT:    v_lshl_add_u64 v[0:1], s[0:1], 2, v[0:1]
+; GFX942-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-SDAG-LABEL: global_addr_64bit_lsr_iv:
+; GFX950-SDAG:       ; %bb.0: ; %bb
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-SDAG-NEXT:    s_mov_b32 s0, -1
+; GFX950-SDAG-NEXT:  .LBB60_1: ; %bb3
+; GFX950-SDAG-NEXT:    ; =>This Inner Loop Header: Depth=1
+; GFX950-SDAG-NEXT:    s_add_i32 s0, s0, 1
+; GFX950-SDAG-NEXT:    s_cmpk_eq_i32 s0, 0xff
+; GFX950-SDAG-NEXT:    s_cbranch_scc0 .LBB60_1
+; GFX950-SDAG-NEXT:  ; %bb.2: ; %bb2
+; GFX950-SDAG-NEXT:    s_mov_b32 s1, 0
+; GFX950-SDAG-NEXT:    v_lshl_add_u64 v[0:1], s[0:1], 2, v[0:1]
+; GFX950-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-SDAG-LABEL: global_addr_64bit_lsr_iv:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0: ; %bb
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    s_mov_b32 s4, -1
+; GFX10-1-GENERIC-SDAG-NEXT:  .LBB60_1: ; %bb3
+; GFX10-1-GENERIC-SDAG-NEXT:    ; =>This Inner Loop Header: Depth=1
+; GFX10-1-GENERIC-SDAG-NEXT:    s_add_i32 s4, s4, 1
+; GFX10-1-GENERIC-SDAG-NEXT:    s_cmpk_eq_i32 s4, 0xff
+; GFX10-1-GENERIC-SDAG-NEXT:    s_cbranch_scc0 .LBB60_1
+; GFX10-1-GENERIC-SDAG-NEXT:  ; %bb.2: ; %bb2
+; GFX10-1-GENERIC-SDAG-NEXT:    s_mov_b32 s5, 0
+; GFX10-1-GENERIC-SDAG-NEXT:    s_lshl_b64 s[4:5], s[4:5], 2
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, s4
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, s5, v1, vcc_lo
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: global_addr_64bit_lsr_iv:
+; GFX1012-SDAG:       ; %bb.0: ; %bb
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    s_mov_b32 s4, -1
+; GFX1012-SDAG-NEXT:  .LBB60_1: ; %bb3
+; GFX1012-SDAG-NEXT:    ; =>This Inner Loop Header: Depth=1
+; GFX1012-SDAG-NEXT:    s_add_i32 s4, s4, 1
+; GFX1012-SDAG-NEXT:    s_cmpk_eq_i32 s4, 0xff
+; GFX1012-SDAG-NEXT:    s_cbranch_scc0 .LBB60_1
+; GFX1012-SDAG-NEXT:  ; %bb.2: ; %bb2
+; GFX1012-SDAG-NEXT:    s_mov_b32 s5, 0
+; GFX1012-SDAG-NEXT:    s_lshl_b64 s[4:5], s[4:5], 2
+; GFX1012-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, s4
+; GFX1012-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, s5, v1, vcc_lo
+; GFX1012-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-SDAG-LABEL: global_addr_64bit_lsr_iv:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0: ; %bb
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    s_mov_b32 s4, -1
+; GFX10-3-GENERIC-SDAG-NEXT:  .LBB60_1: ; %bb3
+; GFX10-3-GENERIC-SDAG-NEXT:    ; =>This Inner Loop Header: Depth=1
+; GFX10-3-GENERIC-SDAG-NEXT:    s_add_i32 s4, s4, 1
+; GFX10-3-GENERIC-SDAG-NEXT:    s_cmpk_eq_i32 s4, 0xff
+; GFX10-3-GENERIC-SDAG-NEXT:    s_cbranch_scc0 .LBB60_1
+; GFX10-3-GENERIC-SDAG-NEXT:  ; %bb.2: ; %bb2
+; GFX10-3-GENERIC-SDAG-NEXT:    s_mov_b32 s5, 0
+; GFX10-3-GENERIC-SDAG-NEXT:    s_lshl_b64 s[4:5], s[4:5], 2
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, s4
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, s5, v1, vcc_lo
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-SDAG-LABEL: global_addr_64bit_lsr_iv:
+; GFX11-GENERIC-SDAG:       ; %bb.0: ; %bb
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    s_mov_b32 s0, -1
+; GFX11-GENERIC-SDAG-NEXT:  .LBB60_1: ; %bb3
+; GFX11-GENERIC-SDAG-NEXT:    ; =>This Inner Loop Header: Depth=1
+; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
+; GFX11-GENERIC-SDAG-NEXT:    s_add_i32 s0, s0, 1
+; GFX11-GENERIC-SDAG-NEXT:    s_cmpk_eq_i32 s0, 0xff
+; GFX11-GENERIC-SDAG-NEXT:    s_cbranch_scc0 .LBB60_1
+; GFX11-GENERIC-SDAG-NEXT:  ; %bb.2: ; %bb2
+; GFX11-GENERIC-SDAG-NEXT:    s_mov_b32 s1, 0
+; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
+; GFX11-GENERIC-SDAG-NEXT:    s_lshl_b64 s[0:1], s[0:1], 2
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, s0
+; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, s1, v1, vcc_lo
+; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: global_addr_64bit_lsr_iv:
+; GFX1250-SDAG:       ; %bb.0: ; %bb
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    s_mov_b32 s0, -1
+; GFX1250-SDAG-NEXT:  .LBB60_1: ; %bb3
+; GFX1250-SDAG-NEXT:    ; =>This Inner Loop Header: Depth=1
+; GFX1250-SDAG-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
+; GFX1250-SDAG-NEXT:    s_add_co_i32 s0, s0, 1
+; GFX1250-SDAG-NEXT:    s_cmp_eq_u32 s0, 0xff
+; GFX1250-SDAG-NEXT:    s_cbranch_scc0 .LBB60_1
+; GFX1250-SDAG-NEXT:  ; %bb.2: ; %bb2
+; GFX1250-SDAG-NEXT:    s_mov_b32 s1, 0
+; GFX1250-SDAG-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX1250-SDAG-NEXT:    v_lshl_add_u64 v[0:1], s[0:1], 2, v[0:1]
+; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-SDAG-LABEL: global_addr_64bit_lsr_iv:
+; GFX12-GENERIC-SDAG:       ; %bb.0: ; %bb
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_mov_b32 s0, -1
+; GFX12-GENERIC-SDAG-NEXT:  .LBB60_1: ; %bb3
+; GFX12-GENERIC-SDAG-NEXT:    ; =>This Inner Loop Header: Depth=1
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_alu depctr_sa_sdst(0)
+; GFX12-GENERIC-SDAG-NEXT:    s_add_co_i32 s0, s0, 1
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_alu depctr_sa_sdst(0)
+; GFX12-GENERIC-SDAG-NEXT:    s_cmp_eq_u32 s0, 0xff
+; GFX12-GENERIC-SDAG-NEXT:    s_cbranch_scc0 .LBB60_1
+; GFX12-GENERIC-SDAG-NEXT:  ; %bb.2: ; %bb2
+; GFX12-GENERIC-SDAG-NEXT:    s_mov_b32 s1, 0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_alu depctr_sa_sdst(0)
+; GFX12-GENERIC-SDAG-NEXT:    s_lshl_b64 s[0:1], s[0:1], 2
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_alu depctr_sa_sdst(0)
+; GFX12-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, s0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)
+; GFX12-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, s1, v1, vcc_lo
+; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-GENERIC-ISEL-LABEL: global_addr_64bit_lsr_iv:
+; GFX9-GENERIC-ISEL:       ; %bb.0: ; %bb
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_mov_b32 s4, -1
+; GFX9-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v3, 0xff
+; GFX9-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v2, s4
+; GFX9-GENERIC-ISEL-NEXT:  .LBB60_1: ; %bb3
+; GFX9-GENERIC-ISEL-NEXT:    ; =>This Inner Loop Header: Depth=1
+; GFX9-GENERIC-ISEL-NEXT:    v_add_u32_e32 v2, 1, v2
+; GFX9-GENERIC-ISEL-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v3
+; GFX9-GENERIC-ISEL-NEXT:    s_cbranch_vccz .LBB60_1
+; GFX9-GENERIC-ISEL-NEXT:  ; %bb.2: ; %bb2
+; GFX9-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v3, 0
+; GFX9-GENERIC-ISEL-NEXT:    v_lshlrev_b64 v[2:3], 2, v[2:3]
+; GFX9-GENERIC-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX9-GENERIC-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, v1, v3, vcc
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-ISEL-LABEL: global_addr_64bit_lsr_iv:
+; GFX906-ISEL:       ; %bb.0: ; %bb
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-ISEL-NEXT:    s_mov_b32 s4, -1
+; GFX906-ISEL-NEXT:    v_mov_b32_e32 v3, 0xff
+; GFX906-ISEL-NEXT:    v_mov_b32_e32 v2, s4
+; GFX906-ISEL-NEXT:  .LBB60_1: ; %bb3
+; GFX906-ISEL-NEXT:    ; =>This Inner Loop Header: Depth=1
+; GFX906-ISEL-NEXT:    v_add_u32_e32 v2, 1, v2
+; GFX906-ISEL-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v3
+; GFX906-ISEL-NEXT:    s_cbranch_vccz .LBB60_1
+; GFX906-ISEL-NEXT:  ; %bb.2: ; %bb2
+; GFX906-ISEL-NEXT:    v_mov_b32_e32 v3, 0
+; GFX906-ISEL-NEXT:    v_lshlrev_b64 v[2:3], 2, v[2:3]
+; GFX906-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX906-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, v1, v3, vcc
+; GFX906-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-ISEL-LABEL: global_addr_64bit_lsr_iv:
+; GFX908-ISEL:       ; %bb.0: ; %bb
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-ISEL-NEXT:    s_mov_b32 s4, -1
+; GFX908-ISEL-NEXT:    v_mov_b32_e32 v3, 0xff
+; GFX908-ISEL-NEXT:    v_mov_b32_e32 v2, s4
+; GFX908-ISEL-NEXT:  .LBB60_1: ; %bb3
+; GFX908-ISEL-NEXT:    ; =>This Inner Loop Header: Depth=1
+; GFX908-ISEL-NEXT:    v_add_u32_e32 v2, 1, v2
+; GFX908-ISEL-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v3
+; GFX908-ISEL-NEXT:    s_cbranch_vccz .LBB60_1
+; GFX908-ISEL-NEXT:  ; %bb.2: ; %bb2
+; GFX908-ISEL-NEXT:    v_mov_b32_e32 v3, 0
+; GFX908-ISEL-NEXT:    v_lshlrev_b64 v[2:3], 2, v[2:3]
+; GFX908-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX908-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, v1, v3, vcc
+; GFX908-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-ISEL-LABEL: global_addr_64bit_lsr_iv:
+; GFX90A-ISEL:       ; %bb.0: ; %bb
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-ISEL-NEXT:    s_mov_b32 s4, -1
+; GFX90A-ISEL-NEXT:    v_mov_b32_e32 v3, 0xff
+; GFX90A-ISEL-NEXT:    v_mov_b32_e32 v2, s4
+; GFX90A-ISEL-NEXT:  .LBB60_1: ; %bb3
+; GFX90A-ISEL-NEXT:    ; =>This Inner Loop Header: Depth=1
+; GFX90A-ISEL-NEXT:    v_add_u32_e32 v2, 1, v2
+; GFX90A-ISEL-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v3
+; GFX90A-ISEL-NEXT:    s_cbranch_vccz .LBB60_1
+; GFX90A-ISEL-NEXT:  ; %bb.2: ; %bb2
+; GFX90A-ISEL-NEXT:    v_mov_b32_e32 v3, 0
+; GFX90A-ISEL-NEXT:    v_lshlrev_b64 v[2:3], 2, v[2:3]
+; GFX90A-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX90A-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, v1, v3, vcc
+; GFX90A-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-ISEL-LABEL: global_addr_64bit_lsr_iv:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0: ; %bb
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_mov_b32 s0, -1
+; GFX9-4-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v3, 0xff
+; GFX9-4-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v2, s0
+; GFX9-4-GENERIC-ISEL-NEXT:  .LBB60_1: ; %bb3
+; GFX9-4-GENERIC-ISEL-NEXT:    ; =>This Inner Loop Header: Depth=1
+; GFX9-4-GENERIC-ISEL-NEXT:    v_add_u32_e32 v2, 1, v2
+; GFX9-4-GENERIC-ISEL-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v3
+; GFX9-4-GENERIC-ISEL-NEXT:    s_cbranch_vccz .LBB60_1
+; GFX9-4-GENERIC-ISEL-NEXT:  ; %bb.2: ; %bb2
+; GFX9-4-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v3, 0
+; GFX9-4-GENERIC-ISEL-NEXT:    v_lshl_add_u64 v[0:1], v[2:3], 2, v[0:1]
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-ISEL-LABEL: global_addr_64bit_lsr_iv:
+; GFX942-ISEL:       ; %bb.0: ; %bb
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    s_mov_b32 s0, -1
+; GFX942-ISEL-NEXT:    v_mov_b32_e32 v3, 0xff
+; GFX942-ISEL-NEXT:    v_mov_b32_e32 v2, s0
+; GFX942-ISEL-NEXT:  .LBB60_1: ; %bb3
+; GFX942-ISEL-NEXT:    ; =>This Inner Loop Header: Depth=1
+; GFX942-ISEL-NEXT:    v_add_u32_e32 v2, 1, v2
+; GFX942-ISEL-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v3
+; GFX942-ISEL-NEXT:    s_cbranch_vccz .LBB60_1
+; GFX942-ISEL-NEXT:  ; %bb.2: ; %bb2
+; GFX942-ISEL-NEXT:    v_mov_b32_e32 v3, 0
+; GFX942-ISEL-NEXT:    v_lshl_add_u64 v[0:1], v[2:3], 2, v[0:1]
+; GFX942-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-ISEL-LABEL: global_addr_64bit_lsr_iv:
+; GFX950-ISEL:       ; %bb.0: ; %bb
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-ISEL-NEXT:    s_mov_b32 s0, -1
+; GFX950-ISEL-NEXT:    v_mov_b32_e32 v3, 0xff
+; GFX950-ISEL-NEXT:    v_mov_b32_e32 v2, s0
+; GFX950-ISEL-NEXT:  .LBB60_1: ; %bb3
+; GFX950-ISEL-NEXT:    ; =>This Inner Loop Header: Depth=1
+; GFX950-ISEL-NEXT:    v_add_u32_e32 v2, 1, v2
+; GFX950-ISEL-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v3
+; GFX950-ISEL-NEXT:    s_cbranch_vccz .LBB60_1
+; GFX950-ISEL-NEXT:  ; %bb.2: ; %bb2
+; GFX950-ISEL-NEXT:    v_mov_b32_e32 v3, 0
+; GFX950-ISEL-NEXT:    v_lshl_add_u64 v[0:1], v[2:3], 2, v[0:1]
+; GFX950-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-ISEL-LABEL: global_addr_64bit_lsr_iv:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0: ; %bb
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_mov_b32 s4, -1
+; GFX10-1-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v2, s4
+; GFX10-1-GENERIC-ISEL-NEXT:  .LBB60_1: ; %bb3
+; GFX10-1-GENERIC-ISEL-NEXT:    ; =>This Inner Loop Header: Depth=1
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_nc_u32_e32 v2, 1, v2
+; GFX10-1-GENERIC-ISEL-NEXT:    v_cmp_eq_u32_e32 vcc_lo, 0xff, v2
+; GFX10-1-GENERIC-ISEL-NEXT:    s_cbranch_vccz .LBB60_1
+; GFX10-1-GENERIC-ISEL-NEXT:  ; %bb.2: ; %bb2
+; GFX10-1-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v3, 0
+; GFX10-1-GENERIC-ISEL-NEXT:    v_lshlrev_b64 v[2:3], 2, v[2:3]
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, v1, v3, vcc_lo
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: global_addr_64bit_lsr_iv:
+; GFX1012-ISEL:       ; %bb.0: ; %bb
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    s_mov_b32 s4, -1
+; GFX1012-ISEL-NEXT:    v_mov_b32_e32 v2, s4
+; GFX1012-ISEL-NEXT:  .LBB60_1: ; %bb3
+; GFX1012-ISEL-NEXT:    ; =>This Inner Loop Header: Depth=1
+; GFX1012-ISEL-NEXT:    v_add_nc_u32_e32 v2, 1, v2
+; GFX1012-ISEL-NEXT:    v_cmp_eq_u32_e32 vcc_lo, 0xff, v2
+; GFX1012-ISEL-NEXT:    s_cbranch_vccz .LBB60_1
+; GFX1012-ISEL-NEXT:  ; %bb.2: ; %bb2
+; GFX1012-ISEL-NEXT:    v_mov_b32_e32 v3, 0
+; GFX1012-ISEL-NEXT:    v_lshlrev_b64 v[2:3], 2, v[2:3]
+; GFX1012-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX1012-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, v1, v3, vcc_lo
+; GFX1012-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-ISEL-LABEL: global_addr_64bit_lsr_iv:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0: ; %bb
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_mov_b32 s4, -1
+; GFX10-3-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v2, s4
+; GFX10-3-GENERIC-ISEL-NEXT:  .LBB60_1: ; %bb3
+; GFX10-3-GENERIC-ISEL-NEXT:    ; =>This Inner Loop Header: Depth=1
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_nc_u32_e32 v2, 1, v2
+; GFX10-3-GENERIC-ISEL-NEXT:    v_cmp_eq_u32_e32 vcc_lo, 0xff, v2
+; GFX10-3-GENERIC-ISEL-NEXT:    s_cbranch_vccz .LBB60_1
+; GFX10-3-GENERIC-ISEL-NEXT:  ; %bb.2: ; %bb2
+; GFX10-3-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v3, 0
+; GFX10-3-GENERIC-ISEL-NEXT:    v_lshlrev_b64 v[2:3], 2, v[2:3]
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, v1, v3, vcc_lo
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-ISEL-LABEL: global_addr_64bit_lsr_iv:
+; GFX11-GENERIC-ISEL:       ; %bb.0: ; %bb
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_mov_b32 s0, -1
+; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX11-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v2, s0
+; GFX11-GENERIC-ISEL-NEXT:  .LBB60_1: ; %bb3
+; GFX11-GENERIC-ISEL-NEXT:    ; =>This Inner Loop Header: Depth=1
+; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX11-GENERIC-ISEL-NEXT:    v_add_nc_u32_e32 v2, 1, v2
+; GFX11-GENERIC-ISEL-NEXT:    v_cmp_eq_u32_e32 vcc_lo, 0xff, v2
+; GFX11-GENERIC-ISEL-NEXT:    s_cbranch_vccz .LBB60_1
+; GFX11-GENERIC-ISEL-NEXT:  ; %bb.2: ; %bb2
+; GFX11-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v3, 0
+; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX11-GENERIC-ISEL-NEXT:    v_lshlrev_b64 v[2:3], 2, v[2:3]
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, v1, v3, vcc_lo
+; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: global_addr_64bit_lsr_iv:
+; GFX1250-ISEL:       ; %bb.0: ; %bb
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    s_mov_b32 s0, -1
+; GFX1250-ISEL-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX1250-ISEL-NEXT:    v_mov_b32_e32 v2, s0
+; GFX1250-ISEL-NEXT:  .LBB60_1: ; %bb3
+; GFX1250-ISEL-NEXT:    ; =>This Inner Loop Header: Depth=1
+; GFX1250-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX1250-ISEL-NEXT:    v_add_nc_u32_e32 v2, 1, v2
+; GFX1250-ISEL-NEXT:    v_cmp_eq_u32_e32 vcc_lo, 0xff, v2
+; GFX1250-ISEL-NEXT:    s_cbranch_vccz .LBB60_1
+; GFX1250-ISEL-NEXT:  ; %bb.2: ; %bb2
+; GFX1250-ISEL-NEXT:    v_mov_b32_e32 v3, 0
+; GFX1250-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX1250-ISEL-NEXT:    v_lshl_add_u64 v[0:1], v[2:3], 2, v[0:1]
+; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-ISEL-LABEL: global_addr_64bit_lsr_iv:
+; GFX12-GENERIC-ISEL:       ; %bb.0: ; %bb
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_mov_b32 s0, -1
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_alu depctr_sa_sdst(0)
+; GFX12-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v2, s0
+; GFX12-GENERIC-ISEL-NEXT:  .LBB60_1: ; %bb3
+; GFX12-GENERIC-ISEL-NEXT:    ; =>This Inner Loop Header: Depth=1
+; GFX12-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX12-GENERIC-ISEL-NEXT:    v_add_nc_u32_e32 v2, 1, v2
+; GFX12-GENERIC-ISEL-NEXT:    v_cmp_eq_u32_e32 vcc_lo, 0xff, v2
+; GFX12-GENERIC-ISEL-NEXT:    s_cbranch_vccz .LBB60_1
+; GFX12-GENERIC-ISEL-NEXT:  ; %bb.2: ; %bb2
+; GFX12-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v3, 0
+; GFX12-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX12-GENERIC-ISEL-NEXT:    v_lshlrev_b64_e32 v[2:3], 2, v[2:3]
+; GFX12-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_alu depctr_va_vcc(0)
+; GFX12-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_2)
+; GFX12-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, v1, v3, vcc_lo
+; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+bb:
+  br label %bb3
+
+bb2:                                              ; preds = %bb3
+  ret <4 x float> %i6
+
+bb3:                                              ; preds = %bb3, %bb
+  %i = phi i32 [ 0, %bb ], [ %i8, %bb3 ]
+  %i4 = zext i32 %i to i64
+  %i5 = getelementptr inbounds float, ptr addrspace(1) %arg, i64 %i4
+  %load = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %i5, metadata !0)
+  %i6 = bitcast <4 x i32> %load to <4 x float>
+  %i8 = add nuw nsw i32 %i, 1
+  %i9 = icmp eq i32 %i8, 256
+  br i1 %i9, label %bb2, label %bb3
+}
+
+;; Make sure we only have a single zero vaddr initialization.
+
+define <4 x float> @global_addr_64bit_lsr_iv_multiload(ptr addrspace(1) %arg, ptr addrspace(1) %arg.1, i32 %x) {
+; GFX9-GENERIC-SDAG-LABEL: global_addr_64bit_lsr_iv_multiload:
+; GFX9-GENERIC-SDAG:       ; %bb.0: ; %bb
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_mov_b32 s4, -1
+; GFX9-GENERIC-SDAG-NEXT:  .LBB61_1: ; %bb5
+; GFX9-GENERIC-SDAG-NEXT:    ; =>This Inner Loop Header: Depth=1
+; GFX9-GENERIC-SDAG-NEXT:    s_add_i32 s4, s4, 1
+; GFX9-GENERIC-SDAG-NEXT:    s_cmpk_eq_i32 s4, 0xff
+; GFX9-GENERIC-SDAG-NEXT:    s_cbranch_scc0 .LBB61_1
+; GFX9-GENERIC-SDAG-NEXT:  ; %bb.2: ; %bb2
+; GFX9-GENERIC-SDAG-NEXT:    s_mov_b32 s5, 0
+; GFX9-GENERIC-SDAG-NEXT:    s_lshl_b64 s[4:5], s[4:5], 2
+; GFX9-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v2, s5
+; GFX9-GENERIC-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, s4, v0
+; GFX9-GENERIC-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, v1, v2, vcc
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-SDAG-LABEL: global_addr_64bit_lsr_iv_multiload:
+; GFX906-SDAG:       ; %bb.0: ; %bb
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-SDAG-NEXT:    s_mov_b32 s4, -1
+; GFX906-SDAG-NEXT:  .LBB61_1: ; %bb5
+; GFX906-SDAG-NEXT:    ; =>This Inner Loop Header: Depth=1
+; GFX906-SDAG-NEXT:    s_add_i32 s4, s4, 1
+; GFX906-SDAG-NEXT:    s_cmpk_eq_i32 s4, 0xff
+; GFX906-SDAG-NEXT:    s_cbranch_scc0 .LBB61_1
+; GFX906-SDAG-NEXT:  ; %bb.2: ; %bb2
+; GFX906-SDAG-NEXT:    s_mov_b32 s5, 0
+; GFX906-SDAG-NEXT:    s_lshl_b64 s[4:5], s[4:5], 2
+; GFX906-SDAG-NEXT:    v_mov_b32_e32 v2, s5
+; GFX906-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, s4, v0
+; GFX906-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, v1, v2, vcc
+; GFX906-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-SDAG-LABEL: global_addr_64bit_lsr_iv_multiload:
+; GFX908-SDAG:       ; %bb.0: ; %bb
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-SDAG-NEXT:    s_mov_b32 s4, -1
+; GFX908-SDAG-NEXT:  .LBB61_1: ; %bb5
+; GFX908-SDAG-NEXT:    ; =>This Inner Loop Header: Depth=1
+; GFX908-SDAG-NEXT:    s_add_i32 s4, s4, 1
+; GFX908-SDAG-NEXT:    s_cmpk_eq_i32 s4, 0xff
+; GFX908-SDAG-NEXT:    s_cbranch_scc0 .LBB61_1
+; GFX908-SDAG-NEXT:  ; %bb.2: ; %bb2
+; GFX908-SDAG-NEXT:    s_mov_b32 s5, 0
+; GFX908-SDAG-NEXT:    s_lshl_b64 s[4:5], s[4:5], 2
+; GFX908-SDAG-NEXT:    v_mov_b32_e32 v2, s5
+; GFX908-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, s4, v0
+; GFX908-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, v1, v2, vcc
+; GFX908-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-SDAG-LABEL: global_addr_64bit_lsr_iv_multiload:
+; GFX90A-SDAG:       ; %bb.0: ; %bb
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-SDAG-NEXT:    s_mov_b32 s4, -1
+; GFX90A-SDAG-NEXT:  .LBB61_1: ; %bb5
+; GFX90A-SDAG-NEXT:    ; =>This Inner Loop Header: Depth=1
+; GFX90A-SDAG-NEXT:    s_add_i32 s4, s4, 1
+; GFX90A-SDAG-NEXT:    s_cmpk_eq_i32 s4, 0xff
+; GFX90A-SDAG-NEXT:    s_cbranch_scc0 .LBB61_1
+; GFX90A-SDAG-NEXT:  ; %bb.2: ; %bb2
+; GFX90A-SDAG-NEXT:    s_mov_b32 s5, 0
+; GFX90A-SDAG-NEXT:    s_lshl_b64 s[4:5], s[4:5], 2
+; GFX90A-SDAG-NEXT:    v_mov_b32_e32 v2, s5
+; GFX90A-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, s4, v0
+; GFX90A-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, v1, v2, vcc
+; GFX90A-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-SDAG-LABEL: global_addr_64bit_lsr_iv_multiload:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0: ; %bb
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_mov_b32 s0, -1
+; GFX9-4-GENERIC-SDAG-NEXT:  .LBB61_1: ; %bb5
+; GFX9-4-GENERIC-SDAG-NEXT:    ; =>This Inner Loop Header: Depth=1
+; GFX9-4-GENERIC-SDAG-NEXT:    s_add_i32 s0, s0, 1
+; GFX9-4-GENERIC-SDAG-NEXT:    s_cmpk_eq_i32 s0, 0xff
+; GFX9-4-GENERIC-SDAG-NEXT:    s_cbranch_scc0 .LBB61_1
+; GFX9-4-GENERIC-SDAG-NEXT:  ; %bb.2: ; %bb2
+; GFX9-4-GENERIC-SDAG-NEXT:    s_mov_b32 s1, 0
+; GFX9-4-GENERIC-SDAG-NEXT:    v_lshl_add_u64 v[0:1], s[0:1], 2, v[0:1]
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-SDAG-LABEL: global_addr_64bit_lsr_iv_multiload:
+; GFX942-SDAG:       ; %bb.0: ; %bb
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    s_mov_b32 s0, -1
+; GFX942-SDAG-NEXT:  .LBB61_1: ; %bb5
+; GFX942-SDAG-NEXT:    ; =>This Inner Loop Header: Depth=1
+; GFX942-SDAG-NEXT:    s_add_i32 s0, s0, 1
+; GFX942-SDAG-NEXT:    s_cmpk_eq_i32 s0, 0xff
+; GFX942-SDAG-NEXT:    s_cbranch_scc0 .LBB61_1
+; GFX942-SDAG-NEXT:  ; %bb.2: ; %bb2
+; GFX942-SDAG-NEXT:    s_mov_b32 s1, 0
+; GFX942-SDAG-NEXT:    v_lshl_add_u64 v[0:1], s[0:1], 2, v[0:1]
+; GFX942-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-SDAG-LABEL: global_addr_64bit_lsr_iv_multiload:
+; GFX950-SDAG:       ; %bb.0: ; %bb
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-SDAG-NEXT:    s_mov_b32 s0, -1
+; GFX950-SDAG-NEXT:  .LBB61_1: ; %bb5
+; GFX950-SDAG-NEXT:    ; =>This Inner Loop Header: Depth=1
+; GFX950-SDAG-NEXT:    s_add_i32 s0, s0, 1
+; GFX950-SDAG-NEXT:    s_cmpk_eq_i32 s0, 0xff
+; GFX950-SDAG-NEXT:    s_cbranch_scc0 .LBB61_1
+; GFX950-SDAG-NEXT:  ; %bb.2: ; %bb2
+; GFX950-SDAG-NEXT:    s_mov_b32 s1, 0
+; GFX950-SDAG-NEXT:    v_lshl_add_u64 v[0:1], s[0:1], 2, v[0:1]
+; GFX950-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-SDAG-LABEL: global_addr_64bit_lsr_iv_multiload:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0: ; %bb
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    s_mov_b32 s4, -1
+; GFX10-1-GENERIC-SDAG-NEXT:  .LBB61_1: ; %bb5
+; GFX10-1-GENERIC-SDAG-NEXT:    ; =>This Inner Loop Header: Depth=1
+; GFX10-1-GENERIC-SDAG-NEXT:    s_add_i32 s4, s4, 1
+; GFX10-1-GENERIC-SDAG-NEXT:    s_cmpk_eq_i32 s4, 0xff
+; GFX10-1-GENERIC-SDAG-NEXT:    s_cbranch_scc0 .LBB61_1
+; GFX10-1-GENERIC-SDAG-NEXT:  ; %bb.2: ; %bb2
+; GFX10-1-GENERIC-SDAG-NEXT:    s_mov_b32 s5, 0
+; GFX10-1-GENERIC-SDAG-NEXT:    s_lshl_b64 s[4:5], s[4:5], 2
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, s4
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, s5, v1, vcc_lo
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: global_addr_64bit_lsr_iv_multiload:
+; GFX1012-SDAG:       ; %bb.0: ; %bb
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    s_mov_b32 s4, -1
+; GFX1012-SDAG-NEXT:  .LBB61_1: ; %bb5
+; GFX1012-SDAG-NEXT:    ; =>This Inner Loop Header: Depth=1
+; GFX1012-SDAG-NEXT:    s_add_i32 s4, s4, 1
+; GFX1012-SDAG-NEXT:    s_cmpk_eq_i32 s4, 0xff
+; GFX1012-SDAG-NEXT:    s_cbranch_scc0 .LBB61_1
+; GFX1012-SDAG-NEXT:  ; %bb.2: ; %bb2
+; GFX1012-SDAG-NEXT:    s_mov_b32 s5, 0
+; GFX1012-SDAG-NEXT:    s_lshl_b64 s[4:5], s[4:5], 2
+; GFX1012-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, s4
+; GFX1012-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, s5, v1, vcc_lo
+; GFX1012-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-SDAG-LABEL: global_addr_64bit_lsr_iv_multiload:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0: ; %bb
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    s_mov_b32 s4, -1
+; GFX10-3-GENERIC-SDAG-NEXT:  .LBB61_1: ; %bb5
+; GFX10-3-GENERIC-SDAG-NEXT:    ; =>This Inner Loop Header: Depth=1
+; GFX10-3-GENERIC-SDAG-NEXT:    s_add_i32 s4, s4, 1
+; GFX10-3-GENERIC-SDAG-NEXT:    s_cmpk_eq_i32 s4, 0xff
+; GFX10-3-GENERIC-SDAG-NEXT:    s_cbranch_scc0 .LBB61_1
+; GFX10-3-GENERIC-SDAG-NEXT:  ; %bb.2: ; %bb2
+; GFX10-3-GENERIC-SDAG-NEXT:    s_mov_b32 s5, 0
+; GFX10-3-GENERIC-SDAG-NEXT:    s_lshl_b64 s[4:5], s[4:5], 2
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, s4
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, s5, v1, vcc_lo
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-SDAG-LABEL: global_addr_64bit_lsr_iv_multiload:
+; GFX11-GENERIC-SDAG:       ; %bb.0: ; %bb
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    s_mov_b32 s0, -1
+; GFX11-GENERIC-SDAG-NEXT:  .LBB61_1: ; %bb5
+; GFX11-GENERIC-SDAG-NEXT:    ; =>This Inner Loop Header: Depth=1
+; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
+; GFX11-GENERIC-SDAG-NEXT:    s_add_i32 s0, s0, 1
+; GFX11-GENERIC-SDAG-NEXT:    s_cmpk_eq_i32 s0, 0xff
+; GFX11-GENERIC-SDAG-NEXT:    s_cbranch_scc0 .LBB61_1
+; GFX11-GENERIC-SDAG-NEXT:  ; %bb.2: ; %bb2
+; GFX11-GENERIC-SDAG-NEXT:    s_mov_b32 s1, 0
+; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
+; GFX11-GENERIC-SDAG-NEXT:    s_lshl_b64 s[0:1], s[0:1], 2
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, s0
+; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, s1, v1, vcc_lo
+; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: global_addr_64bit_lsr_iv_multiload:
+; GFX1250-SDAG:       ; %bb.0: ; %bb
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    s_mov_b32 s0, -1
+; GFX1250-SDAG-NEXT:  .LBB61_1: ; %bb5
+; GFX1250-SDAG-NEXT:    ; =>This Inner Loop Header: Depth=1
+; GFX1250-SDAG-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
+; GFX1250-SDAG-NEXT:    s_add_co_i32 s0, s0, 1
+; GFX1250-SDAG-NEXT:    s_cmp_eq_u32 s0, 0xff
+; GFX1250-SDAG-NEXT:    s_cbranch_scc0 .LBB61_1
+; GFX1250-SDAG-NEXT:  ; %bb.2: ; %bb2
+; GFX1250-SDAG-NEXT:    s_mov_b32 s1, 0
+; GFX1250-SDAG-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX1250-SDAG-NEXT:    v_lshl_add_u64 v[0:1], s[0:1], 2, v[0:1]
+; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-SDAG-LABEL: global_addr_64bit_lsr_iv_multiload:
+; GFX12-GENERIC-SDAG:       ; %bb.0: ; %bb
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_mov_b32 s0, -1
+; GFX12-GENERIC-SDAG-NEXT:  .LBB61_1: ; %bb5
+; GFX12-GENERIC-SDAG-NEXT:    ; =>This Inner Loop Header: Depth=1
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_alu depctr_sa_sdst(0)
+; GFX12-GENERIC-SDAG-NEXT:    s_add_co_i32 s0, s0, 1
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_alu depctr_sa_sdst(0)
+; GFX12-GENERIC-SDAG-NEXT:    s_cmp_eq_u32 s0, 0xff
+; GFX12-GENERIC-SDAG-NEXT:    s_cbranch_scc0 .LBB61_1
+; GFX12-GENERIC-SDAG-NEXT:  ; %bb.2: ; %bb2
+; GFX12-GENERIC-SDAG-NEXT:    s_mov_b32 s1, 0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_alu depctr_sa_sdst(0)
+; GFX12-GENERIC-SDAG-NEXT:    s_lshl_b64 s[0:1], s[0:1], 2
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_alu depctr_sa_sdst(0)
+; GFX12-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, s0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)
+; GFX12-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, s1, v1, vcc_lo
+; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SE
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-GENERIC-ISEL-LABEL: global_addr_64bit_lsr_iv_multiload:
+; GFX9-GENERIC-ISEL:       ; %bb.0: ; %bb
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_mov_b32 s4, -1
+; GFX9-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v3, 0xff
+; GFX9-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v2, s4
+; GFX9-GENERIC-ISEL-NEXT:  .LBB61_1: ; %bb5
+; GFX9-GENERIC-ISEL-NEXT:    ; =>This Inner Loop Header: Depth=1
+; GFX9-GENERIC-ISEL-NEXT:    v_add_u32_e32 v2, 1, v2
+; GFX9-GENERIC-ISEL-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v3
+; GFX9-GENERIC-ISEL-NEXT:    s_cbranch_vccz .LBB61_1
+; GFX9-GENERIC-ISEL-NEXT:  ; %bb.2: ; %bb2
+; GFX9-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v3, 0
+; GFX9-GENERIC-ISEL-NEXT:    v_lshlrev_b64 v[2:3], 2, v[2:3]
+; GFX9-GENERIC-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX9-GENERIC-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, v1, v3, vcc
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-ISEL-LABEL: global_addr_64bit_lsr_iv_multiload:
+; GFX906-ISEL:       ; %bb.0: ; %bb
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-ISEL-NEXT:    s_mov_b32 s4, -1
+; GFX906-ISEL-NEXT:    v_mov_b32_e32 v3, 0xff
+; GFX906-ISEL-NEXT:    v_mov_b32_e32 v2, s4
+; GFX906-ISEL-NEXT:  .LBB61_1: ; %bb5
+; GFX906-ISEL-NEXT:    ; =>This Inner Loop Header: Depth=1
+; GFX906-ISEL-NEXT:    v_add_u32_e32 v2, 1, v2
+; GFX906-ISEL-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v3
+; GFX906-ISEL-NEXT:    s_cbranch_vccz .LBB61_1
+; GFX906-ISEL-NEXT:  ; %bb.2: ; %bb2
+; GFX906-ISEL-NEXT:    v_mov_b32_e32 v3, 0
+; GFX906-ISEL-NEXT:    v_lshlrev_b64 v[2:3], 2, v[2:3]
+; GFX906-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX906-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, v1, v3, vcc
+; GFX906-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-ISEL-LABEL: global_addr_64bit_lsr_iv_multiload:
+; GFX908-ISEL:       ; %bb.0: ; %bb
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-ISEL-NEXT:    s_mov_b32 s4, -1
+; GFX908-ISEL-NEXT:    v_mov_b32_e32 v3, 0xff
+; GFX908-ISEL-NEXT:    v_mov_b32_e32 v2, s4
+; GFX908-ISEL-NEXT:  .LBB61_1: ; %bb5
+; GFX908-ISEL-NEXT:    ; =>This Inner Loop Header: Depth=1
+; GFX908-ISEL-NEXT:    v_add_u32_e32 v2, 1, v2
+; GFX908-ISEL-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v3
+; GFX908-ISEL-NEXT:    s_cbranch_vccz .LBB61_1
+; GFX908-ISEL-NEXT:  ; %bb.2: ; %bb2
+; GFX908-ISEL-NEXT:    v_mov_b32_e32 v3, 0
+; GFX908-ISEL-NEXT:    v_lshlrev_b64 v[2:3], 2, v[2:3]
+; GFX908-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX908-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, v1, v3, vcc
+; GFX908-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-ISEL-LABEL: global_addr_64bit_lsr_iv_multiload:
+; GFX90A-ISEL:       ; %bb.0: ; %bb
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-ISEL-NEXT:    s_mov_b32 s4, -1
+; GFX90A-ISEL-NEXT:    v_mov_b32_e32 v3, 0xff
+; GFX90A-ISEL-NEXT:    v_mov_b32_e32 v2, s4
+; GFX90A-ISEL-NEXT:  .LBB61_1: ; %bb5
+; GFX90A-ISEL-NEXT:    ; =>This Inner Loop Header: Depth=1
+; GFX90A-ISEL-NEXT:    v_add_u32_e32 v2, 1, v2
+; GFX90A-ISEL-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v3
+; GFX90A-ISEL-NEXT:    s_cbranch_vccz .LBB61_1
+; GFX90A-ISEL-NEXT:  ; %bb.2: ; %bb2
+; GFX90A-ISEL-NEXT:    v_mov_b32_e32 v3, 0
+; GFX90A-ISEL-NEXT:    v_lshlrev_b64 v[2:3], 2, v[2:3]
+; GFX90A-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX90A-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, v1, v3, vcc
+; GFX90A-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-ISEL-LABEL: global_addr_64bit_lsr_iv_multiload:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0: ; %bb
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_mov_b32 s0, -1
+; GFX9-4-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v3, 0xff
+; GFX9-4-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v2, s0
+; GFX9-4-GENERIC-ISEL-NEXT:  .LBB61_1: ; %bb5
+; GFX9-4-GENERIC-ISEL-NEXT:    ; =>This Inner Loop Header: Depth=1
+; GFX9-4-GENERIC-ISEL-NEXT:    v_add_u32_e32 v2, 1, v2
+; GFX9-4-GENERIC-ISEL-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v3
+; GFX9-4-GENERIC-ISEL-NEXT:    s_cbranch_vccz .LBB61_1
+; GFX9-4-GENERIC-ISEL-NEXT:  ; %bb.2: ; %bb2
+; GFX9-4-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v3, 0
+; GFX9-4-GENERIC-ISEL-NEXT:    v_lshl_add_u64 v[0:1], v[2:3], 2, v[0:1]
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-ISEL-LABEL: global_addr_64bit_lsr_iv_multiload:
+; GFX942-ISEL:       ; %bb.0: ; %bb
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    s_mov_b32 s0, -1
+; GFX942-ISEL-NEXT:    v_mov_b32_e32 v3, 0xff
+; GFX942-ISEL-NEXT:    v_mov_b32_e32 v2, s0
+; GFX942-ISEL-NEXT:  .LBB61_1: ; %bb5
+; GFX942-ISEL-NEXT:    ; =>This Inner Loop Header: Depth=1
+; GFX942-ISEL-NEXT:    v_add_u32_e32 v2, 1, v2
+; GFX942-ISEL-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v3
+; GFX942-ISEL-NEXT:    s_cbranch_vccz .LBB61_1
+; GFX942-ISEL-NEXT:  ; %bb.2: ; %bb2
+; GFX942-ISEL-NEXT:    v_mov_b32_e32 v3, 0
+; GFX942-ISEL-NEXT:    v_lshl_add_u64 v[0:1], v[2:3], 2, v[0:1]
+; GFX942-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-ISEL-LABEL: global_addr_64bit_lsr_iv_multiload:
+; GFX950-ISEL:       ; %bb.0: ; %bb
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-ISEL-NEXT:    s_mov_b32 s0, -1
+; GFX950-ISEL-NEXT:    v_mov_b32_e32 v3, 0xff
+; GFX950-ISEL-NEXT:    v_mov_b32_e32 v2, s0
+; GFX950-ISEL-NEXT:  .LBB61_1: ; %bb5
+; GFX950-ISEL-NEXT:    ; =>This Inner Loop Header: Depth=1
+; GFX950-ISEL-NEXT:    v_add_u32_e32 v2, 1, v2
+; GFX950-ISEL-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v3
+; GFX950-ISEL-NEXT:    s_cbranch_vccz .LBB61_1
+; GFX950-ISEL-NEXT:  ; %bb.2: ; %bb2
+; GFX950-ISEL-NEXT:    v_mov_b32_e32 v3, 0
+; GFX950-ISEL-NEXT:    v_lshl_add_u64 v[0:1], v[2:3], 2, v[0:1]
+; GFX950-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-ISEL-LABEL: global_addr_64bit_lsr_iv_multiload:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0: ; %bb
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_mov_b32 s4, -1
+; GFX10-1-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v2, s4
+; GFX10-1-GENERIC-ISEL-NEXT:  .LBB61_1: ; %bb5
+; GFX10-1-GENERIC-ISEL-NEXT:    ; =>This Inner Loop Header: Depth=1
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_nc_u32_e32 v2, 1, v2
+; GFX10-1-GENERIC-ISEL-NEXT:    v_cmp_eq_u32_e32 vcc_lo, 0xff, v2
+; GFX10-1-GENERIC-ISEL-NEXT:    s_cbranch_vccz .LBB61_1
+; GFX10-1-GENERIC-ISEL-NEXT:  ; %bb.2: ; %bb2
+; GFX10-1-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v3, 0
+; GFX10-1-GENERIC-ISEL-NEXT:    v_lshlrev_b64 v[2:3], 2, v[2:3]
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, v1, v3, vcc_lo
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: global_addr_64bit_lsr_iv_multiload:
+; GFX1012-ISEL:       ; %bb.0: ; %bb
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    s_mov_b32 s4, -1
+; GFX1012-ISEL-NEXT:    v_mov_b32_e32 v2, s4
+; GFX1012-ISEL-NEXT:  .LBB61_1: ; %bb5
+; GFX1012-ISEL-NEXT:    ; =>This Inner Loop Header: Depth=1
+; GFX1012-ISEL-NEXT:    v_add_nc_u32_e32 v2, 1, v2
+; GFX1012-ISEL-NEXT:    v_cmp_eq_u32_e32 vcc_lo, 0xff, v2
+; GFX1012-ISEL-NEXT:    s_cbranch_vccz .LBB61_1
+; GFX1012-ISEL-NEXT:  ; %bb.2: ; %bb2
+; GFX1012-ISEL-NEXT:    v_mov_b32_e32 v3, 0
+; GFX1012-ISEL-NEXT:    v_lshlrev_b64 v[2:3], 2, v[2:3]
+; GFX1012-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX1012-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, v1, v3, vcc_lo
+; GFX1012-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-ISEL-LABEL: global_addr_64bit_lsr_iv_multiload:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0: ; %bb
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_mov_b32 s4, -1
+; GFX10-3-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v2, s4
+; GFX10-3-GENERIC-ISEL-NEXT:  .LBB61_1: ; %bb5
+; GFX10-3-GENERIC-ISEL-NEXT:    ; =>This Inner Loop Header: Depth=1
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_nc_u32_e32 v2, 1, v2
+; GFX10-3-GENERIC-ISEL-NEXT:    v_cmp_eq_u32_e32 vcc_lo, 0xff, v2
+; GFX10-3-GENERIC-ISEL-NEXT:    s_cbranch_vccz .LBB61_1
+; GFX10-3-GENERIC-ISEL-NEXT:  ; %bb.2: ; %bb2
+; GFX10-3-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v3, 0
+; GFX10-3-GENERIC-ISEL-NEXT:    v_lshlrev_b64 v[2:3], 2, v[2:3]
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, v1, v3, vcc_lo
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-ISEL-LABEL: global_addr_64bit_lsr_iv_multiload:
+; GFX11-GENERIC-ISEL:       ; %bb.0: ; %bb
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_mov_b32 s0, -1
+; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX11-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v2, s0
+; GFX11-GENERIC-ISEL-NEXT:  .LBB61_1: ; %bb5
+; GFX11-GENERIC-ISEL-NEXT:    ; =>This Inner Loop Header: Depth=1
+; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX11-GENERIC-ISEL-NEXT:    v_add_nc_u32_e32 v2, 1, v2
+; GFX11-GENERIC-ISEL-NEXT:    v_cmp_eq_u32_e32 vcc_lo, 0xff, v2
+; GFX11-GENERIC-ISEL-NEXT:    s_cbranch_vccz .LBB61_1
+; GFX11-GENERIC-ISEL-NEXT:  ; %bb.2: ; %bb2
+; GFX11-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v3, 0
+; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX11-GENERIC-ISEL-NEXT:    v_lshlrev_b64 v[2:3], 2, v[2:3]
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, v1, v3, vcc_lo
+; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: global_addr_64bit_lsr_iv_multiload:
+; GFX1250-ISEL:       ; %bb.0: ; %bb
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    s_mov_b32 s0, -1
+; GFX1250-ISEL-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX1250-ISEL-NEXT:    v_mov_b32_e32 v2, s0
+; GFX1250-ISEL-NEXT:  .LBB61_1: ; %bb5
+; GFX1250-ISEL-NEXT:    ; =>This Inner Loop Header: Depth=1
+; GFX1250-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX1250-ISEL-NEXT:    v_add_nc_u32_e32 v2, 1, v2
+; GFX1250-ISEL-NEXT:    v_cmp_eq_u32_e32 vcc_lo, 0xff, v2
+; GFX1250-ISEL-NEXT:    s_cbranch_vccz .LBB61_1
+; GFX1250-ISEL-NEXT:  ; %bb.2: ; %bb2
+; GFX1250-ISEL-NEXT:    v_mov_b32_e32 v3, 0
+; GFX1250-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX1250-ISEL-NEXT:    v_lshl_add_u64 v[0:1], v[2:3], 2, v[0:1]
+; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-ISEL-LABEL: global_addr_64bit_lsr_iv_multiload:
+; GFX12-GENERIC-ISEL:       ; %bb.0: ; %bb
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_mov_b32 s0, -1
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_alu depctr_sa_sdst(0)
+; GFX12-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v2, s0
+; GFX12-GENERIC-ISEL-NEXT:  .LBB61_1: ; %bb5
+; GFX12-GENERIC-ISEL-NEXT:    ; =>This Inner Loop Header: Depth=1
+; GFX12-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX12-GENERIC-ISEL-NEXT:    v_add_nc_u32_e32 v2, 1, v2
+; GFX12-GENERIC-ISEL-NEXT:    v_cmp_eq_u32_e32 vcc_lo, 0xff, v2
+; GFX12-GENERIC-ISEL-NEXT:    s_cbranch_vccz .LBB61_1
+; GFX12-GENERIC-ISEL-NEXT:  ; %bb.2: ; %bb2
+; GFX12-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v3, 0
+; GFX12-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX12-GENERIC-ISEL-NEXT:    v_lshlrev_b64_e32 v[2:3], 2, v[2:3]
+; GFX12-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_alu depctr_va_vcc(0)
+; GFX12-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_2)
+; GFX12-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, v1, v3, vcc_lo
+; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SE
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+bb:
+  br label %bb5
+
+bb2:
+  %y = icmp eq i32 %x, 0
+  br i1 %y, label %bb3, label %bb4
+
+bb3:
+  ret <4 x float> %i6
+
+bb4:
+  ret <4 x float> %i6.1
+
+bb5:
+  %i = phi i32 [ 0, %bb ], [ %i8, %bb5 ]
+  %i4 = zext i32 %i to i64
+  %i5 = getelementptr inbounds float, ptr addrspace(1) %arg, i64 %i4
+  %load = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %i5, metadata !1)
+  %i6 = bitcast <4 x i32> %load to <4 x float>
+  %i5.1 = getelementptr inbounds float, ptr addrspace(1) %arg.1, i64 %i4
+  %load.1 = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %i5, metadata !2)
+  %i6.1 = bitcast <4 x i32> %load to <4 x float>
+  %i8 = add nuw nsw i32 %i, 1
+  %i9 = icmp eq i32 %i8, 256
+  br i1 %i9, label %bb2, label %bb5
+}
+;;==============================================================================
+;; } end signed offset addressing modes
+;;==============================================================================
+
+;;==============================================================================
+;; Various saddr addressing modes (derived from global-saddr-load.ll) {
+;;==============================================================================
+
+;;------------------------------------------------------------------------------
+;; No vgpr offset, constants
+;;------------------------------------------------------------------------------
+
+;; SGPR base only
+define <4 x float> @global_load_saddr_i8_offset_0(ptr addrspace(1) inreg %sbase) {
+; GFX9-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_0:
+; GFX9-GENERIC-SDAG:       ; %bb.0:
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-SDAG-LABEL: global_load_saddr_i8_offset_0:
+; GFX906-SDAG:       ; %bb.0:
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX906-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-SDAG-LABEL: global_load_saddr_i8_offset_0:
+; GFX908-SDAG:       ; %bb.0:
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX908-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-SDAG-LABEL: global_load_saddr_i8_offset_0:
+; GFX90A-SDAG:       ; %bb.0:
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX90A-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_0:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0:
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] sc0 sc1
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-SDAG-LABEL: global_load_saddr_i8_offset_0:
+; GFX942-SDAG:       ; %bb.0:
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX942-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] sc0 sc1
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-SDAG-LABEL: global_load_saddr_i8_offset_0:
+; GFX950-SDAG:       ; %bb.0:
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX950-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] sc0 sc1
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_0:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0:
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc dlc
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: global_load_saddr_i8_offset_0:
+; GFX1012-SDAG:       ; %bb.0:
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX1012-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc dlc
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_0:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0:
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc dlc
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_0:
+; GFX11-GENERIC-SDAG:       ; %bb.0:
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] glc
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: global_load_saddr_i8_offset_0:
+; GFX1250-SDAG:       ; %bb.0:
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] scope:SCOPE_SYS
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_0:
+; GFX12-GENERIC-SDAG:       ; %bb.0:
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] scope:SCOPE_SYS
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_0:
+; GFX9-GENERIC-ISEL:       ; %bb.0:
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-ISEL-LABEL: global_load_saddr_i8_offset_0:
+; GFX906-ISEL:       ; %bb.0:
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX906-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-ISEL-LABEL: global_load_saddr_i8_offset_0:
+; GFX908-ISEL:       ; %bb.0:
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX908-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-ISEL-LABEL: global_load_saddr_i8_offset_0:
+; GFX90A-ISEL:       ; %bb.0:
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX90A-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_0:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0:
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] sc0 sc1
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-ISEL-LABEL: global_load_saddr_i8_offset_0:
+; GFX942-ISEL:       ; %bb.0:
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX942-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] sc0 sc1
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-ISEL-LABEL: global_load_saddr_i8_offset_0:
+; GFX950-ISEL:       ; %bb.0:
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX950-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] sc0 sc1
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_0:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0:
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc dlc
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: global_load_saddr_i8_offset_0:
+; GFX1012-ISEL:       ; %bb.0:
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX1012-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc dlc
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_0:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0:
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc dlc
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_0:
+; GFX11-GENERIC-ISEL:       ; %bb.0:
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] glc
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: global_load_saddr_i8_offset_0:
+; GFX1250-ISEL:       ; %bb.0:
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] scope:SCOPE_SYS
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_0:
+; GFX12-GENERIC-ISEL:       ; %bb.0:
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] scope:SCOPE_SYS
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+  %load = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %sbase, metadata !3)
+  %cast.load = bitcast <4 x i32> %load to <4 x float>
+  ret <4 x float> %cast.load
+}
+
+;; SGPR base with maximum gfx9 immediate offset
+define <4 x float> @global_load_saddr_i8_offset_4095(ptr addrspace(1) inreg %sbase) {
+; GFX9-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_4095:
+; GFX9-GENERIC-SDAG:       ; %bb.0:
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:4095
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-SDAG-LABEL: global_load_saddr_i8_offset_4095:
+; GFX906-SDAG:       ; %bb.0:
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX906-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:4095
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-SDAG-LABEL: global_load_saddr_i8_offset_4095:
+; GFX908-SDAG:       ; %bb.0:
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX908-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:4095
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-SDAG-LABEL: global_load_saddr_i8_offset_4095:
+; GFX90A-SDAG:       ; %bb.0:
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX90A-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:4095
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_4095:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0:
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:4095
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-SDAG-LABEL: global_load_saddr_i8_offset_4095:
+; GFX942-SDAG:       ; %bb.0:
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX942-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:4095
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-SDAG-LABEL: global_load_saddr_i8_offset_4095:
+; GFX950-SDAG:       ; %bb.0:
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX950-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:4095
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_4095:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0:
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0x800
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:2047
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: global_load_saddr_i8_offset_4095:
+; GFX1012-SDAG:       ; %bb.0:
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    v_mov_b32_e32 v0, 0x800
+; GFX1012-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:2047
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_4095:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0:
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0x800
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:2047
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_4095:
+; GFX11-GENERIC-SDAG:       ; %bb.0:
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:4095
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: global_load_saddr_i8_offset_4095:
+; GFX1250-SDAG:       ; %bb.0:
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:4095
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_4095:
+; GFX12-GENERIC-SDAG:       ; %bb.0:
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:4095
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_4095:
+; GFX9-GENERIC-ISEL:       ; %bb.0:
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:4095
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-ISEL-LABEL: global_load_saddr_i8_offset_4095:
+; GFX906-ISEL:       ; %bb.0:
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX906-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:4095
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-ISEL-LABEL: global_load_saddr_i8_offset_4095:
+; GFX908-ISEL:       ; %bb.0:
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX908-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:4095
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-ISEL-LABEL: global_load_saddr_i8_offset_4095:
+; GFX90A-ISEL:       ; %bb.0:
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX90A-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:4095
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_4095:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0:
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:4095
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-ISEL-LABEL: global_load_saddr_i8_offset_4095:
+; GFX942-ISEL:       ; %bb.0:
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX942-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:4095
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-ISEL-LABEL: global_load_saddr_i8_offset_4095:
+; GFX950-ISEL:       ; %bb.0:
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX950-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:4095
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_4095:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0:
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0x800
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:2047
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: global_load_saddr_i8_offset_4095:
+; GFX1012-ISEL:       ; %bb.0:
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    v_mov_b32_e32 v0, 0x800
+; GFX1012-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:2047
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_4095:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0:
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0x800
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:2047
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_4095:
+; GFX11-GENERIC-ISEL:       ; %bb.0:
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:4095
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: global_load_saddr_i8_offset_4095:
+; GFX1250-ISEL:       ; %bb.0:
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:4095
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_4095:
+; GFX12-GENERIC-ISEL:       ; %bb.0:
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:4095
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+  %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 4095
+  %load = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %gep0, metadata !0)
+  %cast.load = bitcast <4 x i32> %load to <4 x float>
+  ret <4 x float> %cast.load
+}
+
+;; SGPR base with maximum gfx9 immediate offset + 1
+define <4 x float> @global_load_saddr_i8_offset_4096(ptr addrspace(1) inreg %sbase) {
+; GFX9-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_4096:
+; GFX9-GENERIC-SDAG:       ; %bb.0:
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0x1000
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17]
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-SDAG-LABEL: global_load_saddr_i8_offset_4096:
+; GFX906-SDAG:       ; %bb.0:
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-SDAG-NEXT:    v_mov_b32_e32 v0, 0x1000
+; GFX906-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17]
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-SDAG-LABEL: global_load_saddr_i8_offset_4096:
+; GFX908-SDAG:       ; %bb.0:
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-SDAG-NEXT:    v_mov_b32_e32 v0, 0x1000
+; GFX908-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17]
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-SDAG-LABEL: global_load_saddr_i8_offset_4096:
+; GFX90A-SDAG:       ; %bb.0:
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-SDAG-NEXT:    v_mov_b32_e32 v0, 0x1000
+; GFX90A-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17]
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_4096:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0:
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0x1000
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] sc0
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-SDAG-LABEL: global_load_saddr_i8_offset_4096:
+; GFX942-SDAG:       ; %bb.0:
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    v_mov_b32_e32 v0, 0x1000
+; GFX942-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] sc0
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-SDAG-LABEL: global_load_saddr_i8_offset_4096:
+; GFX950-SDAG:       ; %bb.0:
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-SDAG-NEXT:    v_mov_b32_e32 v0, 0x1000
+; GFX950-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] sc0
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_4096:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0:
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0x1000
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: global_load_saddr_i8_offset_4096:
+; GFX1012-SDAG:       ; %bb.0:
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    v_mov_b32_e32 v0, 0x1000
+; GFX1012-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_4096:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0:
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0x1000
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_4096:
+; GFX11-GENERIC-SDAG:       ; %bb.0:
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0x1000
+; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] glc
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: global_load_saddr_i8_offset_4096:
+; GFX1250-SDAG:       ; %bb.0:
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:4096
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_4096:
+; GFX12-GENERIC-SDAG:       ; %bb.0:
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:4096 scope:SCOPE_SE
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_4096:
+; GFX9-GENERIC-ISEL:       ; %bb.0:
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0x1000
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17]
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-ISEL-LABEL: global_load_saddr_i8_offset_4096:
+; GFX906-ISEL:       ; %bb.0:
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-ISEL-NEXT:    v_mov_b32_e32 v0, 0x1000
+; GFX906-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17]
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-ISEL-LABEL: global_load_saddr_i8_offset_4096:
+; GFX908-ISEL:       ; %bb.0:
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-ISEL-NEXT:    v_mov_b32_e32 v0, 0x1000
+; GFX908-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17]
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-ISEL-LABEL: global_load_saddr_i8_offset_4096:
+; GFX90A-ISEL:       ; %bb.0:
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-ISEL-NEXT:    v_mov_b32_e32 v0, 0x1000
+; GFX90A-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17]
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_4096:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0:
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0x1000
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] sc0
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-ISEL-LABEL: global_load_saddr_i8_offset_4096:
+; GFX942-ISEL:       ; %bb.0:
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    v_mov_b32_e32 v0, 0x1000
+; GFX942-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] sc0
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-ISEL-LABEL: global_load_saddr_i8_offset_4096:
+; GFX950-ISEL:       ; %bb.0:
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-ISEL-NEXT:    v_mov_b32_e32 v0, 0x1000
+; GFX950-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] sc0
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_4096:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0:
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0x1000
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: global_load_saddr_i8_offset_4096:
+; GFX1012-ISEL:       ; %bb.0:
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    v_mov_b32_e32 v0, 0x1000
+; GFX1012-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_4096:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0:
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0x1000
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_4096:
+; GFX11-GENERIC-ISEL:       ; %bb.0:
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0x1000
+; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] glc
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: global_load_saddr_i8_offset_4096:
+; GFX1250-ISEL:       ; %bb.0:
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:4096
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_4096:
+; GFX12-GENERIC-ISEL:       ; %bb.0:
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:4096 scope:SCOPE_SE
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+  %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 4096
+  %load = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %gep0, metadata !1)
+  %cast.load = bitcast <4 x i32> %load to <4 x float>
+  ret <4 x float> %cast.load
+}
+
+;; SGPR base with maximum gfx9 immediate offset + 2
+define <4 x float> @global_load_saddr_i8_offset_4097(ptr addrspace(1) inreg %sbase) {
+; GFX9-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_4097:
+; GFX9-GENERIC-SDAG:       ; %bb.0:
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0x1000
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:1 glc
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-SDAG-LABEL: global_load_saddr_i8_offset_4097:
+; GFX906-SDAG:       ; %bb.0:
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-SDAG-NEXT:    v_mov_b32_e32 v0, 0x1000
+; GFX906-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:1 glc
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-SDAG-LABEL: global_load_saddr_i8_offset_4097:
+; GFX908-SDAG:       ; %bb.0:
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-SDAG-NEXT:    v_mov_b32_e32 v0, 0x1000
+; GFX908-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:1 glc
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-SDAG-LABEL: global_load_saddr_i8_offset_4097:
+; GFX90A-SDAG:       ; %bb.0:
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-SDAG-NEXT:    v_mov_b32_e32 v0, 0x1000
+; GFX90A-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:1 glc
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_4097:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0:
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0x1000
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:1 sc1
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-SDAG-LABEL: global_load_saddr_i8_offset_4097:
+; GFX942-SDAG:       ; %bb.0:
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    v_mov_b32_e32 v0, 0x1000
+; GFX942-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:1 sc1
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-SDAG-LABEL: global_load_saddr_i8_offset_4097:
+; GFX950-SDAG:       ; %bb.0:
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-SDAG-NEXT:    v_mov_b32_e32 v0, 0x1000
+; GFX950-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:1 sc1
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_4097:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0:
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0x1000
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:1 glc dlc
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: global_load_saddr_i8_offset_4097:
+; GFX1012-SDAG:       ; %bb.0:
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    v_mov_b32_e32 v0, 0x1000
+; GFX1012-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:1 glc dlc
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_4097:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0:
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0x1000
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:1 glc dlc
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_4097:
+; GFX11-GENERIC-SDAG:       ; %bb.0:
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0x1000
+; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:1 glc
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: global_load_saddr_i8_offset_4097:
+; GFX1250-SDAG:       ; %bb.0:
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:4097 scope:SCOPE_DEV
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_4097:
+; GFX12-GENERIC-SDAG:       ; %bb.0:
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:4097 scope:SCOPE_DEV
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_4097:
+; GFX9-GENERIC-ISEL:       ; %bb.0:
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0x1000
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:1 glc
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-ISEL-LABEL: global_load_saddr_i8_offset_4097:
+; GFX906-ISEL:       ; %bb.0:
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-ISEL-NEXT:    v_mov_b32_e32 v0, 0x1000
+; GFX906-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:1 glc
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-ISEL-LABEL: global_load_saddr_i8_offset_4097:
+; GFX908-ISEL:       ; %bb.0:
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-ISEL-NEXT:    v_mov_b32_e32 v0, 0x1000
+; GFX908-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:1 glc
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-ISEL-LABEL: global_load_saddr_i8_offset_4097:
+; GFX90A-ISEL:       ; %bb.0:
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-ISEL-NEXT:    v_mov_b32_e32 v0, 0x1000
+; GFX90A-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:1 glc
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_4097:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0:
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0x1000
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:1 sc1
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-ISEL-LABEL: global_load_saddr_i8_offset_4097:
+; GFX942-ISEL:       ; %bb.0:
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    v_mov_b32_e32 v0, 0x1000
+; GFX942-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:1 sc1
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-ISEL-LABEL: global_load_saddr_i8_offset_4097:
+; GFX950-ISEL:       ; %bb.0:
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-ISEL-NEXT:    v_mov_b32_e32 v0, 0x1000
+; GFX950-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:1 sc1
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_4097:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0:
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0x1000
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:1 glc dlc
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: global_load_saddr_i8_offset_4097:
+; GFX1012-ISEL:       ; %bb.0:
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    v_mov_b32_e32 v0, 0x1000
+; GFX1012-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:1 glc dlc
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_4097:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0:
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0x1000
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:1 glc dlc
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_4097:
+; GFX11-GENERIC-ISEL:       ; %bb.0:
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0x1000
+; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:1 glc
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: global_load_saddr_i8_offset_4097:
+; GFX1250-ISEL:       ; %bb.0:
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:4097 scope:SCOPE_DEV
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_4097:
+; GFX12-GENERIC-ISEL:       ; %bb.0:
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:4097 scope:SCOPE_DEV
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+  %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 4097
+  %load = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %gep0, metadata !2)
+  %cast.load = bitcast <4 x i32> %load to <4 x float>
+  ret <4 x float> %cast.load
+}
+
+;; SGPR base with maximum negative gfx9 immediate offset
+define <4 x float> @global_load_saddr_i8_offset_neg4096(ptr addrspace(1) inreg %sbase) {
+; GFX9-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_neg4096:
+; GFX9-GENERIC-SDAG:       ; %bb.0:
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:-4096 glc
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-SDAG-LABEL: global_load_saddr_i8_offset_neg4096:
+; GFX906-SDAG:       ; %bb.0:
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX906-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:-4096 glc
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-SDAG-LABEL: global_load_saddr_i8_offset_neg4096:
+; GFX908-SDAG:       ; %bb.0:
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX908-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:-4096 glc
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-SDAG-LABEL: global_load_saddr_i8_offset_neg4096:
+; GFX90A-SDAG:       ; %bb.0:
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX90A-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:-4096 glc
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_neg4096:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0:
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:-4096 sc0 sc1
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-SDAG-LABEL: global_load_saddr_i8_offset_neg4096:
+; GFX942-SDAG:       ; %bb.0:
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX942-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:-4096 sc0 sc1
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-SDAG-LABEL: global_load_saddr_i8_offset_neg4096:
+; GFX950-SDAG:       ; %bb.0:
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX950-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:-4096 sc0 sc1
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_neg4096:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0:
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, s4, 0xfffff000, s16
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, s4, -1, s17, s4
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: global_load_saddr_i8_offset_neg4096:
+; GFX1012-SDAG:       ; %bb.0:
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    v_add_co_u32 v0, s4, 0xfffff000, s16
+; GFX1012-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, s4, -1, s17, s4
+; GFX1012-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_neg4096:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0:
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, s4, 0xfffff000, s16
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, s17, s4
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_neg4096:
+; GFX11-GENERIC-SDAG:       ; %bb.0:
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-4096 glc
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: global_load_saddr_i8_offset_neg4096:
+; GFX1250-SDAG:       ; %bb.0:
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-4096 scope:SCOPE_SYS
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_neg4096:
+; GFX12-GENERIC-SDAG:       ; %bb.0:
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-4096 scope:SCOPE_SYS
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_neg4096:
+; GFX9-GENERIC-ISEL:       ; %bb.0:
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:-4096 glc
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-ISEL-LABEL: global_load_saddr_i8_offset_neg4096:
+; GFX906-ISEL:       ; %bb.0:
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX906-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:-4096 glc
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-ISEL-LABEL: global_load_saddr_i8_offset_neg4096:
+; GFX908-ISEL:       ; %bb.0:
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX908-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:-4096 glc
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-ISEL-LABEL: global_load_saddr_i8_offset_neg4096:
+; GFX90A-ISEL:       ; %bb.0:
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX90A-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:-4096 glc
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_neg4096:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0:
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:-4096 sc0 sc1
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-ISEL-LABEL: global_load_saddr_i8_offset_neg4096:
+; GFX942-ISEL:       ; %bb.0:
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX942-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:-4096 sc0 sc1
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-ISEL-LABEL: global_load_saddr_i8_offset_neg4096:
+; GFX950-ISEL:       ; %bb.0:
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX950-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:-4096 sc0 sc1
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_neg4096:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0:
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_add_u32 s4, s16, 0xfffff000
+; GFX10-1-GENERIC-ISEL-NEXT:    s_addc_u32 s5, s17, -1
+; GFX10-1-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, s4
+; GFX10-1-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v1, s5
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: global_load_saddr_i8_offset_neg4096:
+; GFX1012-ISEL:       ; %bb.0:
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    s_add_u32 s4, s16, 0xfffff000
+; GFX1012-ISEL-NEXT:    s_addc_u32 s5, s17, -1
+; GFX1012-ISEL-NEXT:    v_mov_b32_e32 v0, s4
+; GFX1012-ISEL-NEXT:    v_mov_b32_e32 v1, s5
+; GFX1012-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_neg4096:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0:
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_add_u32 s4, s16, 0xfffff000
+; GFX10-3-GENERIC-ISEL-NEXT:    s_addc_u32 s5, s17, -1
+; GFX10-3-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, s4
+; GFX10-3-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v1, s5
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_neg4096:
+; GFX11-GENERIC-ISEL:       ; %bb.0:
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-4096 glc
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: global_load_saddr_i8_offset_neg4096:
+; GFX1250-ISEL:       ; %bb.0:
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-4096 scope:SCOPE_SYS
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_neg4096:
+; GFX12-GENERIC-ISEL:       ; %bb.0:
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-4096 scope:SCOPE_SYS
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+  %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 -4096
+  %load = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %gep0, metadata !3)
+  %cast.load = bitcast <4 x i32> %load to <4 x float>
+  ret <4 x float> %cast.load
+}
+
+;; SGPR base with maximum negative gfx9 immediate offset -1
+define <4 x float> @global_load_saddr_i8_offset_neg4097(ptr addrspace(1) inreg %sbase) {
+; GFX9-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_neg4097:
+; GFX9-GENERIC-SDAG:       ; %bb.0:
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_add_u32 s4, s16, 0xffffefff
+; GFX9-GENERIC-SDAG-NEXT:    s_addc_u32 s5, s17, -1
+; GFX9-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[4:5]
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-SDAG-LABEL: global_load_saddr_i8_offset_neg4097:
+; GFX906-SDAG:       ; %bb.0:
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-SDAG-NEXT:    s_add_u32 s4, s16, 0xffffefff
+; GFX906-SDAG-NEXT:    s_addc_u32 s5, s17, -1
+; GFX906-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX906-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[4:5]
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-SDAG-LABEL: global_load_saddr_i8_offset_neg4097:
+; GFX908-SDAG:       ; %bb.0:
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-SDAG-NEXT:    s_add_u32 s4, s16, 0xffffefff
+; GFX908-SDAG-NEXT:    s_addc_u32 s5, s17, -1
+; GFX908-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX908-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[4:5]
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-SDAG-LABEL: global_load_saddr_i8_offset_neg4097:
+; GFX90A-SDAG:       ; %bb.0:
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-SDAG-NEXT:    s_add_u32 s4, s16, 0xffffefff
+; GFX90A-SDAG-NEXT:    s_addc_u32 s5, s17, -1
+; GFX90A-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX90A-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[4:5]
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_neg4097:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0:
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_add_u32 s0, s0, 0xffffefff
+; GFX9-4-GENERIC-SDAG-NEXT:    s_addc_u32 s1, s1, -1
+; GFX9-4-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1]
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-SDAG-LABEL: global_load_saddr_i8_offset_neg4097:
+; GFX942-SDAG:       ; %bb.0:
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    s_add_u32 s0, s0, 0xffffefff
+; GFX942-SDAG-NEXT:    s_addc_u32 s1, s1, -1
+; GFX942-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX942-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1]
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-SDAG-LABEL: global_load_saddr_i8_offset_neg4097:
+; GFX950-SDAG:       ; %bb.0:
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-SDAG-NEXT:    s_add_u32 s0, s0, 0xffffefff
+; GFX950-SDAG-NEXT:    s_addc_u32 s1, s1, -1
+; GFX950-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX950-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1]
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_neg4097:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0:
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, s4, 0xfffff000, s16
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, s4, -1, s17, s4
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-1
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: global_load_saddr_i8_offset_neg4097:
+; GFX1012-SDAG:       ; %bb.0:
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    v_add_co_u32 v0, s4, 0xfffff000, s16
+; GFX1012-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, s4, -1, s17, s4
+; GFX1012-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-1
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_neg4097:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0:
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, s4, 0xfffff000, s16
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, s17, s4
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-1
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_neg4097:
+; GFX11-GENERIC-SDAG:       ; %bb.0:
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, s0, 0xfffff000, s0
+; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, s1, s0
+; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-1
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: global_load_saddr_i8_offset_neg4097:
+; GFX1250-SDAG:       ; %bb.0:
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-4097
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_neg4097:
+; GFX12-GENERIC-SDAG:       ; %bb.0:
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-4097
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_neg4097:
+; GFX9-GENERIC-ISEL:       ; %bb.0:
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_add_u32 s4, s16, 0xffffefff
+; GFX9-GENERIC-ISEL-NEXT:    s_addc_u32 s5, s17, -1
+; GFX9-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[4:5]
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-ISEL-LABEL: global_load_saddr_i8_offset_neg4097:
+; GFX906-ISEL:       ; %bb.0:
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-ISEL-NEXT:    s_add_u32 s4, s16, 0xffffefff
+; GFX906-ISEL-NEXT:    s_addc_u32 s5, s17, -1
+; GFX906-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX906-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[4:5]
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-ISEL-LABEL: global_load_saddr_i8_offset_neg4097:
+; GFX908-ISEL:       ; %bb.0:
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-ISEL-NEXT:    s_add_u32 s4, s16, 0xffffefff
+; GFX908-ISEL-NEXT:    s_addc_u32 s5, s17, -1
+; GFX908-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX908-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[4:5]
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-ISEL-LABEL: global_load_saddr_i8_offset_neg4097:
+; GFX90A-ISEL:       ; %bb.0:
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-ISEL-NEXT:    s_add_u32 s4, s16, 0xffffefff
+; GFX90A-ISEL-NEXT:    s_addc_u32 s5, s17, -1
+; GFX90A-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX90A-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[4:5]
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_neg4097:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0:
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_add_u32 s0, s0, 0xffffefff
+; GFX9-4-GENERIC-ISEL-NEXT:    s_addc_u32 s1, s1, -1
+; GFX9-4-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1]
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-ISEL-LABEL: global_load_saddr_i8_offset_neg4097:
+; GFX942-ISEL:       ; %bb.0:
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    s_add_u32 s0, s0, 0xffffefff
+; GFX942-ISEL-NEXT:    s_addc_u32 s1, s1, -1
+; GFX942-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX942-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1]
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-ISEL-LABEL: global_load_saddr_i8_offset_neg4097:
+; GFX950-ISEL:       ; %bb.0:
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-ISEL-NEXT:    s_add_u32 s0, s0, 0xffffefff
+; GFX950-ISEL-NEXT:    s_addc_u32 s1, s1, -1
+; GFX950-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX950-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1]
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_neg4097:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0:
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_add_u32 s4, s16, 0xffffefff
+; GFX10-1-GENERIC-ISEL-NEXT:    s_addc_u32 s5, s17, -1
+; GFX10-1-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, s4
+; GFX10-1-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v1, s5
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: global_load_saddr_i8_offset_neg4097:
+; GFX1012-ISEL:       ; %bb.0:
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    s_add_u32 s4, s16, 0xffffefff
+; GFX1012-ISEL-NEXT:    s_addc_u32 s5, s17, -1
+; GFX1012-ISEL-NEXT:    v_mov_b32_e32 v0, s4
+; GFX1012-ISEL-NEXT:    v_mov_b32_e32 v1, s5
+; GFX1012-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_neg4097:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0:
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_add_u32 s4, s16, 0xffffefff
+; GFX10-3-GENERIC-ISEL-NEXT:    s_addc_u32 s5, s17, -1
+; GFX10-3-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, s4
+; GFX10-3-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v1, s5
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_neg4097:
+; GFX11-GENERIC-ISEL:       ; %bb.0:
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_add_u32 s0, s0, 0xffffefff
+; GFX11-GENERIC-ISEL-NEXT:    s_addc_u32 s1, s1, -1
+; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX11-GENERIC-ISEL-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
+; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: global_load_saddr_i8_offset_neg4097:
+; GFX1250-ISEL:       ; %bb.0:
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-4097
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_neg4097:
+; GFX12-GENERIC-ISEL:       ; %bb.0:
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-4097
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+  %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 -4097
+  %load = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %gep0, metadata !0)
+  %cast.load = bitcast <4 x i32> %load to <4 x float>
+  ret <4 x float> %cast.load
+}
+
+;; SGPR base with maximum negative gfx9 immediate offset -2
+define <4 x float> @global_load_saddr_i8_offset_neg4098(ptr addrspace(1) inreg %sbase) {
+; GFX9-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_neg4098:
+; GFX9-GENERIC-SDAG:       ; %bb.0:
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_add_u32 s4, s16, 0xffffeffe
+; GFX9-GENERIC-SDAG-NEXT:    s_addc_u32 s5, s17, -1
+; GFX9-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[4:5]
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-SDAG-LABEL: global_load_saddr_i8_offset_neg4098:
+; GFX906-SDAG:       ; %bb.0:
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-SDAG-NEXT:    s_add_u32 s4, s16, 0xffffeffe
+; GFX906-SDAG-NEXT:    s_addc_u32 s5, s17, -1
+; GFX906-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX906-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[4:5]
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-SDAG-LABEL: global_load_saddr_i8_offset_neg4098:
+; GFX908-SDAG:       ; %bb.0:
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-SDAG-NEXT:    s_add_u32 s4, s16, 0xffffeffe
+; GFX908-SDAG-NEXT:    s_addc_u32 s5, s17, -1
+; GFX908-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX908-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[4:5]
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-SDAG-LABEL: global_load_saddr_i8_offset_neg4098:
+; GFX90A-SDAG:       ; %bb.0:
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-SDAG-NEXT:    s_add_u32 s4, s16, 0xffffeffe
+; GFX90A-SDAG-NEXT:    s_addc_u32 s5, s17, -1
+; GFX90A-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX90A-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[4:5]
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_neg4098:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0:
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_add_u32 s0, s0, 0xffffeffe
+; GFX9-4-GENERIC-SDAG-NEXT:    s_addc_u32 s1, s1, -1
+; GFX9-4-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] sc0
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-SDAG-LABEL: global_load_saddr_i8_offset_neg4098:
+; GFX942-SDAG:       ; %bb.0:
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    s_add_u32 s0, s0, 0xffffeffe
+; GFX942-SDAG-NEXT:    s_addc_u32 s1, s1, -1
+; GFX942-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX942-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] sc0
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-SDAG-LABEL: global_load_saddr_i8_offset_neg4098:
+; GFX950-SDAG:       ; %bb.0:
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-SDAG-NEXT:    s_add_u32 s0, s0, 0xffffeffe
+; GFX950-SDAG-NEXT:    s_addc_u32 s1, s1, -1
+; GFX950-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX950-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] sc0
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_neg4098:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0:
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, s4, 0xfffff000, s16
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, s4, -1, s17, s4
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-2 glc
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: global_load_saddr_i8_offset_neg4098:
+; GFX1012-SDAG:       ; %bb.0:
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    v_add_co_u32 v0, s4, 0xfffff000, s16
+; GFX1012-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, s4, -1, s17, s4
+; GFX1012-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-2 glc
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_neg4098:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0:
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, s4, 0xfffff000, s16
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, s17, s4
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-2 glc
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_neg4098:
+; GFX11-GENERIC-SDAG:       ; %bb.0:
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, s0, 0xfffff000, s0
+; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, s1, s0
+; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-2 glc
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: global_load_saddr_i8_offset_neg4098:
+; GFX1250-SDAG:       ; %bb.0:
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-4098
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_neg4098:
+; GFX12-GENERIC-SDAG:       ; %bb.0:
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-4098 scope:SCOPE_SE
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_neg4098:
+; GFX9-GENERIC-ISEL:       ; %bb.0:
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_add_u32 s4, s16, 0xffffeffe
+; GFX9-GENERIC-ISEL-NEXT:    s_addc_u32 s5, s17, -1
+; GFX9-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[4:5]
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-ISEL-LABEL: global_load_saddr_i8_offset_neg4098:
+; GFX906-ISEL:       ; %bb.0:
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-ISEL-NEXT:    s_add_u32 s4, s16, 0xffffeffe
+; GFX906-ISEL-NEXT:    s_addc_u32 s5, s17, -1
+; GFX906-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX906-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[4:5]
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-ISEL-LABEL: global_load_saddr_i8_offset_neg4098:
+; GFX908-ISEL:       ; %bb.0:
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-ISEL-NEXT:    s_add_u32 s4, s16, 0xffffeffe
+; GFX908-ISEL-NEXT:    s_addc_u32 s5, s17, -1
+; GFX908-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX908-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[4:5]
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-ISEL-LABEL: global_load_saddr_i8_offset_neg4098:
+; GFX90A-ISEL:       ; %bb.0:
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-ISEL-NEXT:    s_add_u32 s4, s16, 0xffffeffe
+; GFX90A-ISEL-NEXT:    s_addc_u32 s5, s17, -1
+; GFX90A-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX90A-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[4:5]
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_neg4098:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0:
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_add_u32 s0, s0, 0xffffeffe
+; GFX9-4-GENERIC-ISEL-NEXT:    s_addc_u32 s1, s1, -1
+; GFX9-4-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] sc0
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-ISEL-LABEL: global_load_saddr_i8_offset_neg4098:
+; GFX942-ISEL:       ; %bb.0:
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    s_add_u32 s0, s0, 0xffffeffe
+; GFX942-ISEL-NEXT:    s_addc_u32 s1, s1, -1
+; GFX942-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX942-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] sc0
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-ISEL-LABEL: global_load_saddr_i8_offset_neg4098:
+; GFX950-ISEL:       ; %bb.0:
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-ISEL-NEXT:    s_add_u32 s0, s0, 0xffffeffe
+; GFX950-ISEL-NEXT:    s_addc_u32 s1, s1, -1
+; GFX950-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX950-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] sc0
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_neg4098:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0:
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_add_u32 s4, s16, 0xffffeffe
+; GFX10-1-GENERIC-ISEL-NEXT:    s_addc_u32 s5, s17, -1
+; GFX10-1-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, s4
+; GFX10-1-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v1, s5
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: global_load_saddr_i8_offset_neg4098:
+; GFX1012-ISEL:       ; %bb.0:
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    s_add_u32 s4, s16, 0xffffeffe
+; GFX1012-ISEL-NEXT:    s_addc_u32 s5, s17, -1
+; GFX1012-ISEL-NEXT:    v_mov_b32_e32 v0, s4
+; GFX1012-ISEL-NEXT:    v_mov_b32_e32 v1, s5
+; GFX1012-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_neg4098:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0:
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_add_u32 s4, s16, 0xffffeffe
+; GFX10-3-GENERIC-ISEL-NEXT:    s_addc_u32 s5, s17, -1
+; GFX10-3-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, s4
+; GFX10-3-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v1, s5
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_neg4098:
+; GFX11-GENERIC-ISEL:       ; %bb.0:
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_add_u32 s0, s0, 0xffffeffe
+; GFX11-GENERIC-ISEL-NEXT:    s_addc_u32 s1, s1, -1
+; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX11-GENERIC-ISEL-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
+; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: global_load_saddr_i8_offset_neg4098:
+; GFX1250-ISEL:       ; %bb.0:
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-4098
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_neg4098:
+; GFX12-GENERIC-ISEL:       ; %bb.0:
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-4098 scope:SCOPE_SE
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+  %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 -4098
+  %load = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %gep0, metadata !1)
+  %cast.load = bitcast <4 x i32> %load to <4 x float>
+  ret <4 x float> %cast.load
+}
+
+;; SGPR base with maximum gfx10 immediate offset
+define <4 x float> @global_load_saddr_i8_offset_2048(ptr addrspace(1) inreg %sbase) {
+; GFX9-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_2048:
+; GFX9-GENERIC-SDAG:       ; %bb.0:
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:2048 glc
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-SDAG-LABEL: global_load_saddr_i8_offset_2048:
+; GFX906-SDAG:       ; %bb.0:
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX906-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:2048 glc
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-SDAG-LABEL: global_load_saddr_i8_offset_2048:
+; GFX908-SDAG:       ; %bb.0:
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX908-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:2048 glc
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-SDAG-LABEL: global_load_saddr_i8_offset_2048:
+; GFX90A-SDAG:       ; %bb.0:
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX90A-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:2048 glc
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_2048:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0:
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:2048 sc1
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-SDAG-LABEL: global_load_saddr_i8_offset_2048:
+; GFX942-SDAG:       ; %bb.0:
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX942-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:2048 sc1
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-SDAG-LABEL: global_load_saddr_i8_offset_2048:
+; GFX950-SDAG:       ; %bb.0:
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX950-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:2048 sc1
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_2048:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0:
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0x800
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc dlc
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: global_load_saddr_i8_offset_2048:
+; GFX1012-SDAG:       ; %bb.0:
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    v_mov_b32_e32 v0, 0x800
+; GFX1012-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc dlc
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_2048:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0:
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0x800
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc dlc
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_2048:
+; GFX11-GENERIC-SDAG:       ; %bb.0:
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:2048 glc
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: global_load_saddr_i8_offset_2048:
+; GFX1250-SDAG:       ; %bb.0:
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:2048 scope:SCOPE_DEV
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_2048:
+; GFX12-GENERIC-SDAG:       ; %bb.0:
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:2048 scope:SCOPE_DEV
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_2048:
+; GFX9-GENERIC-ISEL:       ; %bb.0:
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:2048 glc
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-ISEL-LABEL: global_load_saddr_i8_offset_2048:
+; GFX906-ISEL:       ; %bb.0:
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX906-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:2048 glc
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-ISEL-LABEL: global_load_saddr_i8_offset_2048:
+; GFX908-ISEL:       ; %bb.0:
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX908-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:2048 glc
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-ISEL-LABEL: global_load_saddr_i8_offset_2048:
+; GFX90A-ISEL:       ; %bb.0:
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX90A-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:2048 glc
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_2048:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0:
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:2048 sc1
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-ISEL-LABEL: global_load_saddr_i8_offset_2048:
+; GFX942-ISEL:       ; %bb.0:
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX942-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:2048 sc1
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-ISEL-LABEL: global_load_saddr_i8_offset_2048:
+; GFX950-ISEL:       ; %bb.0:
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX950-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:2048 sc1
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_2048:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0:
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0x800
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc dlc
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: global_load_saddr_i8_offset_2048:
+; GFX1012-ISEL:       ; %bb.0:
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    v_mov_b32_e32 v0, 0x800
+; GFX1012-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc dlc
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_2048:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0:
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0x800
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc dlc
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_2048:
+; GFX11-GENERIC-ISEL:       ; %bb.0:
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:2048 glc
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: global_load_saddr_i8_offset_2048:
+; GFX1250-ISEL:       ; %bb.0:
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:2048 scope:SCOPE_DEV
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_2048:
+; GFX12-GENERIC-ISEL:       ; %bb.0:
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:2048 scope:SCOPE_DEV
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+  %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 2048
+  %load = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %gep0, metadata !2)
+  %cast.load = bitcast <4 x i32> %load to <4 x float>
+  ret <4 x float> %cast.load
+}
+
+;; SGPR base with maximum gfx10 immediate offset + 1
+define <4 x float> @global_load_saddr_i8_offset_2049(ptr addrspace(1) inreg %sbase) {
+; GFX9-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_2049:
+; GFX9-GENERIC-SDAG:       ; %bb.0:
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:2049 glc
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-SDAG-LABEL: global_load_saddr_i8_offset_2049:
+; GFX906-SDAG:       ; %bb.0:
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX906-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:2049 glc
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-SDAG-LABEL: global_load_saddr_i8_offset_2049:
+; GFX908-SDAG:       ; %bb.0:
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX908-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:2049 glc
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-SDAG-LABEL: global_load_saddr_i8_offset_2049:
+; GFX90A-SDAG:       ; %bb.0:
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX90A-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:2049 glc
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_2049:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0:
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:2049 sc0 sc1
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-SDAG-LABEL: global_load_saddr_i8_offset_2049:
+; GFX942-SDAG:       ; %bb.0:
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX942-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:2049 sc0 sc1
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-SDAG-LABEL: global_load_saddr_i8_offset_2049:
+; GFX950-SDAG:       ; %bb.0:
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX950-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:2049 sc0 sc1
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_2049:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0:
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0x800
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:1 glc dlc
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: global_load_saddr_i8_offset_2049:
+; GFX1012-SDAG:       ; %bb.0:
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    v_mov_b32_e32 v0, 0x800
+; GFX1012-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:1 glc dlc
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_2049:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0:
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0x800
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:1 glc dlc
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_2049:
+; GFX11-GENERIC-SDAG:       ; %bb.0:
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:2049 glc
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: global_load_saddr_i8_offset_2049:
+; GFX1250-SDAG:       ; %bb.0:
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:2049 scope:SCOPE_SYS
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_2049:
+; GFX12-GENERIC-SDAG:       ; %bb.0:
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:2049 scope:SCOPE_SYS
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_2049:
+; GFX9-GENERIC-ISEL:       ; %bb.0:
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:2049 glc
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-ISEL-LABEL: global_load_saddr_i8_offset_2049:
+; GFX906-ISEL:       ; %bb.0:
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX906-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:2049 glc
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-ISEL-LABEL: global_load_saddr_i8_offset_2049:
+; GFX908-ISEL:       ; %bb.0:
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX908-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:2049 glc
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-ISEL-LABEL: global_load_saddr_i8_offset_2049:
+; GFX90A-ISEL:       ; %bb.0:
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX90A-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:2049 glc
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_2049:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0:
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:2049 sc0 sc1
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-ISEL-LABEL: global_load_saddr_i8_offset_2049:
+; GFX942-ISEL:       ; %bb.0:
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX942-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:2049 sc0 sc1
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-ISEL-LABEL: global_load_saddr_i8_offset_2049:
+; GFX950-ISEL:       ; %bb.0:
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX950-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:2049 sc0 sc1
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_2049:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0:
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0x800
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:1 glc dlc
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: global_load_saddr_i8_offset_2049:
+; GFX1012-ISEL:       ; %bb.0:
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    v_mov_b32_e32 v0, 0x800
+; GFX1012-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:1 glc dlc
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_2049:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0:
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0x800
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:1 glc dlc
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_2049:
+; GFX11-GENERIC-ISEL:       ; %bb.0:
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:2049 glc
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: global_load_saddr_i8_offset_2049:
+; GFX1250-ISEL:       ; %bb.0:
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:2049 scope:SCOPE_SYS
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_2049:
+; GFX12-GENERIC-ISEL:       ; %bb.0:
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:2049 scope:SCOPE_SYS
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+  %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 2049
+  %load = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %gep0, metadata !3)
+  %cast.load = bitcast <4 x i32> %load to <4 x float>
+  ret <4 x float> %cast.load
+}
+
+;; SGPR base with maximum gfx10 immediate offset + 2
+define <4 x float> @global_load_saddr_i8_offset_2050(ptr addrspace(1) inreg %sbase) {
+; GFX9-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_2050:
+; GFX9-GENERIC-SDAG:       ; %bb.0:
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:2050
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-SDAG-LABEL: global_load_saddr_i8_offset_2050:
+; GFX906-SDAG:       ; %bb.0:
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX906-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:2050
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-SDAG-LABEL: global_load_saddr_i8_offset_2050:
+; GFX908-SDAG:       ; %bb.0:
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX908-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:2050
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-SDAG-LABEL: global_load_saddr_i8_offset_2050:
+; GFX90A-SDAG:       ; %bb.0:
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX90A-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:2050
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_2050:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0:
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:2050
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-SDAG-LABEL: global_load_saddr_i8_offset_2050:
+; GFX942-SDAG:       ; %bb.0:
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX942-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:2050
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-SDAG-LABEL: global_load_saddr_i8_offset_2050:
+; GFX950-SDAG:       ; %bb.0:
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX950-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:2050
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_2050:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0:
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0x800
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:2
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: global_load_saddr_i8_offset_2050:
+; GFX1012-SDAG:       ; %bb.0:
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    v_mov_b32_e32 v0, 0x800
+; GFX1012-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:2
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_2050:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0:
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0x800
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:2
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_2050:
+; GFX11-GENERIC-SDAG:       ; %bb.0:
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:2050
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: global_load_saddr_i8_offset_2050:
+; GFX1250-SDAG:       ; %bb.0:
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:2050
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_2050:
+; GFX12-GENERIC-SDAG:       ; %bb.0:
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:2050
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_2050:
+; GFX9-GENERIC-ISEL:       ; %bb.0:
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:2050
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-ISEL-LABEL: global_load_saddr_i8_offset_2050:
+; GFX906-ISEL:       ; %bb.0:
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX906-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:2050
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-ISEL-LABEL: global_load_saddr_i8_offset_2050:
+; GFX908-ISEL:       ; %bb.0:
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX908-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:2050
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-ISEL-LABEL: global_load_saddr_i8_offset_2050:
+; GFX90A-ISEL:       ; %bb.0:
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX90A-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:2050
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_2050:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0:
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:2050
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-ISEL-LABEL: global_load_saddr_i8_offset_2050:
+; GFX942-ISEL:       ; %bb.0:
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX942-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:2050
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-ISEL-LABEL: global_load_saddr_i8_offset_2050:
+; GFX950-ISEL:       ; %bb.0:
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX950-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:2050
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_2050:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0:
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0x800
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:2
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: global_load_saddr_i8_offset_2050:
+; GFX1012-ISEL:       ; %bb.0:
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    v_mov_b32_e32 v0, 0x800
+; GFX1012-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:2
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_2050:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0:
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0x800
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:2
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_2050:
+; GFX11-GENERIC-ISEL:       ; %bb.0:
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:2050
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: global_load_saddr_i8_offset_2050:
+; GFX1250-ISEL:       ; %bb.0:
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:2050
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_2050:
+; GFX12-GENERIC-ISEL:       ; %bb.0:
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:2050
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+  %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 2050
+  %load = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %gep0, metadata !0)
+  %cast.load = bitcast <4 x i32> %load to <4 x float>
+  ret <4 x float> %cast.load
+}
+
+;; SGPR base with maximum negative gfx10 immediate offset
+define <4 x float> @global_load_saddr_i8_offset_neg2048(ptr addrspace(1) inreg %sbase) {
+; GFX9-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_neg2048:
+; GFX9-GENERIC-SDAG:       ; %bb.0:
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:-2048
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-SDAG-LABEL: global_load_saddr_i8_offset_neg2048:
+; GFX906-SDAG:       ; %bb.0:
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX906-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:-2048
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-SDAG-LABEL: global_load_saddr_i8_offset_neg2048:
+; GFX908-SDAG:       ; %bb.0:
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX908-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:-2048
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-SDAG-LABEL: global_load_saddr_i8_offset_neg2048:
+; GFX90A-SDAG:       ; %bb.0:
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX90A-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:-2048
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_neg2048:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0:
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:-2048 sc0
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-SDAG-LABEL: global_load_saddr_i8_offset_neg2048:
+; GFX942-SDAG:       ; %bb.0:
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX942-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:-2048 sc0
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-SDAG-LABEL: global_load_saddr_i8_offset_neg2048:
+; GFX950-SDAG:       ; %bb.0:
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX950-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:-2048 sc0
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_neg2048:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0:
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:-2048 glc
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: global_load_saddr_i8_offset_neg2048:
+; GFX1012-SDAG:       ; %bb.0:
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX1012-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:-2048 glc
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_neg2048:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0:
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:-2048 glc
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_neg2048:
+; GFX11-GENERIC-SDAG:       ; %bb.0:
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-2048 glc
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: global_load_saddr_i8_offset_neg2048:
+; GFX1250-SDAG:       ; %bb.0:
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-2048
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_neg2048:
+; GFX12-GENERIC-SDAG:       ; %bb.0:
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-2048 scope:SCOPE_SE
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_neg2048:
+; GFX9-GENERIC-ISEL:       ; %bb.0:
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:-2048
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-ISEL-LABEL: global_load_saddr_i8_offset_neg2048:
+; GFX906-ISEL:       ; %bb.0:
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX906-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:-2048
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-ISEL-LABEL: global_load_saddr_i8_offset_neg2048:
+; GFX908-ISEL:       ; %bb.0:
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX908-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:-2048
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-ISEL-LABEL: global_load_saddr_i8_offset_neg2048:
+; GFX90A-ISEL:       ; %bb.0:
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX90A-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:-2048
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_neg2048:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0:
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:-2048 sc0
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-ISEL-LABEL: global_load_saddr_i8_offset_neg2048:
+; GFX942-ISEL:       ; %bb.0:
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX942-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:-2048 sc0
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-ISEL-LABEL: global_load_saddr_i8_offset_neg2048:
+; GFX950-ISEL:       ; %bb.0:
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX950-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:-2048 sc0
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_neg2048:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0:
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:-2048 glc
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: global_load_saddr_i8_offset_neg2048:
+; GFX1012-ISEL:       ; %bb.0:
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX1012-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:-2048 glc
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_neg2048:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0:
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:-2048 glc
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_neg2048:
+; GFX11-GENERIC-ISEL:       ; %bb.0:
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-2048 glc
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: global_load_saddr_i8_offset_neg2048:
+; GFX1250-ISEL:       ; %bb.0:
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-2048
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_neg2048:
+; GFX12-GENERIC-ISEL:       ; %bb.0:
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-2048 scope:SCOPE_SE
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+  %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 -2048
+  %load = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %gep0, metadata !1)
+  %cast.load = bitcast <4 x i32> %load to <4 x float>
+  ret <4 x float> %cast.load
+}
+
+;; SGPR base with maximum negative gfx10 immediate offset - 1
+define <4 x float> @global_load_saddr_i8_offset_neg2049(ptr addrspace(1) inreg %sbase) {
+; GFX9-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_neg2049:
+; GFX9-GENERIC-SDAG:       ; %bb.0:
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:-2049 glc
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-SDAG-LABEL: global_load_saddr_i8_offset_neg2049:
+; GFX906-SDAG:       ; %bb.0:
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX906-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:-2049 glc
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-SDAG-LABEL: global_load_saddr_i8_offset_neg2049:
+; GFX908-SDAG:       ; %bb.0:
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX908-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:-2049 glc
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-SDAG-LABEL: global_load_saddr_i8_offset_neg2049:
+; GFX90A-SDAG:       ; %bb.0:
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX90A-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:-2049 glc
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_neg2049:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0:
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:-2049 sc1
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-SDAG-LABEL: global_load_saddr_i8_offset_neg2049:
+; GFX942-SDAG:       ; %bb.0:
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX942-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:-2049 sc1
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-SDAG-LABEL: global_load_saddr_i8_offset_neg2049:
+; GFX950-SDAG:       ; %bb.0:
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX950-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:-2049 sc1
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_neg2049:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0:
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, s4, 0xfffff800, s16
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, s4, -1, s17, s4
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-1 glc dlc
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: global_load_saddr_i8_offset_neg2049:
+; GFX1012-SDAG:       ; %bb.0:
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    v_add_co_u32 v0, s4, 0xfffff800, s16
+; GFX1012-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, s4, -1, s17, s4
+; GFX1012-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-1 glc dlc
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_neg2049:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0:
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, s4, 0xfffff800, s16
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, s17, s4
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-1 glc dlc
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_neg2049:
+; GFX11-GENERIC-SDAG:       ; %bb.0:
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-2049 glc
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: global_load_saddr_i8_offset_neg2049:
+; GFX1250-SDAG:       ; %bb.0:
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-2049 scope:SCOPE_DEV
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_neg2049:
+; GFX12-GENERIC-SDAG:       ; %bb.0:
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-2049 scope:SCOPE_DEV
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_neg2049:
+; GFX9-GENERIC-ISEL:       ; %bb.0:
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:-2049 glc
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-ISEL-LABEL: global_load_saddr_i8_offset_neg2049:
+; GFX906-ISEL:       ; %bb.0:
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX906-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:-2049 glc
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-ISEL-LABEL: global_load_saddr_i8_offset_neg2049:
+; GFX908-ISEL:       ; %bb.0:
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX908-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:-2049 glc
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-ISEL-LABEL: global_load_saddr_i8_offset_neg2049:
+; GFX90A-ISEL:       ; %bb.0:
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX90A-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:-2049 glc
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_neg2049:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0:
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:-2049 sc1
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-ISEL-LABEL: global_load_saddr_i8_offset_neg2049:
+; GFX942-ISEL:       ; %bb.0:
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX942-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:-2049 sc1
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-ISEL-LABEL: global_load_saddr_i8_offset_neg2049:
+; GFX950-ISEL:       ; %bb.0:
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX950-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:-2049 sc1
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_neg2049:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0:
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_add_u32 s4, s16, 0xfffff7ff
+; GFX10-1-GENERIC-ISEL-NEXT:    s_addc_u32 s5, s17, -1
+; GFX10-1-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, s4
+; GFX10-1-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v1, s5
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: global_load_saddr_i8_offset_neg2049:
+; GFX1012-ISEL:       ; %bb.0:
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    s_add_u32 s4, s16, 0xfffff7ff
+; GFX1012-ISEL-NEXT:    s_addc_u32 s5, s17, -1
+; GFX1012-ISEL-NEXT:    v_mov_b32_e32 v0, s4
+; GFX1012-ISEL-NEXT:    v_mov_b32_e32 v1, s5
+; GFX1012-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_neg2049:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0:
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_add_u32 s4, s16, 0xfffff7ff
+; GFX10-3-GENERIC-ISEL-NEXT:    s_addc_u32 s5, s17, -1
+; GFX10-3-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, s4
+; GFX10-3-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v1, s5
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_neg2049:
+; GFX11-GENERIC-ISEL:       ; %bb.0:
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-2049 glc
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: global_load_saddr_i8_offset_neg2049:
+; GFX1250-ISEL:       ; %bb.0:
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-2049 scope:SCOPE_DEV
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_neg2049:
+; GFX12-GENERIC-ISEL:       ; %bb.0:
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-2049 scope:SCOPE_DEV
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+  %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 -2049
+  %load = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %gep0, metadata !2)
+  %cast.load = bitcast <4 x i32> %load to <4 x float>
+  ret <4 x float> %cast.load
+}
+
+;; SGPR base with maximum negative gfx10 immediate offset - 1
+define <4 x float> @global_load_saddr_i8_offset_neg2050(ptr addrspace(1) inreg %sbase) {
+; GFX9-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_neg2050:
+; GFX9-GENERIC-SDAG:       ; %bb.0:
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:-2050 glc
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-SDAG-LABEL: global_load_saddr_i8_offset_neg2050:
+; GFX906-SDAG:       ; %bb.0:
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX906-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:-2050 glc
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-SDAG-LABEL: global_load_saddr_i8_offset_neg2050:
+; GFX908-SDAG:       ; %bb.0:
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX908-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:-2050 glc
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-SDAG-LABEL: global_load_saddr_i8_offset_neg2050:
+; GFX90A-SDAG:       ; %bb.0:
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX90A-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:-2050 glc
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_neg2050:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0:
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:-2050 sc0 sc1
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-SDAG-LABEL: global_load_saddr_i8_offset_neg2050:
+; GFX942-SDAG:       ; %bb.0:
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX942-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:-2050 sc0 sc1
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-SDAG-LABEL: global_load_saddr_i8_offset_neg2050:
+; GFX950-SDAG:       ; %bb.0:
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX950-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:-2050 sc0 sc1
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_neg2050:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0:
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, s4, 0xfffff800, s16
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, s4, -1, s17, s4
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-2 glc dlc
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: global_load_saddr_i8_offset_neg2050:
+; GFX1012-SDAG:       ; %bb.0:
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    v_add_co_u32 v0, s4, 0xfffff800, s16
+; GFX1012-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, s4, -1, s17, s4
+; GFX1012-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-2 glc dlc
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_neg2050:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0:
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, s4, 0xfffff800, s16
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, s17, s4
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-2 glc dlc
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_neg2050:
+; GFX11-GENERIC-SDAG:       ; %bb.0:
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-2050 glc
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: global_load_saddr_i8_offset_neg2050:
+; GFX1250-SDAG:       ; %bb.0:
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-2050 scope:SCOPE_SYS
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_neg2050:
+; GFX12-GENERIC-SDAG:       ; %bb.0:
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-2050 scope:SCOPE_SYS
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_neg2050:
+; GFX9-GENERIC-ISEL:       ; %bb.0:
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:-2050 glc
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-ISEL-LABEL: global_load_saddr_i8_offset_neg2050:
+; GFX906-ISEL:       ; %bb.0:
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX906-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:-2050 glc
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-ISEL-LABEL: global_load_saddr_i8_offset_neg2050:
+; GFX908-ISEL:       ; %bb.0:
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX908-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:-2050 glc
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-ISEL-LABEL: global_load_saddr_i8_offset_neg2050:
+; GFX90A-ISEL:       ; %bb.0:
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX90A-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:-2050 glc
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_neg2050:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0:
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:-2050 sc0 sc1
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-ISEL-LABEL: global_load_saddr_i8_offset_neg2050:
+; GFX942-ISEL:       ; %bb.0:
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX942-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:-2050 sc0 sc1
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-ISEL-LABEL: global_load_saddr_i8_offset_neg2050:
+; GFX950-ISEL:       ; %bb.0:
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX950-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:-2050 sc0 sc1
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_neg2050:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0:
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_add_u32 s4, s16, 0xfffff7fe
+; GFX10-1-GENERIC-ISEL-NEXT:    s_addc_u32 s5, s17, -1
+; GFX10-1-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, s4
+; GFX10-1-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v1, s5
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: global_load_saddr_i8_offset_neg2050:
+; GFX1012-ISEL:       ; %bb.0:
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    s_add_u32 s4, s16, 0xfffff7fe
+; GFX1012-ISEL-NEXT:    s_addc_u32 s5, s17, -1
+; GFX1012-ISEL-NEXT:    v_mov_b32_e32 v0, s4
+; GFX1012-ISEL-NEXT:    v_mov_b32_e32 v1, s5
+; GFX1012-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_neg2050:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0:
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_add_u32 s4, s16, 0xfffff7fe
+; GFX10-3-GENERIC-ISEL-NEXT:    s_addc_u32 s5, s17, -1
+; GFX10-3-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, s4
+; GFX10-3-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v1, s5
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_neg2050:
+; GFX11-GENERIC-ISEL:       ; %bb.0:
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-2050 glc
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: global_load_saddr_i8_offset_neg2050:
+; GFX1250-ISEL:       ; %bb.0:
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-2050 scope:SCOPE_SYS
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_neg2050:
+; GFX12-GENERIC-ISEL:       ; %bb.0:
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-2050 scope:SCOPE_SYS
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+  %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 -2050
+  %load = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %gep0, metadata !3)
+  %cast.load = bitcast <4 x i32> %load to <4 x float>
+  ret <4 x float> %cast.load
+}
+
+define <4 x float> @global_load_saddr_i8_offset_0x7FFFFF(ptr addrspace(1) inreg %sbase) {
+; GFX9-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_0x7FFFFF:
+; GFX9-GENERIC-SDAG:       ; %bb.0:
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0x7ff000
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:4095
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-SDAG-LABEL: global_load_saddr_i8_offset_0x7FFFFF:
+; GFX906-SDAG:       ; %bb.0:
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-SDAG-NEXT:    v_mov_b32_e32 v0, 0x7ff000
+; GFX906-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:4095
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-SDAG-LABEL: global_load_saddr_i8_offset_0x7FFFFF:
+; GFX908-SDAG:       ; %bb.0:
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-SDAG-NEXT:    v_mov_b32_e32 v0, 0x7ff000
+; GFX908-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:4095
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-SDAG-LABEL: global_load_saddr_i8_offset_0x7FFFFF:
+; GFX90A-SDAG:       ; %bb.0:
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-SDAG-NEXT:    v_mov_b32_e32 v0, 0x7ff000
+; GFX90A-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:4095
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_0x7FFFFF:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0:
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0x7ff000
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:4095
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-SDAG-LABEL: global_load_saddr_i8_offset_0x7FFFFF:
+; GFX942-SDAG:       ; %bb.0:
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    v_mov_b32_e32 v0, 0x7ff000
+; GFX942-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:4095
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-SDAG-LABEL: global_load_saddr_i8_offset_0x7FFFFF:
+; GFX950-SDAG:       ; %bb.0:
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-SDAG-NEXT:    v_mov_b32_e32 v0, 0x7ff000
+; GFX950-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:4095
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_0x7FFFFF:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0:
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0x7ff800
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:2047
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: global_load_saddr_i8_offset_0x7FFFFF:
+; GFX1012-SDAG:       ; %bb.0:
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    v_mov_b32_e32 v0, 0x7ff800
+; GFX1012-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:2047
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_0x7FFFFF:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0:
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0x7ff800
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:2047
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_0x7FFFFF:
+; GFX11-GENERIC-SDAG:       ; %bb.0:
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0x7ff000
+; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:4095
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: global_load_saddr_i8_offset_0x7FFFFF:
+; GFX1250-SDAG:       ; %bb.0:
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:8388607
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_0x7FFFFF:
+; GFX12-GENERIC-SDAG:       ; %bb.0:
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:8388607
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_0x7FFFFF:
+; GFX9-GENERIC-ISEL:       ; %bb.0:
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0x7ff000
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:4095
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-ISEL-LABEL: global_load_saddr_i8_offset_0x7FFFFF:
+; GFX906-ISEL:       ; %bb.0:
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-ISEL-NEXT:    v_mov_b32_e32 v0, 0x7ff000
+; GFX906-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:4095
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-ISEL-LABEL: global_load_saddr_i8_offset_0x7FFFFF:
+; GFX908-ISEL:       ; %bb.0:
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-ISEL-NEXT:    v_mov_b32_e32 v0, 0x7ff000
+; GFX908-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:4095
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-ISEL-LABEL: global_load_saddr_i8_offset_0x7FFFFF:
+; GFX90A-ISEL:       ; %bb.0:
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-ISEL-NEXT:    v_mov_b32_e32 v0, 0x7ff000
+; GFX90A-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:4095
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_0x7FFFFF:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0:
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0x7ff000
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:4095
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-ISEL-LABEL: global_load_saddr_i8_offset_0x7FFFFF:
+; GFX942-ISEL:       ; %bb.0:
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    v_mov_b32_e32 v0, 0x7ff000
+; GFX942-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:4095
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-ISEL-LABEL: global_load_saddr_i8_offset_0x7FFFFF:
+; GFX950-ISEL:       ; %bb.0:
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-ISEL-NEXT:    v_mov_b32_e32 v0, 0x7ff000
+; GFX950-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:4095
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_0x7FFFFF:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0:
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0x7ff800
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:2047
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: global_load_saddr_i8_offset_0x7FFFFF:
+; GFX1012-ISEL:       ; %bb.0:
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    v_mov_b32_e32 v0, 0x7ff800
+; GFX1012-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:2047
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_0x7FFFFF:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0:
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0x7ff800
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:2047
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_0x7FFFFF:
+; GFX11-GENERIC-ISEL:       ; %bb.0:
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0x7ff000
+; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:4095
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: global_load_saddr_i8_offset_0x7FFFFF:
+; GFX1250-ISEL:       ; %bb.0:
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:8388607
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_0x7FFFFF:
+; GFX12-GENERIC-ISEL:       ; %bb.0:
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:8388607
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+  %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 8388607
+  %load = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %gep0, metadata !0)
+  %cast.load = bitcast <4 x i32> %load to <4 x float>
+  ret <4 x float> %cast.load
+}
+
+define <4 x float> @global_load_saddr_i8_offset_0xFFFFFF(ptr addrspace(1) inreg %sbase) {
+; GFX9-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_0xFFFFFF:
+; GFX9-GENERIC-SDAG:       ; %bb.0:
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_add_u32 s4, s16, 0xff800000
+; GFX9-GENERIC-SDAG-NEXT:    s_addc_u32 s5, s17, -1
+; GFX9-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[4:5]
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-SDAG-LABEL: global_load_saddr_i8_offset_0xFFFFFF:
+; GFX906-SDAG:       ; %bb.0:
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-SDAG-NEXT:    s_add_u32 s4, s16, 0xff800000
+; GFX906-SDAG-NEXT:    s_addc_u32 s5, s17, -1
+; GFX906-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX906-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[4:5]
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-SDAG-LABEL: global_load_saddr_i8_offset_0xFFFFFF:
+; GFX908-SDAG:       ; %bb.0:
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-SDAG-NEXT:    s_add_u32 s4, s16, 0xff800000
+; GFX908-SDAG-NEXT:    s_addc_u32 s5, s17, -1
+; GFX908-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX908-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[4:5]
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-SDAG-LABEL: global_load_saddr_i8_offset_0xFFFFFF:
+; GFX90A-SDAG:       ; %bb.0:
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-SDAG-NEXT:    s_add_u32 s4, s16, 0xff800000
+; GFX90A-SDAG-NEXT:    s_addc_u32 s5, s17, -1
+; GFX90A-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX90A-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[4:5]
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_0xFFFFFF:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0:
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_add_u32 s0, s0, 0xff800000
+; GFX9-4-GENERIC-SDAG-NEXT:    s_addc_u32 s1, s1, -1
+; GFX9-4-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] sc0
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-SDAG-LABEL: global_load_saddr_i8_offset_0xFFFFFF:
+; GFX942-SDAG:       ; %bb.0:
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    s_add_u32 s0, s0, 0xff800000
+; GFX942-SDAG-NEXT:    s_addc_u32 s1, s1, -1
+; GFX942-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX942-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] sc0
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-SDAG-LABEL: global_load_saddr_i8_offset_0xFFFFFF:
+; GFX950-SDAG:       ; %bb.0:
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-SDAG-NEXT:    s_add_u32 s0, s0, 0xff800000
+; GFX950-SDAG-NEXT:    s_addc_u32 s1, s1, -1
+; GFX950-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX950-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] sc0
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_0xFFFFFF:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0:
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, s4, 0xff800000, s16
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, s4, -1, s17, s4
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: global_load_saddr_i8_offset_0xFFFFFF:
+; GFX1012-SDAG:       ; %bb.0:
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    v_add_co_u32 v0, s4, 0xff800000, s16
+; GFX1012-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, s4, -1, s17, s4
+; GFX1012-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_0xFFFFFF:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0:
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, s4, 0xff800000, s16
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, s17, s4
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_0xFFFFFF:
+; GFX11-GENERIC-SDAG:       ; %bb.0:
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, s0, 0xff800000, s0
+; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, s1, s0
+; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: global_load_saddr_i8_offset_0xFFFFFF:
+; GFX1250-SDAG:       ; %bb.0:
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-8388608
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_0xFFFFFF:
+; GFX12-GENERIC-SDAG:       ; %bb.0:
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-8388608 scope:SCOPE_SE
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_0xFFFFFF:
+; GFX9-GENERIC-ISEL:       ; %bb.0:
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_add_u32 s4, s16, 0xff800000
+; GFX9-GENERIC-ISEL-NEXT:    s_addc_u32 s5, s17, -1
+; GFX9-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[4:5]
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-ISEL-LABEL: global_load_saddr_i8_offset_0xFFFFFF:
+; GFX906-ISEL:       ; %bb.0:
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-ISEL-NEXT:    s_add_u32 s4, s16, 0xff800000
+; GFX906-ISEL-NEXT:    s_addc_u32 s5, s17, -1
+; GFX906-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX906-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[4:5]
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-ISEL-LABEL: global_load_saddr_i8_offset_0xFFFFFF:
+; GFX908-ISEL:       ; %bb.0:
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-ISEL-NEXT:    s_add_u32 s4, s16, 0xff800000
+; GFX908-ISEL-NEXT:    s_addc_u32 s5, s17, -1
+; GFX908-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX908-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[4:5]
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-ISEL-LABEL: global_load_saddr_i8_offset_0xFFFFFF:
+; GFX90A-ISEL:       ; %bb.0:
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-ISEL-NEXT:    s_add_u32 s4, s16, 0xff800000
+; GFX90A-ISEL-NEXT:    s_addc_u32 s5, s17, -1
+; GFX90A-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX90A-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[4:5]
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_0xFFFFFF:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0:
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_add_u32 s0, s0, 0xff800000
+; GFX9-4-GENERIC-ISEL-NEXT:    s_addc_u32 s1, s1, -1
+; GFX9-4-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] sc0
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-ISEL-LABEL: global_load_saddr_i8_offset_0xFFFFFF:
+; GFX942-ISEL:       ; %bb.0:
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    s_add_u32 s0, s0, 0xff800000
+; GFX942-ISEL-NEXT:    s_addc_u32 s1, s1, -1
+; GFX942-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX942-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] sc0
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-ISEL-LABEL: global_load_saddr_i8_offset_0xFFFFFF:
+; GFX950-ISEL:       ; %bb.0:
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-ISEL-NEXT:    s_add_u32 s0, s0, 0xff800000
+; GFX950-ISEL-NEXT:    s_addc_u32 s1, s1, -1
+; GFX950-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX950-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] sc0
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_0xFFFFFF:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0:
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_add_u32 s4, s16, 0xff800000
+; GFX10-1-GENERIC-ISEL-NEXT:    s_addc_u32 s5, s17, -1
+; GFX10-1-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, s4
+; GFX10-1-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v1, s5
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: global_load_saddr_i8_offset_0xFFFFFF:
+; GFX1012-ISEL:       ; %bb.0:
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    s_add_u32 s4, s16, 0xff800000
+; GFX1012-ISEL-NEXT:    s_addc_u32 s5, s17, -1
+; GFX1012-ISEL-NEXT:    v_mov_b32_e32 v0, s4
+; GFX1012-ISEL-NEXT:    v_mov_b32_e32 v1, s5
+; GFX1012-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_0xFFFFFF:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0:
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_add_u32 s4, s16, 0xff800000
+; GFX10-3-GENERIC-ISEL-NEXT:    s_addc_u32 s5, s17, -1
+; GFX10-3-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, s4
+; GFX10-3-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v1, s5
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_0xFFFFFF:
+; GFX11-GENERIC-ISEL:       ; %bb.0:
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_add_u32 s0, s0, 0xff800000
+; GFX11-GENERIC-ISEL-NEXT:    s_addc_u32 s1, s1, -1
+; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX11-GENERIC-ISEL-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
+; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: global_load_saddr_i8_offset_0xFFFFFF:
+; GFX1250-ISEL:       ; %bb.0:
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-8388608
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_0xFFFFFF:
+; GFX12-GENERIC-ISEL:       ; %bb.0:
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-8388608 scope:SCOPE_SE
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+  %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 -8388608
+  %load = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %gep0, metadata !1)
+  %cast.load = bitcast <4 x i32> %load to <4 x float>
+  ret <4 x float> %cast.load
+}
+
+define <4 x float> @global_load_saddr_i8_offset_0xFFFFFFFF(ptr addrspace(1) inreg %sbase) {
+; GFX9-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_0xFFFFFFFF:
+; GFX9-GENERIC-SDAG:       ; %bb.0:
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0xfffff000
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:4095 glc
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-SDAG-LABEL: global_load_saddr_i8_offset_0xFFFFFFFF:
+; GFX906-SDAG:       ; %bb.0:
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-SDAG-NEXT:    v_mov_b32_e32 v0, 0xfffff000
+; GFX906-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:4095 glc
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-SDAG-LABEL: global_load_saddr_i8_offset_0xFFFFFFFF:
+; GFX908-SDAG:       ; %bb.0:
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-SDAG-NEXT:    v_mov_b32_e32 v0, 0xfffff000
+; GFX908-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:4095 glc
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-SDAG-LABEL: global_load_saddr_i8_offset_0xFFFFFFFF:
+; GFX90A-SDAG:       ; %bb.0:
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-SDAG-NEXT:    v_mov_b32_e32 v0, 0xfffff000
+; GFX90A-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:4095 glc
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_0xFFFFFFFF:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0:
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0xfffff000
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:4095 sc1
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-SDAG-LABEL: global_load_saddr_i8_offset_0xFFFFFFFF:
+; GFX942-SDAG:       ; %bb.0:
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    v_mov_b32_e32 v0, 0xfffff000
+; GFX942-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:4095 sc1
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-SDAG-LABEL: global_load_saddr_i8_offset_0xFFFFFFFF:
+; GFX950-SDAG:       ; %bb.0:
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-SDAG-NEXT:    v_mov_b32_e32 v0, 0xfffff000
+; GFX950-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:4095 sc1
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_0xFFFFFFFF:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0:
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0xfffff800
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:2047 glc dlc
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: global_load_saddr_i8_offset_0xFFFFFFFF:
+; GFX1012-SDAG:       ; %bb.0:
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    v_mov_b32_e32 v0, 0xfffff800
+; GFX1012-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:2047 glc dlc
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_0xFFFFFFFF:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0:
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0xfffff800
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:2047 glc dlc
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_0xFFFFFFFF:
+; GFX11-GENERIC-SDAG:       ; %bb.0:
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0xfffff000
+; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:4095 glc
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: global_load_saddr_i8_offset_0xFFFFFFFF:
+; GFX1250-SDAG:       ; %bb.0:
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    v_add_co_u32 v0, s0, 0xff800000, s0
+; GFX1250-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX1250-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, s1, s0
+; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:8388607 scope:SCOPE_DEV
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_0xFFFFFFFF:
+; GFX12-GENERIC-SDAG:       ; %bb.0:
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0xff800000
+; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:8388607 scope:SCOPE_DEV
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_0xFFFFFFFF:
+; GFX9-GENERIC-ISEL:       ; %bb.0:
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0xfffff000
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:4095 glc
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-ISEL-LABEL: global_load_saddr_i8_offset_0xFFFFFFFF:
+; GFX906-ISEL:       ; %bb.0:
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-ISEL-NEXT:    v_mov_b32_e32 v0, 0xfffff000
+; GFX906-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:4095 glc
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-ISEL-LABEL: global_load_saddr_i8_offset_0xFFFFFFFF:
+; GFX908-ISEL:       ; %bb.0:
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-ISEL-NEXT:    v_mov_b32_e32 v0, 0xfffff000
+; GFX908-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:4095 glc
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-ISEL-LABEL: global_load_saddr_i8_offset_0xFFFFFFFF:
+; GFX90A-ISEL:       ; %bb.0:
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-ISEL-NEXT:    v_mov_b32_e32 v0, 0xfffff000
+; GFX90A-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:4095 glc
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_0xFFFFFFFF:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0:
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0xfffff000
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:4095 sc1
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-ISEL-LABEL: global_load_saddr_i8_offset_0xFFFFFFFF:
+; GFX942-ISEL:       ; %bb.0:
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    v_mov_b32_e32 v0, 0xfffff000
+; GFX942-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:4095 sc1
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-ISEL-LABEL: global_load_saddr_i8_offset_0xFFFFFFFF:
+; GFX950-ISEL:       ; %bb.0:
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-ISEL-NEXT:    v_mov_b32_e32 v0, 0xfffff000
+; GFX950-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:4095 sc1
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_0xFFFFFFFF:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0:
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0xfffff800
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:2047 glc dlc
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: global_load_saddr_i8_offset_0xFFFFFFFF:
+; GFX1012-ISEL:       ; %bb.0:
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    v_mov_b32_e32 v0, 0xfffff800
+; GFX1012-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:2047 glc dlc
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_0xFFFFFFFF:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0:
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0xfffff800
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:2047 glc dlc
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_0xFFFFFFFF:
+; GFX11-GENERIC-ISEL:       ; %bb.0:
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0xfffff000
+; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:4095 glc
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: global_load_saddr_i8_offset_0xFFFFFFFF:
+; GFX1250-ISEL:       ; %bb.0:
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    s_add_co_u32 s0, s0, -1
+; GFX1250-ISEL-NEXT:    s_add_co_ci_u32 s1, s1, 0
+; GFX1250-ISEL-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX1250-ISEL-NEXT:    v_mov_b64_e32 v[0:1], s[0:1]
+; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_DEV
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_0xFFFFFFFF:
+; GFX12-GENERIC-ISEL:       ; %bb.0:
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0xff800000
+; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:8388607 scope:SCOPE_DEV
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+  %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 4294967295
+  %load = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %gep0, metadata !2)
+  %cast.load = bitcast <4 x i32> %load to <4 x float>
+  ret <4 x float> %cast.load
+}
+
+define <4 x float> @global_load_saddr_i8_offset_0x100000000(ptr addrspace(1) inreg %sbase) {
+; GFX9-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_0x100000000:
+; GFX9-GENERIC-SDAG:       ; %bb.0:
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_add_i32 s17, s17, 1
+; GFX9-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-SDAG-LABEL: global_load_saddr_i8_offset_0x100000000:
+; GFX906-SDAG:       ; %bb.0:
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-SDAG-NEXT:    s_add_i32 s17, s17, 1
+; GFX906-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX906-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-SDAG-LABEL: global_load_saddr_i8_offset_0x100000000:
+; GFX908-SDAG:       ; %bb.0:
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-SDAG-NEXT:    s_add_i32 s17, s17, 1
+; GFX908-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX908-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-SDAG-LABEL: global_load_saddr_i8_offset_0x100000000:
+; GFX90A-SDAG:       ; %bb.0:
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-SDAG-NEXT:    s_add_i32 s17, s17, 1
+; GFX90A-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX90A-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_0x100000000:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0:
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_add_i32 s1, s1, 1
+; GFX9-4-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] sc0 sc1
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-SDAG-LABEL: global_load_saddr_i8_offset_0x100000000:
+; GFX942-SDAG:       ; %bb.0:
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    s_add_i32 s1, s1, 1
+; GFX942-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX942-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] sc0 sc1
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-SDAG-LABEL: global_load_saddr_i8_offset_0x100000000:
+; GFX950-SDAG:       ; %bb.0:
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-SDAG-NEXT:    s_add_i32 s1, s1, 1
+; GFX950-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX950-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] sc0 sc1
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_0x100000000:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0:
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX10-1-GENERIC-SDAG-NEXT:    s_add_i32 s17, s17, 1
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc dlc
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: global_load_saddr_i8_offset_0x100000000:
+; GFX1012-SDAG:       ; %bb.0:
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX1012-SDAG-NEXT:    s_add_i32 s17, s17, 1
+; GFX1012-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc dlc
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_0x100000000:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0:
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX10-3-GENERIC-SDAG-NEXT:    s_add_i32 s17, s17, 1
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc dlc
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_0x100000000:
+; GFX11-GENERIC-SDAG:       ; %bb.0:
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX11-GENERIC-SDAG-NEXT:    s_add_i32 s1, s1, 1
+; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] glc
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: global_load_saddr_i8_offset_0x100000000:
+; GFX1250-SDAG:       ; %bb.0:
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX1250-SDAG-NEXT:    s_add_co_i32 s1, s1, 1
+; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] scope:SCOPE_SYS
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_0x100000000:
+; GFX12-GENERIC-SDAG:       ; %bb.0:
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX12-GENERIC-SDAG-NEXT:    s_add_co_i32 s1, s1, 1
+; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] scope:SCOPE_SYS
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_alu depctr_sa_sdst(0)
+; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_0x100000000:
+; GFX9-GENERIC-ISEL:       ; %bb.0:
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_add_u32 s4, s16, 0
+; GFX9-GENERIC-ISEL-NEXT:    s_addc_u32 s5, s17, 1
+; GFX9-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, s4
+; GFX9-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v1, s5
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-ISEL-LABEL: global_load_saddr_i8_offset_0x100000000:
+; GFX906-ISEL:       ; %bb.0:
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-ISEL-NEXT:    s_add_u32 s4, s16, 0
+; GFX906-ISEL-NEXT:    s_addc_u32 s5, s17, 1
+; GFX906-ISEL-NEXT:    v_mov_b32_e32 v0, s4
+; GFX906-ISEL-NEXT:    v_mov_b32_e32 v1, s5
+; GFX906-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-ISEL-LABEL: global_load_saddr_i8_offset_0x100000000:
+; GFX908-ISEL:       ; %bb.0:
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-ISEL-NEXT:    s_add_u32 s4, s16, 0
+; GFX908-ISEL-NEXT:    s_addc_u32 s5, s17, 1
+; GFX908-ISEL-NEXT:    v_mov_b32_e32 v0, s4
+; GFX908-ISEL-NEXT:    v_mov_b32_e32 v1, s5
+; GFX908-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-ISEL-LABEL: global_load_saddr_i8_offset_0x100000000:
+; GFX90A-ISEL:       ; %bb.0:
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-ISEL-NEXT:    s_add_u32 s4, s16, 0
+; GFX90A-ISEL-NEXT:    s_addc_u32 s5, s17, 1
+; GFX90A-ISEL-NEXT:    v_pk_mov_b32 v[0:1], s[4:5], s[4:5] op_sel:[0,1]
+; GFX90A-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_0x100000000:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0:
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_add_u32 s0, s0, 0
+; GFX9-4-GENERIC-ISEL-NEXT:    s_addc_u32 s1, s1, 1
+; GFX9-4-GENERIC-ISEL-NEXT:    v_mov_b64_e32 v[0:1], s[0:1]
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0 sc1
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-ISEL-LABEL: global_load_saddr_i8_offset_0x100000000:
+; GFX942-ISEL:       ; %bb.0:
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    s_add_u32 s0, s0, 0
+; GFX942-ISEL-NEXT:    s_addc_u32 s1, s1, 1
+; GFX942-ISEL-NEXT:    v_mov_b64_e32 v[0:1], s[0:1]
+; GFX942-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0 sc1
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-ISEL-LABEL: global_load_saddr_i8_offset_0x100000000:
+; GFX950-ISEL:       ; %bb.0:
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-ISEL-NEXT:    s_add_u32 s0, s0, 0
+; GFX950-ISEL-NEXT:    s_addc_u32 s1, s1, 1
+; GFX950-ISEL-NEXT:    v_mov_b64_e32 v[0:1], s[0:1]
+; GFX950-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0 sc1
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_0x100000000:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0:
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_add_u32 s4, s16, 0
+; GFX10-1-GENERIC-ISEL-NEXT:    s_addc_u32 s5, s17, 1
+; GFX10-1-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, s4
+; GFX10-1-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v1, s5
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: global_load_saddr_i8_offset_0x100000000:
+; GFX1012-ISEL:       ; %bb.0:
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    s_add_u32 s4, s16, 0
+; GFX1012-ISEL-NEXT:    s_addc_u32 s5, s17, 1
+; GFX1012-ISEL-NEXT:    v_mov_b32_e32 v0, s4
+; GFX1012-ISEL-NEXT:    v_mov_b32_e32 v1, s5
+; GFX1012-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_0x100000000:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0:
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_add_u32 s4, s16, 0
+; GFX10-3-GENERIC-ISEL-NEXT:    s_addc_u32 s5, s17, 1
+; GFX10-3-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, s4
+; GFX10-3-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v1, s5
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_0x100000000:
+; GFX11-GENERIC-ISEL:       ; %bb.0:
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_add_u32 s0, s0, 0
+; GFX11-GENERIC-ISEL-NEXT:    s_addc_u32 s1, s1, 1
+; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX11-GENERIC-ISEL-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
+; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: global_load_saddr_i8_offset_0x100000000:
+; GFX1250-ISEL:       ; %bb.0:
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    s_add_co_u32 s0, s0, 0
+; GFX1250-ISEL-NEXT:    s_add_co_ci_u32 s1, s1, 1
+; GFX1250-ISEL-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX1250-ISEL-NEXT:    v_mov_b64_e32 v[0:1], s[0:1]
+; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SYS
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_0x100000000:
+; GFX12-GENERIC-ISEL:       ; %bb.0:
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_add_co_u32 s0, s0, 0
+; GFX12-GENERIC-ISEL-NEXT:    s_add_co_ci_u32 s1, s1, 1
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_alu depctr_sa_sdst(0)
+; GFX12-GENERIC-ISEL-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
+; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SYS
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+  %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 4294967296
+  %load = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %gep0, metadata !3)
+  %cast.load = bitcast <4 x i32> %load to <4 x float>
+  ret <4 x float> %cast.load
+}
+
+define <4 x float> @global_load_saddr_i8_offset_0x100000001(ptr addrspace(1) inreg %sbase) {
+; GFX9-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_0x100000001:
+; GFX9-GENERIC-SDAG:       ; %bb.0:
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v1, s17
+; GFX9-GENERIC-SDAG-NEXT:    v_add_co_u32_e64 v0, vcc, 0, s16
+; GFX9-GENERIC-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 1, v1, vcc
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:1
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-SDAG-LABEL: global_load_saddr_i8_offset_0x100000001:
+; GFX906-SDAG:       ; %bb.0:
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-SDAG-NEXT:    v_mov_b32_e32 v1, s17
+; GFX906-SDAG-NEXT:    v_add_co_u32_e64 v0, vcc, 0, s16
+; GFX906-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 1, v1, vcc
+; GFX906-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:1
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-SDAG-LABEL: global_load_saddr_i8_offset_0x100000001:
+; GFX908-SDAG:       ; %bb.0:
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-SDAG-NEXT:    v_mov_b32_e32 v1, s17
+; GFX908-SDAG-NEXT:    v_add_co_u32_e64 v0, vcc, 0, s16
+; GFX908-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 1, v1, vcc
+; GFX908-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:1
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-SDAG-LABEL: global_load_saddr_i8_offset_0x100000001:
+; GFX90A-SDAG:       ; %bb.0:
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-SDAG-NEXT:    v_mov_b32_e32 v1, s17
+; GFX90A-SDAG-NEXT:    v_add_co_u32_e64 v0, vcc, 0, s16
+; GFX90A-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 1, v1, vcc
+; GFX90A-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:1
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_0x100000001:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0:
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v1, s1
+; GFX9-4-GENERIC-SDAG-NEXT:    v_add_co_u32_e64 v0, vcc, 0, s0
+; GFX9-4-GENERIC-SDAG-NEXT:    s_nop 1
+; GFX9-4-GENERIC-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 1, v1, vcc
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:1
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-SDAG-LABEL: global_load_saddr_i8_offset_0x100000001:
+; GFX942-SDAG:       ; %bb.0:
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    v_mov_b32_e32 v1, s1
+; GFX942-SDAG-NEXT:    v_add_co_u32_e64 v0, vcc, 0, s0
+; GFX942-SDAG-NEXT:    s_nop 1
+; GFX942-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 1, v1, vcc
+; GFX942-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:1
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-SDAG-LABEL: global_load_saddr_i8_offset_0x100000001:
+; GFX950-SDAG:       ; %bb.0:
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-SDAG-NEXT:    v_mov_b32_e32 v1, s1
+; GFX950-SDAG-NEXT:    v_add_co_u32_e64 v0, vcc, 0, s0
+; GFX950-SDAG-NEXT:    s_nop 1
+; GFX950-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 1, v1, vcc
+; GFX950-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:1
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_0x100000001:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0:
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, s4, 0, s16
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, s4, 1, s17, s4
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:1
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: global_load_saddr_i8_offset_0x100000001:
+; GFX1012-SDAG:       ; %bb.0:
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    v_add_co_u32 v0, s4, 0, s16
+; GFX1012-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, s4, 1, s17, s4
+; GFX1012-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:1
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_0x100000001:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0:
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, s4, 0, s16
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 1, s17, s4
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:1
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_0x100000001:
+; GFX11-GENERIC-SDAG:       ; %bb.0:
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, s0, 0, s0
+; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 1, s1, s0
+; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:1
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: global_load_saddr_i8_offset_0x100000001:
+; GFX1250-SDAG:       ; %bb.0:
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    v_add_co_u32 v0, s0, 0, s0
+; GFX1250-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX1250-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 1, s1, s0
+; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:1
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_0x100000001:
+; GFX12-GENERIC-SDAG:       ; %bb.0:
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, s0, 0, s0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_alu depctr_va_sdst(0)
+; GFX12-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 1, s1, s0
+; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:1
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_0x100000001:
+; GFX9-GENERIC-ISEL:       ; %bb.0:
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_add_u32 s4, s16, 1
+; GFX9-GENERIC-ISEL-NEXT:    s_addc_u32 s5, s17, 1
+; GFX9-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, s4
+; GFX9-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v1, s5
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-ISEL-LABEL: global_load_saddr_i8_offset_0x100000001:
+; GFX906-ISEL:       ; %bb.0:
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-ISEL-NEXT:    s_add_u32 s4, s16, 1
+; GFX906-ISEL-NEXT:    s_addc_u32 s5, s17, 1
+; GFX906-ISEL-NEXT:    v_mov_b32_e32 v0, s4
+; GFX906-ISEL-NEXT:    v_mov_b32_e32 v1, s5
+; GFX906-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-ISEL-LABEL: global_load_saddr_i8_offset_0x100000001:
+; GFX908-ISEL:       ; %bb.0:
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-ISEL-NEXT:    s_add_u32 s4, s16, 1
+; GFX908-ISEL-NEXT:    s_addc_u32 s5, s17, 1
+; GFX908-ISEL-NEXT:    v_mov_b32_e32 v0, s4
+; GFX908-ISEL-NEXT:    v_mov_b32_e32 v1, s5
+; GFX908-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-ISEL-LABEL: global_load_saddr_i8_offset_0x100000001:
+; GFX90A-ISEL:       ; %bb.0:
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-ISEL-NEXT:    s_add_u32 s4, s16, 1
+; GFX90A-ISEL-NEXT:    s_addc_u32 s5, s17, 1
+; GFX90A-ISEL-NEXT:    v_pk_mov_b32 v[0:1], s[4:5], s[4:5] op_sel:[0,1]
+; GFX90A-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_0x100000001:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0:
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_add_u32 s0, s0, 1
+; GFX9-4-GENERIC-ISEL-NEXT:    s_addc_u32 s1, s1, 1
+; GFX9-4-GENERIC-ISEL-NEXT:    v_mov_b64_e32 v[0:1], s[0:1]
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-ISEL-LABEL: global_load_saddr_i8_offset_0x100000001:
+; GFX942-ISEL:       ; %bb.0:
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    s_add_u32 s0, s0, 1
+; GFX942-ISEL-NEXT:    s_addc_u32 s1, s1, 1
+; GFX942-ISEL-NEXT:    v_mov_b64_e32 v[0:1], s[0:1]
+; GFX942-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-ISEL-LABEL: global_load_saddr_i8_offset_0x100000001:
+; GFX950-ISEL:       ; %bb.0:
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-ISEL-NEXT:    s_add_u32 s0, s0, 1
+; GFX950-ISEL-NEXT:    s_addc_u32 s1, s1, 1
+; GFX950-ISEL-NEXT:    v_mov_b64_e32 v[0:1], s[0:1]
+; GFX950-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_0x100000001:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0:
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_add_u32 s4, s16, 1
+; GFX10-1-GENERIC-ISEL-NEXT:    s_addc_u32 s5, s17, 1
+; GFX10-1-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, s4
+; GFX10-1-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v1, s5
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: global_load_saddr_i8_offset_0x100000001:
+; GFX1012-ISEL:       ; %bb.0:
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    s_add_u32 s4, s16, 1
+; GFX1012-ISEL-NEXT:    s_addc_u32 s5, s17, 1
+; GFX1012-ISEL-NEXT:    v_mov_b32_e32 v0, s4
+; GFX1012-ISEL-NEXT:    v_mov_b32_e32 v1, s5
+; GFX1012-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_0x100000001:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0:
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_add_u32 s4, s16, 1
+; GFX10-3-GENERIC-ISEL-NEXT:    s_addc_u32 s5, s17, 1
+; GFX10-3-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, s4
+; GFX10-3-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v1, s5
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_0x100000001:
+; GFX11-GENERIC-ISEL:       ; %bb.0:
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_add_u32 s0, s0, 1
+; GFX11-GENERIC-ISEL-NEXT:    s_addc_u32 s1, s1, 1
+; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX11-GENERIC-ISEL-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
+; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: global_load_saddr_i8_offset_0x100000001:
+; GFX1250-ISEL:       ; %bb.0:
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    s_add_co_u32 s0, s0, 1
+; GFX1250-ISEL-NEXT:    s_add_co_ci_u32 s1, s1, 1
+; GFX1250-ISEL-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX1250-ISEL-NEXT:    v_mov_b64_e32 v[0:1], s[0:1]
+; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_0x100000001:
+; GFX12-GENERIC-ISEL:       ; %bb.0:
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_add_co_u32 s0, s0, 1
+; GFX12-GENERIC-ISEL-NEXT:    s_add_co_ci_u32 s1, s1, 1
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_alu depctr_sa_sdst(0)
+; GFX12-GENERIC-ISEL-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
+; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+  %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 4294967297
+  %load = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %gep0, metadata !0)
+  %cast.load = bitcast <4 x i32> %load to <4 x float>
+  ret <4 x float> %cast.load
+}
+
+define <4 x float> @global_load_saddr_i8_offset_0x100000FFF(ptr addrspace(1) inreg %sbase) {
+; GFX9-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_0x100000FFF:
+; GFX9-GENERIC-SDAG:       ; %bb.0:
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_add_u32 s4, s16, 0xfff
+; GFX9-GENERIC-SDAG-NEXT:    s_addc_u32 s5, s17, 1
+; GFX9-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[4:5]
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-SDAG-LABEL: global_load_saddr_i8_offset_0x100000FFF:
+; GFX906-SDAG:       ; %bb.0:
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-SDAG-NEXT:    s_add_u32 s4, s16, 0xfff
+; GFX906-SDAG-NEXT:    s_addc_u32 s5, s17, 1
+; GFX906-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX906-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[4:5]
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-SDAG-LABEL: global_load_saddr_i8_offset_0x100000FFF:
+; GFX908-SDAG:       ; %bb.0:
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-SDAG-NEXT:    s_add_u32 s4, s16, 0xfff
+; GFX908-SDAG-NEXT:    s_addc_u32 s5, s17, 1
+; GFX908-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX908-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[4:5]
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-SDAG-LABEL: global_load_saddr_i8_offset_0x100000FFF:
+; GFX90A-SDAG:       ; %bb.0:
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-SDAG-NEXT:    s_add_u32 s4, s16, 0xfff
+; GFX90A-SDAG-NEXT:    s_addc_u32 s5, s17, 1
+; GFX90A-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX90A-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[4:5]
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_0x100000FFF:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0:
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_add_u32 s0, s0, 0xfff
+; GFX9-4-GENERIC-SDAG-NEXT:    s_addc_u32 s1, s1, 1
+; GFX9-4-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] sc0
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-SDAG-LABEL: global_load_saddr_i8_offset_0x100000FFF:
+; GFX942-SDAG:       ; %bb.0:
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    s_add_u32 s0, s0, 0xfff
+; GFX942-SDAG-NEXT:    s_addc_u32 s1, s1, 1
+; GFX942-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX942-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] sc0
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-SDAG-LABEL: global_load_saddr_i8_offset_0x100000FFF:
+; GFX950-SDAG:       ; %bb.0:
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-SDAG-NEXT:    s_add_u32 s0, s0, 0xfff
+; GFX950-SDAG-NEXT:    s_addc_u32 s1, s1, 1
+; GFX950-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX950-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] sc0
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_0x100000FFF:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0:
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, s4, 0x800, s16
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, s4, 1, s17, s4
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:2047 glc
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: global_load_saddr_i8_offset_0x100000FFF:
+; GFX1012-SDAG:       ; %bb.0:
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    v_add_co_u32 v0, s4, 0x800, s16
+; GFX1012-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, s4, 1, s17, s4
+; GFX1012-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:2047 glc
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_0x100000FFF:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0:
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, s4, 0x800, s16
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 1, s17, s4
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:2047 glc
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_0x100000FFF:
+; GFX11-GENERIC-SDAG:       ; %bb.0:
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, s0, 0, s0
+; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 1, s1, s0
+; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:4095 glc
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: global_load_saddr_i8_offset_0x100000FFF:
+; GFX1250-SDAG:       ; %bb.0:
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    v_add_co_u32 v0, s0, 0, s0
+; GFX1250-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX1250-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 1, s1, s0
+; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:4095
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_0x100000FFF:
+; GFX12-GENERIC-SDAG:       ; %bb.0:
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, s0, 0, s0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_alu depctr_va_sdst(0)
+; GFX12-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 1, s1, s0
+; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:4095 scope:SCOPE_SE
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_0x100000FFF:
+; GFX9-GENERIC-ISEL:       ; %bb.0:
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_add_u32 s4, s16, 0xfff
+; GFX9-GENERIC-ISEL-NEXT:    s_addc_u32 s5, s17, 1
+; GFX9-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[4:5]
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-ISEL-LABEL: global_load_saddr_i8_offset_0x100000FFF:
+; GFX906-ISEL:       ; %bb.0:
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-ISEL-NEXT:    s_add_u32 s4, s16, 0xfff
+; GFX906-ISEL-NEXT:    s_addc_u32 s5, s17, 1
+; GFX906-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX906-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[4:5]
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-ISEL-LABEL: global_load_saddr_i8_offset_0x100000FFF:
+; GFX908-ISEL:       ; %bb.0:
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-ISEL-NEXT:    s_add_u32 s4, s16, 0xfff
+; GFX908-ISEL-NEXT:    s_addc_u32 s5, s17, 1
+; GFX908-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX908-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[4:5]
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-ISEL-LABEL: global_load_saddr_i8_offset_0x100000FFF:
+; GFX90A-ISEL:       ; %bb.0:
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-ISEL-NEXT:    s_add_u32 s4, s16, 0xfff
+; GFX90A-ISEL-NEXT:    s_addc_u32 s5, s17, 1
+; GFX90A-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX90A-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[4:5]
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_0x100000FFF:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0:
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_add_u32 s0, s0, 0xfff
+; GFX9-4-GENERIC-ISEL-NEXT:    s_addc_u32 s1, s1, 1
+; GFX9-4-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] sc0
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-ISEL-LABEL: global_load_saddr_i8_offset_0x100000FFF:
+; GFX942-ISEL:       ; %bb.0:
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    s_add_u32 s0, s0, 0xfff
+; GFX942-ISEL-NEXT:    s_addc_u32 s1, s1, 1
+; GFX942-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX942-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] sc0
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-ISEL-LABEL: global_load_saddr_i8_offset_0x100000FFF:
+; GFX950-ISEL:       ; %bb.0:
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-ISEL-NEXT:    s_add_u32 s0, s0, 0xfff
+; GFX950-ISEL-NEXT:    s_addc_u32 s1, s1, 1
+; GFX950-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX950-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] sc0
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_0x100000FFF:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0:
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_add_u32 s4, s16, 0xfff
+; GFX10-1-GENERIC-ISEL-NEXT:    s_addc_u32 s5, s17, 1
+; GFX10-1-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, s4
+; GFX10-1-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v1, s5
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: global_load_saddr_i8_offset_0x100000FFF:
+; GFX1012-ISEL:       ; %bb.0:
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    s_add_u32 s4, s16, 0xfff
+; GFX1012-ISEL-NEXT:    s_addc_u32 s5, s17, 1
+; GFX1012-ISEL-NEXT:    v_mov_b32_e32 v0, s4
+; GFX1012-ISEL-NEXT:    v_mov_b32_e32 v1, s5
+; GFX1012-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_0x100000FFF:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0:
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_add_u32 s4, s16, 0xfff
+; GFX10-3-GENERIC-ISEL-NEXT:    s_addc_u32 s5, s17, 1
+; GFX10-3-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, s4
+; GFX10-3-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v1, s5
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_0x100000FFF:
+; GFX11-GENERIC-ISEL:       ; %bb.0:
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_add_u32 s0, s0, 0xfff
+; GFX11-GENERIC-ISEL-NEXT:    s_addc_u32 s1, s1, 1
+; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX11-GENERIC-ISEL-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
+; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: global_load_saddr_i8_offset_0x100000FFF:
+; GFX1250-ISEL:       ; %bb.0:
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    s_add_co_u32 s0, s0, 0xfff
+; GFX1250-ISEL-NEXT:    s_add_co_ci_u32 s1, s1, 1
+; GFX1250-ISEL-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX1250-ISEL-NEXT:    v_mov_b64_e32 v[0:1], s[0:1]
+; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_0x100000FFF:
+; GFX12-GENERIC-ISEL:       ; %bb.0:
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_add_co_u32 s0, s0, 0xfff
+; GFX12-GENERIC-ISEL-NEXT:    s_add_co_ci_u32 s1, s1, 1
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_alu depctr_sa_sdst(0)
+; GFX12-GENERIC-ISEL-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
+; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SE
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+  %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 4294971391
+  %load = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %gep0, metadata !1)
+  %cast.load = bitcast <4 x i32> %load to <4 x float>
+  ret <4 x float> %cast.load
+}
+
+define <4 x float> @global_load_saddr_i8_offset_0x100001000(ptr addrspace(1) inreg %sbase) {
+; GFX9-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_0x100001000:
+; GFX9-GENERIC-SDAG:       ; %bb.0:
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_add_u32 s4, s16, 0x1000
+; GFX9-GENERIC-SDAG-NEXT:    s_addc_u32 s5, s17, 1
+; GFX9-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[4:5] glc
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-SDAG-LABEL: global_load_saddr_i8_offset_0x100001000:
+; GFX906-SDAG:       ; %bb.0:
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-SDAG-NEXT:    s_add_u32 s4, s16, 0x1000
+; GFX906-SDAG-NEXT:    s_addc_u32 s5, s17, 1
+; GFX906-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX906-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[4:5] glc
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-SDAG-LABEL: global_load_saddr_i8_offset_0x100001000:
+; GFX908-SDAG:       ; %bb.0:
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-SDAG-NEXT:    s_add_u32 s4, s16, 0x1000
+; GFX908-SDAG-NEXT:    s_addc_u32 s5, s17, 1
+; GFX908-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX908-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[4:5] glc
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-SDAG-LABEL: global_load_saddr_i8_offset_0x100001000:
+; GFX90A-SDAG:       ; %bb.0:
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-SDAG-NEXT:    s_add_u32 s4, s16, 0x1000
+; GFX90A-SDAG-NEXT:    s_addc_u32 s5, s17, 1
+; GFX90A-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX90A-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[4:5] glc
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_0x100001000:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0:
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_add_u32 s0, s0, 0x1000
+; GFX9-4-GENERIC-SDAG-NEXT:    s_addc_u32 s1, s1, 1
+; GFX9-4-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] sc1
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-SDAG-LABEL: global_load_saddr_i8_offset_0x100001000:
+; GFX942-SDAG:       ; %bb.0:
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    s_add_u32 s0, s0, 0x1000
+; GFX942-SDAG-NEXT:    s_addc_u32 s1, s1, 1
+; GFX942-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX942-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] sc1
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-SDAG-LABEL: global_load_saddr_i8_offset_0x100001000:
+; GFX950-SDAG:       ; %bb.0:
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-SDAG-NEXT:    s_add_u32 s0, s0, 0x1000
+; GFX950-SDAG-NEXT:    s_addc_u32 s1, s1, 1
+; GFX950-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX950-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] sc1
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_0x100001000:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0:
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, s4, 0x1000, s16
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, s4, 1, s17, s4
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: global_load_saddr_i8_offset_0x100001000:
+; GFX1012-SDAG:       ; %bb.0:
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    v_add_co_u32 v0, s4, 0x1000, s16
+; GFX1012-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, s4, 1, s17, s4
+; GFX1012-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_0x100001000:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0:
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, s4, 0x1000, s16
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 1, s17, s4
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_0x100001000:
+; GFX11-GENERIC-SDAG:       ; %bb.0:
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, s0, 0x1000, s0
+; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 1, s1, s0
+; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: global_load_saddr_i8_offset_0x100001000:
+; GFX1250-SDAG:       ; %bb.0:
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    v_add_co_u32 v0, s0, 0, s0
+; GFX1250-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX1250-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 1, s1, s0
+; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:4096 scope:SCOPE_DEV
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_0x100001000:
+; GFX12-GENERIC-SDAG:       ; %bb.0:
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, s0, 0, s0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_alu depctr_va_sdst(0)
+; GFX12-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 1, s1, s0
+; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:4096 scope:SCOPE_DEV
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_0x100001000:
+; GFX9-GENERIC-ISEL:       ; %bb.0:
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_add_u32 s4, s16, 0x1000
+; GFX9-GENERIC-ISEL-NEXT:    s_addc_u32 s5, s17, 1
+; GFX9-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[4:5] glc
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-ISEL-LABEL: global_load_saddr_i8_offset_0x100001000:
+; GFX906-ISEL:       ; %bb.0:
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-ISEL-NEXT:    s_add_u32 s4, s16, 0x1000
+; GFX906-ISEL-NEXT:    s_addc_u32 s5, s17, 1
+; GFX906-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX906-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[4:5] glc
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-ISEL-LABEL: global_load_saddr_i8_offset_0x100001000:
+; GFX908-ISEL:       ; %bb.0:
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-ISEL-NEXT:    s_add_u32 s4, s16, 0x1000
+; GFX908-ISEL-NEXT:    s_addc_u32 s5, s17, 1
+; GFX908-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX908-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[4:5] glc
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-ISEL-LABEL: global_load_saddr_i8_offset_0x100001000:
+; GFX90A-ISEL:       ; %bb.0:
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-ISEL-NEXT:    s_add_u32 s4, s16, 0x1000
+; GFX90A-ISEL-NEXT:    s_addc_u32 s5, s17, 1
+; GFX90A-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX90A-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[4:5] glc
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_0x100001000:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0:
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_add_u32 s0, s0, 0x1000
+; GFX9-4-GENERIC-ISEL-NEXT:    s_addc_u32 s1, s1, 1
+; GFX9-4-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] sc1
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-ISEL-LABEL: global_load_saddr_i8_offset_0x100001000:
+; GFX942-ISEL:       ; %bb.0:
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    s_add_u32 s0, s0, 0x1000
+; GFX942-ISEL-NEXT:    s_addc_u32 s1, s1, 1
+; GFX942-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX942-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] sc1
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-ISEL-LABEL: global_load_saddr_i8_offset_0x100001000:
+; GFX950-ISEL:       ; %bb.0:
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-ISEL-NEXT:    s_add_u32 s0, s0, 0x1000
+; GFX950-ISEL-NEXT:    s_addc_u32 s1, s1, 1
+; GFX950-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX950-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] sc1
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_0x100001000:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0:
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_add_u32 s4, s16, 0x1000
+; GFX10-1-GENERIC-ISEL-NEXT:    s_addc_u32 s5, s17, 1
+; GFX10-1-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, s4
+; GFX10-1-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v1, s5
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: global_load_saddr_i8_offset_0x100001000:
+; GFX1012-ISEL:       ; %bb.0:
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    s_add_u32 s4, s16, 0x1000
+; GFX1012-ISEL-NEXT:    s_addc_u32 s5, s17, 1
+; GFX1012-ISEL-NEXT:    v_mov_b32_e32 v0, s4
+; GFX1012-ISEL-NEXT:    v_mov_b32_e32 v1, s5
+; GFX1012-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_0x100001000:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0:
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_add_u32 s4, s16, 0x1000
+; GFX10-3-GENERIC-ISEL-NEXT:    s_addc_u32 s5, s17, 1
+; GFX10-3-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, s4
+; GFX10-3-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v1, s5
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_0x100001000:
+; GFX11-GENERIC-ISEL:       ; %bb.0:
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_add_u32 s0, s0, 0x1000
+; GFX11-GENERIC-ISEL-NEXT:    s_addc_u32 s1, s1, 1
+; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX11-GENERIC-ISEL-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
+; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: global_load_saddr_i8_offset_0x100001000:
+; GFX1250-ISEL:       ; %bb.0:
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    s_add_co_u32 s0, s0, 0x1000
+; GFX1250-ISEL-NEXT:    s_add_co_ci_u32 s1, s1, 1
+; GFX1250-ISEL-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX1250-ISEL-NEXT:    v_mov_b64_e32 v[0:1], s[0:1]
+; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_DEV
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_0x100001000:
+; GFX12-GENERIC-ISEL:       ; %bb.0:
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_add_co_u32 s0, s0, 0x1000
+; GFX12-GENERIC-ISEL-NEXT:    s_add_co_ci_u32 s1, s1, 1
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_alu depctr_sa_sdst(0)
+; GFX12-GENERIC-ISEL-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
+; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_DEV
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+  %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 4294971392
+  %load = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %gep0, metadata !2)
+  %cast.load = bitcast <4 x i32> %load to <4 x float>
+  ret <4 x float> %cast.load
+}
+
+define <4 x float> @global_load_saddr_i8_offset_neg0xFFFFFFFF(ptr addrspace(1) inreg %sbase) {
+; GFX9-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_neg0xFFFFFFFF:
+; GFX9-GENERIC-SDAG:       ; %bb.0:
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, s16
+; GFX9-GENERIC-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0x1000, v0
+; GFX9-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v1, s17
+; GFX9-GENERIC-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-4095 glc
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-SDAG-LABEL: global_load_saddr_i8_offset_neg0xFFFFFFFF:
+; GFX906-SDAG:       ; %bb.0:
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-SDAG-NEXT:    v_mov_b32_e32 v0, s16
+; GFX906-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0x1000, v0
+; GFX906-SDAG-NEXT:    v_mov_b32_e32 v1, s17
+; GFX906-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX906-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-4095 glc
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-SDAG-LABEL: global_load_saddr_i8_offset_neg0xFFFFFFFF:
+; GFX908-SDAG:       ; %bb.0:
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-SDAG-NEXT:    v_mov_b32_e32 v0, s16
+; GFX908-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0x1000, v0
+; GFX908-SDAG-NEXT:    v_mov_b32_e32 v1, s17
+; GFX908-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX908-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-4095 glc
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-SDAG-LABEL: global_load_saddr_i8_offset_neg0xFFFFFFFF:
+; GFX90A-SDAG:       ; %bb.0:
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-SDAG-NEXT:    v_mov_b32_e32 v0, s16
+; GFX90A-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0x1000, v0
+; GFX90A-SDAG-NEXT:    v_mov_b32_e32 v1, s17
+; GFX90A-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX90A-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-4095 glc
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_neg0xFFFFFFFF:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0:
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, s0
+; GFX9-4-GENERIC-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0x1000, v0
+; GFX9-4-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v1, s1
+; GFX9-4-GENERIC-SDAG-NEXT:    s_nop 0
+; GFX9-4-GENERIC-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-4095 sc0 sc1
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-SDAG-LABEL: global_load_saddr_i8_offset_neg0xFFFFFFFF:
+; GFX942-SDAG:       ; %bb.0:
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    v_mov_b32_e32 v0, s0
+; GFX942-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0x1000, v0
+; GFX942-SDAG-NEXT:    v_mov_b32_e32 v1, s1
+; GFX942-SDAG-NEXT:    s_nop 0
+; GFX942-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX942-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-4095 sc0 sc1
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-SDAG-LABEL: global_load_saddr_i8_offset_neg0xFFFFFFFF:
+; GFX950-SDAG:       ; %bb.0:
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-SDAG-NEXT:    v_mov_b32_e32 v0, s0
+; GFX950-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0x1000, v0
+; GFX950-SDAG-NEXT:    v_mov_b32_e32 v1, s1
+; GFX950-SDAG-NEXT:    s_nop 0
+; GFX950-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX950-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-4095 sc0 sc1
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_neg0xFFFFFFFF:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0:
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, s4, 0x800, s16
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, s4, -1, s17, s4
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-2047 glc dlc
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: global_load_saddr_i8_offset_neg0xFFFFFFFF:
+; GFX1012-SDAG:       ; %bb.0:
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    v_add_co_u32 v0, s4, 0x800, s16
+; GFX1012-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, s4, -1, s17, s4
+; GFX1012-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-2047 glc dlc
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_neg0xFFFFFFFF:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0:
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, s4, 0x800, s16
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, s17, s4
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-2047 glc dlc
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_neg0xFFFFFFFF:
+; GFX11-GENERIC-SDAG:       ; %bb.0:
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, s0, 0x1000, s0
+; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, s1, s0
+; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-4095 glc
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: global_load_saddr_i8_offset_neg0xFFFFFFFF:
+; GFX1250-SDAG:       ; %bb.0:
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    v_add_co_u32 v0, s0, 0x800000, s0
+; GFX1250-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX1250-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, s1, s0
+; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-8388607 scope:SCOPE_SYS
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_neg0xFFFFFFFF:
+; GFX12-GENERIC-SDAG:       ; %bb.0:
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, s0, 0x800000, s0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_alu depctr_va_sdst(0)
+; GFX12-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, s1, s0
+; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-8388607 scope:SCOPE_SYS
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_neg0xFFFFFFFF:
+; GFX9-GENERIC-ISEL:       ; %bb.0:
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_add_u32 s4, s16, 1
+; GFX9-GENERIC-ISEL-NEXT:    s_addc_u32 s5, s17, -1
+; GFX9-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, s4
+; GFX9-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v1, s5
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-ISEL-LABEL: global_load_saddr_i8_offset_neg0xFFFFFFFF:
+; GFX906-ISEL:       ; %bb.0:
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-ISEL-NEXT:    s_add_u32 s4, s16, 1
+; GFX906-ISEL-NEXT:    s_addc_u32 s5, s17, -1
+; GFX906-ISEL-NEXT:    v_mov_b32_e32 v0, s4
+; GFX906-ISEL-NEXT:    v_mov_b32_e32 v1, s5
+; GFX906-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-ISEL-LABEL: global_load_saddr_i8_offset_neg0xFFFFFFFF:
+; GFX908-ISEL:       ; %bb.0:
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-ISEL-NEXT:    s_add_u32 s4, s16, 1
+; GFX908-ISEL-NEXT:    s_addc_u32 s5, s17, -1
+; GFX908-ISEL-NEXT:    v_mov_b32_e32 v0, s4
+; GFX908-ISEL-NEXT:    v_mov_b32_e32 v1, s5
+; GFX908-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-ISEL-LABEL: global_load_saddr_i8_offset_neg0xFFFFFFFF:
+; GFX90A-ISEL:       ; %bb.0:
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-ISEL-NEXT:    s_add_u32 s4, s16, 1
+; GFX90A-ISEL-NEXT:    s_addc_u32 s5, s17, -1
+; GFX90A-ISEL-NEXT:    v_pk_mov_b32 v[0:1], s[4:5], s[4:5] op_sel:[0,1]
+; GFX90A-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_neg0xFFFFFFFF:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0:
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_add_u32 s0, s0, 1
+; GFX9-4-GENERIC-ISEL-NEXT:    s_addc_u32 s1, s1, -1
+; GFX9-4-GENERIC-ISEL-NEXT:    v_mov_b64_e32 v[0:1], s[0:1]
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0 sc1
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-ISEL-LABEL: global_load_saddr_i8_offset_neg0xFFFFFFFF:
+; GFX942-ISEL:       ; %bb.0:
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    s_add_u32 s0, s0, 1
+; GFX942-ISEL-NEXT:    s_addc_u32 s1, s1, -1
+; GFX942-ISEL-NEXT:    v_mov_b64_e32 v[0:1], s[0:1]
+; GFX942-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0 sc1
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-ISEL-LABEL: global_load_saddr_i8_offset_neg0xFFFFFFFF:
+; GFX950-ISEL:       ; %bb.0:
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-ISEL-NEXT:    s_add_u32 s0, s0, 1
+; GFX950-ISEL-NEXT:    s_addc_u32 s1, s1, -1
+; GFX950-ISEL-NEXT:    v_mov_b64_e32 v[0:1], s[0:1]
+; GFX950-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0 sc1
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_neg0xFFFFFFFF:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0:
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_add_u32 s4, s16, 1
+; GFX10-1-GENERIC-ISEL-NEXT:    s_addc_u32 s5, s17, -1
+; GFX10-1-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, s4
+; GFX10-1-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v1, s5
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: global_load_saddr_i8_offset_neg0xFFFFFFFF:
+; GFX1012-ISEL:       ; %bb.0:
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    s_add_u32 s4, s16, 1
+; GFX1012-ISEL-NEXT:    s_addc_u32 s5, s17, -1
+; GFX1012-ISEL-NEXT:    v_mov_b32_e32 v0, s4
+; GFX1012-ISEL-NEXT:    v_mov_b32_e32 v1, s5
+; GFX1012-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_neg0xFFFFFFFF:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0:
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_add_u32 s4, s16, 1
+; GFX10-3-GENERIC-ISEL-NEXT:    s_addc_u32 s5, s17, -1
+; GFX10-3-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, s4
+; GFX10-3-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v1, s5
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_neg0xFFFFFFFF:
+; GFX11-GENERIC-ISEL:       ; %bb.0:
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_add_u32 s0, s0, 1
+; GFX11-GENERIC-ISEL-NEXT:    s_addc_u32 s1, s1, -1
+; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX11-GENERIC-ISEL-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
+; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: global_load_saddr_i8_offset_neg0xFFFFFFFF:
+; GFX1250-ISEL:       ; %bb.0:
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    s_add_co_u32 s0, s0, 1
+; GFX1250-ISEL-NEXT:    s_add_co_ci_u32 s1, s1, -1
+; GFX1250-ISEL-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX1250-ISEL-NEXT:    v_mov_b64_e32 v[0:1], s[0:1]
+; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SYS
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_neg0xFFFFFFFF:
+; GFX12-GENERIC-ISEL:       ; %bb.0:
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_add_co_u32 s0, s0, 1
+; GFX12-GENERIC-ISEL-NEXT:    s_add_co_ci_u32 s1, s1, -1
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_alu depctr_sa_sdst(0)
+; GFX12-GENERIC-ISEL-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
+; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SYS
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+  %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 -4294967295
+  %load = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %gep0, metadata !3)
+  %cast.load = bitcast <4 x i32> %load to <4 x float>
+  ret <4 x float> %cast.load
+}
+
+define <4 x float> @global_load_saddr_i8_offset_neg0x100000000(ptr addrspace(1) inreg %sbase) {
+; GFX9-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_neg0x100000000:
+; GFX9-GENERIC-SDAG:       ; %bb.0:
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_add_i32 s17, s17, -1
+; GFX9-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17]
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-SDAG-LABEL: global_load_saddr_i8_offset_neg0x100000000:
+; GFX906-SDAG:       ; %bb.0:
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-SDAG-NEXT:    s_add_i32 s17, s17, -1
+; GFX906-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX906-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17]
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-SDAG-LABEL: global_load_saddr_i8_offset_neg0x100000000:
+; GFX908-SDAG:       ; %bb.0:
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-SDAG-NEXT:    s_add_i32 s17, s17, -1
+; GFX908-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX908-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17]
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-SDAG-LABEL: global_load_saddr_i8_offset_neg0x100000000:
+; GFX90A-SDAG:       ; %bb.0:
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-SDAG-NEXT:    s_add_i32 s17, s17, -1
+; GFX90A-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX90A-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17]
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_neg0x100000000:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0:
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_add_i32 s1, s1, -1
+; GFX9-4-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1]
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-SDAG-LABEL: global_load_saddr_i8_offset_neg0x100000000:
+; GFX942-SDAG:       ; %bb.0:
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    s_add_i32 s1, s1, -1
+; GFX942-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX942-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1]
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-SDAG-LABEL: global_load_saddr_i8_offset_neg0x100000000:
+; GFX950-SDAG:       ; %bb.0:
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-SDAG-NEXT:    s_add_i32 s1, s1, -1
+; GFX950-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX950-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1]
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_neg0x100000000:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0:
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX10-1-GENERIC-SDAG-NEXT:    s_add_i32 s17, s17, -1
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17]
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: global_load_saddr_i8_offset_neg0x100000000:
+; GFX1012-SDAG:       ; %bb.0:
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX1012-SDAG-NEXT:    s_add_i32 s17, s17, -1
+; GFX1012-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17]
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_neg0x100000000:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0:
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX10-3-GENERIC-SDAG-NEXT:    s_add_i32 s17, s17, -1
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17]
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_neg0x100000000:
+; GFX11-GENERIC-SDAG:       ; %bb.0:
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX11-GENERIC-SDAG-NEXT:    s_add_i32 s1, s1, -1
+; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1]
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: global_load_saddr_i8_offset_neg0x100000000:
+; GFX1250-SDAG:       ; %bb.0:
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX1250-SDAG-NEXT:    s_add_co_i32 s1, s1, -1
+; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1]
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_neg0x100000000:
+; GFX12-GENERIC-SDAG:       ; %bb.0:
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX12-GENERIC-SDAG-NEXT:    s_add_co_i32 s1, s1, -1
+; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1]
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_alu depctr_sa_sdst(0)
+; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_neg0x100000000:
+; GFX9-GENERIC-ISEL:       ; %bb.0:
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_add_u32 s4, s16, 0
+; GFX9-GENERIC-ISEL-NEXT:    s_addc_u32 s5, s17, -1
+; GFX9-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, s4
+; GFX9-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v1, s5
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-ISEL-LABEL: global_load_saddr_i8_offset_neg0x100000000:
+; GFX906-ISEL:       ; %bb.0:
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-ISEL-NEXT:    s_add_u32 s4, s16, 0
+; GFX906-ISEL-NEXT:    s_addc_u32 s5, s17, -1
+; GFX906-ISEL-NEXT:    v_mov_b32_e32 v0, s4
+; GFX906-ISEL-NEXT:    v_mov_b32_e32 v1, s5
+; GFX906-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-ISEL-LABEL: global_load_saddr_i8_offset_neg0x100000000:
+; GFX908-ISEL:       ; %bb.0:
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-ISEL-NEXT:    s_add_u32 s4, s16, 0
+; GFX908-ISEL-NEXT:    s_addc_u32 s5, s17, -1
+; GFX908-ISEL-NEXT:    v_mov_b32_e32 v0, s4
+; GFX908-ISEL-NEXT:    v_mov_b32_e32 v1, s5
+; GFX908-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-ISEL-LABEL: global_load_saddr_i8_offset_neg0x100000000:
+; GFX90A-ISEL:       ; %bb.0:
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-ISEL-NEXT:    s_add_u32 s4, s16, 0
+; GFX90A-ISEL-NEXT:    s_addc_u32 s5, s17, -1
+; GFX90A-ISEL-NEXT:    v_pk_mov_b32 v[0:1], s[4:5], s[4:5] op_sel:[0,1]
+; GFX90A-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_neg0x100000000:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0:
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_add_u32 s0, s0, 0
+; GFX9-4-GENERIC-ISEL-NEXT:    s_addc_u32 s1, s1, -1
+; GFX9-4-GENERIC-ISEL-NEXT:    v_mov_b64_e32 v[0:1], s[0:1]
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-ISEL-LABEL: global_load_saddr_i8_offset_neg0x100000000:
+; GFX942-ISEL:       ; %bb.0:
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    s_add_u32 s0, s0, 0
+; GFX942-ISEL-NEXT:    s_addc_u32 s1, s1, -1
+; GFX942-ISEL-NEXT:    v_mov_b64_e32 v[0:1], s[0:1]
+; GFX942-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-ISEL-LABEL: global_load_saddr_i8_offset_neg0x100000000:
+; GFX950-ISEL:       ; %bb.0:
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-ISEL-NEXT:    s_add_u32 s0, s0, 0
+; GFX950-ISEL-NEXT:    s_addc_u32 s1, s1, -1
+; GFX950-ISEL-NEXT:    v_mov_b64_e32 v[0:1], s[0:1]
+; GFX950-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_neg0x100000000:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0:
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_add_u32 s4, s16, 0
+; GFX10-1-GENERIC-ISEL-NEXT:    s_addc_u32 s5, s17, -1
+; GFX10-1-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, s4
+; GFX10-1-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v1, s5
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: global_load_saddr_i8_offset_neg0x100000000:
+; GFX1012-ISEL:       ; %bb.0:
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    s_add_u32 s4, s16, 0
+; GFX1012-ISEL-NEXT:    s_addc_u32 s5, s17, -1
+; GFX1012-ISEL-NEXT:    v_mov_b32_e32 v0, s4
+; GFX1012-ISEL-NEXT:    v_mov_b32_e32 v1, s5
+; GFX1012-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_neg0x100000000:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0:
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_add_u32 s4, s16, 0
+; GFX10-3-GENERIC-ISEL-NEXT:    s_addc_u32 s5, s17, -1
+; GFX10-3-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, s4
+; GFX10-3-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v1, s5
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_neg0x100000000:
+; GFX11-GENERIC-ISEL:       ; %bb.0:
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_add_u32 s0, s0, 0
+; GFX11-GENERIC-ISEL-NEXT:    s_addc_u32 s1, s1, -1
+; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX11-GENERIC-ISEL-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
+; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: global_load_saddr_i8_offset_neg0x100000000:
+; GFX1250-ISEL:       ; %bb.0:
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    s_add_co_u32 s0, s0, 0
+; GFX1250-ISEL-NEXT:    s_add_co_ci_u32 s1, s1, -1
+; GFX1250-ISEL-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX1250-ISEL-NEXT:    v_mov_b64_e32 v[0:1], s[0:1]
+; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_neg0x100000000:
+; GFX12-GENERIC-ISEL:       ; %bb.0:
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_add_co_u32 s0, s0, 0
+; GFX12-GENERIC-ISEL-NEXT:    s_add_co_ci_u32 s1, s1, -1
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_alu depctr_sa_sdst(0)
+; GFX12-GENERIC-ISEL-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
+; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+  %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 -4294967296
+  %load = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %gep0, metadata !0)
+  %cast.load = bitcast <4 x i32> %load to <4 x float>
+  ret <4 x float> %cast.load
+}
+
+define <4 x float> @global_load_saddr_i8_offset_neg0x100000001(ptr addrspace(1) inreg %sbase) {
+; GFX9-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_neg0x100000001:
+; GFX9-GENERIC-SDAG:       ; %bb.0:
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v1, s17
+; GFX9-GENERIC-SDAG-NEXT:    v_add_co_u32_e64 v0, vcc, 0, s16
+; GFX9-GENERIC-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-1
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-SDAG-LABEL: global_load_saddr_i8_offset_neg0x100000001:
+; GFX906-SDAG:       ; %bb.0:
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-SDAG-NEXT:    v_mov_b32_e32 v1, s17
+; GFX906-SDAG-NEXT:    v_add_co_u32_e64 v0, vcc, 0, s16
+; GFX906-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX906-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-1
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-SDAG-LABEL: global_load_saddr_i8_offset_neg0x100000001:
+; GFX908-SDAG:       ; %bb.0:
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-SDAG-NEXT:    v_mov_b32_e32 v1, s17
+; GFX908-SDAG-NEXT:    v_add_co_u32_e64 v0, vcc, 0, s16
+; GFX908-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX908-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-1
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-SDAG-LABEL: global_load_saddr_i8_offset_neg0x100000001:
+; GFX90A-SDAG:       ; %bb.0:
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-SDAG-NEXT:    v_mov_b32_e32 v1, s17
+; GFX90A-SDAG-NEXT:    v_add_co_u32_e64 v0, vcc, 0, s16
+; GFX90A-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX90A-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-1
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_neg0x100000001:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0:
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v1, s1
+; GFX9-4-GENERIC-SDAG-NEXT:    v_add_co_u32_e64 v0, vcc, 0, s0
+; GFX9-4-GENERIC-SDAG-NEXT:    s_nop 1
+; GFX9-4-GENERIC-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-1 sc0
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-SDAG-LABEL: global_load_saddr_i8_offset_neg0x100000001:
+; GFX942-SDAG:       ; %bb.0:
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    v_mov_b32_e32 v1, s1
+; GFX942-SDAG-NEXT:    v_add_co_u32_e64 v0, vcc, 0, s0
+; GFX942-SDAG-NEXT:    s_nop 1
+; GFX942-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX942-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-1 sc0
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-SDAG-LABEL: global_load_saddr_i8_offset_neg0x100000001:
+; GFX950-SDAG:       ; %bb.0:
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-SDAG-NEXT:    v_mov_b32_e32 v1, s1
+; GFX950-SDAG-NEXT:    v_add_co_u32_e64 v0, vcc, 0, s0
+; GFX950-SDAG-NEXT:    s_nop 1
+; GFX950-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX950-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-1 sc0
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_neg0x100000001:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0:
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, s4, 0, s16
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, s4, -1, s17, s4
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-1 glc
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: global_load_saddr_i8_offset_neg0x100000001:
+; GFX1012-SDAG:       ; %bb.0:
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    v_add_co_u32 v0, s4, 0, s16
+; GFX1012-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, s4, -1, s17, s4
+; GFX1012-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-1 glc
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_neg0x100000001:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0:
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, s4, 0, s16
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, s17, s4
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-1 glc
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_neg0x100000001:
+; GFX11-GENERIC-SDAG:       ; %bb.0:
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, s0, 0, s0
+; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, s1, s0
+; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-1 glc
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: global_load_saddr_i8_offset_neg0x100000001:
+; GFX1250-SDAG:       ; %bb.0:
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    v_add_co_u32 v0, s0, 0, s0
+; GFX1250-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX1250-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, s1, s0
+; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-1
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_neg0x100000001:
+; GFX12-GENERIC-SDAG:       ; %bb.0:
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, s0, 0, s0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_alu depctr_va_sdst(0)
+; GFX12-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, s1, s0
+; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-1 scope:SCOPE_SE
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_neg0x100000001:
+; GFX9-GENERIC-ISEL:       ; %bb.0:
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_add_u32 s4, s16, -1
+; GFX9-GENERIC-ISEL-NEXT:    s_addc_u32 s5, s17, -2
+; GFX9-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, s4
+; GFX9-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v1, s5
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-ISEL-LABEL: global_load_saddr_i8_offset_neg0x100000001:
+; GFX906-ISEL:       ; %bb.0:
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-ISEL-NEXT:    s_add_u32 s4, s16, -1
+; GFX906-ISEL-NEXT:    s_addc_u32 s5, s17, -2
+; GFX906-ISEL-NEXT:    v_mov_b32_e32 v0, s4
+; GFX906-ISEL-NEXT:    v_mov_b32_e32 v1, s5
+; GFX906-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-ISEL-LABEL: global_load_saddr_i8_offset_neg0x100000001:
+; GFX908-ISEL:       ; %bb.0:
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-ISEL-NEXT:    s_add_u32 s4, s16, -1
+; GFX908-ISEL-NEXT:    s_addc_u32 s5, s17, -2
+; GFX908-ISEL-NEXT:    v_mov_b32_e32 v0, s4
+; GFX908-ISEL-NEXT:    v_mov_b32_e32 v1, s5
+; GFX908-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-ISEL-LABEL: global_load_saddr_i8_offset_neg0x100000001:
+; GFX90A-ISEL:       ; %bb.0:
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-ISEL-NEXT:    s_add_u32 s4, s16, -1
+; GFX90A-ISEL-NEXT:    s_addc_u32 s5, s17, -2
+; GFX90A-ISEL-NEXT:    v_pk_mov_b32 v[0:1], s[4:5], s[4:5] op_sel:[0,1]
+; GFX90A-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_neg0x100000001:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0:
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_add_u32 s0, s0, -1
+; GFX9-4-GENERIC-ISEL-NEXT:    s_addc_u32 s1, s1, -2
+; GFX9-4-GENERIC-ISEL-NEXT:    v_mov_b64_e32 v[0:1], s[0:1]
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-ISEL-LABEL: global_load_saddr_i8_offset_neg0x100000001:
+; GFX942-ISEL:       ; %bb.0:
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    s_add_u32 s0, s0, -1
+; GFX942-ISEL-NEXT:    s_addc_u32 s1, s1, -2
+; GFX942-ISEL-NEXT:    v_mov_b64_e32 v[0:1], s[0:1]
+; GFX942-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-ISEL-LABEL: global_load_saddr_i8_offset_neg0x100000001:
+; GFX950-ISEL:       ; %bb.0:
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-ISEL-NEXT:    s_add_u32 s0, s0, -1
+; GFX950-ISEL-NEXT:    s_addc_u32 s1, s1, -2
+; GFX950-ISEL-NEXT:    v_mov_b64_e32 v[0:1], s[0:1]
+; GFX950-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_neg0x100000001:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0:
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_add_u32 s4, s16, -1
+; GFX10-1-GENERIC-ISEL-NEXT:    s_addc_u32 s5, s17, -2
+; GFX10-1-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, s4
+; GFX10-1-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v1, s5
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: global_load_saddr_i8_offset_neg0x100000001:
+; GFX1012-ISEL:       ; %bb.0:
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    s_add_u32 s4, s16, -1
+; GFX1012-ISEL-NEXT:    s_addc_u32 s5, s17, -2
+; GFX1012-ISEL-NEXT:    v_mov_b32_e32 v0, s4
+; GFX1012-ISEL-NEXT:    v_mov_b32_e32 v1, s5
+; GFX1012-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_neg0x100000001:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0:
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_add_u32 s4, s16, -1
+; GFX10-3-GENERIC-ISEL-NEXT:    s_addc_u32 s5, s17, -2
+; GFX10-3-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, s4
+; GFX10-3-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v1, s5
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_neg0x100000001:
+; GFX11-GENERIC-ISEL:       ; %bb.0:
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_add_u32 s0, s0, -1
+; GFX11-GENERIC-ISEL-NEXT:    s_addc_u32 s1, s1, -2
+; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX11-GENERIC-ISEL-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
+; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: global_load_saddr_i8_offset_neg0x100000001:
+; GFX1250-ISEL:       ; %bb.0:
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    s_add_co_u32 s0, s0, -1
+; GFX1250-ISEL-NEXT:    s_add_co_ci_u32 s1, s1, -2
+; GFX1250-ISEL-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX1250-ISEL-NEXT:    v_mov_b64_e32 v[0:1], s[0:1]
+; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_neg0x100000001:
+; GFX12-GENERIC-ISEL:       ; %bb.0:
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_add_co_u32 s0, s0, -1
+; GFX12-GENERIC-ISEL-NEXT:    s_add_co_ci_u32 s1, s1, -2
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_alu depctr_sa_sdst(0)
+; GFX12-GENERIC-ISEL-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
+; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SE
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+  %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 -4294967297
+  %load = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %gep0, metadata !1)
+  %cast.load = bitcast <4 x i32> %load to <4 x float>
+  ret <4 x float> %cast.load
+}
+
+;;------------------------------------------------------------------------------
+;; Basic addressing patterns
+;;------------------------------------------------------------------------------
+
+;; Basic pattern, no immediate offset.
+define <4 x float> @global_load_saddr_i8_zext_vgpr(ptr addrspace(1) inreg %sbase, i32 %voffset) {
+; GFX9-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_vgpr:
+; GFX9-GENERIC-SDAG:       ; %bb.0:
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-SDAG-LABEL: global_load_saddr_i8_zext_vgpr:
+; GFX906-SDAG:       ; %bb.0:
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-SDAG-LABEL: global_load_saddr_i8_zext_vgpr:
+; GFX908-SDAG:       ; %bb.0:
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-SDAG-LABEL: global_load_saddr_i8_zext_vgpr:
+; GFX90A-SDAG:       ; %bb.0:
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_vgpr:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0:
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] sc1
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-SDAG-LABEL: global_load_saddr_i8_zext_vgpr:
+; GFX942-SDAG:       ; %bb.0:
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] sc1
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-SDAG-LABEL: global_load_saddr_i8_zext_vgpr:
+; GFX950-SDAG:       ; %bb.0:
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] sc1
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_vgpr:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0:
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc dlc
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: global_load_saddr_i8_zext_vgpr:
+; GFX1012-SDAG:       ; %bb.0:
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc dlc
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_vgpr:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0:
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc dlc
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_vgpr:
+; GFX11-GENERIC-SDAG:       ; %bb.0:
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] glc
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: global_load_saddr_i8_zext_vgpr:
+; GFX1250-SDAG:       ; %bb.0:
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] scope:SCOPE_DEV
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_vgpr:
+; GFX12-GENERIC-SDAG:       ; %bb.0:
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] scope:SCOPE_DEV
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_vgpr:
+; GFX9-GENERIC-ISEL:       ; %bb.0:
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-ISEL-LABEL: global_load_saddr_i8_zext_vgpr:
+; GFX906-ISEL:       ; %bb.0:
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-ISEL-LABEL: global_load_saddr_i8_zext_vgpr:
+; GFX908-ISEL:       ; %bb.0:
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-ISEL-LABEL: global_load_saddr_i8_zext_vgpr:
+; GFX90A-ISEL:       ; %bb.0:
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_vgpr:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0:
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] sc1
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-ISEL-LABEL: global_load_saddr_i8_zext_vgpr:
+; GFX942-ISEL:       ; %bb.0:
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] sc1
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-ISEL-LABEL: global_load_saddr_i8_zext_vgpr:
+; GFX950-ISEL:       ; %bb.0:
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] sc1
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_vgpr:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0:
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc dlc
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: global_load_saddr_i8_zext_vgpr:
+; GFX1012-ISEL:       ; %bb.0:
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc dlc
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_vgpr:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0:
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc dlc
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_vgpr:
+; GFX11-GENERIC-ISEL:       ; %bb.0:
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] glc
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: global_load_saddr_i8_zext_vgpr:
+; GFX1250-ISEL:       ; %bb.0:
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] scope:SCOPE_DEV
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_vgpr:
+; GFX12-GENERIC-ISEL:       ; %bb.0:
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] scope:SCOPE_DEV
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+  %zext.offset = zext i32 %voffset to i64
+  %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 %zext.offset
+  %load = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %gep0, metadata !2)
+  %cast.load = bitcast <4 x i32> %load to <4 x float>
+  ret <4 x float> %cast.load
+}
+
+;; Maximum positive offset on gfx9
+define <4 x float> @global_load_saddr_i8_zext_vgpr_offset_4095(ptr addrspace(1) inreg %sbase, i32 %voffset) {
+; GFX9-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_4095:
+; GFX9-GENERIC-SDAG:       ; %bb.0:
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:4095 glc
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_4095:
+; GFX906-SDAG:       ; %bb.0:
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:4095 glc
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_4095:
+; GFX908-SDAG:       ; %bb.0:
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:4095 glc
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_4095:
+; GFX90A-SDAG:       ; %bb.0:
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:4095 glc
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_4095:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0:
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:4095 sc0 sc1
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_4095:
+; GFX942-SDAG:       ; %bb.0:
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:4095 sc0 sc1
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_4095:
+; GFX950-SDAG:       ; %bb.0:
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:4095 sc0 sc1
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_4095:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0:
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, s4, s16, v0
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, s4, s17, 0, s4
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0x800, v0
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:2047 glc dlc
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_4095:
+; GFX1012-SDAG:       ; %bb.0:
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    v_add_co_u32 v0, s4, s16, v0
+; GFX1012-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, s4, s17, 0, s4
+; GFX1012-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0x800, v0
+; GFX1012-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX1012-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:2047 glc dlc
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_4095:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0:
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, s4, s16, v0
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, s17, 0, s4
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0x800, v0
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:2047 glc dlc
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_4095:
+; GFX11-GENERIC-SDAG:       ; %bb.0:
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:4095 glc
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_4095:
+; GFX1250-SDAG:       ; %bb.0:
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:4095 scope:SCOPE_SYS
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_4095:
+; GFX12-GENERIC-SDAG:       ; %bb.0:
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:4095 scope:SCOPE_SYS
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_4095:
+; GFX9-GENERIC-ISEL:       ; %bb.0:
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:4095 glc
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_4095:
+; GFX906-ISEL:       ; %bb.0:
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:4095 glc
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_4095:
+; GFX908-ISEL:       ; %bb.0:
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:4095 glc
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_4095:
+; GFX90A-ISEL:       ; %bb.0:
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:4095 glc
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_4095:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0:
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:4095 sc0 sc1
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_4095:
+; GFX942-ISEL:       ; %bb.0:
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:4095 sc0 sc1
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_4095:
+; GFX950-ISEL:       ; %bb.0:
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:4095 sc0 sc1
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_4095:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0:
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v1, s16
+; GFX10-1-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v2, s17
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v1, v0
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v2, vcc_lo
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfff, v0
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_4095:
+; GFX1012-ISEL:       ; %bb.0:
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    v_mov_b32_e32 v1, s16
+; GFX1012-ISEL-NEXT:    v_mov_b32_e32 v2, s17
+; GFX1012-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v1, v0
+; GFX1012-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v2, vcc_lo
+; GFX1012-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfff, v0
+; GFX1012-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX1012-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_4095:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0:
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v1, s16
+; GFX10-3-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v2, s17
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v1, v0
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v2, vcc_lo
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfff, v0
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_4095:
+; GFX11-GENERIC-ISEL:       ; %bb.0:
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:4095 glc
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_4095:
+; GFX1250-ISEL:       ; %bb.0:
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:4095 scope:SCOPE_SYS
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_4095:
+; GFX12-GENERIC-ISEL:       ; %bb.0:
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:4095 scope:SCOPE_SYS
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+  %zext.offset = zext i32 %voffset to i64
+  %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 %zext.offset
+  %gep1 = getelementptr inbounds i8, ptr addrspace(1) %gep0, i64 4095
+  %load = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %gep1, metadata !3)
+  %cast.load = bitcast <4 x i32> %load to <4 x float>
+  ret <4 x float> %cast.load
+}
+
+;; Maximum positive offset on gfx9 + 1
+define <4 x float> @global_load_saddr_i8_zext_vgpr_offset_4096(ptr addrspace(1) inreg %sbase, i32 %voffset) {
+; GFX9-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_4096:
+; GFX9-GENERIC-SDAG:       ; %bb.0:
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v1, s17
+; GFX9-GENERIC-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, s16, v0
+; GFX9-GENERIC-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX9-GENERIC-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0x1000, v0
+; GFX9-GENERIC-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_4096:
+; GFX906-SDAG:       ; %bb.0:
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-SDAG-NEXT:    v_mov_b32_e32 v1, s17
+; GFX906-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, s16, v0
+; GFX906-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX906-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0x1000, v0
+; GFX906-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX906-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_4096:
+; GFX908-SDAG:       ; %bb.0:
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-SDAG-NEXT:    v_mov_b32_e32 v1, s17
+; GFX908-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, s16, v0
+; GFX908-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX908-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0x1000, v0
+; GFX908-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX908-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_4096:
+; GFX90A-SDAG:       ; %bb.0:
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-SDAG-NEXT:    v_mov_b32_e32 v1, s17
+; GFX90A-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, s16, v0
+; GFX90A-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX90A-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0x1000, v0
+; GFX90A-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX90A-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_4096:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0:
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v1, 0
+; GFX9-4-GENERIC-SDAG-NEXT:    v_lshl_add_u64 v[0:1], s[0:1], 0, v[0:1]
+; GFX9-4-GENERIC-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0x1000, v0
+; GFX9-4-GENERIC-SDAG-NEXT:    s_nop 1
+; GFX9-4-GENERIC-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_4096:
+; GFX942-SDAG:       ; %bb.0:
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    v_mov_b32_e32 v1, 0
+; GFX942-SDAG-NEXT:    v_lshl_add_u64 v[0:1], s[0:1], 0, v[0:1]
+; GFX942-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0x1000, v0
+; GFX942-SDAG-NEXT:    s_nop 1
+; GFX942-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX942-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_4096:
+; GFX950-SDAG:       ; %bb.0:
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-SDAG-NEXT:    v_mov_b32_e32 v1, 0
+; GFX950-SDAG-NEXT:    v_lshl_add_u64 v[0:1], s[0:1], 0, v[0:1]
+; GFX950-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0x1000, v0
+; GFX950-SDAG-NEXT:    s_nop 1
+; GFX950-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX950-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_4096:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0:
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, s4, s16, v0
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, s4, s17, 0, s4
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0x1000, v0
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_4096:
+; GFX1012-SDAG:       ; %bb.0:
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    v_add_co_u32 v0, s4, s16, v0
+; GFX1012-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, s4, s17, 0, s4
+; GFX1012-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0x1000, v0
+; GFX1012-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX1012-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_4096:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0:
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, s4, s16, v0
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, s17, 0, s4
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0x1000, v0
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_4096:
+; GFX11-GENERIC-SDAG:       ; %bb.0:
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, s0, s0, v0
+; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, s1, 0, s0
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0x1000, v0
+; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_4096:
+; GFX1250-SDAG:       ; %bb.0:
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:4096
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_4096:
+; GFX12-GENERIC-SDAG:       ; %bb.0:
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:4096
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_4096:
+; GFX9-GENERIC-ISEL:       ; %bb.0:
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v1, s16
+; GFX9-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v2, s17
+; GFX9-GENERIC-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v1, v0
+; GFX9-GENERIC-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v2, vcc
+; GFX9-GENERIC-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 0x1000, v0
+; GFX9-GENERIC-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_4096:
+; GFX906-ISEL:       ; %bb.0:
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-ISEL-NEXT:    v_mov_b32_e32 v1, s16
+; GFX906-ISEL-NEXT:    v_mov_b32_e32 v2, s17
+; GFX906-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v1, v0
+; GFX906-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v2, vcc
+; GFX906-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 0x1000, v0
+; GFX906-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX906-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_4096:
+; GFX908-ISEL:       ; %bb.0:
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-ISEL-NEXT:    v_mov_b32_e32 v1, s16
+; GFX908-ISEL-NEXT:    v_mov_b32_e32 v2, s17
+; GFX908-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v1, v0
+; GFX908-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v2, vcc
+; GFX908-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 0x1000, v0
+; GFX908-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX908-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_4096:
+; GFX90A-ISEL:       ; %bb.0:
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-ISEL-NEXT:    v_pk_mov_b32 v[2:3], s[16:17], s[16:17] op_sel:[0,1]
+; GFX90A-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v2, v0
+; GFX90A-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v3, vcc
+; GFX90A-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 0x1000, v0
+; GFX90A-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX90A-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_4096:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0:
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    v_mov_b64_e32 v[2:3], s[0:1]
+; GFX9-4-GENERIC-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v2, v0
+; GFX9-4-GENERIC-ISEL-NEXT:    s_nop 1
+; GFX9-4-GENERIC-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v3, vcc
+; GFX9-4-GENERIC-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 0x1000, v0
+; GFX9-4-GENERIC-ISEL-NEXT:    s_nop 1
+; GFX9-4-GENERIC-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_4096:
+; GFX942-ISEL:       ; %bb.0:
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    v_mov_b64_e32 v[2:3], s[0:1]
+; GFX942-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v2, v0
+; GFX942-ISEL-NEXT:    s_nop 1
+; GFX942-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v3, vcc
+; GFX942-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 0x1000, v0
+; GFX942-ISEL-NEXT:    s_nop 1
+; GFX942-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX942-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_4096:
+; GFX950-ISEL:       ; %bb.0:
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-ISEL-NEXT:    v_mov_b64_e32 v[2:3], s[0:1]
+; GFX950-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v2, v0
+; GFX950-ISEL-NEXT:    s_nop 1
+; GFX950-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v3, vcc
+; GFX950-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 0x1000, v0
+; GFX950-ISEL-NEXT:    s_nop 1
+; GFX950-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX950-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_4096:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0:
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v1, s16
+; GFX10-1-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v2, s17
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v1, v0
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v2, vcc_lo
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0x1000, v0
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_4096:
+; GFX1012-ISEL:       ; %bb.0:
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    v_mov_b32_e32 v1, s16
+; GFX1012-ISEL-NEXT:    v_mov_b32_e32 v2, s17
+; GFX1012-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v1, v0
+; GFX1012-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v2, vcc_lo
+; GFX1012-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0x1000, v0
+; GFX1012-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX1012-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_4096:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0:
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v1, s16
+; GFX10-3-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v2, s17
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v1, v0
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v2, vcc_lo
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0x1000, v0
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_4096:
+; GFX11-GENERIC-ISEL:       ; %bb.0:
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    v_dual_mov_b32 v2, s1 :: v_dual_mov_b32 v1, s0
+; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v1, v0
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v2, vcc_lo
+; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0x1000, v0
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_4096:
+; GFX1250-ISEL:       ; %bb.0:
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:4096
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_4096:
+; GFX12-GENERIC-ISEL:       ; %bb.0:
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:4096
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+  %zext.offset = zext i32 %voffset to i64
+  %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 %zext.offset
+  %gep1 = getelementptr inbounds i8, ptr addrspace(1) %gep0, i64 4096
+  %load = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %gep1, metadata !0)
+  %cast.load = bitcast <4 x i32> %load to <4 x float>
+  ret <4 x float> %cast.load
+}
+
+;; Maximum negative offset on gfx9
+define <4 x float> @global_load_saddr_i8_zext_vgpr_offset_neg4096(ptr addrspace(1) inreg %sbase, i32 %voffset) {
+; GFX9-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_neg4096:
+; GFX9-GENERIC-SDAG:       ; %bb.0:
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:-4096
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_neg4096:
+; GFX906-SDAG:       ; %bb.0:
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:-4096
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_neg4096:
+; GFX908-SDAG:       ; %bb.0:
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:-4096
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_neg4096:
+; GFX90A-SDAG:       ; %bb.0:
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:-4096
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_neg4096:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0:
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:-4096 sc0
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_neg4096:
+; GFX942-SDAG:       ; %bb.0:
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:-4096 sc0
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_neg4096:
+; GFX950-SDAG:       ; %bb.0:
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:-4096 sc0
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_neg4096:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0:
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, s4, s16, v0
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, s4, s17, 0, s4
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfffff000, v0
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, -1, v1, vcc_lo
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_neg4096:
+; GFX1012-SDAG:       ; %bb.0:
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    v_add_co_u32 v0, s4, s16, v0
+; GFX1012-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, s4, s17, 0, s4
+; GFX1012-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfffff000, v0
+; GFX1012-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, -1, v1, vcc_lo
+; GFX1012-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_neg4096:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0:
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, s4, s16, v0
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, s17, 0, s4
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfffff000, v0
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_neg4096:
+; GFX11-GENERIC-SDAG:       ; %bb.0:
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-4096 glc
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_neg4096:
+; GFX1250-SDAG:       ; %bb.0:
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-4096
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_neg4096:
+; GFX12-GENERIC-SDAG:       ; %bb.0:
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-4096 scope:SCOPE_SE
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_neg4096:
+; GFX9-GENERIC-ISEL:       ; %bb.0:
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:-4096
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_neg4096:
+; GFX906-ISEL:       ; %bb.0:
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:-4096
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_neg4096:
+; GFX908-ISEL:       ; %bb.0:
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:-4096
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_neg4096:
+; GFX90A-ISEL:       ; %bb.0:
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:-4096
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_neg4096:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0:
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:-4096 sc0
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_neg4096:
+; GFX942-ISEL:       ; %bb.0:
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:-4096 sc0
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_neg4096:
+; GFX950-ISEL:       ; %bb.0:
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:-4096 sc0
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_neg4096:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0:
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v1, s16
+; GFX10-1-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v2, s17
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v1, v0
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v2, vcc_lo
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfffff000, v0
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, -1, v1, vcc_lo
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_neg4096:
+; GFX1012-ISEL:       ; %bb.0:
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    v_mov_b32_e32 v1, s16
+; GFX1012-ISEL-NEXT:    v_mov_b32_e32 v2, s17
+; GFX1012-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v1, v0
+; GFX1012-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v2, vcc_lo
+; GFX1012-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfffff000, v0
+; GFX1012-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, -1, v1, vcc_lo
+; GFX1012-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_neg4096:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0:
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v1, s16
+; GFX10-3-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v2, s17
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v1, v0
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v2, vcc_lo
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfffff000, v0
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_neg4096:
+; GFX11-GENERIC-ISEL:       ; %bb.0:
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-4096 glc
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_neg4096:
+; GFX1250-ISEL:       ; %bb.0:
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-4096
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_neg4096:
+; GFX12-GENERIC-ISEL:       ; %bb.0:
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-4096 scope:SCOPE_SE
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+  %zext.offset = zext i32 %voffset to i64
+  %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 %zext.offset
+  %gep1 = getelementptr inbounds i8, ptr addrspace(1) %gep0, i64 -4096
+  %load = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %gep1, metadata !1)
+  %cast.load = bitcast <4 x i32> %load to <4 x float>
+  ret <4 x float> %cast.load
+}
+
+;; Maximum negative offset on gfx9 - 1
+define <4 x float> @global_load_saddr_i8_zext_vgpr_offset_neg4097(ptr addrspace(1) inreg %sbase, i32 %voffset) {
+; GFX9-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_neg4097:
+; GFX9-GENERIC-SDAG:       ; %bb.0:
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v1, s17
+; GFX9-GENERIC-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, s16, v0
+; GFX9-GENERIC-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX9-GENERIC-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0xfffff000, v0
+; GFX9-GENERIC-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-1 glc
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_neg4097:
+; GFX906-SDAG:       ; %bb.0:
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-SDAG-NEXT:    v_mov_b32_e32 v1, s17
+; GFX906-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, s16, v0
+; GFX906-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX906-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0xfffff000, v0
+; GFX906-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX906-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-1 glc
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_neg4097:
+; GFX908-SDAG:       ; %bb.0:
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-SDAG-NEXT:    v_mov_b32_e32 v1, s17
+; GFX908-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, s16, v0
+; GFX908-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX908-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0xfffff000, v0
+; GFX908-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX908-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-1 glc
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_neg4097:
+; GFX90A-SDAG:       ; %bb.0:
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-SDAG-NEXT:    v_mov_b32_e32 v1, s17
+; GFX90A-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, s16, v0
+; GFX90A-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX90A-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0xfffff000, v0
+; GFX90A-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX90A-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-1 glc
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_neg4097:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0:
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v1, 0
+; GFX9-4-GENERIC-SDAG-NEXT:    v_lshl_add_u64 v[0:1], s[0:1], 0, v[0:1]
+; GFX9-4-GENERIC-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0xfffff000, v0
+; GFX9-4-GENERIC-SDAG-NEXT:    s_nop 1
+; GFX9-4-GENERIC-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-1 sc1
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_neg4097:
+; GFX942-SDAG:       ; %bb.0:
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    v_mov_b32_e32 v1, 0
+; GFX942-SDAG-NEXT:    v_lshl_add_u64 v[0:1], s[0:1], 0, v[0:1]
+; GFX942-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0xfffff000, v0
+; GFX942-SDAG-NEXT:    s_nop 1
+; GFX942-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX942-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-1 sc1
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_neg4097:
+; GFX950-SDAG:       ; %bb.0:
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-SDAG-NEXT:    v_mov_b32_e32 v1, 0
+; GFX950-SDAG-NEXT:    v_lshl_add_u64 v[0:1], s[0:1], 0, v[0:1]
+; GFX950-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0xfffff000, v0
+; GFX950-SDAG-NEXT:    s_nop 1
+; GFX950-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX950-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-1 sc1
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_neg4097:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0:
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, s4, s16, v0
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, s4, s17, 0, s4
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfffff000, v0
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, -1, v1, vcc_lo
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-1 glc dlc
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_neg4097:
+; GFX1012-SDAG:       ; %bb.0:
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    v_add_co_u32 v0, s4, s16, v0
+; GFX1012-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, s4, s17, 0, s4
+; GFX1012-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfffff000, v0
+; GFX1012-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, -1, v1, vcc_lo
+; GFX1012-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-1 glc dlc
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_neg4097:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0:
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, s4, s16, v0
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, s17, 0, s4
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfffff000, v0
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-1 glc dlc
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_neg4097:
+; GFX11-GENERIC-SDAG:       ; %bb.0:
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, s0, s0, v0
+; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, s1, 0, s0
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfffff000, v0
+; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo
+; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-1 glc
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_neg4097:
+; GFX1250-SDAG:       ; %bb.0:
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-4097 scope:SCOPE_DEV
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_neg4097:
+; GFX12-GENERIC-SDAG:       ; %bb.0:
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-4097 scope:SCOPE_DEV
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_neg4097:
+; GFX9-GENERIC-ISEL:       ; %bb.0:
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v1, s16
+; GFX9-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v2, s17
+; GFX9-GENERIC-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v1, v0
+; GFX9-GENERIC-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v2, vcc
+; GFX9-GENERIC-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 0xffffefff, v0
+; GFX9-GENERIC-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_neg4097:
+; GFX906-ISEL:       ; %bb.0:
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-ISEL-NEXT:    v_mov_b32_e32 v1, s16
+; GFX906-ISEL-NEXT:    v_mov_b32_e32 v2, s17
+; GFX906-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v1, v0
+; GFX906-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v2, vcc
+; GFX906-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 0xffffefff, v0
+; GFX906-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX906-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_neg4097:
+; GFX908-ISEL:       ; %bb.0:
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-ISEL-NEXT:    v_mov_b32_e32 v1, s16
+; GFX908-ISEL-NEXT:    v_mov_b32_e32 v2, s17
+; GFX908-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v1, v0
+; GFX908-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v2, vcc
+; GFX908-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 0xffffefff, v0
+; GFX908-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX908-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_neg4097:
+; GFX90A-ISEL:       ; %bb.0:
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-ISEL-NEXT:    v_pk_mov_b32 v[2:3], s[16:17], s[16:17] op_sel:[0,1]
+; GFX90A-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v2, v0
+; GFX90A-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v3, vcc
+; GFX90A-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 0xffffefff, v0
+; GFX90A-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX90A-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_neg4097:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0:
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    v_mov_b64_e32 v[2:3], s[0:1]
+; GFX9-4-GENERIC-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v2, v0
+; GFX9-4-GENERIC-ISEL-NEXT:    s_nop 1
+; GFX9-4-GENERIC-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v3, vcc
+; GFX9-4-GENERIC-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 0xffffefff, v0
+; GFX9-4-GENERIC-ISEL-NEXT:    s_nop 1
+; GFX9-4-GENERIC-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc1
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_neg4097:
+; GFX942-ISEL:       ; %bb.0:
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    v_mov_b64_e32 v[2:3], s[0:1]
+; GFX942-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v2, v0
+; GFX942-ISEL-NEXT:    s_nop 1
+; GFX942-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v3, vcc
+; GFX942-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 0xffffefff, v0
+; GFX942-ISEL-NEXT:    s_nop 1
+; GFX942-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX942-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc1
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_neg4097:
+; GFX950-ISEL:       ; %bb.0:
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-ISEL-NEXT:    v_mov_b64_e32 v[2:3], s[0:1]
+; GFX950-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v2, v0
+; GFX950-ISEL-NEXT:    s_nop 1
+; GFX950-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v3, vcc
+; GFX950-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 0xffffefff, v0
+; GFX950-ISEL-NEXT:    s_nop 1
+; GFX950-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX950-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc1
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_neg4097:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0:
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v1, s16
+; GFX10-1-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v2, s17
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v1, v0
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v2, vcc_lo
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0xffffefff, v0
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, -1, v1, vcc_lo
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_neg4097:
+; GFX1012-ISEL:       ; %bb.0:
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    v_mov_b32_e32 v1, s16
+; GFX1012-ISEL-NEXT:    v_mov_b32_e32 v2, s17
+; GFX1012-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v1, v0
+; GFX1012-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v2, vcc_lo
+; GFX1012-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0xffffefff, v0
+; GFX1012-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, -1, v1, vcc_lo
+; GFX1012-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_neg4097:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0:
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v1, s16
+; GFX10-3-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v2, s17
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v1, v0
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v2, vcc_lo
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0xffffefff, v0
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_neg4097:
+; GFX11-GENERIC-ISEL:       ; %bb.0:
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    v_dual_mov_b32 v2, s1 :: v_dual_mov_b32 v1, s0
+; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v1, v0
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v2, vcc_lo
+; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0xffffefff, v0
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo
+; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_neg4097:
+; GFX1250-ISEL:       ; %bb.0:
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-4097 scope:SCOPE_DEV
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_neg4097:
+; GFX12-GENERIC-ISEL:       ; %bb.0:
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-4097 scope:SCOPE_DEV
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+  %zext.offset = zext i32 %voffset to i64
+  %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 %zext.offset
+  %gep1 = getelementptr inbounds i8, ptr addrspace(1) %gep0, i64 -4097
+  %load = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %gep1, metadata !2)
+  %cast.load = bitcast <4 x i32> %load to <4 x float>
+  ret <4 x float> %cast.load
+}
+
+;; Maximum positive offset on gfx10
+define <4 x float> @global_load_saddr_i8_zext_vgpr_offset_2047(ptr addrspace(1) inreg %sbase, i32 %voffset) {
+; GFX9-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_2047:
+; GFX9-GENERIC-SDAG:       ; %bb.0:
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:2047 glc
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_2047:
+; GFX906-SDAG:       ; %bb.0:
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:2047 glc
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_2047:
+; GFX908-SDAG:       ; %bb.0:
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:2047 glc
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_2047:
+; GFX90A-SDAG:       ; %bb.0:
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:2047 glc
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_2047:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0:
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:2047 sc0 sc1
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_2047:
+; GFX942-SDAG:       ; %bb.0:
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:2047 sc0 sc1
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_2047:
+; GFX950-SDAG:       ; %bb.0:
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:2047 sc0 sc1
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_2047:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0:
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:2047 glc dlc
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_2047:
+; GFX1012-SDAG:       ; %bb.0:
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:2047 glc dlc
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_2047:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0:
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:2047 glc dlc
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_2047:
+; GFX11-GENERIC-SDAG:       ; %bb.0:
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:2047 glc
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_2047:
+; GFX1250-SDAG:       ; %bb.0:
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:2047 scope:SCOPE_SYS
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_2047:
+; GFX12-GENERIC-SDAG:       ; %bb.0:
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:2047 scope:SCOPE_SYS
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_2047:
+; GFX9-GENERIC-ISEL:       ; %bb.0:
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:2047 glc
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_2047:
+; GFX906-ISEL:       ; %bb.0:
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:2047 glc
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_2047:
+; GFX908-ISEL:       ; %bb.0:
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:2047 glc
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_2047:
+; GFX90A-ISEL:       ; %bb.0:
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:2047 glc
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_2047:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0:
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:2047 sc0 sc1
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_2047:
+; GFX942-ISEL:       ; %bb.0:
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:2047 sc0 sc1
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_2047:
+; GFX950-ISEL:       ; %bb.0:
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:2047 sc0 sc1
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_2047:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0:
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:2047 glc dlc
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_2047:
+; GFX1012-ISEL:       ; %bb.0:
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:2047 glc dlc
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_2047:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0:
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:2047 glc dlc
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_2047:
+; GFX11-GENERIC-ISEL:       ; %bb.0:
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:2047 glc
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_2047:
+; GFX1250-ISEL:       ; %bb.0:
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:2047 scope:SCOPE_SYS
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_2047:
+; GFX12-GENERIC-ISEL:       ; %bb.0:
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:2047 scope:SCOPE_SYS
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+  %zext.offset = zext i32 %voffset to i64
+  %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 %zext.offset
+  %gep1 = getelementptr inbounds i8, ptr addrspace(1) %gep0, i64 2047
+  %load = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %gep1, metadata !3)
+  %cast.load = bitcast <4 x i32> %load to <4 x float>
+  ret <4 x float> %cast.load
+}
+
+;; Maximum positive offset on gfx10 + 1
+define <4 x float> @global_load_saddr_i8_zext_vgpr_offset_2048(ptr addrspace(1) inreg %sbase, i32 %voffset) {
+; GFX9-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_2048:
+; GFX9-GENERIC-SDAG:       ; %bb.0:
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:2048
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_2048:
+; GFX906-SDAG:       ; %bb.0:
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:2048
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_2048:
+; GFX908-SDAG:       ; %bb.0:
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:2048
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_2048:
+; GFX90A-SDAG:       ; %bb.0:
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:2048
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_2048:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0:
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:2048
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_2048:
+; GFX942-SDAG:       ; %bb.0:
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:2048
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_2048:
+; GFX950-SDAG:       ; %bb.0:
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:2048
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_2048:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0:
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, s4, s16, v0
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, s4, s17, 0, s4
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0x800, v0
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_2048:
+; GFX1012-SDAG:       ; %bb.0:
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    v_add_co_u32 v0, s4, s16, v0
+; GFX1012-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, s4, s17, 0, s4
+; GFX1012-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0x800, v0
+; GFX1012-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX1012-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_2048:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0:
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, s4, s16, v0
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, s17, 0, s4
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0x800, v0
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_2048:
+; GFX11-GENERIC-SDAG:       ; %bb.0:
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:2048
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_2048:
+; GFX1250-SDAG:       ; %bb.0:
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:2048
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_2048:
+; GFX12-GENERIC-SDAG:       ; %bb.0:
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:2048
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_2048:
+; GFX9-GENERIC-ISEL:       ; %bb.0:
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:2048
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_2048:
+; GFX906-ISEL:       ; %bb.0:
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:2048
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_2048:
+; GFX908-ISEL:       ; %bb.0:
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:2048
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_2048:
+; GFX90A-ISEL:       ; %bb.0:
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:2048
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_2048:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0:
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:2048
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_2048:
+; GFX942-ISEL:       ; %bb.0:
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:2048
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_2048:
+; GFX950-ISEL:       ; %bb.0:
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:2048
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_2048:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0:
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v1, s16
+; GFX10-1-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v2, s17
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v1, v0
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v2, vcc_lo
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0x800, v0
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_2048:
+; GFX1012-ISEL:       ; %bb.0:
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    v_mov_b32_e32 v1, s16
+; GFX1012-ISEL-NEXT:    v_mov_b32_e32 v2, s17
+; GFX1012-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v1, v0
+; GFX1012-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v2, vcc_lo
+; GFX1012-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0x800, v0
+; GFX1012-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX1012-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_2048:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0:
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v1, s16
+; GFX10-3-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v2, s17
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v1, v0
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v2, vcc_lo
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0x800, v0
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_2048:
+; GFX11-GENERIC-ISEL:       ; %bb.0:
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:2048
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_2048:
+; GFX1250-ISEL:       ; %bb.0:
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:2048
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_2048:
+; GFX12-GENERIC-ISEL:       ; %bb.0:
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:2048
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+  %zext.offset = zext i32 %voffset to i64
+  %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 %zext.offset
+  %gep1 = getelementptr inbounds i8, ptr addrspace(1) %gep0, i64 2048
+  %load = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %gep1, metadata !0)
+  %cast.load = bitcast <4 x i32> %load to <4 x float>
+  ret <4 x float> %cast.load
+}
+
+;; Maximum negative offset on gfx10
+define <4 x float> @global_load_saddr_i8_zext_vgpr_offset_neg2048(ptr addrspace(1) inreg %sbase, i32 %voffset) {
+; GFX9-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_neg2048:
+; GFX9-GENERIC-SDAG:       ; %bb.0:
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:-2048
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_neg2048:
+; GFX906-SDAG:       ; %bb.0:
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:-2048
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_neg2048:
+; GFX908-SDAG:       ; %bb.0:
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:-2048
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_neg2048:
+; GFX90A-SDAG:       ; %bb.0:
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:-2048
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_neg2048:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0:
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:-2048 sc0
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_neg2048:
+; GFX942-SDAG:       ; %bb.0:
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:-2048 sc0
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_neg2048:
+; GFX950-SDAG:       ; %bb.0:
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:-2048 sc0
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_neg2048:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0:
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:-2048 glc
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_neg2048:
+; GFX1012-SDAG:       ; %bb.0:
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:-2048 glc
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_neg2048:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0:
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:-2048 glc
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_neg2048:
+; GFX11-GENERIC-SDAG:       ; %bb.0:
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-2048 glc
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_neg2048:
+; GFX1250-SDAG:       ; %bb.0:
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-2048
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_neg2048:
+; GFX12-GENERIC-SDAG:       ; %bb.0:
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-2048 scope:SCOPE_SE
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_neg2048:
+; GFX9-GENERIC-ISEL:       ; %bb.0:
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:-2048
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_neg2048:
+; GFX906-ISEL:       ; %bb.0:
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:-2048
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_neg2048:
+; GFX908-ISEL:       ; %bb.0:
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:-2048
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_neg2048:
+; GFX90A-ISEL:       ; %bb.0:
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:-2048
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_neg2048:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0:
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:-2048 sc0
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_neg2048:
+; GFX942-ISEL:       ; %bb.0:
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:-2048 sc0
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_neg2048:
+; GFX950-ISEL:       ; %bb.0:
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:-2048 sc0
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_neg2048:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0:
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:-2048 glc
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_neg2048:
+; GFX1012-ISEL:       ; %bb.0:
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:-2048 glc
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_neg2048:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0:
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:-2048 glc
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_neg2048:
+; GFX11-GENERIC-ISEL:       ; %bb.0:
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-2048 glc
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_neg2048:
+; GFX1250-ISEL:       ; %bb.0:
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-2048
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_neg2048:
+; GFX12-GENERIC-ISEL:       ; %bb.0:
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-2048 scope:SCOPE_SE
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+  %zext.offset = zext i32 %voffset to i64
+  %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 %zext.offset
+  %gep1 = getelementptr inbounds i8, ptr addrspace(1) %gep0, i64 -2048
+  %load = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %gep1, metadata !1)
+  %cast.load = bitcast <4 x i32> %load to <4 x float>
+  ret <4 x float> %cast.load
+}
+
+;; Maximum negative offset on gfx10 - 1
+define <4 x float> @global_load_saddr_i8_zext_vgpr_offset_neg2049(ptr addrspace(1) inreg %sbase, i32 %voffset) {
+; GFX9-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_neg2049:
+; GFX9-GENERIC-SDAG:       ; %bb.0:
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:-2049 glc
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_neg2049:
+; GFX906-SDAG:       ; %bb.0:
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:-2049 glc
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_neg2049:
+; GFX908-SDAG:       ; %bb.0:
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:-2049 glc
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_neg2049:
+; GFX90A-SDAG:       ; %bb.0:
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:-2049 glc
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_neg2049:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0:
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:-2049 sc1
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_neg2049:
+; GFX942-SDAG:       ; %bb.0:
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:-2049 sc1
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_neg2049:
+; GFX950-SDAG:       ; %bb.0:
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:-2049 sc1
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_neg2049:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0:
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, s4, s16, v0
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, s4, s17, 0, s4
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfffff800, v0
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, -1, v1, vcc_lo
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-1 glc dlc
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_neg2049:
+; GFX1012-SDAG:       ; %bb.0:
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    v_add_co_u32 v0, s4, s16, v0
+; GFX1012-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, s4, s17, 0, s4
+; GFX1012-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfffff800, v0
+; GFX1012-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, -1, v1, vcc_lo
+; GFX1012-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-1 glc dlc
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_neg2049:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0:
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, s4, s16, v0
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, s17, 0, s4
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfffff800, v0
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:-1 glc dlc
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_neg2049:
+; GFX11-GENERIC-SDAG:       ; %bb.0:
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-2049 glc
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_neg2049:
+; GFX1250-SDAG:       ; %bb.0:
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-2049 scope:SCOPE_DEV
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_neg2049:
+; GFX12-GENERIC-SDAG:       ; %bb.0:
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-2049 scope:SCOPE_DEV
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_neg2049:
+; GFX9-GENERIC-ISEL:       ; %bb.0:
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:-2049 glc
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_neg2049:
+; GFX906-ISEL:       ; %bb.0:
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:-2049 glc
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_neg2049:
+; GFX908-ISEL:       ; %bb.0:
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:-2049 glc
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_neg2049:
+; GFX90A-ISEL:       ; %bb.0:
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:-2049 glc
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_neg2049:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0:
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:-2049 sc1
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_neg2049:
+; GFX942-ISEL:       ; %bb.0:
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:-2049 sc1
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_neg2049:
+; GFX950-ISEL:       ; %bb.0:
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:-2049 sc1
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_neg2049:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0:
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v1, s16
+; GFX10-1-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v2, s17
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v1, v0
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v2, vcc_lo
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfffff7ff, v0
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, -1, v1, vcc_lo
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_neg2049:
+; GFX1012-ISEL:       ; %bb.0:
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    v_mov_b32_e32 v1, s16
+; GFX1012-ISEL-NEXT:    v_mov_b32_e32 v2, s17
+; GFX1012-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v1, v0
+; GFX1012-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v2, vcc_lo
+; GFX1012-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfffff7ff, v0
+; GFX1012-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, -1, v1, vcc_lo
+; GFX1012-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_neg2049:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0:
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v1, s16
+; GFX10-3-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v2, s17
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v1, v0
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v2, vcc_lo
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfffff7ff, v0
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_neg2049:
+; GFX11-GENERIC-ISEL:       ; %bb.0:
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-2049 glc
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_neg2049:
+; GFX1250-ISEL:       ; %bb.0:
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-2049 scope:SCOPE_DEV
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_neg2049:
+; GFX12-GENERIC-ISEL:       ; %bb.0:
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-2049 scope:SCOPE_DEV
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+  %zext.offset = zext i32 %voffset to i64
+  %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 %zext.offset
+  %gep1 = getelementptr inbounds i8, ptr addrspace(1) %gep0, i64 -2049
+  %load = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %gep1, metadata !2)
+  %cast.load = bitcast <4 x i32> %load to <4 x float>
+  ret <4 x float> %cast.load
+}
+
+;; Maximum positive offset on gfx12.
+define <4 x float> @global_load_saddr_i8_zext_vgpr_offset_0x7FFFFF(ptr addrspace(1) inreg %sbase, i32 %voffset) { %zext.offset = zext i32 %voffset to i64
+; GFX9-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_0x7FFFFF:
+; GFX9-GENERIC-SDAG:       ; %bb.0:
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v1, s17
+; GFX9-GENERIC-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, s16, v0
+; GFX9-GENERIC-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX9-GENERIC-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0x7ff000, v0
+; GFX9-GENERIC-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:4095 glc
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_0x7FFFFF:
+; GFX906-SDAG:       ; %bb.0:
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-SDAG-NEXT:    v_mov_b32_e32 v1, s17
+; GFX906-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, s16, v0
+; GFX906-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX906-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0x7ff000, v0
+; GFX906-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX906-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:4095 glc
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_0x7FFFFF:
+; GFX908-SDAG:       ; %bb.0:
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-SDAG-NEXT:    v_mov_b32_e32 v1, s17
+; GFX908-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, s16, v0
+; GFX908-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX908-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0x7ff000, v0
+; GFX908-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX908-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:4095 glc
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_0x7FFFFF:
+; GFX90A-SDAG:       ; %bb.0:
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-SDAG-NEXT:    v_mov_b32_e32 v1, s17
+; GFX90A-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, s16, v0
+; GFX90A-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX90A-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0x7ff000, v0
+; GFX90A-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX90A-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:4095 glc
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_0x7FFFFF:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0:
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v1, 0
+; GFX9-4-GENERIC-SDAG-NEXT:    v_lshl_add_u64 v[0:1], s[0:1], 0, v[0:1]
+; GFX9-4-GENERIC-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0x7ff000, v0
+; GFX9-4-GENERIC-SDAG-NEXT:    s_nop 1
+; GFX9-4-GENERIC-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:4095 sc0 sc1
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_0x7FFFFF:
+; GFX942-SDAG:       ; %bb.0:
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    v_mov_b32_e32 v1, 0
+; GFX942-SDAG-NEXT:    v_lshl_add_u64 v[0:1], s[0:1], 0, v[0:1]
+; GFX942-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0x7ff000, v0
+; GFX942-SDAG-NEXT:    s_nop 1
+; GFX942-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX942-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:4095 sc0 sc1
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_0x7FFFFF:
+; GFX950-SDAG:       ; %bb.0:
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-SDAG-NEXT:    v_mov_b32_e32 v1, 0
+; GFX950-SDAG-NEXT:    v_lshl_add_u64 v[0:1], s[0:1], 0, v[0:1]
+; GFX950-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0x7ff000, v0
+; GFX950-SDAG-NEXT:    s_nop 1
+; GFX950-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX950-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:4095 sc0 sc1
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_0x7FFFFF:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0:
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, s4, s16, v0
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, s4, s17, 0, s4
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0x7ff800, v0
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:2047 glc dlc
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_0x7FFFFF:
+; GFX1012-SDAG:       ; %bb.0:
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    v_add_co_u32 v0, s4, s16, v0
+; GFX1012-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, s4, s17, 0, s4
+; GFX1012-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0x7ff800, v0
+; GFX1012-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX1012-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:2047 glc dlc
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_0x7FFFFF:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0:
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, s4, s16, v0
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, s17, 0, s4
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0x7ff800, v0
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:2047 glc dlc
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_0x7FFFFF:
+; GFX11-GENERIC-SDAG:       ; %bb.0:
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, s0, s0, v0
+; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, s1, 0, s0
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0x7ff000, v0
+; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:4095 glc
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_0x7FFFFF:
+; GFX1250-SDAG:       ; %bb.0:
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:8388607 scope:SCOPE_SYS
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_0x7FFFFF:
+; GFX12-GENERIC-SDAG:       ; %bb.0:
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:8388607 scope:SCOPE_SYS
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_0x7FFFFF:
+; GFX9-GENERIC-ISEL:       ; %bb.0:
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v1, s16
+; GFX9-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v2, s17
+; GFX9-GENERIC-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v1, v0
+; GFX9-GENERIC-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v2, vcc
+; GFX9-GENERIC-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 0x7fffff, v0
+; GFX9-GENERIC-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_0x7FFFFF:
+; GFX906-ISEL:       ; %bb.0:
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-ISEL-NEXT:    v_mov_b32_e32 v1, s16
+; GFX906-ISEL-NEXT:    v_mov_b32_e32 v2, s17
+; GFX906-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v1, v0
+; GFX906-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v2, vcc
+; GFX906-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 0x7fffff, v0
+; GFX906-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX906-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_0x7FFFFF:
+; GFX908-ISEL:       ; %bb.0:
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-ISEL-NEXT:    v_mov_b32_e32 v1, s16
+; GFX908-ISEL-NEXT:    v_mov_b32_e32 v2, s17
+; GFX908-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v1, v0
+; GFX908-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v2, vcc
+; GFX908-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 0x7fffff, v0
+; GFX908-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX908-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_0x7FFFFF:
+; GFX90A-ISEL:       ; %bb.0:
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-ISEL-NEXT:    v_pk_mov_b32 v[2:3], s[16:17], s[16:17] op_sel:[0,1]
+; GFX90A-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v2, v0
+; GFX90A-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v3, vcc
+; GFX90A-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 0x7fffff, v0
+; GFX90A-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX90A-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_0x7FFFFF:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0:
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    v_mov_b64_e32 v[2:3], s[0:1]
+; GFX9-4-GENERIC-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v2, v0
+; GFX9-4-GENERIC-ISEL-NEXT:    s_nop 1
+; GFX9-4-GENERIC-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v3, vcc
+; GFX9-4-GENERIC-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 0x7fffff, v0
+; GFX9-4-GENERIC-ISEL-NEXT:    s_nop 1
+; GFX9-4-GENERIC-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0 sc1
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_0x7FFFFF:
+; GFX942-ISEL:       ; %bb.0:
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    v_mov_b64_e32 v[2:3], s[0:1]
+; GFX942-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v2, v0
+; GFX942-ISEL-NEXT:    s_nop 1
+; GFX942-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v3, vcc
+; GFX942-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 0x7fffff, v0
+; GFX942-ISEL-NEXT:    s_nop 1
+; GFX942-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX942-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0 sc1
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_0x7FFFFF:
+; GFX950-ISEL:       ; %bb.0:
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-ISEL-NEXT:    v_mov_b64_e32 v[2:3], s[0:1]
+; GFX950-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v2, v0
+; GFX950-ISEL-NEXT:    s_nop 1
+; GFX950-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v3, vcc
+; GFX950-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 0x7fffff, v0
+; GFX950-ISEL-NEXT:    s_nop 1
+; GFX950-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX950-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0 sc1
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_0x7FFFFF:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0:
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v1, s16
+; GFX10-1-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v2, s17
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v1, v0
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v2, vcc_lo
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0x7fffff, v0
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_0x7FFFFF:
+; GFX1012-ISEL:       ; %bb.0:
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    v_mov_b32_e32 v1, s16
+; GFX1012-ISEL-NEXT:    v_mov_b32_e32 v2, s17
+; GFX1012-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v1, v0
+; GFX1012-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v2, vcc_lo
+; GFX1012-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0x7fffff, v0
+; GFX1012-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX1012-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_0x7FFFFF:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0:
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v1, s16
+; GFX10-3-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v2, s17
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v1, v0
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v2, vcc_lo
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0x7fffff, v0
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_0x7FFFFF:
+; GFX11-GENERIC-ISEL:       ; %bb.0:
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    v_dual_mov_b32 v2, s1 :: v_dual_mov_b32 v1, s0
+; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v1, v0
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v2, vcc_lo
+; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0x7fffff, v0
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_0x7FFFFF:
+; GFX1250-ISEL:       ; %bb.0:
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:8388607 scope:SCOPE_SYS
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_0x7FFFFF:
+; GFX12-GENERIC-ISEL:       ; %bb.0:
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:8388607 scope:SCOPE_SYS
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+  %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 %zext.offset
+  %gep1 = getelementptr inbounds i8, ptr addrspace(1) %gep0, i64 8388607
+  %load = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %gep1, metadata !3)
+  %cast.load = bitcast <4 x i32> %load to <4 x float>
+  ret <4 x float> %cast.load
+}
+
+;; Minimum offset on gfx12.
+define <4 x float> @global_load_saddr_i8_zext_vgpr_offset_0xFFFFFF(ptr addrspace(1) inreg %sbase, i32 %voffset) { %zext.offset = zext i32 %voffset to i64
+; GFX9-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_0xFFFFFF:
+; GFX9-GENERIC-SDAG:       ; %bb.0:
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v1, s17
+; GFX9-GENERIC-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, s16, v0
+; GFX9-GENERIC-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX9-GENERIC-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0xff800000, v0
+; GFX9-GENERIC-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_0xFFFFFF:
+; GFX906-SDAG:       ; %bb.0:
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-SDAG-NEXT:    v_mov_b32_e32 v1, s17
+; GFX906-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, s16, v0
+; GFX906-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX906-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0xff800000, v0
+; GFX906-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX906-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_0xFFFFFF:
+; GFX908-SDAG:       ; %bb.0:
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-SDAG-NEXT:    v_mov_b32_e32 v1, s17
+; GFX908-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, s16, v0
+; GFX908-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX908-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0xff800000, v0
+; GFX908-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX908-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_0xFFFFFF:
+; GFX90A-SDAG:       ; %bb.0:
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-SDAG-NEXT:    v_mov_b32_e32 v1, s17
+; GFX90A-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, s16, v0
+; GFX90A-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX90A-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0xff800000, v0
+; GFX90A-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX90A-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_0xFFFFFF:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0:
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v1, 0
+; GFX9-4-GENERIC-SDAG-NEXT:    v_lshl_add_u64 v[0:1], s[0:1], 0, v[0:1]
+; GFX9-4-GENERIC-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0xff800000, v0
+; GFX9-4-GENERIC-SDAG-NEXT:    s_nop 1
+; GFX9-4-GENERIC-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_0xFFFFFF:
+; GFX942-SDAG:       ; %bb.0:
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    v_mov_b32_e32 v1, 0
+; GFX942-SDAG-NEXT:    v_lshl_add_u64 v[0:1], s[0:1], 0, v[0:1]
+; GFX942-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0xff800000, v0
+; GFX942-SDAG-NEXT:    s_nop 1
+; GFX942-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX942-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_0xFFFFFF:
+; GFX950-SDAG:       ; %bb.0:
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-SDAG-NEXT:    v_mov_b32_e32 v1, 0
+; GFX950-SDAG-NEXT:    v_lshl_add_u64 v[0:1], s[0:1], 0, v[0:1]
+; GFX950-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 0xff800000, v0
+; GFX950-SDAG-NEXT:    s_nop 1
+; GFX950-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX950-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_0xFFFFFF:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0:
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, s4, s16, v0
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, s4, s17, 0, s4
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0xff800000, v0
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, -1, v1, vcc_lo
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_0xFFFFFF:
+; GFX1012-SDAG:       ; %bb.0:
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    v_add_co_u32 v0, s4, s16, v0
+; GFX1012-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, s4, s17, 0, s4
+; GFX1012-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0xff800000, v0
+; GFX1012-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, -1, v1, vcc_lo
+; GFX1012-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_0xFFFFFF:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0:
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, s4, s16, v0
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, s17, 0, s4
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0xff800000, v0
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_0xFFFFFF:
+; GFX11-GENERIC-SDAG:       ; %bb.0:
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, s0, s0, v0
+; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, s1, 0, s0
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0xff800000, v0
+; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo
+; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_0xFFFFFF:
+; GFX1250-SDAG:       ; %bb.0:
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-8388608
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_0xFFFFFF:
+; GFX12-GENERIC-SDAG:       ; %bb.0:
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-8388608
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_0xFFFFFF:
+; GFX9-GENERIC-ISEL:       ; %bb.0:
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v1, s16
+; GFX9-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v2, s17
+; GFX9-GENERIC-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v1, v0
+; GFX9-GENERIC-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v2, vcc
+; GFX9-GENERIC-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 0xff800000, v0
+; GFX9-GENERIC-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_0xFFFFFF:
+; GFX906-ISEL:       ; %bb.0:
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-ISEL-NEXT:    v_mov_b32_e32 v1, s16
+; GFX906-ISEL-NEXT:    v_mov_b32_e32 v2, s17
+; GFX906-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v1, v0
+; GFX906-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v2, vcc
+; GFX906-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 0xff800000, v0
+; GFX906-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX906-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_0xFFFFFF:
+; GFX908-ISEL:       ; %bb.0:
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-ISEL-NEXT:    v_mov_b32_e32 v1, s16
+; GFX908-ISEL-NEXT:    v_mov_b32_e32 v2, s17
+; GFX908-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v1, v0
+; GFX908-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v2, vcc
+; GFX908-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 0xff800000, v0
+; GFX908-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX908-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_0xFFFFFF:
+; GFX90A-ISEL:       ; %bb.0:
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-ISEL-NEXT:    v_pk_mov_b32 v[2:3], s[16:17], s[16:17] op_sel:[0,1]
+; GFX90A-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v2, v0
+; GFX90A-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v3, vcc
+; GFX90A-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 0xff800000, v0
+; GFX90A-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX90A-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_0xFFFFFF:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0:
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    v_mov_b64_e32 v[2:3], s[0:1]
+; GFX9-4-GENERIC-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v2, v0
+; GFX9-4-GENERIC-ISEL-NEXT:    s_nop 1
+; GFX9-4-GENERIC-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v3, vcc
+; GFX9-4-GENERIC-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 0xff800000, v0
+; GFX9-4-GENERIC-ISEL-NEXT:    s_nop 1
+; GFX9-4-GENERIC-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_0xFFFFFF:
+; GFX942-ISEL:       ; %bb.0:
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    v_mov_b64_e32 v[2:3], s[0:1]
+; GFX942-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v2, v0
+; GFX942-ISEL-NEXT:    s_nop 1
+; GFX942-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v3, vcc
+; GFX942-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 0xff800000, v0
+; GFX942-ISEL-NEXT:    s_nop 1
+; GFX942-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX942-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_0xFFFFFF:
+; GFX950-ISEL:       ; %bb.0:
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-ISEL-NEXT:    v_mov_b64_e32 v[2:3], s[0:1]
+; GFX950-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v2, v0
+; GFX950-ISEL-NEXT:    s_nop 1
+; GFX950-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v3, vcc
+; GFX950-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 0xff800000, v0
+; GFX950-ISEL-NEXT:    s_nop 1
+; GFX950-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, -1, v1, vcc
+; GFX950-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_0xFFFFFF:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0:
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v1, s16
+; GFX10-1-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v2, s17
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v1, v0
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v2, vcc_lo
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0xff800000, v0
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, -1, v1, vcc_lo
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_0xFFFFFF:
+; GFX1012-ISEL:       ; %bb.0:
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    v_mov_b32_e32 v1, s16
+; GFX1012-ISEL-NEXT:    v_mov_b32_e32 v2, s17
+; GFX1012-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v1, v0
+; GFX1012-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v2, vcc_lo
+; GFX1012-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0xff800000, v0
+; GFX1012-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, -1, v1, vcc_lo
+; GFX1012-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_0xFFFFFF:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0:
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v1, s16
+; GFX10-3-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v2, s17
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v1, v0
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v2, vcc_lo
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0xff800000, v0
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_0xFFFFFF:
+; GFX11-GENERIC-ISEL:       ; %bb.0:
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    v_dual_mov_b32 v2, s1 :: v_dual_mov_b32 v1, s0
+; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v1, v0
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v2, vcc_lo
+; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0xff800000, v0
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo
+; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_0xFFFFFF:
+; GFX1250-ISEL:       ; %bb.0:
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-8388608
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_0xFFFFFF:
+; GFX12-GENERIC-ISEL:       ; %bb.0:
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-8388608
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+  %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 %zext.offset
+  %gep1 = getelementptr inbounds i8, ptr addrspace(1) %gep0, i64 -8388608
+  %load = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %gep1, metadata !0)
+  %cast.load = bitcast <4 x i32> %load to <4 x float>
+  ret <4 x float> %cast.load
+}
+
+
+;; Maximum positive offset on gfx9, and immediate needs to be moved lower.
+define <4 x float> @global_load_saddr_i8_zext_vgpr_offset_4095_gep_order(ptr addrspace(1) inreg %sbase, i32 %voffset) {
+; GFX9-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_4095_gep_order:
+; GFX9-GENERIC-SDAG:       ; %bb.0:
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:4095
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_4095_gep_order:
+; GFX906-SDAG:       ; %bb.0:
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:4095
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_4095_gep_order:
+; GFX908-SDAG:       ; %bb.0:
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:4095
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_4095_gep_order:
+; GFX90A-SDAG:       ; %bb.0:
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:4095
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_4095_gep_order:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0:
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:4095 sc0
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_4095_gep_order:
+; GFX942-SDAG:       ; %bb.0:
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:4095 sc0
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_4095_gep_order:
+; GFX950-SDAG:       ; %bb.0:
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:4095 sc0
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_4095_gep_order:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0:
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, s4, s16, v0
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, s4, s17, 0, s4
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0x800, v0
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:2047 glc
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_4095_gep_order:
+; GFX1012-SDAG:       ; %bb.0:
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    v_add_co_u32 v0, s4, s16, v0
+; GFX1012-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, s4, s17, 0, s4
+; GFX1012-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0x800, v0
+; GFX1012-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX1012-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:2047 glc
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_4095_gep_order:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0:
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, s4, s16, v0
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, s17, 0, s4
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0x800, v0
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:2047 glc
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_4095_gep_order:
+; GFX11-GENERIC-SDAG:       ; %bb.0:
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:4095 glc
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_4095_gep_order:
+; GFX1250-SDAG:       ; %bb.0:
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:4095
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_4095_gep_order:
+; GFX12-GENERIC-SDAG:       ; %bb.0:
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:4095 scope:SCOPE_SE
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_4095_gep_order:
+; GFX9-GENERIC-ISEL:       ; %bb.0:
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:4095
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_4095_gep_order:
+; GFX906-ISEL:       ; %bb.0:
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:4095
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_4095_gep_order:
+; GFX908-ISEL:       ; %bb.0:
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:4095
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_4095_gep_order:
+; GFX90A-ISEL:       ; %bb.0:
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:4095
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_4095_gep_order:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0:
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:4095 sc0
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_4095_gep_order:
+; GFX942-ISEL:       ; %bb.0:
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:4095 sc0
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_4095_gep_order:
+; GFX950-ISEL:       ; %bb.0:
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:4095 sc0
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_4095_gep_order:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0:
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v1, s16
+; GFX10-1-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v2, s17
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v1, v0
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v2, vcc_lo
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfff, v0
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_4095_gep_order:
+; GFX1012-ISEL:       ; %bb.0:
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    v_mov_b32_e32 v1, s16
+; GFX1012-ISEL-NEXT:    v_mov_b32_e32 v2, s17
+; GFX1012-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v1, v0
+; GFX1012-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v2, vcc_lo
+; GFX1012-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfff, v0
+; GFX1012-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX1012-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_4095_gep_order:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0:
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v1, s16
+; GFX10-3-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v2, s17
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v1, v0
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v2, vcc_lo
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfff, v0
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_4095_gep_order:
+; GFX11-GENERIC-ISEL:       ; %bb.0:
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:4095 glc
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_4095_gep_order:
+; GFX1250-ISEL:       ; %bb.0:
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:4095
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_4095_gep_order:
+; GFX12-GENERIC-ISEL:       ; %bb.0:
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:4095 scope:SCOPE_SE
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+  %zext.offset = zext i32 %voffset to i64
+  %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 4095
+  %gep1 = getelementptr inbounds i8, ptr addrspace(1) %gep0, i64 %zext.offset
+  %load = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %gep1, metadata !1)
+  %cast.load = bitcast <4 x i32> %load to <4 x float>
+  ret <4 x float> %cast.load
+}
+
+;; pointer addressing done in integers
+define <4 x float> @global_load_saddr_i8_zext_vgpr_ptrtoint(ptr addrspace(1) inreg %sbase, i32 %voffset) {
+; GFX9-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_ptrtoint:
+; GFX9-GENERIC-SDAG:       ; %bb.0:
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_ptrtoint:
+; GFX906-SDAG:       ; %bb.0:
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_ptrtoint:
+; GFX908-SDAG:       ; %bb.0:
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_ptrtoint:
+; GFX90A-SDAG:       ; %bb.0:
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_ptrtoint:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0:
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] sc1
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_ptrtoint:
+; GFX942-SDAG:       ; %bb.0:
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] sc1
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_ptrtoint:
+; GFX950-SDAG:       ; %bb.0:
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] sc1
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_ptrtoint:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0:
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc dlc
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_ptrtoint:
+; GFX1012-SDAG:       ; %bb.0:
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc dlc
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_ptrtoint:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0:
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc dlc
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_ptrtoint:
+; GFX11-GENERIC-SDAG:       ; %bb.0:
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] glc
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_ptrtoint:
+; GFX1250-SDAG:       ; %bb.0:
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] scope:SCOPE_DEV
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_ptrtoint:
+; GFX12-GENERIC-SDAG:       ; %bb.0:
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] scope:SCOPE_DEV
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_ptrtoint:
+; GFX9-GENERIC-ISEL:       ; %bb.0:
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_ptrtoint:
+; GFX906-ISEL:       ; %bb.0:
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_ptrtoint:
+; GFX908-ISEL:       ; %bb.0:
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_ptrtoint:
+; GFX90A-ISEL:       ; %bb.0:
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_ptrtoint:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0:
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] sc1
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_ptrtoint:
+; GFX942-ISEL:       ; %bb.0:
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] sc1
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_ptrtoint:
+; GFX950-ISEL:       ; %bb.0:
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] sc1
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_ptrtoint:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0:
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc dlc
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_ptrtoint:
+; GFX1012-ISEL:       ; %bb.0:
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc dlc
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_ptrtoint:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0:
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc dlc
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_ptrtoint:
+; GFX11-GENERIC-ISEL:       ; %bb.0:
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] glc
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_ptrtoint:
+; GFX1250-ISEL:       ; %bb.0:
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] scope:SCOPE_DEV
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_ptrtoint:
+; GFX12-GENERIC-ISEL:       ; %bb.0:
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] scope:SCOPE_DEV
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+  %zext.offset = zext i32 %voffset to i64
+  %sbase.as.int = ptrtoint ptr addrspace(1) %sbase to i64
+  %add = add i64 %sbase.as.int, %zext.offset
+  %dirty.gep = inttoptr i64 %add to ptr addrspace(1)
+  %load = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %dirty.gep, metadata !2)
+  %cast.load = bitcast <4 x i32> %load to <4 x float>
+  ret <4 x float> %cast.load
+}
+
+;; zext forced to LHS of addressing expression
+define <4 x float> @global_load_saddr_i8_zext_vgpr_ptrtoint_commute_add(ptr addrspace(1) inreg %sbase, i32 %voffset) {
+; GFX9-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_ptrtoint_commute_add:
+; GFX9-GENERIC-SDAG:       ; %bb.0:
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_ptrtoint_commute_add:
+; GFX906-SDAG:       ; %bb.0:
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_ptrtoint_commute_add:
+; GFX908-SDAG:       ; %bb.0:
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_ptrtoint_commute_add:
+; GFX90A-SDAG:       ; %bb.0:
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_ptrtoint_commute_add:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0:
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] sc0 sc1
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_ptrtoint_commute_add:
+; GFX942-SDAG:       ; %bb.0:
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] sc0 sc1
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_ptrtoint_commute_add:
+; GFX950-SDAG:       ; %bb.0:
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] sc0 sc1
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_ptrtoint_commute_add:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0:
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc dlc
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_ptrtoint_commute_add:
+; GFX1012-SDAG:       ; %bb.0:
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc dlc
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_ptrtoint_commute_add:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0:
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc dlc
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_ptrtoint_commute_add:
+; GFX11-GENERIC-SDAG:       ; %bb.0:
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] glc
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_ptrtoint_commute_add:
+; GFX1250-SDAG:       ; %bb.0:
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] scope:SCOPE_SYS
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_ptrtoint_commute_add:
+; GFX12-GENERIC-SDAG:       ; %bb.0:
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] scope:SCOPE_SYS
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_ptrtoint_commute_add:
+; GFX9-GENERIC-ISEL:       ; %bb.0:
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_ptrtoint_commute_add:
+; GFX906-ISEL:       ; %bb.0:
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_ptrtoint_commute_add:
+; GFX908-ISEL:       ; %bb.0:
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_ptrtoint_commute_add:
+; GFX90A-ISEL:       ; %bb.0:
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_ptrtoint_commute_add:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0:
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] sc0 sc1
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_ptrtoint_commute_add:
+; GFX942-ISEL:       ; %bb.0:
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] sc0 sc1
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_ptrtoint_commute_add:
+; GFX950-ISEL:       ; %bb.0:
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] sc0 sc1
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_ptrtoint_commute_add:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0:
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc dlc
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_ptrtoint_commute_add:
+; GFX1012-ISEL:       ; %bb.0:
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc dlc
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_ptrtoint_commute_add:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0:
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc dlc
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_ptrtoint_commute_add:
+; GFX11-GENERIC-ISEL:       ; %bb.0:
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] glc
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_ptrtoint_commute_add:
+; GFX1250-ISEL:       ; %bb.0:
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] scope:SCOPE_SYS
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_ptrtoint_commute_add:
+; GFX12-GENERIC-ISEL:       ; %bb.0:
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] scope:SCOPE_SYS
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+  %zext.offset = zext i32 %voffset to i64
+  %sbase.as.int = ptrtoint ptr addrspace(1) %sbase to i64
+  %add = add i64 %zext.offset, %sbase.as.int
+  %dirty.gep = inttoptr i64 %add to ptr addrspace(1)
+  %load = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %dirty.gep, metadata !3)
+  %cast.load = bitcast <4 x i32> %load to <4 x float>
+  ret <4 x float> %cast.load
+}
+
+;; zext forced to LHS of addressing expression, with immediate offset
+define <4 x float> @global_load_saddr_i8_zext_vgpr_ptrtoint_commute_add_imm_offset0(ptr addrspace(1) inreg %sbase, i32 %voffset) {
+; GFX9-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_ptrtoint_commute_add_imm_offset0:
+; GFX9-GENERIC-SDAG:       ; %bb.0:
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:128
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_ptrtoint_commute_add_imm_offset0:
+; GFX906-SDAG:       ; %bb.0:
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:128
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_ptrtoint_commute_add_imm_offset0:
+; GFX908-SDAG:       ; %bb.0:
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:128
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_ptrtoint_commute_add_imm_offset0:
+; GFX90A-SDAG:       ; %bb.0:
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:128
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_ptrtoint_commute_add_imm_offset0:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0:
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:128
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_ptrtoint_commute_add_imm_offset0:
+; GFX942-SDAG:       ; %bb.0:
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:128
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_ptrtoint_commute_add_imm_offset0:
+; GFX950-SDAG:       ; %bb.0:
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:128
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_ptrtoint_commute_add_imm_offset0:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0:
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:128
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_ptrtoint_commute_add_imm_offset0:
+; GFX1012-SDAG:       ; %bb.0:
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:128
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_ptrtoint_commute_add_imm_offset0:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0:
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:128
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_ptrtoint_commute_add_imm_offset0:
+; GFX11-GENERIC-SDAG:       ; %bb.0:
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:128
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_ptrtoint_commute_add_imm_offset0:
+; GFX1250-SDAG:       ; %bb.0:
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:128
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_ptrtoint_commute_add_imm_offset0:
+; GFX12-GENERIC-SDAG:       ; %bb.0:
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:128
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_ptrtoint_commute_add_imm_offset0:
+; GFX9-GENERIC-ISEL:       ; %bb.0:
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:128
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_ptrtoint_commute_add_imm_offset0:
+; GFX906-ISEL:       ; %bb.0:
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:128
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_ptrtoint_commute_add_imm_offset0:
+; GFX908-ISEL:       ; %bb.0:
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:128
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_ptrtoint_commute_add_imm_offset0:
+; GFX90A-ISEL:       ; %bb.0:
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:128
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_ptrtoint_commute_add_imm_offset0:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0:
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:128
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_ptrtoint_commute_add_imm_offset0:
+; GFX942-ISEL:       ; %bb.0:
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:128
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_ptrtoint_commute_add_imm_offset0:
+; GFX950-ISEL:       ; %bb.0:
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:128
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_ptrtoint_commute_add_imm_offset0:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0:
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:128
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_ptrtoint_commute_add_imm_offset0:
+; GFX1012-ISEL:       ; %bb.0:
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:128
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_ptrtoint_commute_add_imm_offset0:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0:
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:128
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_ptrtoint_commute_add_imm_offset0:
+; GFX11-GENERIC-ISEL:       ; %bb.0:
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:128
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_ptrtoint_commute_add_imm_offset0:
+; GFX1250-ISEL:       ; %bb.0:
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:128
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_ptrtoint_commute_add_imm_offset0:
+; GFX12-GENERIC-ISEL:       ; %bb.0:
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:128
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+  %zext.offset = zext i32 %voffset to i64
+  %sbase.as.int = ptrtoint ptr addrspace(1) %sbase to i64
+  %add = add i64 %zext.offset, %sbase.as.int
+  %add.immoffset = add i64 %add, 128
+  %dirty.gep = inttoptr i64 %add.immoffset to ptr addrspace(1)
+  %load = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %dirty.gep, metadata !0)
+  %cast.load = bitcast <4 x i32> %load to <4 x float>
+  ret <4 x float> %cast.load
+}
+
+;; zext forced to LHS of addressing expression, with immediate offset in non-canonical position
+define <4 x float> @global_load_saddr_i8_zext_vgpr_ptrtoint_commute_add_imm_offset1(ptr addrspace(1) inreg %sbase, i32 %voffset) {
+; GFX9-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_ptrtoint_commute_add_imm_offset1:
+; GFX9-GENERIC-SDAG:       ; %bb.0:
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:128
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_ptrtoint_commute_add_imm_offset1:
+; GFX906-SDAG:       ; %bb.0:
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:128
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_ptrtoint_commute_add_imm_offset1:
+; GFX908-SDAG:       ; %bb.0:
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:128
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_ptrtoint_commute_add_imm_offset1:
+; GFX90A-SDAG:       ; %bb.0:
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:128
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_ptrtoint_commute_add_imm_offset1:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0:
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:128 sc0
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_ptrtoint_commute_add_imm_offset1:
+; GFX942-SDAG:       ; %bb.0:
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:128 sc0
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_ptrtoint_commute_add_imm_offset1:
+; GFX950-SDAG:       ; %bb.0:
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:128 sc0
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_ptrtoint_commute_add_imm_offset1:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0:
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:128 glc
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_ptrtoint_commute_add_imm_offset1:
+; GFX1012-SDAG:       ; %bb.0:
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:128 glc
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_ptrtoint_commute_add_imm_offset1:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0:
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:128 glc
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_ptrtoint_commute_add_imm_offset1:
+; GFX11-GENERIC-SDAG:       ; %bb.0:
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:128 glc
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_ptrtoint_commute_add_imm_offset1:
+; GFX1250-SDAG:       ; %bb.0:
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:128
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_ptrtoint_commute_add_imm_offset1:
+; GFX12-GENERIC-SDAG:       ; %bb.0:
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:128 scope:SCOPE_SE
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_ptrtoint_commute_add_imm_offset1:
+; GFX9-GENERIC-ISEL:       ; %bb.0:
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:128
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_ptrtoint_commute_add_imm_offset1:
+; GFX906-ISEL:       ; %bb.0:
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:128
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_ptrtoint_commute_add_imm_offset1:
+; GFX908-ISEL:       ; %bb.0:
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:128
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_ptrtoint_commute_add_imm_offset1:
+; GFX90A-ISEL:       ; %bb.0:
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:128
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_ptrtoint_commute_add_imm_offset1:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0:
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:128 sc0
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_ptrtoint_commute_add_imm_offset1:
+; GFX942-ISEL:       ; %bb.0:
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:128 sc0
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_ptrtoint_commute_add_imm_offset1:
+; GFX950-ISEL:       ; %bb.0:
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:128 sc0
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_ptrtoint_commute_add_imm_offset1:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0:
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:128 glc
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_ptrtoint_commute_add_imm_offset1:
+; GFX1012-ISEL:       ; %bb.0:
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:128 glc
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_ptrtoint_commute_add_imm_offset1:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0:
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:128 glc
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_ptrtoint_commute_add_imm_offset1:
+; GFX11-GENERIC-ISEL:       ; %bb.0:
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:128 glc
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_ptrtoint_commute_add_imm_offset1:
+; GFX1250-ISEL:       ; %bb.0:
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:128
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_ptrtoint_commute_add_imm_offset1:
+; GFX12-GENERIC-ISEL:       ; %bb.0:
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:128 scope:SCOPE_SE
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+  %zext.offset = zext i32 %voffset to i64
+  %sbase.as.int = ptrtoint ptr addrspace(1) %sbase to i64
+  %add.immoffset = add i64 %sbase.as.int, 128
+  %add = add i64 %zext.offset, %add.immoffset
+  %dirty.gep = inttoptr i64 %add to ptr addrspace(1)
+  %load = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %dirty.gep, metadata !1)
+  %cast.load = bitcast <4 x i32> %load to <4 x float>
+  ret <4 x float> %cast.load
+}
+
+;;------------------------------------------------------------------------------
+;; Uniformity edge cases
+;;------------------------------------------------------------------------------
+
+;; Both 64-bit base and 32-bit offset are scalar
+define <4 x float> @global_load_saddr_i8_zext_uniform_offset(ptr addrspace(1) inreg %sbase, i32 inreg %soffset) {
+; GFX9-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_uniform_offset:
+; GFX9-GENERIC-SDAG:       ; %bb.0:
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, s18
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-SDAG-LABEL: global_load_saddr_i8_zext_uniform_offset:
+; GFX906-SDAG:       ; %bb.0:
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-SDAG-NEXT:    v_mov_b32_e32 v0, s18
+; GFX906-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-SDAG-LABEL: global_load_saddr_i8_zext_uniform_offset:
+; GFX908-SDAG:       ; %bb.0:
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-SDAG-NEXT:    v_mov_b32_e32 v0, s18
+; GFX908-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-SDAG-LABEL: global_load_saddr_i8_zext_uniform_offset:
+; GFX90A-SDAG:       ; %bb.0:
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-SDAG-NEXT:    v_mov_b32_e32 v0, s18
+; GFX90A-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_uniform_offset:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0:
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, s2
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] sc1
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-SDAG-LABEL: global_load_saddr_i8_zext_uniform_offset:
+; GFX942-SDAG:       ; %bb.0:
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    v_mov_b32_e32 v0, s2
+; GFX942-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] sc1
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-SDAG-LABEL: global_load_saddr_i8_zext_uniform_offset:
+; GFX950-SDAG:       ; %bb.0:
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-SDAG-NEXT:    v_mov_b32_e32 v0, s2
+; GFX950-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] sc1
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_uniform_offset:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0:
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, s18
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc dlc
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: global_load_saddr_i8_zext_uniform_offset:
+; GFX1012-SDAG:       ; %bb.0:
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    v_mov_b32_e32 v0, s18
+; GFX1012-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc dlc
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_uniform_offset:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0:
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, s18
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc dlc
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_uniform_offset:
+; GFX11-GENERIC-SDAG:       ; %bb.0:
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, s2
+; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] glc
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: global_load_saddr_i8_zext_uniform_offset:
+; GFX1250-SDAG:       ; %bb.0:
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    v_mov_b32_e32 v0, s2
+; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] scope:SCOPE_DEV
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_uniform_offset:
+; GFX12-GENERIC-SDAG:       ; %bb.0:
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, s2
+; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] scope:SCOPE_DEV
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_uniform_offset:
+; GFX9-GENERIC-ISEL:       ; %bb.0:
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, s18
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-ISEL-LABEL: global_load_saddr_i8_zext_uniform_offset:
+; GFX906-ISEL:       ; %bb.0:
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-ISEL-NEXT:    v_mov_b32_e32 v0, s18
+; GFX906-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-ISEL-LABEL: global_load_saddr_i8_zext_uniform_offset:
+; GFX908-ISEL:       ; %bb.0:
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-ISEL-NEXT:    v_mov_b32_e32 v0, s18
+; GFX908-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-ISEL-LABEL: global_load_saddr_i8_zext_uniform_offset:
+; GFX90A-ISEL:       ; %bb.0:
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-ISEL-NEXT:    v_mov_b32_e32 v0, s18
+; GFX90A-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_uniform_offset:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0:
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, s2
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] sc1
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-ISEL-LABEL: global_load_saddr_i8_zext_uniform_offset:
+; GFX942-ISEL:       ; %bb.0:
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    v_mov_b32_e32 v0, s2
+; GFX942-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] sc1
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-ISEL-LABEL: global_load_saddr_i8_zext_uniform_offset:
+; GFX950-ISEL:       ; %bb.0:
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-ISEL-NEXT:    v_mov_b32_e32 v0, s2
+; GFX950-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] sc1
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_uniform_offset:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0:
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, s18
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc dlc
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: global_load_saddr_i8_zext_uniform_offset:
+; GFX1012-ISEL:       ; %bb.0:
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    v_mov_b32_e32 v0, s18
+; GFX1012-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc dlc
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_uniform_offset:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0:
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, s18
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc dlc
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_uniform_offset:
+; GFX11-GENERIC-ISEL:       ; %bb.0:
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, s2
+; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] glc
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: global_load_saddr_i8_zext_uniform_offset:
+; GFX1250-ISEL:       ; %bb.0:
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX1250-ISEL-NEXT:    s_add_co_u32 s0, s0, s2
+; GFX1250-ISEL-NEXT:    s_add_co_ci_u32 s1, s1, 0
+; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] scope:SCOPE_DEV
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_uniform_offset:
+; GFX12-GENERIC-ISEL:       ; %bb.0:
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, s2
+; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] scope:SCOPE_DEV
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+  %zext.offset = zext i32 %soffset to i64
+  %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 %zext.offset
+  %load = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %gep0, metadata !2)
+  %cast.load = bitcast <4 x i32> %load to <4 x float>
+  ret <4 x float> %cast.load
+}
+
+;; Both 64-bit base and 32-bit offset are scalar, with immediate offset.
+define <4 x float> @global_load_saddr_i8_zext_uniform_offset_immoffset(ptr addrspace(1) inreg %sbase, i32 inreg %soffset) {
+; GFX9-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_uniform_offset_immoffset:
+; GFX9-GENERIC-SDAG:       ; %bb.0:
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, s18
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:-24 glc
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-SDAG-LABEL: global_load_saddr_i8_zext_uniform_offset_immoffset:
+; GFX906-SDAG:       ; %bb.0:
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-SDAG-NEXT:    v_mov_b32_e32 v0, s18
+; GFX906-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:-24 glc
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-SDAG-LABEL: global_load_saddr_i8_zext_uniform_offset_immoffset:
+; GFX908-SDAG:       ; %bb.0:
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-SDAG-NEXT:    v_mov_b32_e32 v0, s18
+; GFX908-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:-24 glc
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-SDAG-LABEL: global_load_saddr_i8_zext_uniform_offset_immoffset:
+; GFX90A-SDAG:       ; %bb.0:
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-SDAG-NEXT:    v_mov_b32_e32 v0, s18
+; GFX90A-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:-24 glc
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_uniform_offset_immoffset:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0:
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, s2
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:-24 sc0 sc1
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-SDAG-LABEL: global_load_saddr_i8_zext_uniform_offset_immoffset:
+; GFX942-SDAG:       ; %bb.0:
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    v_mov_b32_e32 v0, s2
+; GFX942-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:-24 sc0 sc1
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-SDAG-LABEL: global_load_saddr_i8_zext_uniform_offset_immoffset:
+; GFX950-SDAG:       ; %bb.0:
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-SDAG-NEXT:    v_mov_b32_e32 v0, s2
+; GFX950-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:-24 sc0 sc1
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_uniform_offset_immoffset:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0:
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, s18
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:-24 glc dlc
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: global_load_saddr_i8_zext_uniform_offset_immoffset:
+; GFX1012-SDAG:       ; %bb.0:
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    v_mov_b32_e32 v0, s18
+; GFX1012-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:-24 glc dlc
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_uniform_offset_immoffset:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0:
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, s18
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:-24 glc dlc
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_uniform_offset_immoffset:
+; GFX11-GENERIC-SDAG:       ; %bb.0:
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, s2
+; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-24 glc
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: global_load_saddr_i8_zext_uniform_offset_immoffset:
+; GFX1250-SDAG:       ; %bb.0:
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    v_mov_b32_e32 v0, s2
+; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-24 scope:SCOPE_SYS
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_uniform_offset_immoffset:
+; GFX12-GENERIC-SDAG:       ; %bb.0:
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, s2
+; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-24 scope:SCOPE_SYS
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_uniform_offset_immoffset:
+; GFX9-GENERIC-ISEL:       ; %bb.0:
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, s18
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:-24 glc
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-ISEL-LABEL: global_load_saddr_i8_zext_uniform_offset_immoffset:
+; GFX906-ISEL:       ; %bb.0:
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-ISEL-NEXT:    v_mov_b32_e32 v0, s18
+; GFX906-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:-24 glc
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-ISEL-LABEL: global_load_saddr_i8_zext_uniform_offset_immoffset:
+; GFX908-ISEL:       ; %bb.0:
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-ISEL-NEXT:    v_mov_b32_e32 v0, s18
+; GFX908-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:-24 glc
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-ISEL-LABEL: global_load_saddr_i8_zext_uniform_offset_immoffset:
+; GFX90A-ISEL:       ; %bb.0:
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-ISEL-NEXT:    v_mov_b32_e32 v0, s18
+; GFX90A-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:-24 glc
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_uniform_offset_immoffset:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0:
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, s2
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:-24 sc0 sc1
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-ISEL-LABEL: global_load_saddr_i8_zext_uniform_offset_immoffset:
+; GFX942-ISEL:       ; %bb.0:
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    v_mov_b32_e32 v0, s2
+; GFX942-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:-24 sc0 sc1
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-ISEL-LABEL: global_load_saddr_i8_zext_uniform_offset_immoffset:
+; GFX950-ISEL:       ; %bb.0:
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-ISEL-NEXT:    v_mov_b32_e32 v0, s2
+; GFX950-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:-24 sc0 sc1
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_uniform_offset_immoffset:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0:
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, s18
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:-24 glc dlc
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: global_load_saddr_i8_zext_uniform_offset_immoffset:
+; GFX1012-ISEL:       ; %bb.0:
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    v_mov_b32_e32 v0, s18
+; GFX1012-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:-24 glc dlc
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_uniform_offset_immoffset:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0:
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, s18
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:-24 glc dlc
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_uniform_offset_immoffset:
+; GFX11-GENERIC-ISEL:       ; %bb.0:
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, s2
+; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-24 glc
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: global_load_saddr_i8_zext_uniform_offset_immoffset:
+; GFX1250-ISEL:       ; %bb.0:
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX1250-ISEL-NEXT:    s_add_co_u32 s0, s0, s2
+; GFX1250-ISEL-NEXT:    s_add_co_ci_u32 s1, s1, 0
+; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-24 scope:SCOPE_SYS
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_uniform_offset_immoffset:
+; GFX12-GENERIC-ISEL:       ; %bb.0:
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, s2
+; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-24 scope:SCOPE_SYS
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+  %zext.offset = zext i32 %soffset to i64
+  %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 %zext.offset
+  %gep1 = getelementptr inbounds i8, ptr addrspace(1) %gep0, i64 -24
+  %load = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %gep1, metadata !3)
+  %cast.load = bitcast <4 x i32> %load to <4 x float>
+  ret <4 x float> %cast.load
+}
+
+;; Both components uniform, zext forced to LHS of addressing expression
+define <4 x float> @global_load_saddr_i8_zext_sgpr_ptrtoint_commute_add(ptr addrspace(1) inreg %sbase, i32 inreg %soffset) {
+; GFX9-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_sgpr_ptrtoint_commute_add:
+; GFX9-GENERIC-SDAG:       ; %bb.0:
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, s18
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17]
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-SDAG-LABEL: global_load_saddr_i8_zext_sgpr_ptrtoint_commute_add:
+; GFX906-SDAG:       ; %bb.0:
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-SDAG-NEXT:    v_mov_b32_e32 v0, s18
+; GFX906-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17]
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-SDAG-LABEL: global_load_saddr_i8_zext_sgpr_ptrtoint_commute_add:
+; GFX908-SDAG:       ; %bb.0:
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-SDAG-NEXT:    v_mov_b32_e32 v0, s18
+; GFX908-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17]
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-SDAG-LABEL: global_load_saddr_i8_zext_sgpr_ptrtoint_commute_add:
+; GFX90A-SDAG:       ; %bb.0:
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-SDAG-NEXT:    v_mov_b32_e32 v0, s18
+; GFX90A-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17]
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_sgpr_ptrtoint_commute_add:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0:
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, s2
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1]
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-SDAG-LABEL: global_load_saddr_i8_zext_sgpr_ptrtoint_commute_add:
+; GFX942-SDAG:       ; %bb.0:
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    v_mov_b32_e32 v0, s2
+; GFX942-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1]
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-SDAG-LABEL: global_load_saddr_i8_zext_sgpr_ptrtoint_commute_add:
+; GFX950-SDAG:       ; %bb.0:
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-SDAG-NEXT:    v_mov_b32_e32 v0, s2
+; GFX950-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1]
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_sgpr_ptrtoint_commute_add:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0:
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, s18
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17]
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: global_load_saddr_i8_zext_sgpr_ptrtoint_commute_add:
+; GFX1012-SDAG:       ; %bb.0:
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    v_mov_b32_e32 v0, s18
+; GFX1012-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17]
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_sgpr_ptrtoint_commute_add:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0:
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, s18
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17]
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_sgpr_ptrtoint_commute_add:
+; GFX11-GENERIC-SDAG:       ; %bb.0:
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, s2
+; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1]
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: global_load_saddr_i8_zext_sgpr_ptrtoint_commute_add:
+; GFX1250-SDAG:       ; %bb.0:
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    v_mov_b32_e32 v0, s2
+; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1]
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_sgpr_ptrtoint_commute_add:
+; GFX12-GENERIC-SDAG:       ; %bb.0:
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, s2
+; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1]
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_sgpr_ptrtoint_commute_add:
+; GFX9-GENERIC-ISEL:       ; %bb.0:
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, s18
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17]
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-ISEL-LABEL: global_load_saddr_i8_zext_sgpr_ptrtoint_commute_add:
+; GFX906-ISEL:       ; %bb.0:
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-ISEL-NEXT:    v_mov_b32_e32 v0, s18
+; GFX906-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17]
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-ISEL-LABEL: global_load_saddr_i8_zext_sgpr_ptrtoint_commute_add:
+; GFX908-ISEL:       ; %bb.0:
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-ISEL-NEXT:    v_mov_b32_e32 v0, s18
+; GFX908-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17]
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-ISEL-LABEL: global_load_saddr_i8_zext_sgpr_ptrtoint_commute_add:
+; GFX90A-ISEL:       ; %bb.0:
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-ISEL-NEXT:    v_mov_b32_e32 v0, s18
+; GFX90A-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17]
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_sgpr_ptrtoint_commute_add:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0:
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, s2
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1]
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-ISEL-LABEL: global_load_saddr_i8_zext_sgpr_ptrtoint_commute_add:
+; GFX942-ISEL:       ; %bb.0:
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    v_mov_b32_e32 v0, s2
+; GFX942-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1]
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-ISEL-LABEL: global_load_saddr_i8_zext_sgpr_ptrtoint_commute_add:
+; GFX950-ISEL:       ; %bb.0:
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-ISEL-NEXT:    v_mov_b32_e32 v0, s2
+; GFX950-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1]
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_sgpr_ptrtoint_commute_add:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0:
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, s18
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17]
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: global_load_saddr_i8_zext_sgpr_ptrtoint_commute_add:
+; GFX1012-ISEL:       ; %bb.0:
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    v_mov_b32_e32 v0, s18
+; GFX1012-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17]
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_sgpr_ptrtoint_commute_add:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0:
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, s18
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17]
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_sgpr_ptrtoint_commute_add:
+; GFX11-GENERIC-ISEL:       ; %bb.0:
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, s2
+; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1]
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: global_load_saddr_i8_zext_sgpr_ptrtoint_commute_add:
+; GFX1250-ISEL:       ; %bb.0:
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX1250-ISEL-NEXT:    s_add_co_u32 s0, s0, s2
+; GFX1250-ISEL-NEXT:    s_add_co_ci_u32 s1, s1, 0
+; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1]
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_sgpr_ptrtoint_commute_add:
+; GFX12-GENERIC-ISEL:       ; %bb.0:
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, s2
+; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1]
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+  %zext.offset = zext i32 %soffset to i64
+  %sbase.as.int = ptrtoint ptr addrspace(1) %sbase to i64
+  %add = add i64 %zext.offset, %sbase.as.int
+  %dirty.gep = inttoptr i64 %add to ptr addrspace(1)
+  %load = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %dirty.gep, metadata !0)
+  %cast.load = bitcast <4 x i32> %load to <4 x float>
+  ret <4 x float> %cast.load
+}
+
+;; Both components uniform, zext forced to LHS of addressing expression, with immediate offset
+define <4 x float> @global_load_saddr_i8_zext_sgpr_ptrtoint_commute_add_imm_offset0(ptr addrspace(1) inreg %sbase, i32 inreg %soffset) {
+; GFX9-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_sgpr_ptrtoint_commute_add_imm_offset0:
+; GFX9-GENERIC-SDAG:       ; %bb.0:
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, s18
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:128
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-SDAG-LABEL: global_load_saddr_i8_zext_sgpr_ptrtoint_commute_add_imm_offset0:
+; GFX906-SDAG:       ; %bb.0:
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-SDAG-NEXT:    v_mov_b32_e32 v0, s18
+; GFX906-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:128
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-SDAG-LABEL: global_load_saddr_i8_zext_sgpr_ptrtoint_commute_add_imm_offset0:
+; GFX908-SDAG:       ; %bb.0:
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-SDAG-NEXT:    v_mov_b32_e32 v0, s18
+; GFX908-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:128
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-SDAG-LABEL: global_load_saddr_i8_zext_sgpr_ptrtoint_commute_add_imm_offset0:
+; GFX90A-SDAG:       ; %bb.0:
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-SDAG-NEXT:    v_mov_b32_e32 v0, s18
+; GFX90A-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:128
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_sgpr_ptrtoint_commute_add_imm_offset0:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0:
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, s2
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:128 sc0
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-SDAG-LABEL: global_load_saddr_i8_zext_sgpr_ptrtoint_commute_add_imm_offset0:
+; GFX942-SDAG:       ; %bb.0:
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    v_mov_b32_e32 v0, s2
+; GFX942-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:128 sc0
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-SDAG-LABEL: global_load_saddr_i8_zext_sgpr_ptrtoint_commute_add_imm_offset0:
+; GFX950-SDAG:       ; %bb.0:
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-SDAG-NEXT:    v_mov_b32_e32 v0, s2
+; GFX950-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:128 sc0
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_sgpr_ptrtoint_commute_add_imm_offset0:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0:
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, s18
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:128 glc
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: global_load_saddr_i8_zext_sgpr_ptrtoint_commute_add_imm_offset0:
+; GFX1012-SDAG:       ; %bb.0:
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    v_mov_b32_e32 v0, s18
+; GFX1012-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:128 glc
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_sgpr_ptrtoint_commute_add_imm_offset0:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0:
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, s18
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:128 glc
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_sgpr_ptrtoint_commute_add_imm_offset0:
+; GFX11-GENERIC-SDAG:       ; %bb.0:
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, s2
+; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:128 glc
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: global_load_saddr_i8_zext_sgpr_ptrtoint_commute_add_imm_offset0:
+; GFX1250-SDAG:       ; %bb.0:
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    v_mov_b32_e32 v0, s2
+; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:128
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_sgpr_ptrtoint_commute_add_imm_offset0:
+; GFX12-GENERIC-SDAG:       ; %bb.0:
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, s2
+; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:128 scope:SCOPE_SE
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_sgpr_ptrtoint_commute_add_imm_offset0:
+; GFX9-GENERIC-ISEL:       ; %bb.0:
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, s18
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:128
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-ISEL-LABEL: global_load_saddr_i8_zext_sgpr_ptrtoint_commute_add_imm_offset0:
+; GFX906-ISEL:       ; %bb.0:
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-ISEL-NEXT:    v_mov_b32_e32 v0, s18
+; GFX906-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:128
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-ISEL-LABEL: global_load_saddr_i8_zext_sgpr_ptrtoint_commute_add_imm_offset0:
+; GFX908-ISEL:       ; %bb.0:
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-ISEL-NEXT:    v_mov_b32_e32 v0, s18
+; GFX908-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:128
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-ISEL-LABEL: global_load_saddr_i8_zext_sgpr_ptrtoint_commute_add_imm_offset0:
+; GFX90A-ISEL:       ; %bb.0:
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-ISEL-NEXT:    v_mov_b32_e32 v0, s18
+; GFX90A-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:128
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_sgpr_ptrtoint_commute_add_imm_offset0:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0:
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, s2
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:128 sc0
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-ISEL-LABEL: global_load_saddr_i8_zext_sgpr_ptrtoint_commute_add_imm_offset0:
+; GFX942-ISEL:       ; %bb.0:
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    v_mov_b32_e32 v0, s2
+; GFX942-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:128 sc0
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-ISEL-LABEL: global_load_saddr_i8_zext_sgpr_ptrtoint_commute_add_imm_offset0:
+; GFX950-ISEL:       ; %bb.0:
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-ISEL-NEXT:    v_mov_b32_e32 v0, s2
+; GFX950-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:128 sc0
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_sgpr_ptrtoint_commute_add_imm_offset0:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0:
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, s18
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:128 glc
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: global_load_saddr_i8_zext_sgpr_ptrtoint_commute_add_imm_offset0:
+; GFX1012-ISEL:       ; %bb.0:
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    v_mov_b32_e32 v0, s18
+; GFX1012-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:128 glc
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_sgpr_ptrtoint_commute_add_imm_offset0:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0:
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, s18
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:128 glc
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_sgpr_ptrtoint_commute_add_imm_offset0:
+; GFX11-GENERIC-ISEL:       ; %bb.0:
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, s2
+; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:128 glc
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: global_load_saddr_i8_zext_sgpr_ptrtoint_commute_add_imm_offset0:
+; GFX1250-ISEL:       ; %bb.0:
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX1250-ISEL-NEXT:    s_add_co_u32 s0, s0, s2
+; GFX1250-ISEL-NEXT:    s_add_co_ci_u32 s1, s1, 0
+; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:128
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_sgpr_ptrtoint_commute_add_imm_offset0:
+; GFX12-GENERIC-ISEL:       ; %bb.0:
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, s2
+; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:128 scope:SCOPE_SE
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+  %zext.offset = zext i32 %soffset to i64
+  %sbase.as.int = ptrtoint ptr addrspace(1) %sbase to i64
+  %add = add i64 %zext.offset, %sbase.as.int
+  %add.immoffset = add i64 %add, 128
+  %dirty.gep = inttoptr i64 %add.immoffset to ptr addrspace(1)
+  %load = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %dirty.gep, metadata !1)
+  %cast.load = bitcast <4 x i32> %load to <4 x float>
+  ret <4 x float> %cast.load
+}
+
+;; divergent 64-bit base, 32-bit scalar offset.
+define <4 x float> @global_load_saddr_i8_vgpr64_sgpr32(ptr addrspace(1) %vbase, i32 inreg %soffset) {
+; GFX9-GENERIC-SDAG-LABEL: global_load_saddr_i8_vgpr64_sgpr32:
+; GFX9-GENERIC-SDAG:       ; %bb.0:
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, s16, v0
+; GFX9-GENERIC-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-SDAG-LABEL: global_load_saddr_i8_vgpr64_sgpr32:
+; GFX906-SDAG:       ; %bb.0:
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, s16, v0
+; GFX906-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX906-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-SDAG-LABEL: global_load_saddr_i8_vgpr64_sgpr32:
+; GFX908-SDAG:       ; %bb.0:
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, s16, v0
+; GFX908-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX908-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-SDAG-LABEL: global_load_saddr_i8_vgpr64_sgpr32:
+; GFX90A-SDAG:       ; %bb.0:
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, s16, v0
+; GFX90A-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX90A-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-SDAG-LABEL: global_load_saddr_i8_vgpr64_sgpr32:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0:
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_mov_b32 s1, 0
+; GFX9-4-GENERIC-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 0, s[0:1]
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc1
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-SDAG-LABEL: global_load_saddr_i8_vgpr64_sgpr32:
+; GFX942-SDAG:       ; %bb.0:
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    s_mov_b32 s1, 0
+; GFX942-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 0, s[0:1]
+; GFX942-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc1
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-SDAG-LABEL: global_load_saddr_i8_vgpr64_sgpr32:
+; GFX950-SDAG:       ; %bb.0:
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-SDAG-NEXT:    s_mov_b32 s1, 0
+; GFX950-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 0, s[0:1]
+; GFX950-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc1
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-SDAG-LABEL: global_load_saddr_i8_vgpr64_sgpr32:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0:
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, s16
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: global_load_saddr_i8_vgpr64_sgpr32:
+; GFX1012-SDAG:       ; %bb.0:
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, s16
+; GFX1012-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX1012-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-SDAG-LABEL: global_load_saddr_i8_vgpr64_sgpr32:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0:
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, s16
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-SDAG-LABEL: global_load_saddr_i8_vgpr64_sgpr32:
+; GFX11-GENERIC-SDAG:       ; %bb.0:
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, s0
+; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: global_load_saddr_i8_vgpr64_sgpr32:
+; GFX1250-SDAG:       ; %bb.0:
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    s_mov_b32 s1, 0
+; GFX1250-SDAG-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX1250-SDAG-NEXT:    v_add_nc_u64_e32 v[0:1], s[0:1], v[0:1]
+; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_DEV
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-SDAG-LABEL: global_load_saddr_i8_vgpr64_sgpr32:
+; GFX12-GENERIC-SDAG:       ; %bb.0:
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, s0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)
+; GFX12-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_DEV
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-GENERIC-ISEL-LABEL: global_load_saddr_i8_vgpr64_sgpr32:
+; GFX9-GENERIC-ISEL:       ; %bb.0:
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_mov_b32 s17, 0
+; GFX9-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v2, s16
+; GFX9-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v3, s17
+; GFX9-GENERIC-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX9-GENERIC-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, v1, v3, vcc
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-ISEL-LABEL: global_load_saddr_i8_vgpr64_sgpr32:
+; GFX906-ISEL:       ; %bb.0:
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-ISEL-NEXT:    s_mov_b32 s17, 0
+; GFX906-ISEL-NEXT:    v_mov_b32_e32 v2, s16
+; GFX906-ISEL-NEXT:    v_mov_b32_e32 v3, s17
+; GFX906-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX906-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, v1, v3, vcc
+; GFX906-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-ISEL-LABEL: global_load_saddr_i8_vgpr64_sgpr32:
+; GFX908-ISEL:       ; %bb.0:
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-ISEL-NEXT:    s_mov_b32 s17, 0
+; GFX908-ISEL-NEXT:    v_mov_b32_e32 v2, s16
+; GFX908-ISEL-NEXT:    v_mov_b32_e32 v3, s17
+; GFX908-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX908-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, v1, v3, vcc
+; GFX908-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-ISEL-LABEL: global_load_saddr_i8_vgpr64_sgpr32:
+; GFX90A-ISEL:       ; %bb.0:
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-ISEL-NEXT:    s_mov_b32 s17, 0
+; GFX90A-ISEL-NEXT:    v_pk_mov_b32 v[2:3], s[16:17], s[16:17] op_sel:[0,1]
+; GFX90A-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX90A-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, v1, v3, vcc
+; GFX90A-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-ISEL-LABEL: global_load_saddr_i8_vgpr64_sgpr32:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0:
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_mov_b32 s1, 0
+; GFX9-4-GENERIC-ISEL-NEXT:    v_mov_b64_e32 v[2:3], s[0:1]
+; GFX9-4-GENERIC-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX9-4-GENERIC-ISEL-NEXT:    s_nop 1
+; GFX9-4-GENERIC-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, v1, v3, vcc
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc1
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-ISEL-LABEL: global_load_saddr_i8_vgpr64_sgpr32:
+; GFX942-ISEL:       ; %bb.0:
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    s_mov_b32 s1, 0
+; GFX942-ISEL-NEXT:    v_mov_b64_e32 v[2:3], s[0:1]
+; GFX942-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX942-ISEL-NEXT:    s_nop 1
+; GFX942-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, v1, v3, vcc
+; GFX942-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc1
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-ISEL-LABEL: global_load_saddr_i8_vgpr64_sgpr32:
+; GFX950-ISEL:       ; %bb.0:
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-ISEL-NEXT:    s_mov_b32 s1, 0
+; GFX950-ISEL-NEXT:    v_mov_b64_e32 v[2:3], s[0:1]
+; GFX950-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX950-ISEL-NEXT:    s_nop 1
+; GFX950-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, v1, v3, vcc
+; GFX950-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc1
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-ISEL-LABEL: global_load_saddr_i8_vgpr64_sgpr32:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0:
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_mov_b32 s17, 0
+; GFX10-1-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v2, s16
+; GFX10-1-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v3, s17
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, v1, v3, vcc_lo
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: global_load_saddr_i8_vgpr64_sgpr32:
+; GFX1012-ISEL:       ; %bb.0:
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    s_mov_b32 s17, 0
+; GFX1012-ISEL-NEXT:    v_mov_b32_e32 v2, s16
+; GFX1012-ISEL-NEXT:    v_mov_b32_e32 v3, s17
+; GFX1012-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX1012-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, v1, v3, vcc_lo
+; GFX1012-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-ISEL-LABEL: global_load_saddr_i8_vgpr64_sgpr32:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0:
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_mov_b32 s17, 0
+; GFX10-3-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v2, s16
+; GFX10-3-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v3, s17
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, v1, v3, vcc_lo
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-ISEL-LABEL: global_load_saddr_i8_vgpr64_sgpr32:
+; GFX11-GENERIC-ISEL:       ; %bb.0:
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_mov_b32 s1, 0
+; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX11-GENERIC-ISEL-NEXT:    v_dual_mov_b32 v3, s1 :: v_dual_mov_b32 v2, s0
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, v1, v3, vcc_lo
+; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: global_load_saddr_i8_vgpr64_sgpr32:
+; GFX1250-ISEL:       ; %bb.0:
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    s_mov_b32 s1, 0
+; GFX1250-ISEL-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX1250-ISEL-NEXT:    v_mov_b64_e32 v[2:3], s[0:1]
+; GFX1250-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX1250-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX1250-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, v1, v3, vcc_lo
+; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_DEV
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-ISEL-LABEL: global_load_saddr_i8_vgpr64_sgpr32:
+; GFX12-GENERIC-ISEL:       ; %bb.0:
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_mov_b32 s1, 0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_alu depctr_sa_sdst(0)
+; GFX12-GENERIC-ISEL-NEXT:    v_dual_mov_b32 v3, s1 :: v_dual_mov_b32 v2, s0
+; GFX12-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)
+; GFX12-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_alu depctr_va_vcc(0)
+; GFX12-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, v1, v3, vcc_lo
+; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_DEV
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+  %zext.offset = zext i32 %soffset to i64
+  %gep0 = getelementptr inbounds i8, ptr addrspace(1) %vbase, i64 %zext.offset
+  %load = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %gep0, metadata !2)
+  %cast.load = bitcast <4 x i32> %load to <4 x float>
+  ret <4 x float> %cast.load
+}
+
+;; divergent 64-bit base, 32-bit scalar offset, with imm offset
+define <4 x float> @global_load_saddr_i8_vgpr64_sgpr32_offset_4095(ptr addrspace(1) %vbase, i32 inreg %soffset) {
+; GFX9-GENERIC-SDAG-LABEL: global_load_saddr_i8_vgpr64_sgpr32_offset_4095:
+; GFX9-GENERIC-SDAG:       ; %bb.0:
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, s16, v0
+; GFX9-GENERIC-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:4095 glc
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-SDAG-LABEL: global_load_saddr_i8_vgpr64_sgpr32_offset_4095:
+; GFX906-SDAG:       ; %bb.0:
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, s16, v0
+; GFX906-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX906-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:4095 glc
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-SDAG-LABEL: global_load_saddr_i8_vgpr64_sgpr32_offset_4095:
+; GFX908-SDAG:       ; %bb.0:
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, s16, v0
+; GFX908-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX908-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:4095 glc
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-SDAG-LABEL: global_load_saddr_i8_vgpr64_sgpr32_offset_4095:
+; GFX90A-SDAG:       ; %bb.0:
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, s16, v0
+; GFX90A-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX90A-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:4095 glc
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-SDAG-LABEL: global_load_saddr_i8_vgpr64_sgpr32_offset_4095:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0:
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_mov_b32 s1, 0
+; GFX9-4-GENERIC-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 0, s[0:1]
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:4095 sc0 sc1
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-SDAG-LABEL: global_load_saddr_i8_vgpr64_sgpr32_offset_4095:
+; GFX942-SDAG:       ; %bb.0:
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    s_mov_b32 s1, 0
+; GFX942-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 0, s[0:1]
+; GFX942-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:4095 sc0 sc1
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-SDAG-LABEL: global_load_saddr_i8_vgpr64_sgpr32_offset_4095:
+; GFX950-SDAG:       ; %bb.0:
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-SDAG-NEXT:    s_mov_b32 s1, 0
+; GFX950-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 0, s[0:1]
+; GFX950-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:4095 sc0 sc1
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-SDAG-LABEL: global_load_saddr_i8_vgpr64_sgpr32_offset_4095:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0:
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, s16
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0x800, v0
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:2047 glc dlc
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: global_load_saddr_i8_vgpr64_sgpr32_offset_4095:
+; GFX1012-SDAG:       ; %bb.0:
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, s16
+; GFX1012-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX1012-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0x800, v0
+; GFX1012-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX1012-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:2047 glc dlc
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-SDAG-LABEL: global_load_saddr_i8_vgpr64_sgpr32_offset_4095:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0:
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, s16
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0x800, v0
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:2047 glc dlc
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-SDAG-LABEL: global_load_saddr_i8_vgpr64_sgpr32_offset_4095:
+; GFX11-GENERIC-SDAG:       ; %bb.0:
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, s0
+; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:4095 glc
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: global_load_saddr_i8_vgpr64_sgpr32_offset_4095:
+; GFX1250-SDAG:       ; %bb.0:
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    s_mov_b32 s1, 0
+; GFX1250-SDAG-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX1250-SDAG-NEXT:    v_add_nc_u64_e32 v[0:1], s[0:1], v[0:1]
+; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:4095 scope:SCOPE_SYS
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-SDAG-LABEL: global_load_saddr_i8_vgpr64_sgpr32_offset_4095:
+; GFX12-GENERIC-SDAG:       ; %bb.0:
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, s0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)
+; GFX12-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:4095 scope:SCOPE_SYS
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-GENERIC-ISEL-LABEL: global_load_saddr_i8_vgpr64_sgpr32_offset_4095:
+; GFX9-GENERIC-ISEL:       ; %bb.0:
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_mov_b32 s17, 0
+; GFX9-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v2, s16
+; GFX9-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v3, s17
+; GFX9-GENERIC-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX9-GENERIC-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, v1, v3, vcc
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:4095 glc
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-ISEL-LABEL: global_load_saddr_i8_vgpr64_sgpr32_offset_4095:
+; GFX906-ISEL:       ; %bb.0:
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-ISEL-NEXT:    s_mov_b32 s17, 0
+; GFX906-ISEL-NEXT:    v_mov_b32_e32 v2, s16
+; GFX906-ISEL-NEXT:    v_mov_b32_e32 v3, s17
+; GFX906-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX906-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, v1, v3, vcc
+; GFX906-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:4095 glc
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-ISEL-LABEL: global_load_saddr_i8_vgpr64_sgpr32_offset_4095:
+; GFX908-ISEL:       ; %bb.0:
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-ISEL-NEXT:    s_mov_b32 s17, 0
+; GFX908-ISEL-NEXT:    v_mov_b32_e32 v2, s16
+; GFX908-ISEL-NEXT:    v_mov_b32_e32 v3, s17
+; GFX908-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX908-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, v1, v3, vcc
+; GFX908-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:4095 glc
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-ISEL-LABEL: global_load_saddr_i8_vgpr64_sgpr32_offset_4095:
+; GFX90A-ISEL:       ; %bb.0:
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-ISEL-NEXT:    s_mov_b32 s17, 0
+; GFX90A-ISEL-NEXT:    v_pk_mov_b32 v[2:3], s[16:17], s[16:17] op_sel:[0,1]
+; GFX90A-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX90A-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, v1, v3, vcc
+; GFX90A-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:4095 glc
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-ISEL-LABEL: global_load_saddr_i8_vgpr64_sgpr32_offset_4095:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0:
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_mov_b32 s1, 0
+; GFX9-4-GENERIC-ISEL-NEXT:    v_mov_b64_e32 v[2:3], s[0:1]
+; GFX9-4-GENERIC-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX9-4-GENERIC-ISEL-NEXT:    s_nop 1
+; GFX9-4-GENERIC-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, v1, v3, vcc
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:4095 sc0 sc1
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-ISEL-LABEL: global_load_saddr_i8_vgpr64_sgpr32_offset_4095:
+; GFX942-ISEL:       ; %bb.0:
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    s_mov_b32 s1, 0
+; GFX942-ISEL-NEXT:    v_mov_b64_e32 v[2:3], s[0:1]
+; GFX942-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX942-ISEL-NEXT:    s_nop 1
+; GFX942-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, v1, v3, vcc
+; GFX942-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:4095 sc0 sc1
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-ISEL-LABEL: global_load_saddr_i8_vgpr64_sgpr32_offset_4095:
+; GFX950-ISEL:       ; %bb.0:
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-ISEL-NEXT:    s_mov_b32 s1, 0
+; GFX950-ISEL-NEXT:    v_mov_b64_e32 v[2:3], s[0:1]
+; GFX950-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX950-ISEL-NEXT:    s_nop 1
+; GFX950-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, v1, v3, vcc
+; GFX950-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off offset:4095 sc0 sc1
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-ISEL-LABEL: global_load_saddr_i8_vgpr64_sgpr32_offset_4095:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0:
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_mov_b32 s17, 0
+; GFX10-1-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v2, s16
+; GFX10-1-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v3, s17
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, v1, v3, vcc_lo
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfff, v0
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: global_load_saddr_i8_vgpr64_sgpr32_offset_4095:
+; GFX1012-ISEL:       ; %bb.0:
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    s_mov_b32 s17, 0
+; GFX1012-ISEL-NEXT:    v_mov_b32_e32 v2, s16
+; GFX1012-ISEL-NEXT:    v_mov_b32_e32 v3, s17
+; GFX1012-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX1012-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, v1, v3, vcc_lo
+; GFX1012-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfff, v0
+; GFX1012-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX1012-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-ISEL-LABEL: global_load_saddr_i8_vgpr64_sgpr32_offset_4095:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0:
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_mov_b32 s17, 0
+; GFX10-3-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v2, s16
+; GFX10-3-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v3, s17
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, v1, v3, vcc_lo
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfff, v0
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-ISEL-LABEL: global_load_saddr_i8_vgpr64_sgpr32_offset_4095:
+; GFX11-GENERIC-ISEL:       ; %bb.0:
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_mov_b32 s1, 0
+; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX11-GENERIC-ISEL-NEXT:    v_dual_mov_b32 v3, s1 :: v_dual_mov_b32 v2, s0
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, v1, v3, vcc_lo
+; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:4095 glc
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: global_load_saddr_i8_vgpr64_sgpr32_offset_4095:
+; GFX1250-ISEL:       ; %bb.0:
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    s_mov_b32 s1, 0
+; GFX1250-ISEL-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX1250-ISEL-NEXT:    v_mov_b64_e32 v[2:3], s[0:1]
+; GFX1250-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX1250-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX1250-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, v1, v3, vcc_lo
+; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:4095 scope:SCOPE_SYS
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-ISEL-LABEL: global_load_saddr_i8_vgpr64_sgpr32_offset_4095:
+; GFX12-GENERIC-ISEL:       ; %bb.0:
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_mov_b32 s1, 0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_alu depctr_sa_sdst(0)
+; GFX12-GENERIC-ISEL-NEXT:    v_dual_mov_b32 v3, s1 :: v_dual_mov_b32 v2, s0
+; GFX12-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)
+; GFX12-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_alu depctr_va_vcc(0)
+; GFX12-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, v1, v3, vcc_lo
+; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:4095 scope:SCOPE_SYS
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+  %zext.offset = zext i32 %soffset to i64
+  %gep0 = getelementptr inbounds i8, ptr addrspace(1) %vbase, i64 %zext.offset
+  %gep1 = getelementptr inbounds i8, ptr addrspace(1) %gep0, i64 4095
+  %load = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %gep1, metadata !3)
+  %cast.load = bitcast <4 x i32> %load to <4 x float>
+  ret <4 x float> %cast.load
+}
+
+;;------------------------------------------------------------------------------
+;; Natural addressing shifts with restricted range
+;;------------------------------------------------------------------------------
+
+;; Cannot push the shift into 32-bits, and cannot match.
+define <4 x float> @global_load_saddr_f32_natural_addressing(ptr addrspace(1) inreg %sbase, ptr addrspace(1) %voffset.ptr) {
+; GFX9-GENERIC-SDAG-LABEL: global_load_saddr_f32_natural_addressing:
+; GFX9-GENERIC-SDAG:       ; %bb.0:
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dword v0, v[0:1], off
+; GFX9-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v1, 0
+; GFX9-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v2, s17
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    v_lshlrev_b64 v[0:1], 2, v[0:1]
+; GFX9-GENERIC-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, s16, v0
+; GFX9-GENERIC-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, v2, v1, vcc
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-SDAG-LABEL: global_load_saddr_f32_natural_addressing:
+; GFX906-SDAG:       ; %bb.0:
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-SDAG-NEXT:    global_load_dword v0, v[0:1], off
+; GFX906-SDAG-NEXT:    v_mov_b32_e32 v1, 0
+; GFX906-SDAG-NEXT:    v_mov_b32_e32 v2, s17
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    v_lshlrev_b64 v[0:1], 2, v[0:1]
+; GFX906-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, s16, v0
+; GFX906-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, v2, v1, vcc
+; GFX906-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-SDAG-LABEL: global_load_saddr_f32_natural_addressing:
+; GFX908-SDAG:       ; %bb.0:
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-SDAG-NEXT:    global_load_dword v0, v[0:1], off
+; GFX908-SDAG-NEXT:    v_mov_b32_e32 v1, 0
+; GFX908-SDAG-NEXT:    v_mov_b32_e32 v2, s17
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    v_lshlrev_b64 v[0:1], 2, v[0:1]
+; GFX908-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, s16, v0
+; GFX908-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, v2, v1, vcc
+; GFX908-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-SDAG-LABEL: global_load_saddr_f32_natural_addressing:
+; GFX90A-SDAG:       ; %bb.0:
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-SDAG-NEXT:    global_load_dword v0, v[0:1], off
+; GFX90A-SDAG-NEXT:    v_mov_b32_e32 v1, 0
+; GFX90A-SDAG-NEXT:    v_mov_b32_e32 v2, s17
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-SDAG-NEXT:    v_lshlrev_b64 v[0:1], 2, v[0:1]
+; GFX90A-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, s16, v0
+; GFX90A-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, v2, v1, vcc
+; GFX90A-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-SDAG-LABEL: global_load_saddr_f32_natural_addressing:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0:
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dword v0, v[0:1], off
+; GFX9-4-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v1, 0
+; GFX9-4-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v2, s0
+; GFX9-4-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v3, s1
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 2, v[2:3]
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-SDAG-LABEL: global_load_saddr_f32_natural_addressing:
+; GFX942-SDAG:       ; %bb.0:
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    global_load_dword v0, v[0:1], off
+; GFX942-SDAG-NEXT:    v_mov_b32_e32 v1, 0
+; GFX942-SDAG-NEXT:    v_mov_b32_e32 v2, s0
+; GFX942-SDAG-NEXT:    v_mov_b32_e32 v3, s1
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 2, v[2:3]
+; GFX942-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-SDAG-LABEL: global_load_saddr_f32_natural_addressing:
+; GFX950-SDAG:       ; %bb.0:
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-SDAG-NEXT:    global_load_dword v0, v[0:1], off
+; GFX950-SDAG-NEXT:    v_mov_b32_e32 v1, 0
+; GFX950-SDAG-NEXT:    v_mov_b32_e32 v2, s0
+; GFX950-SDAG-NEXT:    v_mov_b32_e32 v3, s1
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 2, v[2:3]
+; GFX950-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-SDAG-LABEL: global_load_saddr_f32_natural_addressing:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0:
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dword v0, v[0:1], off
+; GFX10-1-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v1, 0
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    v_lshlrev_b64 v[0:1], 2, v[0:1]
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, s16, v0
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, s17, v1, vcc_lo
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: global_load_saddr_f32_natural_addressing:
+; GFX1012-SDAG:       ; %bb.0:
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    global_load_dword v0, v[0:1], off
+; GFX1012-SDAG-NEXT:    v_mov_b32_e32 v1, 0
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    v_lshlrev_b64 v[0:1], 2, v[0:1]
+; GFX1012-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, s16, v0
+; GFX1012-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, s17, v1, vcc_lo
+; GFX1012-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-SDAG-LABEL: global_load_saddr_f32_natural_addressing:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0:
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dword v0, v[0:1], off
+; GFX10-3-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v1, 0
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    v_lshlrev_b64 v[0:1], 2, v[0:1]
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, s16, v0
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, s17, v1, vcc_lo
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-SDAG-LABEL: global_load_saddr_f32_natural_addressing:
+; GFX11-GENERIC-SDAG:       ; %bb.0:
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b32 v0, v[0:1], off
+; GFX11-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v1, 0
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX11-GENERIC-SDAG-NEXT:    v_lshlrev_b64 v[0:1], 2, v[0:1]
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, s0, v0
+; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, s1, v1, vcc_lo
+; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: global_load_saddr_f32_natural_addressing:
+; GFX1250-SDAG:       ; %bb.0:
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    global_load_b32 v0, v[0:1], off
+; GFX1250-SDAG-NEXT:    s_wait_xcnt 0x0
+; GFX1250-SDAG-NEXT:    v_mov_b32_e32 v1, 0
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX1250-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 2, s[0:1]
+; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-SDAG-LABEL: global_load_saddr_f32_natural_addressing:
+; GFX12-GENERIC-SDAG:       ; %bb.0:
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b32 v0, v[0:1], off
+; GFX12-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v1, 0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX12-GENERIC-SDAG-NEXT:    v_lshlrev_b64_e32 v[0:1], 2, v[0:1]
+; GFX12-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, s0, v0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)
+; GFX12-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_2)
+; GFX12-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, s1, v1, vcc_lo
+; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-GENERIC-ISEL-LABEL: global_load_saddr_f32_natural_addressing:
+; GFX9-GENERIC-ISEL:       ; %bb.0:
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dword v0, v[0:1], off
+; GFX9-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v1, 0
+; GFX9-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v2, s16
+; GFX9-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v3, s17
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    v_lshlrev_b64 v[0:1], 2, v[0:1]
+; GFX9-GENERIC-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v2, v0
+; GFX9-GENERIC-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, v3, v1, vcc
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-ISEL-LABEL: global_load_saddr_f32_natural_addressing:
+; GFX906-ISEL:       ; %bb.0:
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-ISEL-NEXT:    global_load_dword v0, v[0:1], off
+; GFX906-ISEL-NEXT:    v_mov_b32_e32 v1, 0
+; GFX906-ISEL-NEXT:    v_mov_b32_e32 v2, s16
+; GFX906-ISEL-NEXT:    v_mov_b32_e32 v3, s17
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    v_lshlrev_b64 v[0:1], 2, v[0:1]
+; GFX906-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v2, v0
+; GFX906-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, v3, v1, vcc
+; GFX906-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-ISEL-LABEL: global_load_saddr_f32_natural_addressing:
+; GFX908-ISEL:       ; %bb.0:
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-ISEL-NEXT:    global_load_dword v0, v[0:1], off
+; GFX908-ISEL-NEXT:    v_mov_b32_e32 v1, 0
+; GFX908-ISEL-NEXT:    v_mov_b32_e32 v2, s16
+; GFX908-ISEL-NEXT:    v_mov_b32_e32 v3, s17
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    v_lshlrev_b64 v[0:1], 2, v[0:1]
+; GFX908-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v2, v0
+; GFX908-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, v3, v1, vcc
+; GFX908-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-ISEL-LABEL: global_load_saddr_f32_natural_addressing:
+; GFX90A-ISEL:       ; %bb.0:
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-ISEL-NEXT:    global_load_dword v0, v[0:1], off
+; GFX90A-ISEL-NEXT:    v_mov_b32_e32 v1, 0
+; GFX90A-ISEL-NEXT:    v_pk_mov_b32 v[2:3], s[16:17], s[16:17] op_sel:[0,1]
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-ISEL-NEXT:    v_lshlrev_b64 v[0:1], 2, v[0:1]
+; GFX90A-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v2, v0
+; GFX90A-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, v3, v1, vcc
+; GFX90A-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-ISEL-LABEL: global_load_saddr_f32_natural_addressing:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0:
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dword v0, v[0:1], off
+; GFX9-4-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v1, 0
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 2, s[0:1]
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-ISEL-LABEL: global_load_saddr_f32_natural_addressing:
+; GFX942-ISEL:       ; %bb.0:
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    global_load_dword v0, v[0:1], off
+; GFX942-ISEL-NEXT:    v_mov_b32_e32 v1, 0
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 2, s[0:1]
+; GFX942-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-ISEL-LABEL: global_load_saddr_f32_natural_addressing:
+; GFX950-ISEL:       ; %bb.0:
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-ISEL-NEXT:    global_load_dword v0, v[0:1], off
+; GFX950-ISEL-NEXT:    v_mov_b32_e32 v1, 0
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 2, s[0:1]
+; GFX950-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-ISEL-LABEL: global_load_saddr_f32_natural_addressing:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0:
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dword v0, v[0:1], off
+; GFX10-1-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v1, 0
+; GFX10-1-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v2, s16
+; GFX10-1-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v3, s17
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    v_lshlrev_b64 v[0:1], 2, v[0:1]
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v2, v0
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, v3, v1, vcc_lo
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: global_load_saddr_f32_natural_addressing:
+; GFX1012-ISEL:       ; %bb.0:
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    global_load_dword v0, v[0:1], off
+; GFX1012-ISEL-NEXT:    v_mov_b32_e32 v1, 0
+; GFX1012-ISEL-NEXT:    v_mov_b32_e32 v2, s16
+; GFX1012-ISEL-NEXT:    v_mov_b32_e32 v3, s17
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    v_lshlrev_b64 v[0:1], 2, v[0:1]
+; GFX1012-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v2, v0
+; GFX1012-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, v3, v1, vcc_lo
+; GFX1012-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-ISEL-LABEL: global_load_saddr_f32_natural_addressing:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0:
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dword v0, v[0:1], off
+; GFX10-3-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v1, 0
+; GFX10-3-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v2, s16
+; GFX10-3-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v3, s17
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    v_lshlrev_b64 v[0:1], 2, v[0:1]
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v2, v0
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, v3, v1, vcc_lo
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-ISEL-LABEL: global_load_saddr_f32_natural_addressing:
+; GFX11-GENERIC-ISEL:       ; %bb.0:
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b32 v0, v[0:1], off
+; GFX11-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v1, 0
+; GFX11-GENERIC-ISEL-NEXT:    v_dual_mov_b32 v3, s1 :: v_dual_mov_b32 v2, s0
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX11-GENERIC-ISEL-NEXT:    v_lshlrev_b64 v[0:1], 2, v[0:1]
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v2, v0
+; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, v3, v1, vcc_lo
+; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: global_load_saddr_f32_natural_addressing:
+; GFX1250-ISEL:       ; %bb.0:
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    global_load_b32 v0, v[0:1], off
+; GFX1250-ISEL-NEXT:    s_wait_xcnt 0x0
+; GFX1250-ISEL-NEXT:    v_mov_b32_e32 v1, 0
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX1250-ISEL-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 2, s[0:1]
+; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-ISEL-LABEL: global_load_saddr_f32_natural_addressing:
+; GFX12-GENERIC-ISEL:       ; %bb.0:
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b32 v0, v[0:1], off
+; GFX12-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v1, 0
+; GFX12-GENERIC-ISEL-NEXT:    v_dual_mov_b32 v3, s1 :: v_dual_mov_b32 v2, s0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX12-GENERIC-ISEL-NEXT:    v_lshlrev_b64_e32 v[0:1], 2, v[0:1]
+; GFX12-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v2, v0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_alu depctr_va_vcc(0)
+; GFX12-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_2)
+; GFX12-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, v3, v1, vcc_lo
+; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+  %voffset = load i32, ptr addrspace(1) %voffset.ptr
+  %zext.offset = zext i32 %voffset to i64
+  %gep = getelementptr inbounds float, ptr addrspace(1) %sbase, i64 %zext.offset
+  %load = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %gep, metadata !0)
+  %cast.load = bitcast <4 x i32> %load to <4 x float>
+  ret <4 x float> %cast.load
+}
+
+;; Cannot push the shift into 32-bits, with an immediate offset.
+define <4 x float> @global_load_saddr_f32_natural_addressing_immoffset(ptr addrspace(1) inreg %sbase, ptr addrspace(1) %voffset.ptr) {
+; GFX9-GENERIC-SDAG-LABEL: global_load_saddr_f32_natural_addressing_immoffset:
+; GFX9-GENERIC-SDAG:       ; %bb.0:
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dword v0, v[0:1], off
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:128
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-SDAG-LABEL: global_load_saddr_f32_natural_addressing_immoffset:
+; GFX906-SDAG:       ; %bb.0:
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-SDAG-NEXT:    global_load_dword v0, v[0:1], off
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:128
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-SDAG-LABEL: global_load_saddr_f32_natural_addressing_immoffset:
+; GFX908-SDAG:       ; %bb.0:
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-SDAG-NEXT:    global_load_dword v0, v[0:1], off
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:128
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-SDAG-LABEL: global_load_saddr_f32_natural_addressing_immoffset:
+; GFX90A-SDAG:       ; %bb.0:
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-SDAG-NEXT:    global_load_dword v0, v[0:1], off
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:128
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-SDAG-LABEL: global_load_saddr_f32_natural_addressing_immoffset:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0:
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dword v0, v[0:1], off
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:128 sc0
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-SDAG-LABEL: global_load_saddr_f32_natural_addressing_immoffset:
+; GFX942-SDAG:       ; %bb.0:
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    global_load_dword v0, v[0:1], off
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:128 sc0
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-SDAG-LABEL: global_load_saddr_f32_natural_addressing_immoffset:
+; GFX950-SDAG:       ; %bb.0:
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-SDAG-NEXT:    global_load_dword v0, v[0:1], off
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:128 sc0
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-SDAG-LABEL: global_load_saddr_f32_natural_addressing_immoffset:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0:
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dword v0, v[0:1], off
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:128 glc
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: global_load_saddr_f32_natural_addressing_immoffset:
+; GFX1012-SDAG:       ; %bb.0:
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    global_load_dword v0, v[0:1], off
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:128 glc
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-SDAG-LABEL: global_load_saddr_f32_natural_addressing_immoffset:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0:
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dword v0, v[0:1], off
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:128 glc
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-SDAG-LABEL: global_load_saddr_f32_natural_addressing_immoffset:
+; GFX11-GENERIC-SDAG:       ; %bb.0:
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b32 v0, v[0:1], off
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:128 glc
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: global_load_saddr_f32_natural_addressing_immoffset:
+; GFX1250-SDAG:       ; %bb.0:
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    global_load_b32 v0, v[0:1], off
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:128
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-SDAG-LABEL: global_load_saddr_f32_natural_addressing_immoffset:
+; GFX12-GENERIC-SDAG:       ; %bb.0:
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b32 v0, v[0:1], off
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:128 scope:SCOPE_SE
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-GENERIC-ISEL-LABEL: global_load_saddr_f32_natural_addressing_immoffset:
+; GFX9-GENERIC-ISEL:       ; %bb.0:
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dword v0, v[0:1], off
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:128
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-ISEL-LABEL: global_load_saddr_f32_natural_addressing_immoffset:
+; GFX906-ISEL:       ; %bb.0:
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-ISEL-NEXT:    global_load_dword v0, v[0:1], off
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:128
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-ISEL-LABEL: global_load_saddr_f32_natural_addressing_immoffset:
+; GFX908-ISEL:       ; %bb.0:
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-ISEL-NEXT:    global_load_dword v0, v[0:1], off
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:128
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-ISEL-LABEL: global_load_saddr_f32_natural_addressing_immoffset:
+; GFX90A-ISEL:       ; %bb.0:
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-ISEL-NEXT:    global_load_dword v0, v[0:1], off
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:128
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-ISEL-LABEL: global_load_saddr_f32_natural_addressing_immoffset:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0:
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dword v0, v[0:1], off
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:128 sc0
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-ISEL-LABEL: global_load_saddr_f32_natural_addressing_immoffset:
+; GFX942-ISEL:       ; %bb.0:
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    global_load_dword v0, v[0:1], off
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:128 sc0
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-ISEL-LABEL: global_load_saddr_f32_natural_addressing_immoffset:
+; GFX950-ISEL:       ; %bb.0:
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-ISEL-NEXT:    global_load_dword v0, v[0:1], off
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:128 sc0
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-ISEL-LABEL: global_load_saddr_f32_natural_addressing_immoffset:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0:
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dword v0, v[0:1], off
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:128 glc
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: global_load_saddr_f32_natural_addressing_immoffset:
+; GFX1012-ISEL:       ; %bb.0:
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    global_load_dword v0, v[0:1], off
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:128 glc
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-ISEL-LABEL: global_load_saddr_f32_natural_addressing_immoffset:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0:
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dword v0, v[0:1], off
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:128 glc
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-ISEL-LABEL: global_load_saddr_f32_natural_addressing_immoffset:
+; GFX11-GENERIC-ISEL:       ; %bb.0:
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b32 v0, v[0:1], off
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:128 glc
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: global_load_saddr_f32_natural_addressing_immoffset:
+; GFX1250-ISEL:       ; %bb.0:
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    global_load_b32 v0, v[0:1], off
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:128
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-ISEL-LABEL: global_load_saddr_f32_natural_addressing_immoffset:
+; GFX12-GENERIC-ISEL:       ; %bb.0:
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b32 v0, v[0:1], off
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:128 scope:SCOPE_SE
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+  %voffset = load i32, ptr addrspace(1) %voffset.ptr
+  %zext.offset = zext i32 %voffset to i64
+  %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 %zext.offset
+  %gep1 = getelementptr inbounds i8, ptr addrspace(1) %gep0, i64 128
+  %load = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %gep1, metadata !1)
+  %cast.load = bitcast <4 x i32> %load to <4 x float>
+  ret <4 x float> %cast.load
+}
+
+;; Range is sufficiently restricted to push the shift into 32-bits.
+define <4 x float> @global_load_f32_saddr_zext_vgpr_range(ptr addrspace(1) inreg %sbase, ptr addrspace(1) %voffset.ptr) {
+; GFX9-GENERIC-SDAG-LABEL: global_load_f32_saddr_zext_vgpr_range:
+; GFX9-GENERIC-SDAG:       ; %bb.0:
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dword v0, v[0:1], off
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    v_lshlrev_b32_e32 v0, 2, v0
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-SDAG-LABEL: global_load_f32_saddr_zext_vgpr_range:
+; GFX906-SDAG:       ; %bb.0:
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-SDAG-NEXT:    global_load_dword v0, v[0:1], off
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    v_lshlrev_b32_e32 v0, 2, v0
+; GFX906-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-SDAG-LABEL: global_load_f32_saddr_zext_vgpr_range:
+; GFX908-SDAG:       ; %bb.0:
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-SDAG-NEXT:    global_load_dword v0, v[0:1], off
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    v_lshlrev_b32_e32 v0, 2, v0
+; GFX908-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-SDAG-LABEL: global_load_f32_saddr_zext_vgpr_range:
+; GFX90A-SDAG:       ; %bb.0:
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-SDAG-NEXT:    global_load_dword v0, v[0:1], off
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-SDAG-NEXT:    v_lshlrev_b32_e32 v0, 2, v0
+; GFX90A-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-SDAG-LABEL: global_load_f32_saddr_zext_vgpr_range:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0:
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dword v0, v[0:1], off
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    v_lshlrev_b32_e32 v0, 2, v0
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] sc1
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-SDAG-LABEL: global_load_f32_saddr_zext_vgpr_range:
+; GFX942-SDAG:       ; %bb.0:
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    global_load_dword v0, v[0:1], off
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    v_lshlrev_b32_e32 v0, 2, v0
+; GFX942-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] sc1
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-SDAG-LABEL: global_load_f32_saddr_zext_vgpr_range:
+; GFX950-SDAG:       ; %bb.0:
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-SDAG-NEXT:    global_load_dword v0, v[0:1], off
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    v_lshlrev_b32_e32 v0, 2, v0
+; GFX950-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] sc1
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-SDAG-LABEL: global_load_f32_saddr_zext_vgpr_range:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0:
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dword v0, v[0:1], off
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    v_lshlrev_b32_e32 v0, 2, v0
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc dlc
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: global_load_f32_saddr_zext_vgpr_range:
+; GFX1012-SDAG:       ; %bb.0:
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    global_load_dword v0, v[0:1], off
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    v_lshlrev_b32_e32 v0, 2, v0
+; GFX1012-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc dlc
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-SDAG-LABEL: global_load_f32_saddr_zext_vgpr_range:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0:
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dword v0, v[0:1], off
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    v_lshlrev_b32_e32 v0, 2, v0
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc dlc
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-SDAG-LABEL: global_load_f32_saddr_zext_vgpr_range:
+; GFX11-GENERIC-SDAG:       ; %bb.0:
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b32 v0, v[0:1], off
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    v_lshlrev_b32_e32 v0, 2, v0
+; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] glc
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: global_load_f32_saddr_zext_vgpr_range:
+; GFX1250-SDAG:       ; %bb.0:
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    global_load_b32 v0, v[0:1], off
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_xcnt 0x0
+; GFX1250-SDAG-NEXT:    v_lshlrev_b32_e32 v0, 2, v0
+; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] scope:SCOPE_DEV
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-SDAG-LABEL: global_load_f32_saddr_zext_vgpr_range:
+; GFX12-GENERIC-SDAG:       ; %bb.0:
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b32 v0, v[0:1], off
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    v_lshlrev_b32_e32 v0, 2, v0
+; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] scope:SCOPE_DEV
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-GENERIC-ISEL-LABEL: global_load_f32_saddr_zext_vgpr_range:
+; GFX9-GENERIC-ISEL:       ; %bb.0:
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dword v0, v[0:1], off
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    v_lshlrev_b32_e32 v0, 2, v0
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-ISEL-LABEL: global_load_f32_saddr_zext_vgpr_range:
+; GFX906-ISEL:       ; %bb.0:
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-ISEL-NEXT:    global_load_dword v0, v[0:1], off
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    v_lshlrev_b32_e32 v0, 2, v0
+; GFX906-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-ISEL-LABEL: global_load_f32_saddr_zext_vgpr_range:
+; GFX908-ISEL:       ; %bb.0:
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-ISEL-NEXT:    global_load_dword v0, v[0:1], off
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    v_lshlrev_b32_e32 v0, 2, v0
+; GFX908-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-ISEL-LABEL: global_load_f32_saddr_zext_vgpr_range:
+; GFX90A-ISEL:       ; %bb.0:
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-ISEL-NEXT:    global_load_dword v0, v[0:1], off
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-ISEL-NEXT:    v_lshlrev_b32_e32 v0, 2, v0
+; GFX90A-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-ISEL-LABEL: global_load_f32_saddr_zext_vgpr_range:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0:
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dword v0, v[0:1], off
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    v_lshlrev_b32_e32 v0, 2, v0
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] sc1
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-ISEL-LABEL: global_load_f32_saddr_zext_vgpr_range:
+; GFX942-ISEL:       ; %bb.0:
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    global_load_dword v0, v[0:1], off
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    v_lshlrev_b32_e32 v0, 2, v0
+; GFX942-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] sc1
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-ISEL-LABEL: global_load_f32_saddr_zext_vgpr_range:
+; GFX950-ISEL:       ; %bb.0:
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-ISEL-NEXT:    global_load_dword v0, v[0:1], off
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    v_lshlrev_b32_e32 v0, 2, v0
+; GFX950-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] sc1
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-ISEL-LABEL: global_load_f32_saddr_zext_vgpr_range:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0:
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dword v0, v[0:1], off
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    v_lshlrev_b32_e32 v0, 2, v0
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc dlc
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: global_load_f32_saddr_zext_vgpr_range:
+; GFX1012-ISEL:       ; %bb.0:
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    global_load_dword v0, v[0:1], off
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    v_lshlrev_b32_e32 v0, 2, v0
+; GFX1012-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc dlc
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-ISEL-LABEL: global_load_f32_saddr_zext_vgpr_range:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0:
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dword v0, v[0:1], off
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    v_lshlrev_b32_e32 v0, 2, v0
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] glc dlc
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-ISEL-LABEL: global_load_f32_saddr_zext_vgpr_range:
+; GFX11-GENERIC-ISEL:       ; %bb.0:
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b32 v0, v[0:1], off
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    v_lshlrev_b32_e32 v0, 2, v0
+; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] glc
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: global_load_f32_saddr_zext_vgpr_range:
+; GFX1250-ISEL:       ; %bb.0:
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    global_load_b32 v0, v[0:1], off
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_xcnt 0x0
+; GFX1250-ISEL-NEXT:    v_lshlrev_b32_e32 v0, 2, v0
+; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] scope:SCOPE_DEV
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-ISEL-LABEL: global_load_f32_saddr_zext_vgpr_range:
+; GFX12-GENERIC-ISEL:       ; %bb.0:
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b32 v0, v[0:1], off
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    v_lshlrev_b32_e32 v0, 2, v0
+; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] scope:SCOPE_DEV
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+  %voffset = load i32, ptr addrspace(1) %voffset.ptr, !range !4, !noundef !{}
+  %zext.offset = zext i32 %voffset to i64
+  %gep = getelementptr inbounds float, ptr addrspace(1) %sbase, i64 %zext.offset
+  %load = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %gep, metadata !2)
+  %cast.load = bitcast <4 x i32> %load to <4 x float>
+  ret <4 x float> %cast.load
+}
+
+;; Range is sufficiently restricted to push the shift into 32-bits, with an imm offset
+define <4 x float> @global_load_f32_saddr_zext_vgpr_range_imm_offset(ptr addrspace(1) inreg %sbase, ptr addrspace(1) %voffset.ptr) {
+; GFX9-GENERIC-SDAG-LABEL: global_load_f32_saddr_zext_vgpr_range_imm_offset:
+; GFX9-GENERIC-SDAG:       ; %bb.0:
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dword v0, v[0:1], off
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    v_lshlrev_b32_e32 v0, 2, v0
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:400 glc
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-SDAG-LABEL: global_load_f32_saddr_zext_vgpr_range_imm_offset:
+; GFX906-SDAG:       ; %bb.0:
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-SDAG-NEXT:    global_load_dword v0, v[0:1], off
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    v_lshlrev_b32_e32 v0, 2, v0
+; GFX906-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:400 glc
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-SDAG-LABEL: global_load_f32_saddr_zext_vgpr_range_imm_offset:
+; GFX908-SDAG:       ; %bb.0:
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-SDAG-NEXT:    global_load_dword v0, v[0:1], off
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    v_lshlrev_b32_e32 v0, 2, v0
+; GFX908-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:400 glc
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-SDAG-LABEL: global_load_f32_saddr_zext_vgpr_range_imm_offset:
+; GFX90A-SDAG:       ; %bb.0:
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-SDAG-NEXT:    global_load_dword v0, v[0:1], off
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-SDAG-NEXT:    v_lshlrev_b32_e32 v0, 2, v0
+; GFX90A-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:400 glc
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-SDAG-LABEL: global_load_f32_saddr_zext_vgpr_range_imm_offset:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0:
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dword v0, v[0:1], off
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    v_lshlrev_b32_e32 v0, 2, v0
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:400 sc0 sc1
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-SDAG-LABEL: global_load_f32_saddr_zext_vgpr_range_imm_offset:
+; GFX942-SDAG:       ; %bb.0:
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    global_load_dword v0, v[0:1], off
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    v_lshlrev_b32_e32 v0, 2, v0
+; GFX942-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:400 sc0 sc1
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-SDAG-LABEL: global_load_f32_saddr_zext_vgpr_range_imm_offset:
+; GFX950-SDAG:       ; %bb.0:
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-SDAG-NEXT:    global_load_dword v0, v[0:1], off
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    v_lshlrev_b32_e32 v0, 2, v0
+; GFX950-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:400 sc0 sc1
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-SDAG-LABEL: global_load_f32_saddr_zext_vgpr_range_imm_offset:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0:
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dword v0, v[0:1], off
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    v_lshlrev_b32_e32 v0, 2, v0
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:400 glc dlc
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: global_load_f32_saddr_zext_vgpr_range_imm_offset:
+; GFX1012-SDAG:       ; %bb.0:
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    global_load_dword v0, v[0:1], off
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    v_lshlrev_b32_e32 v0, 2, v0
+; GFX1012-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:400 glc dlc
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-SDAG-LABEL: global_load_f32_saddr_zext_vgpr_range_imm_offset:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0:
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dword v0, v[0:1], off
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    v_lshlrev_b32_e32 v0, 2, v0
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:400 glc dlc
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-SDAG-LABEL: global_load_f32_saddr_zext_vgpr_range_imm_offset:
+; GFX11-GENERIC-SDAG:       ; %bb.0:
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b32 v0, v[0:1], off
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    v_lshlrev_b32_e32 v0, 2, v0
+; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:400 glc
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: global_load_f32_saddr_zext_vgpr_range_imm_offset:
+; GFX1250-SDAG:       ; %bb.0:
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    global_load_b32 v0, v[0:1], off
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_xcnt 0x0
+; GFX1250-SDAG-NEXT:    v_lshlrev_b32_e32 v0, 2, v0
+; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:400 scope:SCOPE_SYS
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-SDAG-LABEL: global_load_f32_saddr_zext_vgpr_range_imm_offset:
+; GFX12-GENERIC-SDAG:       ; %bb.0:
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b32 v0, v[0:1], off
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    v_lshlrev_b32_e32 v0, 2, v0
+; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:400 scope:SCOPE_SYS
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-GENERIC-ISEL-LABEL: global_load_f32_saddr_zext_vgpr_range_imm_offset:
+; GFX9-GENERIC-ISEL:       ; %bb.0:
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dword v0, v[0:1], off
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    v_lshlrev_b32_e32 v0, 2, v0
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:400 glc
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-ISEL-LABEL: global_load_f32_saddr_zext_vgpr_range_imm_offset:
+; GFX906-ISEL:       ; %bb.0:
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-ISEL-NEXT:    global_load_dword v0, v[0:1], off
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    v_lshlrev_b32_e32 v0, 2, v0
+; GFX906-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:400 glc
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-ISEL-LABEL: global_load_f32_saddr_zext_vgpr_range_imm_offset:
+; GFX908-ISEL:       ; %bb.0:
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-ISEL-NEXT:    global_load_dword v0, v[0:1], off
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    v_lshlrev_b32_e32 v0, 2, v0
+; GFX908-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:400 glc
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-ISEL-LABEL: global_load_f32_saddr_zext_vgpr_range_imm_offset:
+; GFX90A-ISEL:       ; %bb.0:
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-ISEL-NEXT:    global_load_dword v0, v[0:1], off
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-ISEL-NEXT:    v_lshlrev_b32_e32 v0, 2, v0
+; GFX90A-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:400 glc
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-ISEL-LABEL: global_load_f32_saddr_zext_vgpr_range_imm_offset:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0:
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dword v0, v[0:1], off
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    v_lshlrev_b32_e32 v0, 2, v0
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:400 sc0 sc1
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-ISEL-LABEL: global_load_f32_saddr_zext_vgpr_range_imm_offset:
+; GFX942-ISEL:       ; %bb.0:
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    global_load_dword v0, v[0:1], off
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    v_lshlrev_b32_e32 v0, 2, v0
+; GFX942-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:400 sc0 sc1
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-ISEL-LABEL: global_load_f32_saddr_zext_vgpr_range_imm_offset:
+; GFX950-ISEL:       ; %bb.0:
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-ISEL-NEXT:    global_load_dword v0, v[0:1], off
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    v_lshlrev_b32_e32 v0, 2, v0
+; GFX950-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] offset:400 sc0 sc1
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-ISEL-LABEL: global_load_f32_saddr_zext_vgpr_range_imm_offset:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0:
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dword v0, v[0:1], off
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    v_lshlrev_b32_e32 v0, 2, v0
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:400 glc dlc
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: global_load_f32_saddr_zext_vgpr_range_imm_offset:
+; GFX1012-ISEL:       ; %bb.0:
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    global_load_dword v0, v[0:1], off
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    v_lshlrev_b32_e32 v0, 2, v0
+; GFX1012-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:400 glc dlc
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-ISEL-LABEL: global_load_f32_saddr_zext_vgpr_range_imm_offset:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0:
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dword v0, v[0:1], off
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    v_lshlrev_b32_e32 v0, 2, v0
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v0, s[16:17] offset:400 glc dlc
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-ISEL-LABEL: global_load_f32_saddr_zext_vgpr_range_imm_offset:
+; GFX11-GENERIC-ISEL:       ; %bb.0:
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b32 v0, v[0:1], off
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    v_lshlrev_b32_e32 v0, 2, v0
+; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:400 glc
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: global_load_f32_saddr_zext_vgpr_range_imm_offset:
+; GFX1250-ISEL:       ; %bb.0:
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    global_load_b32 v0, v[0:1], off
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_xcnt 0x0
+; GFX1250-ISEL-NEXT:    v_lshlrev_b32_e32 v0, 2, v0
+; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:400 scope:SCOPE_SYS
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-ISEL-LABEL: global_load_f32_saddr_zext_vgpr_range_imm_offset:
+; GFX12-GENERIC-ISEL:       ; %bb.0:
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b32 v0, v[0:1], off
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    v_lshlrev_b32_e32 v0, 2, v0
+; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:400 scope:SCOPE_SYS
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+  %voffset = load i32, ptr addrspace(1) %voffset.ptr, !range !4, !noundef !{}
+  %zext.offset = zext i32 %voffset to i64
+  %gep0 = getelementptr inbounds float, ptr addrspace(1) %sbase, i64 %zext.offset
+  %gep1 = getelementptr inbounds float, ptr addrspace(1) %gep0, i64 100
+  %load = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %gep1, metadata !3)
+  %cast.load = bitcast <4 x i32> %load to <4 x float>
+  ret <4 x float> %cast.load
+}
+
+;; Range is 1 beyond the limit where we can move the shift into 32-bits.
+define <4 x float> @global_load_f32_saddr_zext_vgpr_range_too_large(ptr addrspace(1) inreg %sbase, ptr addrspace(1) %voffset.ptr) {
+; GFX9-GENERIC-SDAG-LABEL: global_load_f32_saddr_zext_vgpr_range_too_large:
+; GFX9-GENERIC-SDAG:       ; %bb.0:
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dword v0, v[0:1], off
+; GFX9-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v1, 0
+; GFX9-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v2, s17
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    v_lshlrev_b64 v[0:1], 2, v[0:1]
+; GFX9-GENERIC-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, s16, v0
+; GFX9-GENERIC-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, v2, v1, vcc
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-SDAG-LABEL: global_load_f32_saddr_zext_vgpr_range_too_large:
+; GFX906-SDAG:       ; %bb.0:
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-SDAG-NEXT:    global_load_dword v0, v[0:1], off
+; GFX906-SDAG-NEXT:    v_mov_b32_e32 v1, 0
+; GFX906-SDAG-NEXT:    v_mov_b32_e32 v2, s17
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    v_lshlrev_b64 v[0:1], 2, v[0:1]
+; GFX906-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, s16, v0
+; GFX906-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, v2, v1, vcc
+; GFX906-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-SDAG-LABEL: global_load_f32_saddr_zext_vgpr_range_too_large:
+; GFX908-SDAG:       ; %bb.0:
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-SDAG-NEXT:    global_load_dword v0, v[0:1], off
+; GFX908-SDAG-NEXT:    v_mov_b32_e32 v1, 0
+; GFX908-SDAG-NEXT:    v_mov_b32_e32 v2, s17
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    v_lshlrev_b64 v[0:1], 2, v[0:1]
+; GFX908-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, s16, v0
+; GFX908-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, v2, v1, vcc
+; GFX908-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-SDAG-LABEL: global_load_f32_saddr_zext_vgpr_range_too_large:
+; GFX90A-SDAG:       ; %bb.0:
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-SDAG-NEXT:    global_load_dword v0, v[0:1], off
+; GFX90A-SDAG-NEXT:    v_mov_b32_e32 v1, 0
+; GFX90A-SDAG-NEXT:    v_mov_b32_e32 v2, s17
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-SDAG-NEXT:    v_lshlrev_b64 v[0:1], 2, v[0:1]
+; GFX90A-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, s16, v0
+; GFX90A-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, v2, v1, vcc
+; GFX90A-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-SDAG-LABEL: global_load_f32_saddr_zext_vgpr_range_too_large:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0:
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dword v0, v[0:1], off
+; GFX9-4-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v1, 0
+; GFX9-4-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v2, s0
+; GFX9-4-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v3, s1
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 2, v[2:3]
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-SDAG-LABEL: global_load_f32_saddr_zext_vgpr_range_too_large:
+; GFX942-SDAG:       ; %bb.0:
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    global_load_dword v0, v[0:1], off
+; GFX942-SDAG-NEXT:    v_mov_b32_e32 v1, 0
+; GFX942-SDAG-NEXT:    v_mov_b32_e32 v2, s0
+; GFX942-SDAG-NEXT:    v_mov_b32_e32 v3, s1
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 2, v[2:3]
+; GFX942-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-SDAG-LABEL: global_load_f32_saddr_zext_vgpr_range_too_large:
+; GFX950-SDAG:       ; %bb.0:
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-SDAG-NEXT:    global_load_dword v0, v[0:1], off
+; GFX950-SDAG-NEXT:    v_mov_b32_e32 v1, 0
+; GFX950-SDAG-NEXT:    v_mov_b32_e32 v2, s0
+; GFX950-SDAG-NEXT:    v_mov_b32_e32 v3, s1
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 2, v[2:3]
+; GFX950-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-SDAG-LABEL: global_load_f32_saddr_zext_vgpr_range_too_large:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0:
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dword v0, v[0:1], off
+; GFX10-1-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v1, 0
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    v_lshlrev_b64 v[0:1], 2, v[0:1]
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, s16, v0
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, s17, v1, vcc_lo
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: global_load_f32_saddr_zext_vgpr_range_too_large:
+; GFX1012-SDAG:       ; %bb.0:
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    global_load_dword v0, v[0:1], off
+; GFX1012-SDAG-NEXT:    v_mov_b32_e32 v1, 0
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    v_lshlrev_b64 v[0:1], 2, v[0:1]
+; GFX1012-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, s16, v0
+; GFX1012-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, s17, v1, vcc_lo
+; GFX1012-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-SDAG-LABEL: global_load_f32_saddr_zext_vgpr_range_too_large:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0:
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dword v0, v[0:1], off
+; GFX10-3-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v1, 0
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    v_lshlrev_b64 v[0:1], 2, v[0:1]
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, s16, v0
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, s17, v1, vcc_lo
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-SDAG-LABEL: global_load_f32_saddr_zext_vgpr_range_too_large:
+; GFX11-GENERIC-SDAG:       ; %bb.0:
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b32 v0, v[0:1], off
+; GFX11-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v1, 0
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX11-GENERIC-SDAG-NEXT:    v_lshlrev_b64 v[0:1], 2, v[0:1]
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, s0, v0
+; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, s1, v1, vcc_lo
+; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: global_load_f32_saddr_zext_vgpr_range_too_large:
+; GFX1250-SDAG:       ; %bb.0:
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    global_load_b32 v0, v[0:1], off
+; GFX1250-SDAG-NEXT:    s_wait_xcnt 0x0
+; GFX1250-SDAG-NEXT:    v_mov_b32_e32 v1, 0
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX1250-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 2, s[0:1]
+; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-SDAG-LABEL: global_load_f32_saddr_zext_vgpr_range_too_large:
+; GFX12-GENERIC-SDAG:       ; %bb.0:
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b32 v0, v[0:1], off
+; GFX12-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v1, 0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX12-GENERIC-SDAG-NEXT:    v_lshlrev_b64_e32 v[0:1], 2, v[0:1]
+; GFX12-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, s0, v0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)
+; GFX12-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_2)
+; GFX12-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, s1, v1, vcc_lo
+; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-GENERIC-ISEL-LABEL: global_load_f32_saddr_zext_vgpr_range_too_large:
+; GFX9-GENERIC-ISEL:       ; %bb.0:
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dword v0, v[0:1], off
+; GFX9-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v1, 0
+; GFX9-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v2, s16
+; GFX9-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v3, s17
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    v_lshlrev_b64 v[0:1], 2, v[0:1]
+; GFX9-GENERIC-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v2, v0
+; GFX9-GENERIC-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, v3, v1, vcc
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-ISEL-LABEL: global_load_f32_saddr_zext_vgpr_range_too_large:
+; GFX906-ISEL:       ; %bb.0:
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-ISEL-NEXT:    global_load_dword v0, v[0:1], off
+; GFX906-ISEL-NEXT:    v_mov_b32_e32 v1, 0
+; GFX906-ISEL-NEXT:    v_mov_b32_e32 v2, s16
+; GFX906-ISEL-NEXT:    v_mov_b32_e32 v3, s17
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    v_lshlrev_b64 v[0:1], 2, v[0:1]
+; GFX906-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v2, v0
+; GFX906-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, v3, v1, vcc
+; GFX906-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-ISEL-LABEL: global_load_f32_saddr_zext_vgpr_range_too_large:
+; GFX908-ISEL:       ; %bb.0:
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-ISEL-NEXT:    global_load_dword v0, v[0:1], off
+; GFX908-ISEL-NEXT:    v_mov_b32_e32 v1, 0
+; GFX908-ISEL-NEXT:    v_mov_b32_e32 v2, s16
+; GFX908-ISEL-NEXT:    v_mov_b32_e32 v3, s17
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    v_lshlrev_b64 v[0:1], 2, v[0:1]
+; GFX908-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v2, v0
+; GFX908-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, v3, v1, vcc
+; GFX908-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-ISEL-LABEL: global_load_f32_saddr_zext_vgpr_range_too_large:
+; GFX90A-ISEL:       ; %bb.0:
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-ISEL-NEXT:    global_load_dword v0, v[0:1], off
+; GFX90A-ISEL-NEXT:    v_mov_b32_e32 v1, 0
+; GFX90A-ISEL-NEXT:    v_pk_mov_b32 v[2:3], s[16:17], s[16:17] op_sel:[0,1]
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-ISEL-NEXT:    v_lshlrev_b64 v[0:1], 2, v[0:1]
+; GFX90A-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v2, v0
+; GFX90A-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, v3, v1, vcc
+; GFX90A-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-ISEL-LABEL: global_load_f32_saddr_zext_vgpr_range_too_large:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0:
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dword v0, v[0:1], off
+; GFX9-4-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v1, 0
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 2, s[0:1]
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-ISEL-LABEL: global_load_f32_saddr_zext_vgpr_range_too_large:
+; GFX942-ISEL:       ; %bb.0:
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    global_load_dword v0, v[0:1], off
+; GFX942-ISEL-NEXT:    v_mov_b32_e32 v1, 0
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 2, s[0:1]
+; GFX942-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-ISEL-LABEL: global_load_f32_saddr_zext_vgpr_range_too_large:
+; GFX950-ISEL:       ; %bb.0:
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-ISEL-NEXT:    global_load_dword v0, v[0:1], off
+; GFX950-ISEL-NEXT:    v_mov_b32_e32 v1, 0
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 2, s[0:1]
+; GFX950-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-ISEL-LABEL: global_load_f32_saddr_zext_vgpr_range_too_large:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0:
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dword v0, v[0:1], off
+; GFX10-1-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v1, 0
+; GFX10-1-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v2, s16
+; GFX10-1-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v3, s17
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    v_lshlrev_b64 v[0:1], 2, v[0:1]
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v2, v0
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, v3, v1, vcc_lo
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: global_load_f32_saddr_zext_vgpr_range_too_large:
+; GFX1012-ISEL:       ; %bb.0:
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    global_load_dword v0, v[0:1], off
+; GFX1012-ISEL-NEXT:    v_mov_b32_e32 v1, 0
+; GFX1012-ISEL-NEXT:    v_mov_b32_e32 v2, s16
+; GFX1012-ISEL-NEXT:    v_mov_b32_e32 v3, s17
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    v_lshlrev_b64 v[0:1], 2, v[0:1]
+; GFX1012-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v2, v0
+; GFX1012-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, v3, v1, vcc_lo
+; GFX1012-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-ISEL-LABEL: global_load_f32_saddr_zext_vgpr_range_too_large:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0:
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dword v0, v[0:1], off
+; GFX10-3-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v1, 0
+; GFX10-3-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v2, s16
+; GFX10-3-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v3, s17
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    v_lshlrev_b64 v[0:1], 2, v[0:1]
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v2, v0
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, v3, v1, vcc_lo
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-ISEL-LABEL: global_load_f32_saddr_zext_vgpr_range_too_large:
+; GFX11-GENERIC-ISEL:       ; %bb.0:
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b32 v0, v[0:1], off
+; GFX11-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v1, 0
+; GFX11-GENERIC-ISEL-NEXT:    v_dual_mov_b32 v3, s1 :: v_dual_mov_b32 v2, s0
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX11-GENERIC-ISEL-NEXT:    v_lshlrev_b64 v[0:1], 2, v[0:1]
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v2, v0
+; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, v3, v1, vcc_lo
+; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: global_load_f32_saddr_zext_vgpr_range_too_large:
+; GFX1250-ISEL:       ; %bb.0:
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    global_load_b32 v0, v[0:1], off
+; GFX1250-ISEL-NEXT:    s_wait_xcnt 0x0
+; GFX1250-ISEL-NEXT:    v_mov_b32_e32 v1, 0
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX1250-ISEL-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 2, s[0:1]
+; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-ISEL-LABEL: global_load_f32_saddr_zext_vgpr_range_too_large:
+; GFX12-GENERIC-ISEL:       ; %bb.0:
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b32 v0, v[0:1], off
+; GFX12-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v1, 0
+; GFX12-GENERIC-ISEL-NEXT:    v_dual_mov_b32 v3, s1 :: v_dual_mov_b32 v2, s0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX12-GENERIC-ISEL-NEXT:    v_lshlrev_b64_e32 v[0:1], 2, v[0:1]
+; GFX12-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v2, v0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_alu depctr_va_vcc(0)
+; GFX12-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_2)
+; GFX12-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, v3, v1, vcc_lo
+; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+  %voffset = load i32, ptr addrspace(1) %voffset.ptr, !range !5, !noundef !{}
+  %zext.offset = zext i32 %voffset to i64
+  %gep = getelementptr inbounds float, ptr addrspace(1) %sbase, i64 %zext.offset
+  %load = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %gep, metadata !0)
+  %cast.load = bitcast <4 x i32> %load to <4 x float>
+  ret <4 x float> %cast.load
+}
+
+;;------------------------------------------------------------------------------
+;; or-with-constant as add
+;;------------------------------------------------------------------------------
+
+;; Check add-as-or with split 64-bit or.
+define <4 x float> @global_load_saddr_i8_offset_or_i64_imm_offset_16(ptr addrspace(6) inreg %sbase, i32 %idx) {
+; GFX9-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_or_i64_imm_offset_16:
+; GFX9-GENERIC-SDAG:       ; %bb.0:
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    v_or_b32_e32 v0, 16, v0
+; GFX9-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v1, 0
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-SDAG-LABEL: global_load_saddr_i8_offset_or_i64_imm_offset_16:
+; GFX906-SDAG:       ; %bb.0:
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-SDAG-NEXT:    v_or_b32_e32 v0, 16, v0
+; GFX906-SDAG-NEXT:    v_mov_b32_e32 v1, 0
+; GFX906-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-SDAG-LABEL: global_load_saddr_i8_offset_or_i64_imm_offset_16:
+; GFX908-SDAG:       ; %bb.0:
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-SDAG-NEXT:    v_or_b32_e32 v0, 16, v0
+; GFX908-SDAG-NEXT:    v_mov_b32_e32 v1, 0
+; GFX908-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-SDAG-LABEL: global_load_saddr_i8_offset_or_i64_imm_offset_16:
+; GFX90A-SDAG:       ; %bb.0:
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-SDAG-NEXT:    v_or_b32_e32 v0, 16, v0
+; GFX90A-SDAG-NEXT:    v_mov_b32_e32 v1, 0
+; GFX90A-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_or_i64_imm_offset_16:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0:
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    v_or_b32_e32 v0, 16, v0
+; GFX9-4-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v1, 0
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-SDAG-LABEL: global_load_saddr_i8_offset_or_i64_imm_offset_16:
+; GFX942-SDAG:       ; %bb.0:
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    v_or_b32_e32 v0, 16, v0
+; GFX942-SDAG-NEXT:    v_mov_b32_e32 v1, 0
+; GFX942-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-SDAG-LABEL: global_load_saddr_i8_offset_or_i64_imm_offset_16:
+; GFX950-SDAG:       ; %bb.0:
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-SDAG-NEXT:    v_or_b32_e32 v0, 16, v0
+; GFX950-SDAG-NEXT:    v_mov_b32_e32 v1, 0
+; GFX950-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_or_i64_imm_offset_16:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0:
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v1, 0
+; GFX10-1-GENERIC-SDAG-NEXT:    v_or_b32_e32 v0, 16, v0
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: global_load_saddr_i8_offset_or_i64_imm_offset_16:
+; GFX1012-SDAG:       ; %bb.0:
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    v_mov_b32_e32 v1, 0
+; GFX1012-SDAG-NEXT:    v_or_b32_e32 v0, 16, v0
+; GFX1012-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_or_i64_imm_offset_16:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0:
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v1, 0
+; GFX10-3-GENERIC-SDAG-NEXT:    v_or_b32_e32 v0, 16, v0
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_or_i64_imm_offset_16:
+; GFX11-GENERIC-SDAG:       ; %bb.0:
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v1, 0
+; GFX11-GENERIC-SDAG-NEXT:    v_or_b32_e32 v0, 16, v0
+; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: global_load_saddr_i8_offset_or_i64_imm_offset_16:
+; GFX1250-SDAG:       ; %bb.0:
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    v_dual_mov_b32 v1, 0 :: v_dual_bitop2_b32 v0, 16, v0 bitop3:0x54
+; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_or_i64_imm_offset_16:
+; GFX12-GENERIC-SDAG:       ; %bb.0:
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v1, 0
+; GFX12-GENERIC-SDAG-NEXT:    v_or_b32_e32 v0, 16, v0
+; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SE
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_or_i64_imm_offset_16:
+; GFX9-GENERIC-ISEL:       ; %bb.0:
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    v_or_b32_e32 v0, 16, v0
+; GFX9-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v1, 0
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-ISEL-LABEL: global_load_saddr_i8_offset_or_i64_imm_offset_16:
+; GFX906-ISEL:       ; %bb.0:
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-ISEL-NEXT:    v_or_b32_e32 v0, 16, v0
+; GFX906-ISEL-NEXT:    v_mov_b32_e32 v1, 0
+; GFX906-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-ISEL-LABEL: global_load_saddr_i8_offset_or_i64_imm_offset_16:
+; GFX908-ISEL:       ; %bb.0:
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-ISEL-NEXT:    v_or_b32_e32 v0, 16, v0
+; GFX908-ISEL-NEXT:    v_mov_b32_e32 v1, 0
+; GFX908-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-ISEL-LABEL: global_load_saddr_i8_offset_or_i64_imm_offset_16:
+; GFX90A-ISEL:       ; %bb.0:
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-ISEL-NEXT:    v_or_b32_e32 v0, 16, v0
+; GFX90A-ISEL-NEXT:    v_mov_b32_e32 v1, 0
+; GFX90A-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_or_i64_imm_offset_16:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0:
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    v_or_b32_e32 v0, 16, v0
+; GFX9-4-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v1, 0
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-ISEL-LABEL: global_load_saddr_i8_offset_or_i64_imm_offset_16:
+; GFX942-ISEL:       ; %bb.0:
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    v_or_b32_e32 v0, 16, v0
+; GFX942-ISEL-NEXT:    v_mov_b32_e32 v1, 0
+; GFX942-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-ISEL-LABEL: global_load_saddr_i8_offset_or_i64_imm_offset_16:
+; GFX950-ISEL:       ; %bb.0:
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-ISEL-NEXT:    v_or_b32_e32 v0, 16, v0
+; GFX950-ISEL-NEXT:    v_mov_b32_e32 v1, 0
+; GFX950-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_or_i64_imm_offset_16:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0:
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v1, 0
+; GFX10-1-GENERIC-ISEL-NEXT:    v_or_b32_e32 v0, 16, v0
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: global_load_saddr_i8_offset_or_i64_imm_offset_16:
+; GFX1012-ISEL:       ; %bb.0:
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    v_mov_b32_e32 v1, 0
+; GFX1012-ISEL-NEXT:    v_or_b32_e32 v0, 16, v0
+; GFX1012-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_or_i64_imm_offset_16:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0:
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v1, 0
+; GFX10-3-GENERIC-ISEL-NEXT:    v_or_b32_e32 v0, 16, v0
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_or_i64_imm_offset_16:
+; GFX11-GENERIC-ISEL:       ; %bb.0:
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v1, 0
+; GFX11-GENERIC-ISEL-NEXT:    v_or_b32_e32 v0, 16, v0
+; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: global_load_saddr_i8_offset_or_i64_imm_offset_16:
+; GFX1250-ISEL:       ; %bb.0:
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    v_dual_mov_b32 v1, 0 :: v_dual_bitop2_b32 v0, 16, v0 bitop3:0x54
+; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_or_i64_imm_offset_16:
+; GFX12-GENERIC-ISEL:       ; %bb.0:
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v1, 0
+; GFX12-GENERIC-ISEL-NEXT:    v_or_b32_e32 v0, 16, v0
+; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SE
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+  %zext.idx = zext i32 %idx to i64
+  %or = or i64 %zext.idx, 16
+  %addr = inttoptr i64 %or to ptr addrspace(1)
+  %load = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %addr, metadata !1)
+  %cast.load = bitcast <4 x i32> %load to <4 x float>
+  ret <4 x float> %cast.load
+}
+
+define <4 x float> @global_load_saddr_i8_offset_or_i64_imm_offset_4160(ptr addrspace(6) inreg %sbase, i32 %idx) {
+; GFX9-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_or_i64_imm_offset_4160:
+; GFX9-GENERIC-SDAG:       ; %bb.0:
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    v_or_b32_e32 v0, 0x1040, v0
+; GFX9-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v1, 0
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-SDAG-LABEL: global_load_saddr_i8_offset_or_i64_imm_offset_4160:
+; GFX906-SDAG:       ; %bb.0:
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-SDAG-NEXT:    v_or_b32_e32 v0, 0x1040, v0
+; GFX906-SDAG-NEXT:    v_mov_b32_e32 v1, 0
+; GFX906-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-SDAG-LABEL: global_load_saddr_i8_offset_or_i64_imm_offset_4160:
+; GFX908-SDAG:       ; %bb.0:
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-SDAG-NEXT:    v_or_b32_e32 v0, 0x1040, v0
+; GFX908-SDAG-NEXT:    v_mov_b32_e32 v1, 0
+; GFX908-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-SDAG-LABEL: global_load_saddr_i8_offset_or_i64_imm_offset_4160:
+; GFX90A-SDAG:       ; %bb.0:
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-SDAG-NEXT:    v_or_b32_e32 v0, 0x1040, v0
+; GFX90A-SDAG-NEXT:    v_mov_b32_e32 v1, 0
+; GFX90A-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_or_i64_imm_offset_4160:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0:
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    v_or_b32_e32 v0, 0x1040, v0
+; GFX9-4-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v1, 0
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc1
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-SDAG-LABEL: global_load_saddr_i8_offset_or_i64_imm_offset_4160:
+; GFX942-SDAG:       ; %bb.0:
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    v_or_b32_e32 v0, 0x1040, v0
+; GFX942-SDAG-NEXT:    v_mov_b32_e32 v1, 0
+; GFX942-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc1
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-SDAG-LABEL: global_load_saddr_i8_offset_or_i64_imm_offset_4160:
+; GFX950-SDAG:       ; %bb.0:
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-SDAG-NEXT:    v_or_b32_e32 v0, 0x1040, v0
+; GFX950-SDAG-NEXT:    v_mov_b32_e32 v1, 0
+; GFX950-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc1
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_or_i64_imm_offset_4160:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0:
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v1, 0
+; GFX10-1-GENERIC-SDAG-NEXT:    v_or_b32_e32 v0, 0x1040, v0
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: global_load_saddr_i8_offset_or_i64_imm_offset_4160:
+; GFX1012-SDAG:       ; %bb.0:
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    v_mov_b32_e32 v1, 0
+; GFX1012-SDAG-NEXT:    v_or_b32_e32 v0, 0x1040, v0
+; GFX1012-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_or_i64_imm_offset_4160:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0:
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v1, 0
+; GFX10-3-GENERIC-SDAG-NEXT:    v_or_b32_e32 v0, 0x1040, v0
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_or_i64_imm_offset_4160:
+; GFX11-GENERIC-SDAG:       ; %bb.0:
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v1, 0
+; GFX11-GENERIC-SDAG-NEXT:    v_or_b32_e32 v0, 0x1040, v0
+; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: global_load_saddr_i8_offset_or_i64_imm_offset_4160:
+; GFX1250-SDAG:       ; %bb.0:
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    v_mov_b32_e32 v1, 0
+; GFX1250-SDAG-NEXT:    v_or_b32_e32 v0, 0x1040, v0
+; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_DEV
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-SDAG-LABEL: global_load_saddr_i8_offset_or_i64_imm_offset_4160:
+; GFX12-GENERIC-SDAG:       ; %bb.0:
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v1, 0
+; GFX12-GENERIC-SDAG-NEXT:    v_or_b32_e32 v0, 0x1040, v0
+; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_DEV
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_or_i64_imm_offset_4160:
+; GFX9-GENERIC-ISEL:       ; %bb.0:
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    v_or_b32_e32 v0, 0x1040, v0
+; GFX9-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v1, 0
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-ISEL-LABEL: global_load_saddr_i8_offset_or_i64_imm_offset_4160:
+; GFX906-ISEL:       ; %bb.0:
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-ISEL-NEXT:    v_or_b32_e32 v0, 0x1040, v0
+; GFX906-ISEL-NEXT:    v_mov_b32_e32 v1, 0
+; GFX906-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-ISEL-LABEL: global_load_saddr_i8_offset_or_i64_imm_offset_4160:
+; GFX908-ISEL:       ; %bb.0:
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-ISEL-NEXT:    v_or_b32_e32 v0, 0x1040, v0
+; GFX908-ISEL-NEXT:    v_mov_b32_e32 v1, 0
+; GFX908-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-ISEL-LABEL: global_load_saddr_i8_offset_or_i64_imm_offset_4160:
+; GFX90A-ISEL:       ; %bb.0:
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-ISEL-NEXT:    v_or_b32_e32 v0, 0x1040, v0
+; GFX90A-ISEL-NEXT:    v_mov_b32_e32 v1, 0
+; GFX90A-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_or_i64_imm_offset_4160:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0:
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    v_or_b32_e32 v0, 0x1040, v0
+; GFX9-4-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v1, 0
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc1
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-ISEL-LABEL: global_load_saddr_i8_offset_or_i64_imm_offset_4160:
+; GFX942-ISEL:       ; %bb.0:
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    v_or_b32_e32 v0, 0x1040, v0
+; GFX942-ISEL-NEXT:    v_mov_b32_e32 v1, 0
+; GFX942-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc1
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-ISEL-LABEL: global_load_saddr_i8_offset_or_i64_imm_offset_4160:
+; GFX950-ISEL:       ; %bb.0:
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-ISEL-NEXT:    v_or_b32_e32 v0, 0x1040, v0
+; GFX950-ISEL-NEXT:    v_mov_b32_e32 v1, 0
+; GFX950-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc1
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_or_i64_imm_offset_4160:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0:
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v1, 0
+; GFX10-1-GENERIC-ISEL-NEXT:    v_or_b32_e32 v0, 0x1040, v0
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: global_load_saddr_i8_offset_or_i64_imm_offset_4160:
+; GFX1012-ISEL:       ; %bb.0:
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    v_mov_b32_e32 v1, 0
+; GFX1012-ISEL-NEXT:    v_or_b32_e32 v0, 0x1040, v0
+; GFX1012-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_or_i64_imm_offset_4160:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0:
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v1, 0
+; GFX10-3-GENERIC-ISEL-NEXT:    v_or_b32_e32 v0, 0x1040, v0
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_or_i64_imm_offset_4160:
+; GFX11-GENERIC-ISEL:       ; %bb.0:
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v1, 0
+; GFX11-GENERIC-ISEL-NEXT:    v_or_b32_e32 v0, 0x1040, v0
+; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: global_load_saddr_i8_offset_or_i64_imm_offset_4160:
+; GFX1250-ISEL:       ; %bb.0:
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    v_mov_b32_e32 v1, 0
+; GFX1250-ISEL-NEXT:    v_or_b32_e32 v0, 0x1040, v0
+; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_DEV
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-ISEL-LABEL: global_load_saddr_i8_offset_or_i64_imm_offset_4160:
+; GFX12-GENERIC-ISEL:       ; %bb.0:
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v1, 0
+; GFX12-GENERIC-ISEL-NEXT:    v_or_b32_e32 v0, 0x1040, v0
+; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_DEV
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+  %zext.idx = zext i32 %idx to i64
+  %or = or i64 %zext.idx, 4160
+  %addr = inttoptr i64 %or to ptr addrspace(1)
+  %load = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %addr, metadata !2)
+  %cast.load = bitcast <4 x i32> %load to <4 x float>
+  ret <4 x float> %cast.load
+}
+
+;;------------------------------------------------------------------------------
+;; Full 64-bit scalar add.
+;;------------------------------------------------------------------------------
+define <4 x float> @global_saddr_64bit_lsr_iv(ptr addrspace(1) inreg %arg) {
+; GFX9-GENERIC-SDAG-LABEL: global_saddr_64bit_lsr_iv:
+; GFX9-GENERIC-SDAG:       ; %bb.0: ; %bb
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_mov_b32 s4, -1
+; GFX9-GENERIC-SDAG-NEXT:  .LBB114_1: ; %bb3
+; GFX9-GENERIC-SDAG-NEXT:    ; =>This Inner Loop Header: Depth=1
+; GFX9-GENERIC-SDAG-NEXT:    s_add_i32 s4, s4, 1
+; GFX9-GENERIC-SDAG-NEXT:    s_cmpk_eq_i32 s4, 0xff
+; GFX9-GENERIC-SDAG-NEXT:    s_cbranch_scc0 .LBB114_1
+; GFX9-GENERIC-SDAG-NEXT:  ; %bb.2: ; %bb2
+; GFX9-GENERIC-SDAG-NEXT:    s_mov_b32 s5, 0
+; GFX9-GENERIC-SDAG-NEXT:    s_lshl_b64 s[4:5], s[4:5], 2
+; GFX9-GENERIC-SDAG-NEXT:    s_add_u32 s4, s16, s4
+; GFX9-GENERIC-SDAG-NEXT:    s_addc_u32 s5, s17, s5
+; GFX9-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[4:5] glc
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-SDAG-LABEL: global_saddr_64bit_lsr_iv:
+; GFX906-SDAG:       ; %bb.0: ; %bb
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-SDAG-NEXT:    s_mov_b32 s4, -1
+; GFX906-SDAG-NEXT:  .LBB114_1: ; %bb3
+; GFX906-SDAG-NEXT:    ; =>This Inner Loop Header: Depth=1
+; GFX906-SDAG-NEXT:    s_add_i32 s4, s4, 1
+; GFX906-SDAG-NEXT:    s_cmpk_eq_i32 s4, 0xff
+; GFX906-SDAG-NEXT:    s_cbranch_scc0 .LBB114_1
+; GFX906-SDAG-NEXT:  ; %bb.2: ; %bb2
+; GFX906-SDAG-NEXT:    s_mov_b32 s5, 0
+; GFX906-SDAG-NEXT:    s_lshl_b64 s[4:5], s[4:5], 2
+; GFX906-SDAG-NEXT:    s_add_u32 s4, s16, s4
+; GFX906-SDAG-NEXT:    s_addc_u32 s5, s17, s5
+; GFX906-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX906-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[4:5] glc
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-SDAG-LABEL: global_saddr_64bit_lsr_iv:
+; GFX908-SDAG:       ; %bb.0: ; %bb
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-SDAG-NEXT:    s_mov_b32 s4, -1
+; GFX908-SDAG-NEXT:  .LBB114_1: ; %bb3
+; GFX908-SDAG-NEXT:    ; =>This Inner Loop Header: Depth=1
+; GFX908-SDAG-NEXT:    s_add_i32 s4, s4, 1
+; GFX908-SDAG-NEXT:    s_cmpk_eq_i32 s4, 0xff
+; GFX908-SDAG-NEXT:    s_cbranch_scc0 .LBB114_1
+; GFX908-SDAG-NEXT:  ; %bb.2: ; %bb2
+; GFX908-SDAG-NEXT:    s_mov_b32 s5, 0
+; GFX908-SDAG-NEXT:    s_lshl_b64 s[4:5], s[4:5], 2
+; GFX908-SDAG-NEXT:    s_add_u32 s4, s16, s4
+; GFX908-SDAG-NEXT:    s_addc_u32 s5, s17, s5
+; GFX908-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX908-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[4:5] glc
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-SDAG-LABEL: global_saddr_64bit_lsr_iv:
+; GFX90A-SDAG:       ; %bb.0: ; %bb
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-SDAG-NEXT:    s_mov_b32 s4, -1
+; GFX90A-SDAG-NEXT:  .LBB114_1: ; %bb3
+; GFX90A-SDAG-NEXT:    ; =>This Inner Loop Header: Depth=1
+; GFX90A-SDAG-NEXT:    s_add_i32 s4, s4, 1
+; GFX90A-SDAG-NEXT:    s_cmpk_eq_i32 s4, 0xff
+; GFX90A-SDAG-NEXT:    s_cbranch_scc0 .LBB114_1
+; GFX90A-SDAG-NEXT:  ; %bb.2: ; %bb2
+; GFX90A-SDAG-NEXT:    s_mov_b32 s5, 0
+; GFX90A-SDAG-NEXT:    s_lshl_b64 s[4:5], s[4:5], 2
+; GFX90A-SDAG-NEXT:    s_add_u32 s4, s16, s4
+; GFX90A-SDAG-NEXT:    s_addc_u32 s5, s17, s5
+; GFX90A-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX90A-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[4:5] glc
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-SDAG-LABEL: global_saddr_64bit_lsr_iv:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0: ; %bb
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_mov_b32 s2, -1
+; GFX9-4-GENERIC-SDAG-NEXT:  .LBB114_1: ; %bb3
+; GFX9-4-GENERIC-SDAG-NEXT:    ; =>This Inner Loop Header: Depth=1
+; GFX9-4-GENERIC-SDAG-NEXT:    s_add_i32 s2, s2, 1
+; GFX9-4-GENERIC-SDAG-NEXT:    s_cmpk_eq_i32 s2, 0xff
+; GFX9-4-GENERIC-SDAG-NEXT:    s_cbranch_scc0 .LBB114_1
+; GFX9-4-GENERIC-SDAG-NEXT:  ; %bb.2: ; %bb2
+; GFX9-4-GENERIC-SDAG-NEXT:    s_mov_b32 s3, 0
+; GFX9-4-GENERIC-SDAG-NEXT:    s_lshl_b64 s[2:3], s[2:3], 2
+; GFX9-4-GENERIC-SDAG-NEXT:    s_add_u32 s0, s0, s2
+; GFX9-4-GENERIC-SDAG-NEXT:    s_addc_u32 s1, s1, s3
+; GFX9-4-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] sc0 sc1
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-SDAG-LABEL: global_saddr_64bit_lsr_iv:
+; GFX942-SDAG:       ; %bb.0: ; %bb
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    s_mov_b32 s2, -1
+; GFX942-SDAG-NEXT:  .LBB114_1: ; %bb3
+; GFX942-SDAG-NEXT:    ; =>This Inner Loop Header: Depth=1
+; GFX942-SDAG-NEXT:    s_add_i32 s2, s2, 1
+; GFX942-SDAG-NEXT:    s_cmpk_eq_i32 s2, 0xff
+; GFX942-SDAG-NEXT:    s_cbranch_scc0 .LBB114_1
+; GFX942-SDAG-NEXT:  ; %bb.2: ; %bb2
+; GFX942-SDAG-NEXT:    s_mov_b32 s3, 0
+; GFX942-SDAG-NEXT:    s_lshl_b64 s[2:3], s[2:3], 2
+; GFX942-SDAG-NEXT:    s_add_u32 s0, s0, s2
+; GFX942-SDAG-NEXT:    s_addc_u32 s1, s1, s3
+; GFX942-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX942-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] sc0 sc1
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-SDAG-LABEL: global_saddr_64bit_lsr_iv:
+; GFX950-SDAG:       ; %bb.0: ; %bb
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-SDAG-NEXT:    s_mov_b32 s2, -1
+; GFX950-SDAG-NEXT:  .LBB114_1: ; %bb3
+; GFX950-SDAG-NEXT:    ; =>This Inner Loop Header: Depth=1
+; GFX950-SDAG-NEXT:    s_add_i32 s2, s2, 1
+; GFX950-SDAG-NEXT:    s_cmpk_eq_i32 s2, 0xff
+; GFX950-SDAG-NEXT:    s_cbranch_scc0 .LBB114_1
+; GFX950-SDAG-NEXT:  ; %bb.2: ; %bb2
+; GFX950-SDAG-NEXT:    s_mov_b32 s3, 0
+; GFX950-SDAG-NEXT:    s_lshl_b64 s[2:3], s[2:3], 2
+; GFX950-SDAG-NEXT:    s_add_u32 s0, s0, s2
+; GFX950-SDAG-NEXT:    s_addc_u32 s1, s1, s3
+; GFX950-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX950-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1] sc0 sc1
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-SDAG-LABEL: global_saddr_64bit_lsr_iv:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0: ; %bb
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    s_mov_b32 s4, -1
+; GFX10-1-GENERIC-SDAG-NEXT:  .LBB114_1: ; %bb3
+; GFX10-1-GENERIC-SDAG-NEXT:    ; =>This Inner Loop Header: Depth=1
+; GFX10-1-GENERIC-SDAG-NEXT:    s_add_i32 s4, s4, 1
+; GFX10-1-GENERIC-SDAG-NEXT:    s_cmpk_eq_i32 s4, 0xff
+; GFX10-1-GENERIC-SDAG-NEXT:    s_cbranch_scc0 .LBB114_1
+; GFX10-1-GENERIC-SDAG-NEXT:  ; %bb.2: ; %bb2
+; GFX10-1-GENERIC-SDAG-NEXT:    s_mov_b32 s5, 0
+; GFX10-1-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX10-1-GENERIC-SDAG-NEXT:    s_lshl_b64 s[4:5], s[4:5], 2
+; GFX10-1-GENERIC-SDAG-NEXT:    s_add_u32 s4, s16, s4
+; GFX10-1-GENERIC-SDAG-NEXT:    s_addc_u32 s5, s17, s5
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[4:5] glc dlc
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: global_saddr_64bit_lsr_iv:
+; GFX1012-SDAG:       ; %bb.0: ; %bb
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    s_mov_b32 s4, -1
+; GFX1012-SDAG-NEXT:  .LBB114_1: ; %bb3
+; GFX1012-SDAG-NEXT:    ; =>This Inner Loop Header: Depth=1
+; GFX1012-SDAG-NEXT:    s_add_i32 s4, s4, 1
+; GFX1012-SDAG-NEXT:    s_cmpk_eq_i32 s4, 0xff
+; GFX1012-SDAG-NEXT:    s_cbranch_scc0 .LBB114_1
+; GFX1012-SDAG-NEXT:  ; %bb.2: ; %bb2
+; GFX1012-SDAG-NEXT:    s_mov_b32 s5, 0
+; GFX1012-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX1012-SDAG-NEXT:    s_lshl_b64 s[4:5], s[4:5], 2
+; GFX1012-SDAG-NEXT:    s_add_u32 s4, s16, s4
+; GFX1012-SDAG-NEXT:    s_addc_u32 s5, s17, s5
+; GFX1012-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[4:5] glc dlc
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-SDAG-LABEL: global_saddr_64bit_lsr_iv:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0: ; %bb
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    s_mov_b32 s4, -1
+; GFX10-3-GENERIC-SDAG-NEXT:  .LBB114_1: ; %bb3
+; GFX10-3-GENERIC-SDAG-NEXT:    ; =>This Inner Loop Header: Depth=1
+; GFX10-3-GENERIC-SDAG-NEXT:    s_add_i32 s4, s4, 1
+; GFX10-3-GENERIC-SDAG-NEXT:    s_cmpk_eq_i32 s4, 0xff
+; GFX10-3-GENERIC-SDAG-NEXT:    s_cbranch_scc0 .LBB114_1
+; GFX10-3-GENERIC-SDAG-NEXT:  ; %bb.2: ; %bb2
+; GFX10-3-GENERIC-SDAG-NEXT:    s_mov_b32 s5, 0
+; GFX10-3-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX10-3-GENERIC-SDAG-NEXT:    s_lshl_b64 s[4:5], s[4:5], 2
+; GFX10-3-GENERIC-SDAG-NEXT:    s_add_u32 s4, s16, s4
+; GFX10-3-GENERIC-SDAG-NEXT:    s_addc_u32 s5, s17, s5
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[4:5] glc dlc
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-SDAG-LABEL: global_saddr_64bit_lsr_iv:
+; GFX11-GENERIC-SDAG:       ; %bb.0: ; %bb
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    s_mov_b32 s2, -1
+; GFX11-GENERIC-SDAG-NEXT:  .LBB114_1: ; %bb3
+; GFX11-GENERIC-SDAG-NEXT:    ; =>This Inner Loop Header: Depth=1
+; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
+; GFX11-GENERIC-SDAG-NEXT:    s_add_i32 s2, s2, 1
+; GFX11-GENERIC-SDAG-NEXT:    s_cmpk_eq_i32 s2, 0xff
+; GFX11-GENERIC-SDAG-NEXT:    s_cbranch_scc0 .LBB114_1
+; GFX11-GENERIC-SDAG-NEXT:  ; %bb.2: ; %bb2
+; GFX11-GENERIC-SDAG-NEXT:    s_mov_b32 s3, 0
+; GFX11-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX11-GENERIC-SDAG-NEXT:    s_lshl_b64 s[2:3], s[2:3], 2
+; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX11-GENERIC-SDAG-NEXT:    s_add_u32 s0, s0, s2
+; GFX11-GENERIC-SDAG-NEXT:    s_addc_u32 s1, s1, s3
+; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] glc
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: global_saddr_64bit_lsr_iv:
+; GFX1250-SDAG:       ; %bb.0: ; %bb
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    s_mov_b32 s2, -1
+; GFX1250-SDAG-NEXT:  .LBB114_1: ; %bb3
+; GFX1250-SDAG-NEXT:    ; =>This Inner Loop Header: Depth=1
+; GFX1250-SDAG-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
+; GFX1250-SDAG-NEXT:    s_add_co_i32 s2, s2, 1
+; GFX1250-SDAG-NEXT:    s_cmp_eq_u32 s2, 0xff
+; GFX1250-SDAG-NEXT:    s_cbranch_scc0 .LBB114_1
+; GFX1250-SDAG-NEXT:  ; %bb.2: ; %bb2
+; GFX1250-SDAG-NEXT:    s_mov_b32 s3, 0
+; GFX1250-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX1250-SDAG-NEXT:    s_lshl_b64 s[2:3], s[2:3], 2
+; GFX1250-SDAG-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX1250-SDAG-NEXT:    s_add_nc_u64 s[0:1], s[0:1], s[2:3]
+; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] scope:SCOPE_SYS
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-SDAG-LABEL: global_saddr_64bit_lsr_iv:
+; GFX12-GENERIC-SDAG:       ; %bb.0: ; %bb
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_mov_b32 s2, -1
+; GFX12-GENERIC-SDAG-NEXT:  .LBB114_1: ; %bb3
+; GFX12-GENERIC-SDAG-NEXT:    ; =>This Inner Loop Header: Depth=1
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_alu depctr_sa_sdst(0)
+; GFX12-GENERIC-SDAG-NEXT:    s_add_co_i32 s2, s2, 1
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_alu depctr_sa_sdst(0)
+; GFX12-GENERIC-SDAG-NEXT:    s_cmp_eq_u32 s2, 0xff
+; GFX12-GENERIC-SDAG-NEXT:    s_cbranch_scc0 .LBB114_1
+; GFX12-GENERIC-SDAG-NEXT:  ; %bb.2: ; %bb2
+; GFX12-GENERIC-SDAG-NEXT:    s_mov_b32 s3, 0
+; GFX12-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_alu depctr_sa_sdst(0)
+; GFX12-GENERIC-SDAG-NEXT:    s_lshl_b64 s[2:3], s[2:3], 2
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_alu depctr_sa_sdst(0)
+; GFX12-GENERIC-SDAG-NEXT:    s_add_nc_u64 s[0:1], s[0:1], s[2:3]
+; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] scope:SCOPE_SYS
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_alu depctr_sa_sdst(0)
+; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-GENERIC-ISEL-LABEL: global_saddr_64bit_lsr_iv:
+; GFX9-GENERIC-ISEL:       ; %bb.0: ; %bb
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_mov_b32 s4, -1
+; GFX9-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v1, 0xff
+; GFX9-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, s4
+; GFX9-GENERIC-ISEL-NEXT:  .LBB114_1: ; %bb3
+; GFX9-GENERIC-ISEL-NEXT:    ; =>This Inner Loop Header: Depth=1
+; GFX9-GENERIC-ISEL-NEXT:    v_add_u32_e32 v0, 1, v0
+; GFX9-GENERIC-ISEL-NEXT:    v_cmp_eq_u32_e32 vcc, v0, v1
+; GFX9-GENERIC-ISEL-NEXT:    s_cbranch_vccz .LBB114_1
+; GFX9-GENERIC-ISEL-NEXT:  ; %bb.2: ; %bb2
+; GFX9-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v1, 0
+; GFX9-GENERIC-ISEL-NEXT:    v_lshlrev_b64 v[0:1], 2, v[0:1]
+; GFX9-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v2, s16
+; GFX9-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v3, s17
+; GFX9-GENERIC-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v2, v0
+; GFX9-GENERIC-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, v3, v1, vcc
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-ISEL-LABEL: global_saddr_64bit_lsr_iv:
+; GFX906-ISEL:       ; %bb.0: ; %bb
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-ISEL-NEXT:    s_mov_b32 s4, -1
+; GFX906-ISEL-NEXT:    v_mov_b32_e32 v1, 0xff
+; GFX906-ISEL-NEXT:    v_mov_b32_e32 v0, s4
+; GFX906-ISEL-NEXT:  .LBB114_1: ; %bb3
+; GFX906-ISEL-NEXT:    ; =>This Inner Loop Header: Depth=1
+; GFX906-ISEL-NEXT:    v_add_u32_e32 v0, 1, v0
+; GFX906-ISEL-NEXT:    v_cmp_eq_u32_e32 vcc, v0, v1
+; GFX906-ISEL-NEXT:    s_cbranch_vccz .LBB114_1
+; GFX906-ISEL-NEXT:  ; %bb.2: ; %bb2
+; GFX906-ISEL-NEXT:    v_mov_b32_e32 v1, 0
+; GFX906-ISEL-NEXT:    v_lshlrev_b64 v[0:1], 2, v[0:1]
+; GFX906-ISEL-NEXT:    v_mov_b32_e32 v2, s16
+; GFX906-ISEL-NEXT:    v_mov_b32_e32 v3, s17
+; GFX906-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v2, v0
+; GFX906-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, v3, v1, vcc
+; GFX906-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-ISEL-LABEL: global_saddr_64bit_lsr_iv:
+; GFX908-ISEL:       ; %bb.0: ; %bb
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-ISEL-NEXT:    s_mov_b32 s4, -1
+; GFX908-ISEL-NEXT:    v_mov_b32_e32 v1, 0xff
+; GFX908-ISEL-NEXT:    v_mov_b32_e32 v0, s4
+; GFX908-ISEL-NEXT:  .LBB114_1: ; %bb3
+; GFX908-ISEL-NEXT:    ; =>This Inner Loop Header: Depth=1
+; GFX908-ISEL-NEXT:    v_add_u32_e32 v0, 1, v0
+; GFX908-ISEL-NEXT:    v_cmp_eq_u32_e32 vcc, v0, v1
+; GFX908-ISEL-NEXT:    s_cbranch_vccz .LBB114_1
+; GFX908-ISEL-NEXT:  ; %bb.2: ; %bb2
+; GFX908-ISEL-NEXT:    v_mov_b32_e32 v1, 0
+; GFX908-ISEL-NEXT:    v_lshlrev_b64 v[0:1], 2, v[0:1]
+; GFX908-ISEL-NEXT:    v_mov_b32_e32 v2, s16
+; GFX908-ISEL-NEXT:    v_mov_b32_e32 v3, s17
+; GFX908-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v2, v0
+; GFX908-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, v3, v1, vcc
+; GFX908-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-ISEL-LABEL: global_saddr_64bit_lsr_iv:
+; GFX90A-ISEL:       ; %bb.0: ; %bb
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-ISEL-NEXT:    s_mov_b32 s4, -1
+; GFX90A-ISEL-NEXT:    v_mov_b32_e32 v1, 0xff
+; GFX90A-ISEL-NEXT:    v_mov_b32_e32 v0, s4
+; GFX90A-ISEL-NEXT:  .LBB114_1: ; %bb3
+; GFX90A-ISEL-NEXT:    ; =>This Inner Loop Header: Depth=1
+; GFX90A-ISEL-NEXT:    v_add_u32_e32 v0, 1, v0
+; GFX90A-ISEL-NEXT:    v_cmp_eq_u32_e32 vcc, v0, v1
+; GFX90A-ISEL-NEXT:    s_cbranch_vccz .LBB114_1
+; GFX90A-ISEL-NEXT:  ; %bb.2: ; %bb2
+; GFX90A-ISEL-NEXT:    v_mov_b32_e32 v1, 0
+; GFX90A-ISEL-NEXT:    v_lshlrev_b64 v[0:1], 2, v[0:1]
+; GFX90A-ISEL-NEXT:    v_pk_mov_b32 v[2:3], s[16:17], s[16:17] op_sel:[0,1]
+; GFX90A-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v2, v0
+; GFX90A-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, v3, v1, vcc
+; GFX90A-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-ISEL-LABEL: global_saddr_64bit_lsr_iv:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0: ; %bb
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_mov_b32 s2, -1
+; GFX9-4-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v1, 0xff
+; GFX9-4-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, s2
+; GFX9-4-GENERIC-ISEL-NEXT:  .LBB114_1: ; %bb3
+; GFX9-4-GENERIC-ISEL-NEXT:    ; =>This Inner Loop Header: Depth=1
+; GFX9-4-GENERIC-ISEL-NEXT:    v_add_u32_e32 v0, 1, v0
+; GFX9-4-GENERIC-ISEL-NEXT:    v_cmp_eq_u32_e32 vcc, v0, v1
+; GFX9-4-GENERIC-ISEL-NEXT:    s_cbranch_vccz .LBB114_1
+; GFX9-4-GENERIC-ISEL-NEXT:  ; %bb.2: ; %bb2
+; GFX9-4-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v1, 0
+; GFX9-4-GENERIC-ISEL-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 2, s[0:1]
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0 sc1
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-ISEL-LABEL: global_saddr_64bit_lsr_iv:
+; GFX942-ISEL:       ; %bb.0: ; %bb
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    s_mov_b32 s2, -1
+; GFX942-ISEL-NEXT:    v_mov_b32_e32 v1, 0xff
+; GFX942-ISEL-NEXT:    v_mov_b32_e32 v0, s2
+; GFX942-ISEL-NEXT:  .LBB114_1: ; %bb3
+; GFX942-ISEL-NEXT:    ; =>This Inner Loop Header: Depth=1
+; GFX942-ISEL-NEXT:    v_add_u32_e32 v0, 1, v0
+; GFX942-ISEL-NEXT:    v_cmp_eq_u32_e32 vcc, v0, v1
+; GFX942-ISEL-NEXT:    s_cbranch_vccz .LBB114_1
+; GFX942-ISEL-NEXT:  ; %bb.2: ; %bb2
+; GFX942-ISEL-NEXT:    v_mov_b32_e32 v1, 0
+; GFX942-ISEL-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 2, s[0:1]
+; GFX942-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0 sc1
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-ISEL-LABEL: global_saddr_64bit_lsr_iv:
+; GFX950-ISEL:       ; %bb.0: ; %bb
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-ISEL-NEXT:    s_mov_b32 s2, -1
+; GFX950-ISEL-NEXT:    v_mov_b32_e32 v1, 0xff
+; GFX950-ISEL-NEXT:    v_mov_b32_e32 v0, s2
+; GFX950-ISEL-NEXT:  .LBB114_1: ; %bb3
+; GFX950-ISEL-NEXT:    ; =>This Inner Loop Header: Depth=1
+; GFX950-ISEL-NEXT:    v_add_u32_e32 v0, 1, v0
+; GFX950-ISEL-NEXT:    v_cmp_eq_u32_e32 vcc, v0, v1
+; GFX950-ISEL-NEXT:    s_cbranch_vccz .LBB114_1
+; GFX950-ISEL-NEXT:  ; %bb.2: ; %bb2
+; GFX950-ISEL-NEXT:    v_mov_b32_e32 v1, 0
+; GFX950-ISEL-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 2, s[0:1]
+; GFX950-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off sc0 sc1
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-ISEL-LABEL: global_saddr_64bit_lsr_iv:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0: ; %bb
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_mov_b32 s4, -1
+; GFX10-1-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, s4
+; GFX10-1-GENERIC-ISEL-NEXT:  .LBB114_1: ; %bb3
+; GFX10-1-GENERIC-ISEL-NEXT:    ; =>This Inner Loop Header: Depth=1
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_nc_u32_e32 v0, 1, v0
+; GFX10-1-GENERIC-ISEL-NEXT:    v_cmp_eq_u32_e32 vcc_lo, 0xff, v0
+; GFX10-1-GENERIC-ISEL-NEXT:    s_cbranch_vccz .LBB114_1
+; GFX10-1-GENERIC-ISEL-NEXT:  ; %bb.2: ; %bb2
+; GFX10-1-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v1, 0
+; GFX10-1-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v2, s16
+; GFX10-1-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v3, s17
+; GFX10-1-GENERIC-ISEL-NEXT:    v_lshlrev_b64 v[0:1], 2, v[0:1]
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v2, v0
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, v3, v1, vcc_lo
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: global_saddr_64bit_lsr_iv:
+; GFX1012-ISEL:       ; %bb.0: ; %bb
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    s_mov_b32 s4, -1
+; GFX1012-ISEL-NEXT:    v_mov_b32_e32 v0, s4
+; GFX1012-ISEL-NEXT:  .LBB114_1: ; %bb3
+; GFX1012-ISEL-NEXT:    ; =>This Inner Loop Header: Depth=1
+; GFX1012-ISEL-NEXT:    v_add_nc_u32_e32 v0, 1, v0
+; GFX1012-ISEL-NEXT:    v_cmp_eq_u32_e32 vcc_lo, 0xff, v0
+; GFX1012-ISEL-NEXT:    s_cbranch_vccz .LBB114_1
+; GFX1012-ISEL-NEXT:  ; %bb.2: ; %bb2
+; GFX1012-ISEL-NEXT:    v_mov_b32_e32 v1, 0
+; GFX1012-ISEL-NEXT:    v_mov_b32_e32 v2, s16
+; GFX1012-ISEL-NEXT:    v_mov_b32_e32 v3, s17
+; GFX1012-ISEL-NEXT:    v_lshlrev_b64 v[0:1], 2, v[0:1]
+; GFX1012-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v2, v0
+; GFX1012-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, v3, v1, vcc_lo
+; GFX1012-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-ISEL-LABEL: global_saddr_64bit_lsr_iv:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0: ; %bb
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_mov_b32 s4, -1
+; GFX10-3-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, s4
+; GFX10-3-GENERIC-ISEL-NEXT:  .LBB114_1: ; %bb3
+; GFX10-3-GENERIC-ISEL-NEXT:    ; =>This Inner Loop Header: Depth=1
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_nc_u32_e32 v0, 1, v0
+; GFX10-3-GENERIC-ISEL-NEXT:    v_cmp_eq_u32_e32 vcc_lo, 0xff, v0
+; GFX10-3-GENERIC-ISEL-NEXT:    s_cbranch_vccz .LBB114_1
+; GFX10-3-GENERIC-ISEL-NEXT:  ; %bb.2: ; %bb2
+; GFX10-3-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v1, 0
+; GFX10-3-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v2, s16
+; GFX10-3-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v3, s17
+; GFX10-3-GENERIC-ISEL-NEXT:    v_lshlrev_b64 v[0:1], 2, v[0:1]
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v2, v0
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, v3, v1, vcc_lo
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off glc dlc
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-ISEL-LABEL: global_saddr_64bit_lsr_iv:
+; GFX11-GENERIC-ISEL:       ; %bb.0: ; %bb
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_mov_b32 s2, -1
+; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX11-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, s2
+; GFX11-GENERIC-ISEL-NEXT:  .LBB114_1: ; %bb3
+; GFX11-GENERIC-ISEL-NEXT:    ; =>This Inner Loop Header: Depth=1
+; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX11-GENERIC-ISEL-NEXT:    v_add_nc_u32_e32 v0, 1, v0
+; GFX11-GENERIC-ISEL-NEXT:    v_cmp_eq_u32_e32 vcc_lo, 0xff, v0
+; GFX11-GENERIC-ISEL-NEXT:    s_cbranch_vccz .LBB114_1
+; GFX11-GENERIC-ISEL-NEXT:  ; %bb.2: ; %bb2
+; GFX11-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v1, 0
+; GFX11-GENERIC-ISEL-NEXT:    v_dual_mov_b32 v3, s1 :: v_dual_mov_b32 v2, s0
+; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX11-GENERIC-ISEL-NEXT:    v_lshlrev_b64 v[0:1], 2, v[0:1]
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v2, v0
+; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, v3, v1, vcc_lo
+; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: global_saddr_64bit_lsr_iv:
+; GFX1250-ISEL:       ; %bb.0: ; %bb
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    s_mov_b32 s2, -1
+; GFX1250-ISEL-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX1250-ISEL-NEXT:    v_mov_b32_e32 v0, s2
+; GFX1250-ISEL-NEXT:  .LBB114_1: ; %bb3
+; GFX1250-ISEL-NEXT:    ; =>This Inner Loop Header: Depth=1
+; GFX1250-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX1250-ISEL-NEXT:    v_add_nc_u32_e32 v0, 1, v0
+; GFX1250-ISEL-NEXT:    v_cmp_eq_u32_e32 vcc_lo, 0xff, v0
+; GFX1250-ISEL-NEXT:    s_cbranch_vccz .LBB114_1
+; GFX1250-ISEL-NEXT:  ; %bb.2: ; %bb2
+; GFX1250-ISEL-NEXT:    v_mov_b32_e32 v1, 0
+; GFX1250-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX1250-ISEL-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 2, s[0:1]
+; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SYS
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-ISEL-LABEL: global_saddr_64bit_lsr_iv:
+; GFX12-GENERIC-ISEL:       ; %bb.0: ; %bb
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_mov_b32 s2, -1
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_alu depctr_sa_sdst(0)
+; GFX12-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, s2
+; GFX12-GENERIC-ISEL-NEXT:  .LBB114_1: ; %bb3
+; GFX12-GENERIC-ISEL-NEXT:    ; =>This Inner Loop Header: Depth=1
+; GFX12-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX12-GENERIC-ISEL-NEXT:    v_add_nc_u32_e32 v0, 1, v0
+; GFX12-GENERIC-ISEL-NEXT:    v_cmp_eq_u32_e32 vcc_lo, 0xff, v0
+; GFX12-GENERIC-ISEL-NEXT:    s_cbranch_vccz .LBB114_1
+; GFX12-GENERIC-ISEL-NEXT:  ; %bb.2: ; %bb2
+; GFX12-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v1, 0
+; GFX12-GENERIC-ISEL-NEXT:    v_dual_mov_b32 v3, s1 :: v_dual_mov_b32 v2, s0
+; GFX12-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX12-GENERIC-ISEL-NEXT:    v_lshlrev_b64_e32 v[0:1], 2, v[0:1]
+; GFX12-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v2, v0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_alu depctr_va_vcc(0)
+; GFX12-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_2)
+; GFX12-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, v3, v1, vcc_lo
+; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SYS
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+bb:
+  br label %bb3
+
+bb2:                                              ; preds = %bb3
+  ret <4 x float> %i6
+
+bb3:                                              ; preds = %bb3, %bb
+  %i = phi i32 [ 0, %bb ], [ %i8, %bb3 ]
+  %i4 = zext i32 %i to i64
+  %i5 = getelementptr inbounds float, ptr addrspace(1) %arg, i64 %i4
+  %load = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %i5, metadata !3)
+  %i6 = bitcast <4 x i32> %load to <4 x float>
+  %i8 = add nuw nsw i32 %i, 1
+  %i9 = icmp eq i32 %i8, 256
+  br i1 %i9, label %bb2, label %bb3
+}
+
+;; Make sure we only have a single zero vaddr initialization.
+
+define <4 x float> @global_saddr_64bit_lsr_iv_multiload(ptr addrspace(1) inreg %arg, ptr addrspace(1) inreg %arg.1, i32 %x) {
+; GFX9-GENERIC-SDAG-LABEL: global_saddr_64bit_lsr_iv_multiload:
+; GFX9-GENERIC-SDAG:       ; %bb.0: ; %bb
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_mov_b32 s4, -1
+; GFX9-GENERIC-SDAG-NEXT:  .LBB115_1: ; %bb5
+; GFX9-GENERIC-SDAG-NEXT:    ; =>This Inner Loop Header: Depth=1
+; GFX9-GENERIC-SDAG-NEXT:    s_add_i32 s4, s4, 1
+; GFX9-GENERIC-SDAG-NEXT:    s_cmpk_eq_i32 s4, 0xff
+; GFX9-GENERIC-SDAG-NEXT:    s_cbranch_scc0 .LBB115_1
+; GFX9-GENERIC-SDAG-NEXT:  ; %bb.2: ; %bb2
+; GFX9-GENERIC-SDAG-NEXT:    s_mov_b32 s5, 0
+; GFX9-GENERIC-SDAG-NEXT:    s_lshl_b64 s[4:5], s[4:5], 2
+; GFX9-GENERIC-SDAG-NEXT:    s_add_u32 s4, s16, s4
+; GFX9-GENERIC-SDAG-NEXT:    s_addc_u32 s5, s17, s5
+; GFX9-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[4:5]
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-SDAG-LABEL: global_saddr_64bit_lsr_iv_multiload:
+; GFX906-SDAG:       ; %bb.0: ; %bb
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-SDAG-NEXT:    s_mov_b32 s4, -1
+; GFX906-SDAG-NEXT:  .LBB115_1: ; %bb5
+; GFX906-SDAG-NEXT:    ; =>This Inner Loop Header: Depth=1
+; GFX906-SDAG-NEXT:    s_add_i32 s4, s4, 1
+; GFX906-SDAG-NEXT:    s_cmpk_eq_i32 s4, 0xff
+; GFX906-SDAG-NEXT:    s_cbranch_scc0 .LBB115_1
+; GFX906-SDAG-NEXT:  ; %bb.2: ; %bb2
+; GFX906-SDAG-NEXT:    s_mov_b32 s5, 0
+; GFX906-SDAG-NEXT:    s_lshl_b64 s[4:5], s[4:5], 2
+; GFX906-SDAG-NEXT:    s_add_u32 s4, s16, s4
+; GFX906-SDAG-NEXT:    s_addc_u32 s5, s17, s5
+; GFX906-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX906-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[4:5]
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-SDAG-LABEL: global_saddr_64bit_lsr_iv_multiload:
+; GFX908-SDAG:       ; %bb.0: ; %bb
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-SDAG-NEXT:    s_mov_b32 s4, -1
+; GFX908-SDAG-NEXT:  .LBB115_1: ; %bb5
+; GFX908-SDAG-NEXT:    ; =>This Inner Loop Header: Depth=1
+; GFX908-SDAG-NEXT:    s_add_i32 s4, s4, 1
+; GFX908-SDAG-NEXT:    s_cmpk_eq_i32 s4, 0xff
+; GFX908-SDAG-NEXT:    s_cbranch_scc0 .LBB115_1
+; GFX908-SDAG-NEXT:  ; %bb.2: ; %bb2
+; GFX908-SDAG-NEXT:    s_mov_b32 s5, 0
+; GFX908-SDAG-NEXT:    s_lshl_b64 s[4:5], s[4:5], 2
+; GFX908-SDAG-NEXT:    s_add_u32 s4, s16, s4
+; GFX908-SDAG-NEXT:    s_addc_u32 s5, s17, s5
+; GFX908-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX908-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[4:5]
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-SDAG-LABEL: global_saddr_64bit_lsr_iv_multiload:
+; GFX90A-SDAG:       ; %bb.0: ; %bb
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-SDAG-NEXT:    s_mov_b32 s4, -1
+; GFX90A-SDAG-NEXT:  .LBB115_1: ; %bb5
+; GFX90A-SDAG-NEXT:    ; =>This Inner Loop Header: Depth=1
+; GFX90A-SDAG-NEXT:    s_add_i32 s4, s4, 1
+; GFX90A-SDAG-NEXT:    s_cmpk_eq_i32 s4, 0xff
+; GFX90A-SDAG-NEXT:    s_cbranch_scc0 .LBB115_1
+; GFX90A-SDAG-NEXT:  ; %bb.2: ; %bb2
+; GFX90A-SDAG-NEXT:    s_mov_b32 s5, 0
+; GFX90A-SDAG-NEXT:    s_lshl_b64 s[4:5], s[4:5], 2
+; GFX90A-SDAG-NEXT:    s_add_u32 s4, s16, s4
+; GFX90A-SDAG-NEXT:    s_addc_u32 s5, s17, s5
+; GFX90A-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX90A-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[4:5]
+; GFX90A-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-SDAG-LABEL: global_saddr_64bit_lsr_iv_multiload:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0: ; %bb
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_mov_b32 s2, -1
+; GFX9-4-GENERIC-SDAG-NEXT:  .LBB115_1: ; %bb5
+; GFX9-4-GENERIC-SDAG-NEXT:    ; =>This Inner Loop Header: Depth=1
+; GFX9-4-GENERIC-SDAG-NEXT:    s_add_i32 s2, s2, 1
+; GFX9-4-GENERIC-SDAG-NEXT:    s_cmpk_eq_i32 s2, 0xff
+; GFX9-4-GENERIC-SDAG-NEXT:    s_cbranch_scc0 .LBB115_1
+; GFX9-4-GENERIC-SDAG-NEXT:  ; %bb.2: ; %bb2
+; GFX9-4-GENERIC-SDAG-NEXT:    s_mov_b32 s3, 0
+; GFX9-4-GENERIC-SDAG-NEXT:    s_lshl_b64 s[2:3], s[2:3], 2
+; GFX9-4-GENERIC-SDAG-NEXT:    s_add_u32 s0, s0, s2
+; GFX9-4-GENERIC-SDAG-NEXT:    s_addc_u32 s1, s1, s3
+; GFX9-4-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1]
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-SDAG-LABEL: global_saddr_64bit_lsr_iv_multiload:
+; GFX942-SDAG:       ; %bb.0: ; %bb
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    s_mov_b32 s2, -1
+; GFX942-SDAG-NEXT:  .LBB115_1: ; %bb5
+; GFX942-SDAG-NEXT:    ; =>This Inner Loop Header: Depth=1
+; GFX942-SDAG-NEXT:    s_add_i32 s2, s2, 1
+; GFX942-SDAG-NEXT:    s_cmpk_eq_i32 s2, 0xff
+; GFX942-SDAG-NEXT:    s_cbranch_scc0 .LBB115_1
+; GFX942-SDAG-NEXT:  ; %bb.2: ; %bb2
+; GFX942-SDAG-NEXT:    s_mov_b32 s3, 0
+; GFX942-SDAG-NEXT:    s_lshl_b64 s[2:3], s[2:3], 2
+; GFX942-SDAG-NEXT:    s_add_u32 s0, s0, s2
+; GFX942-SDAG-NEXT:    s_addc_u32 s1, s1, s3
+; GFX942-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX942-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1]
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-SDAG-LABEL: global_saddr_64bit_lsr_iv_multiload:
+; GFX950-SDAG:       ; %bb.0: ; %bb
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-SDAG-NEXT:    s_mov_b32 s2, -1
+; GFX950-SDAG-NEXT:  .LBB115_1: ; %bb5
+; GFX950-SDAG-NEXT:    ; =>This Inner Loop Header: Depth=1
+; GFX950-SDAG-NEXT:    s_add_i32 s2, s2, 1
+; GFX950-SDAG-NEXT:    s_cmpk_eq_i32 s2, 0xff
+; GFX950-SDAG-NEXT:    s_cbranch_scc0 .LBB115_1
+; GFX950-SDAG-NEXT:  ; %bb.2: ; %bb2
+; GFX950-SDAG-NEXT:    s_mov_b32 s3, 0
+; GFX950-SDAG-NEXT:    s_lshl_b64 s[2:3], s[2:3], 2
+; GFX950-SDAG-NEXT:    s_add_u32 s0, s0, s2
+; GFX950-SDAG-NEXT:    s_addc_u32 s1, s1, s3
+; GFX950-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX950-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[0:1]
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-SDAG-LABEL: global_saddr_64bit_lsr_iv_multiload:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0: ; %bb
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    s_mov_b32 s4, -1
+; GFX10-1-GENERIC-SDAG-NEXT:  .LBB115_1: ; %bb5
+; GFX10-1-GENERIC-SDAG-NEXT:    ; =>This Inner Loop Header: Depth=1
+; GFX10-1-GENERIC-SDAG-NEXT:    s_add_i32 s4, s4, 1
+; GFX10-1-GENERIC-SDAG-NEXT:    s_cmpk_eq_i32 s4, 0xff
+; GFX10-1-GENERIC-SDAG-NEXT:    s_cbranch_scc0 .LBB115_1
+; GFX10-1-GENERIC-SDAG-NEXT:  ; %bb.2: ; %bb2
+; GFX10-1-GENERIC-SDAG-NEXT:    s_mov_b32 s5, 0
+; GFX10-1-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX10-1-GENERIC-SDAG-NEXT:    s_lshl_b64 s[4:5], s[4:5], 2
+; GFX10-1-GENERIC-SDAG-NEXT:    s_add_u32 s4, s16, s4
+; GFX10-1-GENERIC-SDAG-NEXT:    s_addc_u32 s5, s17, s5
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[4:5]
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: global_saddr_64bit_lsr_iv_multiload:
+; GFX1012-SDAG:       ; %bb.0: ; %bb
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    s_mov_b32 s4, -1
+; GFX1012-SDAG-NEXT:  .LBB115_1: ; %bb5
+; GFX1012-SDAG-NEXT:    ; =>This Inner Loop Header: Depth=1
+; GFX1012-SDAG-NEXT:    s_add_i32 s4, s4, 1
+; GFX1012-SDAG-NEXT:    s_cmpk_eq_i32 s4, 0xff
+; GFX1012-SDAG-NEXT:    s_cbranch_scc0 .LBB115_1
+; GFX1012-SDAG-NEXT:  ; %bb.2: ; %bb2
+; GFX1012-SDAG-NEXT:    s_mov_b32 s5, 0
+; GFX1012-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX1012-SDAG-NEXT:    s_lshl_b64 s[4:5], s[4:5], 2
+; GFX1012-SDAG-NEXT:    s_add_u32 s4, s16, s4
+; GFX1012-SDAG-NEXT:    s_addc_u32 s5, s17, s5
+; GFX1012-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[4:5]
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-SDAG-LABEL: global_saddr_64bit_lsr_iv_multiload:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0: ; %bb
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    s_mov_b32 s4, -1
+; GFX10-3-GENERIC-SDAG-NEXT:  .LBB115_1: ; %bb5
+; GFX10-3-GENERIC-SDAG-NEXT:    ; =>This Inner Loop Header: Depth=1
+; GFX10-3-GENERIC-SDAG-NEXT:    s_add_i32 s4, s4, 1
+; GFX10-3-GENERIC-SDAG-NEXT:    s_cmpk_eq_i32 s4, 0xff
+; GFX10-3-GENERIC-SDAG-NEXT:    s_cbranch_scc0 .LBB115_1
+; GFX10-3-GENERIC-SDAG-NEXT:  ; %bb.2: ; %bb2
+; GFX10-3-GENERIC-SDAG-NEXT:    s_mov_b32 s5, 0
+; GFX10-3-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX10-3-GENERIC-SDAG-NEXT:    s_lshl_b64 s[4:5], s[4:5], 2
+; GFX10-3-GENERIC-SDAG-NEXT:    s_add_u32 s4, s16, s4
+; GFX10-3-GENERIC-SDAG-NEXT:    s_addc_u32 s5, s17, s5
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dwordx4 v[0:3], v0, s[4:5]
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-SDAG-LABEL: global_saddr_64bit_lsr_iv_multiload:
+; GFX11-GENERIC-SDAG:       ; %bb.0: ; %bb
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    s_mov_b32 s2, -1
+; GFX11-GENERIC-SDAG-NEXT:  .LBB115_1: ; %bb5
+; GFX11-GENERIC-SDAG-NEXT:    ; =>This Inner Loop Header: Depth=1
+; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
+; GFX11-GENERIC-SDAG-NEXT:    s_add_i32 s2, s2, 1
+; GFX11-GENERIC-SDAG-NEXT:    s_cmpk_eq_i32 s2, 0xff
+; GFX11-GENERIC-SDAG-NEXT:    s_cbranch_scc0 .LBB115_1
+; GFX11-GENERIC-SDAG-NEXT:  ; %bb.2: ; %bb2
+; GFX11-GENERIC-SDAG-NEXT:    s_mov_b32 s3, 0
+; GFX11-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX11-GENERIC-SDAG-NEXT:    s_lshl_b64 s[2:3], s[2:3], 2
+; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX11-GENERIC-SDAG-NEXT:    s_add_u32 s0, s0, s2
+; GFX11-GENERIC-SDAG-NEXT:    s_addc_u32 s1, s1, s3
+; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1]
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: global_saddr_64bit_lsr_iv_multiload:
+; GFX1250-SDAG:       ; %bb.0: ; %bb
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    s_mov_b32 s2, -1
+; GFX1250-SDAG-NEXT:  .LBB115_1: ; %bb5
+; GFX1250-SDAG-NEXT:    ; =>This Inner Loop Header: Depth=1
+; GFX1250-SDAG-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
+; GFX1250-SDAG-NEXT:    s_add_co_i32 s2, s2, 1
+; GFX1250-SDAG-NEXT:    s_cmp_eq_u32 s2, 0xff
+; GFX1250-SDAG-NEXT:    s_cbranch_scc0 .LBB115_1
+; GFX1250-SDAG-NEXT:  ; %bb.2: ; %bb2
+; GFX1250-SDAG-NEXT:    s_mov_b32 s3, 0
+; GFX1250-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX1250-SDAG-NEXT:    s_lshl_b64 s[2:3], s[2:3], 2
+; GFX1250-SDAG-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX1250-SDAG-NEXT:    s_add_nc_u64 s[0:1], s[0:1], s[2:3]
+; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1]
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-SDAG-LABEL: global_saddr_64bit_lsr_iv_multiload:
+; GFX12-GENERIC-SDAG:       ; %bb.0: ; %bb
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_mov_b32 s2, -1
+; GFX12-GENERIC-SDAG-NEXT:  .LBB115_1: ; %bb5
+; GFX12-GENERIC-SDAG-NEXT:    ; =>This Inner Loop Header: Depth=1
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_alu depctr_sa_sdst(0)
+; GFX12-GENERIC-SDAG-NEXT:    s_add_co_i32 s2, s2, 1
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_alu depctr_sa_sdst(0)
+; GFX12-GENERIC-SDAG-NEXT:    s_cmp_eq_u32 s2, 0xff
+; GFX12-GENERIC-SDAG-NEXT:    s_cbranch_scc0 .LBB115_1
+; GFX12-GENERIC-SDAG-NEXT:  ; %bb.2: ; %bb2
+; GFX12-GENERIC-SDAG-NEXT:    s_mov_b32 s3, 0
+; GFX12-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_alu depctr_sa_sdst(0)
+; GFX12-GENERIC-SDAG-NEXT:    s_lshl_b64 s[2:3], s[2:3], 2
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_alu depctr_sa_sdst(0)
+; GFX12-GENERIC-SDAG-NEXT:    s_add_nc_u64 s[0:1], s[0:1], s[2:3]
+; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1]
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_alu depctr_sa_sdst(0)
+; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-GENERIC-ISEL-LABEL: global_saddr_64bit_lsr_iv_multiload:
+; GFX9-GENERIC-ISEL:       ; %bb.0: ; %bb
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_mov_b32 s4, -1
+; GFX9-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v1, 0xff
+; GFX9-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, s4
+; GFX9-GENERIC-ISEL-NEXT:  .LBB115_1: ; %bb5
+; GFX9-GENERIC-ISEL-NEXT:    ; =>This Inner Loop Header: Depth=1
+; GFX9-GENERIC-ISEL-NEXT:    v_add_u32_e32 v0, 1, v0
+; GFX9-GENERIC-ISEL-NEXT:    v_cmp_eq_u32_e32 vcc, v0, v1
+; GFX9-GENERIC-ISEL-NEXT:    s_cbranch_vccz .LBB115_1
+; GFX9-GENERIC-ISEL-NEXT:  ; %bb.2: ; %bb2
+; GFX9-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v1, 0
+; GFX9-GENERIC-ISEL-NEXT:    v_lshlrev_b64 v[0:1], 2, v[0:1]
+; GFX9-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v2, s16
+; GFX9-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v3, s17
+; GFX9-GENERIC-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v2, v0
+; GFX9-GENERIC-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, v3, v1, vcc
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-ISEL-LABEL: global_saddr_64bit_lsr_iv_multiload:
+; GFX906-ISEL:       ; %bb.0: ; %bb
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-ISEL-NEXT:    s_mov_b32 s4, -1
+; GFX906-ISEL-NEXT:    v_mov_b32_e32 v1, 0xff
+; GFX906-ISEL-NEXT:    v_mov_b32_e32 v0, s4
+; GFX906-ISEL-NEXT:  .LBB115_1: ; %bb5
+; GFX906-ISEL-NEXT:    ; =>This Inner Loop Header: Depth=1
+; GFX906-ISEL-NEXT:    v_add_u32_e32 v0, 1, v0
+; GFX906-ISEL-NEXT:    v_cmp_eq_u32_e32 vcc, v0, v1
+; GFX906-ISEL-NEXT:    s_cbranch_vccz .LBB115_1
+; GFX906-ISEL-NEXT:  ; %bb.2: ; %bb2
+; GFX906-ISEL-NEXT:    v_mov_b32_e32 v1, 0
+; GFX906-ISEL-NEXT:    v_lshlrev_b64 v[0:1], 2, v[0:1]
+; GFX906-ISEL-NEXT:    v_mov_b32_e32 v2, s16
+; GFX906-ISEL-NEXT:    v_mov_b32_e32 v3, s17
+; GFX906-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v2, v0
+; GFX906-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, v3, v1, vcc
+; GFX906-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-ISEL-LABEL: global_saddr_64bit_lsr_iv_multiload:
+; GFX908-ISEL:       ; %bb.0: ; %bb
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-ISEL-NEXT:    s_mov_b32 s4, -1
+; GFX908-ISEL-NEXT:    v_mov_b32_e32 v1, 0xff
+; GFX908-ISEL-NEXT:    v_mov_b32_e32 v0, s4
+; GFX908-ISEL-NEXT:  .LBB115_1: ; %bb5
+; GFX908-ISEL-NEXT:    ; =>This Inner Loop Header: Depth=1
+; GFX908-ISEL-NEXT:    v_add_u32_e32 v0, 1, v0
+; GFX908-ISEL-NEXT:    v_cmp_eq_u32_e32 vcc, v0, v1
+; GFX908-ISEL-NEXT:    s_cbranch_vccz .LBB115_1
+; GFX908-ISEL-NEXT:  ; %bb.2: ; %bb2
+; GFX908-ISEL-NEXT:    v_mov_b32_e32 v1, 0
+; GFX908-ISEL-NEXT:    v_lshlrev_b64 v[0:1], 2, v[0:1]
+; GFX908-ISEL-NEXT:    v_mov_b32_e32 v2, s16
+; GFX908-ISEL-NEXT:    v_mov_b32_e32 v3, s17
+; GFX908-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v2, v0
+; GFX908-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, v3, v1, vcc
+; GFX908-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90A-ISEL-LABEL: global_saddr_64bit_lsr_iv_multiload:
+; GFX90A-ISEL:       ; %bb.0: ; %bb
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90A-ISEL-NEXT:    s_mov_b32 s4, -1
+; GFX90A-ISEL-NEXT:    v_mov_b32_e32 v1, 0xff
+; GFX90A-ISEL-NEXT:    v_mov_b32_e32 v0, s4
+; GFX90A-ISEL-NEXT:  .LBB115_1: ; %bb5
+; GFX90A-ISEL-NEXT:    ; =>This Inner Loop Header: Depth=1
+; GFX90A-ISEL-NEXT:    v_add_u32_e32 v0, 1, v0
+; GFX90A-ISEL-NEXT:    v_cmp_eq_u32_e32 vcc, v0, v1
+; GFX90A-ISEL-NEXT:    s_cbranch_vccz .LBB115_1
+; GFX90A-ISEL-NEXT:  ; %bb.2: ; %bb2
+; GFX90A-ISEL-NEXT:    v_mov_b32_e32 v1, 0
+; GFX90A-ISEL-NEXT:    v_lshlrev_b64 v[0:1], 2, v[0:1]
+; GFX90A-ISEL-NEXT:    v_pk_mov_b32 v[2:3], s[16:17], s[16:17] op_sel:[0,1]
+; GFX90A-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v2, v0
+; GFX90A-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, v3, v1, vcc
+; GFX90A-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX90A-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90A-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-ISEL-LABEL: global_saddr_64bit_lsr_iv_multiload:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0: ; %bb
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_mov_b32 s2, -1
+; GFX9-4-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v1, 0xff
+; GFX9-4-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, s2
+; GFX9-4-GENERIC-ISEL-NEXT:  .LBB115_1: ; %bb5
+; GFX9-4-GENERIC-ISEL-NEXT:    ; =>This Inner Loop Header: Depth=1
+; GFX9-4-GENERIC-ISEL-NEXT:    v_add_u32_e32 v0, 1, v0
+; GFX9-4-GENERIC-ISEL-NEXT:    v_cmp_eq_u32_e32 vcc, v0, v1
+; GFX9-4-GENERIC-ISEL-NEXT:    s_cbranch_vccz .LBB115_1
+; GFX9-4-GENERIC-ISEL-NEXT:  ; %bb.2: ; %bb2
+; GFX9-4-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v1, 0
+; GFX9-4-GENERIC-ISEL-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 2, s[0:1]
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-ISEL-LABEL: global_saddr_64bit_lsr_iv_multiload:
+; GFX942-ISEL:       ; %bb.0: ; %bb
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    s_mov_b32 s2, -1
+; GFX942-ISEL-NEXT:    v_mov_b32_e32 v1, 0xff
+; GFX942-ISEL-NEXT:    v_mov_b32_e32 v0, s2
+; GFX942-ISEL-NEXT:  .LBB115_1: ; %bb5
+; GFX942-ISEL-NEXT:    ; =>This Inner Loop Header: Depth=1
+; GFX942-ISEL-NEXT:    v_add_u32_e32 v0, 1, v0
+; GFX942-ISEL-NEXT:    v_cmp_eq_u32_e32 vcc, v0, v1
+; GFX942-ISEL-NEXT:    s_cbranch_vccz .LBB115_1
+; GFX942-ISEL-NEXT:  ; %bb.2: ; %bb2
+; GFX942-ISEL-NEXT:    v_mov_b32_e32 v1, 0
+; GFX942-ISEL-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 2, s[0:1]
+; GFX942-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-ISEL-LABEL: global_saddr_64bit_lsr_iv_multiload:
+; GFX950-ISEL:       ; %bb.0: ; %bb
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-ISEL-NEXT:    s_mov_b32 s2, -1
+; GFX950-ISEL-NEXT:    v_mov_b32_e32 v1, 0xff
+; GFX950-ISEL-NEXT:    v_mov_b32_e32 v0, s2
+; GFX950-ISEL-NEXT:  .LBB115_1: ; %bb5
+; GFX950-ISEL-NEXT:    ; =>This Inner Loop Header: Depth=1
+; GFX950-ISEL-NEXT:    v_add_u32_e32 v0, 1, v0
+; GFX950-ISEL-NEXT:    v_cmp_eq_u32_e32 vcc, v0, v1
+; GFX950-ISEL-NEXT:    s_cbranch_vccz .LBB115_1
+; GFX950-ISEL-NEXT:  ; %bb.2: ; %bb2
+; GFX950-ISEL-NEXT:    v_mov_b32_e32 v1, 0
+; GFX950-ISEL-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 2, s[0:1]
+; GFX950-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-ISEL-LABEL: global_saddr_64bit_lsr_iv_multiload:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0: ; %bb
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_mov_b32 s4, -1
+; GFX10-1-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, s4
+; GFX10-1-GENERIC-ISEL-NEXT:  .LBB115_1: ; %bb5
+; GFX10-1-GENERIC-ISEL-NEXT:    ; =>This Inner Loop Header: Depth=1
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_nc_u32_e32 v0, 1, v0
+; GFX10-1-GENERIC-ISEL-NEXT:    v_cmp_eq_u32_e32 vcc_lo, 0xff, v0
+; GFX10-1-GENERIC-ISEL-NEXT:    s_cbranch_vccz .LBB115_1
+; GFX10-1-GENERIC-ISEL-NEXT:  ; %bb.2: ; %bb2
+; GFX10-1-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v1, 0
+; GFX10-1-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v2, s16
+; GFX10-1-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v3, s17
+; GFX10-1-GENERIC-ISEL-NEXT:    v_lshlrev_b64 v[0:1], 2, v[0:1]
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v2, v0
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, v3, v1, vcc_lo
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: global_saddr_64bit_lsr_iv_multiload:
+; GFX1012-ISEL:       ; %bb.0: ; %bb
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    s_mov_b32 s4, -1
+; GFX1012-ISEL-NEXT:    v_mov_b32_e32 v0, s4
+; GFX1012-ISEL-NEXT:  .LBB115_1: ; %bb5
+; GFX1012-ISEL-NEXT:    ; =>This Inner Loop Header: Depth=1
+; GFX1012-ISEL-NEXT:    v_add_nc_u32_e32 v0, 1, v0
+; GFX1012-ISEL-NEXT:    v_cmp_eq_u32_e32 vcc_lo, 0xff, v0
+; GFX1012-ISEL-NEXT:    s_cbranch_vccz .LBB115_1
+; GFX1012-ISEL-NEXT:  ; %bb.2: ; %bb2
+; GFX1012-ISEL-NEXT:    v_mov_b32_e32 v1, 0
+; GFX1012-ISEL-NEXT:    v_mov_b32_e32 v2, s16
+; GFX1012-ISEL-NEXT:    v_mov_b32_e32 v3, s17
+; GFX1012-ISEL-NEXT:    v_lshlrev_b64 v[0:1], 2, v[0:1]
+; GFX1012-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v2, v0
+; GFX1012-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, v3, v1, vcc_lo
+; GFX1012-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-ISEL-LABEL: global_saddr_64bit_lsr_iv_multiload:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0: ; %bb
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_mov_b32 s4, -1
+; GFX10-3-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, s4
+; GFX10-3-GENERIC-ISEL-NEXT:  .LBB115_1: ; %bb5
+; GFX10-3-GENERIC-ISEL-NEXT:    ; =>This Inner Loop Header: Depth=1
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_nc_u32_e32 v0, 1, v0
+; GFX10-3-GENERIC-ISEL-NEXT:    v_cmp_eq_u32_e32 vcc_lo, 0xff, v0
+; GFX10-3-GENERIC-ISEL-NEXT:    s_cbranch_vccz .LBB115_1
+; GFX10-3-GENERIC-ISEL-NEXT:  ; %bb.2: ; %bb2
+; GFX10-3-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v1, 0
+; GFX10-3-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v2, s16
+; GFX10-3-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v3, s17
+; GFX10-3-GENERIC-ISEL-NEXT:    v_lshlrev_b64 v[0:1], 2, v[0:1]
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v2, v0
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, v3, v1, vcc_lo
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dwordx4 v[0:3], v[0:1], off
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-ISEL-LABEL: global_saddr_64bit_lsr_iv_multiload:
+; GFX11-GENERIC-ISEL:       ; %bb.0: ; %bb
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_mov_b32 s2, -1
+; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX11-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, s2
+; GFX11-GENERIC-ISEL-NEXT:  .LBB115_1: ; %bb5
+; GFX11-GENERIC-ISEL-NEXT:    ; =>This Inner Loop Header: Depth=1
+; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX11-GENERIC-ISEL-NEXT:    v_add_nc_u32_e32 v0, 1, v0
+; GFX11-GENERIC-ISEL-NEXT:    v_cmp_eq_u32_e32 vcc_lo, 0xff, v0
+; GFX11-GENERIC-ISEL-NEXT:    s_cbranch_vccz .LBB115_1
+; GFX11-GENERIC-ISEL-NEXT:  ; %bb.2: ; %bb2
+; GFX11-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v1, 0
+; GFX11-GENERIC-ISEL-NEXT:    v_dual_mov_b32 v3, s1 :: v_dual_mov_b32 v2, s0
+; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX11-GENERIC-ISEL-NEXT:    v_lshlrev_b64 v[0:1], 2, v[0:1]
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v2, v0
+; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, v3, v1, vcc_lo
+; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: global_saddr_64bit_lsr_iv_multiload:
+; GFX1250-ISEL:       ; %bb.0: ; %bb
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    s_mov_b32 s2, -1
+; GFX1250-ISEL-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
+; GFX1250-ISEL-NEXT:    v_mov_b32_e32 v0, s2
+; GFX1250-ISEL-NEXT:  .LBB115_1: ; %bb5
+; GFX1250-ISEL-NEXT:    ; =>This Inner Loop Header: Depth=1
+; GFX1250-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX1250-ISEL-NEXT:    v_add_nc_u32_e32 v0, 1, v0
+; GFX1250-ISEL-NEXT:    v_cmp_eq_u32_e32 vcc_lo, 0xff, v0
+; GFX1250-ISEL-NEXT:    s_cbranch_vccz .LBB115_1
+; GFX1250-ISEL-NEXT:  ; %bb.2: ; %bb2
+; GFX1250-ISEL-NEXT:    v_mov_b32_e32 v1, 0
+; GFX1250-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX1250-ISEL-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 2, s[0:1]
+; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-ISEL-LABEL: global_saddr_64bit_lsr_iv_multiload:
+; GFX12-GENERIC-ISEL:       ; %bb.0: ; %bb
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_mov_b32 s2, -1
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_alu depctr_sa_sdst(0)
+; GFX12-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, s2
+; GFX12-GENERIC-ISEL-NEXT:  .LBB115_1: ; %bb5
+; GFX12-GENERIC-ISEL-NEXT:    ; =>This Inner Loop Header: Depth=1
+; GFX12-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX12-GENERIC-ISEL-NEXT:    v_add_nc_u32_e32 v0, 1, v0
+; GFX12-GENERIC-ISEL-NEXT:    v_cmp_eq_u32_e32 vcc_lo, 0xff, v0
+; GFX12-GENERIC-ISEL-NEXT:    s_cbranch_vccz .LBB115_1
+; GFX12-GENERIC-ISEL-NEXT:  ; %bb.2: ; %bb2
+; GFX12-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v1, 0
+; GFX12-GENERIC-ISEL-NEXT:    v_dual_mov_b32 v3, s1 :: v_dual_mov_b32 v2, s0
+; GFX12-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX12-GENERIC-ISEL-NEXT:    v_lshlrev_b64_e32 v[0:1], 2, v[0:1]
+; GFX12-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v2, v0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_alu depctr_va_vcc(0)
+; GFX12-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_2)
+; GFX12-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, v3, v1, vcc_lo
+; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+bb:
+  br label %bb5
+
+bb2:
+  %y = icmp eq i32 %x, 0
+  br i1 %y, label %bb3, label %bb4
+
+bb3:
+  ret <4 x float> %i6
+
+bb4:
+  ret <4 x float> %i6.1
+
+bb5:
+  %i = phi i32 [ 0, %bb ], [ %i8, %bb5 ]
+  %i4 = zext i32 %i to i64
+  %i5 = getelementptr inbounds float, ptr addrspace(1) %arg, i64 %i4
+  %load = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %i5, metadata !0)
+  %i6 = bitcast <4 x i32> %load to <4 x float>
+  %i5.1 = getelementptr inbounds float, ptr addrspace(1) %arg.1, i64 %i4
+  %load.1 = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %i5, metadata !1)
+  %i6.1 = bitcast <4 x i32> %load to <4 x float>
+  %i8 = add nuw nsw i32 %i, 1
+  %i9 = icmp eq i32 %i8, 256
+  br i1 %i9, label %bb2, label %bb5
+}
+;;==============================================================================
+;; } End saddr addressing modes
+;;==============================================================================
+
+!0 = !{!"wavefront"}
+!1 = !{!"workgroup"}
+!2 = !{!"agent"}
+!3 = !{!""}
+
+!4 = !{i32 0, i32 1073741824} ; (1 << 30)
+!5 = !{i32 0, i32 1073741825} ; (1 << 30) + 1
+
+;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:
+; GFX: {{.*}}
+; GFX-ISEL: {{.*}}
+; GFX-SDAG: {{.*}}
diff --git a/llvm/test/CodeGen/AMDGPU/llvm.amdgcn.av.global.store.b128.ll b/llvm/test/CodeGen/AMDGPU/llvm.amdgcn.av.global.store.b128.ll
new file mode 100644
index 0000000000000..fb1311e4ebef1
--- /dev/null
+++ b/llvm/test/CodeGen/AMDGPU/llvm.amdgcn.av.global.store.b128.ll
@@ -0,0 +1,3888 @@
+; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
+
+; RUN: llc -global-isel=0 -mtriple=amdgcn -mcpu=gfx9-generic    < %s  | FileCheck -check-prefixes=GFX,GFX-SDAG,GFX9-GENERIC-SDAG    %s
+; RUN: llc -global-isel=0 -mtriple=amdgcn -mcpu=gfx906          < %s  | FileCheck -check-prefixes=GFX,GFX-SDAG,GFX906-SDAG          %s
+; RUN: llc -global-isel=0 -mtriple=amdgcn -mcpu=gfx908          < %s  | FileCheck -check-prefixes=GFX,GFX-SDAG,GFX908-SDAG          %s
+; RUN: llc -global-isel=0 -mtriple=amdgcn -mcpu=gfx90a          < %s  | FileCheck -check-prefixes=GFX,GFX-SDAG,GFX90a-SDAG          %s
+; RUN: llc -global-isel=0 -mtriple=amdgcn -mcpu=gfx9-4-generic  < %s  | FileCheck -check-prefixes=GFX,GFX-SDAG,GFX9-4-GENERIC-SDAG  %s
+; RUN: llc -global-isel=0 -mtriple=amdgcn -mcpu=gfx942          < %s  | FileCheck -check-prefixes=GFX,GFX-SDAG,GFX942-SDAG          %s
+; RUN: llc -global-isel=0 -mtriple=amdgcn -mcpu=gfx950          < %s  | FileCheck -check-prefixes=GFX,GFX-SDAG,GFX950-SDAG          %s
+; RUN: llc -global-isel=0 -mtriple=amdgcn -mcpu=gfx10-1-generic < %s  | FileCheck -check-prefixes=GFX,GFX-SDAG,GFX10-1-GENERIC-SDAG %s
+; RUN: llc -global-isel=0 -mtriple=amdgcn -mcpu=gfx1012         < %s  | FileCheck -check-prefixes=GFX,GFX-SDAG,GFX1012-SDAG         %s
+; RUN: llc -global-isel=0 -mtriple=amdgcn -mcpu=gfx10-3-generic < %s  | FileCheck -check-prefixes=GFX,GFX-SDAG,GFX10-3-GENERIC-SDAG %s
+; RUN: llc -global-isel=0 -mtriple=amdgcn -mcpu=gfx11-generic   < %s  | FileCheck -check-prefixes=GFX,GFX-SDAG,GFX11-GENERIC-SDAG   %s
+; RUN: llc -global-isel=0 -mtriple=amdgcn -mcpu=gfx1250         < %s  | FileCheck -check-prefixes=GFX,GFX-SDAG,GFX1250-SDAG         %s
+; RUN: llc -global-isel=0 -mtriple=amdgcn -mcpu=gfx12-generic   < %s  | FileCheck -check-prefixes=GFX,GFX-SDAG,GFX12-GENERIC-SDAG   %s
+
+; RUN: llc -global-isel=1 -mtriple=amdgcn -mcpu=gfx9-generic    < %s  | FileCheck -check-prefixes=GFX,GFX-ISEL,GFX9-GENERIC-ISEL    %s
+; RUN: llc -global-isel=1 -mtriple=amdgcn -mcpu=gfx906          < %s  | FileCheck -check-prefixes=GFX,GFX-ISEL,GFX906-ISEL          %s
+; RUN: llc -global-isel=1 -mtriple=amdgcn -mcpu=gfx908          < %s  | FileCheck -check-prefixes=GFX,GFX-ISEL,GFX908-ISEL          %s
+; RUN: llc -global-isel=1 -mtriple=amdgcn -mcpu=gfx90a          < %s  | FileCheck -check-prefixes=GFX,GFX-ISEL,GFX90a-ISEL          %s
+; RUN: llc -global-isel=1 -mtriple=amdgcn -mcpu=gfx9-4-generic  < %s  | FileCheck -check-prefixes=GFX,GFX-ISEL,GFX9-4-GENERIC-ISEL  %s
+; RUN: llc -global-isel=1 -mtriple=amdgcn -mcpu=gfx942          < %s  | FileCheck -check-prefixes=GFX,GFX-ISEL,GFX942-ISEL          %s
+; RUN: llc -global-isel=1 -mtriple=amdgcn -mcpu=gfx950          < %s  | FileCheck -check-prefixes=GFX,GFX-ISEL,GFX950-ISEL          %s
+; RUN: llc -global-isel=1 -mtriple=amdgcn -mcpu=gfx10-1-generic < %s  | FileCheck -check-prefixes=GFX,GFX-ISEL,GFX10-1-GENERIC-ISEL %s
+; RUN: llc -global-isel=1 -mtriple=amdgcn -mcpu=gfx1012         < %s  | FileCheck -check-prefixes=GFX,GFX-ISEL,GFX1012-ISEL         %s
+; RUN: llc -global-isel=1 -mtriple=amdgcn -mcpu=gfx10-3-generic < %s  | FileCheck -check-prefixes=GFX,GFX-ISEL,GFX10-3-GENERIC-ISEL %s
+; RUN: llc -global-isel=1 -mtriple=amdgcn -mcpu=gfx11-generic   < %s  | FileCheck -check-prefixes=GFX,GFX-ISEL,GFX11-GENERIC-ISEL   %s
+; RUN: llc -global-isel=1 -mtriple=amdgcn -mcpu=gfx1250         < %s  | FileCheck -check-prefixes=GFX,GFX-ISEL,GFX1250-ISEL         %s
+; RUN: llc -global-isel=1 -mtriple=amdgcn -mcpu=gfx12-generic   < %s  | FileCheck -check-prefixes=GFX,GFX-ISEL,GFX12-GENERIC-ISEL   %s
+
+;;==============================================================================
+;; A few basic test cases
+;;==============================================================================
+define void @av_global_store_b128_0_00(ptr addrspace(1) %addr, <4 x i32> %data) {
+; GFX9-GENERIC-SDAG-LABEL: av_global_store_b128_0_00:
+; GFX9-GENERIC-SDAG:       ; %bb.0: ; %entry
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-SDAG-LABEL: av_global_store_b128_0_00:
+; GFX906-SDAG:       ; %bb.0: ; %entry
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-SDAG-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-SDAG-LABEL: av_global_store_b128_0_00:
+; GFX908-SDAG:       ; %bb.0: ; %entry
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-SDAG-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90a-SDAG-LABEL: av_global_store_b128_0_00:
+; GFX90a-SDAG:       ; %bb.0: ; %entry
+; GFX90a-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90a-SDAG-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off
+; GFX90a-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90a-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-SDAG-LABEL: av_global_store_b128_0_00:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0: ; %entry
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-SDAG-LABEL: av_global_store_b128_0_00:
+; GFX942-SDAG:       ; %bb.0: ; %entry
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-SDAG-LABEL: av_global_store_b128_0_00:
+; GFX950-SDAG:       ; %bb.0: ; %entry
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-SDAG-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-SDAG-LABEL: av_global_store_b128_0_00:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0: ; %entry
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off
+; GFX10-1-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: av_global_store_b128_0_00:
+; GFX1012-SDAG:       ; %bb.0: ; %entry
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-SDAG-LABEL: av_global_store_b128_0_00:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0: ; %entry
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off
+; GFX10-3-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-SDAG-LABEL: av_global_store_b128_0_00:
+; GFX11-GENERIC-SDAG:       ; %bb.0: ; %entry
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    av_global_store_b128 v[0:1], v[2:5], off
+; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: av_global_store_b128_0_00:
+; GFX1250-SDAG:       ; %bb.0: ; %entry
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    av_global_store_b128 v[0:1], v[2:5], off
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-SDAG-LABEL: av_global_store_b128_0_00:
+; GFX12-GENERIC-SDAG:       ; %bb.0: ; %entry
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    av_global_store_b128 v[0:1], v[2:5], off
+; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-GENERIC-ISEL-LABEL: av_global_store_b128_0_00:
+; GFX9-GENERIC-ISEL:       ; %bb.0: ; %entry
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-ISEL-LABEL: av_global_store_b128_0_00:
+; GFX906-ISEL:       ; %bb.0: ; %entry
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-ISEL-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-ISEL-LABEL: av_global_store_b128_0_00:
+; GFX908-ISEL:       ; %bb.0: ; %entry
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-ISEL-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90a-ISEL-LABEL: av_global_store_b128_0_00:
+; GFX90a-ISEL:       ; %bb.0: ; %entry
+; GFX90a-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90a-ISEL-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off
+; GFX90a-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90a-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-ISEL-LABEL: av_global_store_b128_0_00:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0: ; %entry
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-ISEL-LABEL: av_global_store_b128_0_00:
+; GFX942-ISEL:       ; %bb.0: ; %entry
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-ISEL-LABEL: av_global_store_b128_0_00:
+; GFX950-ISEL:       ; %bb.0: ; %entry
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-ISEL-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-ISEL-LABEL: av_global_store_b128_0_00:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0: ; %entry
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off
+; GFX10-1-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: av_global_store_b128_0_00:
+; GFX1012-ISEL:       ; %bb.0: ; %entry
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-ISEL-LABEL: av_global_store_b128_0_00:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0: ; %entry
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off
+; GFX10-3-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-ISEL-LABEL: av_global_store_b128_0_00:
+; GFX11-GENERIC-ISEL:       ; %bb.0: ; %entry
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    av_global_store_b128 v[0:1], v[2:5], off
+; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: av_global_store_b128_0_00:
+; GFX1250-ISEL:       ; %bb.0: ; %entry
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    av_global_store_b128 v[0:1], v[2:5], off
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-ISEL-LABEL: av_global_store_b128_0_00:
+; GFX12-GENERIC-ISEL:       ; %bb.0: ; %entry
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    av_global_store_b128 v[0:1], v[2:5], off
+; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+entry:
+  call void @llvm.amdgcn.av.global.store.b128(ptr addrspace(1) %addr, <4 x i32> %data, metadata !0)
+  ret void
+}
+
+define void @av_global_store_b128_0_01(ptr addrspace(1) %addr, <4 x i32> %data) {
+; GFX9-GENERIC-SDAG-LABEL: av_global_store_b128_0_01:
+; GFX9-GENERIC-SDAG:       ; %bb.0: ; %entry
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-SDAG-LABEL: av_global_store_b128_0_01:
+; GFX906-SDAG:       ; %bb.0: ; %entry
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-SDAG-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-SDAG-LABEL: av_global_store_b128_0_01:
+; GFX908-SDAG:       ; %bb.0: ; %entry
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-SDAG-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90a-SDAG-LABEL: av_global_store_b128_0_01:
+; GFX90a-SDAG:       ; %bb.0: ; %entry
+; GFX90a-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90a-SDAG-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off
+; GFX90a-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90a-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-SDAG-LABEL: av_global_store_b128_0_01:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0: ; %entry
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off sc0
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-SDAG-LABEL: av_global_store_b128_0_01:
+; GFX942-SDAG:       ; %bb.0: ; %entry
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off sc0
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-SDAG-LABEL: av_global_store_b128_0_01:
+; GFX950-SDAG:       ; %bb.0: ; %entry
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-SDAG-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off sc0
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-SDAG-LABEL: av_global_store_b128_0_01:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0: ; %entry
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off
+; GFX10-1-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: av_global_store_b128_0_01:
+; GFX1012-SDAG:       ; %bb.0: ; %entry
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-SDAG-LABEL: av_global_store_b128_0_01:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0: ; %entry
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off
+; GFX10-3-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-SDAG-LABEL: av_global_store_b128_0_01:
+; GFX11-GENERIC-SDAG:       ; %bb.0: ; %entry
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    av_global_store_b128 v[0:1], v[2:5], off
+; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: av_global_store_b128_0_01:
+; GFX1250-SDAG:       ; %bb.0: ; %entry
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    av_global_store_b128 v[0:1], v[2:5], off
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-SDAG-LABEL: av_global_store_b128_0_01:
+; GFX12-GENERIC-SDAG:       ; %bb.0: ; %entry
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    av_global_store_b128 v[0:1], v[2:5], off scope:SCOPE_SE
+; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-GENERIC-ISEL-LABEL: av_global_store_b128_0_01:
+; GFX9-GENERIC-ISEL:       ; %bb.0: ; %entry
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-ISEL-LABEL: av_global_store_b128_0_01:
+; GFX906-ISEL:       ; %bb.0: ; %entry
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-ISEL-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-ISEL-LABEL: av_global_store_b128_0_01:
+; GFX908-ISEL:       ; %bb.0: ; %entry
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-ISEL-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90a-ISEL-LABEL: av_global_store_b128_0_01:
+; GFX90a-ISEL:       ; %bb.0: ; %entry
+; GFX90a-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90a-ISEL-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off
+; GFX90a-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90a-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-ISEL-LABEL: av_global_store_b128_0_01:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0: ; %entry
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off sc0
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-ISEL-LABEL: av_global_store_b128_0_01:
+; GFX942-ISEL:       ; %bb.0: ; %entry
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off sc0
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-ISEL-LABEL: av_global_store_b128_0_01:
+; GFX950-ISEL:       ; %bb.0: ; %entry
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-ISEL-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off sc0
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-ISEL-LABEL: av_global_store_b128_0_01:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0: ; %entry
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off
+; GFX10-1-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: av_global_store_b128_0_01:
+; GFX1012-ISEL:       ; %bb.0: ; %entry
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-ISEL-LABEL: av_global_store_b128_0_01:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0: ; %entry
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off
+; GFX10-3-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-ISEL-LABEL: av_global_store_b128_0_01:
+; GFX11-GENERIC-ISEL:       ; %bb.0: ; %entry
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    av_global_store_b128 v[0:1], v[2:5], off
+; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: av_global_store_b128_0_01:
+; GFX1250-ISEL:       ; %bb.0: ; %entry
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    av_global_store_b128 v[0:1], v[2:5], off
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-ISEL-LABEL: av_global_store_b128_0_01:
+; GFX12-GENERIC-ISEL:       ; %bb.0: ; %entry
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    av_global_store_b128 v[0:1], v[2:5], off scope:SCOPE_SE
+; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+entry:
+  call void @llvm.amdgcn.av.global.store.b128(ptr addrspace(1) %addr, <4 x i32> %data, metadata !1)
+  ret void
+}
+
+define void @av_global_store_b128_0_10(ptr addrspace(1) %addr, <4 x i32> %data) {
+; GFX9-GENERIC-SDAG-LABEL: av_global_store_b128_0_10:
+; GFX9-GENERIC-SDAG:       ; %bb.0: ; %entry
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-SDAG-LABEL: av_global_store_b128_0_10:
+; GFX906-SDAG:       ; %bb.0: ; %entry
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-SDAG-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-SDAG-LABEL: av_global_store_b128_0_10:
+; GFX908-SDAG:       ; %bb.0: ; %entry
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-SDAG-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90a-SDAG-LABEL: av_global_store_b128_0_10:
+; GFX90a-SDAG:       ; %bb.0: ; %entry
+; GFX90a-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90a-SDAG-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off
+; GFX90a-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90a-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-SDAG-LABEL: av_global_store_b128_0_10:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0: ; %entry
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off sc1
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-SDAG-LABEL: av_global_store_b128_0_10:
+; GFX942-SDAG:       ; %bb.0: ; %entry
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off sc1
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-SDAG-LABEL: av_global_store_b128_0_10:
+; GFX950-SDAG:       ; %bb.0: ; %entry
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-SDAG-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off sc1
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-SDAG-LABEL: av_global_store_b128_0_10:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0: ; %entry
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off
+; GFX10-1-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: av_global_store_b128_0_10:
+; GFX1012-SDAG:       ; %bb.0: ; %entry
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-SDAG-LABEL: av_global_store_b128_0_10:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0: ; %entry
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off
+; GFX10-3-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-SDAG-LABEL: av_global_store_b128_0_10:
+; GFX11-GENERIC-SDAG:       ; %bb.0: ; %entry
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    av_global_store_b128 v[0:1], v[2:5], off
+; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: av_global_store_b128_0_10:
+; GFX1250-SDAG:       ; %bb.0: ; %entry
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    av_global_store_b128 v[0:1], v[2:5], off scope:SCOPE_DEV
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-SDAG-LABEL: av_global_store_b128_0_10:
+; GFX12-GENERIC-SDAG:       ; %bb.0: ; %entry
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    av_global_store_b128 v[0:1], v[2:5], off scope:SCOPE_DEV
+; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-GENERIC-ISEL-LABEL: av_global_store_b128_0_10:
+; GFX9-GENERIC-ISEL:       ; %bb.0: ; %entry
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-ISEL-LABEL: av_global_store_b128_0_10:
+; GFX906-ISEL:       ; %bb.0: ; %entry
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-ISEL-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-ISEL-LABEL: av_global_store_b128_0_10:
+; GFX908-ISEL:       ; %bb.0: ; %entry
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-ISEL-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90a-ISEL-LABEL: av_global_store_b128_0_10:
+; GFX90a-ISEL:       ; %bb.0: ; %entry
+; GFX90a-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90a-ISEL-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off
+; GFX90a-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90a-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-ISEL-LABEL: av_global_store_b128_0_10:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0: ; %entry
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off sc1
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-ISEL-LABEL: av_global_store_b128_0_10:
+; GFX942-ISEL:       ; %bb.0: ; %entry
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off sc1
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-ISEL-LABEL: av_global_store_b128_0_10:
+; GFX950-ISEL:       ; %bb.0: ; %entry
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-ISEL-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off sc1
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-ISEL-LABEL: av_global_store_b128_0_10:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0: ; %entry
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off
+; GFX10-1-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: av_global_store_b128_0_10:
+; GFX1012-ISEL:       ; %bb.0: ; %entry
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-ISEL-LABEL: av_global_store_b128_0_10:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0: ; %entry
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off
+; GFX10-3-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-ISEL-LABEL: av_global_store_b128_0_10:
+; GFX11-GENERIC-ISEL:       ; %bb.0: ; %entry
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    av_global_store_b128 v[0:1], v[2:5], off
+; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: av_global_store_b128_0_10:
+; GFX1250-ISEL:       ; %bb.0: ; %entry
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    av_global_store_b128 v[0:1], v[2:5], off scope:SCOPE_DEV
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-ISEL-LABEL: av_global_store_b128_0_10:
+; GFX12-GENERIC-ISEL:       ; %bb.0: ; %entry
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    av_global_store_b128 v[0:1], v[2:5], off scope:SCOPE_DEV
+; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+entry:
+  call void @llvm.amdgcn.av.global.store.b128(ptr addrspace(1) %addr, <4 x i32> %data, metadata !2)
+  ret void
+}
+
+define void @av_global_store_b128_0_11(ptr addrspace(1) %addr, <4 x i32> %data) {
+; GFX9-GENERIC-SDAG-LABEL: av_global_store_b128_0_11:
+; GFX9-GENERIC-SDAG:       ; %bb.0: ; %entry
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-SDAG-LABEL: av_global_store_b128_0_11:
+; GFX906-SDAG:       ; %bb.0: ; %entry
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-SDAG-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-SDAG-LABEL: av_global_store_b128_0_11:
+; GFX908-SDAG:       ; %bb.0: ; %entry
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-SDAG-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90a-SDAG-LABEL: av_global_store_b128_0_11:
+; GFX90a-SDAG:       ; %bb.0: ; %entry
+; GFX90a-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90a-SDAG-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off
+; GFX90a-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90a-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-SDAG-LABEL: av_global_store_b128_0_11:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0: ; %entry
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off sc0 sc1
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-SDAG-LABEL: av_global_store_b128_0_11:
+; GFX942-SDAG:       ; %bb.0: ; %entry
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off sc0 sc1
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-SDAG-LABEL: av_global_store_b128_0_11:
+; GFX950-SDAG:       ; %bb.0: ; %entry
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-SDAG-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off sc0 sc1
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-SDAG-LABEL: av_global_store_b128_0_11:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0: ; %entry
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off
+; GFX10-1-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: av_global_store_b128_0_11:
+; GFX1012-SDAG:       ; %bb.0: ; %entry
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-SDAG-LABEL: av_global_store_b128_0_11:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0: ; %entry
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off
+; GFX10-3-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-SDAG-LABEL: av_global_store_b128_0_11:
+; GFX11-GENERIC-SDAG:       ; %bb.0: ; %entry
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    av_global_store_b128 v[0:1], v[2:5], off
+; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: av_global_store_b128_0_11:
+; GFX1250-SDAG:       ; %bb.0: ; %entry
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    av_global_store_b128 v[0:1], v[2:5], off scope:SCOPE_SYS
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-SDAG-LABEL: av_global_store_b128_0_11:
+; GFX12-GENERIC-SDAG:       ; %bb.0: ; %entry
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    av_global_store_b128 v[0:1], v[2:5], off scope:SCOPE_SYS
+; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-GENERIC-ISEL-LABEL: av_global_store_b128_0_11:
+; GFX9-GENERIC-ISEL:       ; %bb.0: ; %entry
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-ISEL-LABEL: av_global_store_b128_0_11:
+; GFX906-ISEL:       ; %bb.0: ; %entry
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-ISEL-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-ISEL-LABEL: av_global_store_b128_0_11:
+; GFX908-ISEL:       ; %bb.0: ; %entry
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-ISEL-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90a-ISEL-LABEL: av_global_store_b128_0_11:
+; GFX90a-ISEL:       ; %bb.0: ; %entry
+; GFX90a-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90a-ISEL-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off
+; GFX90a-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90a-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-ISEL-LABEL: av_global_store_b128_0_11:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0: ; %entry
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off sc0 sc1
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-ISEL-LABEL: av_global_store_b128_0_11:
+; GFX942-ISEL:       ; %bb.0: ; %entry
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off sc0 sc1
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-ISEL-LABEL: av_global_store_b128_0_11:
+; GFX950-ISEL:       ; %bb.0: ; %entry
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-ISEL-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off sc0 sc1
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-ISEL-LABEL: av_global_store_b128_0_11:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0: ; %entry
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off
+; GFX10-1-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: av_global_store_b128_0_11:
+; GFX1012-ISEL:       ; %bb.0: ; %entry
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-ISEL-LABEL: av_global_store_b128_0_11:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0: ; %entry
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    global_store_dwordx4 v[0:1], v[2:5], off
+; GFX10-3-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-ISEL-LABEL: av_global_store_b128_0_11:
+; GFX11-GENERIC-ISEL:       ; %bb.0: ; %entry
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    av_global_store_b128 v[0:1], v[2:5], off
+; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: av_global_store_b128_0_11:
+; GFX1250-ISEL:       ; %bb.0: ; %entry
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    av_global_store_b128 v[0:1], v[2:5], off scope:SCOPE_SYS
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-ISEL-LABEL: av_global_store_b128_0_11:
+; GFX12-GENERIC-ISEL:       ; %bb.0: ; %entry
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    av_global_store_b128 v[0:1], v[2:5], off scope:SCOPE_SYS
+; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+entry:
+  call void @llvm.amdgcn.av.global.store.b128(ptr addrspace(1) %addr, <4 x i32> %data, metadata !3)
+  ret void
+}
+
+;;==============================================================================
+;; Signed offset addressing modes (derived from global-saddr-store.ll) {
+;;==============================================================================
+
+define void @global_store_i8_zext_vgpr(ptr addrspace(1) %sbase, ptr addrspace(1) %voffset.ptr, <4 x i32> %data) {
+; GFX9-GENERIC-SDAG-LABEL: global_store_i8_zext_vgpr:
+; GFX9-GENERIC-SDAG:       ; %bb.0:
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dword v2, v[2:3], off
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX9-GENERIC-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX9-GENERIC-SDAG-NEXT:    global_store_dwordx4 v[0:1], v[4:7], off
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-SDAG-LABEL: global_store_i8_zext_vgpr:
+; GFX906-SDAG:       ; %bb.0:
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-SDAG-NEXT:    global_load_dword v2, v[2:3], off
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX906-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX906-SDAG-NEXT:    global_store_dwordx4 v[0:1], v[4:7], off
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-SDAG-LABEL: global_store_i8_zext_vgpr:
+; GFX908-SDAG:       ; %bb.0:
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-SDAG-NEXT:    global_load_dword v2, v[2:3], off
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX908-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX908-SDAG-NEXT:    global_store_dwordx4 v[0:1], v[4:7], off
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90a-SDAG-LABEL: global_store_i8_zext_vgpr:
+; GFX90a-SDAG:       ; %bb.0:
+; GFX90a-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90a-SDAG-NEXT:    global_load_dword v2, v[2:3], off
+; GFX90a-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90a-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX90a-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX90a-SDAG-NEXT:    global_store_dwordx4 v[0:1], v[4:7], off
+; GFX90a-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90a-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-SDAG-LABEL: global_store_i8_zext_vgpr:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0:
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dword v2, v[2:3], off
+; GFX9-4-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 0, v[2:3]
+; GFX9-4-GENERIC-SDAG-NEXT:    global_store_dwordx4 v[0:1], v[4:7], off
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-SDAG-LABEL: global_store_i8_zext_vgpr:
+; GFX942-SDAG:       ; %bb.0:
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    global_load_dword v2, v[2:3], off
+; GFX942-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 0, v[2:3]
+; GFX942-SDAG-NEXT:    global_store_dwordx4 v[0:1], v[4:7], off
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-SDAG-LABEL: global_store_i8_zext_vgpr:
+; GFX950-SDAG:       ; %bb.0:
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-SDAG-NEXT:    global_load_dword v2, v[2:3], off
+; GFX950-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 0, v[2:3]
+; GFX950-SDAG-NEXT:    global_store_dwordx4 v[0:1], v[4:7], off
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-SDAG-LABEL: global_store_i8_zext_vgpr:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0:
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dword v2, v[2:3], off
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX10-1-GENERIC-SDAG-NEXT:    global_store_dwordx4 v[0:1], v[4:7], off
+; GFX10-1-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: global_store_i8_zext_vgpr:
+; GFX1012-SDAG:       ; %bb.0:
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    global_load_dword v2, v[2:3], off
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX1012-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX1012-SDAG-NEXT:    global_store_dwordx4 v[0:1], v[4:7], off
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-SDAG-LABEL: global_store_i8_zext_vgpr:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0:
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dword v2, v[2:3], off
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX10-3-GENERIC-SDAG-NEXT:    global_store_dwordx4 v[0:1], v[4:7], off
+; GFX10-3-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-SDAG-LABEL: global_store_i8_zext_vgpr:
+; GFX11-GENERIC-SDAG:       ; %bb.0:
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b32 v2, v[2:3], off
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX11-GENERIC-SDAG-NEXT:    av_global_store_b128 v[0:1], v[4:7], off
+; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: global_store_i8_zext_vgpr:
+; GFX1250-SDAG:       ; %bb.0:
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    global_load_b32 v2, v[2:3], off
+; GFX1250-SDAG-NEXT:    s_wait_xcnt 0x0
+; GFX1250-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX1250-SDAG-NEXT:    v_add_nc_u64_e32 v[0:1], v[0:1], v[2:3]
+; GFX1250-SDAG-NEXT:    av_global_store_b128 v[0:1], v[4:7], off
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-SDAG-LABEL: global_store_i8_zext_vgpr:
+; GFX12-GENERIC-SDAG:       ; %bb.0:
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b32 v2, v[2:3], off
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)
+; GFX12-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX12-GENERIC-SDAG-NEXT:    av_global_store_b128 v[0:1], v[4:7], off
+; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-GENERIC-ISEL-LABEL: global_store_i8_zext_vgpr:
+; GFX9-GENERIC-ISEL:       ; %bb.0:
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dword v2, v[2:3], off
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX9-GENERIC-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX9-GENERIC-ISEL-NEXT:    global_store_dwordx4 v[0:1], v[4:7], off
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-ISEL-LABEL: global_store_i8_zext_vgpr:
+; GFX906-ISEL:       ; %bb.0:
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-ISEL-NEXT:    global_load_dword v2, v[2:3], off
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX906-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX906-ISEL-NEXT:    global_store_dwordx4 v[0:1], v[4:7], off
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-ISEL-LABEL: global_store_i8_zext_vgpr:
+; GFX908-ISEL:       ; %bb.0:
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-ISEL-NEXT:    global_load_dword v2, v[2:3], off
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX908-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX908-ISEL-NEXT:    global_store_dwordx4 v[0:1], v[4:7], off
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90a-ISEL-LABEL: global_store_i8_zext_vgpr:
+; GFX90a-ISEL:       ; %bb.0:
+; GFX90a-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90a-ISEL-NEXT:    global_load_dword v2, v[2:3], off
+; GFX90a-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90a-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX90a-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX90a-ISEL-NEXT:    global_store_dwordx4 v[0:1], v[4:7], off
+; GFX90a-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90a-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-ISEL-LABEL: global_store_i8_zext_vgpr:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0:
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dword v2, v[2:3], off
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX9-4-GENERIC-ISEL-NEXT:    s_nop 1
+; GFX9-4-GENERIC-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX9-4-GENERIC-ISEL-NEXT:    global_store_dwordx4 v[0:1], v[4:7], off
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-ISEL-LABEL: global_store_i8_zext_vgpr:
+; GFX942-ISEL:       ; %bb.0:
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    global_load_dword v2, v[2:3], off
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX942-ISEL-NEXT:    s_nop 1
+; GFX942-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX942-ISEL-NEXT:    global_store_dwordx4 v[0:1], v[4:7], off
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-ISEL-LABEL: global_store_i8_zext_vgpr:
+; GFX950-ISEL:       ; %bb.0:
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-ISEL-NEXT:    global_load_dword v2, v[2:3], off
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX950-ISEL-NEXT:    s_nop 1
+; GFX950-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX950-ISEL-NEXT:    global_store_dwordx4 v[0:1], v[4:7], off
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-ISEL-LABEL: global_store_i8_zext_vgpr:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0:
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dword v2, v[2:3], off
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX10-1-GENERIC-ISEL-NEXT:    global_store_dwordx4 v[0:1], v[4:7], off
+; GFX10-1-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: global_store_i8_zext_vgpr:
+; GFX1012-ISEL:       ; %bb.0:
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    global_load_dword v2, v[2:3], off
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX1012-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX1012-ISEL-NEXT:    global_store_dwordx4 v[0:1], v[4:7], off
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-ISEL-LABEL: global_store_i8_zext_vgpr:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0:
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dword v2, v[2:3], off
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX10-3-GENERIC-ISEL-NEXT:    global_store_dwordx4 v[0:1], v[4:7], off
+; GFX10-3-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-ISEL-LABEL: global_store_i8_zext_vgpr:
+; GFX11-GENERIC-ISEL:       ; %bb.0:
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b32 v2, v[2:3], off
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX11-GENERIC-ISEL-NEXT:    av_global_store_b128 v[0:1], v[4:7], off
+; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: global_store_i8_zext_vgpr:
+; GFX1250-ISEL:       ; %bb.0:
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    global_load_b32 v2, v[2:3], off
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX1250-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX1250-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX1250-ISEL-NEXT:    s_wait_xcnt 0x0
+; GFX1250-ISEL-NEXT:    av_global_store_b128 v[0:1], v[4:7], off
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-ISEL-LABEL: global_store_i8_zext_vgpr:
+; GFX12-GENERIC-ISEL:       ; %bb.0:
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b32 v2, v[2:3], off
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_alu depctr_va_vcc(0)
+; GFX12-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX12-GENERIC-ISEL-NEXT:    av_global_store_b128 v[0:1], v[4:7], off
+; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+  %voffset = load i32, ptr addrspace(1) %voffset.ptr
+  %zext.offset = zext i32 %voffset to i64
+  %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 %zext.offset
+  call void @llvm.amdgcn.av.global.store.b128(ptr addrspace(1) %gep0, <4 x i32> %data, metadata !0)
+  ret void
+}
+
+define void @global_store_v4i32_zext_vgpr_offset_neg128(ptr addrspace(1) %sbase, i32 %voffset, <4 x i32> %data) {
+; GFX9-GENERIC-SDAG-LABEL: global_store_v4i32_zext_vgpr_offset_neg128:
+; GFX9-GENERIC-SDAG:       ; %bb.0:
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX9-GENERIC-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX9-GENERIC-SDAG-NEXT:    global_store_dwordx4 v[0:1], v[3:6], off offset:-128
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-SDAG-LABEL: global_store_v4i32_zext_vgpr_offset_neg128:
+; GFX906-SDAG:       ; %bb.0:
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX906-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX906-SDAG-NEXT:    global_store_dwordx4 v[0:1], v[3:6], off offset:-128
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-SDAG-LABEL: global_store_v4i32_zext_vgpr_offset_neg128:
+; GFX908-SDAG:       ; %bb.0:
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX908-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX908-SDAG-NEXT:    global_store_dwordx4 v[0:1], v[3:6], off offset:-128
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90a-SDAG-LABEL: global_store_v4i32_zext_vgpr_offset_neg128:
+; GFX90a-SDAG:       ; %bb.0:
+; GFX90a-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90a-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX90a-SDAG-NEXT:    v_mov_b32_e32 v7, v6
+; GFX90a-SDAG-NEXT:    v_mov_b32_e32 v6, v5
+; GFX90a-SDAG-NEXT:    v_mov_b32_e32 v5, v4
+; GFX90a-SDAG-NEXT:    v_mov_b32_e32 v4, v3
+; GFX90a-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX90a-SDAG-NEXT:    global_store_dwordx4 v[0:1], v[4:7], off offset:-128
+; GFX90a-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90a-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-SDAG-LABEL: global_store_v4i32_zext_vgpr_offset_neg128:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0:
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v7, v6
+; GFX9-4-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v6, v5
+; GFX9-4-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v5, v4
+; GFX9-4-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v4, v3
+; GFX9-4-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX9-4-GENERIC-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 0, v[2:3]
+; GFX9-4-GENERIC-SDAG-NEXT:    global_store_dwordx4 v[0:1], v[4:7], off offset:-128 sc0
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-SDAG-LABEL: global_store_v4i32_zext_vgpr_offset_neg128:
+; GFX942-SDAG:       ; %bb.0:
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    v_mov_b32_e32 v7, v6
+; GFX942-SDAG-NEXT:    v_mov_b32_e32 v6, v5
+; GFX942-SDAG-NEXT:    v_mov_b32_e32 v5, v4
+; GFX942-SDAG-NEXT:    v_mov_b32_e32 v4, v3
+; GFX942-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX942-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 0, v[2:3]
+; GFX942-SDAG-NEXT:    global_store_dwordx4 v[0:1], v[4:7], off offset:-128 sc0
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-SDAG-LABEL: global_store_v4i32_zext_vgpr_offset_neg128:
+; GFX950-SDAG:       ; %bb.0:
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-SDAG-NEXT:    v_mov_b32_e32 v7, v6
+; GFX950-SDAG-NEXT:    v_mov_b32_e32 v6, v5
+; GFX950-SDAG-NEXT:    v_mov_b32_e32 v5, v4
+; GFX950-SDAG-NEXT:    v_mov_b32_e32 v4, v3
+; GFX950-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX950-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 0, v[2:3]
+; GFX950-SDAG-NEXT:    global_store_dwordx4 v[0:1], v[4:7], off offset:-128 sc0
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-SDAG-LABEL: global_store_v4i32_zext_vgpr_offset_neg128:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0:
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX10-1-GENERIC-SDAG-NEXT:    global_store_dwordx4 v[0:1], v[3:6], off offset:-128
+; GFX10-1-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: global_store_v4i32_zext_vgpr_offset_neg128:
+; GFX1012-SDAG:       ; %bb.0:
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX1012-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX1012-SDAG-NEXT:    global_store_dwordx4 v[0:1], v[3:6], off offset:-128
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-SDAG-LABEL: global_store_v4i32_zext_vgpr_offset_neg128:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0:
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX10-3-GENERIC-SDAG-NEXT:    global_store_dwordx4 v[0:1], v[3:6], off offset:-128
+; GFX10-3-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-SDAG-LABEL: global_store_v4i32_zext_vgpr_offset_neg128:
+; GFX11-GENERIC-SDAG:       ; %bb.0:
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX11-GENERIC-SDAG-NEXT:    av_global_store_b128 v[0:1], v[3:6], off offset:-128
+; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: global_store_v4i32_zext_vgpr_offset_neg128:
+; GFX1250-SDAG:       ; %bb.0:
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    v_dual_mov_b32 v7, v6 :: v_dual_mov_b32 v6, v5
+; GFX1250-SDAG-NEXT:    v_dual_mov_b32 v5, v4 :: v_dual_mov_b32 v4, v3
+; GFX1250-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX1250-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX1250-SDAG-NEXT:    v_add_nc_u64_e32 v[0:1], v[0:1], v[2:3]
+; GFX1250-SDAG-NEXT:    av_global_store_b128 v[0:1], v[4:7], off offset:-128
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-SDAG-LABEL: global_store_v4i32_zext_vgpr_offset_neg128:
+; GFX12-GENERIC-SDAG:       ; %bb.0:
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)
+; GFX12-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX12-GENERIC-SDAG-NEXT:    av_global_store_b128 v[0:1], v[3:6], off offset:-128 scope:SCOPE_SE
+; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-GENERIC-ISEL-LABEL: global_store_v4i32_zext_vgpr_offset_neg128:
+; GFX9-GENERIC-ISEL:       ; %bb.0:
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX9-GENERIC-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX9-GENERIC-ISEL-NEXT:    global_store_dwordx4 v[0:1], v[3:6], off offset:-128
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-ISEL-LABEL: global_store_v4i32_zext_vgpr_offset_neg128:
+; GFX906-ISEL:       ; %bb.0:
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX906-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX906-ISEL-NEXT:    global_store_dwordx4 v[0:1], v[3:6], off offset:-128
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-ISEL-LABEL: global_store_v4i32_zext_vgpr_offset_neg128:
+; GFX908-ISEL:       ; %bb.0:
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX908-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX908-ISEL-NEXT:    global_store_dwordx4 v[0:1], v[3:6], off offset:-128
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90a-ISEL-LABEL: global_store_v4i32_zext_vgpr_offset_neg128:
+; GFX90a-ISEL:       ; %bb.0:
+; GFX90a-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90a-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX90a-ISEL-NEXT:    v_mov_b32_e32 v8, v3
+; GFX90a-ISEL-NEXT:    v_mov_b32_e32 v9, v4
+; GFX90a-ISEL-NEXT:    v_mov_b32_e32 v10, v5
+; GFX90a-ISEL-NEXT:    v_mov_b32_e32 v11, v6
+; GFX90a-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX90a-ISEL-NEXT:    global_store_dwordx4 v[0:1], v[8:11], off offset:-128
+; GFX90a-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90a-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-ISEL-LABEL: global_store_v4i32_zext_vgpr_offset_neg128:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0:
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX9-4-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v8, v3
+; GFX9-4-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v9, v4
+; GFX9-4-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v10, v5
+; GFX9-4-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v11, v6
+; GFX9-4-GENERIC-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX9-4-GENERIC-ISEL-NEXT:    global_store_dwordx4 v[0:1], v[8:11], off offset:-128 sc0
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-ISEL-LABEL: global_store_v4i32_zext_vgpr_offset_neg128:
+; GFX942-ISEL:       ; %bb.0:
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX942-ISEL-NEXT:    v_mov_b32_e32 v8, v3
+; GFX942-ISEL-NEXT:    v_mov_b32_e32 v9, v4
+; GFX942-ISEL-NEXT:    v_mov_b32_e32 v10, v5
+; GFX942-ISEL-NEXT:    v_mov_b32_e32 v11, v6
+; GFX942-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX942-ISEL-NEXT:    global_store_dwordx4 v[0:1], v[8:11], off offset:-128 sc0
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-ISEL-LABEL: global_store_v4i32_zext_vgpr_offset_neg128:
+; GFX950-ISEL:       ; %bb.0:
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX950-ISEL-NEXT:    v_mov_b32_e32 v8, v3
+; GFX950-ISEL-NEXT:    v_mov_b32_e32 v9, v4
+; GFX950-ISEL-NEXT:    v_mov_b32_e32 v10, v5
+; GFX950-ISEL-NEXT:    v_mov_b32_e32 v11, v6
+; GFX950-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX950-ISEL-NEXT:    global_store_dwordx4 v[0:1], v[8:11], off offset:-128 sc0
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-ISEL-LABEL: global_store_v4i32_zext_vgpr_offset_neg128:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0:
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX10-1-GENERIC-ISEL-NEXT:    global_store_dwordx4 v[0:1], v[3:6], off offset:-128
+; GFX10-1-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: global_store_v4i32_zext_vgpr_offset_neg128:
+; GFX1012-ISEL:       ; %bb.0:
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX1012-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX1012-ISEL-NEXT:    global_store_dwordx4 v[0:1], v[3:6], off offset:-128
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-ISEL-LABEL: global_store_v4i32_zext_vgpr_offset_neg128:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0:
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX10-3-GENERIC-ISEL-NEXT:    global_store_dwordx4 v[0:1], v[3:6], off offset:-128
+; GFX10-3-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-ISEL-LABEL: global_store_v4i32_zext_vgpr_offset_neg128:
+; GFX11-GENERIC-ISEL:       ; %bb.0:
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX11-GENERIC-ISEL-NEXT:    av_global_store_b128 v[0:1], v[3:6], off offset:-128
+; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: global_store_v4i32_zext_vgpr_offset_neg128:
+; GFX1250-ISEL:       ; %bb.0:
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX1250-ISEL-NEXT:    v_dual_mov_b32 v8, v3 :: v_dual_mov_b32 v9, v4
+; GFX1250-ISEL-NEXT:    v_dual_mov_b32 v10, v5 :: v_dual_mov_b32 v11, v6
+; GFX1250-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX1250-ISEL-NEXT:    av_global_store_b128 v[0:1], v[8:11], off offset:-128
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-ISEL-LABEL: global_store_v4i32_zext_vgpr_offset_neg128:
+; GFX12-GENERIC-ISEL:       ; %bb.0:
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_alu depctr_va_vcc(0)
+; GFX12-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX12-GENERIC-ISEL-NEXT:    av_global_store_b128 v[0:1], v[3:6], off offset:-128 scope:SCOPE_SE
+; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+  %zext.offset = zext i32 %voffset to i64
+  %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 %zext.offset
+  %gep1 = getelementptr inbounds i8, ptr addrspace(1) %gep0, i64 -128
+  call void @llvm.amdgcn.av.global.store.b128(ptr addrspace(1) %gep1, <4 x i32> %data, metadata !1)
+  ret void
+}
+
+;; Maximum positive offset on gfx10
+define void @global_store_i8_zext_vgpr_offset_2047(ptr addrspace(1) %sbase, ptr addrspace(1) %voffset.ptr, <4 x i32> %data) {
+; GFX9-GENERIC-SDAG-LABEL: global_store_i8_zext_vgpr_offset_2047:
+; GFX9-GENERIC-SDAG:       ; %bb.0:
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dword v2, v[2:3], off
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX9-GENERIC-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX9-GENERIC-SDAG-NEXT:    global_store_dwordx4 v[0:1], v[4:7], off offset:2047
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-SDAG-LABEL: global_store_i8_zext_vgpr_offset_2047:
+; GFX906-SDAG:       ; %bb.0:
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-SDAG-NEXT:    global_load_dword v2, v[2:3], off
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX906-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX906-SDAG-NEXT:    global_store_dwordx4 v[0:1], v[4:7], off offset:2047
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-SDAG-LABEL: global_store_i8_zext_vgpr_offset_2047:
+; GFX908-SDAG:       ; %bb.0:
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-SDAG-NEXT:    global_load_dword v2, v[2:3], off
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX908-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX908-SDAG-NEXT:    global_store_dwordx4 v[0:1], v[4:7], off offset:2047
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90a-SDAG-LABEL: global_store_i8_zext_vgpr_offset_2047:
+; GFX90a-SDAG:       ; %bb.0:
+; GFX90a-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90a-SDAG-NEXT:    global_load_dword v2, v[2:3], off
+; GFX90a-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90a-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX90a-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX90a-SDAG-NEXT:    global_store_dwordx4 v[0:1], v[4:7], off offset:2047
+; GFX90a-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90a-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-SDAG-LABEL: global_store_i8_zext_vgpr_offset_2047:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0:
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dword v2, v[2:3], off
+; GFX9-4-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 0, v[2:3]
+; GFX9-4-GENERIC-SDAG-NEXT:    global_store_dwordx4 v[0:1], v[4:7], off offset:2047 sc1
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-SDAG-LABEL: global_store_i8_zext_vgpr_offset_2047:
+; GFX942-SDAG:       ; %bb.0:
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    global_load_dword v2, v[2:3], off
+; GFX942-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 0, v[2:3]
+; GFX942-SDAG-NEXT:    global_store_dwordx4 v[0:1], v[4:7], off offset:2047 sc1
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-SDAG-LABEL: global_store_i8_zext_vgpr_offset_2047:
+; GFX950-SDAG:       ; %bb.0:
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-SDAG-NEXT:    global_load_dword v2, v[2:3], off
+; GFX950-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 0, v[2:3]
+; GFX950-SDAG-NEXT:    global_store_dwordx4 v[0:1], v[4:7], off offset:2047 sc1
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-SDAG-LABEL: global_store_i8_zext_vgpr_offset_2047:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0:
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dword v2, v[2:3], off
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX10-1-GENERIC-SDAG-NEXT:    global_store_dwordx4 v[0:1], v[4:7], off offset:2047
+; GFX10-1-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: global_store_i8_zext_vgpr_offset_2047:
+; GFX1012-SDAG:       ; %bb.0:
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    global_load_dword v2, v[2:3], off
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX1012-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX1012-SDAG-NEXT:    global_store_dwordx4 v[0:1], v[4:7], off offset:2047
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-SDAG-LABEL: global_store_i8_zext_vgpr_offset_2047:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0:
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dword v2, v[2:3], off
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX10-3-GENERIC-SDAG-NEXT:    global_store_dwordx4 v[0:1], v[4:7], off offset:2047
+; GFX10-3-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-SDAG-LABEL: global_store_i8_zext_vgpr_offset_2047:
+; GFX11-GENERIC-SDAG:       ; %bb.0:
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b32 v2, v[2:3], off
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX11-GENERIC-SDAG-NEXT:    av_global_store_b128 v[0:1], v[4:7], off offset:2047
+; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: global_store_i8_zext_vgpr_offset_2047:
+; GFX1250-SDAG:       ; %bb.0:
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    global_load_b32 v2, v[2:3], off
+; GFX1250-SDAG-NEXT:    s_wait_xcnt 0x0
+; GFX1250-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX1250-SDAG-NEXT:    v_add_nc_u64_e32 v[0:1], v[0:1], v[2:3]
+; GFX1250-SDAG-NEXT:    av_global_store_b128 v[0:1], v[4:7], off offset:2047 scope:SCOPE_DEV
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-SDAG-LABEL: global_store_i8_zext_vgpr_offset_2047:
+; GFX12-GENERIC-SDAG:       ; %bb.0:
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b32 v2, v[2:3], off
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)
+; GFX12-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX12-GENERIC-SDAG-NEXT:    av_global_store_b128 v[0:1], v[4:7], off offset:2047 scope:SCOPE_DEV
+; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-GENERIC-ISEL-LABEL: global_store_i8_zext_vgpr_offset_2047:
+; GFX9-GENERIC-ISEL:       ; %bb.0:
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dword v2, v[2:3], off
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX9-GENERIC-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX9-GENERIC-ISEL-NEXT:    global_store_dwordx4 v[0:1], v[4:7], off offset:2047
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-ISEL-LABEL: global_store_i8_zext_vgpr_offset_2047:
+; GFX906-ISEL:       ; %bb.0:
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-ISEL-NEXT:    global_load_dword v2, v[2:3], off
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX906-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX906-ISEL-NEXT:    global_store_dwordx4 v[0:1], v[4:7], off offset:2047
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-ISEL-LABEL: global_store_i8_zext_vgpr_offset_2047:
+; GFX908-ISEL:       ; %bb.0:
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-ISEL-NEXT:    global_load_dword v2, v[2:3], off
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX908-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX908-ISEL-NEXT:    global_store_dwordx4 v[0:1], v[4:7], off offset:2047
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90a-ISEL-LABEL: global_store_i8_zext_vgpr_offset_2047:
+; GFX90a-ISEL:       ; %bb.0:
+; GFX90a-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90a-ISEL-NEXT:    global_load_dword v2, v[2:3], off
+; GFX90a-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90a-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX90a-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX90a-ISEL-NEXT:    global_store_dwordx4 v[0:1], v[4:7], off offset:2047
+; GFX90a-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90a-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-ISEL-LABEL: global_store_i8_zext_vgpr_offset_2047:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0:
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dword v2, v[2:3], off
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX9-4-GENERIC-ISEL-NEXT:    s_nop 1
+; GFX9-4-GENERIC-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX9-4-GENERIC-ISEL-NEXT:    global_store_dwordx4 v[0:1], v[4:7], off offset:2047 sc1
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-ISEL-LABEL: global_store_i8_zext_vgpr_offset_2047:
+; GFX942-ISEL:       ; %bb.0:
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    global_load_dword v2, v[2:3], off
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX942-ISEL-NEXT:    s_nop 1
+; GFX942-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX942-ISEL-NEXT:    global_store_dwordx4 v[0:1], v[4:7], off offset:2047 sc1
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-ISEL-LABEL: global_store_i8_zext_vgpr_offset_2047:
+; GFX950-ISEL:       ; %bb.0:
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-ISEL-NEXT:    global_load_dword v2, v[2:3], off
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX950-ISEL-NEXT:    s_nop 1
+; GFX950-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX950-ISEL-NEXT:    global_store_dwordx4 v[0:1], v[4:7], off offset:2047 sc1
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-ISEL-LABEL: global_store_i8_zext_vgpr_offset_2047:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0:
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dword v2, v[2:3], off
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX10-1-GENERIC-ISEL-NEXT:    global_store_dwordx4 v[0:1], v[4:7], off offset:2047
+; GFX10-1-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: global_store_i8_zext_vgpr_offset_2047:
+; GFX1012-ISEL:       ; %bb.0:
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    global_load_dword v2, v[2:3], off
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX1012-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX1012-ISEL-NEXT:    global_store_dwordx4 v[0:1], v[4:7], off offset:2047
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-ISEL-LABEL: global_store_i8_zext_vgpr_offset_2047:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0:
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dword v2, v[2:3], off
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX10-3-GENERIC-ISEL-NEXT:    global_store_dwordx4 v[0:1], v[4:7], off offset:2047
+; GFX10-3-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-ISEL-LABEL: global_store_i8_zext_vgpr_offset_2047:
+; GFX11-GENERIC-ISEL:       ; %bb.0:
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b32 v2, v[2:3], off
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX11-GENERIC-ISEL-NEXT:    av_global_store_b128 v[0:1], v[4:7], off offset:2047
+; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: global_store_i8_zext_vgpr_offset_2047:
+; GFX1250-ISEL:       ; %bb.0:
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    global_load_b32 v2, v[2:3], off
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX1250-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX1250-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX1250-ISEL-NEXT:    s_wait_xcnt 0x0
+; GFX1250-ISEL-NEXT:    av_global_store_b128 v[0:1], v[4:7], off offset:2047 scope:SCOPE_DEV
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-ISEL-LABEL: global_store_i8_zext_vgpr_offset_2047:
+; GFX12-GENERIC-ISEL:       ; %bb.0:
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b32 v2, v[2:3], off
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_alu depctr_va_vcc(0)
+; GFX12-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX12-GENERIC-ISEL-NEXT:    av_global_store_b128 v[0:1], v[4:7], off offset:2047 scope:SCOPE_DEV
+; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+  %voffset = load i32, ptr addrspace(1) %voffset.ptr
+  %zext.offset = zext i32 %voffset to i64
+  %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 %zext.offset
+  %gep1 = getelementptr inbounds i8, ptr addrspace(1) %gep0, i64 2047
+  call void @llvm.amdgcn.av.global.store.b128(ptr addrspace(1) %gep1, <4 x i32> %data, metadata !2)
+  ret void
+}
+
+;; Maximum negative offset on gfx10
+define void @global_store_i8_zext_vgpr_offset_neg2048(ptr addrspace(1) %sbase, ptr addrspace(1) %voffset.ptr, <4 x i32> %data) {
+; GFX9-GENERIC-SDAG-LABEL: global_store_i8_zext_vgpr_offset_neg2048:
+; GFX9-GENERIC-SDAG:       ; %bb.0:
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dword v2, v[2:3], off
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX9-GENERIC-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX9-GENERIC-SDAG-NEXT:    global_store_dwordx4 v[0:1], v[4:7], off offset:-2048
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-SDAG-LABEL: global_store_i8_zext_vgpr_offset_neg2048:
+; GFX906-SDAG:       ; %bb.0:
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-SDAG-NEXT:    global_load_dword v2, v[2:3], off
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX906-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX906-SDAG-NEXT:    global_store_dwordx4 v[0:1], v[4:7], off offset:-2048
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-SDAG-LABEL: global_store_i8_zext_vgpr_offset_neg2048:
+; GFX908-SDAG:       ; %bb.0:
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-SDAG-NEXT:    global_load_dword v2, v[2:3], off
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX908-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX908-SDAG-NEXT:    global_store_dwordx4 v[0:1], v[4:7], off offset:-2048
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90a-SDAG-LABEL: global_store_i8_zext_vgpr_offset_neg2048:
+; GFX90a-SDAG:       ; %bb.0:
+; GFX90a-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90a-SDAG-NEXT:    global_load_dword v2, v[2:3], off
+; GFX90a-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90a-SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX90a-SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX90a-SDAG-NEXT:    global_store_dwordx4 v[0:1], v[4:7], off offset:-2048
+; GFX90a-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90a-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-SDAG-LABEL: global_store_i8_zext_vgpr_offset_neg2048:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0:
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dword v2, v[2:3], off
+; GFX9-4-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 0, v[2:3]
+; GFX9-4-GENERIC-SDAG-NEXT:    global_store_dwordx4 v[0:1], v[4:7], off offset:-2048 sc0 sc1
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-SDAG-LABEL: global_store_i8_zext_vgpr_offset_neg2048:
+; GFX942-SDAG:       ; %bb.0:
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    global_load_dword v2, v[2:3], off
+; GFX942-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 0, v[2:3]
+; GFX942-SDAG-NEXT:    global_store_dwordx4 v[0:1], v[4:7], off offset:-2048 sc0 sc1
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-SDAG-LABEL: global_store_i8_zext_vgpr_offset_neg2048:
+; GFX950-SDAG:       ; %bb.0:
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-SDAG-NEXT:    global_load_dword v2, v[2:3], off
+; GFX950-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 0, v[2:3]
+; GFX950-SDAG-NEXT:    global_store_dwordx4 v[0:1], v[4:7], off offset:-2048 sc0 sc1
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-SDAG-LABEL: global_store_i8_zext_vgpr_offset_neg2048:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0:
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dword v2, v[2:3], off
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX10-1-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX10-1-GENERIC-SDAG-NEXT:    global_store_dwordx4 v[0:1], v[4:7], off offset:-2048
+; GFX10-1-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: global_store_i8_zext_vgpr_offset_neg2048:
+; GFX1012-SDAG:       ; %bb.0:
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    global_load_dword v2, v[2:3], off
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX1012-SDAG-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX1012-SDAG-NEXT:    global_store_dwordx4 v[0:1], v[4:7], off offset:-2048
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-SDAG-LABEL: global_store_i8_zext_vgpr_offset_neg2048:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0:
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dword v2, v[2:3], off
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX10-3-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX10-3-GENERIC-SDAG-NEXT:    global_store_dwordx4 v[0:1], v[4:7], off offset:-2048
+; GFX10-3-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-SDAG-LABEL: global_store_i8_zext_vgpr_offset_neg2048:
+; GFX11-GENERIC-SDAG:       ; %bb.0:
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b32 v2, v[2:3], off
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX11-GENERIC-SDAG-NEXT:    av_global_store_b128 v[0:1], v[4:7], off offset:-2048
+; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: global_store_i8_zext_vgpr_offset_neg2048:
+; GFX1250-SDAG:       ; %bb.0:
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    global_load_b32 v2, v[2:3], off
+; GFX1250-SDAG-NEXT:    s_wait_xcnt 0x0
+; GFX1250-SDAG-NEXT:    v_mov_b32_e32 v3, 0
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX1250-SDAG-NEXT:    v_add_nc_u64_e32 v[0:1], v[0:1], v[2:3]
+; GFX1250-SDAG-NEXT:    av_global_store_b128 v[0:1], v[4:7], off offset:-2048 scope:SCOPE_SYS
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-SDAG-LABEL: global_store_i8_zext_vgpr_offset_neg2048:
+; GFX12-GENERIC-SDAG:       ; %bb.0:
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b32 v2, v[2:3], off
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)
+; GFX12-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX12-GENERIC-SDAG-NEXT:    av_global_store_b128 v[0:1], v[4:7], off offset:-2048 scope:SCOPE_SYS
+; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-GENERIC-ISEL-LABEL: global_store_i8_zext_vgpr_offset_neg2048:
+; GFX9-GENERIC-ISEL:       ; %bb.0:
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dword v2, v[2:3], off
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX9-GENERIC-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX9-GENERIC-ISEL-NEXT:    global_store_dwordx4 v[0:1], v[4:7], off offset:-2048
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-ISEL-LABEL: global_store_i8_zext_vgpr_offset_neg2048:
+; GFX906-ISEL:       ; %bb.0:
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-ISEL-NEXT:    global_load_dword v2, v[2:3], off
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX906-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX906-ISEL-NEXT:    global_store_dwordx4 v[0:1], v[4:7], off offset:-2048
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-ISEL-LABEL: global_store_i8_zext_vgpr_offset_neg2048:
+; GFX908-ISEL:       ; %bb.0:
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-ISEL-NEXT:    global_load_dword v2, v[2:3], off
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX908-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX908-ISEL-NEXT:    global_store_dwordx4 v[0:1], v[4:7], off offset:-2048
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90a-ISEL-LABEL: global_store_i8_zext_vgpr_offset_neg2048:
+; GFX90a-ISEL:       ; %bb.0:
+; GFX90a-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90a-ISEL-NEXT:    global_load_dword v2, v[2:3], off
+; GFX90a-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90a-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX90a-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX90a-ISEL-NEXT:    global_store_dwordx4 v[0:1], v[4:7], off offset:-2048
+; GFX90a-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90a-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-ISEL-LABEL: global_store_i8_zext_vgpr_offset_neg2048:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0:
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dword v2, v[2:3], off
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX9-4-GENERIC-ISEL-NEXT:    s_nop 1
+; GFX9-4-GENERIC-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX9-4-GENERIC-ISEL-NEXT:    global_store_dwordx4 v[0:1], v[4:7], off offset:-2048 sc0 sc1
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-ISEL-LABEL: global_store_i8_zext_vgpr_offset_neg2048:
+; GFX942-ISEL:       ; %bb.0:
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    global_load_dword v2, v[2:3], off
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX942-ISEL-NEXT:    s_nop 1
+; GFX942-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX942-ISEL-NEXT:    global_store_dwordx4 v[0:1], v[4:7], off offset:-2048 sc0 sc1
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-ISEL-LABEL: global_store_i8_zext_vgpr_offset_neg2048:
+; GFX950-ISEL:       ; %bb.0:
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-ISEL-NEXT:    global_load_dword v2, v[2:3], off
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    v_add_co_u32_e32 v0, vcc, v0, v2
+; GFX950-ISEL-NEXT:    s_nop 1
+; GFX950-ISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
+; GFX950-ISEL-NEXT:    global_store_dwordx4 v[0:1], v[4:7], off offset:-2048 sc0 sc1
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-ISEL-LABEL: global_store_i8_zext_vgpr_offset_neg2048:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0:
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dword v2, v[2:3], off
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX10-1-GENERIC-ISEL-NEXT:    global_store_dwordx4 v[0:1], v[4:7], off offset:-2048
+; GFX10-1-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: global_store_i8_zext_vgpr_offset_neg2048:
+; GFX1012-ISEL:       ; %bb.0:
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    global_load_dword v2, v[2:3], off
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX1012-ISEL-NEXT:    v_add_co_ci_u32_e32 v1, vcc_lo, 0, v1, vcc_lo
+; GFX1012-ISEL-NEXT:    global_store_dwordx4 v[0:1], v[4:7], off offset:-2048
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-ISEL-LABEL: global_store_i8_zext_vgpr_offset_neg2048:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0:
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dword v2, v[2:3], off
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX10-3-GENERIC-ISEL-NEXT:    global_store_dwordx4 v[0:1], v[4:7], off offset:-2048
+; GFX10-3-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-ISEL-LABEL: global_store_i8_zext_vgpr_offset_neg2048:
+; GFX11-GENERIC-ISEL:       ; %bb.0:
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b32 v2, v[2:3], off
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX11-GENERIC-ISEL-NEXT:    av_global_store_b128 v[0:1], v[4:7], off offset:-2048
+; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: global_store_i8_zext_vgpr_offset_neg2048:
+; GFX1250-ISEL:       ; %bb.0:
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    global_load_b32 v2, v[2:3], off
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX1250-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX1250-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX1250-ISEL-NEXT:    s_wait_xcnt 0x0
+; GFX1250-ISEL-NEXT:    av_global_store_b128 v[0:1], v[4:7], off offset:-2048 scope:SCOPE_SYS
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-ISEL-LABEL: global_store_i8_zext_vgpr_offset_neg2048:
+; GFX12-GENERIC-ISEL:       ; %bb.0:
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b32 v2, v[2:3], off
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_alu depctr_va_vcc(0)
+; GFX12-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
+; GFX12-GENERIC-ISEL-NEXT:    av_global_store_b128 v[0:1], v[4:7], off offset:-2048 scope:SCOPE_SYS
+; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+  %voffset = load i32, ptr addrspace(1) %voffset.ptr
+  %zext.offset = zext i32 %voffset to i64
+  %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 %zext.offset
+  %gep1 = getelementptr inbounds i8, ptr addrspace(1) %gep0, i64 -2048
+  call void @llvm.amdgcn.av.global.store.b128(ptr addrspace(1) %gep1, <4 x i32> %data, metadata !3)
+  ret void
+}
+;;==============================================================================
+;; } end signed offset addressing modes
+;;==============================================================================
+
+;;==============================================================================
+;; Various saddr addressing modes (derived from global-saddr-load.ll) {
+;;==============================================================================
+
+define void @global_store_saddr_i8_zext_vgpr(ptr addrspace(1) inreg %sbase, ptr addrspace(1) %voffset.ptr, <4 x i32> %data) {
+; GFX9-GENERIC-SDAG-LABEL: global_store_saddr_i8_zext_vgpr:
+; GFX9-GENERIC-SDAG:       ; %bb.0:
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dword v0, v[0:1], off
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    global_store_dwordx4 v0, v[2:5], s[16:17]
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-SDAG-LABEL: global_store_saddr_i8_zext_vgpr:
+; GFX906-SDAG:       ; %bb.0:
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-SDAG-NEXT:    global_load_dword v0, v[0:1], off
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    global_store_dwordx4 v0, v[2:5], s[16:17]
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-SDAG-LABEL: global_store_saddr_i8_zext_vgpr:
+; GFX908-SDAG:       ; %bb.0:
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-SDAG-NEXT:    global_load_dword v0, v[0:1], off
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    global_store_dwordx4 v0, v[2:5], s[16:17]
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90a-SDAG-LABEL: global_store_saddr_i8_zext_vgpr:
+; GFX90a-SDAG:       ; %bb.0:
+; GFX90a-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90a-SDAG-NEXT:    global_load_dword v0, v[0:1], off
+; GFX90a-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90a-SDAG-NEXT:    global_store_dwordx4 v0, v[2:5], s[16:17]
+; GFX90a-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90a-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-SDAG-LABEL: global_store_saddr_i8_zext_vgpr:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0:
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dword v0, v[0:1], off
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    global_store_dwordx4 v0, v[2:5], s[0:1]
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-SDAG-LABEL: global_store_saddr_i8_zext_vgpr:
+; GFX942-SDAG:       ; %bb.0:
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    global_load_dword v0, v[0:1], off
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    global_store_dwordx4 v0, v[2:5], s[0:1]
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-SDAG-LABEL: global_store_saddr_i8_zext_vgpr:
+; GFX950-SDAG:       ; %bb.0:
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-SDAG-NEXT:    global_load_dword v0, v[0:1], off
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    global_store_dwordx4 v0, v[2:5], s[0:1]
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-SDAG-LABEL: global_store_saddr_i8_zext_vgpr:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0:
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dword v0, v[0:1], off
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    global_store_dwordx4 v0, v[2:5], s[16:17]
+; GFX10-1-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: global_store_saddr_i8_zext_vgpr:
+; GFX1012-SDAG:       ; %bb.0:
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    global_load_dword v0, v[0:1], off
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    global_store_dwordx4 v0, v[2:5], s[16:17]
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-SDAG-LABEL: global_store_saddr_i8_zext_vgpr:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0:
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dword v0, v[0:1], off
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    global_store_dwordx4 v0, v[2:5], s[16:17]
+; GFX10-3-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-SDAG-LABEL: global_store_saddr_i8_zext_vgpr:
+; GFX11-GENERIC-SDAG:       ; %bb.0:
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b32 v0, v[0:1], off
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    av_global_store_b128 v0, v[2:5], s[0:1]
+; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: global_store_saddr_i8_zext_vgpr:
+; GFX1250-SDAG:       ; %bb.0:
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    global_load_b32 v0, v[0:1], off
+; GFX1250-SDAG-NEXT:    s_wait_xcnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    av_global_store_b128 v0, v[2:5], s[0:1]
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-SDAG-LABEL: global_store_saddr_i8_zext_vgpr:
+; GFX12-GENERIC-SDAG:       ; %bb.0:
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b32 v0, v[0:1], off
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    av_global_store_b128 v0, v[2:5], s[0:1]
+; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-GENERIC-ISEL-LABEL: global_store_saddr_i8_zext_vgpr:
+; GFX9-GENERIC-ISEL:       ; %bb.0:
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dword v0, v[0:1], off
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    global_store_dwordx4 v0, v[2:5], s[16:17]
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-ISEL-LABEL: global_store_saddr_i8_zext_vgpr:
+; GFX906-ISEL:       ; %bb.0:
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-ISEL-NEXT:    global_load_dword v0, v[0:1], off
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    global_store_dwordx4 v0, v[2:5], s[16:17]
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-ISEL-LABEL: global_store_saddr_i8_zext_vgpr:
+; GFX908-ISEL:       ; %bb.0:
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-ISEL-NEXT:    global_load_dword v0, v[0:1], off
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    global_store_dwordx4 v0, v[2:5], s[16:17]
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90a-ISEL-LABEL: global_store_saddr_i8_zext_vgpr:
+; GFX90a-ISEL:       ; %bb.0:
+; GFX90a-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90a-ISEL-NEXT:    global_load_dword v0, v[0:1], off
+; GFX90a-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90a-ISEL-NEXT:    global_store_dwordx4 v0, v[2:5], s[16:17]
+; GFX90a-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90a-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-ISEL-LABEL: global_store_saddr_i8_zext_vgpr:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0:
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dword v0, v[0:1], off
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    global_store_dwordx4 v0, v[2:5], s[0:1]
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-ISEL-LABEL: global_store_saddr_i8_zext_vgpr:
+; GFX942-ISEL:       ; %bb.0:
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    global_load_dword v0, v[0:1], off
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    global_store_dwordx4 v0, v[2:5], s[0:1]
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-ISEL-LABEL: global_store_saddr_i8_zext_vgpr:
+; GFX950-ISEL:       ; %bb.0:
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-ISEL-NEXT:    global_load_dword v0, v[0:1], off
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    global_store_dwordx4 v0, v[2:5], s[0:1]
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-ISEL-LABEL: global_store_saddr_i8_zext_vgpr:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0:
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dword v0, v[0:1], off
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    global_store_dwordx4 v0, v[2:5], s[16:17]
+; GFX10-1-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: global_store_saddr_i8_zext_vgpr:
+; GFX1012-ISEL:       ; %bb.0:
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    global_load_dword v0, v[0:1], off
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    global_store_dwordx4 v0, v[2:5], s[16:17]
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-ISEL-LABEL: global_store_saddr_i8_zext_vgpr:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0:
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dword v0, v[0:1], off
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    global_store_dwordx4 v0, v[2:5], s[16:17]
+; GFX10-3-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-ISEL-LABEL: global_store_saddr_i8_zext_vgpr:
+; GFX11-GENERIC-ISEL:       ; %bb.0:
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b32 v0, v[0:1], off
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    av_global_store_b128 v0, v[2:5], s[0:1]
+; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: global_store_saddr_i8_zext_vgpr:
+; GFX1250-ISEL:       ; %bb.0:
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    global_load_b32 v0, v[0:1], off
+; GFX1250-ISEL-NEXT:    s_wait_xcnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    av_global_store_b128 v0, v[2:5], s[0:1]
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-ISEL-LABEL: global_store_saddr_i8_zext_vgpr:
+; GFX12-GENERIC-ISEL:       ; %bb.0:
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b32 v0, v[0:1], off
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    av_global_store_b128 v0, v[2:5], s[0:1]
+; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+  %voffset = load i32, ptr addrspace(1) %voffset.ptr
+  %zext.offset = zext i32 %voffset to i64
+  %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 %zext.offset
+  call void @llvm.amdgcn.av.global.store.b128(ptr addrspace(1) %gep0, <4 x i32> %data, metadata !0)
+  ret void
+}
+
+define void @global_store_saddr_v4i32_zext_vgpr_offset_neg128(ptr addrspace(1) inreg %sbase, i32 %voffset, <4 x i32> %data) {
+; GFX9-GENERIC-SDAG-LABEL: global_store_saddr_v4i32_zext_vgpr_offset_neg128:
+; GFX9-GENERIC-SDAG:       ; %bb.0:
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    global_store_dwordx4 v0, v[1:4], s[16:17] offset:-128
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-SDAG-LABEL: global_store_saddr_v4i32_zext_vgpr_offset_neg128:
+; GFX906-SDAG:       ; %bb.0:
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-SDAG-NEXT:    global_store_dwordx4 v0, v[1:4], s[16:17] offset:-128
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-SDAG-LABEL: global_store_saddr_v4i32_zext_vgpr_offset_neg128:
+; GFX908-SDAG:       ; %bb.0:
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-SDAG-NEXT:    global_store_dwordx4 v0, v[1:4], s[16:17] offset:-128
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90a-SDAG-LABEL: global_store_saddr_v4i32_zext_vgpr_offset_neg128:
+; GFX90a-SDAG:       ; %bb.0:
+; GFX90a-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90a-SDAG-NEXT:    v_mov_b32_e32 v5, v4
+; GFX90a-SDAG-NEXT:    v_mov_b32_e32 v4, v3
+; GFX90a-SDAG-NEXT:    v_mov_b32_e32 v3, v2
+; GFX90a-SDAG-NEXT:    v_mov_b32_e32 v2, v1
+; GFX90a-SDAG-NEXT:    global_store_dwordx4 v0, v[2:5], s[16:17] offset:-128
+; GFX90a-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90a-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-SDAG-LABEL: global_store_saddr_v4i32_zext_vgpr_offset_neg128:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0:
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v5, v4
+; GFX9-4-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v4, v3
+; GFX9-4-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v3, v2
+; GFX9-4-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v2, v1
+; GFX9-4-GENERIC-SDAG-NEXT:    global_store_dwordx4 v0, v[2:5], s[0:1] offset:-128 sc0
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-SDAG-LABEL: global_store_saddr_v4i32_zext_vgpr_offset_neg128:
+; GFX942-SDAG:       ; %bb.0:
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    v_mov_b32_e32 v5, v4
+; GFX942-SDAG-NEXT:    v_mov_b32_e32 v4, v3
+; GFX942-SDAG-NEXT:    v_mov_b32_e32 v3, v2
+; GFX942-SDAG-NEXT:    v_mov_b32_e32 v2, v1
+; GFX942-SDAG-NEXT:    global_store_dwordx4 v0, v[2:5], s[0:1] offset:-128 sc0
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-SDAG-LABEL: global_store_saddr_v4i32_zext_vgpr_offset_neg128:
+; GFX950-SDAG:       ; %bb.0:
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-SDAG-NEXT:    v_mov_b32_e32 v5, v4
+; GFX950-SDAG-NEXT:    v_mov_b32_e32 v4, v3
+; GFX950-SDAG-NEXT:    v_mov_b32_e32 v3, v2
+; GFX950-SDAG-NEXT:    v_mov_b32_e32 v2, v1
+; GFX950-SDAG-NEXT:    global_store_dwordx4 v0, v[2:5], s[0:1] offset:-128 sc0
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-SDAG-LABEL: global_store_saddr_v4i32_zext_vgpr_offset_neg128:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0:
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    global_store_dwordx4 v0, v[1:4], s[16:17] offset:-128
+; GFX10-1-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: global_store_saddr_v4i32_zext_vgpr_offset_neg128:
+; GFX1012-SDAG:       ; %bb.0:
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    global_store_dwordx4 v0, v[1:4], s[16:17] offset:-128
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-SDAG-LABEL: global_store_saddr_v4i32_zext_vgpr_offset_neg128:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0:
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    global_store_dwordx4 v0, v[1:4], s[16:17] offset:-128
+; GFX10-3-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-SDAG-LABEL: global_store_saddr_v4i32_zext_vgpr_offset_neg128:
+; GFX11-GENERIC-SDAG:       ; %bb.0:
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    av_global_store_b128 v0, v[1:4], s[0:1] offset:-128
+; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: global_store_saddr_v4i32_zext_vgpr_offset_neg128:
+; GFX1250-SDAG:       ; %bb.0:
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    v_dual_mov_b32 v5, v4 :: v_dual_mov_b32 v4, v3
+; GFX1250-SDAG-NEXT:    v_dual_mov_b32 v3, v2 :: v_dual_mov_b32 v2, v1
+; GFX1250-SDAG-NEXT:    av_global_store_b128 v0, v[2:5], s[0:1] offset:-128
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-SDAG-LABEL: global_store_saddr_v4i32_zext_vgpr_offset_neg128:
+; GFX12-GENERIC-SDAG:       ; %bb.0:
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    av_global_store_b128 v0, v[1:4], s[0:1] offset:-128 scope:SCOPE_SE
+; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-GENERIC-ISEL-LABEL: global_store_saddr_v4i32_zext_vgpr_offset_neg128:
+; GFX9-GENERIC-ISEL:       ; %bb.0:
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    global_store_dwordx4 v0, v[1:4], s[16:17] offset:-128
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-ISEL-LABEL: global_store_saddr_v4i32_zext_vgpr_offset_neg128:
+; GFX906-ISEL:       ; %bb.0:
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-ISEL-NEXT:    global_store_dwordx4 v0, v[1:4], s[16:17] offset:-128
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-ISEL-LABEL: global_store_saddr_v4i32_zext_vgpr_offset_neg128:
+; GFX908-ISEL:       ; %bb.0:
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-ISEL-NEXT:    global_store_dwordx4 v0, v[1:4], s[16:17] offset:-128
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90a-ISEL-LABEL: global_store_saddr_v4i32_zext_vgpr_offset_neg128:
+; GFX90a-ISEL:       ; %bb.0:
+; GFX90a-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90a-ISEL-NEXT:    v_mov_b32_e32 v6, v1
+; GFX90a-ISEL-NEXT:    v_mov_b32_e32 v7, v2
+; GFX90a-ISEL-NEXT:    v_mov_b32_e32 v8, v3
+; GFX90a-ISEL-NEXT:    v_mov_b32_e32 v9, v4
+; GFX90a-ISEL-NEXT:    global_store_dwordx4 v0, v[6:9], s[16:17] offset:-128
+; GFX90a-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90a-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-ISEL-LABEL: global_store_saddr_v4i32_zext_vgpr_offset_neg128:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0:
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v6, v1
+; GFX9-4-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v7, v2
+; GFX9-4-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v8, v3
+; GFX9-4-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v9, v4
+; GFX9-4-GENERIC-ISEL-NEXT:    global_store_dwordx4 v0, v[6:9], s[0:1] offset:-128 sc0
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-ISEL-LABEL: global_store_saddr_v4i32_zext_vgpr_offset_neg128:
+; GFX942-ISEL:       ; %bb.0:
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    v_mov_b32_e32 v6, v1
+; GFX942-ISEL-NEXT:    v_mov_b32_e32 v7, v2
+; GFX942-ISEL-NEXT:    v_mov_b32_e32 v8, v3
+; GFX942-ISEL-NEXT:    v_mov_b32_e32 v9, v4
+; GFX942-ISEL-NEXT:    global_store_dwordx4 v0, v[6:9], s[0:1] offset:-128 sc0
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-ISEL-LABEL: global_store_saddr_v4i32_zext_vgpr_offset_neg128:
+; GFX950-ISEL:       ; %bb.0:
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-ISEL-NEXT:    v_mov_b32_e32 v6, v1
+; GFX950-ISEL-NEXT:    v_mov_b32_e32 v7, v2
+; GFX950-ISEL-NEXT:    v_mov_b32_e32 v8, v3
+; GFX950-ISEL-NEXT:    v_mov_b32_e32 v9, v4
+; GFX950-ISEL-NEXT:    global_store_dwordx4 v0, v[6:9], s[0:1] offset:-128 sc0
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-ISEL-LABEL: global_store_saddr_v4i32_zext_vgpr_offset_neg128:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0:
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    global_store_dwordx4 v0, v[1:4], s[16:17] offset:-128
+; GFX10-1-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: global_store_saddr_v4i32_zext_vgpr_offset_neg128:
+; GFX1012-ISEL:       ; %bb.0:
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    global_store_dwordx4 v0, v[1:4], s[16:17] offset:-128
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-ISEL-LABEL: global_store_saddr_v4i32_zext_vgpr_offset_neg128:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0:
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    global_store_dwordx4 v0, v[1:4], s[16:17] offset:-128
+; GFX10-3-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-ISEL-LABEL: global_store_saddr_v4i32_zext_vgpr_offset_neg128:
+; GFX11-GENERIC-ISEL:       ; %bb.0:
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    av_global_store_b128 v0, v[1:4], s[0:1] offset:-128
+; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: global_store_saddr_v4i32_zext_vgpr_offset_neg128:
+; GFX1250-ISEL:       ; %bb.0:
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    v_dual_mov_b32 v6, v1 :: v_dual_mov_b32 v7, v2
+; GFX1250-ISEL-NEXT:    v_dual_mov_b32 v8, v3 :: v_dual_mov_b32 v9, v4
+; GFX1250-ISEL-NEXT:    av_global_store_b128 v0, v[6:9], s[0:1] offset:-128
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-ISEL-LABEL: global_store_saddr_v4i32_zext_vgpr_offset_neg128:
+; GFX12-GENERIC-ISEL:       ; %bb.0:
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    av_global_store_b128 v0, v[1:4], s[0:1] offset:-128 scope:SCOPE_SE
+; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+  %zext.offset = zext i32 %voffset to i64
+  %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 %zext.offset
+  %gep1 = getelementptr inbounds i8, ptr addrspace(1) %gep0, i64 -128
+  call void @llvm.amdgcn.av.global.store.b128(ptr addrspace(1) %gep1, <4 x i32> %data, metadata !1)
+  ret void
+}
+
+;; Maximum positive offset on gfx10
+define void @global_store_saddr_i8_zext_vgpr_offset_2047(ptr addrspace(1) inreg %sbase, ptr addrspace(1) %voffset.ptr, <4 x i32> %data) {
+; GFX9-GENERIC-SDAG-LABEL: global_store_saddr_i8_zext_vgpr_offset_2047:
+; GFX9-GENERIC-SDAG:       ; %bb.0:
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dword v0, v[0:1], off
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    global_store_dwordx4 v0, v[2:5], s[16:17] offset:2047
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-SDAG-LABEL: global_store_saddr_i8_zext_vgpr_offset_2047:
+; GFX906-SDAG:       ; %bb.0:
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-SDAG-NEXT:    global_load_dword v0, v[0:1], off
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    global_store_dwordx4 v0, v[2:5], s[16:17] offset:2047
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-SDAG-LABEL: global_store_saddr_i8_zext_vgpr_offset_2047:
+; GFX908-SDAG:       ; %bb.0:
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-SDAG-NEXT:    global_load_dword v0, v[0:1], off
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    global_store_dwordx4 v0, v[2:5], s[16:17] offset:2047
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90a-SDAG-LABEL: global_store_saddr_i8_zext_vgpr_offset_2047:
+; GFX90a-SDAG:       ; %bb.0:
+; GFX90a-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90a-SDAG-NEXT:    global_load_dword v0, v[0:1], off
+; GFX90a-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90a-SDAG-NEXT:    global_store_dwordx4 v0, v[2:5], s[16:17] offset:2047
+; GFX90a-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90a-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-SDAG-LABEL: global_store_saddr_i8_zext_vgpr_offset_2047:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0:
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dword v0, v[0:1], off
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    global_store_dwordx4 v0, v[2:5], s[0:1] offset:2047 sc1
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-SDAG-LABEL: global_store_saddr_i8_zext_vgpr_offset_2047:
+; GFX942-SDAG:       ; %bb.0:
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    global_load_dword v0, v[0:1], off
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    global_store_dwordx4 v0, v[2:5], s[0:1] offset:2047 sc1
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-SDAG-LABEL: global_store_saddr_i8_zext_vgpr_offset_2047:
+; GFX950-SDAG:       ; %bb.0:
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-SDAG-NEXT:    global_load_dword v0, v[0:1], off
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    global_store_dwordx4 v0, v[2:5], s[0:1] offset:2047 sc1
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-SDAG-LABEL: global_store_saddr_i8_zext_vgpr_offset_2047:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0:
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dword v0, v[0:1], off
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    global_store_dwordx4 v0, v[2:5], s[16:17] offset:2047
+; GFX10-1-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: global_store_saddr_i8_zext_vgpr_offset_2047:
+; GFX1012-SDAG:       ; %bb.0:
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    global_load_dword v0, v[0:1], off
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    global_store_dwordx4 v0, v[2:5], s[16:17] offset:2047
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-SDAG-LABEL: global_store_saddr_i8_zext_vgpr_offset_2047:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0:
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dword v0, v[0:1], off
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    global_store_dwordx4 v0, v[2:5], s[16:17] offset:2047
+; GFX10-3-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-SDAG-LABEL: global_store_saddr_i8_zext_vgpr_offset_2047:
+; GFX11-GENERIC-SDAG:       ; %bb.0:
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b32 v0, v[0:1], off
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    av_global_store_b128 v0, v[2:5], s[0:1] offset:2047
+; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: global_store_saddr_i8_zext_vgpr_offset_2047:
+; GFX1250-SDAG:       ; %bb.0:
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    global_load_b32 v0, v[0:1], off
+; GFX1250-SDAG-NEXT:    s_wait_xcnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    av_global_store_b128 v0, v[2:5], s[0:1] offset:2047 scope:SCOPE_DEV
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-SDAG-LABEL: global_store_saddr_i8_zext_vgpr_offset_2047:
+; GFX12-GENERIC-SDAG:       ; %bb.0:
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b32 v0, v[0:1], off
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    av_global_store_b128 v0, v[2:5], s[0:1] offset:2047 scope:SCOPE_DEV
+; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-GENERIC-ISEL-LABEL: global_store_saddr_i8_zext_vgpr_offset_2047:
+; GFX9-GENERIC-ISEL:       ; %bb.0:
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dword v0, v[0:1], off
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    global_store_dwordx4 v0, v[2:5], s[16:17] offset:2047
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-ISEL-LABEL: global_store_saddr_i8_zext_vgpr_offset_2047:
+; GFX906-ISEL:       ; %bb.0:
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-ISEL-NEXT:    global_load_dword v0, v[0:1], off
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    global_store_dwordx4 v0, v[2:5], s[16:17] offset:2047
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-ISEL-LABEL: global_store_saddr_i8_zext_vgpr_offset_2047:
+; GFX908-ISEL:       ; %bb.0:
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-ISEL-NEXT:    global_load_dword v0, v[0:1], off
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    global_store_dwordx4 v0, v[2:5], s[16:17] offset:2047
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90a-ISEL-LABEL: global_store_saddr_i8_zext_vgpr_offset_2047:
+; GFX90a-ISEL:       ; %bb.0:
+; GFX90a-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90a-ISEL-NEXT:    global_load_dword v0, v[0:1], off
+; GFX90a-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90a-ISEL-NEXT:    global_store_dwordx4 v0, v[2:5], s[16:17] offset:2047
+; GFX90a-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90a-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-ISEL-LABEL: global_store_saddr_i8_zext_vgpr_offset_2047:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0:
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dword v0, v[0:1], off
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    global_store_dwordx4 v0, v[2:5], s[0:1] offset:2047 sc1
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-ISEL-LABEL: global_store_saddr_i8_zext_vgpr_offset_2047:
+; GFX942-ISEL:       ; %bb.0:
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    global_load_dword v0, v[0:1], off
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    global_store_dwordx4 v0, v[2:5], s[0:1] offset:2047 sc1
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-ISEL-LABEL: global_store_saddr_i8_zext_vgpr_offset_2047:
+; GFX950-ISEL:       ; %bb.0:
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-ISEL-NEXT:    global_load_dword v0, v[0:1], off
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    global_store_dwordx4 v0, v[2:5], s[0:1] offset:2047 sc1
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-ISEL-LABEL: global_store_saddr_i8_zext_vgpr_offset_2047:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0:
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dword v0, v[0:1], off
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    global_store_dwordx4 v0, v[2:5], s[16:17] offset:2047
+; GFX10-1-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: global_store_saddr_i8_zext_vgpr_offset_2047:
+; GFX1012-ISEL:       ; %bb.0:
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    global_load_dword v0, v[0:1], off
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    global_store_dwordx4 v0, v[2:5], s[16:17] offset:2047
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-ISEL-LABEL: global_store_saddr_i8_zext_vgpr_offset_2047:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0:
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dword v0, v[0:1], off
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    global_store_dwordx4 v0, v[2:5], s[16:17] offset:2047
+; GFX10-3-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-ISEL-LABEL: global_store_saddr_i8_zext_vgpr_offset_2047:
+; GFX11-GENERIC-ISEL:       ; %bb.0:
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b32 v0, v[0:1], off
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    av_global_store_b128 v0, v[2:5], s[0:1] offset:2047
+; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: global_store_saddr_i8_zext_vgpr_offset_2047:
+; GFX1250-ISEL:       ; %bb.0:
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    global_load_b32 v0, v[0:1], off
+; GFX1250-ISEL-NEXT:    s_wait_xcnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    av_global_store_b128 v0, v[2:5], s[0:1] offset:2047 scope:SCOPE_DEV
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-ISEL-LABEL: global_store_saddr_i8_zext_vgpr_offset_2047:
+; GFX12-GENERIC-ISEL:       ; %bb.0:
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b32 v0, v[0:1], off
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    av_global_store_b128 v0, v[2:5], s[0:1] offset:2047 scope:SCOPE_DEV
+; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+  %voffset = load i32, ptr addrspace(1) %voffset.ptr
+  %zext.offset = zext i32 %voffset to i64
+  %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 %zext.offset
+  %gep1 = getelementptr inbounds i8, ptr addrspace(1) %gep0, i64 2047
+  call void @llvm.amdgcn.av.global.store.b128(ptr addrspace(1) %gep1, <4 x i32> %data, metadata !2)
+  ret void
+}
+
+;; Maximum negative offset on gfx10
+define void @global_store_saddr_i8_zext_vgpr_offset_neg2048(ptr addrspace(1) inreg %sbase, ptr addrspace(1) %voffset.ptr, <4 x i32> %data) {
+; GFX9-GENERIC-SDAG-LABEL: global_store_saddr_i8_zext_vgpr_offset_neg2048:
+; GFX9-GENERIC-SDAG:       ; %bb.0:
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    global_load_dword v0, v[0:1], off
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    global_store_dwordx4 v0, v[2:5], s[16:17] offset:-2048
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-SDAG-LABEL: global_store_saddr_i8_zext_vgpr_offset_neg2048:
+; GFX906-SDAG:       ; %bb.0:
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-SDAG-NEXT:    global_load_dword v0, v[0:1], off
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    global_store_dwordx4 v0, v[2:5], s[16:17] offset:-2048
+; GFX906-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-SDAG-LABEL: global_store_saddr_i8_zext_vgpr_offset_neg2048:
+; GFX908-SDAG:       ; %bb.0:
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-SDAG-NEXT:    global_load_dword v0, v[0:1], off
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    global_store_dwordx4 v0, v[2:5], s[16:17] offset:-2048
+; GFX908-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90a-SDAG-LABEL: global_store_saddr_i8_zext_vgpr_offset_neg2048:
+; GFX90a-SDAG:       ; %bb.0:
+; GFX90a-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90a-SDAG-NEXT:    global_load_dword v0, v[0:1], off
+; GFX90a-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90a-SDAG-NEXT:    global_store_dwordx4 v0, v[2:5], s[16:17] offset:-2048
+; GFX90a-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX90a-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-SDAG-LABEL: global_store_saddr_i8_zext_vgpr_offset_neg2048:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0:
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    global_load_dword v0, v[0:1], off
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    global_store_dwordx4 v0, v[2:5], s[0:1] offset:-2048 sc0 sc1
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-SDAG-LABEL: global_store_saddr_i8_zext_vgpr_offset_neg2048:
+; GFX942-SDAG:       ; %bb.0:
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-SDAG-NEXT:    global_load_dword v0, v[0:1], off
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    global_store_dwordx4 v0, v[2:5], s[0:1] offset:-2048 sc0 sc1
+; GFX942-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-SDAG-LABEL: global_store_saddr_i8_zext_vgpr_offset_neg2048:
+; GFX950-SDAG:       ; %bb.0:
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-SDAG-NEXT:    global_load_dword v0, v[0:1], off
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    global_store_dwordx4 v0, v[2:5], s[0:1] offset:-2048 sc0 sc1
+; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-SDAG-LABEL: global_store_saddr_i8_zext_vgpr_offset_neg2048:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0:
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    global_load_dword v0, v[0:1], off
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    global_store_dwordx4 v0, v[2:5], s[16:17] offset:-2048
+; GFX10-1-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-SDAG-LABEL: global_store_saddr_i8_zext_vgpr_offset_neg2048:
+; GFX1012-SDAG:       ; %bb.0:
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    global_load_dword v0, v[0:1], off
+; GFX1012-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-SDAG-NEXT:    global_store_dwordx4 v0, v[2:5], s[16:17] offset:-2048
+; GFX1012-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-SDAG-LABEL: global_store_saddr_i8_zext_vgpr_offset_neg2048:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0:
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    global_load_dword v0, v[0:1], off
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    global_store_dwordx4 v0, v[2:5], s[16:17] offset:-2048
+; GFX10-3-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-SDAG-LABEL: global_store_saddr_i8_zext_vgpr_offset_neg2048:
+; GFX11-GENERIC-SDAG:       ; %bb.0:
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b32 v0, v[0:1], off
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    av_global_store_b128 v0, v[2:5], s[0:1] offset:-2048
+; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-SDAG-LABEL: global_store_saddr_i8_zext_vgpr_offset_neg2048:
+; GFX1250-SDAG:       ; %bb.0:
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    global_load_b32 v0, v[0:1], off
+; GFX1250-SDAG-NEXT:    s_wait_xcnt 0x0
+; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-SDAG-NEXT:    av_global_store_b128 v0, v[2:5], s[0:1] offset:-2048 scope:SCOPE_SYS
+; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-SDAG-LABEL: global_store_saddr_i8_zext_vgpr_offset_neg2048:
+; GFX12-GENERIC-SDAG:       ; %bb.0:
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b32 v0, v[0:1], off
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    av_global_store_b128 v0, v[2:5], s[0:1] offset:-2048 scope:SCOPE_SYS
+; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-GENERIC-ISEL-LABEL: global_store_saddr_i8_zext_vgpr_offset_neg2048:
+; GFX9-GENERIC-ISEL:       ; %bb.0:
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    global_load_dword v0, v[0:1], off
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    global_store_dwordx4 v0, v[2:5], s[16:17] offset:-2048
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX906-ISEL-LABEL: global_store_saddr_i8_zext_vgpr_offset_neg2048:
+; GFX906-ISEL:       ; %bb.0:
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX906-ISEL-NEXT:    global_load_dword v0, v[0:1], off
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    global_store_dwordx4 v0, v[2:5], s[16:17] offset:-2048
+; GFX906-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX906-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX908-ISEL-LABEL: global_store_saddr_i8_zext_vgpr_offset_neg2048:
+; GFX908-ISEL:       ; %bb.0:
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX908-ISEL-NEXT:    global_load_dword v0, v[0:1], off
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    global_store_dwordx4 v0, v[2:5], s[16:17] offset:-2048
+; GFX908-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX908-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX90a-ISEL-LABEL: global_store_saddr_i8_zext_vgpr_offset_neg2048:
+; GFX90a-ISEL:       ; %bb.0:
+; GFX90a-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX90a-ISEL-NEXT:    global_load_dword v0, v[0:1], off
+; GFX90a-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90a-ISEL-NEXT:    global_store_dwordx4 v0, v[2:5], s[16:17] offset:-2048
+; GFX90a-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX90a-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX9-4-GENERIC-ISEL-LABEL: global_store_saddr_i8_zext_vgpr_offset_neg2048:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0:
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    global_load_dword v0, v[0:1], off
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    global_store_dwordx4 v0, v[2:5], s[0:1] offset:-2048 sc0 sc1
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX942-ISEL-LABEL: global_store_saddr_i8_zext_vgpr_offset_neg2048:
+; GFX942-ISEL:       ; %bb.0:
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX942-ISEL-NEXT:    global_load_dword v0, v[0:1], off
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    global_store_dwordx4 v0, v[2:5], s[0:1] offset:-2048 sc0 sc1
+; GFX942-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX942-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX950-ISEL-LABEL: global_store_saddr_i8_zext_vgpr_offset_neg2048:
+; GFX950-ISEL:       ; %bb.0:
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX950-ISEL-NEXT:    global_load_dword v0, v[0:1], off
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    global_store_dwordx4 v0, v[2:5], s[0:1] offset:-2048 sc0 sc1
+; GFX950-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX950-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-1-GENERIC-ISEL-LABEL: global_store_saddr_i8_zext_vgpr_offset_neg2048:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0:
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    global_load_dword v0, v[0:1], off
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    global_store_dwordx4 v0, v[2:5], s[16:17] offset:-2048
+; GFX10-1-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1012-ISEL-LABEL: global_store_saddr_i8_zext_vgpr_offset_neg2048:
+; GFX1012-ISEL:       ; %bb.0:
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    global_load_dword v0, v[0:1], off
+; GFX1012-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX1012-ISEL-NEXT:    global_store_dwordx4 v0, v[2:5], s[16:17] offset:-2048
+; GFX1012-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX10-3-GENERIC-ISEL-LABEL: global_store_saddr_i8_zext_vgpr_offset_neg2048:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0:
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    global_load_dword v0, v[0:1], off
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    global_store_dwordx4 v0, v[2:5], s[16:17] offset:-2048
+; GFX10-3-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX11-GENERIC-ISEL-LABEL: global_store_saddr_i8_zext_vgpr_offset_neg2048:
+; GFX11-GENERIC-ISEL:       ; %bb.0:
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b32 v0, v[0:1], off
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    av_global_store_b128 v0, v[2:5], s[0:1] offset:-2048
+; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+;
+; GFX1250-ISEL-LABEL: global_store_saddr_i8_zext_vgpr_offset_neg2048:
+; GFX1250-ISEL:       ; %bb.0:
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    global_load_b32 v0, v[0:1], off
+; GFX1250-ISEL-NEXT:    s_wait_xcnt 0x0
+; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX1250-ISEL-NEXT:    av_global_store_b128 v0, v[2:5], s[0:1] offset:-2048 scope:SCOPE_SYS
+; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
+;
+; GFX12-GENERIC-ISEL-LABEL: global_store_saddr_i8_zext_vgpr_offset_neg2048:
+; GFX12-GENERIC-ISEL:       ; %bb.0:
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_expcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b32 v0, v[0:1], off
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    av_global_store_b128 v0, v[2:5], s[0:1] offset:-2048 scope:SCOPE_SYS
+; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
+  %voffset = load i32, ptr addrspace(1) %voffset.ptr
+  %zext.offset = zext i32 %voffset to i64
+  %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 %zext.offset
+  %gep1 = getelementptr inbounds i8, ptr addrspace(1) %gep0, i64 -2048
+  call void @llvm.amdgcn.av.global.store.b128(ptr addrspace(1) %gep1, <4 x i32> %data, metadata !3)
+  ret void
+}
+
+;;------------------------------------------------------------------------------
+;; Uniformity edge cases
+;;------------------------------------------------------------------------------
+
+ at ptr.in.lds = internal addrspace(3) global ptr addrspace(1) poison
+
+;; Base pointer is uniform, but also in VGPRs
+define amdgpu_kernel void @global_store_saddr_uniform_ptr_in_vgprs(i32 %voffset, <4 x i32> %data) {
+; GFX9-GENERIC-SDAG-LABEL: global_store_saddr_uniform_ptr_in_vgprs:
+; GFX9-GENERIC-SDAG:       ; %bb.0:
+; GFX9-GENERIC-SDAG-NEXT:    s_load_dword s6, s[4:5], 0x24
+; GFX9-GENERIC-SDAG-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x34
+; GFX9-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX9-GENERIC-SDAG-NEXT:    ds_read_b64 v[4:5], v0
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v6, s6
+; GFX9-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, s0
+; GFX9-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v1, s1
+; GFX9-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v2, s2
+; GFX9-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v3, s3
+; GFX9-GENERIC-SDAG-NEXT:    v_readfirstlane_b32 s0, v4
+; GFX9-GENERIC-SDAG-NEXT:    v_readfirstlane_b32 s1, v5
+; GFX9-GENERIC-SDAG-NEXT:    s_nop 4
+; GFX9-GENERIC-SDAG-NEXT:    global_store_dwordx4 v6, v[0:3], s[0:1]
+; GFX9-GENERIC-SDAG-NEXT:    s_endpgm
+;
+; GFX906-SDAG-LABEL: global_store_saddr_uniform_ptr_in_vgprs:
+; GFX906-SDAG:       ; %bb.0:
+; GFX906-SDAG-NEXT:    s_load_dword s6, s[4:5], 0x24
+; GFX906-SDAG-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x34
+; GFX906-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX906-SDAG-NEXT:    ds_read_b64 v[4:5], v0
+; GFX906-SDAG-NEXT:    s_waitcnt lgkmcnt(0)
+; GFX906-SDAG-NEXT:    v_mov_b32_e32 v6, s6
+; GFX906-SDAG-NEXT:    v_mov_b32_e32 v0, s0
+; GFX906-SDAG-NEXT:    v_mov_b32_e32 v1, s1
+; GFX906-SDAG-NEXT:    v_mov_b32_e32 v2, s2
+; GFX906-SDAG-NEXT:    v_mov_b32_e32 v3, s3
+; GFX906-SDAG-NEXT:    v_readfirstlane_b32 s0, v4
+; GFX906-SDAG-NEXT:    v_readfirstlane_b32 s1, v5
+; GFX906-SDAG-NEXT:    s_nop 4
+; GFX906-SDAG-NEXT:    global_store_dwordx4 v6, v[0:3], s[0:1]
+; GFX906-SDAG-NEXT:    s_endpgm
+;
+; GFX908-SDAG-LABEL: global_store_saddr_uniform_ptr_in_vgprs:
+; GFX908-SDAG:       ; %bb.0:
+; GFX908-SDAG-NEXT:    s_load_dword s6, s[4:5], 0x24
+; GFX908-SDAG-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x34
+; GFX908-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX908-SDAG-NEXT:    ds_read_b64 v[4:5], v0
+; GFX908-SDAG-NEXT:    s_waitcnt lgkmcnt(0)
+; GFX908-SDAG-NEXT:    v_mov_b32_e32 v6, s6
+; GFX908-SDAG-NEXT:    v_mov_b32_e32 v0, s0
+; GFX908-SDAG-NEXT:    v_mov_b32_e32 v1, s1
+; GFX908-SDAG-NEXT:    v_mov_b32_e32 v2, s2
+; GFX908-SDAG-NEXT:    v_mov_b32_e32 v3, s3
+; GFX908-SDAG-NEXT:    v_readfirstlane_b32 s0, v4
+; GFX908-SDAG-NEXT:    v_readfirstlane_b32 s1, v5
+; GFX908-SDAG-NEXT:    s_nop 4
+; GFX908-SDAG-NEXT:    global_store_dwordx4 v6, v[0:3], s[0:1]
+; GFX908-SDAG-NEXT:    s_endpgm
+;
+; GFX90a-SDAG-LABEL: global_store_saddr_uniform_ptr_in_vgprs:
+; GFX90a-SDAG:       ; %bb.0:
+; GFX90a-SDAG-NEXT:    s_load_dword s6, s[4:5], 0x24
+; GFX90a-SDAG-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x34
+; GFX90a-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX90a-SDAG-NEXT:    ds_read_b64 v[0:1], v0
+; GFX90a-SDAG-NEXT:    s_waitcnt lgkmcnt(0)
+; GFX90a-SDAG-NEXT:    v_mov_b32_e32 v2, s6
+; GFX90a-SDAG-NEXT:    v_pk_mov_b32 v[6:7], s[2:3], s[2:3] op_sel:[0,1]
+; GFX90a-SDAG-NEXT:    v_pk_mov_b32 v[4:5], s[0:1], s[0:1] op_sel:[0,1]
+; GFX90a-SDAG-NEXT:    v_readfirstlane_b32 s0, v0
+; GFX90a-SDAG-NEXT:    v_readfirstlane_b32 s1, v1
+; GFX90a-SDAG-NEXT:    s_nop 4
+; GFX90a-SDAG-NEXT:    global_store_dwordx4 v2, v[4:7], s[0:1]
+; GFX90a-SDAG-NEXT:    s_endpgm
+;
+; GFX9-4-GENERIC-SDAG-LABEL: global_store_saddr_uniform_ptr_in_vgprs:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0:
+; GFX9-4-GENERIC-SDAG-NEXT:    s_load_dword s6, s[4:5], 0x24
+; GFX9-4-GENERIC-SDAG-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x34
+; GFX9-4-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX9-4-GENERIC-SDAG-NEXT:    ds_read_b64 v[0:1], v0
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v2, s6
+; GFX9-4-GENERIC-SDAG-NEXT:    v_mov_b64_e32 v[6:7], s[2:3]
+; GFX9-4-GENERIC-SDAG-NEXT:    v_mov_b64_e32 v[4:5], s[0:1]
+; GFX9-4-GENERIC-SDAG-NEXT:    v_readfirstlane_b32 s0, v0
+; GFX9-4-GENERIC-SDAG-NEXT:    v_readfirstlane_b32 s1, v1
+; GFX9-4-GENERIC-SDAG-NEXT:    s_nop 4
+; GFX9-4-GENERIC-SDAG-NEXT:    global_store_dwordx4 v2, v[4:7], s[0:1]
+; GFX9-4-GENERIC-SDAG-NEXT:    s_endpgm
+;
+; GFX942-SDAG-LABEL: global_store_saddr_uniform_ptr_in_vgprs:
+; GFX942-SDAG:       ; %bb.0:
+; GFX942-SDAG-NEXT:    s_load_dword s6, s[4:5], 0x24
+; GFX942-SDAG-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x34
+; GFX942-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX942-SDAG-NEXT:    ds_read_b64 v[0:1], v0
+; GFX942-SDAG-NEXT:    s_waitcnt lgkmcnt(0)
+; GFX942-SDAG-NEXT:    v_mov_b32_e32 v2, s6
+; GFX942-SDAG-NEXT:    v_mov_b64_e32 v[6:7], s[2:3]
+; GFX942-SDAG-NEXT:    v_mov_b64_e32 v[4:5], s[0:1]
+; GFX942-SDAG-NEXT:    v_readfirstlane_b32 s0, v0
+; GFX942-SDAG-NEXT:    v_readfirstlane_b32 s1, v1
+; GFX942-SDAG-NEXT:    s_nop 4
+; GFX942-SDAG-NEXT:    global_store_dwordx4 v2, v[4:7], s[0:1]
+; GFX942-SDAG-NEXT:    s_endpgm
+;
+; GFX950-SDAG-LABEL: global_store_saddr_uniform_ptr_in_vgprs:
+; GFX950-SDAG:       ; %bb.0:
+; GFX950-SDAG-NEXT:    s_load_dword s6, s[4:5], 0x24
+; GFX950-SDAG-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x34
+; GFX950-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX950-SDAG-NEXT:    ds_read_b64 v[0:1], v0
+; GFX950-SDAG-NEXT:    s_waitcnt lgkmcnt(0)
+; GFX950-SDAG-NEXT:    v_mov_b32_e32 v2, s6
+; GFX950-SDAG-NEXT:    v_mov_b64_e32 v[6:7], s[2:3]
+; GFX950-SDAG-NEXT:    v_mov_b64_e32 v[4:5], s[0:1]
+; GFX950-SDAG-NEXT:    v_readfirstlane_b32 s0, v0
+; GFX950-SDAG-NEXT:    v_readfirstlane_b32 s1, v1
+; GFX950-SDAG-NEXT:    s_nop 4
+; GFX950-SDAG-NEXT:    global_store_dwordx4 v2, v[4:7], s[0:1]
+; GFX950-SDAG-NEXT:    s_endpgm
+;
+; GFX10-1-GENERIC-SDAG-LABEL: global_store_saddr_uniform_ptr_in_vgprs:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0:
+; GFX10-1-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX10-1-GENERIC-SDAG-NEXT:    s_clause 0x1
+; GFX10-1-GENERIC-SDAG-NEXT:    s_load_dword s6, s[4:5], 0x24
+; GFX10-1-GENERIC-SDAG-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x34
+; GFX10-1-GENERIC-SDAG-NEXT:    ds_read_b64 v[4:5], v0
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v6, s6
+; GFX10-1-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, s0
+; GFX10-1-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v1, s1
+; GFX10-1-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v2, s2
+; GFX10-1-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v3, s3
+; GFX10-1-GENERIC-SDAG-NEXT:    v_readfirstlane_b32 s0, v4
+; GFX10-1-GENERIC-SDAG-NEXT:    v_readfirstlane_b32 s1, v5
+; GFX10-1-GENERIC-SDAG-NEXT:    global_store_dwordx4 v6, v[0:3], s[0:1]
+; GFX10-1-GENERIC-SDAG-NEXT:    s_endpgm
+;
+; GFX1012-SDAG-LABEL: global_store_saddr_uniform_ptr_in_vgprs:
+; GFX1012-SDAG:       ; %bb.0:
+; GFX1012-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX1012-SDAG-NEXT:    s_clause 0x1
+; GFX1012-SDAG-NEXT:    s_load_dword s6, s[4:5], 0x24
+; GFX1012-SDAG-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x34
+; GFX1012-SDAG-NEXT:    ds_read_b64 v[4:5], v0
+; GFX1012-SDAG-NEXT:    s_waitcnt lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    v_mov_b32_e32 v6, s6
+; GFX1012-SDAG-NEXT:    v_mov_b32_e32 v0, s0
+; GFX1012-SDAG-NEXT:    v_mov_b32_e32 v1, s1
+; GFX1012-SDAG-NEXT:    v_mov_b32_e32 v2, s2
+; GFX1012-SDAG-NEXT:    v_mov_b32_e32 v3, s3
+; GFX1012-SDAG-NEXT:    v_readfirstlane_b32 s0, v4
+; GFX1012-SDAG-NEXT:    v_readfirstlane_b32 s1, v5
+; GFX1012-SDAG-NEXT:    global_store_dwordx4 v6, v[0:3], s[0:1]
+; GFX1012-SDAG-NEXT:    s_endpgm
+;
+; GFX10-3-GENERIC-SDAG-LABEL: global_store_saddr_uniform_ptr_in_vgprs:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0:
+; GFX10-3-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX10-3-GENERIC-SDAG-NEXT:    s_clause 0x1
+; GFX10-3-GENERIC-SDAG-NEXT:    s_load_dword s6, s[4:5], 0x24
+; GFX10-3-GENERIC-SDAG-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x34
+; GFX10-3-GENERIC-SDAG-NEXT:    ds_read_b64 v[4:5], v0
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v6, s6
+; GFX10-3-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, s0
+; GFX10-3-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v1, s1
+; GFX10-3-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v2, s2
+; GFX10-3-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v3, s3
+; GFX10-3-GENERIC-SDAG-NEXT:    v_readfirstlane_b32 s0, v4
+; GFX10-3-GENERIC-SDAG-NEXT:    v_readfirstlane_b32 s1, v5
+; GFX10-3-GENERIC-SDAG-NEXT:    global_store_dwordx4 v6, v[0:3], s[0:1]
+; GFX10-3-GENERIC-SDAG-NEXT:    s_endpgm
+;
+; GFX11-GENERIC-SDAG-LABEL: global_store_saddr_uniform_ptr_in_vgprs:
+; GFX11-GENERIC-SDAG:       ; %bb.0:
+; GFX11-GENERIC-SDAG-NEXT:    s_clause 0x1
+; GFX11-GENERIC-SDAG-NEXT:    s_load_b32 s6, s[4:5], 0x24
+; GFX11-GENERIC-SDAG-NEXT:    s_load_b128 s[0:3], s[4:5], 0x34
+; GFX11-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX11-GENERIC-SDAG-NEXT:    ds_load_b64 v[4:5], v0
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v6, s6
+; GFX11-GENERIC-SDAG-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
+; GFX11-GENERIC-SDAG-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
+; GFX11-GENERIC-SDAG-NEXT:    v_readfirstlane_b32 s0, v4
+; GFX11-GENERIC-SDAG-NEXT:    v_readfirstlane_b32 s1, v5
+; GFX11-GENERIC-SDAG-NEXT:    av_global_store_b128 v6, v[0:3], s[0:1]
+; GFX11-GENERIC-SDAG-NEXT:    s_endpgm
+;
+; GFX1250-SDAG-LABEL: global_store_saddr_uniform_ptr_in_vgprs:
+; GFX1250-SDAG:       ; %bb.0:
+; GFX1250-SDAG-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_WAVE_MODE, 25, 1), 1
+; GFX1250-SDAG-NEXT:    s_clause 0x1
+; GFX1250-SDAG-NEXT:    s_load_b32 s6, s[4:5], 0x24
+; GFX1250-SDAG-NEXT:    s_load_b128 s[0:3], s[4:5], 0x34
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v6, s6
+; GFX1250-SDAG-NEXT:    ds_load_b64 v[4:5], v0
+; GFX1250-SDAG-NEXT:    v_mov_b64_e32 v[0:1], s[0:1]
+; GFX1250-SDAG-NEXT:    v_mov_b64_e32 v[2:3], s[2:3]
+; GFX1250-SDAG-NEXT:    s_wait_dscnt 0x0
+; GFX1250-SDAG-NEXT:    v_readfirstlane_b32 s0, v4
+; GFX1250-SDAG-NEXT:    v_readfirstlane_b32 s1, v5
+; GFX1250-SDAG-NEXT:    av_global_store_b128 v6, v[0:3], s[0:1]
+; GFX1250-SDAG-NEXT:    s_endpgm
+;
+; GFX12-GENERIC-SDAG-LABEL: global_store_saddr_uniform_ptr_in_vgprs:
+; GFX12-GENERIC-SDAG:       ; %bb.0:
+; GFX12-GENERIC-SDAG-NEXT:    s_clause 0x1
+; GFX12-GENERIC-SDAG-NEXT:    s_load_b32 s6, s[4:5], 0x24
+; GFX12-GENERIC-SDAG-NEXT:    s_load_b128 s[0:3], s[4:5], 0x34
+; GFX12-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX12-GENERIC-SDAG-NEXT:    ds_load_b64 v[4:5], v0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v6, s6
+; GFX12-GENERIC-SDAG-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
+; GFX12-GENERIC-SDAG-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    v_readfirstlane_b32 s0, v4
+; GFX12-GENERIC-SDAG-NEXT:    v_readfirstlane_b32 s1, v5
+; GFX12-GENERIC-SDAG-NEXT:    av_global_store_b128 v6, v[0:3], s[0:1]
+; GFX12-GENERIC-SDAG-NEXT:    s_endpgm
+;
+; GFX9-GENERIC-ISEL-LABEL: global_store_saddr_uniform_ptr_in_vgprs:
+; GFX9-GENERIC-ISEL:       ; %bb.0:
+; GFX9-GENERIC-ISEL-NEXT:    s_load_dword s6, s[4:5], 0x24
+; GFX9-GENERIC-ISEL-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x34
+; GFX9-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX9-GENERIC-ISEL-NEXT:    ds_read_b64 v[0:1], v0
+; GFX9-GENERIC-ISEL-NEXT:    s_mov_b32 s7, 0
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v2, s6
+; GFX9-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v3, s7
+; GFX9-GENERIC-ISEL-NEXT:    v_add_co_u32_e32 v4, vcc, v0, v2
+; GFX9-GENERIC-ISEL-NEXT:    v_addc_co_u32_e32 v5, vcc, v1, v3, vcc
+; GFX9-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, s0
+; GFX9-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v1, s1
+; GFX9-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v2, s2
+; GFX9-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v3, s3
+; GFX9-GENERIC-ISEL-NEXT:    global_store_dwordx4 v[4:5], v[0:3], off
+; GFX9-GENERIC-ISEL-NEXT:    s_endpgm
+;
+; GFX906-ISEL-LABEL: global_store_saddr_uniform_ptr_in_vgprs:
+; GFX906-ISEL:       ; %bb.0:
+; GFX906-ISEL-NEXT:    s_load_dword s6, s[4:5], 0x24
+; GFX906-ISEL-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x34
+; GFX906-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX906-ISEL-NEXT:    ds_read_b64 v[0:1], v0
+; GFX906-ISEL-NEXT:    s_mov_b32 s7, 0
+; GFX906-ISEL-NEXT:    s_waitcnt lgkmcnt(0)
+; GFX906-ISEL-NEXT:    v_mov_b32_e32 v2, s6
+; GFX906-ISEL-NEXT:    v_mov_b32_e32 v3, s7
+; GFX906-ISEL-NEXT:    v_add_co_u32_e32 v4, vcc, v0, v2
+; GFX906-ISEL-NEXT:    v_addc_co_u32_e32 v5, vcc, v1, v3, vcc
+; GFX906-ISEL-NEXT:    v_mov_b32_e32 v0, s0
+; GFX906-ISEL-NEXT:    v_mov_b32_e32 v1, s1
+; GFX906-ISEL-NEXT:    v_mov_b32_e32 v2, s2
+; GFX906-ISEL-NEXT:    v_mov_b32_e32 v3, s3
+; GFX906-ISEL-NEXT:    global_store_dwordx4 v[4:5], v[0:3], off
+; GFX906-ISEL-NEXT:    s_endpgm
+;
+; GFX908-ISEL-LABEL: global_store_saddr_uniform_ptr_in_vgprs:
+; GFX908-ISEL:       ; %bb.0:
+; GFX908-ISEL-NEXT:    s_load_dword s6, s[4:5], 0x24
+; GFX908-ISEL-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x34
+; GFX908-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX908-ISEL-NEXT:    ds_read_b64 v[0:1], v0
+; GFX908-ISEL-NEXT:    s_mov_b32 s7, 0
+; GFX908-ISEL-NEXT:    s_waitcnt lgkmcnt(0)
+; GFX908-ISEL-NEXT:    v_mov_b32_e32 v2, s6
+; GFX908-ISEL-NEXT:    v_mov_b32_e32 v3, s7
+; GFX908-ISEL-NEXT:    v_add_co_u32_e32 v4, vcc, v0, v2
+; GFX908-ISEL-NEXT:    v_addc_co_u32_e32 v5, vcc, v1, v3, vcc
+; GFX908-ISEL-NEXT:    v_mov_b32_e32 v0, s0
+; GFX908-ISEL-NEXT:    v_mov_b32_e32 v1, s1
+; GFX908-ISEL-NEXT:    v_mov_b32_e32 v2, s2
+; GFX908-ISEL-NEXT:    v_mov_b32_e32 v3, s3
+; GFX908-ISEL-NEXT:    global_store_dwordx4 v[4:5], v[0:3], off
+; GFX908-ISEL-NEXT:    s_endpgm
+;
+; GFX90a-ISEL-LABEL: global_store_saddr_uniform_ptr_in_vgprs:
+; GFX90a-ISEL:       ; %bb.0:
+; GFX90a-ISEL-NEXT:    s_load_dword s6, s[4:5], 0x24
+; GFX90a-ISEL-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x34
+; GFX90a-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX90a-ISEL-NEXT:    ds_read_b64 v[0:1], v0
+; GFX90a-ISEL-NEXT:    s_mov_b32 s7, 0
+; GFX90a-ISEL-NEXT:    s_waitcnt lgkmcnt(0)
+; GFX90a-ISEL-NEXT:    v_pk_mov_b32 v[2:3], s[6:7], s[6:7] op_sel:[0,1]
+; GFX90a-ISEL-NEXT:    v_add_co_u32_e32 v4, vcc, v0, v2
+; GFX90a-ISEL-NEXT:    v_addc_co_u32_e32 v5, vcc, v1, v3, vcc
+; GFX90a-ISEL-NEXT:    v_pk_mov_b32 v[0:1], s[0:1], s[0:1] op_sel:[0,1]
+; GFX90a-ISEL-NEXT:    v_pk_mov_b32 v[2:3], s[2:3], s[2:3] op_sel:[0,1]
+; GFX90a-ISEL-NEXT:    global_store_dwordx4 v[4:5], v[0:3], off
+; GFX90a-ISEL-NEXT:    s_endpgm
+;
+; GFX9-4-GENERIC-ISEL-LABEL: global_store_saddr_uniform_ptr_in_vgprs:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0:
+; GFX9-4-GENERIC-ISEL-NEXT:    s_load_dword s6, s[4:5], 0x24
+; GFX9-4-GENERIC-ISEL-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x34
+; GFX9-4-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX9-4-GENERIC-ISEL-NEXT:    ds_read_b64 v[0:1], v0
+; GFX9-4-GENERIC-ISEL-NEXT:    s_mov_b32 s7, 0
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    v_mov_b64_e32 v[2:3], s[6:7]
+; GFX9-4-GENERIC-ISEL-NEXT:    v_add_co_u32_e32 v4, vcc, v0, v2
+; GFX9-4-GENERIC-ISEL-NEXT:    s_nop 1
+; GFX9-4-GENERIC-ISEL-NEXT:    v_addc_co_u32_e32 v5, vcc, v1, v3, vcc
+; GFX9-4-GENERIC-ISEL-NEXT:    v_mov_b64_e32 v[0:1], s[0:1]
+; GFX9-4-GENERIC-ISEL-NEXT:    v_mov_b64_e32 v[2:3], s[2:3]
+; GFX9-4-GENERIC-ISEL-NEXT:    global_store_dwordx4 v[4:5], v[0:3], off
+; GFX9-4-GENERIC-ISEL-NEXT:    s_endpgm
+;
+; GFX942-ISEL-LABEL: global_store_saddr_uniform_ptr_in_vgprs:
+; GFX942-ISEL:       ; %bb.0:
+; GFX942-ISEL-NEXT:    s_load_dword s6, s[4:5], 0x24
+; GFX942-ISEL-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x34
+; GFX942-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX942-ISEL-NEXT:    ds_read_b64 v[0:1], v0
+; GFX942-ISEL-NEXT:    s_mov_b32 s7, 0
+; GFX942-ISEL-NEXT:    s_waitcnt lgkmcnt(0)
+; GFX942-ISEL-NEXT:    v_mov_b64_e32 v[2:3], s[6:7]
+; GFX942-ISEL-NEXT:    v_add_co_u32_e32 v4, vcc, v0, v2
+; GFX942-ISEL-NEXT:    s_nop 1
+; GFX942-ISEL-NEXT:    v_addc_co_u32_e32 v5, vcc, v1, v3, vcc
+; GFX942-ISEL-NEXT:    v_mov_b64_e32 v[0:1], s[0:1]
+; GFX942-ISEL-NEXT:    v_mov_b64_e32 v[2:3], s[2:3]
+; GFX942-ISEL-NEXT:    global_store_dwordx4 v[4:5], v[0:3], off
+; GFX942-ISEL-NEXT:    s_endpgm
+;
+; GFX950-ISEL-LABEL: global_store_saddr_uniform_ptr_in_vgprs:
+; GFX950-ISEL:       ; %bb.0:
+; GFX950-ISEL-NEXT:    s_load_dword s6, s[4:5], 0x24
+; GFX950-ISEL-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x34
+; GFX950-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX950-ISEL-NEXT:    ds_read_b64 v[0:1], v0
+; GFX950-ISEL-NEXT:    s_mov_b32 s7, 0
+; GFX950-ISEL-NEXT:    s_waitcnt lgkmcnt(0)
+; GFX950-ISEL-NEXT:    v_mov_b64_e32 v[2:3], s[6:7]
+; GFX950-ISEL-NEXT:    v_add_co_u32_e32 v4, vcc, v0, v2
+; GFX950-ISEL-NEXT:    s_nop 1
+; GFX950-ISEL-NEXT:    v_addc_co_u32_e32 v5, vcc, v1, v3, vcc
+; GFX950-ISEL-NEXT:    v_mov_b64_e32 v[0:1], s[0:1]
+; GFX950-ISEL-NEXT:    v_mov_b64_e32 v[2:3], s[2:3]
+; GFX950-ISEL-NEXT:    global_store_dwordx4 v[4:5], v[0:3], off
+; GFX950-ISEL-NEXT:    s_endpgm
+;
+; GFX10-1-GENERIC-ISEL-LABEL: global_store_saddr_uniform_ptr_in_vgprs:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0:
+; GFX10-1-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX10-1-GENERIC-ISEL-NEXT:    s_clause 0x1
+; GFX10-1-GENERIC-ISEL-NEXT:    s_load_dword s6, s[4:5], 0x24
+; GFX10-1-GENERIC-ISEL-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x34
+; GFX10-1-GENERIC-ISEL-NEXT:    s_mov_b32 s7, 0
+; GFX10-1-GENERIC-ISEL-NEXT:    ds_read_b64 v[0:1], v0
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v2, s6
+; GFX10-1-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v3, s7
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_u32 v4, vcc_lo, v0, v2
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e32 v5, vcc_lo, v1, v3, vcc_lo
+; GFX10-1-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, s0
+; GFX10-1-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v1, s1
+; GFX10-1-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v2, s2
+; GFX10-1-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v3, s3
+; GFX10-1-GENERIC-ISEL-NEXT:    global_store_dwordx4 v[4:5], v[0:3], off
+; GFX10-1-GENERIC-ISEL-NEXT:    s_endpgm
+;
+; GFX1012-ISEL-LABEL: global_store_saddr_uniform_ptr_in_vgprs:
+; GFX1012-ISEL:       ; %bb.0:
+; GFX1012-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX1012-ISEL-NEXT:    s_clause 0x1
+; GFX1012-ISEL-NEXT:    s_load_dword s6, s[4:5], 0x24
+; GFX1012-ISEL-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x34
+; GFX1012-ISEL-NEXT:    s_mov_b32 s7, 0
+; GFX1012-ISEL-NEXT:    ds_read_b64 v[0:1], v0
+; GFX1012-ISEL-NEXT:    s_waitcnt lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    v_mov_b32_e32 v2, s6
+; GFX1012-ISEL-NEXT:    v_mov_b32_e32 v3, s7
+; GFX1012-ISEL-NEXT:    v_add_co_u32 v4, vcc_lo, v0, v2
+; GFX1012-ISEL-NEXT:    v_add_co_ci_u32_e32 v5, vcc_lo, v1, v3, vcc_lo
+; GFX1012-ISEL-NEXT:    v_mov_b32_e32 v0, s0
+; GFX1012-ISEL-NEXT:    v_mov_b32_e32 v1, s1
+; GFX1012-ISEL-NEXT:    v_mov_b32_e32 v2, s2
+; GFX1012-ISEL-NEXT:    v_mov_b32_e32 v3, s3
+; GFX1012-ISEL-NEXT:    global_store_dwordx4 v[4:5], v[0:3], off
+; GFX1012-ISEL-NEXT:    s_endpgm
+;
+; GFX10-3-GENERIC-ISEL-LABEL: global_store_saddr_uniform_ptr_in_vgprs:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0:
+; GFX10-3-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX10-3-GENERIC-ISEL-NEXT:    s_clause 0x1
+; GFX10-3-GENERIC-ISEL-NEXT:    s_load_dword s6, s[4:5], 0x24
+; GFX10-3-GENERIC-ISEL-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x34
+; GFX10-3-GENERIC-ISEL-NEXT:    s_mov_b32 s7, 0
+; GFX10-3-GENERIC-ISEL-NEXT:    ds_read_b64 v[0:1], v0
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v2, s6
+; GFX10-3-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v3, s7
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_u32 v4, vcc_lo, v0, v2
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v5, null, v1, v3, vcc_lo
+; GFX10-3-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, s0
+; GFX10-3-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v1, s1
+; GFX10-3-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v2, s2
+; GFX10-3-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v3, s3
+; GFX10-3-GENERIC-ISEL-NEXT:    global_store_dwordx4 v[4:5], v[0:3], off
+; GFX10-3-GENERIC-ISEL-NEXT:    s_endpgm
+;
+; GFX11-GENERIC-ISEL-LABEL: global_store_saddr_uniform_ptr_in_vgprs:
+; GFX11-GENERIC-ISEL:       ; %bb.0:
+; GFX11-GENERIC-ISEL-NEXT:    s_clause 0x1
+; GFX11-GENERIC-ISEL-NEXT:    s_load_b32 s6, s[4:5], 0x24
+; GFX11-GENERIC-ISEL-NEXT:    s_load_b128 s[0:3], s[4:5], 0x34
+; GFX11-GENERIC-ISEL-NEXT:    s_mov_b32 s7, 0
+; GFX11-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    v_dual_mov_b32 v2, s6 :: v_dual_mov_b32 v3, s7
+; GFX11-GENERIC-ISEL-NEXT:    ds_load_b64 v[0:1], v0
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_u32 v4, vcc_lo, v0, v2
+; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v5, null, v1, v3, vcc_lo
+; GFX11-GENERIC-ISEL-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v3, s3
+; GFX11-GENERIC-ISEL-NEXT:    v_dual_mov_b32 v1, s1 :: v_dual_mov_b32 v2, s2
+; GFX11-GENERIC-ISEL-NEXT:    av_global_store_b128 v[4:5], v[0:3], off
+; GFX11-GENERIC-ISEL-NEXT:    s_endpgm
+;
+; GFX1250-ISEL-LABEL: global_store_saddr_uniform_ptr_in_vgprs:
+; GFX1250-ISEL:       ; %bb.0:
+; GFX1250-ISEL-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_WAVE_MODE, 25, 1), 1
+; GFX1250-ISEL-NEXT:    s_clause 0x1
+; GFX1250-ISEL-NEXT:    s_load_b32 s6, s[4:5], 0x24
+; GFX1250-ISEL-NEXT:    s_load_b128 s[0:3], s[4:5], 0x34
+; GFX1250-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX1250-ISEL-NEXT:    s_mov_b32 s7, 0
+; GFX1250-ISEL-NEXT:    ds_load_b64 v[0:1], v0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    v_mov_b64_e32 v[2:3], s[6:7]
+; GFX1250-ISEL-NEXT:    s_wait_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX1250-ISEL-NEXT:    v_add_co_u32 v4, vcc_lo, v0, v2
+; GFX1250-ISEL-NEXT:    v_add_co_ci_u32_e64 v5, null, v1, v3, vcc_lo
+; GFX1250-ISEL-NEXT:    v_mov_b64_e32 v[0:1], s[0:1]
+; GFX1250-ISEL-NEXT:    v_mov_b64_e32 v[2:3], s[2:3]
+; GFX1250-ISEL-NEXT:    av_global_store_b128 v[4:5], v[0:3], off
+; GFX1250-ISEL-NEXT:    s_endpgm
+;
+; GFX12-GENERIC-ISEL-LABEL: global_store_saddr_uniform_ptr_in_vgprs:
+; GFX12-GENERIC-ISEL:       ; %bb.0:
+; GFX12-GENERIC-ISEL-NEXT:    s_clause 0x1
+; GFX12-GENERIC-ISEL-NEXT:    s_load_b32 s6, s[4:5], 0x24
+; GFX12-GENERIC-ISEL-NEXT:    s_load_b128 s[0:3], s[4:5], 0x34
+; GFX12-GENERIC-ISEL-NEXT:    s_mov_b32 s7, 0
+; GFX12-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    v_dual_mov_b32 v2, s6 :: v_dual_mov_b32 v3, s7
+; GFX12-GENERIC-ISEL-NEXT:    ds_load_b64 v[0:1], v0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    v_add_co_u32 v4, vcc_lo, v0, v2
+; GFX12-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX12-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v5, null, v1, v3, vcc_lo
+; GFX12-GENERIC-ISEL-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v3, s3
+; GFX12-GENERIC-ISEL-NEXT:    v_dual_mov_b32 v1, s1 :: v_dual_mov_b32 v2, s2
+; GFX12-GENERIC-ISEL-NEXT:    av_global_store_b128 v[4:5], v[0:3], off
+; GFX12-GENERIC-ISEL-NEXT:    s_endpgm
+  %sbase = load ptr addrspace(1), ptr addrspace(3) @ptr.in.lds
+  %zext.offset = zext i32 %voffset to i64
+  %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 %zext.offset
+  call void @llvm.amdgcn.av.global.store.b128(ptr addrspace(1) %gep0, <4 x i32> %data, metadata !0)
+  ret void
+}
+
+;; Base pointer is uniform, but also in VGPRs, with imm offset
+define amdgpu_kernel void @global_store_saddr_uniform_ptr_in_vgprs_immoffset(i32 %voffset, <4 x i32> %data) {
+; GFX9-GENERIC-SDAG-LABEL: global_store_saddr_uniform_ptr_in_vgprs_immoffset:
+; GFX9-GENERIC-SDAG:       ; %bb.0:
+; GFX9-GENERIC-SDAG-NEXT:    s_load_dword s6, s[4:5], 0x24
+; GFX9-GENERIC-SDAG-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x34
+; GFX9-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX9-GENERIC-SDAG-NEXT:    ds_read_b64 v[4:5], v0
+; GFX9-GENERIC-SDAG-NEXT:    s_waitcnt lgkmcnt(0)
+; GFX9-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v6, s6
+; GFX9-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, s0
+; GFX9-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v1, s1
+; GFX9-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v2, s2
+; GFX9-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v3, s3
+; GFX9-GENERIC-SDAG-NEXT:    v_readfirstlane_b32 s0, v4
+; GFX9-GENERIC-SDAG-NEXT:    v_readfirstlane_b32 s1, v5
+; GFX9-GENERIC-SDAG-NEXT:    s_nop 4
+; GFX9-GENERIC-SDAG-NEXT:    global_store_dwordx4 v6, v[0:3], s[0:1] offset:-120
+; GFX9-GENERIC-SDAG-NEXT:    s_endpgm
+;
+; GFX906-SDAG-LABEL: global_store_saddr_uniform_ptr_in_vgprs_immoffset:
+; GFX906-SDAG:       ; %bb.0:
+; GFX906-SDAG-NEXT:    s_load_dword s6, s[4:5], 0x24
+; GFX906-SDAG-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x34
+; GFX906-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX906-SDAG-NEXT:    ds_read_b64 v[4:5], v0
+; GFX906-SDAG-NEXT:    s_waitcnt lgkmcnt(0)
+; GFX906-SDAG-NEXT:    v_mov_b32_e32 v6, s6
+; GFX906-SDAG-NEXT:    v_mov_b32_e32 v0, s0
+; GFX906-SDAG-NEXT:    v_mov_b32_e32 v1, s1
+; GFX906-SDAG-NEXT:    v_mov_b32_e32 v2, s2
+; GFX906-SDAG-NEXT:    v_mov_b32_e32 v3, s3
+; GFX906-SDAG-NEXT:    v_readfirstlane_b32 s0, v4
+; GFX906-SDAG-NEXT:    v_readfirstlane_b32 s1, v5
+; GFX906-SDAG-NEXT:    s_nop 4
+; GFX906-SDAG-NEXT:    global_store_dwordx4 v6, v[0:3], s[0:1] offset:-120
+; GFX906-SDAG-NEXT:    s_endpgm
+;
+; GFX908-SDAG-LABEL: global_store_saddr_uniform_ptr_in_vgprs_immoffset:
+; GFX908-SDAG:       ; %bb.0:
+; GFX908-SDAG-NEXT:    s_load_dword s6, s[4:5], 0x24
+; GFX908-SDAG-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x34
+; GFX908-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX908-SDAG-NEXT:    ds_read_b64 v[4:5], v0
+; GFX908-SDAG-NEXT:    s_waitcnt lgkmcnt(0)
+; GFX908-SDAG-NEXT:    v_mov_b32_e32 v6, s6
+; GFX908-SDAG-NEXT:    v_mov_b32_e32 v0, s0
+; GFX908-SDAG-NEXT:    v_mov_b32_e32 v1, s1
+; GFX908-SDAG-NEXT:    v_mov_b32_e32 v2, s2
+; GFX908-SDAG-NEXT:    v_mov_b32_e32 v3, s3
+; GFX908-SDAG-NEXT:    v_readfirstlane_b32 s0, v4
+; GFX908-SDAG-NEXT:    v_readfirstlane_b32 s1, v5
+; GFX908-SDAG-NEXT:    s_nop 4
+; GFX908-SDAG-NEXT:    global_store_dwordx4 v6, v[0:3], s[0:1] offset:-120
+; GFX908-SDAG-NEXT:    s_endpgm
+;
+; GFX90a-SDAG-LABEL: global_store_saddr_uniform_ptr_in_vgprs_immoffset:
+; GFX90a-SDAG:       ; %bb.0:
+; GFX90a-SDAG-NEXT:    s_load_dword s6, s[4:5], 0x24
+; GFX90a-SDAG-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x34
+; GFX90a-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX90a-SDAG-NEXT:    ds_read_b64 v[0:1], v0
+; GFX90a-SDAG-NEXT:    s_waitcnt lgkmcnt(0)
+; GFX90a-SDAG-NEXT:    v_mov_b32_e32 v2, s6
+; GFX90a-SDAG-NEXT:    v_pk_mov_b32 v[6:7], s[2:3], s[2:3] op_sel:[0,1]
+; GFX90a-SDAG-NEXT:    v_pk_mov_b32 v[4:5], s[0:1], s[0:1] op_sel:[0,1]
+; GFX90a-SDAG-NEXT:    v_readfirstlane_b32 s0, v0
+; GFX90a-SDAG-NEXT:    v_readfirstlane_b32 s1, v1
+; GFX90a-SDAG-NEXT:    s_nop 4
+; GFX90a-SDAG-NEXT:    global_store_dwordx4 v2, v[4:7], s[0:1] offset:-120
+; GFX90a-SDAG-NEXT:    s_endpgm
+;
+; GFX9-4-GENERIC-SDAG-LABEL: global_store_saddr_uniform_ptr_in_vgprs_immoffset:
+; GFX9-4-GENERIC-SDAG:       ; %bb.0:
+; GFX9-4-GENERIC-SDAG-NEXT:    s_load_dword s6, s[4:5], 0x24
+; GFX9-4-GENERIC-SDAG-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x34
+; GFX9-4-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX9-4-GENERIC-SDAG-NEXT:    ds_read_b64 v[0:1], v0
+; GFX9-4-GENERIC-SDAG-NEXT:    s_waitcnt lgkmcnt(0)
+; GFX9-4-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v2, s6
+; GFX9-4-GENERIC-SDAG-NEXT:    v_mov_b64_e32 v[6:7], s[2:3]
+; GFX9-4-GENERIC-SDAG-NEXT:    v_mov_b64_e32 v[4:5], s[0:1]
+; GFX9-4-GENERIC-SDAG-NEXT:    v_readfirstlane_b32 s0, v0
+; GFX9-4-GENERIC-SDAG-NEXT:    v_readfirstlane_b32 s1, v1
+; GFX9-4-GENERIC-SDAG-NEXT:    s_nop 4
+; GFX9-4-GENERIC-SDAG-NEXT:    global_store_dwordx4 v2, v[4:7], s[0:1] offset:-120 sc0
+; GFX9-4-GENERIC-SDAG-NEXT:    s_endpgm
+;
+; GFX942-SDAG-LABEL: global_store_saddr_uniform_ptr_in_vgprs_immoffset:
+; GFX942-SDAG:       ; %bb.0:
+; GFX942-SDAG-NEXT:    s_load_dword s6, s[4:5], 0x24
+; GFX942-SDAG-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x34
+; GFX942-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX942-SDAG-NEXT:    ds_read_b64 v[0:1], v0
+; GFX942-SDAG-NEXT:    s_waitcnt lgkmcnt(0)
+; GFX942-SDAG-NEXT:    v_mov_b32_e32 v2, s6
+; GFX942-SDAG-NEXT:    v_mov_b64_e32 v[6:7], s[2:3]
+; GFX942-SDAG-NEXT:    v_mov_b64_e32 v[4:5], s[0:1]
+; GFX942-SDAG-NEXT:    v_readfirstlane_b32 s0, v0
+; GFX942-SDAG-NEXT:    v_readfirstlane_b32 s1, v1
+; GFX942-SDAG-NEXT:    s_nop 4
+; GFX942-SDAG-NEXT:    global_store_dwordx4 v2, v[4:7], s[0:1] offset:-120 sc0
+; GFX942-SDAG-NEXT:    s_endpgm
+;
+; GFX950-SDAG-LABEL: global_store_saddr_uniform_ptr_in_vgprs_immoffset:
+; GFX950-SDAG:       ; %bb.0:
+; GFX950-SDAG-NEXT:    s_load_dword s6, s[4:5], 0x24
+; GFX950-SDAG-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x34
+; GFX950-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX950-SDAG-NEXT:    ds_read_b64 v[0:1], v0
+; GFX950-SDAG-NEXT:    s_waitcnt lgkmcnt(0)
+; GFX950-SDAG-NEXT:    v_mov_b32_e32 v2, s6
+; GFX950-SDAG-NEXT:    v_mov_b64_e32 v[6:7], s[2:3]
+; GFX950-SDAG-NEXT:    v_mov_b64_e32 v[4:5], s[0:1]
+; GFX950-SDAG-NEXT:    v_readfirstlane_b32 s0, v0
+; GFX950-SDAG-NEXT:    v_readfirstlane_b32 s1, v1
+; GFX950-SDAG-NEXT:    s_nop 4
+; GFX950-SDAG-NEXT:    global_store_dwordx4 v2, v[4:7], s[0:1] offset:-120 sc0
+; GFX950-SDAG-NEXT:    s_endpgm
+;
+; GFX10-1-GENERIC-SDAG-LABEL: global_store_saddr_uniform_ptr_in_vgprs_immoffset:
+; GFX10-1-GENERIC-SDAG:       ; %bb.0:
+; GFX10-1-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX10-1-GENERIC-SDAG-NEXT:    s_clause 0x1
+; GFX10-1-GENERIC-SDAG-NEXT:    s_load_dword s6, s[4:5], 0x24
+; GFX10-1-GENERIC-SDAG-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x34
+; GFX10-1-GENERIC-SDAG-NEXT:    ds_read_b64 v[4:5], v0
+; GFX10-1-GENERIC-SDAG-NEXT:    s_waitcnt lgkmcnt(0)
+; GFX10-1-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v6, s6
+; GFX10-1-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, s0
+; GFX10-1-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v1, s1
+; GFX10-1-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v2, s2
+; GFX10-1-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v3, s3
+; GFX10-1-GENERIC-SDAG-NEXT:    v_readfirstlane_b32 s0, v4
+; GFX10-1-GENERIC-SDAG-NEXT:    v_readfirstlane_b32 s1, v5
+; GFX10-1-GENERIC-SDAG-NEXT:    global_store_dwordx4 v6, v[0:3], s[0:1] offset:-120
+; GFX10-1-GENERIC-SDAG-NEXT:    s_endpgm
+;
+; GFX1012-SDAG-LABEL: global_store_saddr_uniform_ptr_in_vgprs_immoffset:
+; GFX1012-SDAG:       ; %bb.0:
+; GFX1012-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX1012-SDAG-NEXT:    s_clause 0x1
+; GFX1012-SDAG-NEXT:    s_load_dword s6, s[4:5], 0x24
+; GFX1012-SDAG-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x34
+; GFX1012-SDAG-NEXT:    ds_read_b64 v[4:5], v0
+; GFX1012-SDAG-NEXT:    s_waitcnt lgkmcnt(0)
+; GFX1012-SDAG-NEXT:    v_mov_b32_e32 v6, s6
+; GFX1012-SDAG-NEXT:    v_mov_b32_e32 v0, s0
+; GFX1012-SDAG-NEXT:    v_mov_b32_e32 v1, s1
+; GFX1012-SDAG-NEXT:    v_mov_b32_e32 v2, s2
+; GFX1012-SDAG-NEXT:    v_mov_b32_e32 v3, s3
+; GFX1012-SDAG-NEXT:    v_readfirstlane_b32 s0, v4
+; GFX1012-SDAG-NEXT:    v_readfirstlane_b32 s1, v5
+; GFX1012-SDAG-NEXT:    global_store_dwordx4 v6, v[0:3], s[0:1] offset:-120
+; GFX1012-SDAG-NEXT:    s_endpgm
+;
+; GFX10-3-GENERIC-SDAG-LABEL: global_store_saddr_uniform_ptr_in_vgprs_immoffset:
+; GFX10-3-GENERIC-SDAG:       ; %bb.0:
+; GFX10-3-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX10-3-GENERIC-SDAG-NEXT:    s_clause 0x1
+; GFX10-3-GENERIC-SDAG-NEXT:    s_load_dword s6, s[4:5], 0x24
+; GFX10-3-GENERIC-SDAG-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x34
+; GFX10-3-GENERIC-SDAG-NEXT:    ds_read_b64 v[4:5], v0
+; GFX10-3-GENERIC-SDAG-NEXT:    s_waitcnt lgkmcnt(0)
+; GFX10-3-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v6, s6
+; GFX10-3-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, s0
+; GFX10-3-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v1, s1
+; GFX10-3-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v2, s2
+; GFX10-3-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v3, s3
+; GFX10-3-GENERIC-SDAG-NEXT:    v_readfirstlane_b32 s0, v4
+; GFX10-3-GENERIC-SDAG-NEXT:    v_readfirstlane_b32 s1, v5
+; GFX10-3-GENERIC-SDAG-NEXT:    global_store_dwordx4 v6, v[0:3], s[0:1] offset:-120
+; GFX10-3-GENERIC-SDAG-NEXT:    s_endpgm
+;
+; GFX11-GENERIC-SDAG-LABEL: global_store_saddr_uniform_ptr_in_vgprs_immoffset:
+; GFX11-GENERIC-SDAG:       ; %bb.0:
+; GFX11-GENERIC-SDAG-NEXT:    s_clause 0x1
+; GFX11-GENERIC-SDAG-NEXT:    s_load_b32 s6, s[4:5], 0x24
+; GFX11-GENERIC-SDAG-NEXT:    s_load_b128 s[0:3], s[4:5], 0x34
+; GFX11-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX11-GENERIC-SDAG-NEXT:    ds_load_b64 v[4:5], v0
+; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt lgkmcnt(0)
+; GFX11-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v6, s6
+; GFX11-GENERIC-SDAG-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
+; GFX11-GENERIC-SDAG-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
+; GFX11-GENERIC-SDAG-NEXT:    v_readfirstlane_b32 s0, v4
+; GFX11-GENERIC-SDAG-NEXT:    v_readfirstlane_b32 s1, v5
+; GFX11-GENERIC-SDAG-NEXT:    av_global_store_b128 v6, v[0:3], s[0:1] offset:-120
+; GFX11-GENERIC-SDAG-NEXT:    s_endpgm
+;
+; GFX1250-SDAG-LABEL: global_store_saddr_uniform_ptr_in_vgprs_immoffset:
+; GFX1250-SDAG:       ; %bb.0:
+; GFX1250-SDAG-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_WAVE_MODE, 25, 1), 1
+; GFX1250-SDAG-NEXT:    s_clause 0x1
+; GFX1250-SDAG-NEXT:    s_load_b32 s6, s[4:5], 0x24
+; GFX1250-SDAG-NEXT:    s_load_b128 s[0:3], s[4:5], 0x34
+; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-SDAG-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v6, s6
+; GFX1250-SDAG-NEXT:    ds_load_b64 v[4:5], v0
+; GFX1250-SDAG-NEXT:    v_mov_b64_e32 v[0:1], s[0:1]
+; GFX1250-SDAG-NEXT:    v_mov_b64_e32 v[2:3], s[2:3]
+; GFX1250-SDAG-NEXT:    s_wait_dscnt 0x0
+; GFX1250-SDAG-NEXT:    v_readfirstlane_b32 s0, v4
+; GFX1250-SDAG-NEXT:    v_readfirstlane_b32 s1, v5
+; GFX1250-SDAG-NEXT:    av_global_store_b128 v6, v[0:3], s[0:1] offset:-120
+; GFX1250-SDAG-NEXT:    s_endpgm
+;
+; GFX12-GENERIC-SDAG-LABEL: global_store_saddr_uniform_ptr_in_vgprs_immoffset:
+; GFX12-GENERIC-SDAG:       ; %bb.0:
+; GFX12-GENERIC-SDAG-NEXT:    s_clause 0x1
+; GFX12-GENERIC-SDAG-NEXT:    s_load_b32 s6, s[4:5], 0x24
+; GFX12-GENERIC-SDAG-NEXT:    s_load_b128 s[0:3], s[4:5], 0x34
+; GFX12-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
+; GFX12-GENERIC-SDAG-NEXT:    ds_load_b64 v[4:5], v0
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v6, s6
+; GFX12-GENERIC-SDAG-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
+; GFX12-GENERIC-SDAG-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
+; GFX12-GENERIC-SDAG-NEXT:    s_wait_dscnt 0x0
+; GFX12-GENERIC-SDAG-NEXT:    v_readfirstlane_b32 s0, v4
+; GFX12-GENERIC-SDAG-NEXT:    v_readfirstlane_b32 s1, v5
+; GFX12-GENERIC-SDAG-NEXT:    av_global_store_b128 v6, v[0:3], s[0:1] offset:-120 scope:SCOPE_SE
+; GFX12-GENERIC-SDAG-NEXT:    s_endpgm
+;
+; GFX9-GENERIC-ISEL-LABEL: global_store_saddr_uniform_ptr_in_vgprs_immoffset:
+; GFX9-GENERIC-ISEL:       ; %bb.0:
+; GFX9-GENERIC-ISEL-NEXT:    s_load_dword s6, s[4:5], 0x24
+; GFX9-GENERIC-ISEL-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x34
+; GFX9-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX9-GENERIC-ISEL-NEXT:    ds_read_b64 v[0:1], v0
+; GFX9-GENERIC-ISEL-NEXT:    s_mov_b32 s7, 0
+; GFX9-GENERIC-ISEL-NEXT:    s_waitcnt lgkmcnt(0)
+; GFX9-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v2, s6
+; GFX9-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v3, s7
+; GFX9-GENERIC-ISEL-NEXT:    v_add_co_u32_e32 v4, vcc, v0, v2
+; GFX9-GENERIC-ISEL-NEXT:    v_addc_co_u32_e32 v5, vcc, v1, v3, vcc
+; GFX9-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, s0
+; GFX9-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v1, s1
+; GFX9-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v2, s2
+; GFX9-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v3, s3
+; GFX9-GENERIC-ISEL-NEXT:    global_store_dwordx4 v[4:5], v[0:3], off offset:-120
+; GFX9-GENERIC-ISEL-NEXT:    s_endpgm
+;
+; GFX906-ISEL-LABEL: global_store_saddr_uniform_ptr_in_vgprs_immoffset:
+; GFX906-ISEL:       ; %bb.0:
+; GFX906-ISEL-NEXT:    s_load_dword s6, s[4:5], 0x24
+; GFX906-ISEL-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x34
+; GFX906-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX906-ISEL-NEXT:    ds_read_b64 v[0:1], v0
+; GFX906-ISEL-NEXT:    s_mov_b32 s7, 0
+; GFX906-ISEL-NEXT:    s_waitcnt lgkmcnt(0)
+; GFX906-ISEL-NEXT:    v_mov_b32_e32 v2, s6
+; GFX906-ISEL-NEXT:    v_mov_b32_e32 v3, s7
+; GFX906-ISEL-NEXT:    v_add_co_u32_e32 v4, vcc, v0, v2
+; GFX906-ISEL-NEXT:    v_addc_co_u32_e32 v5, vcc, v1, v3, vcc
+; GFX906-ISEL-NEXT:    v_mov_b32_e32 v0, s0
+; GFX906-ISEL-NEXT:    v_mov_b32_e32 v1, s1
+; GFX906-ISEL-NEXT:    v_mov_b32_e32 v2, s2
+; GFX906-ISEL-NEXT:    v_mov_b32_e32 v3, s3
+; GFX906-ISEL-NEXT:    global_store_dwordx4 v[4:5], v[0:3], off offset:-120
+; GFX906-ISEL-NEXT:    s_endpgm
+;
+; GFX908-ISEL-LABEL: global_store_saddr_uniform_ptr_in_vgprs_immoffset:
+; GFX908-ISEL:       ; %bb.0:
+; GFX908-ISEL-NEXT:    s_load_dword s6, s[4:5], 0x24
+; GFX908-ISEL-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x34
+; GFX908-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX908-ISEL-NEXT:    ds_read_b64 v[0:1], v0
+; GFX908-ISEL-NEXT:    s_mov_b32 s7, 0
+; GFX908-ISEL-NEXT:    s_waitcnt lgkmcnt(0)
+; GFX908-ISEL-NEXT:    v_mov_b32_e32 v2, s6
+; GFX908-ISEL-NEXT:    v_mov_b32_e32 v3, s7
+; GFX908-ISEL-NEXT:    v_add_co_u32_e32 v4, vcc, v0, v2
+; GFX908-ISEL-NEXT:    v_addc_co_u32_e32 v5, vcc, v1, v3, vcc
+; GFX908-ISEL-NEXT:    v_mov_b32_e32 v0, s0
+; GFX908-ISEL-NEXT:    v_mov_b32_e32 v1, s1
+; GFX908-ISEL-NEXT:    v_mov_b32_e32 v2, s2
+; GFX908-ISEL-NEXT:    v_mov_b32_e32 v3, s3
+; GFX908-ISEL-NEXT:    global_store_dwordx4 v[4:5], v[0:3], off offset:-120
+; GFX908-ISEL-NEXT:    s_endpgm
+;
+; GFX90a-ISEL-LABEL: global_store_saddr_uniform_ptr_in_vgprs_immoffset:
+; GFX90a-ISEL:       ; %bb.0:
+; GFX90a-ISEL-NEXT:    s_load_dword s6, s[4:5], 0x24
+; GFX90a-ISEL-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x34
+; GFX90a-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX90a-ISEL-NEXT:    ds_read_b64 v[0:1], v0
+; GFX90a-ISEL-NEXT:    s_mov_b32 s7, 0
+; GFX90a-ISEL-NEXT:    s_waitcnt lgkmcnt(0)
+; GFX90a-ISEL-NEXT:    v_pk_mov_b32 v[2:3], s[6:7], s[6:7] op_sel:[0,1]
+; GFX90a-ISEL-NEXT:    v_add_co_u32_e32 v4, vcc, v0, v2
+; GFX90a-ISEL-NEXT:    v_addc_co_u32_e32 v5, vcc, v1, v3, vcc
+; GFX90a-ISEL-NEXT:    v_pk_mov_b32 v[0:1], s[0:1], s[0:1] op_sel:[0,1]
+; GFX90a-ISEL-NEXT:    v_pk_mov_b32 v[2:3], s[2:3], s[2:3] op_sel:[0,1]
+; GFX90a-ISEL-NEXT:    global_store_dwordx4 v[4:5], v[0:3], off offset:-120
+; GFX90a-ISEL-NEXT:    s_endpgm
+;
+; GFX9-4-GENERIC-ISEL-LABEL: global_store_saddr_uniform_ptr_in_vgprs_immoffset:
+; GFX9-4-GENERIC-ISEL:       ; %bb.0:
+; GFX9-4-GENERIC-ISEL-NEXT:    s_load_dword s6, s[4:5], 0x24
+; GFX9-4-GENERIC-ISEL-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x34
+; GFX9-4-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX9-4-GENERIC-ISEL-NEXT:    ds_read_b64 v[0:1], v0
+; GFX9-4-GENERIC-ISEL-NEXT:    s_mov_b32 s7, 0
+; GFX9-4-GENERIC-ISEL-NEXT:    s_waitcnt lgkmcnt(0)
+; GFX9-4-GENERIC-ISEL-NEXT:    v_mov_b64_e32 v[2:3], s[6:7]
+; GFX9-4-GENERIC-ISEL-NEXT:    v_add_co_u32_e32 v4, vcc, v0, v2
+; GFX9-4-GENERIC-ISEL-NEXT:    s_nop 1
+; GFX9-4-GENERIC-ISEL-NEXT:    v_addc_co_u32_e32 v5, vcc, v1, v3, vcc
+; GFX9-4-GENERIC-ISEL-NEXT:    v_mov_b64_e32 v[0:1], s[0:1]
+; GFX9-4-GENERIC-ISEL-NEXT:    v_mov_b64_e32 v[2:3], s[2:3]
+; GFX9-4-GENERIC-ISEL-NEXT:    global_store_dwordx4 v[4:5], v[0:3], off offset:-120 sc0
+; GFX9-4-GENERIC-ISEL-NEXT:    s_endpgm
+;
+; GFX942-ISEL-LABEL: global_store_saddr_uniform_ptr_in_vgprs_immoffset:
+; GFX942-ISEL:       ; %bb.0:
+; GFX942-ISEL-NEXT:    s_load_dword s6, s[4:5], 0x24
+; GFX942-ISEL-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x34
+; GFX942-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX942-ISEL-NEXT:    ds_read_b64 v[0:1], v0
+; GFX942-ISEL-NEXT:    s_mov_b32 s7, 0
+; GFX942-ISEL-NEXT:    s_waitcnt lgkmcnt(0)
+; GFX942-ISEL-NEXT:    v_mov_b64_e32 v[2:3], s[6:7]
+; GFX942-ISEL-NEXT:    v_add_co_u32_e32 v4, vcc, v0, v2
+; GFX942-ISEL-NEXT:    s_nop 1
+; GFX942-ISEL-NEXT:    v_addc_co_u32_e32 v5, vcc, v1, v3, vcc
+; GFX942-ISEL-NEXT:    v_mov_b64_e32 v[0:1], s[0:1]
+; GFX942-ISEL-NEXT:    v_mov_b64_e32 v[2:3], s[2:3]
+; GFX942-ISEL-NEXT:    global_store_dwordx4 v[4:5], v[0:3], off offset:-120 sc0
+; GFX942-ISEL-NEXT:    s_endpgm
+;
+; GFX950-ISEL-LABEL: global_store_saddr_uniform_ptr_in_vgprs_immoffset:
+; GFX950-ISEL:       ; %bb.0:
+; GFX950-ISEL-NEXT:    s_load_dword s6, s[4:5], 0x24
+; GFX950-ISEL-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x34
+; GFX950-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX950-ISEL-NEXT:    ds_read_b64 v[0:1], v0
+; GFX950-ISEL-NEXT:    s_mov_b32 s7, 0
+; GFX950-ISEL-NEXT:    s_waitcnt lgkmcnt(0)
+; GFX950-ISEL-NEXT:    v_mov_b64_e32 v[2:3], s[6:7]
+; GFX950-ISEL-NEXT:    v_add_co_u32_e32 v4, vcc, v0, v2
+; GFX950-ISEL-NEXT:    s_nop 1
+; GFX950-ISEL-NEXT:    v_addc_co_u32_e32 v5, vcc, v1, v3, vcc
+; GFX950-ISEL-NEXT:    v_mov_b64_e32 v[0:1], s[0:1]
+; GFX950-ISEL-NEXT:    v_mov_b64_e32 v[2:3], s[2:3]
+; GFX950-ISEL-NEXT:    global_store_dwordx4 v[4:5], v[0:3], off offset:-120 sc0
+; GFX950-ISEL-NEXT:    s_endpgm
+;
+; GFX10-1-GENERIC-ISEL-LABEL: global_store_saddr_uniform_ptr_in_vgprs_immoffset:
+; GFX10-1-GENERIC-ISEL:       ; %bb.0:
+; GFX10-1-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX10-1-GENERIC-ISEL-NEXT:    s_clause 0x1
+; GFX10-1-GENERIC-ISEL-NEXT:    s_load_dword s6, s[4:5], 0x24
+; GFX10-1-GENERIC-ISEL-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x34
+; GFX10-1-GENERIC-ISEL-NEXT:    s_mov_b32 s7, 0
+; GFX10-1-GENERIC-ISEL-NEXT:    ds_read_b64 v[0:1], v0
+; GFX10-1-GENERIC-ISEL-NEXT:    s_waitcnt lgkmcnt(0)
+; GFX10-1-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v2, s6
+; GFX10-1-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v3, s7
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_u32 v4, vcc_lo, v0, v2
+; GFX10-1-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e32 v5, vcc_lo, v1, v3, vcc_lo
+; GFX10-1-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, s0
+; GFX10-1-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v1, s1
+; GFX10-1-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v2, s2
+; GFX10-1-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v3, s3
+; GFX10-1-GENERIC-ISEL-NEXT:    global_store_dwordx4 v[4:5], v[0:3], off offset:-120
+; GFX10-1-GENERIC-ISEL-NEXT:    s_endpgm
+;
+; GFX1012-ISEL-LABEL: global_store_saddr_uniform_ptr_in_vgprs_immoffset:
+; GFX1012-ISEL:       ; %bb.0:
+; GFX1012-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX1012-ISEL-NEXT:    s_clause 0x1
+; GFX1012-ISEL-NEXT:    s_load_dword s6, s[4:5], 0x24
+; GFX1012-ISEL-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x34
+; GFX1012-ISEL-NEXT:    s_mov_b32 s7, 0
+; GFX1012-ISEL-NEXT:    ds_read_b64 v[0:1], v0
+; GFX1012-ISEL-NEXT:    s_waitcnt lgkmcnt(0)
+; GFX1012-ISEL-NEXT:    v_mov_b32_e32 v2, s6
+; GFX1012-ISEL-NEXT:    v_mov_b32_e32 v3, s7
+; GFX1012-ISEL-NEXT:    v_add_co_u32 v4, vcc_lo, v0, v2
+; GFX1012-ISEL-NEXT:    v_add_co_ci_u32_e32 v5, vcc_lo, v1, v3, vcc_lo
+; GFX1012-ISEL-NEXT:    v_mov_b32_e32 v0, s0
+; GFX1012-ISEL-NEXT:    v_mov_b32_e32 v1, s1
+; GFX1012-ISEL-NEXT:    v_mov_b32_e32 v2, s2
+; GFX1012-ISEL-NEXT:    v_mov_b32_e32 v3, s3
+; GFX1012-ISEL-NEXT:    global_store_dwordx4 v[4:5], v[0:3], off offset:-120
+; GFX1012-ISEL-NEXT:    s_endpgm
+;
+; GFX10-3-GENERIC-ISEL-LABEL: global_store_saddr_uniform_ptr_in_vgprs_immoffset:
+; GFX10-3-GENERIC-ISEL:       ; %bb.0:
+; GFX10-3-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX10-3-GENERIC-ISEL-NEXT:    s_clause 0x1
+; GFX10-3-GENERIC-ISEL-NEXT:    s_load_dword s6, s[4:5], 0x24
+; GFX10-3-GENERIC-ISEL-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x34
+; GFX10-3-GENERIC-ISEL-NEXT:    s_mov_b32 s7, 0
+; GFX10-3-GENERIC-ISEL-NEXT:    ds_read_b64 v[0:1], v0
+; GFX10-3-GENERIC-ISEL-NEXT:    s_waitcnt lgkmcnt(0)
+; GFX10-3-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v2, s6
+; GFX10-3-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v3, s7
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_u32 v4, vcc_lo, v0, v2
+; GFX10-3-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v5, null, v1, v3, vcc_lo
+; GFX10-3-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, s0
+; GFX10-3-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v1, s1
+; GFX10-3-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v2, s2
+; GFX10-3-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v3, s3
+; GFX10-3-GENERIC-ISEL-NEXT:    global_store_dwordx4 v[4:5], v[0:3], off offset:-120
+; GFX10-3-GENERIC-ISEL-NEXT:    s_endpgm
+;
+; GFX11-GENERIC-ISEL-LABEL: global_store_saddr_uniform_ptr_in_vgprs_immoffset:
+; GFX11-GENERIC-ISEL:       ; %bb.0:
+; GFX11-GENERIC-ISEL-NEXT:    s_clause 0x1
+; GFX11-GENERIC-ISEL-NEXT:    s_load_b32 s6, s[4:5], 0x24
+; GFX11-GENERIC-ISEL-NEXT:    s_load_b128 s[0:3], s[4:5], 0x34
+; GFX11-GENERIC-ISEL-NEXT:    s_mov_b32 s7, 0
+; GFX11-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    v_dual_mov_b32 v2, s6 :: v_dual_mov_b32 v3, s7
+; GFX11-GENERIC-ISEL-NEXT:    ds_load_b64 v[0:1], v0
+; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt lgkmcnt(0)
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_u32 v4, vcc_lo, v0, v2
+; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX11-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v5, null, v1, v3, vcc_lo
+; GFX11-GENERIC-ISEL-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v3, s3
+; GFX11-GENERIC-ISEL-NEXT:    v_dual_mov_b32 v1, s1 :: v_dual_mov_b32 v2, s2
+; GFX11-GENERIC-ISEL-NEXT:    av_global_store_b128 v[4:5], v[0:3], off offset:-120
+; GFX11-GENERIC-ISEL-NEXT:    s_endpgm
+;
+; GFX1250-ISEL-LABEL: global_store_saddr_uniform_ptr_in_vgprs_immoffset:
+; GFX1250-ISEL:       ; %bb.0:
+; GFX1250-ISEL-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_WAVE_MODE, 25, 1), 1
+; GFX1250-ISEL-NEXT:    s_clause 0x1
+; GFX1250-ISEL-NEXT:    s_load_b32 s6, s[4:5], 0x24
+; GFX1250-ISEL-NEXT:    s_load_b128 s[0:3], s[4:5], 0x34
+; GFX1250-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX1250-ISEL-NEXT:    s_mov_b32 s7, 0
+; GFX1250-ISEL-NEXT:    ds_load_b64 v[0:1], v0
+; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX1250-ISEL-NEXT:    v_mov_b64_e32 v[2:3], s[6:7]
+; GFX1250-ISEL-NEXT:    s_wait_dscnt 0x0
+; GFX1250-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
+; GFX1250-ISEL-NEXT:    v_add_co_u32 v4, vcc_lo, v0, v2
+; GFX1250-ISEL-NEXT:    v_add_co_ci_u32_e64 v5, null, v1, v3, vcc_lo
+; GFX1250-ISEL-NEXT:    v_mov_b64_e32 v[0:1], s[0:1]
+; GFX1250-ISEL-NEXT:    v_mov_b64_e32 v[2:3], s[2:3]
+; GFX1250-ISEL-NEXT:    av_global_store_b128 v[4:5], v[0:3], off offset:-120
+; GFX1250-ISEL-NEXT:    s_endpgm
+;
+; GFX12-GENERIC-ISEL-LABEL: global_store_saddr_uniform_ptr_in_vgprs_immoffset:
+; GFX12-GENERIC-ISEL:       ; %bb.0:
+; GFX12-GENERIC-ISEL-NEXT:    s_clause 0x1
+; GFX12-GENERIC-ISEL-NEXT:    s_load_b32 s6, s[4:5], 0x24
+; GFX12-GENERIC-ISEL-NEXT:    s_load_b128 s[0:3], s[4:5], 0x34
+; GFX12-GENERIC-ISEL-NEXT:    s_mov_b32 s7, 0
+; GFX12-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    v_dual_mov_b32 v2, s6 :: v_dual_mov_b32 v3, s7
+; GFX12-GENERIC-ISEL-NEXT:    ds_load_b64 v[0:1], v0
+; GFX12-GENERIC-ISEL-NEXT:    s_wait_dscnt 0x0
+; GFX12-GENERIC-ISEL-NEXT:    v_add_co_u32 v4, vcc_lo, v0, v2
+; GFX12-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
+; GFX12-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v5, null, v1, v3, vcc_lo
+; GFX12-GENERIC-ISEL-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v3, s3
+; GFX12-GENERIC-ISEL-NEXT:    v_dual_mov_b32 v1, s1 :: v_dual_mov_b32 v2, s2
+; GFX12-GENERIC-ISEL-NEXT:    av_global_store_b128 v[4:5], v[0:3], off offset:-120 scope:SCOPE_SE
+; GFX12-GENERIC-ISEL-NEXT:    s_endpgm
+  %sbase = load ptr addrspace(1), ptr addrspace(3) @ptr.in.lds
+  %zext.offset = zext i32 %voffset to i64
+  %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 %zext.offset
+  %gep1 = getelementptr inbounds i8, ptr addrspace(1) %gep0, i64 -120
+  call void @llvm.amdgcn.av.global.store.b128(ptr addrspace(1) %gep1, <4 x i32> %data, metadata !1)
+  ret void
+}
+
+;;==============================================================================
+;; } End saddr addressing modes
+;;==============================================================================
+
+
+!0 = !{!"wavefront"}
+!1 = !{!"workgroup"}
+!2 = !{!"agent"}
+!3 = !{!""}
+;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:
+; GFX: {{.*}}
+; GFX-ISEL: {{.*}}
+; GFX-SDAG: {{.*}}
diff --git a/llvm/test/CodeGen/AMDGPU/unsupported-av-global-load.ll b/llvm/test/CodeGen/AMDGPU/unsupported-av-global-load.ll
new file mode 100644
index 0000000000000..c20a6bec97455
--- /dev/null
+++ b/llvm/test/CodeGen/AMDGPU/unsupported-av-global-load.ll
@@ -0,0 +1,22 @@
+; RUN: not --crash llc -global-isel=0 -mtriple=amdgcn -mcpu=gfx602          < %s 2>&1 | FileCheck -check-prefixes=GFX602          %s
+; RUN: not --crash llc -global-isel=0 -mtriple=amdgcn -mcpu=gfx705          < %s 2>&1 | FileCheck -check-prefixes=GFX705          %s
+; RUN: not --crash llc -global-isel=0 -mtriple=amdgcn -mcpu=gfx810          < %s 2>&1 | FileCheck -check-prefixes=GFX810          %s
+
+; RUN: not llc -global-isel=1 -mtriple=amdgcn -mcpu=gfx602          < %s 2>&1 | FileCheck -check-prefixes=GFX602-GBL-ISEL          %s
+; RUN: not llc -global-isel=1 -mtriple=amdgcn -mcpu=gfx705          < %s 2>&1 | FileCheck -check-prefixes=GFX705-GBL-ISEL          %s
+; RUN: not llc -global-isel=1 -mtriple=amdgcn -mcpu=gfx810          < %s 2>&1 | FileCheck -check-prefixes=GFX810-GBL-ISEL          %s
+
+define <4 x i32> @av_global_load_b128(ptr addrspace(1) %addr) {
+; GFX602:          LLVM ERROR: Cannot select: intrinsic %llvm.amdgcn.av.global.load.b128
+; GFX705:          LLVM ERROR: Cannot select: intrinsic %llvm.amdgcn.av.global.load.b128
+; GFX810:          LLVM ERROR: Cannot select: intrinsic %llvm.amdgcn.av.global.load.b128
+
+; GFX602-GBL-ISEL: LLVM ERROR: cannot select: {{.*}} intrinsic(@llvm.amdgcn.av.global.load.b128)
+; GFX705-GBL-ISEL: LLVM ERROR: cannot select: {{.*}} intrinsic(@llvm.amdgcn.av.global.load.b128)
+; GFX810-GBL-ISEL: LLVM ERROR: cannot select: {{.*}} intrinsic(@llvm.amdgcn.av.global.load.b128)
+entry:
+  %data = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %addr, metadata !0)
+  ret <4 x i32> %data
+}
+
+!0 = !{!""}
diff --git a/llvm/test/CodeGen/AMDGPU/unsupported-av-global-store.ll b/llvm/test/CodeGen/AMDGPU/unsupported-av-global-store.ll
new file mode 100644
index 0000000000000..e4041c486e143
--- /dev/null
+++ b/llvm/test/CodeGen/AMDGPU/unsupported-av-global-store.ll
@@ -0,0 +1,22 @@
+; RUN: not --crash llc -global-isel=0 -mtriple=amdgcn -mcpu=gfx602          < %s 2>&1 | FileCheck -check-prefixes=GFX602          %s
+; RUN: not --crash llc -global-isel=0 -mtriple=amdgcn -mcpu=gfx705          < %s 2>&1 | FileCheck -check-prefixes=GFX705          %s
+; RUN: not --crash llc -global-isel=0 -mtriple=amdgcn -mcpu=gfx810          < %s 2>&1 | FileCheck -check-prefixes=GFX810          %s
+
+; RUN: not llc -global-isel=1 -mtriple=amdgcn -mcpu=gfx602          < %s 2>&1 | FileCheck -check-prefixes=GFX602-GBL-ISEL          %s
+; RUN: not llc -global-isel=1 -mtriple=amdgcn -mcpu=gfx705          < %s 2>&1 | FileCheck -check-prefixes=GFX705-GBL-ISEL          %s
+; RUN: not llc -global-isel=1 -mtriple=amdgcn -mcpu=gfx810          < %s 2>&1 | FileCheck -check-prefixes=GFX810-GBL-ISEL          %s
+
+define void @av_global_store_b128(ptr addrspace(1) %addr, <4 x i32> %data) {
+; GFX602:          LLVM ERROR: Cannot select: intrinsic %llvm.amdgcn.av.global.store.b128
+; GFX705:          LLVM ERROR: Cannot select: intrinsic %llvm.amdgcn.av.global.store.b128
+; GFX810:          LLVM ERROR: Cannot select: intrinsic %llvm.amdgcn.av.global.store.b128
+
+; GFX602-GBL-ISEL: LLVM ERROR: cannot select: {{.*}} intrinsic(@llvm.amdgcn.av.global.store.b128)
+; GFX705-GBL-ISEL: LLVM ERROR: cannot select: {{.*}} intrinsic(@llvm.amdgcn.av.global.store.b128)
+; GFX810-GBL-ISEL: LLVM ERROR: cannot select: {{.*}} intrinsic(@llvm.amdgcn.av.global.store.b128)
+entry:
+  call void @llvm.amdgcn.av.global.store.b128(ptr addrspace(1) %addr, <4 x i32> %data, metadata !0)
+  ret void
+}
+
+!0 = !{!""}
diff --git a/llvm/test/Verifier/AMDGPU/intrinsics-av.ll b/llvm/test/Verifier/AMDGPU/intrinsics-av.ll
new file mode 100644
index 0000000000000..b6856ceb63e60
--- /dev/null
+++ b/llvm/test/Verifier/AMDGPU/intrinsics-av.ll
@@ -0,0 +1,15 @@
+; RUN: not llvm-as -disable-output < %s 2>&1 | FileCheck %s
+
+; CHECK: global load/store intrinsics require that the last argument is a metadata string
+; CHECK-NEXT: call <4 x i32> @llvm.amdgcn.av.global.load.b128({{.*}})
+define <4 x i32> @av_global_load_b128_bad_metadata(ptr addrspace(1) %addr) {
+  %data = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %addr, metadata i32 0)
+  ret <4 x i32> %data
+}
+
+; CHECK: global load/store intrinsics require that the last argument is a metadata string
+; CHECK-NEXT: call void @llvm.amdgcn.av.global.store.b128({{.*}})
+define void @av_global_store_b128_bad_metadata(ptr addrspace(1) %addr, <4 x i32> %data) {
+  call void @llvm.amdgcn.av.global.store.b128(ptr addrspace(1) %addr, <4 x i32> %data, metadata i32 0)
+  ret void
+}

>From 58647337320a5ab05effed4ade80276bfe76a0d4 Mon Sep 17 00:00:00 2001
From: Sameer Sahasrabuddhe <sameer.sahasrabuddhe at amd.com>
Date: Mon, 13 Apr 2026 09:58:23 +0530
Subject: [PATCH 2/3] Skip type check for metadata operands in
 addTypeCheckPredicate

Metadata is trivially always metadata. So we don't actually need the predicate
introduced in #191389.
---
 .../CodeGen/GlobalISel/GIMatchTableExecutor.h |  6 ------
 .../GlobalISel/GIMatchTableExecutorImpl.h     |  9 ---------
 .../GlobalISel/GlobalISelMatchTable.cpp       | 19 ++++---------------
 .../Common/GlobalISel/GlobalISelMatchTable.h  | 18 ------------------
 4 files changed, 4 insertions(+), 48 deletions(-)

diff --git a/llvm/include/llvm/CodeGen/GlobalISel/GIMatchTableExecutor.h b/llvm/include/llvm/CodeGen/GlobalISel/GIMatchTableExecutor.h
index f21923827039c..3a2509345b776 100644
--- a/llvm/include/llvm/CodeGen/GlobalISel/GIMatchTableExecutor.h
+++ b/llvm/include/llvm/CodeGen/GlobalISel/GIMatchTableExecutor.h
@@ -246,12 +246,6 @@ enum {
   /// - SizeInBits(ULEB128) - The size of the pointer value in bits.
   GIM_CheckPointerToAny,
 
-  /// Check the machine type of the specified operand
-  /// - InsnID(ULEB128) - Instruction ID
-  /// - OpIdx(ULEB128) - Operand index
-  /// - MachineOperandType(ULEB128) - Expected type
-  GIM_CheckMachineOperandType,
-
   /// Check the register bank for the specified operand
   /// - InsnID(ULEB128) - Instruction ID
   /// - OpIdx(ULEB128) - Operand index
diff --git a/llvm/include/llvm/CodeGen/GlobalISel/GIMatchTableExecutorImpl.h b/llvm/include/llvm/CodeGen/GlobalISel/GIMatchTableExecutorImpl.h
index 3d6dd9e62f963..8f6586e79d78a 100644
--- a/llvm/include/llvm/CodeGen/GlobalISel/GIMatchTableExecutorImpl.h
+++ b/llvm/include/llvm/CodeGen/GlobalISel/GIMatchTableExecutorImpl.h
@@ -768,15 +768,6 @@ bool GIMatchTableExecutor::executeMatchTable(
 
       break;
     }
-    case GIM_CheckMachineOperandType: {
-      uint64_t InsnID = readULEB();
-      uint64_t OpIdx = readULEB();
-      uint64_t MOTy = readULEB();
-      MachineOperand &MO = State.MIs[InsnID]->getOperand(OpIdx);
-      if (MO.getType() != MOTy)
-        return false;
-      break;
-    }
     case GIM_RecordNamedOperand: {
       uint64_t InsnID = readULEB();
       uint64_t OpIdx = readULEB();
diff --git a/llvm/utils/TableGen/Common/GlobalISel/GlobalISelMatchTable.cpp b/llvm/utils/TableGen/Common/GlobalISel/GlobalISelMatchTable.cpp
index b642a5fe70d63..20202d7325fa1 100644
--- a/llvm/utils/TableGen/Common/GlobalISel/GlobalISelMatchTable.cpp
+++ b/llvm/utils/TableGen/Common/GlobalISel/GlobalISelMatchTable.cpp
@@ -1493,11 +1493,11 @@ Error OperandMatcher::addTypeCheckPredicate(const TypeSetByHwMode &VTy,
     return Error::success();
   }
 
-  llvm::MVT::SimpleValueType STy = VTy.getMachineValueType().SimpleTy;
-  if (STy == MVT::Metadata) {
-    addPredicate<MachineOperandTypeMatcher>(MachineOperand::MO_Metadata);
+  // Metadata operands have no LLT representation and no runtime type check is
+  // needed — they are guaranteed to be MO_Metadata by the IRTranslator. This
+  // mirrors how srcvalue is handled in importChildMatcher.
+  if (VTy.getMachineValueType() == MVT::Metadata)
     return Error::success();
-  }
 
   auto OpTyOrNone = MVTToLLT(VTy.getMachineValueType().SimpleTy);
   if (!OpTyOrNone)
@@ -1964,17 +1964,6 @@ bool InstructionOperandMatcher::isHigherPriorityThan(
   return false;
 }
 
-//===- MachineOperandTypeMatcher -----------------------------------------===//
-
-void MachineOperandTypeMatcher::emitPredicateOpcodes(MatchTable &Table,
-                                                     RuleMatcher &Rule) const {
-  Table << MatchTable::Opcode("GIM_CheckMachineOperandType")
-        << MatchTable::Comment("MI") << MatchTable::ULEB128Value(InsnVarID)
-        << MatchTable::Comment("Op") << MatchTable::ULEB128Value(OpIdx)
-        << MatchTable::Comment("Ty") << MatchTable::ULEB128Value(MOTy)
-        << MatchTable::LineBreak;
-}
-
 //===- OperandRenderer ----------------------------------------------------===//
 
 OperandRenderer::~OperandRenderer() = default;
diff --git a/llvm/utils/TableGen/Common/GlobalISel/GlobalISelMatchTable.h b/llvm/utils/TableGen/Common/GlobalISel/GlobalISelMatchTable.h
index d58e7a603f651..4749139049861 100644
--- a/llvm/utils/TableGen/Common/GlobalISel/GlobalISelMatchTable.h
+++ b/llvm/utils/TableGen/Common/GlobalISel/GlobalISelMatchTable.h
@@ -23,7 +23,6 @@
 #include "llvm/ADT/SmallPtrSet.h"
 #include "llvm/ADT/StringMap.h"
 #include "llvm/ADT/StringRef.h"
-#include "llvm/CodeGen/MachineOperand.h"
 #include "llvm/CodeGenTypes/LowLevelType.h"
 #include "llvm/Support/Error.h"
 #include "llvm/Support/SaveAndRestore.h"
@@ -861,7 +860,6 @@ class PredicateMatcher {
     OPM_MBB,
     OPM_RecordNamedOperand,
     OPM_RecordRegType,
-    OPM_MOType,
   };
 
 protected:
@@ -1965,22 +1963,6 @@ class InstructionOperandMatcher : public OperandPredicateMatcher {
   }
 };
 
-class MachineOperandTypeMatcher : public OperandPredicateMatcher {
-  const MachineOperand::MachineOperandType MOTy;
-
-public:
-  MachineOperandTypeMatcher(unsigned InsnVarID, unsigned OpIdx,
-                            MachineOperand::MachineOperandType MOTy)
-      : OperandPredicateMatcher(OPM_MOType, InsnVarID, OpIdx), MOTy(MOTy) {}
-
-  static bool classof(const PredicateMatcher *P) {
-    return P->getKind() == OPM_MOType;
-  }
-
-  void emitPredicateOpcodes(MatchTable &Table,
-                            RuleMatcher &Rule) const override;
-};
-
 //===- Actions ------------------------------------------------------------===//
 class OperandRenderer {
 public:

>From 8e64b13a024e31ba11d1064aca93e1f8049b56a9 Mon Sep 17 00:00:00 2001
From: Sameer Sahasrabuddhe <sameer.sahasrabuddhe at amd.com>
Date: Mon, 13 Apr 2026 10:15:05 +0530
Subject: [PATCH 3/3] Address review comments

- Revert a lot of mnemonic renames caused by a brute-force sed.
- Add -filetype=null to unsupported test RUN lines
- Regenerate CHECK lines in codegen tests

Assisted-By: Claude Opus 4.6 (1M context)
---
 llvm/docs/AMDGPUUsage.rst                     |    8 +-
 llvm/lib/Target/AMDGPU/FLATInstructions.td    |   14 +-
 llvm/test/CodeGen/AMDGPU/amdgcn-av-scopes.ll  |   96 +-
 .../AMDGPU/llvm.amdgcn.av.global.load.b128.ll | 1392 ++++++++---------
 .../llvm.amdgcn.av.global.store.b128.ll       |  192 +--
 .../AMDGPU/unsupported-av-global-load.ll      |   12 +-
 .../AMDGPU/unsupported-av-global-store.ll     |   12 +-
 7 files changed, 863 insertions(+), 863 deletions(-)

diff --git a/llvm/docs/AMDGPUUsage.rst b/llvm/docs/AMDGPUUsage.rst
index bb7b43401f954..7be93da165295 100644
--- a/llvm/docs/AMDGPUUsage.rst
+++ b/llvm/docs/AMDGPUUsage.rst
@@ -1801,9 +1801,9 @@ The AMDGPU backend implements the following LLVM IR intrinsics.
 
                                                    gfx11*         ``global_load_dwordx4``                                                  ``glc``                    ``glc``                    ``glc``
 
-                                                   gfx120*        ``av_global_load_b128``                             (CU)    ``scope:SCOPE_SE`` (SE)  ``scope:SCOPE_DEV`` (DEV)  ``scope:SCOPE_SYS`` (SYS)
+                                                   gfx120*        ``global_load_b128``                             (CU)    ``scope:SCOPE_SE`` (SE)  ``scope:SCOPE_DEV`` (DEV)  ``scope:SCOPE_SYS`` (SYS)
 
-                                                   gfx125*        ``av_global_load_b128``                             (CU)                             ``scope:SCOPE_DEV`` (DEV)  ``scope:SCOPE_SYS`` (SYS)
+                                                   gfx125*        ``global_load_b128``                             (CU)                             ``scope:SCOPE_DEV`` (DEV)  ``scope:SCOPE_SYS`` (SYS)
                                                    ============== ========================== ========================== ========================== ========================== ==========================
 
                                                    For gfx90*, see "GLC Bit Explained" in the appropriate instruction set reference
@@ -1855,9 +1855,9 @@ The AMDGPU backend implements the following LLVM IR intrinsics.
 
                                                    gfx11*         ``global_store_dwordx4``
 
-                                                   gfx120*        ``av_global_store_b128``                            (CU)    ``scope:SCOPE_SE`` (SE)  ``scope:SCOPE_DEV`` (DEV)  ``scope:SCOPE_SYS`` (SYS)
+                                                   gfx120*        ``global_store_b128``                            (CU)    ``scope:SCOPE_SE`` (SE)  ``scope:SCOPE_DEV`` (DEV)  ``scope:SCOPE_SYS`` (SYS)
 
-                                                   gfx125*        ``av_global_store_b128``                            (CU)                             ``scope:SCOPE_DEV`` (DEV)  ``scope:SCOPE_SYS`` (SYS)
+                                                   gfx125*        ``global_store_b128``                            (CU)                             ``scope:SCOPE_DEV`` (DEV)  ``scope:SCOPE_SYS`` (SYS)
                                                    ============== ========================== ========================== ========================== ========================== ==========================
 
                                                    For gfx90*, see "GLC Bit Explained" in the appropriate instruction set reference
diff --git a/llvm/lib/Target/AMDGPU/FLATInstructions.td b/llvm/lib/Target/AMDGPU/FLATInstructions.td
index c156ec148de76..b3aadac4ab1f4 100644
--- a/llvm/lib/Target/AMDGPU/FLATInstructions.td
+++ b/llvm/lib/Target/AMDGPU/FLATInstructions.td
@@ -3339,13 +3339,13 @@ defm GLOBAL_LOAD_SSHORT         : GLOBAL_Real_AllAddr_gfx11<0x013, "global_load_
 defm GLOBAL_LOAD_DWORD          : GLOBAL_Real_AllAddr_gfx11<0x014, "global_load_b32">;
 defm GLOBAL_LOAD_DWORDX2        : GLOBAL_Real_AllAddr_gfx11<0x015, "global_load_b64">;
 defm GLOBAL_LOAD_DWORDX3        : GLOBAL_Real_AllAddr_gfx11<0x016, "global_load_b96">;
-defm GLOBAL_LOAD_DWORDX4        : GLOBAL_Real_AllAddr_gfx11<0x017, "av_global_load_b128">;
+defm GLOBAL_LOAD_DWORDX4        : GLOBAL_Real_AllAddr_gfx11<0x017, "global_load_b128">;
 defm GLOBAL_STORE_BYTE          : GLOBAL_Real_AllAddr_gfx11<0x018, "global_store_b8">;
 defm GLOBAL_STORE_SHORT         : GLOBAL_Real_AllAddr_gfx11<0x019, "global_store_b16">;
 defm GLOBAL_STORE_DWORD         : GLOBAL_Real_AllAddr_gfx11<0x01a, "global_store_b32">;
 defm GLOBAL_STORE_DWORDX2       : GLOBAL_Real_AllAddr_gfx11<0x01b, "global_store_b64">;
 defm GLOBAL_STORE_DWORDX3       : GLOBAL_Real_AllAddr_gfx11<0x01c, "global_store_b96">;
-defm GLOBAL_STORE_DWORDX4       : GLOBAL_Real_AllAddr_gfx11<0x01d, "av_global_store_b128">;
+defm GLOBAL_STORE_DWORDX4       : GLOBAL_Real_AllAddr_gfx11<0x01d, "global_store_b128">;
 defm GLOBAL_LOAD_UBYTE_D16      : GLOBAL_Real_AllAddr_gfx11<0x01e, "global_load_d16_u8">;
 defm GLOBAL_LOAD_SBYTE_D16      : GLOBAL_Real_AllAddr_gfx11<0x01f, "global_load_d16_i8">;
 defm GLOBAL_LOAD_SHORT_D16      : GLOBAL_Real_AllAddr_gfx11<0x020, "global_load_d16_b16">;
@@ -3548,13 +3548,13 @@ defm GLOBAL_LOAD_SSHORT            : VFLAT_Real_AllAddr_gfx12<0x013, "global_loa
 defm GLOBAL_LOAD_DWORD             : VFLAT_Real_AllAddr_gfx12<0x014, "global_load_b32">;
 defm GLOBAL_LOAD_DWORDX2           : VFLAT_Real_AllAddr_gfx12<0x015, "global_load_b64">;
 defm GLOBAL_LOAD_DWORDX3           : VFLAT_Real_AllAddr_gfx12<0x016, "global_load_b96">;
-defm GLOBAL_LOAD_DWORDX4           : VFLAT_Real_AllAddr_gfx12<0x017, "av_global_load_b128">;
+defm GLOBAL_LOAD_DWORDX4           : VFLAT_Real_AllAddr_gfx12<0x017, "global_load_b128">;
 defm GLOBAL_STORE_BYTE             : VFLAT_Real_AllAddr_gfx12<0x018, "global_store_b8">;
 defm GLOBAL_STORE_SHORT            : VFLAT_Real_AllAddr_gfx12<0x019, "global_store_b16">;
 defm GLOBAL_STORE_DWORD            : VFLAT_Real_AllAddr_gfx12<0x01a, "global_store_b32">;
 defm GLOBAL_STORE_DWORDX2          : VFLAT_Real_AllAddr_gfx12<0x01b, "global_store_b64">;
 defm GLOBAL_STORE_DWORDX3          : VFLAT_Real_AllAddr_gfx12<0x01c, "global_store_b96">;
-defm GLOBAL_STORE_DWORDX4          : VFLAT_Real_AllAddr_gfx12<0x01d, "av_global_store_b128">;
+defm GLOBAL_STORE_DWORDX4          : VFLAT_Real_AllAddr_gfx12<0x01d, "global_store_b128">;
 defm GLOBAL_LOAD_UBYTE_D16         : VFLAT_Real_AllAddr_gfx12<0x01e, "global_load_d16_u8">;
 defm GLOBAL_LOAD_SBYTE_D16         : VFLAT_Real_AllAddr_gfx12<0x01f, "global_load_d16_i8">;
 defm GLOBAL_LOAD_SHORT_D16         : VFLAT_Real_AllAddr_gfx12<0x020, "global_load_d16_b16">;
@@ -3722,7 +3722,7 @@ defm GLOBAL_LOAD_TR4_B64              : VFLAT_Real_AllAddr_gfx1250<0x073>;
 defm GLOBAL_LOAD_TR6_B96              : VFLAT_Real_AllAddr_gfx1250<0x074>;
 
 // Additional aliases for global load transpose instructions.
-def : MnemonicAlias<"av_global_load_b128_tr_b16", "global_load_tr16_b128">, Requires<[isGFX125xOnly]>;
+def : MnemonicAlias<"global_load_b128_tr_b16", "global_load_tr16_b128">, Requires<[isGFX125xOnly]>;
 def : MnemonicAlias<"global_load_b64_tr_b8", "global_load_tr8_b64">, Requires<[isGFX125xOnly]>;
 def : MnemonicAlias<"global_load_b64_tr_b4", "global_load_tr4_b64">, Requires<[isGFX125xOnly]>;
 def : MnemonicAlias<"global_load_b96_tr_b6", "global_load_tr6_b96">, Requires<[isGFX125xOnly]>;
@@ -3865,7 +3865,7 @@ defm GLOBAL_LOAD_USHORT               : VFLAT_Real_AllAddr_gfx13<0x0a, "global_l
 defm GLOBAL_LOAD_SSHORT               : VFLAT_Real_AllAddr_gfx13<0x0b, "global_load_i16">;
 defm GLOBAL_LOAD_DWORD                : VFLAT_Real_AllAddr_gfx13<0x0c, "global_load_b32">;
 defm GLOBAL_LOAD_DWORDX2              : VFLAT_Real_AllAddr_gfx13<0x0d, "global_load_b64">;
-defm GLOBAL_LOAD_DWORDX4              : VFLAT_Real_AllAddr_gfx13<0x0e, "av_global_load_b128">;
+defm GLOBAL_LOAD_DWORDX4              : VFLAT_Real_AllAddr_gfx13<0x0e, "global_load_b128">;
 defm GLOBAL_LOAD_DWORDX3              : VFLAT_Real_AllAddr_gfx13<0x0f, "global_load_b96">;
 defm GLOBAL_LOAD_DWORD_ADDTID         : VFLAT_Real_AllAddr_gfx13<0x16, "global_load_addtid_b32">;
 defm GLOBAL_STORE_DWORD_ADDTID        : VFLAT_Real_AllAddr_gfx13<0x17, "global_store_addtid_b32">;
@@ -3875,7 +3875,7 @@ defm GLOBAL_STORE_SHORT               : VFLAT_Real_AllAddr_gfx13<0x1a, "global_s
 defm GLOBAL_STORE_SHORT_D16_HI        : VFLAT_Real_AllAddr_gfx13<0x1b, "global_store_d16_hi_b16">;
 defm GLOBAL_STORE_DWORD               : VFLAT_Real_AllAddr_gfx13<0x1c, "global_store_b32">;
 defm GLOBAL_STORE_DWORDX2             : VFLAT_Real_AllAddr_gfx13<0x1d, "global_store_b64">;
-defm GLOBAL_STORE_DWORDX4             : VFLAT_Real_AllAddr_gfx13<0x1e, "av_global_store_b128">;
+defm GLOBAL_STORE_DWORDX4             : VFLAT_Real_AllAddr_gfx13<0x1e, "global_store_b128">;
 defm GLOBAL_STORE_DWORDX3             : VFLAT_Real_AllAddr_gfx13<0x1f, "global_store_b96">;
 defm GLOBAL_LOAD_UBYTE_D16            : VFLAT_Real_AllAddr_gfx13<0x20, "global_load_d16_u8">;
 defm GLOBAL_LOAD_UBYTE_D16_HI         : VFLAT_Real_AllAddr_gfx13<0x21, "global_load_d16_hi_u8">;
diff --git a/llvm/test/CodeGen/AMDGPU/amdgcn-av-scopes.ll b/llvm/test/CodeGen/AMDGPU/amdgcn-av-scopes.ll
index 1ff775944bb88..4efbefc6e76e2 100644
--- a/llvm/test/CodeGen/AMDGPU/amdgcn-av-scopes.ll
+++ b/llvm/test/CodeGen/AMDGPU/amdgcn-av-scopes.ll
@@ -32,7 +32,7 @@ define <4 x i32> @load_wavefront(ptr addrspace(1) %p) {
 ; GFX1100-SDAG-LABEL: load_wavefront:
 ; GFX1100-SDAG:       ; %bb.0:
 ; GFX1100-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
-; GFX1100-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX1100-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off
 ; GFX1100-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX1100-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -40,7 +40,7 @@ define <4 x i32> @load_wavefront(ptr addrspace(1) %p) {
 ; GFX1250-SDAG:       ; %bb.0:
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
-; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX1250-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -61,7 +61,7 @@ define <4 x i32> @load_wavefront(ptr addrspace(1) %p) {
 ; GFX1100-ISEL-LABEL: load_wavefront:
 ; GFX1100-ISEL:       ; %bb.0:
 ; GFX1100-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
-; GFX1100-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX1100-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off
 ; GFX1100-ISEL-NEXT:    s_waitcnt vmcnt(0)
 ; GFX1100-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -69,7 +69,7 @@ define <4 x i32> @load_wavefront(ptr addrspace(1) %p) {
 ; GFX1250-ISEL:       ; %bb.0:
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
-; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX1250-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
   %v = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %p, metadata !0)
@@ -95,7 +95,7 @@ define <4 x i32> @load_workgroup(ptr addrspace(1) %p) {
 ; GFX1100-SDAG-LABEL: load_workgroup:
 ; GFX1100-SDAG:       ; %bb.0:
 ; GFX1100-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
-; GFX1100-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX1100-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off glc
 ; GFX1100-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX1100-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -103,7 +103,7 @@ define <4 x i32> @load_workgroup(ptr addrspace(1) %p) {
 ; GFX1250-SDAG:       ; %bb.0:
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
-; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX1250-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -124,7 +124,7 @@ define <4 x i32> @load_workgroup(ptr addrspace(1) %p) {
 ; GFX1100-ISEL-LABEL: load_workgroup:
 ; GFX1100-ISEL:       ; %bb.0:
 ; GFX1100-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
-; GFX1100-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX1100-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off glc
 ; GFX1100-ISEL-NEXT:    s_waitcnt vmcnt(0)
 ; GFX1100-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -132,7 +132,7 @@ define <4 x i32> @load_workgroup(ptr addrspace(1) %p) {
 ; GFX1250-ISEL:       ; %bb.0:
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
-; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX1250-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
   %v = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %p, metadata !1)
@@ -158,7 +158,7 @@ define <4 x i32> @load_agent(ptr addrspace(1) %p) {
 ; GFX1100-SDAG-LABEL: load_agent:
 ; GFX1100-SDAG:       ; %bb.0:
 ; GFX1100-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
-; GFX1100-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX1100-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off glc
 ; GFX1100-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX1100-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -166,7 +166,7 @@ define <4 x i32> @load_agent(ptr addrspace(1) %p) {
 ; GFX1250-SDAG:       ; %bb.0:
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
-; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_DEV
+; GFX1250-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off scope:SCOPE_DEV
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -187,7 +187,7 @@ define <4 x i32> @load_agent(ptr addrspace(1) %p) {
 ; GFX1100-ISEL-LABEL: load_agent:
 ; GFX1100-ISEL:       ; %bb.0:
 ; GFX1100-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
-; GFX1100-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX1100-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off glc
 ; GFX1100-ISEL-NEXT:    s_waitcnt vmcnt(0)
 ; GFX1100-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -195,7 +195,7 @@ define <4 x i32> @load_agent(ptr addrspace(1) %p) {
 ; GFX1250-ISEL:       ; %bb.0:
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
-; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_DEV
+; GFX1250-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off scope:SCOPE_DEV
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
   %v = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %p, metadata !2)
@@ -221,7 +221,7 @@ define <4 x i32> @load_system(ptr addrspace(1) %p) {
 ; GFX1100-SDAG-LABEL: load_system:
 ; GFX1100-SDAG:       ; %bb.0:
 ; GFX1100-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
-; GFX1100-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX1100-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off glc
 ; GFX1100-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX1100-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -229,7 +229,7 @@ define <4 x i32> @load_system(ptr addrspace(1) %p) {
 ; GFX1250-SDAG:       ; %bb.0:
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
-; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SYS
+; GFX1250-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SYS
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -250,7 +250,7 @@ define <4 x i32> @load_system(ptr addrspace(1) %p) {
 ; GFX1100-ISEL-LABEL: load_system:
 ; GFX1100-ISEL:       ; %bb.0:
 ; GFX1100-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
-; GFX1100-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX1100-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off glc
 ; GFX1100-ISEL-NEXT:    s_waitcnt vmcnt(0)
 ; GFX1100-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -258,7 +258,7 @@ define <4 x i32> @load_system(ptr addrspace(1) %p) {
 ; GFX1250-ISEL:       ; %bb.0:
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
-; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SYS
+; GFX1250-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SYS
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
   %v = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %p, metadata !3)
@@ -284,7 +284,7 @@ define <4 x i32> @load_singlethread(ptr addrspace(1) %p) {
 ; GFX1100-SDAG-LABEL: load_singlethread:
 ; GFX1100-SDAG:       ; %bb.0:
 ; GFX1100-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
-; GFX1100-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX1100-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off
 ; GFX1100-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX1100-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -292,7 +292,7 @@ define <4 x i32> @load_singlethread(ptr addrspace(1) %p) {
 ; GFX1250-SDAG:       ; %bb.0:
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
-; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX1250-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -313,7 +313,7 @@ define <4 x i32> @load_singlethread(ptr addrspace(1) %p) {
 ; GFX1100-ISEL-LABEL: load_singlethread:
 ; GFX1100-ISEL:       ; %bb.0:
 ; GFX1100-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
-; GFX1100-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX1100-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off
 ; GFX1100-ISEL-NEXT:    s_waitcnt vmcnt(0)
 ; GFX1100-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -321,7 +321,7 @@ define <4 x i32> @load_singlethread(ptr addrspace(1) %p) {
 ; GFX1250-ISEL:       ; %bb.0:
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
-; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX1250-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
   %v = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %p, metadata !4)
@@ -347,7 +347,7 @@ define <4 x i32> @load_cluster(ptr addrspace(1) %p) {
 ; GFX1100-SDAG-LABEL: load_cluster:
 ; GFX1100-SDAG:       ; %bb.0:
 ; GFX1100-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
-; GFX1100-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX1100-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off glc
 ; GFX1100-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX1100-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -355,7 +355,7 @@ define <4 x i32> @load_cluster(ptr addrspace(1) %p) {
 ; GFX1250-SDAG:       ; %bb.0:
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
-; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SE
+; GFX1250-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SE
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -376,7 +376,7 @@ define <4 x i32> @load_cluster(ptr addrspace(1) %p) {
 ; GFX1100-ISEL-LABEL: load_cluster:
 ; GFX1100-ISEL:       ; %bb.0:
 ; GFX1100-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
-; GFX1100-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX1100-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off glc
 ; GFX1100-ISEL-NEXT:    s_waitcnt vmcnt(0)
 ; GFX1100-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -384,7 +384,7 @@ define <4 x i32> @load_cluster(ptr addrspace(1) %p) {
 ; GFX1250-ISEL:       ; %bb.0:
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
-; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SE
+; GFX1250-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SE
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
   %v = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %p, metadata !5)
@@ -409,14 +409,14 @@ define void @store_wavefront(ptr addrspace(1) %p, <4 x i32> %v) {
 ; GFX1100-SDAG-LABEL: store_wavefront:
 ; GFX1100-SDAG:       ; %bb.0:
 ; GFX1100-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
-; GFX1100-SDAG-NEXT:    av_global_store_b128 v[0:1], v[2:5], off
+; GFX1100-SDAG-NEXT:    global_store_b128 v[0:1], v[2:5], off
 ; GFX1100-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
 ; GFX1250-SDAG-LABEL: store_wavefront:
 ; GFX1250-SDAG:       ; %bb.0:
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
-; GFX1250-SDAG-NEXT:    av_global_store_b128 v[0:1], v[2:5], off
+; GFX1250-SDAG-NEXT:    global_store_b128 v[0:1], v[2:5], off
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
 ; GFX942-ISEL-LABEL: store_wavefront:
@@ -435,14 +435,14 @@ define void @store_wavefront(ptr addrspace(1) %p, <4 x i32> %v) {
 ; GFX1100-ISEL-LABEL: store_wavefront:
 ; GFX1100-ISEL:       ; %bb.0:
 ; GFX1100-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
-; GFX1100-ISEL-NEXT:    av_global_store_b128 v[0:1], v[2:5], off
+; GFX1100-ISEL-NEXT:    global_store_b128 v[0:1], v[2:5], off
 ; GFX1100-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
 ; GFX1250-ISEL-LABEL: store_wavefront:
 ; GFX1250-ISEL:       ; %bb.0:
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
-; GFX1250-ISEL-NEXT:    av_global_store_b128 v[0:1], v[2:5], off
+; GFX1250-ISEL-NEXT:    global_store_b128 v[0:1], v[2:5], off
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
   call void @llvm.amdgcn.av.global.store.b128(ptr addrspace(1) %p, <4 x i32> %v, metadata !0)
   ret void
@@ -466,14 +466,14 @@ define void @store_workgroup(ptr addrspace(1) %p, <4 x i32> %v) {
 ; GFX1100-SDAG-LABEL: store_workgroup:
 ; GFX1100-SDAG:       ; %bb.0:
 ; GFX1100-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
-; GFX1100-SDAG-NEXT:    av_global_store_b128 v[0:1], v[2:5], off
+; GFX1100-SDAG-NEXT:    global_store_b128 v[0:1], v[2:5], off
 ; GFX1100-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
 ; GFX1250-SDAG-LABEL: store_workgroup:
 ; GFX1250-SDAG:       ; %bb.0:
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
-; GFX1250-SDAG-NEXT:    av_global_store_b128 v[0:1], v[2:5], off
+; GFX1250-SDAG-NEXT:    global_store_b128 v[0:1], v[2:5], off
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
 ; GFX942-ISEL-LABEL: store_workgroup:
@@ -492,14 +492,14 @@ define void @store_workgroup(ptr addrspace(1) %p, <4 x i32> %v) {
 ; GFX1100-ISEL-LABEL: store_workgroup:
 ; GFX1100-ISEL:       ; %bb.0:
 ; GFX1100-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
-; GFX1100-ISEL-NEXT:    av_global_store_b128 v[0:1], v[2:5], off
+; GFX1100-ISEL-NEXT:    global_store_b128 v[0:1], v[2:5], off
 ; GFX1100-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
 ; GFX1250-ISEL-LABEL: store_workgroup:
 ; GFX1250-ISEL:       ; %bb.0:
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
-; GFX1250-ISEL-NEXT:    av_global_store_b128 v[0:1], v[2:5], off
+; GFX1250-ISEL-NEXT:    global_store_b128 v[0:1], v[2:5], off
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
   call void @llvm.amdgcn.av.global.store.b128(ptr addrspace(1) %p, <4 x i32> %v, metadata !1)
   ret void
@@ -523,14 +523,14 @@ define void @store_agent(ptr addrspace(1) %p, <4 x i32> %v) {
 ; GFX1100-SDAG-LABEL: store_agent:
 ; GFX1100-SDAG:       ; %bb.0:
 ; GFX1100-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
-; GFX1100-SDAG-NEXT:    av_global_store_b128 v[0:1], v[2:5], off
+; GFX1100-SDAG-NEXT:    global_store_b128 v[0:1], v[2:5], off
 ; GFX1100-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
 ; GFX1250-SDAG-LABEL: store_agent:
 ; GFX1250-SDAG:       ; %bb.0:
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
-; GFX1250-SDAG-NEXT:    av_global_store_b128 v[0:1], v[2:5], off scope:SCOPE_DEV
+; GFX1250-SDAG-NEXT:    global_store_b128 v[0:1], v[2:5], off scope:SCOPE_DEV
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
 ; GFX942-ISEL-LABEL: store_agent:
@@ -549,14 +549,14 @@ define void @store_agent(ptr addrspace(1) %p, <4 x i32> %v) {
 ; GFX1100-ISEL-LABEL: store_agent:
 ; GFX1100-ISEL:       ; %bb.0:
 ; GFX1100-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
-; GFX1100-ISEL-NEXT:    av_global_store_b128 v[0:1], v[2:5], off
+; GFX1100-ISEL-NEXT:    global_store_b128 v[0:1], v[2:5], off
 ; GFX1100-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
 ; GFX1250-ISEL-LABEL: store_agent:
 ; GFX1250-ISEL:       ; %bb.0:
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
-; GFX1250-ISEL-NEXT:    av_global_store_b128 v[0:1], v[2:5], off scope:SCOPE_DEV
+; GFX1250-ISEL-NEXT:    global_store_b128 v[0:1], v[2:5], off scope:SCOPE_DEV
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
   call void @llvm.amdgcn.av.global.store.b128(ptr addrspace(1) %p, <4 x i32> %v, metadata !2)
   ret void
@@ -580,14 +580,14 @@ define void @store_system(ptr addrspace(1) %p, <4 x i32> %v) {
 ; GFX1100-SDAG-LABEL: store_system:
 ; GFX1100-SDAG:       ; %bb.0:
 ; GFX1100-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
-; GFX1100-SDAG-NEXT:    av_global_store_b128 v[0:1], v[2:5], off
+; GFX1100-SDAG-NEXT:    global_store_b128 v[0:1], v[2:5], off
 ; GFX1100-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
 ; GFX1250-SDAG-LABEL: store_system:
 ; GFX1250-SDAG:       ; %bb.0:
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
-; GFX1250-SDAG-NEXT:    av_global_store_b128 v[0:1], v[2:5], off scope:SCOPE_SYS
+; GFX1250-SDAG-NEXT:    global_store_b128 v[0:1], v[2:5], off scope:SCOPE_SYS
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
 ; GFX942-ISEL-LABEL: store_system:
@@ -606,14 +606,14 @@ define void @store_system(ptr addrspace(1) %p, <4 x i32> %v) {
 ; GFX1100-ISEL-LABEL: store_system:
 ; GFX1100-ISEL:       ; %bb.0:
 ; GFX1100-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
-; GFX1100-ISEL-NEXT:    av_global_store_b128 v[0:1], v[2:5], off
+; GFX1100-ISEL-NEXT:    global_store_b128 v[0:1], v[2:5], off
 ; GFX1100-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
 ; GFX1250-ISEL-LABEL: store_system:
 ; GFX1250-ISEL:       ; %bb.0:
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
-; GFX1250-ISEL-NEXT:    av_global_store_b128 v[0:1], v[2:5], off scope:SCOPE_SYS
+; GFX1250-ISEL-NEXT:    global_store_b128 v[0:1], v[2:5], off scope:SCOPE_SYS
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
   call void @llvm.amdgcn.av.global.store.b128(ptr addrspace(1) %p, <4 x i32> %v, metadata !3)
   ret void
@@ -637,14 +637,14 @@ define void @store_singlethread(ptr addrspace(1) %p, <4 x i32> %v) {
 ; GFX1100-SDAG-LABEL: store_singlethread:
 ; GFX1100-SDAG:       ; %bb.0:
 ; GFX1100-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
-; GFX1100-SDAG-NEXT:    av_global_store_b128 v[0:1], v[2:5], off
+; GFX1100-SDAG-NEXT:    global_store_b128 v[0:1], v[2:5], off
 ; GFX1100-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
 ; GFX1250-SDAG-LABEL: store_singlethread:
 ; GFX1250-SDAG:       ; %bb.0:
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
-; GFX1250-SDAG-NEXT:    av_global_store_b128 v[0:1], v[2:5], off
+; GFX1250-SDAG-NEXT:    global_store_b128 v[0:1], v[2:5], off
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
 ; GFX942-ISEL-LABEL: store_singlethread:
@@ -663,14 +663,14 @@ define void @store_singlethread(ptr addrspace(1) %p, <4 x i32> %v) {
 ; GFX1100-ISEL-LABEL: store_singlethread:
 ; GFX1100-ISEL:       ; %bb.0:
 ; GFX1100-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
-; GFX1100-ISEL-NEXT:    av_global_store_b128 v[0:1], v[2:5], off
+; GFX1100-ISEL-NEXT:    global_store_b128 v[0:1], v[2:5], off
 ; GFX1100-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
 ; GFX1250-ISEL-LABEL: store_singlethread:
 ; GFX1250-ISEL:       ; %bb.0:
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
-; GFX1250-ISEL-NEXT:    av_global_store_b128 v[0:1], v[2:5], off
+; GFX1250-ISEL-NEXT:    global_store_b128 v[0:1], v[2:5], off
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
   call void @llvm.amdgcn.av.global.store.b128(ptr addrspace(1) %p, <4 x i32> %v, metadata !4)
   ret void
@@ -694,14 +694,14 @@ define void @store_cluster(ptr addrspace(1) %p, <4 x i32> %v) {
 ; GFX1100-SDAG-LABEL: store_cluster:
 ; GFX1100-SDAG:       ; %bb.0:
 ; GFX1100-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
-; GFX1100-SDAG-NEXT:    av_global_store_b128 v[0:1], v[2:5], off
+; GFX1100-SDAG-NEXT:    global_store_b128 v[0:1], v[2:5], off
 ; GFX1100-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
 ; GFX1250-SDAG-LABEL: store_cluster:
 ; GFX1250-SDAG:       ; %bb.0:
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
-; GFX1250-SDAG-NEXT:    av_global_store_b128 v[0:1], v[2:5], off scope:SCOPE_SE
+; GFX1250-SDAG-NEXT:    global_store_b128 v[0:1], v[2:5], off scope:SCOPE_SE
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
 ; GFX942-ISEL-LABEL: store_cluster:
@@ -720,14 +720,14 @@ define void @store_cluster(ptr addrspace(1) %p, <4 x i32> %v) {
 ; GFX1100-ISEL-LABEL: store_cluster:
 ; GFX1100-ISEL:       ; %bb.0:
 ; GFX1100-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
-; GFX1100-ISEL-NEXT:    av_global_store_b128 v[0:1], v[2:5], off
+; GFX1100-ISEL-NEXT:    global_store_b128 v[0:1], v[2:5], off
 ; GFX1100-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
 ; GFX1250-ISEL-LABEL: store_cluster:
 ; GFX1250-ISEL:       ; %bb.0:
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
-; GFX1250-ISEL-NEXT:    av_global_store_b128 v[0:1], v[2:5], off scope:SCOPE_SE
+; GFX1250-ISEL-NEXT:    global_store_b128 v[0:1], v[2:5], off scope:SCOPE_SE
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
   call void @llvm.amdgcn.av.global.store.b128(ptr addrspace(1) %p, <4 x i32> %v, metadata !5)
   ret void
diff --git a/llvm/test/CodeGen/AMDGPU/llvm.amdgcn.av.global.load.b128.ll b/llvm/test/CodeGen/AMDGPU/llvm.amdgcn.av.global.load.b128.ll
index 3c5c80a5b64e7..47bd71daf43b0 100644
--- a/llvm/test/CodeGen/AMDGPU/llvm.amdgcn.av.global.load.b128.ll
+++ b/llvm/test/CodeGen/AMDGPU/llvm.amdgcn.av.global.load.b128.ll
@@ -106,7 +106,7 @@ define <4 x i32> @av_global_load_b128_0_00(ptr addrspace(1) %addr) {
 ; GFX11-GENERIC-SDAG-LABEL: av_global_load_b128_0_00:
 ; GFX11-GENERIC-SDAG:       ; %bb.0: ; %entry
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
-; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -114,7 +114,7 @@ define <4 x i32> @av_global_load_b128_0_00(ptr addrspace(1) %addr) {
 ; GFX1250-SDAG:       ; %bb.0: ; %entry
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
-; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX1250-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -125,7 +125,7 @@ define <4 x i32> @av_global_load_b128_0_00(ptr addrspace(1) %addr) {
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
-; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -202,7 +202,7 @@ define <4 x i32> @av_global_load_b128_0_00(ptr addrspace(1) %addr) {
 ; GFX11-GENERIC-ISEL-LABEL: av_global_load_b128_0_00:
 ; GFX11-GENERIC-ISEL:       ; %bb.0: ; %entry
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
-; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -210,7 +210,7 @@ define <4 x i32> @av_global_load_b128_0_00(ptr addrspace(1) %addr) {
 ; GFX1250-ISEL:       ; %bb.0: ; %entry
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
-; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX1250-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -221,7 +221,7 @@ define <4 x i32> @av_global_load_b128_0_00(ptr addrspace(1) %addr) {
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
-; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 entry:
@@ -303,7 +303,7 @@ define <4 x i32> @av_global_load_b128_0_01(ptr addrspace(1) %addr) {
 ; GFX11-GENERIC-SDAG-LABEL: av_global_load_b128_0_01:
 ; GFX11-GENERIC-SDAG:       ; %bb.0: ; %entry
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
-; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off glc
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -311,7 +311,7 @@ define <4 x i32> @av_global_load_b128_0_01(ptr addrspace(1) %addr) {
 ; GFX1250-SDAG:       ; %bb.0: ; %entry
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
-; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX1250-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -322,7 +322,7 @@ define <4 x i32> @av_global_load_b128_0_01(ptr addrspace(1) %addr) {
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
-; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SE
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SE
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -399,7 +399,7 @@ define <4 x i32> @av_global_load_b128_0_01(ptr addrspace(1) %addr) {
 ; GFX11-GENERIC-ISEL-LABEL: av_global_load_b128_0_01:
 ; GFX11-GENERIC-ISEL:       ; %bb.0: ; %entry
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
-; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off glc
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -407,7 +407,7 @@ define <4 x i32> @av_global_load_b128_0_01(ptr addrspace(1) %addr) {
 ; GFX1250-ISEL:       ; %bb.0: ; %entry
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
-; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX1250-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -418,7 +418,7 @@ define <4 x i32> @av_global_load_b128_0_01(ptr addrspace(1) %addr) {
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
-; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SE
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SE
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 entry:
@@ -500,7 +500,7 @@ define <4 x i32> @av_global_load_b128_0_10(ptr addrspace(1) %addr) {
 ; GFX11-GENERIC-SDAG-LABEL: av_global_load_b128_0_10:
 ; GFX11-GENERIC-SDAG:       ; %bb.0: ; %entry
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
-; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off glc
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -508,7 +508,7 @@ define <4 x i32> @av_global_load_b128_0_10(ptr addrspace(1) %addr) {
 ; GFX1250-SDAG:       ; %bb.0: ; %entry
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
-; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_DEV
+; GFX1250-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off scope:SCOPE_DEV
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -519,7 +519,7 @@ define <4 x i32> @av_global_load_b128_0_10(ptr addrspace(1) %addr) {
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
-; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_DEV
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off scope:SCOPE_DEV
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -596,7 +596,7 @@ define <4 x i32> @av_global_load_b128_0_10(ptr addrspace(1) %addr) {
 ; GFX11-GENERIC-ISEL-LABEL: av_global_load_b128_0_10:
 ; GFX11-GENERIC-ISEL:       ; %bb.0: ; %entry
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
-; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off glc
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -604,7 +604,7 @@ define <4 x i32> @av_global_load_b128_0_10(ptr addrspace(1) %addr) {
 ; GFX1250-ISEL:       ; %bb.0: ; %entry
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
-; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_DEV
+; GFX1250-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off scope:SCOPE_DEV
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -615,7 +615,7 @@ define <4 x i32> @av_global_load_b128_0_10(ptr addrspace(1) %addr) {
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
-; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_DEV
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off scope:SCOPE_DEV
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 entry:
@@ -697,7 +697,7 @@ define <4 x i32> @av_global_load_b128_0_11(ptr addrspace(1) %addr) {
 ; GFX11-GENERIC-SDAG-LABEL: av_global_load_b128_0_11:
 ; GFX11-GENERIC-SDAG:       ; %bb.0: ; %entry
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
-; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off glc
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -705,7 +705,7 @@ define <4 x i32> @av_global_load_b128_0_11(ptr addrspace(1) %addr) {
 ; GFX1250-SDAG:       ; %bb.0: ; %entry
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
-; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SYS
+; GFX1250-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SYS
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -716,7 +716,7 @@ define <4 x i32> @av_global_load_b128_0_11(ptr addrspace(1) %addr) {
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
-; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SYS
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SYS
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -793,7 +793,7 @@ define <4 x i32> @av_global_load_b128_0_11(ptr addrspace(1) %addr) {
 ; GFX11-GENERIC-ISEL-LABEL: av_global_load_b128_0_11:
 ; GFX11-GENERIC-ISEL:       ; %bb.0: ; %entry
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
-; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off glc
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -801,7 +801,7 @@ define <4 x i32> @av_global_load_b128_0_11(ptr addrspace(1) %addr) {
 ; GFX1250-ISEL:       ; %bb.0: ; %entry
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
-; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SYS
+; GFX1250-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SYS
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -812,7 +812,7 @@ define <4 x i32> @av_global_load_b128_0_11(ptr addrspace(1) %addr) {
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
-; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SYS
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SYS
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 entry:
@@ -905,7 +905,7 @@ define <4 x i32> @av_global_load_b128_saddr_0_00(ptr addrspace(1) inreg %addr) {
 ; GFX11-GENERIC-SDAG:       ; %bb.0: ; %entry
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
-; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1]
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1]
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -914,7 +914,7 @@ define <4 x i32> @av_global_load_b128_saddr_0_00(ptr addrspace(1) inreg %addr) {
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
 ; GFX1250-SDAG-NEXT:    v_mov_b32_e32 v0, 0
-; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1]
+; GFX1250-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1]
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -926,7 +926,7 @@ define <4 x i32> @av_global_load_b128_saddr_0_00(ptr addrspace(1) inreg %addr) {
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
-; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1]
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1]
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -1014,7 +1014,7 @@ define <4 x i32> @av_global_load_b128_saddr_0_00(ptr addrspace(1) inreg %addr) {
 ; GFX11-GENERIC-ISEL:       ; %bb.0: ; %entry
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0
-; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1]
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v0, s[0:1]
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -1023,7 +1023,7 @@ define <4 x i32> @av_global_load_b128_saddr_0_00(ptr addrspace(1) inreg %addr) {
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
 ; GFX1250-ISEL-NEXT:    v_mov_b32_e32 v0, 0
-; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1]
+; GFX1250-ISEL-NEXT:    global_load_b128 v[0:3], v0, s[0:1]
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -1035,7 +1035,7 @@ define <4 x i32> @av_global_load_b128_saddr_0_00(ptr addrspace(1) inreg %addr) {
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0
-; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1]
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v0, s[0:1]
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 entry:
@@ -1128,7 +1128,7 @@ define <4 x i32> @av_global_load_b128_saddr_0_01(ptr addrspace(1) inreg %addr) {
 ; GFX11-GENERIC-SDAG:       ; %bb.0: ; %entry
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
-; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] glc
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1] glc
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -1137,7 +1137,7 @@ define <4 x i32> @av_global_load_b128_saddr_0_01(ptr addrspace(1) inreg %addr) {
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
 ; GFX1250-SDAG-NEXT:    v_mov_b32_e32 v0, 0
-; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1]
+; GFX1250-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1]
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -1149,7 +1149,7 @@ define <4 x i32> @av_global_load_b128_saddr_0_01(ptr addrspace(1) inreg %addr) {
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
-; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] scope:SCOPE_SE
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1] scope:SCOPE_SE
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -1237,7 +1237,7 @@ define <4 x i32> @av_global_load_b128_saddr_0_01(ptr addrspace(1) inreg %addr) {
 ; GFX11-GENERIC-ISEL:       ; %bb.0: ; %entry
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0
-; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] glc
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v0, s[0:1] glc
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -1246,7 +1246,7 @@ define <4 x i32> @av_global_load_b128_saddr_0_01(ptr addrspace(1) inreg %addr) {
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
 ; GFX1250-ISEL-NEXT:    v_mov_b32_e32 v0, 0
-; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1]
+; GFX1250-ISEL-NEXT:    global_load_b128 v[0:3], v0, s[0:1]
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -1258,7 +1258,7 @@ define <4 x i32> @av_global_load_b128_saddr_0_01(ptr addrspace(1) inreg %addr) {
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0
-; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] scope:SCOPE_SE
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v0, s[0:1] scope:SCOPE_SE
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 entry:
@@ -1351,7 +1351,7 @@ define <4 x i32> @av_global_load_b128_saddr_0_02(ptr addrspace(1) inreg %addr) {
 ; GFX11-GENERIC-SDAG:       ; %bb.0: ; %entry
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
-; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] glc
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1] glc
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -1360,7 +1360,7 @@ define <4 x i32> @av_global_load_b128_saddr_0_02(ptr addrspace(1) inreg %addr) {
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
 ; GFX1250-SDAG-NEXT:    v_mov_b32_e32 v0, 0
-; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] scope:SCOPE_DEV
+; GFX1250-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1] scope:SCOPE_DEV
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -1372,7 +1372,7 @@ define <4 x i32> @av_global_load_b128_saddr_0_02(ptr addrspace(1) inreg %addr) {
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
-; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] scope:SCOPE_DEV
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1] scope:SCOPE_DEV
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -1460,7 +1460,7 @@ define <4 x i32> @av_global_load_b128_saddr_0_02(ptr addrspace(1) inreg %addr) {
 ; GFX11-GENERIC-ISEL:       ; %bb.0: ; %entry
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0
-; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] glc
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v0, s[0:1] glc
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -1469,7 +1469,7 @@ define <4 x i32> @av_global_load_b128_saddr_0_02(ptr addrspace(1) inreg %addr) {
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
 ; GFX1250-ISEL-NEXT:    v_mov_b32_e32 v0, 0
-; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] scope:SCOPE_DEV
+; GFX1250-ISEL-NEXT:    global_load_b128 v[0:3], v0, s[0:1] scope:SCOPE_DEV
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -1481,7 +1481,7 @@ define <4 x i32> @av_global_load_b128_saddr_0_02(ptr addrspace(1) inreg %addr) {
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0
-; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] scope:SCOPE_DEV
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v0, s[0:1] scope:SCOPE_DEV
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 entry:
@@ -1574,7 +1574,7 @@ define <4 x i32> @av_global_load_b128_saddr_0_03(ptr addrspace(1) inreg %addr) {
 ; GFX11-GENERIC-SDAG:       ; %bb.0: ; %entry
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
-; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] glc
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1] glc
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -1583,7 +1583,7 @@ define <4 x i32> @av_global_load_b128_saddr_0_03(ptr addrspace(1) inreg %addr) {
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
 ; GFX1250-SDAG-NEXT:    v_mov_b32_e32 v0, 0
-; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] scope:SCOPE_SYS
+; GFX1250-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1] scope:SCOPE_SYS
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -1595,7 +1595,7 @@ define <4 x i32> @av_global_load_b128_saddr_0_03(ptr addrspace(1) inreg %addr) {
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
-; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] scope:SCOPE_SYS
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1] scope:SCOPE_SYS
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -1683,7 +1683,7 @@ define <4 x i32> @av_global_load_b128_saddr_0_03(ptr addrspace(1) inreg %addr) {
 ; GFX11-GENERIC-ISEL:       ; %bb.0: ; %entry
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0
-; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] glc
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v0, s[0:1] glc
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -1692,7 +1692,7 @@ define <4 x i32> @av_global_load_b128_saddr_0_03(ptr addrspace(1) inreg %addr) {
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
 ; GFX1250-ISEL-NEXT:    v_mov_b32_e32 v0, 0
-; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] scope:SCOPE_SYS
+; GFX1250-ISEL-NEXT:    global_load_b128 v[0:3], v0, s[0:1] scope:SCOPE_SYS
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -1704,7 +1704,7 @@ define <4 x i32> @av_global_load_b128_saddr_0_03(ptr addrspace(1) inreg %addr) {
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0
-; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] scope:SCOPE_SYS
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v0, s[0:1] scope:SCOPE_SYS
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 entry:
@@ -1794,7 +1794,7 @@ define <4 x float> @global_load_i8_offset_0(ptr addrspace(1) %sbase) {
 ; GFX11-GENERIC-SDAG-LABEL: global_load_i8_offset_0:
 ; GFX11-GENERIC-SDAG:       ; %bb.0:
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
-; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -1802,7 +1802,7 @@ define <4 x float> @global_load_i8_offset_0(ptr addrspace(1) %sbase) {
 ; GFX1250-SDAG:       ; %bb.0:
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
-; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX1250-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -1813,7 +1813,7 @@ define <4 x float> @global_load_i8_offset_0(ptr addrspace(1) %sbase) {
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
-; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -1890,7 +1890,7 @@ define <4 x float> @global_load_i8_offset_0(ptr addrspace(1) %sbase) {
 ; GFX11-GENERIC-ISEL-LABEL: global_load_i8_offset_0:
 ; GFX11-GENERIC-ISEL:       ; %bb.0:
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
-; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -1898,7 +1898,7 @@ define <4 x float> @global_load_i8_offset_0(ptr addrspace(1) %sbase) {
 ; GFX1250-ISEL:       ; %bb.0:
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
-; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX1250-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -1909,7 +1909,7 @@ define <4 x float> @global_load_i8_offset_0(ptr addrspace(1) %sbase) {
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
-; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
   %load = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %sbase, metadata !0)
@@ -1998,7 +1998,7 @@ define <4 x float> @global_load_i8_offset_4095(ptr addrspace(1) %sbase) {
 ; GFX11-GENERIC-SDAG-LABEL: global_load_i8_offset_4095:
 ; GFX11-GENERIC-SDAG:       ; %bb.0:
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
-; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:4095 glc
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:4095 glc
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -2006,7 +2006,7 @@ define <4 x float> @global_load_i8_offset_4095(ptr addrspace(1) %sbase) {
 ; GFX1250-SDAG:       ; %bb.0:
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
-; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:4095
+; GFX1250-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:4095
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -2017,7 +2017,7 @@ define <4 x float> @global_load_i8_offset_4095(ptr addrspace(1) %sbase) {
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
-; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:4095 scope:SCOPE_SE
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:4095 scope:SCOPE_SE
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -2100,7 +2100,7 @@ define <4 x float> @global_load_i8_offset_4095(ptr addrspace(1) %sbase) {
 ; GFX11-GENERIC-ISEL-LABEL: global_load_i8_offset_4095:
 ; GFX11-GENERIC-ISEL:       ; %bb.0:
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
-; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:4095 glc
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:4095 glc
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -2108,7 +2108,7 @@ define <4 x float> @global_load_i8_offset_4095(ptr addrspace(1) %sbase) {
 ; GFX1250-ISEL:       ; %bb.0:
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
-; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:4095
+; GFX1250-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:4095
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -2119,7 +2119,7 @@ define <4 x float> @global_load_i8_offset_4095(ptr addrspace(1) %sbase) {
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
-; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:4095 scope:SCOPE_SE
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:4095 scope:SCOPE_SE
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
   %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 4095
@@ -2229,7 +2229,7 @@ define <4 x float> @global_load_i8_offset_4096(ptr addrspace(1) %sbase) {
 ; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0x1000, v0
 ; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off glc
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -2237,7 +2237,7 @@ define <4 x float> @global_load_i8_offset_4096(ptr addrspace(1) %sbase) {
 ; GFX1250-SDAG:       ; %bb.0:
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
-; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:4096 scope:SCOPE_DEV
+; GFX1250-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:4096 scope:SCOPE_DEV
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -2248,7 +2248,7 @@ define <4 x float> @global_load_i8_offset_4096(ptr addrspace(1) %sbase) {
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
-; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:4096 scope:SCOPE_DEV
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:4096 scope:SCOPE_DEV
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -2351,7 +2351,7 @@ define <4 x float> @global_load_i8_offset_4096(ptr addrspace(1) %sbase) {
 ; GFX11-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0x1000, v0
 ; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off glc
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -2359,7 +2359,7 @@ define <4 x float> @global_load_i8_offset_4096(ptr addrspace(1) %sbase) {
 ; GFX1250-ISEL:       ; %bb.0:
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
-; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:4096 scope:SCOPE_DEV
+; GFX1250-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:4096 scope:SCOPE_DEV
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -2370,7 +2370,7 @@ define <4 x float> @global_load_i8_offset_4096(ptr addrspace(1) %sbase) {
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
-; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:4096 scope:SCOPE_DEV
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:4096 scope:SCOPE_DEV
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
   %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 4096
@@ -2480,7 +2480,7 @@ define <4 x float> @global_load_i8_offset_4097(ptr addrspace(1) %sbase) {
 ; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0x1000, v0
 ; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:1 glc
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:1 glc
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -2488,7 +2488,7 @@ define <4 x float> @global_load_i8_offset_4097(ptr addrspace(1) %sbase) {
 ; GFX1250-SDAG:       ; %bb.0:
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
-; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:4097 scope:SCOPE_SYS
+; GFX1250-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:4097 scope:SCOPE_SYS
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -2499,7 +2499,7 @@ define <4 x float> @global_load_i8_offset_4097(ptr addrspace(1) %sbase) {
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
-; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:4097 scope:SCOPE_SYS
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:4097 scope:SCOPE_SYS
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -2602,7 +2602,7 @@ define <4 x float> @global_load_i8_offset_4097(ptr addrspace(1) %sbase) {
 ; GFX11-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0x1001, v0
 ; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off glc
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -2610,7 +2610,7 @@ define <4 x float> @global_load_i8_offset_4097(ptr addrspace(1) %sbase) {
 ; GFX1250-ISEL:       ; %bb.0:
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
-; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:4097 scope:SCOPE_SYS
+; GFX1250-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:4097 scope:SCOPE_SYS
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -2621,7 +2621,7 @@ define <4 x float> @global_load_i8_offset_4097(ptr addrspace(1) %sbase) {
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
-; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:4097 scope:SCOPE_SYS
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:4097 scope:SCOPE_SYS
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
   %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 4097
@@ -2711,7 +2711,7 @@ define <4 x float> @global_load_i8_offset_neg4096(ptr addrspace(1) %sbase) {
 ; GFX11-GENERIC-SDAG-LABEL: global_load_i8_offset_neg4096:
 ; GFX11-GENERIC-SDAG:       ; %bb.0:
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
-; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-4096
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:-4096
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -2719,7 +2719,7 @@ define <4 x float> @global_load_i8_offset_neg4096(ptr addrspace(1) %sbase) {
 ; GFX1250-SDAG:       ; %bb.0:
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
-; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-4096
+; GFX1250-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:-4096
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -2730,7 +2730,7 @@ define <4 x float> @global_load_i8_offset_neg4096(ptr addrspace(1) %sbase) {
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
-; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-4096
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:-4096
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -2813,7 +2813,7 @@ define <4 x float> @global_load_i8_offset_neg4096(ptr addrspace(1) %sbase) {
 ; GFX11-GENERIC-ISEL-LABEL: global_load_i8_offset_neg4096:
 ; GFX11-GENERIC-ISEL:       ; %bb.0:
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
-; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-4096
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:-4096
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -2821,7 +2821,7 @@ define <4 x float> @global_load_i8_offset_neg4096(ptr addrspace(1) %sbase) {
 ; GFX1250-ISEL:       ; %bb.0:
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
-; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-4096
+; GFX1250-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:-4096
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -2832,7 +2832,7 @@ define <4 x float> @global_load_i8_offset_neg4096(ptr addrspace(1) %sbase) {
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
-; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-4096
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:-4096
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
   %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 -4096
@@ -2942,7 +2942,7 @@ define <4 x float> @global_load_i8_offset_neg4097(ptr addrspace(1) %sbase) {
 ; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfffff000, v0
 ; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo
-; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-1 glc
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:-1 glc
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -2950,7 +2950,7 @@ define <4 x float> @global_load_i8_offset_neg4097(ptr addrspace(1) %sbase) {
 ; GFX1250-SDAG:       ; %bb.0:
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
-; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-4097
+; GFX1250-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:-4097
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -2961,7 +2961,7 @@ define <4 x float> @global_load_i8_offset_neg4097(ptr addrspace(1) %sbase) {
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
-; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-4097 scope:SCOPE_SE
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:-4097 scope:SCOPE_SE
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -3064,7 +3064,7 @@ define <4 x float> @global_load_i8_offset_neg4097(ptr addrspace(1) %sbase) {
 ; GFX11-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0xffffefff, v0
 ; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo
-; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off glc
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -3072,7 +3072,7 @@ define <4 x float> @global_load_i8_offset_neg4097(ptr addrspace(1) %sbase) {
 ; GFX1250-ISEL:       ; %bb.0:
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
-; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-4097
+; GFX1250-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:-4097
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -3083,7 +3083,7 @@ define <4 x float> @global_load_i8_offset_neg4097(ptr addrspace(1) %sbase) {
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
-; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-4097 scope:SCOPE_SE
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:-4097 scope:SCOPE_SE
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
   %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 -4097
@@ -3193,7 +3193,7 @@ define <4 x float> @global_load_i8_offset_neg4098(ptr addrspace(1) %sbase) {
 ; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfffff000, v0
 ; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo
-; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-2 glc
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:-2 glc
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -3201,7 +3201,7 @@ define <4 x float> @global_load_i8_offset_neg4098(ptr addrspace(1) %sbase) {
 ; GFX1250-SDAG:       ; %bb.0:
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
-; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-4098 scope:SCOPE_DEV
+; GFX1250-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:-4098 scope:SCOPE_DEV
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -3212,7 +3212,7 @@ define <4 x float> @global_load_i8_offset_neg4098(ptr addrspace(1) %sbase) {
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
-; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-4098 scope:SCOPE_DEV
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:-4098 scope:SCOPE_DEV
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -3315,7 +3315,7 @@ define <4 x float> @global_load_i8_offset_neg4098(ptr addrspace(1) %sbase) {
 ; GFX11-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0xffffeffe, v0
 ; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo
-; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off glc
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -3323,7 +3323,7 @@ define <4 x float> @global_load_i8_offset_neg4098(ptr addrspace(1) %sbase) {
 ; GFX1250-ISEL:       ; %bb.0:
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
-; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-4098 scope:SCOPE_DEV
+; GFX1250-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:-4098 scope:SCOPE_DEV
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -3334,7 +3334,7 @@ define <4 x float> @global_load_i8_offset_neg4098(ptr addrspace(1) %sbase) {
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
-; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-4098 scope:SCOPE_DEV
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:-4098 scope:SCOPE_DEV
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
   %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 -4098
@@ -3424,7 +3424,7 @@ define <4 x float> @global_load_i8_offset_2048(ptr addrspace(1) %sbase) {
 ; GFX11-GENERIC-SDAG-LABEL: global_load_i8_offset_2048:
 ; GFX11-GENERIC-SDAG:       ; %bb.0:
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
-; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:2048 glc
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:2048 glc
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -3432,7 +3432,7 @@ define <4 x float> @global_load_i8_offset_2048(ptr addrspace(1) %sbase) {
 ; GFX1250-SDAG:       ; %bb.0:
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
-; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:2048 scope:SCOPE_SYS
+; GFX1250-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:2048 scope:SCOPE_SYS
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -3443,7 +3443,7 @@ define <4 x float> @global_load_i8_offset_2048(ptr addrspace(1) %sbase) {
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
-; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:2048 scope:SCOPE_SYS
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:2048 scope:SCOPE_SYS
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -3526,7 +3526,7 @@ define <4 x float> @global_load_i8_offset_2048(ptr addrspace(1) %sbase) {
 ; GFX11-GENERIC-ISEL-LABEL: global_load_i8_offset_2048:
 ; GFX11-GENERIC-ISEL:       ; %bb.0:
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
-; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:2048 glc
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:2048 glc
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -3534,7 +3534,7 @@ define <4 x float> @global_load_i8_offset_2048(ptr addrspace(1) %sbase) {
 ; GFX1250-ISEL:       ; %bb.0:
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
-; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:2048 scope:SCOPE_SYS
+; GFX1250-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:2048 scope:SCOPE_SYS
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -3545,7 +3545,7 @@ define <4 x float> @global_load_i8_offset_2048(ptr addrspace(1) %sbase) {
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
-; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:2048 scope:SCOPE_SYS
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:2048 scope:SCOPE_SYS
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
   %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 2048
@@ -3635,7 +3635,7 @@ define <4 x float> @global_load_i8_offset_2049(ptr addrspace(1) %sbase) {
 ; GFX11-GENERIC-SDAG-LABEL: global_load_i8_offset_2049:
 ; GFX11-GENERIC-SDAG:       ; %bb.0:
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
-; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:2049
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:2049
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -3643,7 +3643,7 @@ define <4 x float> @global_load_i8_offset_2049(ptr addrspace(1) %sbase) {
 ; GFX1250-SDAG:       ; %bb.0:
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
-; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:2049
+; GFX1250-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:2049
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -3654,7 +3654,7 @@ define <4 x float> @global_load_i8_offset_2049(ptr addrspace(1) %sbase) {
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
-; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:2049
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:2049
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -3737,7 +3737,7 @@ define <4 x float> @global_load_i8_offset_2049(ptr addrspace(1) %sbase) {
 ; GFX11-GENERIC-ISEL-LABEL: global_load_i8_offset_2049:
 ; GFX11-GENERIC-ISEL:       ; %bb.0:
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
-; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:2049
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:2049
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -3745,7 +3745,7 @@ define <4 x float> @global_load_i8_offset_2049(ptr addrspace(1) %sbase) {
 ; GFX1250-ISEL:       ; %bb.0:
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
-; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:2049
+; GFX1250-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:2049
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -3756,7 +3756,7 @@ define <4 x float> @global_load_i8_offset_2049(ptr addrspace(1) %sbase) {
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
-; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:2049
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:2049
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
   %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 2049
@@ -3846,7 +3846,7 @@ define <4 x float> @global_load_i8_offset_2050(ptr addrspace(1) %sbase) {
 ; GFX11-GENERIC-SDAG-LABEL: global_load_i8_offset_2050:
 ; GFX11-GENERIC-SDAG:       ; %bb.0:
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
-; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:2050 glc
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:2050 glc
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -3854,7 +3854,7 @@ define <4 x float> @global_load_i8_offset_2050(ptr addrspace(1) %sbase) {
 ; GFX1250-SDAG:       ; %bb.0:
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
-; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:2050
+; GFX1250-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:2050
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -3865,7 +3865,7 @@ define <4 x float> @global_load_i8_offset_2050(ptr addrspace(1) %sbase) {
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
-; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:2050 scope:SCOPE_SE
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:2050 scope:SCOPE_SE
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -3948,7 +3948,7 @@ define <4 x float> @global_load_i8_offset_2050(ptr addrspace(1) %sbase) {
 ; GFX11-GENERIC-ISEL-LABEL: global_load_i8_offset_2050:
 ; GFX11-GENERIC-ISEL:       ; %bb.0:
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
-; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:2050 glc
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:2050 glc
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -3956,7 +3956,7 @@ define <4 x float> @global_load_i8_offset_2050(ptr addrspace(1) %sbase) {
 ; GFX1250-ISEL:       ; %bb.0:
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
-; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:2050
+; GFX1250-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:2050
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -3967,7 +3967,7 @@ define <4 x float> @global_load_i8_offset_2050(ptr addrspace(1) %sbase) {
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
-; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:2050 scope:SCOPE_SE
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:2050 scope:SCOPE_SE
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
   %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 2050
@@ -4051,7 +4051,7 @@ define <4 x float> @global_load_i8_offset_neg2048(ptr addrspace(1) %sbase) {
 ; GFX11-GENERIC-SDAG-LABEL: global_load_i8_offset_neg2048:
 ; GFX11-GENERIC-SDAG:       ; %bb.0:
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
-; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-2048 glc
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:-2048 glc
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -4059,7 +4059,7 @@ define <4 x float> @global_load_i8_offset_neg2048(ptr addrspace(1) %sbase) {
 ; GFX1250-SDAG:       ; %bb.0:
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
-; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-2048 scope:SCOPE_DEV
+; GFX1250-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:-2048 scope:SCOPE_DEV
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -4070,7 +4070,7 @@ define <4 x float> @global_load_i8_offset_neg2048(ptr addrspace(1) %sbase) {
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
-; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-2048 scope:SCOPE_DEV
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:-2048 scope:SCOPE_DEV
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -4147,7 +4147,7 @@ define <4 x float> @global_load_i8_offset_neg2048(ptr addrspace(1) %sbase) {
 ; GFX11-GENERIC-ISEL-LABEL: global_load_i8_offset_neg2048:
 ; GFX11-GENERIC-ISEL:       ; %bb.0:
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
-; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-2048 glc
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:-2048 glc
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -4155,7 +4155,7 @@ define <4 x float> @global_load_i8_offset_neg2048(ptr addrspace(1) %sbase) {
 ; GFX1250-ISEL:       ; %bb.0:
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
-; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-2048 scope:SCOPE_DEV
+; GFX1250-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:-2048 scope:SCOPE_DEV
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -4166,7 +4166,7 @@ define <4 x float> @global_load_i8_offset_neg2048(ptr addrspace(1) %sbase) {
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
-; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-2048 scope:SCOPE_DEV
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:-2048 scope:SCOPE_DEV
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
   %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 -2048
@@ -4256,7 +4256,7 @@ define <4 x float> @global_load_i8_offset_neg2049(ptr addrspace(1) %sbase) {
 ; GFX11-GENERIC-SDAG-LABEL: global_load_i8_offset_neg2049:
 ; GFX11-GENERIC-SDAG:       ; %bb.0:
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
-; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-2049 glc
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:-2049 glc
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -4264,7 +4264,7 @@ define <4 x float> @global_load_i8_offset_neg2049(ptr addrspace(1) %sbase) {
 ; GFX1250-SDAG:       ; %bb.0:
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
-; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-2049 scope:SCOPE_SYS
+; GFX1250-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:-2049 scope:SCOPE_SYS
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -4275,7 +4275,7 @@ define <4 x float> @global_load_i8_offset_neg2049(ptr addrspace(1) %sbase) {
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
-; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-2049 scope:SCOPE_SYS
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:-2049 scope:SCOPE_SYS
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -4358,7 +4358,7 @@ define <4 x float> @global_load_i8_offset_neg2049(ptr addrspace(1) %sbase) {
 ; GFX11-GENERIC-ISEL-LABEL: global_load_i8_offset_neg2049:
 ; GFX11-GENERIC-ISEL:       ; %bb.0:
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
-; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-2049 glc
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:-2049 glc
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -4366,7 +4366,7 @@ define <4 x float> @global_load_i8_offset_neg2049(ptr addrspace(1) %sbase) {
 ; GFX1250-ISEL:       ; %bb.0:
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
-; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-2049 scope:SCOPE_SYS
+; GFX1250-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:-2049 scope:SCOPE_SYS
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -4377,7 +4377,7 @@ define <4 x float> @global_load_i8_offset_neg2049(ptr addrspace(1) %sbase) {
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
-; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-2049 scope:SCOPE_SYS
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:-2049 scope:SCOPE_SYS
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
   %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 -2049
@@ -4467,7 +4467,7 @@ define <4 x float> @global_load_i8_offset_neg2050(ptr addrspace(1) %sbase) {
 ; GFX11-GENERIC-SDAG-LABEL: global_load_i8_offset_neg2050:
 ; GFX11-GENERIC-SDAG:       ; %bb.0:
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
-; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-2050
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:-2050
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -4475,7 +4475,7 @@ define <4 x float> @global_load_i8_offset_neg2050(ptr addrspace(1) %sbase) {
 ; GFX1250-SDAG:       ; %bb.0:
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
-; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-2050
+; GFX1250-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:-2050
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -4486,7 +4486,7 @@ define <4 x float> @global_load_i8_offset_neg2050(ptr addrspace(1) %sbase) {
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
-; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-2050
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:-2050
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -4569,7 +4569,7 @@ define <4 x float> @global_load_i8_offset_neg2050(ptr addrspace(1) %sbase) {
 ; GFX11-GENERIC-ISEL-LABEL: global_load_i8_offset_neg2050:
 ; GFX11-GENERIC-ISEL:       ; %bb.0:
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
-; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-2050
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:-2050
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -4577,7 +4577,7 @@ define <4 x float> @global_load_i8_offset_neg2050(ptr addrspace(1) %sbase) {
 ; GFX1250-ISEL:       ; %bb.0:
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
-; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-2050
+; GFX1250-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:-2050
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -4588,7 +4588,7 @@ define <4 x float> @global_load_i8_offset_neg2050(ptr addrspace(1) %sbase) {
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
-; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-2050
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:-2050
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
   %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 -2050
@@ -4697,7 +4697,7 @@ define <4 x float> @global_load_i8_offset_0x7FFFFF(ptr addrspace(1) %sbase) {
 ; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0x7ff000, v0
 ; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:4095 glc
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:4095 glc
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -4705,7 +4705,7 @@ define <4 x float> @global_load_i8_offset_0x7FFFFF(ptr addrspace(1) %sbase) {
 ; GFX1250-SDAG:       ; %bb.0:
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
-; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:8388607
+; GFX1250-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:8388607
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -4716,7 +4716,7 @@ define <4 x float> @global_load_i8_offset_0x7FFFFF(ptr addrspace(1) %sbase) {
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
-; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:8388607 scope:SCOPE_SE
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:8388607 scope:SCOPE_SE
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -4819,7 +4819,7 @@ define <4 x float> @global_load_i8_offset_0x7FFFFF(ptr addrspace(1) %sbase) {
 ; GFX11-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0x7fffff, v0
 ; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off glc
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -4827,7 +4827,7 @@ define <4 x float> @global_load_i8_offset_0x7FFFFF(ptr addrspace(1) %sbase) {
 ; GFX1250-ISEL:       ; %bb.0:
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
-; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:8388607
+; GFX1250-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:8388607
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -4838,7 +4838,7 @@ define <4 x float> @global_load_i8_offset_0x7FFFFF(ptr addrspace(1) %sbase) {
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
-; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:8388607 scope:SCOPE_SE
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:8388607 scope:SCOPE_SE
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
   %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 8388607
@@ -4947,7 +4947,7 @@ define <4 x float> @global_load_i8_offset_0xFFFFFF(ptr addrspace(1) %sbase) {
 ; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0xff800000, v0
 ; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo
-; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off glc
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -4955,7 +4955,7 @@ define <4 x float> @global_load_i8_offset_0xFFFFFF(ptr addrspace(1) %sbase) {
 ; GFX1250-SDAG:       ; %bb.0:
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
-; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-8388608 scope:SCOPE_DEV
+; GFX1250-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:-8388608 scope:SCOPE_DEV
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -4966,7 +4966,7 @@ define <4 x float> @global_load_i8_offset_0xFFFFFF(ptr addrspace(1) %sbase) {
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
-; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-8388608 scope:SCOPE_DEV
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:-8388608 scope:SCOPE_DEV
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -5069,7 +5069,7 @@ define <4 x float> @global_load_i8_offset_0xFFFFFF(ptr addrspace(1) %sbase) {
 ; GFX11-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0xff800000, v0
 ; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo
-; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off glc
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -5077,7 +5077,7 @@ define <4 x float> @global_load_i8_offset_0xFFFFFF(ptr addrspace(1) %sbase) {
 ; GFX1250-ISEL:       ; %bb.0:
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
-; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-8388608 scope:SCOPE_DEV
+; GFX1250-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:-8388608 scope:SCOPE_DEV
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -5088,7 +5088,7 @@ define <4 x float> @global_load_i8_offset_0xFFFFFF(ptr addrspace(1) %sbase) {
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
-; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-8388608 scope:SCOPE_DEV
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:-8388608 scope:SCOPE_DEV
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
   %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 -8388608
@@ -5197,7 +5197,7 @@ define <4 x float> @global_load_i8_offset_0xFFFFFFFF(ptr addrspace(1) %sbase) {
 ; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfffff000, v0
 ; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:4095 glc
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:4095 glc
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -5208,7 +5208,7 @@ define <4 x float> @global_load_i8_offset_0xFFFFFFFF(ptr addrspace(1) %sbase) {
 ; GFX1250-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0xff800000, v0
 ; GFX1250-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1250-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:8388607 scope:SCOPE_SYS
+; GFX1250-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:8388607 scope:SCOPE_SYS
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -5222,7 +5222,7 @@ define <4 x float> @global_load_i8_offset_0xFFFFFFFF(ptr addrspace(1) %sbase) {
 ; GFX12-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0xff800000, v0
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)
 ; GFX12-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:8388607 scope:SCOPE_SYS
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:8388607 scope:SCOPE_SYS
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -5325,7 +5325,7 @@ define <4 x float> @global_load_i8_offset_0xFFFFFFFF(ptr addrspace(1) %sbase) {
 ; GFX11-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, -1
 ; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off glc
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -5336,7 +5336,7 @@ define <4 x float> @global_load_i8_offset_0xFFFFFFFF(ptr addrspace(1) %sbase) {
 ; GFX1250-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, -1
 ; GFX1250-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1250-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SYS
+; GFX1250-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SYS
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -5350,7 +5350,7 @@ define <4 x float> @global_load_i8_offset_0xFFFFFFFF(ptr addrspace(1) %sbase) {
 ; GFX12-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, -1
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_alu depctr_va_vcc(0)
 ; GFX12-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SYS
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SYS
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
   %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 4294967295
@@ -5444,7 +5444,7 @@ define <4 x float> @global_load_i8_offset_0x100000000(ptr addrspace(1) %sbase) {
 ; GFX11-GENERIC-SDAG:       ; %bb.0:
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    v_add_nc_u32_e32 v1, 1, v1
-; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -5453,7 +5453,7 @@ define <4 x float> @global_load_i8_offset_0x100000000(ptr addrspace(1) %sbase) {
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
 ; GFX1250-SDAG-NEXT:    v_add_nc_u32_e32 v1, 1, v1
-; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX1250-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -5465,7 +5465,7 @@ define <4 x float> @global_load_i8_offset_0x100000000(ptr addrspace(1) %sbase) {
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    v_add_nc_u32_e32 v1, 1, v1
-; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -5568,7 +5568,7 @@ define <4 x float> @global_load_i8_offset_0x100000000(ptr addrspace(1) %sbase) {
 ; GFX11-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, 0
 ; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 1, v1, vcc_lo
-; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -5579,7 +5579,7 @@ define <4 x float> @global_load_i8_offset_0x100000000(ptr addrspace(1) %sbase) {
 ; GFX1250-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, 0
 ; GFX1250-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1250-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 1, v1, vcc_lo
-; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX1250-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -5593,7 +5593,7 @@ define <4 x float> @global_load_i8_offset_0x100000000(ptr addrspace(1) %sbase) {
 ; GFX12-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, 0
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_alu depctr_va_vcc(0)
 ; GFX12-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 1, v1, vcc_lo
-; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
   %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 4294967296
@@ -5702,7 +5702,7 @@ define <4 x float> @global_load_i8_offset_0x100000001(ptr addrspace(1) %sbase) {
 ; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0, v0
 ; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 1, v1, vcc_lo
-; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:1 glc
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:1 glc
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -5713,7 +5713,7 @@ define <4 x float> @global_load_i8_offset_0x100000001(ptr addrspace(1) %sbase) {
 ; GFX1250-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0, v0
 ; GFX1250-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1250-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 1, v1, vcc_lo
-; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:1
+; GFX1250-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:1
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -5727,7 +5727,7 @@ define <4 x float> @global_load_i8_offset_0x100000001(ptr addrspace(1) %sbase) {
 ; GFX12-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0, v0
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)
 ; GFX12-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 1, v1, vcc_lo
-; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:1 scope:SCOPE_SE
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:1 scope:SCOPE_SE
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -5830,7 +5830,7 @@ define <4 x float> @global_load_i8_offset_0x100000001(ptr addrspace(1) %sbase) {
 ; GFX11-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, 1
 ; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 1, v1, vcc_lo
-; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off glc
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -5841,7 +5841,7 @@ define <4 x float> @global_load_i8_offset_0x100000001(ptr addrspace(1) %sbase) {
 ; GFX1250-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, 1
 ; GFX1250-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1250-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 1, v1, vcc_lo
-; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX1250-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -5855,7 +5855,7 @@ define <4 x float> @global_load_i8_offset_0x100000001(ptr addrspace(1) %sbase) {
 ; GFX12-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, 1
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_alu depctr_va_vcc(0)
 ; GFX12-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 1, v1, vcc_lo
-; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SE
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SE
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
   %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 4294967297
@@ -5964,7 +5964,7 @@ define <4 x float> @global_load_i8_offset_0x100000FFF(ptr addrspace(1) %sbase) {
 ; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0, v0
 ; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 1, v1, vcc_lo
-; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:4095 glc
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:4095 glc
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -5975,7 +5975,7 @@ define <4 x float> @global_load_i8_offset_0x100000FFF(ptr addrspace(1) %sbase) {
 ; GFX1250-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0, v0
 ; GFX1250-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1250-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 1, v1, vcc_lo
-; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:4095 scope:SCOPE_DEV
+; GFX1250-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:4095 scope:SCOPE_DEV
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -5989,7 +5989,7 @@ define <4 x float> @global_load_i8_offset_0x100000FFF(ptr addrspace(1) %sbase) {
 ; GFX12-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0, v0
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)
 ; GFX12-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 1, v1, vcc_lo
-; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:4095 scope:SCOPE_DEV
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:4095 scope:SCOPE_DEV
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -6092,7 +6092,7 @@ define <4 x float> @global_load_i8_offset_0x100000FFF(ptr addrspace(1) %sbase) {
 ; GFX11-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfff, v0
 ; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 1, v1, vcc_lo
-; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off glc
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -6103,7 +6103,7 @@ define <4 x float> @global_load_i8_offset_0x100000FFF(ptr addrspace(1) %sbase) {
 ; GFX1250-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfff, v0
 ; GFX1250-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1250-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 1, v1, vcc_lo
-; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_DEV
+; GFX1250-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off scope:SCOPE_DEV
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -6117,7 +6117,7 @@ define <4 x float> @global_load_i8_offset_0x100000FFF(ptr addrspace(1) %sbase) {
 ; GFX12-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfff, v0
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_alu depctr_va_vcc(0)
 ; GFX12-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 1, v1, vcc_lo
-; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_DEV
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off scope:SCOPE_DEV
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
   %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 4294971391
@@ -6226,7 +6226,7 @@ define <4 x float> @global_load_i8_offset_0x100001000(ptr addrspace(1) %sbase) {
 ; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0x1000, v0
 ; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 1, v1, vcc_lo
-; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off glc
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -6237,7 +6237,7 @@ define <4 x float> @global_load_i8_offset_0x100001000(ptr addrspace(1) %sbase) {
 ; GFX1250-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0, v0
 ; GFX1250-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1250-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 1, v1, vcc_lo
-; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:4096 scope:SCOPE_SYS
+; GFX1250-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:4096 scope:SCOPE_SYS
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -6251,7 +6251,7 @@ define <4 x float> @global_load_i8_offset_0x100001000(ptr addrspace(1) %sbase) {
 ; GFX12-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0, v0
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)
 ; GFX12-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 1, v1, vcc_lo
-; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:4096 scope:SCOPE_SYS
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:4096 scope:SCOPE_SYS
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -6354,7 +6354,7 @@ define <4 x float> @global_load_i8_offset_0x100001000(ptr addrspace(1) %sbase) {
 ; GFX11-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0x1000, v0
 ; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 1, v1, vcc_lo
-; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off glc
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -6365,7 +6365,7 @@ define <4 x float> @global_load_i8_offset_0x100001000(ptr addrspace(1) %sbase) {
 ; GFX1250-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0x1000, v0
 ; GFX1250-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1250-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 1, v1, vcc_lo
-; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SYS
+; GFX1250-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SYS
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -6379,7 +6379,7 @@ define <4 x float> @global_load_i8_offset_0x100001000(ptr addrspace(1) %sbase) {
 ; GFX12-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0x1000, v0
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_alu depctr_va_vcc(0)
 ; GFX12-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 1, v1, vcc_lo
-; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SYS
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SYS
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
   %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 4294971392
@@ -6488,7 +6488,7 @@ define <4 x float> @global_load_i8_offset_neg0xFFFFFFFF(ptr addrspace(1) %sbase)
 ; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0x1000, v0
 ; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo
-; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-4095
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:-4095
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -6499,7 +6499,7 @@ define <4 x float> @global_load_i8_offset_neg0xFFFFFFFF(ptr addrspace(1) %sbase)
 ; GFX1250-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0x800000, v0
 ; GFX1250-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1250-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo
-; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-8388607
+; GFX1250-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:-8388607
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -6513,7 +6513,7 @@ define <4 x float> @global_load_i8_offset_neg0xFFFFFFFF(ptr addrspace(1) %sbase)
 ; GFX12-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0x800000, v0
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)
 ; GFX12-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo
-; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-8388607
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:-8388607
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -6616,7 +6616,7 @@ define <4 x float> @global_load_i8_offset_neg0xFFFFFFFF(ptr addrspace(1) %sbase)
 ; GFX11-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, 1
 ; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo
-; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -6627,7 +6627,7 @@ define <4 x float> @global_load_i8_offset_neg0xFFFFFFFF(ptr addrspace(1) %sbase)
 ; GFX1250-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, 1
 ; GFX1250-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1250-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo
-; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX1250-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -6641,7 +6641,7 @@ define <4 x float> @global_load_i8_offset_neg0xFFFFFFFF(ptr addrspace(1) %sbase)
 ; GFX12-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, 1
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_alu depctr_va_vcc(0)
 ; GFX12-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo
-; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
   %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 -4294967295
@@ -6735,7 +6735,7 @@ define <4 x float> @global_load_i8_offset_neg0x100000000(ptr addrspace(1) %sbase
 ; GFX11-GENERIC-SDAG:       ; %bb.0:
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    v_add_nc_u32_e32 v1, -1, v1
-; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off glc
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -6744,7 +6744,7 @@ define <4 x float> @global_load_i8_offset_neg0x100000000(ptr addrspace(1) %sbase
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
 ; GFX1250-SDAG-NEXT:    v_add_nc_u32_e32 v1, -1, v1
-; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX1250-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -6756,7 +6756,7 @@ define <4 x float> @global_load_i8_offset_neg0x100000000(ptr addrspace(1) %sbase
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    v_add_nc_u32_e32 v1, -1, v1
-; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SE
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SE
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -6859,7 +6859,7 @@ define <4 x float> @global_load_i8_offset_neg0x100000000(ptr addrspace(1) %sbase
 ; GFX11-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, 0
 ; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo
-; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off glc
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -6870,7 +6870,7 @@ define <4 x float> @global_load_i8_offset_neg0x100000000(ptr addrspace(1) %sbase
 ; GFX1250-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, 0
 ; GFX1250-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1250-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo
-; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX1250-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -6884,7 +6884,7 @@ define <4 x float> @global_load_i8_offset_neg0x100000000(ptr addrspace(1) %sbase
 ; GFX12-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, 0
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_alu depctr_va_vcc(0)
 ; GFX12-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo
-; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SE
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SE
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
   %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 -4294967296
@@ -6993,7 +6993,7 @@ define <4 x float> @global_load_i8_offset_neg0x100000001(ptr addrspace(1) %sbase
 ; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0, v0
 ; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo
-; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-1 glc
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:-1 glc
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -7004,7 +7004,7 @@ define <4 x float> @global_load_i8_offset_neg0x100000001(ptr addrspace(1) %sbase
 ; GFX1250-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0, v0
 ; GFX1250-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1250-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo
-; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-1 scope:SCOPE_DEV
+; GFX1250-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:-1 scope:SCOPE_DEV
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -7018,7 +7018,7 @@ define <4 x float> @global_load_i8_offset_neg0x100000001(ptr addrspace(1) %sbase
 ; GFX12-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0, v0
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)
 ; GFX12-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo
-; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-1 scope:SCOPE_DEV
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:-1 scope:SCOPE_DEV
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -7121,7 +7121,7 @@ define <4 x float> @global_load_i8_offset_neg0x100000001(ptr addrspace(1) %sbase
 ; GFX11-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, -1
 ; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, -2, v1, vcc_lo
-; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off glc
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -7132,7 +7132,7 @@ define <4 x float> @global_load_i8_offset_neg0x100000001(ptr addrspace(1) %sbase
 ; GFX1250-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, -1
 ; GFX1250-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1250-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, -2, v1, vcc_lo
-; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_DEV
+; GFX1250-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off scope:SCOPE_DEV
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -7146,7 +7146,7 @@ define <4 x float> @global_load_i8_offset_neg0x100000001(ptr addrspace(1) %sbase
 ; GFX12-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, -1
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_alu depctr_va_vcc(0)
 ; GFX12-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, -2, v1, vcc_lo
-; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_DEV
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off scope:SCOPE_DEV
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
   %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 -4294967297
@@ -7257,7 +7257,7 @@ define <4 x float> @global_load_i8_zext_vgpr(ptr addrspace(1) %sbase, i32 %voffs
 ; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off glc
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -7268,7 +7268,7 @@ define <4 x float> @global_load_i8_zext_vgpr(ptr addrspace(1) %sbase, i32 %voffs
 ; GFX1250-SDAG-NEXT:    v_mov_b32_e32 v3, 0
 ; GFX1250-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1250-SDAG-NEXT:    v_add_nc_u64_e32 v[0:1], v[0:1], v[2:3]
-; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SYS
+; GFX1250-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SYS
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -7282,7 +7282,7 @@ define <4 x float> @global_load_i8_zext_vgpr(ptr addrspace(1) %sbase, i32 %voffs
 ; GFX12-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)
 ; GFX12-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SYS
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SYS
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -7385,7 +7385,7 @@ define <4 x float> @global_load_i8_zext_vgpr(ptr addrspace(1) %sbase, i32 %voffs
 ; GFX11-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off glc
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -7396,7 +7396,7 @@ define <4 x float> @global_load_i8_zext_vgpr(ptr addrspace(1) %sbase, i32 %voffs
 ; GFX1250-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX1250-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1250-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SYS
+; GFX1250-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SYS
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -7410,7 +7410,7 @@ define <4 x float> @global_load_i8_zext_vgpr(ptr addrspace(1) %sbase, i32 %voffs
 ; GFX12-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_alu depctr_va_vcc(0)
 ; GFX12-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SYS
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SYS
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
   %zext.offset = zext i32 %voffset to i64
@@ -7524,7 +7524,7 @@ define <4 x float> @global_load_i8_zext_vgpr_offset_4095(ptr addrspace(1) %sbase
 ; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:4095
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:4095
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -7535,7 +7535,7 @@ define <4 x float> @global_load_i8_zext_vgpr_offset_4095(ptr addrspace(1) %sbase
 ; GFX1250-SDAG-NEXT:    v_mov_b32_e32 v3, 0
 ; GFX1250-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1250-SDAG-NEXT:    v_add_nc_u64_e32 v[0:1], v[0:1], v[2:3]
-; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:4095
+; GFX1250-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:4095
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -7549,7 +7549,7 @@ define <4 x float> @global_load_i8_zext_vgpr_offset_4095(ptr addrspace(1) %sbase
 ; GFX12-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)
 ; GFX12-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:4095
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:4095
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -7658,7 +7658,7 @@ define <4 x float> @global_load_i8_zext_vgpr_offset_4095(ptr addrspace(1) %sbase
 ; GFX11-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:4095
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:4095
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -7669,7 +7669,7 @@ define <4 x float> @global_load_i8_zext_vgpr_offset_4095(ptr addrspace(1) %sbase
 ; GFX1250-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX1250-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1250-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:4095
+; GFX1250-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:4095
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -7683,7 +7683,7 @@ define <4 x float> @global_load_i8_zext_vgpr_offset_4095(ptr addrspace(1) %sbase
 ; GFX12-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_alu depctr_va_vcc(0)
 ; GFX12-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:4095
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:4095
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
   %zext.offset = zext i32 %voffset to i64
@@ -7818,7 +7818,7 @@ define <4 x float> @global_load_i8_zext_vgpr_offset_4096(ptr addrspace(1) %sbase
 ; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0x1000, v0
 ; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off glc
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -7829,7 +7829,7 @@ define <4 x float> @global_load_i8_zext_vgpr_offset_4096(ptr addrspace(1) %sbase
 ; GFX1250-SDAG-NEXT:    v_mov_b32_e32 v3, 0
 ; GFX1250-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1250-SDAG-NEXT:    v_add_nc_u64_e32 v[0:1], v[0:1], v[2:3]
-; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:4096
+; GFX1250-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:4096
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -7843,7 +7843,7 @@ define <4 x float> @global_load_i8_zext_vgpr_offset_4096(ptr addrspace(1) %sbase
 ; GFX12-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)
 ; GFX12-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:4096 scope:SCOPE_SE
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:4096 scope:SCOPE_SE
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -7972,7 +7972,7 @@ define <4 x float> @global_load_i8_zext_vgpr_offset_4096(ptr addrspace(1) %sbase
 ; GFX11-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0x1000, v0
 ; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off glc
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -7983,7 +7983,7 @@ define <4 x float> @global_load_i8_zext_vgpr_offset_4096(ptr addrspace(1) %sbase
 ; GFX1250-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX1250-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1250-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:4096
+; GFX1250-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:4096
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -7997,7 +7997,7 @@ define <4 x float> @global_load_i8_zext_vgpr_offset_4096(ptr addrspace(1) %sbase
 ; GFX12-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_alu depctr_va_vcc(0)
 ; GFX12-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:4096 scope:SCOPE_SE
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:4096 scope:SCOPE_SE
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
   %zext.offset = zext i32 %voffset to i64
@@ -8112,7 +8112,7 @@ define <4 x float> @global_load_i8_zext_vgpr_offset_neg4096(ptr addrspace(1) %sb
 ; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-4096 glc
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:-4096 glc
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -8123,7 +8123,7 @@ define <4 x float> @global_load_i8_zext_vgpr_offset_neg4096(ptr addrspace(1) %sb
 ; GFX1250-SDAG-NEXT:    v_mov_b32_e32 v3, 0
 ; GFX1250-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1250-SDAG-NEXT:    v_add_nc_u64_e32 v[0:1], v[0:1], v[2:3]
-; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-4096 scope:SCOPE_DEV
+; GFX1250-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:-4096 scope:SCOPE_DEV
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -8137,7 +8137,7 @@ define <4 x float> @global_load_i8_zext_vgpr_offset_neg4096(ptr addrspace(1) %sb
 ; GFX12-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)
 ; GFX12-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-4096 scope:SCOPE_DEV
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:-4096 scope:SCOPE_DEV
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -8246,7 +8246,7 @@ define <4 x float> @global_load_i8_zext_vgpr_offset_neg4096(ptr addrspace(1) %sb
 ; GFX11-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-4096 glc
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:-4096 glc
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -8257,7 +8257,7 @@ define <4 x float> @global_load_i8_zext_vgpr_offset_neg4096(ptr addrspace(1) %sb
 ; GFX1250-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX1250-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1250-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-4096 scope:SCOPE_DEV
+; GFX1250-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:-4096 scope:SCOPE_DEV
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -8271,7 +8271,7 @@ define <4 x float> @global_load_i8_zext_vgpr_offset_neg4096(ptr addrspace(1) %sb
 ; GFX12-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_alu depctr_va_vcc(0)
 ; GFX12-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-4096 scope:SCOPE_DEV
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:-4096 scope:SCOPE_DEV
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
   %zext.offset = zext i32 %voffset to i64
@@ -8406,7 +8406,7 @@ define <4 x float> @global_load_i8_zext_vgpr_offset_neg4097(ptr addrspace(1) %sb
 ; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfffff000, v0
 ; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo
-; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-1 glc
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:-1 glc
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -8417,7 +8417,7 @@ define <4 x float> @global_load_i8_zext_vgpr_offset_neg4097(ptr addrspace(1) %sb
 ; GFX1250-SDAG-NEXT:    v_mov_b32_e32 v3, 0
 ; GFX1250-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1250-SDAG-NEXT:    v_add_nc_u64_e32 v[0:1], v[0:1], v[2:3]
-; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-4097 scope:SCOPE_SYS
+; GFX1250-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:-4097 scope:SCOPE_SYS
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -8431,7 +8431,7 @@ define <4 x float> @global_load_i8_zext_vgpr_offset_neg4097(ptr addrspace(1) %sb
 ; GFX12-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)
 ; GFX12-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-4097 scope:SCOPE_SYS
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:-4097 scope:SCOPE_SYS
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -8560,7 +8560,7 @@ define <4 x float> @global_load_i8_zext_vgpr_offset_neg4097(ptr addrspace(1) %sb
 ; GFX11-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0xffffefff, v0
 ; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo
-; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off glc
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -8571,7 +8571,7 @@ define <4 x float> @global_load_i8_zext_vgpr_offset_neg4097(ptr addrspace(1) %sb
 ; GFX1250-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX1250-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1250-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-4097 scope:SCOPE_SYS
+; GFX1250-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:-4097 scope:SCOPE_SYS
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -8585,7 +8585,7 @@ define <4 x float> @global_load_i8_zext_vgpr_offset_neg4097(ptr addrspace(1) %sb
 ; GFX12-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_alu depctr_va_vcc(0)
 ; GFX12-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-4097 scope:SCOPE_SYS
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:-4097 scope:SCOPE_SYS
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
   %zext.offset = zext i32 %voffset to i64
@@ -8694,7 +8694,7 @@ define <4 x float> @global_load_i8_zext_vgpr_offset_2047(ptr addrspace(1) %sbase
 ; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:2047
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:2047
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -8705,7 +8705,7 @@ define <4 x float> @global_load_i8_zext_vgpr_offset_2047(ptr addrspace(1) %sbase
 ; GFX1250-SDAG-NEXT:    v_mov_b32_e32 v3, 0
 ; GFX1250-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1250-SDAG-NEXT:    v_add_nc_u64_e32 v[0:1], v[0:1], v[2:3]
-; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:2047
+; GFX1250-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:2047
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -8719,7 +8719,7 @@ define <4 x float> @global_load_i8_zext_vgpr_offset_2047(ptr addrspace(1) %sbase
 ; GFX12-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)
 ; GFX12-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:2047
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:2047
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -8822,7 +8822,7 @@ define <4 x float> @global_load_i8_zext_vgpr_offset_2047(ptr addrspace(1) %sbase
 ; GFX11-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:2047
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:2047
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -8833,7 +8833,7 @@ define <4 x float> @global_load_i8_zext_vgpr_offset_2047(ptr addrspace(1) %sbase
 ; GFX1250-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX1250-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1250-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:2047
+; GFX1250-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:2047
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -8847,7 +8847,7 @@ define <4 x float> @global_load_i8_zext_vgpr_offset_2047(ptr addrspace(1) %sbase
 ; GFX12-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_alu depctr_va_vcc(0)
 ; GFX12-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:2047
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:2047
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
   %zext.offset = zext i32 %voffset to i64
@@ -8962,7 +8962,7 @@ define <4 x float> @global_load_i8_zext_vgpr_offset_2048(ptr addrspace(1) %sbase
 ; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:2048 glc
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:2048 glc
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -8973,7 +8973,7 @@ define <4 x float> @global_load_i8_zext_vgpr_offset_2048(ptr addrspace(1) %sbase
 ; GFX1250-SDAG-NEXT:    v_mov_b32_e32 v3, 0
 ; GFX1250-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1250-SDAG-NEXT:    v_add_nc_u64_e32 v[0:1], v[0:1], v[2:3]
-; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:2048
+; GFX1250-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:2048
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -8987,7 +8987,7 @@ define <4 x float> @global_load_i8_zext_vgpr_offset_2048(ptr addrspace(1) %sbase
 ; GFX12-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)
 ; GFX12-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:2048 scope:SCOPE_SE
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:2048 scope:SCOPE_SE
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -9096,7 +9096,7 @@ define <4 x float> @global_load_i8_zext_vgpr_offset_2048(ptr addrspace(1) %sbase
 ; GFX11-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:2048 glc
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:2048 glc
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -9107,7 +9107,7 @@ define <4 x float> @global_load_i8_zext_vgpr_offset_2048(ptr addrspace(1) %sbase
 ; GFX1250-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX1250-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1250-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:2048
+; GFX1250-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:2048
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -9121,7 +9121,7 @@ define <4 x float> @global_load_i8_zext_vgpr_offset_2048(ptr addrspace(1) %sbase
 ; GFX12-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_alu depctr_va_vcc(0)
 ; GFX12-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:2048 scope:SCOPE_SE
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:2048 scope:SCOPE_SE
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
   %zext.offset = zext i32 %voffset to i64
@@ -9230,7 +9230,7 @@ define <4 x float> @global_load_i8_zext_vgpr_offset_neg2048(ptr addrspace(1) %sb
 ; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-2048 glc
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:-2048 glc
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -9241,7 +9241,7 @@ define <4 x float> @global_load_i8_zext_vgpr_offset_neg2048(ptr addrspace(1) %sb
 ; GFX1250-SDAG-NEXT:    v_mov_b32_e32 v3, 0
 ; GFX1250-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1250-SDAG-NEXT:    v_add_nc_u64_e32 v[0:1], v[0:1], v[2:3]
-; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-2048 scope:SCOPE_DEV
+; GFX1250-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:-2048 scope:SCOPE_DEV
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -9255,7 +9255,7 @@ define <4 x float> @global_load_i8_zext_vgpr_offset_neg2048(ptr addrspace(1) %sb
 ; GFX12-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)
 ; GFX12-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-2048 scope:SCOPE_DEV
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:-2048 scope:SCOPE_DEV
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -9358,7 +9358,7 @@ define <4 x float> @global_load_i8_zext_vgpr_offset_neg2048(ptr addrspace(1) %sb
 ; GFX11-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-2048 glc
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:-2048 glc
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -9369,7 +9369,7 @@ define <4 x float> @global_load_i8_zext_vgpr_offset_neg2048(ptr addrspace(1) %sb
 ; GFX1250-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX1250-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1250-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-2048 scope:SCOPE_DEV
+; GFX1250-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:-2048 scope:SCOPE_DEV
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -9383,7 +9383,7 @@ define <4 x float> @global_load_i8_zext_vgpr_offset_neg2048(ptr addrspace(1) %sb
 ; GFX12-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_alu depctr_va_vcc(0)
 ; GFX12-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-2048 scope:SCOPE_DEV
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:-2048 scope:SCOPE_DEV
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
   %zext.offset = zext i32 %voffset to i64
@@ -9498,7 +9498,7 @@ define <4 x float> @global_load_i8_zext_vgpr_offset_neg2049(ptr addrspace(1) %sb
 ; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-2049 glc
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:-2049 glc
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -9509,7 +9509,7 @@ define <4 x float> @global_load_i8_zext_vgpr_offset_neg2049(ptr addrspace(1) %sb
 ; GFX1250-SDAG-NEXT:    v_mov_b32_e32 v3, 0
 ; GFX1250-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1250-SDAG-NEXT:    v_add_nc_u64_e32 v[0:1], v[0:1], v[2:3]
-; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-2049 scope:SCOPE_SYS
+; GFX1250-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:-2049 scope:SCOPE_SYS
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -9523,7 +9523,7 @@ define <4 x float> @global_load_i8_zext_vgpr_offset_neg2049(ptr addrspace(1) %sb
 ; GFX12-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)
 ; GFX12-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-2049 scope:SCOPE_SYS
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:-2049 scope:SCOPE_SYS
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -9632,7 +9632,7 @@ define <4 x float> @global_load_i8_zext_vgpr_offset_neg2049(ptr addrspace(1) %sb
 ; GFX11-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-2049 glc
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:-2049 glc
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -9643,7 +9643,7 @@ define <4 x float> @global_load_i8_zext_vgpr_offset_neg2049(ptr addrspace(1) %sb
 ; GFX1250-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX1250-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1250-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-2049 scope:SCOPE_SYS
+; GFX1250-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:-2049 scope:SCOPE_SYS
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -9657,7 +9657,7 @@ define <4 x float> @global_load_i8_zext_vgpr_offset_neg2049(ptr addrspace(1) %sb
 ; GFX12-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_alu depctr_va_vcc(0)
 ; GFX12-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-2049 scope:SCOPE_SYS
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:-2049 scope:SCOPE_SYS
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
   %zext.offset = zext i32 %voffset to i64
@@ -9792,7 +9792,7 @@ define <4 x float> @global_load_i8_zext_vgpr_offset_0x7FFFFF(ptr addrspace(1) %s
 ; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0x7ff000, v0
 ; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:4095
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:4095
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -9803,7 +9803,7 @@ define <4 x float> @global_load_i8_zext_vgpr_offset_0x7FFFFF(ptr addrspace(1) %s
 ; GFX1250-SDAG-NEXT:    v_mov_b32_e32 v3, 0
 ; GFX1250-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1250-SDAG-NEXT:    v_add_nc_u64_e32 v[0:1], v[0:1], v[2:3]
-; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:8388607
+; GFX1250-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:8388607
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -9817,7 +9817,7 @@ define <4 x float> @global_load_i8_zext_vgpr_offset_0x7FFFFF(ptr addrspace(1) %s
 ; GFX12-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)
 ; GFX12-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:8388607
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:8388607
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -9946,7 +9946,7 @@ define <4 x float> @global_load_i8_zext_vgpr_offset_0x7FFFFF(ptr addrspace(1) %s
 ; GFX11-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0x7fffff, v0
 ; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -9957,7 +9957,7 @@ define <4 x float> @global_load_i8_zext_vgpr_offset_0x7FFFFF(ptr addrspace(1) %s
 ; GFX1250-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX1250-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1250-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:8388607
+; GFX1250-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:8388607
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -9971,7 +9971,7 @@ define <4 x float> @global_load_i8_zext_vgpr_offset_0x7FFFFF(ptr addrspace(1) %s
 ; GFX12-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_alu depctr_va_vcc(0)
 ; GFX12-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:8388607
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:8388607
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
   %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 %zext.offset
@@ -10105,7 +10105,7 @@ define <4 x float> @global_load_i8_zext_vgpr_offset_0xFFFFFF(ptr addrspace(1) %s
 ; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0xff800000, v0
 ; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo
-; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off glc
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -10116,7 +10116,7 @@ define <4 x float> @global_load_i8_zext_vgpr_offset_0xFFFFFF(ptr addrspace(1) %s
 ; GFX1250-SDAG-NEXT:    v_mov_b32_e32 v3, 0
 ; GFX1250-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1250-SDAG-NEXT:    v_add_nc_u64_e32 v[0:1], v[0:1], v[2:3]
-; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-8388608
+; GFX1250-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:-8388608
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -10130,7 +10130,7 @@ define <4 x float> @global_load_i8_zext_vgpr_offset_0xFFFFFF(ptr addrspace(1) %s
 ; GFX12-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)
 ; GFX12-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-8388608 scope:SCOPE_SE
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:-8388608 scope:SCOPE_SE
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -10259,7 +10259,7 @@ define <4 x float> @global_load_i8_zext_vgpr_offset_0xFFFFFF(ptr addrspace(1) %s
 ; GFX11-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0xff800000, v0
 ; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo
-; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off glc
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -10270,7 +10270,7 @@ define <4 x float> @global_load_i8_zext_vgpr_offset_0xFFFFFF(ptr addrspace(1) %s
 ; GFX1250-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX1250-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1250-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-8388608
+; GFX1250-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:-8388608
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -10284,7 +10284,7 @@ define <4 x float> @global_load_i8_zext_vgpr_offset_0xFFFFFF(ptr addrspace(1) %s
 ; GFX12-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_alu depctr_va_vcc(0)
 ; GFX12-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-8388608 scope:SCOPE_SE
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:-8388608 scope:SCOPE_SE
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
   %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 %zext.offset
@@ -10399,7 +10399,7 @@ define <4 x float> @global_load_i8_zext_vgpr_offset_4095_gep_order(ptr addrspace
 ; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:4095 glc
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:4095 glc
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -10410,7 +10410,7 @@ define <4 x float> @global_load_i8_zext_vgpr_offset_4095_gep_order(ptr addrspace
 ; GFX1250-SDAG-NEXT:    v_mov_b32_e32 v3, 0
 ; GFX1250-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1250-SDAG-NEXT:    v_add_nc_u64_e32 v[0:1], v[0:1], v[2:3]
-; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:4095 scope:SCOPE_DEV
+; GFX1250-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:4095 scope:SCOPE_DEV
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -10424,7 +10424,7 @@ define <4 x float> @global_load_i8_zext_vgpr_offset_4095_gep_order(ptr addrspace
 ; GFX12-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)
 ; GFX12-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:4095 scope:SCOPE_DEV
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:4095 scope:SCOPE_DEV
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -10533,7 +10533,7 @@ define <4 x float> @global_load_i8_zext_vgpr_offset_4095_gep_order(ptr addrspace
 ; GFX11-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:4095 glc
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:4095 glc
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -10544,7 +10544,7 @@ define <4 x float> @global_load_i8_zext_vgpr_offset_4095_gep_order(ptr addrspace
 ; GFX1250-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX1250-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1250-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:4095 scope:SCOPE_DEV
+; GFX1250-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:4095 scope:SCOPE_DEV
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -10558,7 +10558,7 @@ define <4 x float> @global_load_i8_zext_vgpr_offset_4095_gep_order(ptr addrspace
 ; GFX12-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_alu depctr_va_vcc(0)
 ; GFX12-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:4095 scope:SCOPE_DEV
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:4095 scope:SCOPE_DEV
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
   %zext.offset = zext i32 %voffset to i64
@@ -10667,7 +10667,7 @@ define <4 x float> @global_load_i8_zext_vgpr_ptrtoint(ptr addrspace(1) %sbase, i
 ; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off glc
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -10678,7 +10678,7 @@ define <4 x float> @global_load_i8_zext_vgpr_ptrtoint(ptr addrspace(1) %sbase, i
 ; GFX1250-SDAG-NEXT:    v_mov_b32_e32 v3, 0
 ; GFX1250-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1250-SDAG-NEXT:    v_add_nc_u64_e32 v[0:1], v[0:1], v[2:3]
-; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SYS
+; GFX1250-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SYS
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -10692,7 +10692,7 @@ define <4 x float> @global_load_i8_zext_vgpr_ptrtoint(ptr addrspace(1) %sbase, i
 ; GFX12-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)
 ; GFX12-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SYS
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SYS
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -10795,7 +10795,7 @@ define <4 x float> @global_load_i8_zext_vgpr_ptrtoint(ptr addrspace(1) %sbase, i
 ; GFX11-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off glc
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -10806,7 +10806,7 @@ define <4 x float> @global_load_i8_zext_vgpr_ptrtoint(ptr addrspace(1) %sbase, i
 ; GFX1250-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX1250-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1250-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SYS
+; GFX1250-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SYS
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -10820,7 +10820,7 @@ define <4 x float> @global_load_i8_zext_vgpr_ptrtoint(ptr addrspace(1) %sbase, i
 ; GFX12-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_alu depctr_va_vcc(0)
 ; GFX12-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SYS
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SYS
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
   %zext.offset = zext i32 %voffset to i64
@@ -10930,7 +10930,7 @@ define <4 x float> @global_load_i8_zext_vgpr_ptrtoint_commute_add(ptr addrspace(
 ; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v2, v0
 ; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -10941,7 +10941,7 @@ define <4 x float> @global_load_i8_zext_vgpr_ptrtoint_commute_add(ptr addrspace(
 ; GFX1250-SDAG-NEXT:    v_mov_b32_e32 v3, 0
 ; GFX1250-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1250-SDAG-NEXT:    v_add_nc_u64_e32 v[0:1], v[2:3], v[0:1]
-; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX1250-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -10955,7 +10955,7 @@ define <4 x float> @global_load_i8_zext_vgpr_ptrtoint_commute_add(ptr addrspace(
 ; GFX12-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v2, v0
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)
 ; GFX12-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -11058,7 +11058,7 @@ define <4 x float> @global_load_i8_zext_vgpr_ptrtoint_commute_add(ptr addrspace(
 ; GFX11-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -11069,7 +11069,7 @@ define <4 x float> @global_load_i8_zext_vgpr_ptrtoint_commute_add(ptr addrspace(
 ; GFX1250-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX1250-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1250-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX1250-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -11083,7 +11083,7 @@ define <4 x float> @global_load_i8_zext_vgpr_ptrtoint_commute_add(ptr addrspace(
 ; GFX12-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_alu depctr_va_vcc(0)
 ; GFX12-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
   %zext.offset = zext i32 %voffset to i64
@@ -11193,7 +11193,7 @@ define <4 x float> @global_load_i8_zext_vgpr_ptrtoint_commute_add_imm_offset0(pt
 ; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v2, v0
 ; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:128 glc
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:128 glc
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -11204,7 +11204,7 @@ define <4 x float> @global_load_i8_zext_vgpr_ptrtoint_commute_add_imm_offset0(pt
 ; GFX1250-SDAG-NEXT:    v_mov_b32_e32 v3, 0
 ; GFX1250-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1250-SDAG-NEXT:    v_add_nc_u64_e32 v[0:1], v[2:3], v[0:1]
-; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:128
+; GFX1250-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:128
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -11218,7 +11218,7 @@ define <4 x float> @global_load_i8_zext_vgpr_ptrtoint_commute_add_imm_offset0(pt
 ; GFX12-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v2, v0
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)
 ; GFX12-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:128 scope:SCOPE_SE
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:128 scope:SCOPE_SE
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -11321,7 +11321,7 @@ define <4 x float> @global_load_i8_zext_vgpr_ptrtoint_commute_add_imm_offset0(pt
 ; GFX11-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:128 glc
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:128 glc
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -11332,7 +11332,7 @@ define <4 x float> @global_load_i8_zext_vgpr_ptrtoint_commute_add_imm_offset0(pt
 ; GFX1250-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX1250-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1250-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:128
+; GFX1250-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:128
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -11346,7 +11346,7 @@ define <4 x float> @global_load_i8_zext_vgpr_ptrtoint_commute_add_imm_offset0(pt
 ; GFX12-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_alu depctr_va_vcc(0)
 ; GFX12-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:128 scope:SCOPE_SE
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:128 scope:SCOPE_SE
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
   %zext.offset = zext i32 %voffset to i64
@@ -11457,7 +11457,7 @@ define <4 x float> @global_load_i8_zext_vgpr_ptrtoint_commute_add_imm_offset1(pt
 ; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:128 glc
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:128 glc
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -11468,7 +11468,7 @@ define <4 x float> @global_load_i8_zext_vgpr_ptrtoint_commute_add_imm_offset1(pt
 ; GFX1250-SDAG-NEXT:    v_mov_b32_e32 v3, 0
 ; GFX1250-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1250-SDAG-NEXT:    v_add_nc_u64_e32 v[0:1], v[0:1], v[2:3]
-; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:128 scope:SCOPE_DEV
+; GFX1250-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:128 scope:SCOPE_DEV
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -11482,7 +11482,7 @@ define <4 x float> @global_load_i8_zext_vgpr_ptrtoint_commute_add_imm_offset1(pt
 ; GFX12-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)
 ; GFX12-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:128 scope:SCOPE_DEV
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:128 scope:SCOPE_DEV
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -11585,7 +11585,7 @@ define <4 x float> @global_load_i8_zext_vgpr_ptrtoint_commute_add_imm_offset1(pt
 ; GFX11-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:128 glc
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:128 glc
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -11596,7 +11596,7 @@ define <4 x float> @global_load_i8_zext_vgpr_ptrtoint_commute_add_imm_offset1(pt
 ; GFX1250-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX1250-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1250-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:128 scope:SCOPE_DEV
+; GFX1250-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:128 scope:SCOPE_DEV
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -11610,7 +11610,7 @@ define <4 x float> @global_load_i8_zext_vgpr_ptrtoint_commute_add_imm_offset1(pt
 ; GFX12-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_alu depctr_va_vcc(0)
 ; GFX12-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:128 scope:SCOPE_DEV
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:128 scope:SCOPE_DEV
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
   %zext.offset = zext i32 %voffset to i64
@@ -11725,7 +11725,7 @@ define <4 x float> @global_load_i8_zext_uniform_offset(ptr addrspace(1) %sbase,
 ; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off glc
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -11736,7 +11736,7 @@ define <4 x float> @global_load_i8_zext_uniform_offset(ptr addrspace(1) %sbase,
 ; GFX1250-SDAG-NEXT:    v_mov_b32_e32 v3, 0
 ; GFX1250-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1250-SDAG-NEXT:    v_add_nc_u64_e32 v[0:1], v[0:1], v[2:3]
-; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SYS
+; GFX1250-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SYS
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -11750,7 +11750,7 @@ define <4 x float> @global_load_i8_zext_uniform_offset(ptr addrspace(1) %sbase,
 ; GFX12-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)
 ; GFX12-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SYS
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SYS
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -11853,7 +11853,7 @@ define <4 x float> @global_load_i8_zext_uniform_offset(ptr addrspace(1) %sbase,
 ; GFX11-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off glc
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -11864,7 +11864,7 @@ define <4 x float> @global_load_i8_zext_uniform_offset(ptr addrspace(1) %sbase,
 ; GFX1250-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX1250-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1250-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SYS
+; GFX1250-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SYS
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -11878,7 +11878,7 @@ define <4 x float> @global_load_i8_zext_uniform_offset(ptr addrspace(1) %sbase,
 ; GFX12-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_alu depctr_va_vcc(0)
 ; GFX12-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SYS
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SYS
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
   %zext.offset = zext i32 %soffset to i64
@@ -11986,7 +11986,7 @@ define <4 x float> @global_load_i8_zext_uniform_offset_immoffset(ptr addrspace(1
 ; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-24
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:-24
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -11997,7 +11997,7 @@ define <4 x float> @global_load_i8_zext_uniform_offset_immoffset(ptr addrspace(1
 ; GFX1250-SDAG-NEXT:    v_mov_b32_e32 v3, 0
 ; GFX1250-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1250-SDAG-NEXT:    v_add_nc_u64_e32 v[0:1], v[0:1], v[2:3]
-; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-24
+; GFX1250-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:-24
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -12011,7 +12011,7 @@ define <4 x float> @global_load_i8_zext_uniform_offset_immoffset(ptr addrspace(1
 ; GFX12-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)
 ; GFX12-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-24
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:-24
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -12114,7 +12114,7 @@ define <4 x float> @global_load_i8_zext_uniform_offset_immoffset(ptr addrspace(1
 ; GFX11-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-24
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:-24
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -12125,7 +12125,7 @@ define <4 x float> @global_load_i8_zext_uniform_offset_immoffset(ptr addrspace(1
 ; GFX1250-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX1250-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1250-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-24
+; GFX1250-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:-24
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -12139,7 +12139,7 @@ define <4 x float> @global_load_i8_zext_uniform_offset_immoffset(ptr addrspace(1
 ; GFX12-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_alu depctr_va_vcc(0)
 ; GFX12-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-24
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:-24
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
   %zext.offset = zext i32 %soffset to i64
@@ -12248,7 +12248,7 @@ define <4 x float> @global_load_i8_zext_sgpr_ptrtoint_commute_add(ptr addrspace(
 ; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v2, v0
 ; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off glc
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -12259,7 +12259,7 @@ define <4 x float> @global_load_i8_zext_sgpr_ptrtoint_commute_add(ptr addrspace(
 ; GFX1250-SDAG-NEXT:    v_mov_b32_e32 v3, 0
 ; GFX1250-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1250-SDAG-NEXT:    v_add_nc_u64_e32 v[0:1], v[2:3], v[0:1]
-; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX1250-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -12273,7 +12273,7 @@ define <4 x float> @global_load_i8_zext_sgpr_ptrtoint_commute_add(ptr addrspace(
 ; GFX12-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v2, v0
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)
 ; GFX12-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SE
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SE
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -12376,7 +12376,7 @@ define <4 x float> @global_load_i8_zext_sgpr_ptrtoint_commute_add(ptr addrspace(
 ; GFX11-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off glc
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -12387,7 +12387,7 @@ define <4 x float> @global_load_i8_zext_sgpr_ptrtoint_commute_add(ptr addrspace(
 ; GFX1250-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX1250-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1250-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX1250-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -12401,7 +12401,7 @@ define <4 x float> @global_load_i8_zext_sgpr_ptrtoint_commute_add(ptr addrspace(
 ; GFX12-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_alu depctr_va_vcc(0)
 ; GFX12-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SE
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SE
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
   %zext.offset = zext i32 %soffset to i64
@@ -12511,7 +12511,7 @@ define <4 x float> @global_load_i8_zext_sgpr_ptrtoint_commute_add_imm_offset0(pt
 ; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v2, v0
 ; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:128 glc
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:128 glc
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -12522,7 +12522,7 @@ define <4 x float> @global_load_i8_zext_sgpr_ptrtoint_commute_add_imm_offset0(pt
 ; GFX1250-SDAG-NEXT:    v_mov_b32_e32 v3, 0
 ; GFX1250-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1250-SDAG-NEXT:    v_add_nc_u64_e32 v[0:1], v[2:3], v[0:1]
-; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:128 scope:SCOPE_DEV
+; GFX1250-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:128 scope:SCOPE_DEV
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -12536,7 +12536,7 @@ define <4 x float> @global_load_i8_zext_sgpr_ptrtoint_commute_add_imm_offset0(pt
 ; GFX12-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v2, v0
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)
 ; GFX12-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:128 scope:SCOPE_DEV
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:128 scope:SCOPE_DEV
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -12639,7 +12639,7 @@ define <4 x float> @global_load_i8_zext_sgpr_ptrtoint_commute_add_imm_offset0(pt
 ; GFX11-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:128 glc
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:128 glc
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -12650,7 +12650,7 @@ define <4 x float> @global_load_i8_zext_sgpr_ptrtoint_commute_add_imm_offset0(pt
 ; GFX1250-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX1250-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1250-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:128 scope:SCOPE_DEV
+; GFX1250-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:128 scope:SCOPE_DEV
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -12664,7 +12664,7 @@ define <4 x float> @global_load_i8_zext_sgpr_ptrtoint_commute_add_imm_offset0(pt
 ; GFX12-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_alu depctr_va_vcc(0)
 ; GFX12-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:128 scope:SCOPE_DEV
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:128 scope:SCOPE_DEV
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
   %zext.offset = zext i32 %soffset to i64
@@ -12775,7 +12775,7 @@ define <4 x float> @global_load_i8_vgpr64_sgpr32(ptr addrspace(1) %vbase, i32 %s
 ; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off glc
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -12786,7 +12786,7 @@ define <4 x float> @global_load_i8_vgpr64_sgpr32(ptr addrspace(1) %vbase, i32 %s
 ; GFX1250-SDAG-NEXT:    v_mov_b32_e32 v3, 0
 ; GFX1250-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1250-SDAG-NEXT:    v_add_nc_u64_e32 v[0:1], v[0:1], v[2:3]
-; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SYS
+; GFX1250-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SYS
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -12800,7 +12800,7 @@ define <4 x float> @global_load_i8_vgpr64_sgpr32(ptr addrspace(1) %vbase, i32 %s
 ; GFX12-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)
 ; GFX12-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SYS
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SYS
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -12903,7 +12903,7 @@ define <4 x float> @global_load_i8_vgpr64_sgpr32(ptr addrspace(1) %vbase, i32 %s
 ; GFX11-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off glc
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -12914,7 +12914,7 @@ define <4 x float> @global_load_i8_vgpr64_sgpr32(ptr addrspace(1) %vbase, i32 %s
 ; GFX1250-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX1250-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1250-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SYS
+; GFX1250-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SYS
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -12928,7 +12928,7 @@ define <4 x float> @global_load_i8_vgpr64_sgpr32(ptr addrspace(1) %vbase, i32 %s
 ; GFX12-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_alu depctr_va_vcc(0)
 ; GFX12-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SYS
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SYS
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
   %zext.offset = zext i32 %soffset to i64
@@ -13042,7 +13042,7 @@ define <4 x float> @global_load_i8_vgpr64_sgpr32_offset_4095(ptr addrspace(1) %v
 ; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:4095
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:4095
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -13053,7 +13053,7 @@ define <4 x float> @global_load_i8_vgpr64_sgpr32_offset_4095(ptr addrspace(1) %v
 ; GFX1250-SDAG-NEXT:    v_mov_b32_e32 v3, 0
 ; GFX1250-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1250-SDAG-NEXT:    v_add_nc_u64_e32 v[0:1], v[0:1], v[2:3]
-; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:4095
+; GFX1250-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:4095
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -13067,7 +13067,7 @@ define <4 x float> @global_load_i8_vgpr64_sgpr32_offset_4095(ptr addrspace(1) %v
 ; GFX12-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)
 ; GFX12-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:4095
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:4095
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -13176,7 +13176,7 @@ define <4 x float> @global_load_i8_vgpr64_sgpr32_offset_4095(ptr addrspace(1) %v
 ; GFX11-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:4095
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:4095
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -13187,7 +13187,7 @@ define <4 x float> @global_load_i8_vgpr64_sgpr32_offset_4095(ptr addrspace(1) %v
 ; GFX1250-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX1250-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1250-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:4095
+; GFX1250-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:4095
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -13201,7 +13201,7 @@ define <4 x float> @global_load_i8_vgpr64_sgpr32_offset_4095(ptr addrspace(1) %v
 ; GFX12-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_alu depctr_va_vcc(0)
 ; GFX12-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:4095
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:4095
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
   %zext.offset = zext i32 %soffset to i64
@@ -13353,7 +13353,7 @@ define <4 x float> @global_load_f32_natural_addressing(ptr addrspace(1) %sbase,
 ; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, v1, v3, vcc_lo
-; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off glc
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -13367,7 +13367,7 @@ define <4 x float> @global_load_f32_natural_addressing(ptr addrspace(1) %sbase,
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1250-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[2:3], 2, v[0:1]
-; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX1250-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -13387,7 +13387,7 @@ define <4 x float> @global_load_f32_natural_addressing(ptr addrspace(1) %sbase,
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)
 ; GFX12-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_2)
 ; GFX12-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, v1, v3, vcc_lo
-; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SE
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SE
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -13526,7 +13526,7 @@ define <4 x float> @global_load_f32_natural_addressing(ptr addrspace(1) %sbase,
 ; GFX11-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, v1, v3, vcc_lo
-; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off glc
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -13540,7 +13540,7 @@ define <4 x float> @global_load_f32_natural_addressing(ptr addrspace(1) %sbase,
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1250-ISEL-NEXT:    v_lshl_add_u64 v[0:1], v[2:3], 2, v[0:1]
-; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX1250-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -13560,7 +13560,7 @@ define <4 x float> @global_load_f32_natural_addressing(ptr addrspace(1) %sbase,
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_alu depctr_va_vcc(0)
 ; GFX12-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_2)
 ; GFX12-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, v1, v3, vcc_lo
-; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SE
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SE
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
   %voffset = load i32, ptr addrspace(1) %voffset.ptr
@@ -13691,7 +13691,7 @@ define <4 x float> @global_load_f32_natural_addressing_immoffset(ptr addrspace(1
 ; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:128 glc
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:128 glc
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -13705,7 +13705,7 @@ define <4 x float> @global_load_f32_natural_addressing_immoffset(ptr addrspace(1
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1250-SDAG-NEXT:    v_add_nc_u64_e32 v[0:1], v[0:1], v[2:3]
-; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:128 scope:SCOPE_DEV
+; GFX1250-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:128 scope:SCOPE_DEV
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -13721,7 +13721,7 @@ define <4 x float> @global_load_f32_natural_addressing_immoffset(ptr addrspace(1
 ; GFX12-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)
 ; GFX12-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:128 scope:SCOPE_DEV
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:128 scope:SCOPE_DEV
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -13846,7 +13846,7 @@ define <4 x float> @global_load_f32_natural_addressing_immoffset(ptr addrspace(1
 ; GFX11-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:128 glc
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:128 glc
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -13859,7 +13859,7 @@ define <4 x float> @global_load_f32_natural_addressing_immoffset(ptr addrspace(1
 ; GFX1250-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX1250-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1250-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:128 scope:SCOPE_DEV
+; GFX1250-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:128 scope:SCOPE_DEV
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -13875,7 +13875,7 @@ define <4 x float> @global_load_f32_natural_addressing_immoffset(ptr addrspace(1
 ; GFX12-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_alu depctr_va_vcc(0)
 ; GFX12-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:128 scope:SCOPE_DEV
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:128 scope:SCOPE_DEV
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
   %voffset = load i32, ptr addrspace(1) %voffset.ptr
@@ -14018,7 +14018,7 @@ define <4 x float> @global_load_f32_zext_vgpr_range(ptr addrspace(1) %sbase, ptr
 ; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off glc
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -14032,7 +14032,7 @@ define <4 x float> @global_load_f32_zext_vgpr_range(ptr addrspace(1) %sbase, ptr
 ; GFX1250-SDAG-NEXT:    v_dual_mov_b32 v3, 0 :: v_dual_lshlrev_b32 v2, 2, v2
 ; GFX1250-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1250-SDAG-NEXT:    v_add_nc_u64_e32 v[0:1], v[0:1], v[2:3]
-; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SYS
+; GFX1250-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SYS
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -14050,7 +14050,7 @@ define <4 x float> @global_load_f32_zext_vgpr_range(ptr addrspace(1) %sbase, ptr
 ; GFX12-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)
 ; GFX12-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SYS
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SYS
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -14186,7 +14186,7 @@ define <4 x float> @global_load_f32_zext_vgpr_range(ptr addrspace(1) %sbase, ptr
 ; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX11-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX11-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off glc
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -14201,7 +14201,7 @@ define <4 x float> @global_load_f32_zext_vgpr_range(ptr addrspace(1) %sbase, ptr
 ; GFX1250-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX1250-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX1250-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SYS
+; GFX1250-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SYS
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -14219,7 +14219,7 @@ define <4 x float> @global_load_f32_zext_vgpr_range(ptr addrspace(1) %sbase, ptr
 ; GFX12-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_alu depctr_va_vcc(0)
 ; GFX12-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SYS
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SYS
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
   %voffset = load i32, ptr addrspace(1) %voffset.ptr, !range !4, !noundef !{}
@@ -14361,7 +14361,7 @@ define <4 x float> @global_load_f32_zext_vgpr_range_imm_offset(ptr addrspace(1)
 ; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:400
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:400
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -14375,7 +14375,7 @@ define <4 x float> @global_load_f32_zext_vgpr_range_imm_offset(ptr addrspace(1)
 ; GFX1250-SDAG-NEXT:    v_dual_mov_b32 v3, 0 :: v_dual_lshlrev_b32 v2, 2, v2
 ; GFX1250-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1250-SDAG-NEXT:    v_add_nc_u64_e32 v[0:1], v[0:1], v[2:3]
-; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:400
+; GFX1250-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:400
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -14393,7 +14393,7 @@ define <4 x float> @global_load_f32_zext_vgpr_range_imm_offset(ptr addrspace(1)
 ; GFX12-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)
 ; GFX12-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:400
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:400
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -14529,7 +14529,7 @@ define <4 x float> @global_load_f32_zext_vgpr_range_imm_offset(ptr addrspace(1)
 ; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX11-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX11-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:400
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:400
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -14544,7 +14544,7 @@ define <4 x float> @global_load_f32_zext_vgpr_range_imm_offset(ptr addrspace(1)
 ; GFX1250-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX1250-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX1250-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:400
+; GFX1250-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:400
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -14562,7 +14562,7 @@ define <4 x float> @global_load_f32_zext_vgpr_range_imm_offset(ptr addrspace(1)
 ; GFX12-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_alu depctr_va_vcc(0)
 ; GFX12-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:400
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:400
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
   %voffset = load i32, ptr addrspace(1) %voffset.ptr, !range !4, !noundef !{}
@@ -14711,7 +14711,7 @@ define <4 x float> @global_load_f32_zext_vgpr_range_too_large(ptr addrspace(1) %
 ; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, v1, v3, vcc_lo
-; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off glc
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -14725,7 +14725,7 @@ define <4 x float> @global_load_f32_zext_vgpr_range_too_large(ptr addrspace(1) %
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1250-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[2:3], 2, v[0:1]
-; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX1250-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -14745,7 +14745,7 @@ define <4 x float> @global_load_f32_zext_vgpr_range_too_large(ptr addrspace(1) %
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)
 ; GFX12-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_2)
 ; GFX12-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, v1, v3, vcc_lo
-; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SE
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SE
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -14884,7 +14884,7 @@ define <4 x float> @global_load_f32_zext_vgpr_range_too_large(ptr addrspace(1) %
 ; GFX11-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, v1, v3, vcc_lo
-; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off glc
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -14898,7 +14898,7 @@ define <4 x float> @global_load_f32_zext_vgpr_range_too_large(ptr addrspace(1) %
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1250-ISEL-NEXT:    v_lshl_add_u64 v[0:1], v[2:3], 2, v[0:1]
-; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX1250-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -14918,7 +14918,7 @@ define <4 x float> @global_load_f32_zext_vgpr_range_too_large(ptr addrspace(1) %
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_alu depctr_va_vcc(0)
 ; GFX12-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_2)
 ; GFX12-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, v1, v3, vcc_lo
-; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SE
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SE
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
   %voffset = load i32, ptr addrspace(1) %voffset.ptr, !range !5, !noundef !{}
@@ -15030,7 +15030,7 @@ define <4 x float> @global_load_i8_offset_or_i64_imm_offset_16(ptr addrspace(6)
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v2, 0
 ; GFX11-GENERIC-SDAG-NEXT:    v_or_b32_e32 v1, 16, v1
-; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[1:2], off glc
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[1:2], off glc
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -15039,7 +15039,7 @@ define <4 x float> @global_load_i8_offset_or_i64_imm_offset_16(ptr addrspace(6)
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
 ; GFX1250-SDAG-NEXT:    v_dual_mov_b32 v3, 0 :: v_dual_bitop2_b32 v2, 16, v1 bitop3:0x54
-; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[2:3], off scope:SCOPE_DEV
+; GFX1250-SDAG-NEXT:    global_load_b128 v[0:3], v[2:3], off scope:SCOPE_DEV
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -15052,7 +15052,7 @@ define <4 x float> @global_load_i8_offset_or_i64_imm_offset_16(ptr addrspace(6)
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v2, 0
 ; GFX12-GENERIC-SDAG-NEXT:    v_or_b32_e32 v1, 16, v1
-; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[1:2], off scope:SCOPE_DEV
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[1:2], off scope:SCOPE_DEV
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -15151,7 +15151,7 @@ define <4 x float> @global_load_i8_offset_or_i64_imm_offset_16(ptr addrspace(6)
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v2, 0
 ; GFX11-GENERIC-ISEL-NEXT:    v_or_b32_e32 v1, 16, v1
-; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[1:2], off glc
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[1:2], off glc
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -15160,7 +15160,7 @@ define <4 x float> @global_load_i8_offset_or_i64_imm_offset_16(ptr addrspace(6)
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
 ; GFX1250-ISEL-NEXT:    v_dual_mov_b32 v3, 0 :: v_dual_bitop2_b32 v2, 16, v1 bitop3:0x54
-; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[2:3], off scope:SCOPE_DEV
+; GFX1250-ISEL-NEXT:    global_load_b128 v[0:3], v[2:3], off scope:SCOPE_DEV
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -15173,7 +15173,7 @@ define <4 x float> @global_load_i8_offset_or_i64_imm_offset_16(ptr addrspace(6)
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v2, 0
 ; GFX12-GENERIC-ISEL-NEXT:    v_or_b32_e32 v1, 16, v1
-; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[1:2], off scope:SCOPE_DEV
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[1:2], off scope:SCOPE_DEV
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
   %zext.idx = zext i32 %idx to i64
@@ -15280,7 +15280,7 @@ define <4 x float> @global_load_i8_offset_or_i64_imm_offset_4160(ptr addrspace(6
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v2, 0
 ; GFX11-GENERIC-SDAG-NEXT:    v_or_b32_e32 v1, 0x1040, v1
-; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[1:2], off glc
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[1:2], off glc
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -15290,7 +15290,7 @@ define <4 x float> @global_load_i8_offset_or_i64_imm_offset_4160(ptr addrspace(6
 ; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
 ; GFX1250-SDAG-NEXT:    v_mov_b32_e32 v3, 0
 ; GFX1250-SDAG-NEXT:    v_or_b32_e32 v2, 0x1040, v1
-; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[2:3], off scope:SCOPE_SYS
+; GFX1250-SDAG-NEXT:    global_load_b128 v[0:3], v[2:3], off scope:SCOPE_SYS
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -15303,7 +15303,7 @@ define <4 x float> @global_load_i8_offset_or_i64_imm_offset_4160(ptr addrspace(6
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v2, 0
 ; GFX12-GENERIC-SDAG-NEXT:    v_or_b32_e32 v1, 0x1040, v1
-; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[1:2], off scope:SCOPE_SYS
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[1:2], off scope:SCOPE_SYS
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -15402,7 +15402,7 @@ define <4 x float> @global_load_i8_offset_or_i64_imm_offset_4160(ptr addrspace(6
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v2, 0
 ; GFX11-GENERIC-ISEL-NEXT:    v_or_b32_e32 v1, 0x1040, v1
-; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[1:2], off glc
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[1:2], off glc
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -15412,7 +15412,7 @@ define <4 x float> @global_load_i8_offset_or_i64_imm_offset_4160(ptr addrspace(6
 ; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
 ; GFX1250-ISEL-NEXT:    v_mov_b32_e32 v3, 0
 ; GFX1250-ISEL-NEXT:    v_or_b32_e32 v2, 0x1040, v1
-; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[2:3], off scope:SCOPE_SYS
+; GFX1250-ISEL-NEXT:    global_load_b128 v[0:3], v[2:3], off scope:SCOPE_SYS
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -15425,7 +15425,7 @@ define <4 x float> @global_load_i8_offset_or_i64_imm_offset_4160(ptr addrspace(6
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v2, 0
 ; GFX12-GENERIC-ISEL-NEXT:    v_or_b32_e32 v1, 0x1040, v1
-; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[1:2], off scope:SCOPE_SYS
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[1:2], off scope:SCOPE_SYS
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
   %zext.idx = zext i32 %idx to i64
@@ -15635,7 +15635,7 @@ define <4 x float> @global_addr_64bit_lsr_iv(ptr addrspace(1) %arg) {
 ; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, s0
 ; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, s1, v1, vcc_lo
-; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -15654,7 +15654,7 @@ define <4 x float> @global_addr_64bit_lsr_iv(ptr addrspace(1) %arg) {
 ; GFX1250-SDAG-NEXT:    s_mov_b32 s1, 0
 ; GFX1250-SDAG-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX1250-SDAG-NEXT:    v_lshl_add_u64 v[0:1], s[0:1], 2, v[0:1]
-; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX1250-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -15681,7 +15681,7 @@ define <4 x float> @global_addr_64bit_lsr_iv(ptr addrspace(1) %arg) {
 ; GFX12-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, s0
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)
 ; GFX12-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, s1, v1, vcc_lo
-; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -15895,7 +15895,7 @@ define <4 x float> @global_addr_64bit_lsr_iv(ptr addrspace(1) %arg) {
 ; GFX11-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, v1, v3, vcc_lo
-; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -15916,7 +15916,7 @@ define <4 x float> @global_addr_64bit_lsr_iv(ptr addrspace(1) %arg) {
 ; GFX1250-ISEL-NEXT:    v_mov_b32_e32 v3, 0
 ; GFX1250-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1250-ISEL-NEXT:    v_lshl_add_u64 v[0:1], v[2:3], 2, v[0:1]
-; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX1250-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -15944,7 +15944,7 @@ define <4 x float> @global_addr_64bit_lsr_iv(ptr addrspace(1) %arg) {
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_alu depctr_va_vcc(0)
 ; GFX12-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_2)
 ; GFX12-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, v1, v3, vcc_lo
-; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 bb:
@@ -16162,7 +16162,7 @@ define <4 x float> @global_addr_64bit_lsr_iv_multiload(ptr addrspace(1) %arg, pt
 ; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, s0
 ; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, s1, v1, vcc_lo
-; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off glc
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -16181,7 +16181,7 @@ define <4 x float> @global_addr_64bit_lsr_iv_multiload(ptr addrspace(1) %arg, pt
 ; GFX1250-SDAG-NEXT:    s_mov_b32 s1, 0
 ; GFX1250-SDAG-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX1250-SDAG-NEXT:    v_lshl_add_u64 v[0:1], s[0:1], 2, v[0:1]
-; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX1250-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -16208,7 +16208,7 @@ define <4 x float> @global_addr_64bit_lsr_iv_multiload(ptr addrspace(1) %arg, pt
 ; GFX12-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, s0
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)
 ; GFX12-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, s1, v1, vcc_lo
-; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SE
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SE
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -16422,7 +16422,7 @@ define <4 x float> @global_addr_64bit_lsr_iv_multiload(ptr addrspace(1) %arg, pt
 ; GFX11-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, v1, v3, vcc_lo
-; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off glc
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -16443,7 +16443,7 @@ define <4 x float> @global_addr_64bit_lsr_iv_multiload(ptr addrspace(1) %arg, pt
 ; GFX1250-ISEL-NEXT:    v_mov_b32_e32 v3, 0
 ; GFX1250-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1250-ISEL-NEXT:    v_lshl_add_u64 v[0:1], v[2:3], 2, v[0:1]
-; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX1250-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -16471,7 +16471,7 @@ define <4 x float> @global_addr_64bit_lsr_iv_multiload(ptr addrspace(1) %arg, pt
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_alu depctr_va_vcc(0)
 ; GFX12-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_2)
 ; GFX12-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, v1, v3, vcc_lo
-; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SE
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SE
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 bb:
@@ -16598,7 +16598,7 @@ define <4 x float> @global_load_saddr_i8_offset_0(ptr addrspace(1) inreg %sbase)
 ; GFX11-GENERIC-SDAG:       ; %bb.0:
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
-; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] glc
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1] glc
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -16607,7 +16607,7 @@ define <4 x float> @global_load_saddr_i8_offset_0(ptr addrspace(1) inreg %sbase)
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
 ; GFX1250-SDAG-NEXT:    v_mov_b32_e32 v0, 0
-; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] scope:SCOPE_SYS
+; GFX1250-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1] scope:SCOPE_SYS
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -16619,7 +16619,7 @@ define <4 x float> @global_load_saddr_i8_offset_0(ptr addrspace(1) inreg %sbase)
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
-; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] scope:SCOPE_SYS
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1] scope:SCOPE_SYS
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -16707,7 +16707,7 @@ define <4 x float> @global_load_saddr_i8_offset_0(ptr addrspace(1) inreg %sbase)
 ; GFX11-GENERIC-ISEL:       ; %bb.0:
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0
-; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] glc
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v0, s[0:1] glc
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -16716,7 +16716,7 @@ define <4 x float> @global_load_saddr_i8_offset_0(ptr addrspace(1) inreg %sbase)
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
 ; GFX1250-ISEL-NEXT:    v_mov_b32_e32 v0, 0
-; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] scope:SCOPE_SYS
+; GFX1250-ISEL-NEXT:    global_load_b128 v[0:3], v0, s[0:1] scope:SCOPE_SYS
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -16728,7 +16728,7 @@ define <4 x float> @global_load_saddr_i8_offset_0(ptr addrspace(1) inreg %sbase)
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0
-; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] scope:SCOPE_SYS
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v0, s[0:1] scope:SCOPE_SYS
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
   %load = call <4 x i32> @llvm.amdgcn.av.global.load.b128(ptr addrspace(1) %sbase, metadata !3)
@@ -16822,7 +16822,7 @@ define <4 x float> @global_load_saddr_i8_offset_4095(ptr addrspace(1) inreg %sba
 ; GFX11-GENERIC-SDAG:       ; %bb.0:
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
-; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:4095
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:4095
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -16831,7 +16831,7 @@ define <4 x float> @global_load_saddr_i8_offset_4095(ptr addrspace(1) inreg %sba
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
 ; GFX1250-SDAG-NEXT:    v_mov_b32_e32 v0, 0
-; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:4095
+; GFX1250-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:4095
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -16843,7 +16843,7 @@ define <4 x float> @global_load_saddr_i8_offset_4095(ptr addrspace(1) inreg %sba
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
-; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:4095
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:4095
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -16931,7 +16931,7 @@ define <4 x float> @global_load_saddr_i8_offset_4095(ptr addrspace(1) inreg %sba
 ; GFX11-GENERIC-ISEL:       ; %bb.0:
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0
-; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:4095
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:4095
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -16940,7 +16940,7 @@ define <4 x float> @global_load_saddr_i8_offset_4095(ptr addrspace(1) inreg %sba
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
 ; GFX1250-ISEL-NEXT:    v_mov_b32_e32 v0, 0
-; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:4095
+; GFX1250-ISEL-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:4095
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -16952,7 +16952,7 @@ define <4 x float> @global_load_saddr_i8_offset_4095(ptr addrspace(1) inreg %sba
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0
-; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:4095
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:4095
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
   %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 4095
@@ -17047,7 +17047,7 @@ define <4 x float> @global_load_saddr_i8_offset_4096(ptr addrspace(1) inreg %sba
 ; GFX11-GENERIC-SDAG:       ; %bb.0:
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0x1000
-; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] glc
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1] glc
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -17056,7 +17056,7 @@ define <4 x float> @global_load_saddr_i8_offset_4096(ptr addrspace(1) inreg %sba
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
 ; GFX1250-SDAG-NEXT:    v_mov_b32_e32 v0, 0
-; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:4096
+; GFX1250-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:4096
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -17068,7 +17068,7 @@ define <4 x float> @global_load_saddr_i8_offset_4096(ptr addrspace(1) inreg %sba
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
-; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:4096 scope:SCOPE_SE
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:4096 scope:SCOPE_SE
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -17156,7 +17156,7 @@ define <4 x float> @global_load_saddr_i8_offset_4096(ptr addrspace(1) inreg %sba
 ; GFX11-GENERIC-ISEL:       ; %bb.0:
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0x1000
-; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] glc
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v0, s[0:1] glc
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -17165,7 +17165,7 @@ define <4 x float> @global_load_saddr_i8_offset_4096(ptr addrspace(1) inreg %sba
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
 ; GFX1250-ISEL-NEXT:    v_mov_b32_e32 v0, 0
-; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:4096
+; GFX1250-ISEL-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:4096
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -17177,7 +17177,7 @@ define <4 x float> @global_load_saddr_i8_offset_4096(ptr addrspace(1) inreg %sba
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0
-; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:4096 scope:SCOPE_SE
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:4096 scope:SCOPE_SE
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
   %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 4096
@@ -17272,7 +17272,7 @@ define <4 x float> @global_load_saddr_i8_offset_4097(ptr addrspace(1) inreg %sba
 ; GFX11-GENERIC-SDAG:       ; %bb.0:
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0x1000
-; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:1 glc
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:1 glc
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -17281,7 +17281,7 @@ define <4 x float> @global_load_saddr_i8_offset_4097(ptr addrspace(1) inreg %sba
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
 ; GFX1250-SDAG-NEXT:    v_mov_b32_e32 v0, 0
-; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:4097 scope:SCOPE_DEV
+; GFX1250-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:4097 scope:SCOPE_DEV
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -17293,7 +17293,7 @@ define <4 x float> @global_load_saddr_i8_offset_4097(ptr addrspace(1) inreg %sba
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
-; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:4097 scope:SCOPE_DEV
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:4097 scope:SCOPE_DEV
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -17381,7 +17381,7 @@ define <4 x float> @global_load_saddr_i8_offset_4097(ptr addrspace(1) inreg %sba
 ; GFX11-GENERIC-ISEL:       ; %bb.0:
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0x1000
-; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:1 glc
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:1 glc
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -17390,7 +17390,7 @@ define <4 x float> @global_load_saddr_i8_offset_4097(ptr addrspace(1) inreg %sba
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
 ; GFX1250-ISEL-NEXT:    v_mov_b32_e32 v0, 0
-; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:4097 scope:SCOPE_DEV
+; GFX1250-ISEL-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:4097 scope:SCOPE_DEV
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -17402,7 +17402,7 @@ define <4 x float> @global_load_saddr_i8_offset_4097(ptr addrspace(1) inreg %sba
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0
-; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:4097 scope:SCOPE_DEV
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:4097 scope:SCOPE_DEV
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
   %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 4097
@@ -17500,7 +17500,7 @@ define <4 x float> @global_load_saddr_i8_offset_neg4096(ptr addrspace(1) inreg %
 ; GFX11-GENERIC-SDAG:       ; %bb.0:
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
-; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-4096 glc
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:-4096 glc
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -17509,7 +17509,7 @@ define <4 x float> @global_load_saddr_i8_offset_neg4096(ptr addrspace(1) inreg %
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
 ; GFX1250-SDAG-NEXT:    v_mov_b32_e32 v0, 0
-; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-4096 scope:SCOPE_SYS
+; GFX1250-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:-4096 scope:SCOPE_SYS
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -17521,7 +17521,7 @@ define <4 x float> @global_load_saddr_i8_offset_neg4096(ptr addrspace(1) inreg %
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
-; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-4096 scope:SCOPE_SYS
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:-4096 scope:SCOPE_SYS
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -17618,7 +17618,7 @@ define <4 x float> @global_load_saddr_i8_offset_neg4096(ptr addrspace(1) inreg %
 ; GFX11-GENERIC-ISEL:       ; %bb.0:
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0
-; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-4096 glc
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:-4096 glc
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -17627,7 +17627,7 @@ define <4 x float> @global_load_saddr_i8_offset_neg4096(ptr addrspace(1) inreg %
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
 ; GFX1250-ISEL-NEXT:    v_mov_b32_e32 v0, 0
-; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-4096 scope:SCOPE_SYS
+; GFX1250-ISEL-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:-4096 scope:SCOPE_SYS
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -17639,7 +17639,7 @@ define <4 x float> @global_load_saddr_i8_offset_neg4096(ptr addrspace(1) inreg %
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0
-; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-4096 scope:SCOPE_SYS
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:-4096 scope:SCOPE_SYS
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
   %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 -4096
@@ -17753,7 +17753,7 @@ define <4 x float> @global_load_saddr_i8_offset_neg4097(ptr addrspace(1) inreg %
 ; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, s0, 0xfffff000, s0
 ; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, s1, s0
-; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-1
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:-1
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -17762,7 +17762,7 @@ define <4 x float> @global_load_saddr_i8_offset_neg4097(ptr addrspace(1) inreg %
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
 ; GFX1250-SDAG-NEXT:    v_mov_b32_e32 v0, 0
-; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-4097
+; GFX1250-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:-4097
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -17774,7 +17774,7 @@ define <4 x float> @global_load_saddr_i8_offset_neg4097(ptr addrspace(1) inreg %
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
-; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-4097
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:-4097
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -17888,7 +17888,7 @@ define <4 x float> @global_load_saddr_i8_offset_neg4097(ptr addrspace(1) inreg %
 ; GFX11-GENERIC-ISEL-NEXT:    s_addc_u32 s1, s1, -1
 ; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-GENERIC-ISEL-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
-; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -17897,7 +17897,7 @@ define <4 x float> @global_load_saddr_i8_offset_neg4097(ptr addrspace(1) inreg %
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
 ; GFX1250-ISEL-NEXT:    v_mov_b32_e32 v0, 0
-; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-4097
+; GFX1250-ISEL-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:-4097
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -17909,7 +17909,7 @@ define <4 x float> @global_load_saddr_i8_offset_neg4097(ptr addrspace(1) inreg %
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0
-; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-4097
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:-4097
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
   %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 -4097
@@ -18023,7 +18023,7 @@ define <4 x float> @global_load_saddr_i8_offset_neg4098(ptr addrspace(1) inreg %
 ; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, s0, 0xfffff000, s0
 ; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, s1, s0
-; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-2 glc
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:-2 glc
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -18032,7 +18032,7 @@ define <4 x float> @global_load_saddr_i8_offset_neg4098(ptr addrspace(1) inreg %
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
 ; GFX1250-SDAG-NEXT:    v_mov_b32_e32 v0, 0
-; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-4098
+; GFX1250-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:-4098
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -18044,7 +18044,7 @@ define <4 x float> @global_load_saddr_i8_offset_neg4098(ptr addrspace(1) inreg %
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
-; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-4098 scope:SCOPE_SE
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:-4098 scope:SCOPE_SE
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -18158,7 +18158,7 @@ define <4 x float> @global_load_saddr_i8_offset_neg4098(ptr addrspace(1) inreg %
 ; GFX11-GENERIC-ISEL-NEXT:    s_addc_u32 s1, s1, -1
 ; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-GENERIC-ISEL-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
-; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off glc
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -18167,7 +18167,7 @@ define <4 x float> @global_load_saddr_i8_offset_neg4098(ptr addrspace(1) inreg %
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
 ; GFX1250-ISEL-NEXT:    v_mov_b32_e32 v0, 0
-; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-4098
+; GFX1250-ISEL-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:-4098
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -18179,7 +18179,7 @@ define <4 x float> @global_load_saddr_i8_offset_neg4098(ptr addrspace(1) inreg %
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0
-; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-4098 scope:SCOPE_SE
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:-4098 scope:SCOPE_SE
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
   %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 -4098
@@ -18274,7 +18274,7 @@ define <4 x float> @global_load_saddr_i8_offset_2048(ptr addrspace(1) inreg %sba
 ; GFX11-GENERIC-SDAG:       ; %bb.0:
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
-; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:2048 glc
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:2048 glc
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -18283,7 +18283,7 @@ define <4 x float> @global_load_saddr_i8_offset_2048(ptr addrspace(1) inreg %sba
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
 ; GFX1250-SDAG-NEXT:    v_mov_b32_e32 v0, 0
-; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:2048 scope:SCOPE_DEV
+; GFX1250-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:2048 scope:SCOPE_DEV
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -18295,7 +18295,7 @@ define <4 x float> @global_load_saddr_i8_offset_2048(ptr addrspace(1) inreg %sba
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
-; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:2048 scope:SCOPE_DEV
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:2048 scope:SCOPE_DEV
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -18383,7 +18383,7 @@ define <4 x float> @global_load_saddr_i8_offset_2048(ptr addrspace(1) inreg %sba
 ; GFX11-GENERIC-ISEL:       ; %bb.0:
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0
-; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:2048 glc
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:2048 glc
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -18392,7 +18392,7 @@ define <4 x float> @global_load_saddr_i8_offset_2048(ptr addrspace(1) inreg %sba
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
 ; GFX1250-ISEL-NEXT:    v_mov_b32_e32 v0, 0
-; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:2048 scope:SCOPE_DEV
+; GFX1250-ISEL-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:2048 scope:SCOPE_DEV
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -18404,7 +18404,7 @@ define <4 x float> @global_load_saddr_i8_offset_2048(ptr addrspace(1) inreg %sba
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0
-; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:2048 scope:SCOPE_DEV
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:2048 scope:SCOPE_DEV
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
   %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 2048
@@ -18499,7 +18499,7 @@ define <4 x float> @global_load_saddr_i8_offset_2049(ptr addrspace(1) inreg %sba
 ; GFX11-GENERIC-SDAG:       ; %bb.0:
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
-; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:2049 glc
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:2049 glc
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -18508,7 +18508,7 @@ define <4 x float> @global_load_saddr_i8_offset_2049(ptr addrspace(1) inreg %sba
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
 ; GFX1250-SDAG-NEXT:    v_mov_b32_e32 v0, 0
-; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:2049 scope:SCOPE_SYS
+; GFX1250-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:2049 scope:SCOPE_SYS
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -18520,7 +18520,7 @@ define <4 x float> @global_load_saddr_i8_offset_2049(ptr addrspace(1) inreg %sba
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
-; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:2049 scope:SCOPE_SYS
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:2049 scope:SCOPE_SYS
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -18608,7 +18608,7 @@ define <4 x float> @global_load_saddr_i8_offset_2049(ptr addrspace(1) inreg %sba
 ; GFX11-GENERIC-ISEL:       ; %bb.0:
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0
-; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:2049 glc
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:2049 glc
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -18617,7 +18617,7 @@ define <4 x float> @global_load_saddr_i8_offset_2049(ptr addrspace(1) inreg %sba
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
 ; GFX1250-ISEL-NEXT:    v_mov_b32_e32 v0, 0
-; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:2049 scope:SCOPE_SYS
+; GFX1250-ISEL-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:2049 scope:SCOPE_SYS
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -18629,7 +18629,7 @@ define <4 x float> @global_load_saddr_i8_offset_2049(ptr addrspace(1) inreg %sba
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0
-; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:2049 scope:SCOPE_SYS
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:2049 scope:SCOPE_SYS
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
   %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 2049
@@ -18724,7 +18724,7 @@ define <4 x float> @global_load_saddr_i8_offset_2050(ptr addrspace(1) inreg %sba
 ; GFX11-GENERIC-SDAG:       ; %bb.0:
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
-; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:2050
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:2050
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -18733,7 +18733,7 @@ define <4 x float> @global_load_saddr_i8_offset_2050(ptr addrspace(1) inreg %sba
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
 ; GFX1250-SDAG-NEXT:    v_mov_b32_e32 v0, 0
-; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:2050
+; GFX1250-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:2050
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -18745,7 +18745,7 @@ define <4 x float> @global_load_saddr_i8_offset_2050(ptr addrspace(1) inreg %sba
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
-; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:2050
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:2050
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -18833,7 +18833,7 @@ define <4 x float> @global_load_saddr_i8_offset_2050(ptr addrspace(1) inreg %sba
 ; GFX11-GENERIC-ISEL:       ; %bb.0:
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0
-; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:2050
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:2050
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -18842,7 +18842,7 @@ define <4 x float> @global_load_saddr_i8_offset_2050(ptr addrspace(1) inreg %sba
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
 ; GFX1250-ISEL-NEXT:    v_mov_b32_e32 v0, 0
-; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:2050
+; GFX1250-ISEL-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:2050
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -18854,7 +18854,7 @@ define <4 x float> @global_load_saddr_i8_offset_2050(ptr addrspace(1) inreg %sba
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0
-; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:2050
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:2050
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
   %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 2050
@@ -18949,7 +18949,7 @@ define <4 x float> @global_load_saddr_i8_offset_neg2048(ptr addrspace(1) inreg %
 ; GFX11-GENERIC-SDAG:       ; %bb.0:
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
-; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-2048 glc
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:-2048 glc
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -18958,7 +18958,7 @@ define <4 x float> @global_load_saddr_i8_offset_neg2048(ptr addrspace(1) inreg %
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
 ; GFX1250-SDAG-NEXT:    v_mov_b32_e32 v0, 0
-; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-2048
+; GFX1250-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:-2048
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -18970,7 +18970,7 @@ define <4 x float> @global_load_saddr_i8_offset_neg2048(ptr addrspace(1) inreg %
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
-; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-2048 scope:SCOPE_SE
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:-2048 scope:SCOPE_SE
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -19058,7 +19058,7 @@ define <4 x float> @global_load_saddr_i8_offset_neg2048(ptr addrspace(1) inreg %
 ; GFX11-GENERIC-ISEL:       ; %bb.0:
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0
-; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-2048 glc
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:-2048 glc
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -19067,7 +19067,7 @@ define <4 x float> @global_load_saddr_i8_offset_neg2048(ptr addrspace(1) inreg %
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
 ; GFX1250-ISEL-NEXT:    v_mov_b32_e32 v0, 0
-; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-2048
+; GFX1250-ISEL-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:-2048
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -19079,7 +19079,7 @@ define <4 x float> @global_load_saddr_i8_offset_neg2048(ptr addrspace(1) inreg %
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0
-; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-2048 scope:SCOPE_SE
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:-2048 scope:SCOPE_SE
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
   %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 -2048
@@ -19177,7 +19177,7 @@ define <4 x float> @global_load_saddr_i8_offset_neg2049(ptr addrspace(1) inreg %
 ; GFX11-GENERIC-SDAG:       ; %bb.0:
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
-; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-2049 glc
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:-2049 glc
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -19186,7 +19186,7 @@ define <4 x float> @global_load_saddr_i8_offset_neg2049(ptr addrspace(1) inreg %
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
 ; GFX1250-SDAG-NEXT:    v_mov_b32_e32 v0, 0
-; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-2049 scope:SCOPE_DEV
+; GFX1250-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:-2049 scope:SCOPE_DEV
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -19198,7 +19198,7 @@ define <4 x float> @global_load_saddr_i8_offset_neg2049(ptr addrspace(1) inreg %
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
-; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-2049 scope:SCOPE_DEV
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:-2049 scope:SCOPE_DEV
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -19295,7 +19295,7 @@ define <4 x float> @global_load_saddr_i8_offset_neg2049(ptr addrspace(1) inreg %
 ; GFX11-GENERIC-ISEL:       ; %bb.0:
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0
-; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-2049 glc
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:-2049 glc
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -19304,7 +19304,7 @@ define <4 x float> @global_load_saddr_i8_offset_neg2049(ptr addrspace(1) inreg %
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
 ; GFX1250-ISEL-NEXT:    v_mov_b32_e32 v0, 0
-; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-2049 scope:SCOPE_DEV
+; GFX1250-ISEL-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:-2049 scope:SCOPE_DEV
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -19316,7 +19316,7 @@ define <4 x float> @global_load_saddr_i8_offset_neg2049(ptr addrspace(1) inreg %
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0
-; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-2049 scope:SCOPE_DEV
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:-2049 scope:SCOPE_DEV
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
   %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 -2049
@@ -19414,7 +19414,7 @@ define <4 x float> @global_load_saddr_i8_offset_neg2050(ptr addrspace(1) inreg %
 ; GFX11-GENERIC-SDAG:       ; %bb.0:
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
-; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-2050 glc
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:-2050 glc
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -19423,7 +19423,7 @@ define <4 x float> @global_load_saddr_i8_offset_neg2050(ptr addrspace(1) inreg %
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
 ; GFX1250-SDAG-NEXT:    v_mov_b32_e32 v0, 0
-; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-2050 scope:SCOPE_SYS
+; GFX1250-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:-2050 scope:SCOPE_SYS
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -19435,7 +19435,7 @@ define <4 x float> @global_load_saddr_i8_offset_neg2050(ptr addrspace(1) inreg %
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
-; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-2050 scope:SCOPE_SYS
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:-2050 scope:SCOPE_SYS
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -19532,7 +19532,7 @@ define <4 x float> @global_load_saddr_i8_offset_neg2050(ptr addrspace(1) inreg %
 ; GFX11-GENERIC-ISEL:       ; %bb.0:
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0
-; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-2050 glc
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:-2050 glc
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -19541,7 +19541,7 @@ define <4 x float> @global_load_saddr_i8_offset_neg2050(ptr addrspace(1) inreg %
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
 ; GFX1250-ISEL-NEXT:    v_mov_b32_e32 v0, 0
-; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-2050 scope:SCOPE_SYS
+; GFX1250-ISEL-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:-2050 scope:SCOPE_SYS
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -19553,7 +19553,7 @@ define <4 x float> @global_load_saddr_i8_offset_neg2050(ptr addrspace(1) inreg %
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0
-; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-2050 scope:SCOPE_SYS
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:-2050 scope:SCOPE_SYS
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
   %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 -2050
@@ -19647,7 +19647,7 @@ define <4 x float> @global_load_saddr_i8_offset_0x7FFFFF(ptr addrspace(1) inreg
 ; GFX11-GENERIC-SDAG:       ; %bb.0:
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0x7ff000
-; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:4095
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:4095
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -19656,7 +19656,7 @@ define <4 x float> @global_load_saddr_i8_offset_0x7FFFFF(ptr addrspace(1) inreg
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
 ; GFX1250-SDAG-NEXT:    v_mov_b32_e32 v0, 0
-; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:8388607
+; GFX1250-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:8388607
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -19668,7 +19668,7 @@ define <4 x float> @global_load_saddr_i8_offset_0x7FFFFF(ptr addrspace(1) inreg
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
-; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:8388607
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:8388607
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -19756,7 +19756,7 @@ define <4 x float> @global_load_saddr_i8_offset_0x7FFFFF(ptr addrspace(1) inreg
 ; GFX11-GENERIC-ISEL:       ; %bb.0:
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0x7ff000
-; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:4095
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:4095
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -19765,7 +19765,7 @@ define <4 x float> @global_load_saddr_i8_offset_0x7FFFFF(ptr addrspace(1) inreg
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
 ; GFX1250-ISEL-NEXT:    v_mov_b32_e32 v0, 0
-; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:8388607
+; GFX1250-ISEL-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:8388607
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -19777,7 +19777,7 @@ define <4 x float> @global_load_saddr_i8_offset_0x7FFFFF(ptr addrspace(1) inreg
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0
-; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:8388607
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:8388607
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
   %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 8388607
@@ -19890,7 +19890,7 @@ define <4 x float> @global_load_saddr_i8_offset_0xFFFFFF(ptr addrspace(1) inreg
 ; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, s0, 0xff800000, s0
 ; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, s1, s0
-; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off glc
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -19899,7 +19899,7 @@ define <4 x float> @global_load_saddr_i8_offset_0xFFFFFF(ptr addrspace(1) inreg
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
 ; GFX1250-SDAG-NEXT:    v_mov_b32_e32 v0, 0
-; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-8388608
+; GFX1250-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:-8388608
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -19911,7 +19911,7 @@ define <4 x float> @global_load_saddr_i8_offset_0xFFFFFF(ptr addrspace(1) inreg
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
-; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-8388608 scope:SCOPE_SE
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:-8388608 scope:SCOPE_SE
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -20025,7 +20025,7 @@ define <4 x float> @global_load_saddr_i8_offset_0xFFFFFF(ptr addrspace(1) inreg
 ; GFX11-GENERIC-ISEL-NEXT:    s_addc_u32 s1, s1, -1
 ; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-GENERIC-ISEL-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
-; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off glc
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -20034,7 +20034,7 @@ define <4 x float> @global_load_saddr_i8_offset_0xFFFFFF(ptr addrspace(1) inreg
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
 ; GFX1250-ISEL-NEXT:    v_mov_b32_e32 v0, 0
-; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-8388608
+; GFX1250-ISEL-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:-8388608
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -20046,7 +20046,7 @@ define <4 x float> @global_load_saddr_i8_offset_0xFFFFFF(ptr addrspace(1) inreg
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0
-; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-8388608 scope:SCOPE_SE
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:-8388608 scope:SCOPE_SE
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
   %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 -8388608
@@ -20140,7 +20140,7 @@ define <4 x float> @global_load_saddr_i8_offset_0xFFFFFFFF(ptr addrspace(1) inre
 ; GFX11-GENERIC-SDAG:       ; %bb.0:
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0xfffff000
-; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:4095 glc
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:4095 glc
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -20151,7 +20151,7 @@ define <4 x float> @global_load_saddr_i8_offset_0xFFFFFFFF(ptr addrspace(1) inre
 ; GFX1250-SDAG-NEXT:    v_add_co_u32 v0, s0, 0xff800000, s0
 ; GFX1250-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1250-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, s1, s0
-; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:8388607 scope:SCOPE_DEV
+; GFX1250-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:8388607 scope:SCOPE_DEV
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -20163,7 +20163,7 @@ define <4 x float> @global_load_saddr_i8_offset_0xFFFFFFFF(ptr addrspace(1) inre
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0xff800000
-; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:8388607 scope:SCOPE_DEV
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:8388607 scope:SCOPE_DEV
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -20251,7 +20251,7 @@ define <4 x float> @global_load_saddr_i8_offset_0xFFFFFFFF(ptr addrspace(1) inre
 ; GFX11-GENERIC-ISEL:       ; %bb.0:
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0xfffff000
-; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:4095 glc
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:4095 glc
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -20263,7 +20263,7 @@ define <4 x float> @global_load_saddr_i8_offset_0xFFFFFFFF(ptr addrspace(1) inre
 ; GFX1250-ISEL-NEXT:    s_add_co_ci_u32 s1, s1, 0
 ; GFX1250-ISEL-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX1250-ISEL-NEXT:    v_mov_b64_e32 v[0:1], s[0:1]
-; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_DEV
+; GFX1250-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off scope:SCOPE_DEV
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -20275,7 +20275,7 @@ define <4 x float> @global_load_saddr_i8_offset_0xFFFFFFFF(ptr addrspace(1) inre
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, 0xff800000
-; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:8388607 scope:SCOPE_DEV
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:8388607 scope:SCOPE_DEV
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
   %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 4294967295
@@ -20380,7 +20380,7 @@ define <4 x float> @global_load_saddr_i8_offset_0x100000000(ptr addrspace(1) inr
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
 ; GFX11-GENERIC-SDAG-NEXT:    s_add_i32 s1, s1, 1
-; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] glc
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1] glc
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -20390,7 +20390,7 @@ define <4 x float> @global_load_saddr_i8_offset_0x100000000(ptr addrspace(1) inr
 ; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
 ; GFX1250-SDAG-NEXT:    v_mov_b32_e32 v0, 0
 ; GFX1250-SDAG-NEXT:    s_add_co_i32 s1, s1, 1
-; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] scope:SCOPE_SYS
+; GFX1250-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1] scope:SCOPE_SYS
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -20403,7 +20403,7 @@ define <4 x float> @global_load_saddr_i8_offset_0x100000000(ptr addrspace(1) inr
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
 ; GFX12-GENERIC-SDAG-NEXT:    s_add_co_i32 s1, s1, 1
-; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] scope:SCOPE_SYS
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1] scope:SCOPE_SYS
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_alu depctr_sa_sdst(0)
 ; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
@@ -20521,7 +20521,7 @@ define <4 x float> @global_load_saddr_i8_offset_0x100000000(ptr addrspace(1) inr
 ; GFX11-GENERIC-ISEL-NEXT:    s_addc_u32 s1, s1, 1
 ; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-GENERIC-ISEL-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
-; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off glc
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -20533,7 +20533,7 @@ define <4 x float> @global_load_saddr_i8_offset_0x100000000(ptr addrspace(1) inr
 ; GFX1250-ISEL-NEXT:    s_add_co_ci_u32 s1, s1, 1
 ; GFX1250-ISEL-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX1250-ISEL-NEXT:    v_mov_b64_e32 v[0:1], s[0:1]
-; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SYS
+; GFX1250-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SYS
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -20548,7 +20548,7 @@ define <4 x float> @global_load_saddr_i8_offset_0x100000000(ptr addrspace(1) inr
 ; GFX12-GENERIC-ISEL-NEXT:    s_add_co_ci_u32 s1, s1, 1
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_alu depctr_sa_sdst(0)
 ; GFX12-GENERIC-ISEL-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
-; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SYS
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SYS
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
   %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 4294967296
@@ -20664,7 +20664,7 @@ define <4 x float> @global_load_saddr_i8_offset_0x100000001(ptr addrspace(1) inr
 ; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, s0, 0, s0
 ; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 1, s1, s0
-; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:1
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:1
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -20675,7 +20675,7 @@ define <4 x float> @global_load_saddr_i8_offset_0x100000001(ptr addrspace(1) inr
 ; GFX1250-SDAG-NEXT:    v_add_co_u32 v0, s0, 0, s0
 ; GFX1250-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1250-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 1, s1, s0
-; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:1
+; GFX1250-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:1
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -20689,7 +20689,7 @@ define <4 x float> @global_load_saddr_i8_offset_0x100000001(ptr addrspace(1) inr
 ; GFX12-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, s0, 0, s0
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_alu depctr_va_sdst(0)
 ; GFX12-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 1, s1, s0
-; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:1
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:1
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -20806,7 +20806,7 @@ define <4 x float> @global_load_saddr_i8_offset_0x100000001(ptr addrspace(1) inr
 ; GFX11-GENERIC-ISEL-NEXT:    s_addc_u32 s1, s1, 1
 ; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-GENERIC-ISEL-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
-; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -20818,7 +20818,7 @@ define <4 x float> @global_load_saddr_i8_offset_0x100000001(ptr addrspace(1) inr
 ; GFX1250-ISEL-NEXT:    s_add_co_ci_u32 s1, s1, 1
 ; GFX1250-ISEL-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX1250-ISEL-NEXT:    v_mov_b64_e32 v[0:1], s[0:1]
-; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX1250-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -20833,7 +20833,7 @@ define <4 x float> @global_load_saddr_i8_offset_0x100000001(ptr addrspace(1) inr
 ; GFX12-GENERIC-ISEL-NEXT:    s_add_co_ci_u32 s1, s1, 1
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_alu depctr_sa_sdst(0)
 ; GFX12-GENERIC-ISEL-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
-; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
   %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 4294967297
@@ -20946,7 +20946,7 @@ define <4 x float> @global_load_saddr_i8_offset_0x100000FFF(ptr addrspace(1) inr
 ; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, s0, 0, s0
 ; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 1, s1, s0
-; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:4095 glc
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:4095 glc
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -20957,7 +20957,7 @@ define <4 x float> @global_load_saddr_i8_offset_0x100000FFF(ptr addrspace(1) inr
 ; GFX1250-SDAG-NEXT:    v_add_co_u32 v0, s0, 0, s0
 ; GFX1250-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1250-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 1, s1, s0
-; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:4095
+; GFX1250-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:4095
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -20971,7 +20971,7 @@ define <4 x float> @global_load_saddr_i8_offset_0x100000FFF(ptr addrspace(1) inr
 ; GFX12-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, s0, 0, s0
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_alu depctr_va_sdst(0)
 ; GFX12-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 1, s1, s0
-; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:4095 scope:SCOPE_SE
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:4095 scope:SCOPE_SE
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -21085,7 +21085,7 @@ define <4 x float> @global_load_saddr_i8_offset_0x100000FFF(ptr addrspace(1) inr
 ; GFX11-GENERIC-ISEL-NEXT:    s_addc_u32 s1, s1, 1
 ; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-GENERIC-ISEL-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
-; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off glc
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -21097,7 +21097,7 @@ define <4 x float> @global_load_saddr_i8_offset_0x100000FFF(ptr addrspace(1) inr
 ; GFX1250-ISEL-NEXT:    s_add_co_ci_u32 s1, s1, 1
 ; GFX1250-ISEL-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX1250-ISEL-NEXT:    v_mov_b64_e32 v[0:1], s[0:1]
-; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX1250-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -21112,7 +21112,7 @@ define <4 x float> @global_load_saddr_i8_offset_0x100000FFF(ptr addrspace(1) inr
 ; GFX12-GENERIC-ISEL-NEXT:    s_add_co_ci_u32 s1, s1, 1
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_alu depctr_sa_sdst(0)
 ; GFX12-GENERIC-ISEL-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
-; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SE
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SE
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
   %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 4294971391
@@ -21225,7 +21225,7 @@ define <4 x float> @global_load_saddr_i8_offset_0x100001000(ptr addrspace(1) inr
 ; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, s0, 0x1000, s0
 ; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 1, s1, s0
-; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off glc
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -21236,7 +21236,7 @@ define <4 x float> @global_load_saddr_i8_offset_0x100001000(ptr addrspace(1) inr
 ; GFX1250-SDAG-NEXT:    v_add_co_u32 v0, s0, 0, s0
 ; GFX1250-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1250-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 1, s1, s0
-; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:4096 scope:SCOPE_DEV
+; GFX1250-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:4096 scope:SCOPE_DEV
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -21250,7 +21250,7 @@ define <4 x float> @global_load_saddr_i8_offset_0x100001000(ptr addrspace(1) inr
 ; GFX12-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, s0, 0, s0
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_alu depctr_va_sdst(0)
 ; GFX12-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 1, s1, s0
-; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:4096 scope:SCOPE_DEV
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:4096 scope:SCOPE_DEV
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -21364,7 +21364,7 @@ define <4 x float> @global_load_saddr_i8_offset_0x100001000(ptr addrspace(1) inr
 ; GFX11-GENERIC-ISEL-NEXT:    s_addc_u32 s1, s1, 1
 ; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-GENERIC-ISEL-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
-; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off glc
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -21376,7 +21376,7 @@ define <4 x float> @global_load_saddr_i8_offset_0x100001000(ptr addrspace(1) inr
 ; GFX1250-ISEL-NEXT:    s_add_co_ci_u32 s1, s1, 1
 ; GFX1250-ISEL-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX1250-ISEL-NEXT:    v_mov_b64_e32 v[0:1], s[0:1]
-; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_DEV
+; GFX1250-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off scope:SCOPE_DEV
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -21391,7 +21391,7 @@ define <4 x float> @global_load_saddr_i8_offset_0x100001000(ptr addrspace(1) inr
 ; GFX12-GENERIC-ISEL-NEXT:    s_add_co_ci_u32 s1, s1, 1
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_alu depctr_sa_sdst(0)
 ; GFX12-GENERIC-ISEL-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
-; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_DEV
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off scope:SCOPE_DEV
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
   %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 4294971392
@@ -21514,7 +21514,7 @@ define <4 x float> @global_load_saddr_i8_offset_neg0xFFFFFFFF(ptr addrspace(1) i
 ; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, s0, 0x1000, s0
 ; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, s1, s0
-; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-4095 glc
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:-4095 glc
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -21525,7 +21525,7 @@ define <4 x float> @global_load_saddr_i8_offset_neg0xFFFFFFFF(ptr addrspace(1) i
 ; GFX1250-SDAG-NEXT:    v_add_co_u32 v0, s0, 0x800000, s0
 ; GFX1250-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1250-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, s1, s0
-; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-8388607 scope:SCOPE_SYS
+; GFX1250-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:-8388607 scope:SCOPE_SYS
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -21539,7 +21539,7 @@ define <4 x float> @global_load_saddr_i8_offset_neg0xFFFFFFFF(ptr addrspace(1) i
 ; GFX12-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, s0, 0x800000, s0
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_alu depctr_va_sdst(0)
 ; GFX12-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, s1, s0
-; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-8388607 scope:SCOPE_SYS
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:-8388607 scope:SCOPE_SYS
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -21656,7 +21656,7 @@ define <4 x float> @global_load_saddr_i8_offset_neg0xFFFFFFFF(ptr addrspace(1) i
 ; GFX11-GENERIC-ISEL-NEXT:    s_addc_u32 s1, s1, -1
 ; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-GENERIC-ISEL-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
-; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off glc
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -21668,7 +21668,7 @@ define <4 x float> @global_load_saddr_i8_offset_neg0xFFFFFFFF(ptr addrspace(1) i
 ; GFX1250-ISEL-NEXT:    s_add_co_ci_u32 s1, s1, -1
 ; GFX1250-ISEL-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX1250-ISEL-NEXT:    v_mov_b64_e32 v[0:1], s[0:1]
-; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SYS
+; GFX1250-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SYS
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -21683,7 +21683,7 @@ define <4 x float> @global_load_saddr_i8_offset_neg0xFFFFFFFF(ptr addrspace(1) i
 ; GFX12-GENERIC-ISEL-NEXT:    s_add_co_ci_u32 s1, s1, -1
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_alu depctr_sa_sdst(0)
 ; GFX12-GENERIC-ISEL-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
-; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SYS
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SYS
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
   %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 -4294967295
@@ -21788,7 +21788,7 @@ define <4 x float> @global_load_saddr_i8_offset_neg0x100000000(ptr addrspace(1)
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
 ; GFX11-GENERIC-SDAG-NEXT:    s_add_i32 s1, s1, -1
-; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1]
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1]
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -21798,7 +21798,7 @@ define <4 x float> @global_load_saddr_i8_offset_neg0x100000000(ptr addrspace(1)
 ; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
 ; GFX1250-SDAG-NEXT:    v_mov_b32_e32 v0, 0
 ; GFX1250-SDAG-NEXT:    s_add_co_i32 s1, s1, -1
-; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1]
+; GFX1250-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1]
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -21811,7 +21811,7 @@ define <4 x float> @global_load_saddr_i8_offset_neg0x100000000(ptr addrspace(1)
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, 0
 ; GFX12-GENERIC-SDAG-NEXT:    s_add_co_i32 s1, s1, -1
-; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1]
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1]
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_alu depctr_sa_sdst(0)
 ; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
@@ -21929,7 +21929,7 @@ define <4 x float> @global_load_saddr_i8_offset_neg0x100000000(ptr addrspace(1)
 ; GFX11-GENERIC-ISEL-NEXT:    s_addc_u32 s1, s1, -1
 ; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-GENERIC-ISEL-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
-; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -21941,7 +21941,7 @@ define <4 x float> @global_load_saddr_i8_offset_neg0x100000000(ptr addrspace(1)
 ; GFX1250-ISEL-NEXT:    s_add_co_ci_u32 s1, s1, -1
 ; GFX1250-ISEL-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX1250-ISEL-NEXT:    v_mov_b64_e32 v[0:1], s[0:1]
-; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX1250-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -21956,7 +21956,7 @@ define <4 x float> @global_load_saddr_i8_offset_neg0x100000000(ptr addrspace(1)
 ; GFX12-GENERIC-ISEL-NEXT:    s_add_co_ci_u32 s1, s1, -1
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_alu depctr_sa_sdst(0)
 ; GFX12-GENERIC-ISEL-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
-; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
   %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 -4294967296
@@ -22072,7 +22072,7 @@ define <4 x float> @global_load_saddr_i8_offset_neg0x100000001(ptr addrspace(1)
 ; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, s0, 0, s0
 ; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, s1, s0
-; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-1 glc
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:-1 glc
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -22083,7 +22083,7 @@ define <4 x float> @global_load_saddr_i8_offset_neg0x100000001(ptr addrspace(1)
 ; GFX1250-SDAG-NEXT:    v_add_co_u32 v0, s0, 0, s0
 ; GFX1250-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1250-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, s1, s0
-; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-1
+; GFX1250-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:-1
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -22097,7 +22097,7 @@ define <4 x float> @global_load_saddr_i8_offset_neg0x100000001(ptr addrspace(1)
 ; GFX12-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, s0, 0, s0
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_alu depctr_va_sdst(0)
 ; GFX12-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, s1, s0
-; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-1 scope:SCOPE_SE
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:-1 scope:SCOPE_SE
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -22214,7 +22214,7 @@ define <4 x float> @global_load_saddr_i8_offset_neg0x100000001(ptr addrspace(1)
 ; GFX11-GENERIC-ISEL-NEXT:    s_addc_u32 s1, s1, -2
 ; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-GENERIC-ISEL-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
-; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off glc
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -22226,7 +22226,7 @@ define <4 x float> @global_load_saddr_i8_offset_neg0x100000001(ptr addrspace(1)
 ; GFX1250-ISEL-NEXT:    s_add_co_ci_u32 s1, s1, -2
 ; GFX1250-ISEL-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX1250-ISEL-NEXT:    v_mov_b64_e32 v[0:1], s[0:1]
-; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX1250-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -22241,7 +22241,7 @@ define <4 x float> @global_load_saddr_i8_offset_neg0x100000001(ptr addrspace(1)
 ; GFX12-GENERIC-ISEL-NEXT:    s_add_co_ci_u32 s1, s1, -2
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_alu depctr_sa_sdst(0)
 ; GFX12-GENERIC-ISEL-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
-; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SE
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SE
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
   %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 -4294967297
@@ -22329,7 +22329,7 @@ define <4 x float> @global_load_saddr_i8_zext_vgpr(ptr addrspace(1) inreg %sbase
 ; GFX11-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_vgpr:
 ; GFX11-GENERIC-SDAG:       ; %bb.0:
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
-; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] glc
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1] glc
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -22337,7 +22337,7 @@ define <4 x float> @global_load_saddr_i8_zext_vgpr(ptr addrspace(1) inreg %sbase
 ; GFX1250-SDAG:       ; %bb.0:
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
-; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] scope:SCOPE_DEV
+; GFX1250-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1] scope:SCOPE_DEV
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -22348,7 +22348,7 @@ define <4 x float> @global_load_saddr_i8_zext_vgpr(ptr addrspace(1) inreg %sbase
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
-; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] scope:SCOPE_DEV
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1] scope:SCOPE_DEV
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -22425,7 +22425,7 @@ define <4 x float> @global_load_saddr_i8_zext_vgpr(ptr addrspace(1) inreg %sbase
 ; GFX11-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_vgpr:
 ; GFX11-GENERIC-ISEL:       ; %bb.0:
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
-; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] glc
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v0, s[0:1] glc
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -22433,7 +22433,7 @@ define <4 x float> @global_load_saddr_i8_zext_vgpr(ptr addrspace(1) inreg %sbase
 ; GFX1250-ISEL:       ; %bb.0:
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
-; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] scope:SCOPE_DEV
+; GFX1250-ISEL-NEXT:    global_load_b128 v[0:3], v0, s[0:1] scope:SCOPE_DEV
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -22444,7 +22444,7 @@ define <4 x float> @global_load_saddr_i8_zext_vgpr(ptr addrspace(1) inreg %sbase
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
-; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] scope:SCOPE_DEV
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v0, s[0:1] scope:SCOPE_DEV
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
   %zext.offset = zext i32 %voffset to i64
@@ -22541,7 +22541,7 @@ define <4 x float> @global_load_saddr_i8_zext_vgpr_offset_4095(ptr addrspace(1)
 ; GFX11-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_4095:
 ; GFX11-GENERIC-SDAG:       ; %bb.0:
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
-; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:4095 glc
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:4095 glc
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -22549,7 +22549,7 @@ define <4 x float> @global_load_saddr_i8_zext_vgpr_offset_4095(ptr addrspace(1)
 ; GFX1250-SDAG:       ; %bb.0:
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
-; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:4095 scope:SCOPE_SYS
+; GFX1250-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:4095 scope:SCOPE_SYS
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -22560,7 +22560,7 @@ define <4 x float> @global_load_saddr_i8_zext_vgpr_offset_4095(ptr addrspace(1)
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
-; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:4095 scope:SCOPE_SYS
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:4095 scope:SCOPE_SYS
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -22655,7 +22655,7 @@ define <4 x float> @global_load_saddr_i8_zext_vgpr_offset_4095(ptr addrspace(1)
 ; GFX11-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_4095:
 ; GFX11-GENERIC-ISEL:       ; %bb.0:
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
-; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:4095 glc
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:4095 glc
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -22663,7 +22663,7 @@ define <4 x float> @global_load_saddr_i8_zext_vgpr_offset_4095(ptr addrspace(1)
 ; GFX1250-ISEL:       ; %bb.0:
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
-; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:4095 scope:SCOPE_SYS
+; GFX1250-ISEL-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:4095 scope:SCOPE_SYS
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -22674,7 +22674,7 @@ define <4 x float> @global_load_saddr_i8_zext_vgpr_offset_4095(ptr addrspace(1)
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
-; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:4095 scope:SCOPE_SYS
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:4095 scope:SCOPE_SYS
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
   %zext.offset = zext i32 %voffset to i64
@@ -22813,7 +22813,7 @@ define <4 x float> @global_load_saddr_i8_zext_vgpr_offset_4096(ptr addrspace(1)
 ; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0x1000, v0
 ; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -22821,7 +22821,7 @@ define <4 x float> @global_load_saddr_i8_zext_vgpr_offset_4096(ptr addrspace(1)
 ; GFX1250-SDAG:       ; %bb.0:
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
-; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:4096
+; GFX1250-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:4096
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -22832,7 +22832,7 @@ define <4 x float> @global_load_saddr_i8_zext_vgpr_offset_4096(ptr addrspace(1)
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
-; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:4096
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:4096
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -22978,7 +22978,7 @@ define <4 x float> @global_load_saddr_i8_zext_vgpr_offset_4096(ptr addrspace(1)
 ; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX11-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0x1000, v0
 ; GFX11-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -22986,7 +22986,7 @@ define <4 x float> @global_load_saddr_i8_zext_vgpr_offset_4096(ptr addrspace(1)
 ; GFX1250-ISEL:       ; %bb.0:
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
-; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:4096
+; GFX1250-ISEL-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:4096
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -22997,7 +22997,7 @@ define <4 x float> @global_load_saddr_i8_zext_vgpr_offset_4096(ptr addrspace(1)
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
-; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:4096
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:4096
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
   %zext.offset = zext i32 %voffset to i64
@@ -23095,7 +23095,7 @@ define <4 x float> @global_load_saddr_i8_zext_vgpr_offset_neg4096(ptr addrspace(
 ; GFX11-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_neg4096:
 ; GFX11-GENERIC-SDAG:       ; %bb.0:
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
-; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-4096 glc
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:-4096 glc
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -23103,7 +23103,7 @@ define <4 x float> @global_load_saddr_i8_zext_vgpr_offset_neg4096(ptr addrspace(
 ; GFX1250-SDAG:       ; %bb.0:
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
-; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-4096
+; GFX1250-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:-4096
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -23114,7 +23114,7 @@ define <4 x float> @global_load_saddr_i8_zext_vgpr_offset_neg4096(ptr addrspace(
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
-; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-4096 scope:SCOPE_SE
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:-4096 scope:SCOPE_SE
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -23209,7 +23209,7 @@ define <4 x float> @global_load_saddr_i8_zext_vgpr_offset_neg4096(ptr addrspace(
 ; GFX11-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_neg4096:
 ; GFX11-GENERIC-ISEL:       ; %bb.0:
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
-; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-4096 glc
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:-4096 glc
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -23217,7 +23217,7 @@ define <4 x float> @global_load_saddr_i8_zext_vgpr_offset_neg4096(ptr addrspace(
 ; GFX1250-ISEL:       ; %bb.0:
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
-; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-4096
+; GFX1250-ISEL-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:-4096
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -23228,7 +23228,7 @@ define <4 x float> @global_load_saddr_i8_zext_vgpr_offset_neg4096(ptr addrspace(
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
-; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-4096 scope:SCOPE_SE
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:-4096 scope:SCOPE_SE
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
   %zext.offset = zext i32 %voffset to i64
@@ -23367,7 +23367,7 @@ define <4 x float> @global_load_saddr_i8_zext_vgpr_offset_neg4097(ptr addrspace(
 ; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0xfffff000, v0
 ; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo
-; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:-1 glc
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:-1 glc
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -23375,7 +23375,7 @@ define <4 x float> @global_load_saddr_i8_zext_vgpr_offset_neg4097(ptr addrspace(
 ; GFX1250-SDAG:       ; %bb.0:
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
-; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-4097 scope:SCOPE_DEV
+; GFX1250-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:-4097 scope:SCOPE_DEV
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -23386,7 +23386,7 @@ define <4 x float> @global_load_saddr_i8_zext_vgpr_offset_neg4097(ptr addrspace(
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
-; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-4097 scope:SCOPE_DEV
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:-4097 scope:SCOPE_DEV
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -23532,7 +23532,7 @@ define <4 x float> @global_load_saddr_i8_zext_vgpr_offset_neg4097(ptr addrspace(
 ; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX11-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0xffffefff, v0
 ; GFX11-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo
-; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off glc
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -23540,7 +23540,7 @@ define <4 x float> @global_load_saddr_i8_zext_vgpr_offset_neg4097(ptr addrspace(
 ; GFX1250-ISEL:       ; %bb.0:
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
-; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-4097 scope:SCOPE_DEV
+; GFX1250-ISEL-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:-4097 scope:SCOPE_DEV
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -23551,7 +23551,7 @@ define <4 x float> @global_load_saddr_i8_zext_vgpr_offset_neg4097(ptr addrspace(
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
-; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-4097 scope:SCOPE_DEV
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:-4097 scope:SCOPE_DEV
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
   %zext.offset = zext i32 %voffset to i64
@@ -23637,7 +23637,7 @@ define <4 x float> @global_load_saddr_i8_zext_vgpr_offset_2047(ptr addrspace(1)
 ; GFX11-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_2047:
 ; GFX11-GENERIC-SDAG:       ; %bb.0:
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
-; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:2047 glc
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:2047 glc
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -23645,7 +23645,7 @@ define <4 x float> @global_load_saddr_i8_zext_vgpr_offset_2047(ptr addrspace(1)
 ; GFX1250-SDAG:       ; %bb.0:
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
-; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:2047 scope:SCOPE_SYS
+; GFX1250-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:2047 scope:SCOPE_SYS
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -23656,7 +23656,7 @@ define <4 x float> @global_load_saddr_i8_zext_vgpr_offset_2047(ptr addrspace(1)
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
-; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:2047 scope:SCOPE_SYS
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:2047 scope:SCOPE_SYS
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -23733,7 +23733,7 @@ define <4 x float> @global_load_saddr_i8_zext_vgpr_offset_2047(ptr addrspace(1)
 ; GFX11-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_2047:
 ; GFX11-GENERIC-ISEL:       ; %bb.0:
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
-; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:2047 glc
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:2047 glc
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -23741,7 +23741,7 @@ define <4 x float> @global_load_saddr_i8_zext_vgpr_offset_2047(ptr addrspace(1)
 ; GFX1250-ISEL:       ; %bb.0:
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
-; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:2047 scope:SCOPE_SYS
+; GFX1250-ISEL-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:2047 scope:SCOPE_SYS
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -23752,7 +23752,7 @@ define <4 x float> @global_load_saddr_i8_zext_vgpr_offset_2047(ptr addrspace(1)
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
-; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:2047 scope:SCOPE_SYS
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:2047 scope:SCOPE_SYS
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
   %zext.offset = zext i32 %voffset to i64
@@ -23850,7 +23850,7 @@ define <4 x float> @global_load_saddr_i8_zext_vgpr_offset_2048(ptr addrspace(1)
 ; GFX11-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_2048:
 ; GFX11-GENERIC-SDAG:       ; %bb.0:
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
-; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:2048
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:2048
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -23858,7 +23858,7 @@ define <4 x float> @global_load_saddr_i8_zext_vgpr_offset_2048(ptr addrspace(1)
 ; GFX1250-SDAG:       ; %bb.0:
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
-; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:2048
+; GFX1250-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:2048
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -23869,7 +23869,7 @@ define <4 x float> @global_load_saddr_i8_zext_vgpr_offset_2048(ptr addrspace(1)
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
-; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:2048
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:2048
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -23964,7 +23964,7 @@ define <4 x float> @global_load_saddr_i8_zext_vgpr_offset_2048(ptr addrspace(1)
 ; GFX11-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_2048:
 ; GFX11-GENERIC-ISEL:       ; %bb.0:
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
-; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:2048
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:2048
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -23972,7 +23972,7 @@ define <4 x float> @global_load_saddr_i8_zext_vgpr_offset_2048(ptr addrspace(1)
 ; GFX1250-ISEL:       ; %bb.0:
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
-; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:2048
+; GFX1250-ISEL-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:2048
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -23983,7 +23983,7 @@ define <4 x float> @global_load_saddr_i8_zext_vgpr_offset_2048(ptr addrspace(1)
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
-; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:2048
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:2048
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
   %zext.offset = zext i32 %voffset to i64
@@ -24069,7 +24069,7 @@ define <4 x float> @global_load_saddr_i8_zext_vgpr_offset_neg2048(ptr addrspace(
 ; GFX11-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_neg2048:
 ; GFX11-GENERIC-SDAG:       ; %bb.0:
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
-; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-2048 glc
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:-2048 glc
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -24077,7 +24077,7 @@ define <4 x float> @global_load_saddr_i8_zext_vgpr_offset_neg2048(ptr addrspace(
 ; GFX1250-SDAG:       ; %bb.0:
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
-; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-2048
+; GFX1250-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:-2048
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -24088,7 +24088,7 @@ define <4 x float> @global_load_saddr_i8_zext_vgpr_offset_neg2048(ptr addrspace(
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
-; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-2048 scope:SCOPE_SE
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:-2048 scope:SCOPE_SE
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -24165,7 +24165,7 @@ define <4 x float> @global_load_saddr_i8_zext_vgpr_offset_neg2048(ptr addrspace(
 ; GFX11-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_neg2048:
 ; GFX11-GENERIC-ISEL:       ; %bb.0:
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
-; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-2048 glc
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:-2048 glc
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -24173,7 +24173,7 @@ define <4 x float> @global_load_saddr_i8_zext_vgpr_offset_neg2048(ptr addrspace(
 ; GFX1250-ISEL:       ; %bb.0:
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
-; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-2048
+; GFX1250-ISEL-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:-2048
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -24184,7 +24184,7 @@ define <4 x float> @global_load_saddr_i8_zext_vgpr_offset_neg2048(ptr addrspace(
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
-; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-2048 scope:SCOPE_SE
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:-2048 scope:SCOPE_SE
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
   %zext.offset = zext i32 %voffset to i64
@@ -24282,7 +24282,7 @@ define <4 x float> @global_load_saddr_i8_zext_vgpr_offset_neg2049(ptr addrspace(
 ; GFX11-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_neg2049:
 ; GFX11-GENERIC-SDAG:       ; %bb.0:
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
-; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-2049 glc
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:-2049 glc
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -24290,7 +24290,7 @@ define <4 x float> @global_load_saddr_i8_zext_vgpr_offset_neg2049(ptr addrspace(
 ; GFX1250-SDAG:       ; %bb.0:
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
-; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-2049 scope:SCOPE_DEV
+; GFX1250-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:-2049 scope:SCOPE_DEV
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -24301,7 +24301,7 @@ define <4 x float> @global_load_saddr_i8_zext_vgpr_offset_neg2049(ptr addrspace(
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
-; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-2049 scope:SCOPE_DEV
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:-2049 scope:SCOPE_DEV
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -24396,7 +24396,7 @@ define <4 x float> @global_load_saddr_i8_zext_vgpr_offset_neg2049(ptr addrspace(
 ; GFX11-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_neg2049:
 ; GFX11-GENERIC-ISEL:       ; %bb.0:
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
-; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-2049 glc
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:-2049 glc
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -24404,7 +24404,7 @@ define <4 x float> @global_load_saddr_i8_zext_vgpr_offset_neg2049(ptr addrspace(
 ; GFX1250-ISEL:       ; %bb.0:
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
-; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-2049 scope:SCOPE_DEV
+; GFX1250-ISEL-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:-2049 scope:SCOPE_DEV
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -24415,7 +24415,7 @@ define <4 x float> @global_load_saddr_i8_zext_vgpr_offset_neg2049(ptr addrspace(
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
-; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-2049 scope:SCOPE_DEV
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:-2049 scope:SCOPE_DEV
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
   %zext.offset = zext i32 %voffset to i64
@@ -24554,7 +24554,7 @@ define <4 x float> @global_load_saddr_i8_zext_vgpr_offset_0x7FFFFF(ptr addrspace
 ; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0x7ff000, v0
 ; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:4095 glc
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:4095 glc
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -24562,7 +24562,7 @@ define <4 x float> @global_load_saddr_i8_zext_vgpr_offset_0x7FFFFF(ptr addrspace
 ; GFX1250-SDAG:       ; %bb.0:
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
-; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:8388607 scope:SCOPE_SYS
+; GFX1250-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:8388607 scope:SCOPE_SYS
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -24573,7 +24573,7 @@ define <4 x float> @global_load_saddr_i8_zext_vgpr_offset_0x7FFFFF(ptr addrspace
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
-; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:8388607 scope:SCOPE_SYS
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:8388607 scope:SCOPE_SYS
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -24719,7 +24719,7 @@ define <4 x float> @global_load_saddr_i8_zext_vgpr_offset_0x7FFFFF(ptr addrspace
 ; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX11-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0x7fffff, v0
 ; GFX11-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off glc
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -24727,7 +24727,7 @@ define <4 x float> @global_load_saddr_i8_zext_vgpr_offset_0x7FFFFF(ptr addrspace
 ; GFX1250-ISEL:       ; %bb.0:
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
-; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:8388607 scope:SCOPE_SYS
+; GFX1250-ISEL-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:8388607 scope:SCOPE_SYS
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -24738,7 +24738,7 @@ define <4 x float> @global_load_saddr_i8_zext_vgpr_offset_0x7FFFFF(ptr addrspace
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
-; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:8388607 scope:SCOPE_SYS
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:8388607 scope:SCOPE_SYS
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
   %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 %zext.offset
@@ -24876,7 +24876,7 @@ define <4 x float> @global_load_saddr_i8_zext_vgpr_offset_0xFFFFFF(ptr addrspace
 ; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, 0xff800000, v0
 ; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo
-; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -24884,7 +24884,7 @@ define <4 x float> @global_load_saddr_i8_zext_vgpr_offset_0xFFFFFF(ptr addrspace
 ; GFX1250-SDAG:       ; %bb.0:
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
-; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-8388608
+; GFX1250-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:-8388608
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -24895,7 +24895,7 @@ define <4 x float> @global_load_saddr_i8_zext_vgpr_offset_0xFFFFFF(ptr addrspace
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
-; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-8388608
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:-8388608
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -25041,7 +25041,7 @@ define <4 x float> @global_load_saddr_i8_zext_vgpr_offset_0xFFFFFF(ptr addrspace
 ; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)
 ; GFX11-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, 0xff800000, v0
 ; GFX11-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, -1, v1, vcc_lo
-; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -25049,7 +25049,7 @@ define <4 x float> @global_load_saddr_i8_zext_vgpr_offset_0xFFFFFF(ptr addrspace
 ; GFX1250-ISEL:       ; %bb.0:
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
-; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-8388608
+; GFX1250-ISEL-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:-8388608
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -25060,7 +25060,7 @@ define <4 x float> @global_load_saddr_i8_zext_vgpr_offset_0xFFFFFF(ptr addrspace
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
-; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-8388608
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:-8388608
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
   %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 %zext.offset
@@ -25158,7 +25158,7 @@ define <4 x float> @global_load_saddr_i8_zext_vgpr_offset_4095_gep_order(ptr add
 ; GFX11-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_offset_4095_gep_order:
 ; GFX11-GENERIC-SDAG:       ; %bb.0:
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
-; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:4095 glc
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:4095 glc
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -25166,7 +25166,7 @@ define <4 x float> @global_load_saddr_i8_zext_vgpr_offset_4095_gep_order(ptr add
 ; GFX1250-SDAG:       ; %bb.0:
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
-; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:4095
+; GFX1250-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:4095
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -25177,7 +25177,7 @@ define <4 x float> @global_load_saddr_i8_zext_vgpr_offset_4095_gep_order(ptr add
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
-; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:4095 scope:SCOPE_SE
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:4095 scope:SCOPE_SE
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -25272,7 +25272,7 @@ define <4 x float> @global_load_saddr_i8_zext_vgpr_offset_4095_gep_order(ptr add
 ; GFX11-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_offset_4095_gep_order:
 ; GFX11-GENERIC-ISEL:       ; %bb.0:
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
-; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:4095 glc
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:4095 glc
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -25280,7 +25280,7 @@ define <4 x float> @global_load_saddr_i8_zext_vgpr_offset_4095_gep_order(ptr add
 ; GFX1250-ISEL:       ; %bb.0:
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
-; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:4095
+; GFX1250-ISEL-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:4095
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -25291,7 +25291,7 @@ define <4 x float> @global_load_saddr_i8_zext_vgpr_offset_4095_gep_order(ptr add
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
-; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:4095 scope:SCOPE_SE
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:4095 scope:SCOPE_SE
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
   %zext.offset = zext i32 %voffset to i64
@@ -25377,7 +25377,7 @@ define <4 x float> @global_load_saddr_i8_zext_vgpr_ptrtoint(ptr addrspace(1) inr
 ; GFX11-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_ptrtoint:
 ; GFX11-GENERIC-SDAG:       ; %bb.0:
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
-; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] glc
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1] glc
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -25385,7 +25385,7 @@ define <4 x float> @global_load_saddr_i8_zext_vgpr_ptrtoint(ptr addrspace(1) inr
 ; GFX1250-SDAG:       ; %bb.0:
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
-; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] scope:SCOPE_DEV
+; GFX1250-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1] scope:SCOPE_DEV
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -25396,7 +25396,7 @@ define <4 x float> @global_load_saddr_i8_zext_vgpr_ptrtoint(ptr addrspace(1) inr
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
-; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] scope:SCOPE_DEV
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1] scope:SCOPE_DEV
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -25473,7 +25473,7 @@ define <4 x float> @global_load_saddr_i8_zext_vgpr_ptrtoint(ptr addrspace(1) inr
 ; GFX11-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_ptrtoint:
 ; GFX11-GENERIC-ISEL:       ; %bb.0:
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
-; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] glc
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v0, s[0:1] glc
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -25481,7 +25481,7 @@ define <4 x float> @global_load_saddr_i8_zext_vgpr_ptrtoint(ptr addrspace(1) inr
 ; GFX1250-ISEL:       ; %bb.0:
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
-; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] scope:SCOPE_DEV
+; GFX1250-ISEL-NEXT:    global_load_b128 v[0:3], v0, s[0:1] scope:SCOPE_DEV
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -25492,7 +25492,7 @@ define <4 x float> @global_load_saddr_i8_zext_vgpr_ptrtoint(ptr addrspace(1) inr
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
-; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] scope:SCOPE_DEV
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v0, s[0:1] scope:SCOPE_DEV
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
   %zext.offset = zext i32 %voffset to i64
@@ -25579,7 +25579,7 @@ define <4 x float> @global_load_saddr_i8_zext_vgpr_ptrtoint_commute_add(ptr addr
 ; GFX11-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_ptrtoint_commute_add:
 ; GFX11-GENERIC-SDAG:       ; %bb.0:
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
-; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] glc
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1] glc
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -25587,7 +25587,7 @@ define <4 x float> @global_load_saddr_i8_zext_vgpr_ptrtoint_commute_add(ptr addr
 ; GFX1250-SDAG:       ; %bb.0:
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
-; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] scope:SCOPE_SYS
+; GFX1250-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1] scope:SCOPE_SYS
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -25598,7 +25598,7 @@ define <4 x float> @global_load_saddr_i8_zext_vgpr_ptrtoint_commute_add(ptr addr
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
-; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] scope:SCOPE_SYS
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1] scope:SCOPE_SYS
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -25675,7 +25675,7 @@ define <4 x float> @global_load_saddr_i8_zext_vgpr_ptrtoint_commute_add(ptr addr
 ; GFX11-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_ptrtoint_commute_add:
 ; GFX11-GENERIC-ISEL:       ; %bb.0:
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
-; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] glc
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v0, s[0:1] glc
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -25683,7 +25683,7 @@ define <4 x float> @global_load_saddr_i8_zext_vgpr_ptrtoint_commute_add(ptr addr
 ; GFX1250-ISEL:       ; %bb.0:
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
-; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] scope:SCOPE_SYS
+; GFX1250-ISEL-NEXT:    global_load_b128 v[0:3], v0, s[0:1] scope:SCOPE_SYS
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -25694,7 +25694,7 @@ define <4 x float> @global_load_saddr_i8_zext_vgpr_ptrtoint_commute_add(ptr addr
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
-; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] scope:SCOPE_SYS
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v0, s[0:1] scope:SCOPE_SYS
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
   %zext.offset = zext i32 %voffset to i64
@@ -25781,7 +25781,7 @@ define <4 x float> @global_load_saddr_i8_zext_vgpr_ptrtoint_commute_add_imm_offs
 ; GFX11-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_ptrtoint_commute_add_imm_offset0:
 ; GFX11-GENERIC-SDAG:       ; %bb.0:
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
-; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:128
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:128
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -25789,7 +25789,7 @@ define <4 x float> @global_load_saddr_i8_zext_vgpr_ptrtoint_commute_add_imm_offs
 ; GFX1250-SDAG:       ; %bb.0:
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
-; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:128
+; GFX1250-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:128
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -25800,7 +25800,7 @@ define <4 x float> @global_load_saddr_i8_zext_vgpr_ptrtoint_commute_add_imm_offs
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
-; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:128
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:128
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -25877,7 +25877,7 @@ define <4 x float> @global_load_saddr_i8_zext_vgpr_ptrtoint_commute_add_imm_offs
 ; GFX11-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_ptrtoint_commute_add_imm_offset0:
 ; GFX11-GENERIC-ISEL:       ; %bb.0:
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
-; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:128
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:128
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -25885,7 +25885,7 @@ define <4 x float> @global_load_saddr_i8_zext_vgpr_ptrtoint_commute_add_imm_offs
 ; GFX1250-ISEL:       ; %bb.0:
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
-; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:128
+; GFX1250-ISEL-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:128
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -25896,7 +25896,7 @@ define <4 x float> @global_load_saddr_i8_zext_vgpr_ptrtoint_commute_add_imm_offs
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
-; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:128
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:128
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
   %zext.offset = zext i32 %voffset to i64
@@ -25984,7 +25984,7 @@ define <4 x float> @global_load_saddr_i8_zext_vgpr_ptrtoint_commute_add_imm_offs
 ; GFX11-GENERIC-SDAG-LABEL: global_load_saddr_i8_zext_vgpr_ptrtoint_commute_add_imm_offset1:
 ; GFX11-GENERIC-SDAG:       ; %bb.0:
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
-; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:128 glc
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:128 glc
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -25992,7 +25992,7 @@ define <4 x float> @global_load_saddr_i8_zext_vgpr_ptrtoint_commute_add_imm_offs
 ; GFX1250-SDAG:       ; %bb.0:
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
-; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:128
+; GFX1250-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:128
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -26003,7 +26003,7 @@ define <4 x float> @global_load_saddr_i8_zext_vgpr_ptrtoint_commute_add_imm_offs
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
-; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:128 scope:SCOPE_SE
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:128 scope:SCOPE_SE
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -26080,7 +26080,7 @@ define <4 x float> @global_load_saddr_i8_zext_vgpr_ptrtoint_commute_add_imm_offs
 ; GFX11-GENERIC-ISEL-LABEL: global_load_saddr_i8_zext_vgpr_ptrtoint_commute_add_imm_offset1:
 ; GFX11-GENERIC-ISEL:       ; %bb.0:
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
-; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:128 glc
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:128 glc
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -26088,7 +26088,7 @@ define <4 x float> @global_load_saddr_i8_zext_vgpr_ptrtoint_commute_add_imm_offs
 ; GFX1250-ISEL:       ; %bb.0:
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
-; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:128
+; GFX1250-ISEL-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:128
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -26099,7 +26099,7 @@ define <4 x float> @global_load_saddr_i8_zext_vgpr_ptrtoint_commute_add_imm_offs
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
-; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:128 scope:SCOPE_SE
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:128 scope:SCOPE_SE
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
   %zext.offset = zext i32 %voffset to i64
@@ -26202,7 +26202,7 @@ define <4 x float> @global_load_saddr_i8_zext_uniform_offset(ptr addrspace(1) in
 ; GFX11-GENERIC-SDAG:       ; %bb.0:
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, s2
-; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] glc
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1] glc
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -26211,7 +26211,7 @@ define <4 x float> @global_load_saddr_i8_zext_uniform_offset(ptr addrspace(1) in
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
 ; GFX1250-SDAG-NEXT:    v_mov_b32_e32 v0, s2
-; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] scope:SCOPE_DEV
+; GFX1250-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1] scope:SCOPE_DEV
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -26223,7 +26223,7 @@ define <4 x float> @global_load_saddr_i8_zext_uniform_offset(ptr addrspace(1) in
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, s2
-; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] scope:SCOPE_DEV
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1] scope:SCOPE_DEV
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -26311,7 +26311,7 @@ define <4 x float> @global_load_saddr_i8_zext_uniform_offset(ptr addrspace(1) in
 ; GFX11-GENERIC-ISEL:       ; %bb.0:
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, s2
-; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] glc
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v0, s[0:1] glc
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -26322,7 +26322,7 @@ define <4 x float> @global_load_saddr_i8_zext_uniform_offset(ptr addrspace(1) in
 ; GFX1250-ISEL-NEXT:    v_mov_b32_e32 v0, 0
 ; GFX1250-ISEL-NEXT:    s_add_co_u32 s0, s0, s2
 ; GFX1250-ISEL-NEXT:    s_add_co_ci_u32 s1, s1, 0
-; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] scope:SCOPE_DEV
+; GFX1250-ISEL-NEXT:    global_load_b128 v[0:3], v0, s[0:1] scope:SCOPE_DEV
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -26334,7 +26334,7 @@ define <4 x float> @global_load_saddr_i8_zext_uniform_offset(ptr addrspace(1) in
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, s2
-; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] scope:SCOPE_DEV
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v0, s[0:1] scope:SCOPE_DEV
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
   %zext.offset = zext i32 %soffset to i64
@@ -26430,7 +26430,7 @@ define <4 x float> @global_load_saddr_i8_zext_uniform_offset_immoffset(ptr addrs
 ; GFX11-GENERIC-SDAG:       ; %bb.0:
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, s2
-; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-24 glc
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:-24 glc
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -26439,7 +26439,7 @@ define <4 x float> @global_load_saddr_i8_zext_uniform_offset_immoffset(ptr addrs
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
 ; GFX1250-SDAG-NEXT:    v_mov_b32_e32 v0, s2
-; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-24 scope:SCOPE_SYS
+; GFX1250-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:-24 scope:SCOPE_SYS
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -26451,7 +26451,7 @@ define <4 x float> @global_load_saddr_i8_zext_uniform_offset_immoffset(ptr addrs
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, s2
-; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-24 scope:SCOPE_SYS
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:-24 scope:SCOPE_SYS
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -26539,7 +26539,7 @@ define <4 x float> @global_load_saddr_i8_zext_uniform_offset_immoffset(ptr addrs
 ; GFX11-GENERIC-ISEL:       ; %bb.0:
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, s2
-; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-24 glc
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:-24 glc
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -26550,7 +26550,7 @@ define <4 x float> @global_load_saddr_i8_zext_uniform_offset_immoffset(ptr addrs
 ; GFX1250-ISEL-NEXT:    v_mov_b32_e32 v0, 0
 ; GFX1250-ISEL-NEXT:    s_add_co_u32 s0, s0, s2
 ; GFX1250-ISEL-NEXT:    s_add_co_ci_u32 s1, s1, 0
-; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-24 scope:SCOPE_SYS
+; GFX1250-ISEL-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:-24 scope:SCOPE_SYS
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -26562,7 +26562,7 @@ define <4 x float> @global_load_saddr_i8_zext_uniform_offset_immoffset(ptr addrs
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, s2
-; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:-24 scope:SCOPE_SYS
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:-24 scope:SCOPE_SYS
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
   %zext.offset = zext i32 %soffset to i64
@@ -26659,7 +26659,7 @@ define <4 x float> @global_load_saddr_i8_zext_sgpr_ptrtoint_commute_add(ptr addr
 ; GFX11-GENERIC-SDAG:       ; %bb.0:
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, s2
-; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1]
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1]
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -26668,7 +26668,7 @@ define <4 x float> @global_load_saddr_i8_zext_sgpr_ptrtoint_commute_add(ptr addr
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
 ; GFX1250-SDAG-NEXT:    v_mov_b32_e32 v0, s2
-; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1]
+; GFX1250-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1]
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -26680,7 +26680,7 @@ define <4 x float> @global_load_saddr_i8_zext_sgpr_ptrtoint_commute_add(ptr addr
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, s2
-; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1]
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1]
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -26768,7 +26768,7 @@ define <4 x float> @global_load_saddr_i8_zext_sgpr_ptrtoint_commute_add(ptr addr
 ; GFX11-GENERIC-ISEL:       ; %bb.0:
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, s2
-; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1]
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v0, s[0:1]
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -26779,7 +26779,7 @@ define <4 x float> @global_load_saddr_i8_zext_sgpr_ptrtoint_commute_add(ptr addr
 ; GFX1250-ISEL-NEXT:    v_mov_b32_e32 v0, 0
 ; GFX1250-ISEL-NEXT:    s_add_co_u32 s0, s0, s2
 ; GFX1250-ISEL-NEXT:    s_add_co_ci_u32 s1, s1, 0
-; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1]
+; GFX1250-ISEL-NEXT:    global_load_b128 v[0:3], v0, s[0:1]
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -26791,7 +26791,7 @@ define <4 x float> @global_load_saddr_i8_zext_sgpr_ptrtoint_commute_add(ptr addr
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, s2
-; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1]
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v0, s[0:1]
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
   %zext.offset = zext i32 %soffset to i64
@@ -26889,7 +26889,7 @@ define <4 x float> @global_load_saddr_i8_zext_sgpr_ptrtoint_commute_add_imm_offs
 ; GFX11-GENERIC-SDAG:       ; %bb.0:
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, s2
-; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:128 glc
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:128 glc
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -26898,7 +26898,7 @@ define <4 x float> @global_load_saddr_i8_zext_sgpr_ptrtoint_commute_add_imm_offs
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
 ; GFX1250-SDAG-NEXT:    v_mov_b32_e32 v0, s2
-; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:128
+; GFX1250-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:128
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -26910,7 +26910,7 @@ define <4 x float> @global_load_saddr_i8_zext_sgpr_ptrtoint_commute_add_imm_offs
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v0, s2
-; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:128 scope:SCOPE_SE
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:128 scope:SCOPE_SE
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -26998,7 +26998,7 @@ define <4 x float> @global_load_saddr_i8_zext_sgpr_ptrtoint_commute_add_imm_offs
 ; GFX11-GENERIC-ISEL:       ; %bb.0:
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, s2
-; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:128 glc
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:128 glc
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -27009,7 +27009,7 @@ define <4 x float> @global_load_saddr_i8_zext_sgpr_ptrtoint_commute_add_imm_offs
 ; GFX1250-ISEL-NEXT:    v_mov_b32_e32 v0, 0
 ; GFX1250-ISEL-NEXT:    s_add_co_u32 s0, s0, s2
 ; GFX1250-ISEL-NEXT:    s_add_co_ci_u32 s1, s1, 0
-; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:128
+; GFX1250-ISEL-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:128
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -27021,7 +27021,7 @@ define <4 x float> @global_load_saddr_i8_zext_sgpr_ptrtoint_commute_add_imm_offs
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v0, s2
-; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:128 scope:SCOPE_SE
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:128 scope:SCOPE_SE
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
   %zext.offset = zext i32 %soffset to i64
@@ -27132,7 +27132,7 @@ define <4 x float> @global_load_saddr_i8_vgpr64_sgpr32(ptr addrspace(1) %vbase,
 ; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, s0
 ; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off glc
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -27143,7 +27143,7 @@ define <4 x float> @global_load_saddr_i8_vgpr64_sgpr32(ptr addrspace(1) %vbase,
 ; GFX1250-SDAG-NEXT:    s_mov_b32 s1, 0
 ; GFX1250-SDAG-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX1250-SDAG-NEXT:    v_add_nc_u64_e32 v[0:1], s[0:1], v[0:1]
-; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_DEV
+; GFX1250-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off scope:SCOPE_DEV
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -27157,7 +27157,7 @@ define <4 x float> @global_load_saddr_i8_vgpr64_sgpr32(ptr addrspace(1) %vbase,
 ; GFX12-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, s0
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)
 ; GFX12-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_DEV
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off scope:SCOPE_DEV
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -27289,7 +27289,7 @@ define <4 x float> @global_load_saddr_i8_vgpr64_sgpr32(ptr addrspace(1) %vbase,
 ; GFX11-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, v1, v3, vcc_lo
-; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off glc
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -27303,7 +27303,7 @@ define <4 x float> @global_load_saddr_i8_vgpr64_sgpr32(ptr addrspace(1) %vbase,
 ; GFX1250-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX1250-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1250-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, v1, v3, vcc_lo
-; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_DEV
+; GFX1250-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off scope:SCOPE_DEV
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -27321,7 +27321,7 @@ define <4 x float> @global_load_saddr_i8_vgpr64_sgpr32(ptr addrspace(1) %vbase,
 ; GFX12-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_alu depctr_va_vcc(0)
 ; GFX12-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, v1, v3, vcc_lo
-; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_DEV
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off scope:SCOPE_DEV
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
   %zext.offset = zext i32 %soffset to i64
@@ -27435,7 +27435,7 @@ define <4 x float> @global_load_saddr_i8_vgpr64_sgpr32_offset_4095(ptr addrspace
 ; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, s0
 ; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:4095 glc
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:4095 glc
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -27446,7 +27446,7 @@ define <4 x float> @global_load_saddr_i8_vgpr64_sgpr32_offset_4095(ptr addrspace
 ; GFX1250-SDAG-NEXT:    s_mov_b32 s1, 0
 ; GFX1250-SDAG-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX1250-SDAG-NEXT:    v_add_nc_u64_e32 v[0:1], s[0:1], v[0:1]
-; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:4095 scope:SCOPE_SYS
+; GFX1250-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:4095 scope:SCOPE_SYS
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -27460,7 +27460,7 @@ define <4 x float> @global_load_saddr_i8_vgpr64_sgpr32_offset_4095(ptr addrspace
 ; GFX12-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, s0
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)
 ; GFX12-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:4095 scope:SCOPE_SYS
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:4095 scope:SCOPE_SYS
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -27598,7 +27598,7 @@ define <4 x float> @global_load_saddr_i8_vgpr64_sgpr32_offset_4095(ptr addrspace
 ; GFX11-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, v1, v3, vcc_lo
-; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:4095 glc
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:4095 glc
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -27612,7 +27612,7 @@ define <4 x float> @global_load_saddr_i8_vgpr64_sgpr32_offset_4095(ptr addrspace
 ; GFX1250-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX1250-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1250-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, v1, v3, vcc_lo
-; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:4095 scope:SCOPE_SYS
+; GFX1250-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:4095 scope:SCOPE_SYS
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -27630,7 +27630,7 @@ define <4 x float> @global_load_saddr_i8_vgpr64_sgpr32_offset_4095(ptr addrspace
 ; GFX12-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_alu depctr_va_vcc(0)
 ; GFX12-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, v1, v3, vcc_lo
-; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off offset:4095 scope:SCOPE_SYS
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off offset:4095 scope:SCOPE_SYS
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
   %zext.offset = zext i32 %soffset to i64
@@ -27792,7 +27792,7 @@ define <4 x float> @global_load_saddr_f32_natural_addressing(ptr addrspace(1) in
 ; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, s0, v0
 ; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, s1, v1, vcc_lo
-; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -27806,7 +27806,7 @@ define <4 x float> @global_load_saddr_f32_natural_addressing(ptr addrspace(1) in
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1250-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 2, s[0:1]
-; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX1250-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -27826,7 +27826,7 @@ define <4 x float> @global_load_saddr_f32_natural_addressing(ptr addrspace(1) in
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)
 ; GFX12-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_2)
 ; GFX12-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, s1, v1, vcc_lo
-; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -27979,7 +27979,7 @@ define <4 x float> @global_load_saddr_f32_natural_addressing(ptr addrspace(1) in
 ; GFX11-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v2, v0
 ; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, v3, v1, vcc_lo
-; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -27993,7 +27993,7 @@ define <4 x float> @global_load_saddr_f32_natural_addressing(ptr addrspace(1) in
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1250-ISEL-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 2, s[0:1]
-; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX1250-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -28014,7 +28014,7 @@ define <4 x float> @global_load_saddr_f32_natural_addressing(ptr addrspace(1) in
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_alu depctr_va_vcc(0)
 ; GFX12-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_2)
 ; GFX12-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, v3, v1, vcc_lo
-; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
   %voffset = load i32, ptr addrspace(1) %voffset.ptr
@@ -28122,7 +28122,7 @@ define <4 x float> @global_load_saddr_f32_natural_addressing_immoffset(ptr addrs
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    global_load_b32 v0, v[0:1], off
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
-; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:128 glc
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:128 glc
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -28132,7 +28132,7 @@ define <4 x float> @global_load_saddr_f32_natural_addressing_immoffset(ptr addrs
 ; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
 ; GFX1250-SDAG-NEXT:    global_load_b32 v0, v[0:1], off
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
-; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:128
+; GFX1250-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:128
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -28145,7 +28145,7 @@ define <4 x float> @global_load_saddr_f32_natural_addressing_immoffset(ptr addrs
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    global_load_b32 v0, v[0:1], off
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
-; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:128 scope:SCOPE_SE
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:128 scope:SCOPE_SE
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -28244,7 +28244,7 @@ define <4 x float> @global_load_saddr_f32_natural_addressing_immoffset(ptr addrs
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    global_load_b32 v0, v[0:1], off
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
-; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:128 glc
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:128 glc
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -28254,7 +28254,7 @@ define <4 x float> @global_load_saddr_f32_natural_addressing_immoffset(ptr addrs
 ; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
 ; GFX1250-ISEL-NEXT:    global_load_b32 v0, v[0:1], off
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
-; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:128
+; GFX1250-ISEL-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:128
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -28267,7 +28267,7 @@ define <4 x float> @global_load_saddr_f32_natural_addressing_immoffset(ptr addrs
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    global_load_b32 v0, v[0:1], off
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
-; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:128 scope:SCOPE_SE
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:128 scope:SCOPE_SE
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
   %voffset = load i32, ptr addrspace(1) %voffset.ptr
@@ -28387,7 +28387,7 @@ define <4 x float> @global_load_f32_saddr_zext_vgpr_range(ptr addrspace(1) inreg
 ; GFX11-GENERIC-SDAG-NEXT:    global_load_b32 v0, v[0:1], off
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    v_lshlrev_b32_e32 v0, 2, v0
-; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] glc
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1] glc
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -28399,7 +28399,7 @@ define <4 x float> @global_load_f32_saddr_zext_vgpr_range(ptr addrspace(1) inreg
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_wait_xcnt 0x0
 ; GFX1250-SDAG-NEXT:    v_lshlrev_b32_e32 v0, 2, v0
-; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] scope:SCOPE_DEV
+; GFX1250-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1] scope:SCOPE_DEV
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -28413,7 +28413,7 @@ define <4 x float> @global_load_f32_saddr_zext_vgpr_range(ptr addrspace(1) inreg
 ; GFX12-GENERIC-SDAG-NEXT:    global_load_b32 v0, v[0:1], off
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    v_lshlrev_b32_e32 v0, 2, v0
-; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] scope:SCOPE_DEV
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1] scope:SCOPE_DEV
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -28523,7 +28523,7 @@ define <4 x float> @global_load_f32_saddr_zext_vgpr_range(ptr addrspace(1) inreg
 ; GFX11-GENERIC-ISEL-NEXT:    global_load_b32 v0, v[0:1], off
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    v_lshlrev_b32_e32 v0, 2, v0
-; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] glc
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v0, s[0:1] glc
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -28535,7 +28535,7 @@ define <4 x float> @global_load_f32_saddr_zext_vgpr_range(ptr addrspace(1) inreg
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_wait_xcnt 0x0
 ; GFX1250-ISEL-NEXT:    v_lshlrev_b32_e32 v0, 2, v0
-; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] scope:SCOPE_DEV
+; GFX1250-ISEL-NEXT:    global_load_b128 v[0:3], v0, s[0:1] scope:SCOPE_DEV
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -28549,7 +28549,7 @@ define <4 x float> @global_load_f32_saddr_zext_vgpr_range(ptr addrspace(1) inreg
 ; GFX12-GENERIC-ISEL-NEXT:    global_load_b32 v0, v[0:1], off
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    v_lshlrev_b32_e32 v0, 2, v0
-; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] scope:SCOPE_DEV
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v0, s[0:1] scope:SCOPE_DEV
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
   %voffset = load i32, ptr addrspace(1) %voffset.ptr, !range !4, !noundef !{}
@@ -28668,7 +28668,7 @@ define <4 x float> @global_load_f32_saddr_zext_vgpr_range_imm_offset(ptr addrspa
 ; GFX11-GENERIC-SDAG-NEXT:    global_load_b32 v0, v[0:1], off
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    v_lshlrev_b32_e32 v0, 2, v0
-; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:400 glc
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:400 glc
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -28680,7 +28680,7 @@ define <4 x float> @global_load_f32_saddr_zext_vgpr_range_imm_offset(ptr addrspa
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_wait_xcnt 0x0
 ; GFX1250-SDAG-NEXT:    v_lshlrev_b32_e32 v0, 2, v0
-; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:400 scope:SCOPE_SYS
+; GFX1250-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:400 scope:SCOPE_SYS
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -28694,7 +28694,7 @@ define <4 x float> @global_load_f32_saddr_zext_vgpr_range_imm_offset(ptr addrspa
 ; GFX12-GENERIC-SDAG-NEXT:    global_load_b32 v0, v[0:1], off
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    v_lshlrev_b32_e32 v0, 2, v0
-; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:400 scope:SCOPE_SYS
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:400 scope:SCOPE_SYS
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -28804,7 +28804,7 @@ define <4 x float> @global_load_f32_saddr_zext_vgpr_range_imm_offset(ptr addrspa
 ; GFX11-GENERIC-ISEL-NEXT:    global_load_b32 v0, v[0:1], off
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    v_lshlrev_b32_e32 v0, 2, v0
-; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:400 glc
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:400 glc
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -28816,7 +28816,7 @@ define <4 x float> @global_load_f32_saddr_zext_vgpr_range_imm_offset(ptr addrspa
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_wait_xcnt 0x0
 ; GFX1250-ISEL-NEXT:    v_lshlrev_b32_e32 v0, 2, v0
-; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:400 scope:SCOPE_SYS
+; GFX1250-ISEL-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:400 scope:SCOPE_SYS
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -28830,7 +28830,7 @@ define <4 x float> @global_load_f32_saddr_zext_vgpr_range_imm_offset(ptr addrspa
 ; GFX12-GENERIC-ISEL-NEXT:    global_load_b32 v0, v[0:1], off
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    v_lshlrev_b32_e32 v0, 2, v0
-; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] offset:400 scope:SCOPE_SYS
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v0, s[0:1] offset:400 scope:SCOPE_SYS
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
   %voffset = load i32, ptr addrspace(1) %voffset.ptr, !range !4, !noundef !{}
@@ -28989,7 +28989,7 @@ define <4 x float> @global_load_f32_saddr_zext_vgpr_range_too_large(ptr addrspac
 ; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, s0, v0
 ; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, s1, v1, vcc_lo
-; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -29003,7 +29003,7 @@ define <4 x float> @global_load_f32_saddr_zext_vgpr_range_too_large(ptr addrspac
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1250-SDAG-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 2, s[0:1]
-; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX1250-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -29023,7 +29023,7 @@ define <4 x float> @global_load_f32_saddr_zext_vgpr_range_too_large(ptr addrspac
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)
 ; GFX12-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_2)
 ; GFX12-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, s1, v1, vcc_lo
-; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -29176,7 +29176,7 @@ define <4 x float> @global_load_f32_saddr_zext_vgpr_range_too_large(ptr addrspac
 ; GFX11-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v2, v0
 ; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, v3, v1, vcc_lo
-; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -29190,7 +29190,7 @@ define <4 x float> @global_load_f32_saddr_zext_vgpr_range_too_large(ptr addrspac
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1250-ISEL-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 2, s[0:1]
-; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX1250-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -29211,7 +29211,7 @@ define <4 x float> @global_load_f32_saddr_zext_vgpr_range_too_large(ptr addrspac
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_alu depctr_va_vcc(0)
 ; GFX12-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_2)
 ; GFX12-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, v3, v1, vcc_lo
-; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
   %voffset = load i32, ptr addrspace(1) %voffset.ptr, !range !5, !noundef !{}
@@ -29323,7 +29323,7 @@ define <4 x float> @global_load_saddr_i8_offset_or_i64_imm_offset_16(ptr addrspa
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v1, 0
 ; GFX11-GENERIC-SDAG-NEXT:    v_or_b32_e32 v0, 16, v0
-; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off glc
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -29332,7 +29332,7 @@ define <4 x float> @global_load_saddr_i8_offset_or_i64_imm_offset_16(ptr addrspa
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
 ; GFX1250-SDAG-NEXT:    v_dual_mov_b32 v1, 0 :: v_dual_bitop2_b32 v0, 16, v0 bitop3:0x54
-; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX1250-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -29345,7 +29345,7 @@ define <4 x float> @global_load_saddr_i8_offset_or_i64_imm_offset_16(ptr addrspa
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v1, 0
 ; GFX12-GENERIC-SDAG-NEXT:    v_or_b32_e32 v0, 16, v0
-; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SE
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SE
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -29444,7 +29444,7 @@ define <4 x float> @global_load_saddr_i8_offset_or_i64_imm_offset_16(ptr addrspa
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v1, 0
 ; GFX11-GENERIC-ISEL-NEXT:    v_or_b32_e32 v0, 16, v0
-; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off glc
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -29453,7 +29453,7 @@ define <4 x float> @global_load_saddr_i8_offset_or_i64_imm_offset_16(ptr addrspa
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
 ; GFX1250-ISEL-NEXT:    v_dual_mov_b32 v1, 0 :: v_dual_bitop2_b32 v0, 16, v0 bitop3:0x54
-; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX1250-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -29466,7 +29466,7 @@ define <4 x float> @global_load_saddr_i8_offset_or_i64_imm_offset_16(ptr addrspa
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v1, 0
 ; GFX12-GENERIC-ISEL-NEXT:    v_or_b32_e32 v0, 16, v0
-; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SE
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SE
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
   %zext.idx = zext i32 %idx to i64
@@ -29573,7 +29573,7 @@ define <4 x float> @global_load_saddr_i8_offset_or_i64_imm_offset_4160(ptr addrs
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v1, 0
 ; GFX11-GENERIC-SDAG-NEXT:    v_or_b32_e32 v0, 0x1040, v0
-; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off glc
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -29583,7 +29583,7 @@ define <4 x float> @global_load_saddr_i8_offset_or_i64_imm_offset_4160(ptr addrs
 ; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
 ; GFX1250-SDAG-NEXT:    v_mov_b32_e32 v1, 0
 ; GFX1250-SDAG-NEXT:    v_or_b32_e32 v0, 0x1040, v0
-; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_DEV
+; GFX1250-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off scope:SCOPE_DEV
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -29596,7 +29596,7 @@ define <4 x float> @global_load_saddr_i8_offset_or_i64_imm_offset_4160(ptr addrs
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    v_mov_b32_e32 v1, 0
 ; GFX12-GENERIC-SDAG-NEXT:    v_or_b32_e32 v0, 0x1040, v0
-; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_DEV
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v[0:1], off scope:SCOPE_DEV
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -29695,7 +29695,7 @@ define <4 x float> @global_load_saddr_i8_offset_or_i64_imm_offset_4160(ptr addrs
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v1, 0
 ; GFX11-GENERIC-ISEL-NEXT:    v_or_b32_e32 v0, 0x1040, v0
-; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off glc
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -29705,7 +29705,7 @@ define <4 x float> @global_load_saddr_i8_offset_or_i64_imm_offset_4160(ptr addrs
 ; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
 ; GFX1250-ISEL-NEXT:    v_mov_b32_e32 v1, 0
 ; GFX1250-ISEL-NEXT:    v_or_b32_e32 v0, 0x1040, v0
-; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_DEV
+; GFX1250-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off scope:SCOPE_DEV
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -29718,7 +29718,7 @@ define <4 x float> @global_load_saddr_i8_offset_or_i64_imm_offset_4160(ptr addrs
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    v_mov_b32_e32 v1, 0
 ; GFX12-GENERIC-ISEL-NEXT:    v_or_b32_e32 v0, 0x1040, v0
-; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_DEV
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off scope:SCOPE_DEV
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
   %zext.idx = zext i32 %idx to i64
@@ -29940,7 +29940,7 @@ define <4 x float> @global_saddr_64bit_lsr_iv(ptr addrspace(1) inreg %arg) {
 ; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-GENERIC-SDAG-NEXT:    s_add_u32 s0, s0, s2
 ; GFX11-GENERIC-SDAG-NEXT:    s_addc_u32 s1, s1, s3
-; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] glc
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1] glc
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -29961,7 +29961,7 @@ define <4 x float> @global_saddr_64bit_lsr_iv(ptr addrspace(1) inreg %arg) {
 ; GFX1250-SDAG-NEXT:    s_lshl_b64 s[2:3], s[2:3], 2
 ; GFX1250-SDAG-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX1250-SDAG-NEXT:    s_add_nc_u64 s[0:1], s[0:1], s[2:3]
-; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] scope:SCOPE_SYS
+; GFX1250-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1] scope:SCOPE_SYS
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -29987,7 +29987,7 @@ define <4 x float> @global_saddr_64bit_lsr_iv(ptr addrspace(1) inreg %arg) {
 ; GFX12-GENERIC-SDAG-NEXT:    s_lshl_b64 s[2:3], s[2:3], 2
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_alu depctr_sa_sdst(0)
 ; GFX12-GENERIC-SDAG-NEXT:    s_add_nc_u64 s[0:1], s[0:1], s[2:3]
-; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1] scope:SCOPE_SYS
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1] scope:SCOPE_SYS
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_alu depctr_sa_sdst(0)
 ; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
@@ -30216,7 +30216,7 @@ define <4 x float> @global_saddr_64bit_lsr_iv(ptr addrspace(1) inreg %arg) {
 ; GFX11-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v2, v0
 ; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, v3, v1, vcc_lo
-; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off glc
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off glc
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -30237,7 +30237,7 @@ define <4 x float> @global_saddr_64bit_lsr_iv(ptr addrspace(1) inreg %arg) {
 ; GFX1250-ISEL-NEXT:    v_mov_b32_e32 v1, 0
 ; GFX1250-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1250-ISEL-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 2, s[0:1]
-; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SYS
+; GFX1250-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SYS
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -30266,7 +30266,7 @@ define <4 x float> @global_saddr_64bit_lsr_iv(ptr addrspace(1) inreg %arg) {
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_alu depctr_va_vcc(0)
 ; GFX12-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_2)
 ; GFX12-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, v3, v1, vcc_lo
-; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SYS
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SYS
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 bb:
@@ -30496,7 +30496,7 @@ define <4 x float> @global_saddr_64bit_lsr_iv_multiload(ptr addrspace(1) inreg %
 ; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX11-GENERIC-SDAG-NEXT:    s_add_u32 s0, s0, s2
 ; GFX11-GENERIC-SDAG-NEXT:    s_addc_u32 s1, s1, s3
-; GFX11-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1]
+; GFX11-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1]
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -30517,7 +30517,7 @@ define <4 x float> @global_saddr_64bit_lsr_iv_multiload(ptr addrspace(1) inreg %
 ; GFX1250-SDAG-NEXT:    s_lshl_b64 s[2:3], s[2:3], 2
 ; GFX1250-SDAG-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
 ; GFX1250-SDAG-NEXT:    s_add_nc_u64 s[0:1], s[0:1], s[2:3]
-; GFX1250-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1]
+; GFX1250-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1]
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -30543,7 +30543,7 @@ define <4 x float> @global_saddr_64bit_lsr_iv_multiload(ptr addrspace(1) inreg %
 ; GFX12-GENERIC-SDAG-NEXT:    s_lshl_b64 s[2:3], s[2:3], 2
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_alu depctr_sa_sdst(0)
 ; GFX12-GENERIC-SDAG-NEXT:    s_add_nc_u64 s[0:1], s[0:1], s[2:3]
-; GFX12-GENERIC-SDAG-NEXT:    av_global_load_b128 v[0:3], v0, s[0:1]
+; GFX12-GENERIC-SDAG-NEXT:    global_load_b128 v[0:3], v0, s[0:1]
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_alu depctr_sa_sdst(0)
 ; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
@@ -30772,7 +30772,7 @@ define <4 x float> @global_saddr_64bit_lsr_iv_multiload(ptr addrspace(1) inreg %
 ; GFX11-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v2, v0
 ; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, v3, v1, vcc_lo
-; GFX11-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX11-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
@@ -30793,7 +30793,7 @@ define <4 x float> @global_saddr_64bit_lsr_iv_multiload(ptr addrspace(1) inreg %
 ; GFX1250-ISEL-NEXT:    v_mov_b32_e32 v1, 0
 ; GFX1250-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1250-ISEL-NEXT:    v_lshl_add_u64 v[0:1], v[0:1], 2, s[0:1]
-; GFX1250-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX1250-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
 ;
@@ -30822,7 +30822,7 @@ define <4 x float> @global_saddr_64bit_lsr_iv_multiload(ptr addrspace(1) inreg %
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_alu depctr_va_vcc(0)
 ; GFX12-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_2)
 ; GFX12-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, v3, v1, vcc_lo
-; GFX12-GENERIC-ISEL-NEXT:    av_global_load_b128 v[0:3], v[0:1], off
+; GFX12-GENERIC-ISEL-NEXT:    global_load_b128 v[0:3], v[0:1], off
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 bb:
diff --git a/llvm/test/CodeGen/AMDGPU/llvm.amdgcn.av.global.store.b128.ll b/llvm/test/CodeGen/AMDGPU/llvm.amdgcn.av.global.store.b128.ll
index fb1311e4ebef1..25633e4fad11d 100644
--- a/llvm/test/CodeGen/AMDGPU/llvm.amdgcn.av.global.store.b128.ll
+++ b/llvm/test/CodeGen/AMDGPU/llvm.amdgcn.av.global.store.b128.ll
@@ -102,14 +102,14 @@ define void @av_global_store_b128_0_00(ptr addrspace(1) %addr, <4 x i32> %data)
 ; GFX11-GENERIC-SDAG-LABEL: av_global_store_b128_0_00:
 ; GFX11-GENERIC-SDAG:       ; %bb.0: ; %entry
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
-; GFX11-GENERIC-SDAG-NEXT:    av_global_store_b128 v[0:1], v[2:5], off
+; GFX11-GENERIC-SDAG-NEXT:    global_store_b128 v[0:1], v[2:5], off
 ; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
 ; GFX1250-SDAG-LABEL: av_global_store_b128_0_00:
 ; GFX1250-SDAG:       ; %bb.0: ; %entry
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
-; GFX1250-SDAG-NEXT:    av_global_store_b128 v[0:1], v[2:5], off
+; GFX1250-SDAG-NEXT:    global_store_b128 v[0:1], v[2:5], off
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
 ; GFX12-GENERIC-SDAG-LABEL: av_global_store_b128_0_00:
@@ -119,7 +119,7 @@ define void @av_global_store_b128_0_00(ptr addrspace(1) %addr, <4 x i32> %data)
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
-; GFX12-GENERIC-SDAG-NEXT:    av_global_store_b128 v[0:1], v[2:5], off
+; GFX12-GENERIC-SDAG-NEXT:    global_store_b128 v[0:1], v[2:5], off
 ; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
 ; GFX9-GENERIC-ISEL-LABEL: av_global_store_b128_0_00:
@@ -192,14 +192,14 @@ define void @av_global_store_b128_0_00(ptr addrspace(1) %addr, <4 x i32> %data)
 ; GFX11-GENERIC-ISEL-LABEL: av_global_store_b128_0_00:
 ; GFX11-GENERIC-ISEL:       ; %bb.0: ; %entry
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
-; GFX11-GENERIC-ISEL-NEXT:    av_global_store_b128 v[0:1], v[2:5], off
+; GFX11-GENERIC-ISEL-NEXT:    global_store_b128 v[0:1], v[2:5], off
 ; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
 ; GFX1250-ISEL-LABEL: av_global_store_b128_0_00:
 ; GFX1250-ISEL:       ; %bb.0: ; %entry
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
-; GFX1250-ISEL-NEXT:    av_global_store_b128 v[0:1], v[2:5], off
+; GFX1250-ISEL-NEXT:    global_store_b128 v[0:1], v[2:5], off
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
 ;
 ; GFX12-GENERIC-ISEL-LABEL: av_global_store_b128_0_00:
@@ -209,7 +209,7 @@ define void @av_global_store_b128_0_00(ptr addrspace(1) %addr, <4 x i32> %data)
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
-; GFX12-GENERIC-ISEL-NEXT:    av_global_store_b128 v[0:1], v[2:5], off
+; GFX12-GENERIC-ISEL-NEXT:    global_store_b128 v[0:1], v[2:5], off
 ; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 entry:
   call void @llvm.amdgcn.av.global.store.b128(ptr addrspace(1) %addr, <4 x i32> %data, metadata !0)
@@ -287,14 +287,14 @@ define void @av_global_store_b128_0_01(ptr addrspace(1) %addr, <4 x i32> %data)
 ; GFX11-GENERIC-SDAG-LABEL: av_global_store_b128_0_01:
 ; GFX11-GENERIC-SDAG:       ; %bb.0: ; %entry
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
-; GFX11-GENERIC-SDAG-NEXT:    av_global_store_b128 v[0:1], v[2:5], off
+; GFX11-GENERIC-SDAG-NEXT:    global_store_b128 v[0:1], v[2:5], off
 ; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
 ; GFX1250-SDAG-LABEL: av_global_store_b128_0_01:
 ; GFX1250-SDAG:       ; %bb.0: ; %entry
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
-; GFX1250-SDAG-NEXT:    av_global_store_b128 v[0:1], v[2:5], off
+; GFX1250-SDAG-NEXT:    global_store_b128 v[0:1], v[2:5], off
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
 ; GFX12-GENERIC-SDAG-LABEL: av_global_store_b128_0_01:
@@ -304,7 +304,7 @@ define void @av_global_store_b128_0_01(ptr addrspace(1) %addr, <4 x i32> %data)
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
-; GFX12-GENERIC-SDAG-NEXT:    av_global_store_b128 v[0:1], v[2:5], off scope:SCOPE_SE
+; GFX12-GENERIC-SDAG-NEXT:    global_store_b128 v[0:1], v[2:5], off scope:SCOPE_SE
 ; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
 ; GFX9-GENERIC-ISEL-LABEL: av_global_store_b128_0_01:
@@ -377,14 +377,14 @@ define void @av_global_store_b128_0_01(ptr addrspace(1) %addr, <4 x i32> %data)
 ; GFX11-GENERIC-ISEL-LABEL: av_global_store_b128_0_01:
 ; GFX11-GENERIC-ISEL:       ; %bb.0: ; %entry
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
-; GFX11-GENERIC-ISEL-NEXT:    av_global_store_b128 v[0:1], v[2:5], off
+; GFX11-GENERIC-ISEL-NEXT:    global_store_b128 v[0:1], v[2:5], off
 ; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
 ; GFX1250-ISEL-LABEL: av_global_store_b128_0_01:
 ; GFX1250-ISEL:       ; %bb.0: ; %entry
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
-; GFX1250-ISEL-NEXT:    av_global_store_b128 v[0:1], v[2:5], off
+; GFX1250-ISEL-NEXT:    global_store_b128 v[0:1], v[2:5], off
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
 ;
 ; GFX12-GENERIC-ISEL-LABEL: av_global_store_b128_0_01:
@@ -394,7 +394,7 @@ define void @av_global_store_b128_0_01(ptr addrspace(1) %addr, <4 x i32> %data)
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
-; GFX12-GENERIC-ISEL-NEXT:    av_global_store_b128 v[0:1], v[2:5], off scope:SCOPE_SE
+; GFX12-GENERIC-ISEL-NEXT:    global_store_b128 v[0:1], v[2:5], off scope:SCOPE_SE
 ; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 entry:
   call void @llvm.amdgcn.av.global.store.b128(ptr addrspace(1) %addr, <4 x i32> %data, metadata !1)
@@ -472,14 +472,14 @@ define void @av_global_store_b128_0_10(ptr addrspace(1) %addr, <4 x i32> %data)
 ; GFX11-GENERIC-SDAG-LABEL: av_global_store_b128_0_10:
 ; GFX11-GENERIC-SDAG:       ; %bb.0: ; %entry
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
-; GFX11-GENERIC-SDAG-NEXT:    av_global_store_b128 v[0:1], v[2:5], off
+; GFX11-GENERIC-SDAG-NEXT:    global_store_b128 v[0:1], v[2:5], off
 ; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
 ; GFX1250-SDAG-LABEL: av_global_store_b128_0_10:
 ; GFX1250-SDAG:       ; %bb.0: ; %entry
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
-; GFX1250-SDAG-NEXT:    av_global_store_b128 v[0:1], v[2:5], off scope:SCOPE_DEV
+; GFX1250-SDAG-NEXT:    global_store_b128 v[0:1], v[2:5], off scope:SCOPE_DEV
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
 ; GFX12-GENERIC-SDAG-LABEL: av_global_store_b128_0_10:
@@ -489,7 +489,7 @@ define void @av_global_store_b128_0_10(ptr addrspace(1) %addr, <4 x i32> %data)
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
-; GFX12-GENERIC-SDAG-NEXT:    av_global_store_b128 v[0:1], v[2:5], off scope:SCOPE_DEV
+; GFX12-GENERIC-SDAG-NEXT:    global_store_b128 v[0:1], v[2:5], off scope:SCOPE_DEV
 ; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
 ; GFX9-GENERIC-ISEL-LABEL: av_global_store_b128_0_10:
@@ -562,14 +562,14 @@ define void @av_global_store_b128_0_10(ptr addrspace(1) %addr, <4 x i32> %data)
 ; GFX11-GENERIC-ISEL-LABEL: av_global_store_b128_0_10:
 ; GFX11-GENERIC-ISEL:       ; %bb.0: ; %entry
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
-; GFX11-GENERIC-ISEL-NEXT:    av_global_store_b128 v[0:1], v[2:5], off
+; GFX11-GENERIC-ISEL-NEXT:    global_store_b128 v[0:1], v[2:5], off
 ; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
 ; GFX1250-ISEL-LABEL: av_global_store_b128_0_10:
 ; GFX1250-ISEL:       ; %bb.0: ; %entry
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
-; GFX1250-ISEL-NEXT:    av_global_store_b128 v[0:1], v[2:5], off scope:SCOPE_DEV
+; GFX1250-ISEL-NEXT:    global_store_b128 v[0:1], v[2:5], off scope:SCOPE_DEV
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
 ;
 ; GFX12-GENERIC-ISEL-LABEL: av_global_store_b128_0_10:
@@ -579,7 +579,7 @@ define void @av_global_store_b128_0_10(ptr addrspace(1) %addr, <4 x i32> %data)
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
-; GFX12-GENERIC-ISEL-NEXT:    av_global_store_b128 v[0:1], v[2:5], off scope:SCOPE_DEV
+; GFX12-GENERIC-ISEL-NEXT:    global_store_b128 v[0:1], v[2:5], off scope:SCOPE_DEV
 ; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 entry:
   call void @llvm.amdgcn.av.global.store.b128(ptr addrspace(1) %addr, <4 x i32> %data, metadata !2)
@@ -657,14 +657,14 @@ define void @av_global_store_b128_0_11(ptr addrspace(1) %addr, <4 x i32> %data)
 ; GFX11-GENERIC-SDAG-LABEL: av_global_store_b128_0_11:
 ; GFX11-GENERIC-SDAG:       ; %bb.0: ; %entry
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
-; GFX11-GENERIC-SDAG-NEXT:    av_global_store_b128 v[0:1], v[2:5], off
+; GFX11-GENERIC-SDAG-NEXT:    global_store_b128 v[0:1], v[2:5], off
 ; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
 ; GFX1250-SDAG-LABEL: av_global_store_b128_0_11:
 ; GFX1250-SDAG:       ; %bb.0: ; %entry
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
-; GFX1250-SDAG-NEXT:    av_global_store_b128 v[0:1], v[2:5], off scope:SCOPE_SYS
+; GFX1250-SDAG-NEXT:    global_store_b128 v[0:1], v[2:5], off scope:SCOPE_SYS
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
 ; GFX12-GENERIC-SDAG-LABEL: av_global_store_b128_0_11:
@@ -674,7 +674,7 @@ define void @av_global_store_b128_0_11(ptr addrspace(1) %addr, <4 x i32> %data)
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
-; GFX12-GENERIC-SDAG-NEXT:    av_global_store_b128 v[0:1], v[2:5], off scope:SCOPE_SYS
+; GFX12-GENERIC-SDAG-NEXT:    global_store_b128 v[0:1], v[2:5], off scope:SCOPE_SYS
 ; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
 ; GFX9-GENERIC-ISEL-LABEL: av_global_store_b128_0_11:
@@ -747,14 +747,14 @@ define void @av_global_store_b128_0_11(ptr addrspace(1) %addr, <4 x i32> %data)
 ; GFX11-GENERIC-ISEL-LABEL: av_global_store_b128_0_11:
 ; GFX11-GENERIC-ISEL:       ; %bb.0: ; %entry
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
-; GFX11-GENERIC-ISEL-NEXT:    av_global_store_b128 v[0:1], v[2:5], off
+; GFX11-GENERIC-ISEL-NEXT:    global_store_b128 v[0:1], v[2:5], off
 ; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
 ; GFX1250-ISEL-LABEL: av_global_store_b128_0_11:
 ; GFX1250-ISEL:       ; %bb.0: ; %entry
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt_dscnt 0x0
 ; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
-; GFX1250-ISEL-NEXT:    av_global_store_b128 v[0:1], v[2:5], off scope:SCOPE_SYS
+; GFX1250-ISEL-NEXT:    global_store_b128 v[0:1], v[2:5], off scope:SCOPE_SYS
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
 ;
 ; GFX12-GENERIC-ISEL-LABEL: av_global_store_b128_0_11:
@@ -764,7 +764,7 @@ define void @av_global_store_b128_0_11(ptr addrspace(1) %addr, <4 x i32> %data)
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
-; GFX12-GENERIC-ISEL-NEXT:    av_global_store_b128 v[0:1], v[2:5], off scope:SCOPE_SYS
+; GFX12-GENERIC-ISEL-NEXT:    global_store_b128 v[0:1], v[2:5], off scope:SCOPE_SYS
 ; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 entry:
   call void @llvm.amdgcn.av.global.store.b128(ptr addrspace(1) %addr, <4 x i32> %data, metadata !3)
@@ -891,7 +891,7 @@ define void @global_store_i8_zext_vgpr(ptr addrspace(1) %sbase, ptr addrspace(1)
 ; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX11-GENERIC-SDAG-NEXT:    av_global_store_b128 v[0:1], v[4:7], off
+; GFX11-GENERIC-SDAG-NEXT:    global_store_b128 v[0:1], v[4:7], off
 ; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
 ; GFX1250-SDAG-LABEL: global_store_i8_zext_vgpr:
@@ -904,7 +904,7 @@ define void @global_store_i8_zext_vgpr(ptr addrspace(1) %sbase, ptr addrspace(1)
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1250-SDAG-NEXT:    v_add_nc_u64_e32 v[0:1], v[0:1], v[2:3]
-; GFX1250-SDAG-NEXT:    av_global_store_b128 v[0:1], v[4:7], off
+; GFX1250-SDAG-NEXT:    global_store_b128 v[0:1], v[4:7], off
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
 ; GFX12-GENERIC-SDAG-LABEL: global_store_i8_zext_vgpr:
@@ -919,7 +919,7 @@ define void @global_store_i8_zext_vgpr(ptr addrspace(1) %sbase, ptr addrspace(1)
 ; GFX12-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)
 ; GFX12-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX12-GENERIC-SDAG-NEXT:    av_global_store_b128 v[0:1], v[4:7], off
+; GFX12-GENERIC-SDAG-NEXT:    global_store_b128 v[0:1], v[4:7], off
 ; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
 ; GFX9-GENERIC-ISEL-LABEL: global_store_i8_zext_vgpr:
@@ -1040,7 +1040,7 @@ define void @global_store_i8_zext_vgpr(ptr addrspace(1) %sbase, ptr addrspace(1)
 ; GFX11-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX11-GENERIC-ISEL-NEXT:    av_global_store_b128 v[0:1], v[4:7], off
+; GFX11-GENERIC-ISEL-NEXT:    global_store_b128 v[0:1], v[4:7], off
 ; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
 ; GFX1250-ISEL-LABEL: global_store_i8_zext_vgpr:
@@ -1053,7 +1053,7 @@ define void @global_store_i8_zext_vgpr(ptr addrspace(1) %sbase, ptr addrspace(1)
 ; GFX1250-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1250-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
 ; GFX1250-ISEL-NEXT:    s_wait_xcnt 0x0
-; GFX1250-ISEL-NEXT:    av_global_store_b128 v[0:1], v[4:7], off
+; GFX1250-ISEL-NEXT:    global_store_b128 v[0:1], v[4:7], off
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
 ;
 ; GFX12-GENERIC-ISEL-LABEL: global_store_i8_zext_vgpr:
@@ -1068,7 +1068,7 @@ define void @global_store_i8_zext_vgpr(ptr addrspace(1) %sbase, ptr addrspace(1)
 ; GFX12-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_alu depctr_va_vcc(0)
 ; GFX12-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX12-GENERIC-ISEL-NEXT:    av_global_store_b128 v[0:1], v[4:7], off
+; GFX12-GENERIC-ISEL-NEXT:    global_store_b128 v[0:1], v[4:7], off
 ; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
   %voffset = load i32, ptr addrspace(1) %voffset.ptr
   %zext.offset = zext i32 %voffset to i64
@@ -1187,7 +1187,7 @@ define void @global_store_v4i32_zext_vgpr_offset_neg128(ptr addrspace(1) %sbase,
 ; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX11-GENERIC-SDAG-NEXT:    av_global_store_b128 v[0:1], v[3:6], off offset:-128
+; GFX11-GENERIC-SDAG-NEXT:    global_store_b128 v[0:1], v[3:6], off offset:-128
 ; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
 ; GFX1250-SDAG-LABEL: global_store_v4i32_zext_vgpr_offset_neg128:
@@ -1199,7 +1199,7 @@ define void @global_store_v4i32_zext_vgpr_offset_neg128(ptr addrspace(1) %sbase,
 ; GFX1250-SDAG-NEXT:    v_mov_b32_e32 v3, 0
 ; GFX1250-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1250-SDAG-NEXT:    v_add_nc_u64_e32 v[0:1], v[0:1], v[2:3]
-; GFX1250-SDAG-NEXT:    av_global_store_b128 v[0:1], v[4:7], off offset:-128
+; GFX1250-SDAG-NEXT:    global_store_b128 v[0:1], v[4:7], off offset:-128
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
 ; GFX12-GENERIC-SDAG-LABEL: global_store_v4i32_zext_vgpr_offset_neg128:
@@ -1212,7 +1212,7 @@ define void @global_store_v4i32_zext_vgpr_offset_neg128(ptr addrspace(1) %sbase,
 ; GFX12-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)
 ; GFX12-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX12-GENERIC-SDAG-NEXT:    av_global_store_b128 v[0:1], v[3:6], off offset:-128 scope:SCOPE_SE
+; GFX12-GENERIC-SDAG-NEXT:    global_store_b128 v[0:1], v[3:6], off offset:-128 scope:SCOPE_SE
 ; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
 ; GFX9-GENERIC-ISEL-LABEL: global_store_v4i32_zext_vgpr_offset_neg128:
@@ -1324,7 +1324,7 @@ define void @global_store_v4i32_zext_vgpr_offset_neg128(ptr addrspace(1) %sbase,
 ; GFX11-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX11-GENERIC-ISEL-NEXT:    av_global_store_b128 v[0:1], v[3:6], off offset:-128
+; GFX11-GENERIC-ISEL-NEXT:    global_store_b128 v[0:1], v[3:6], off offset:-128
 ; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
 ; GFX1250-ISEL-LABEL: global_store_v4i32_zext_vgpr_offset_neg128:
@@ -1335,7 +1335,7 @@ define void @global_store_v4i32_zext_vgpr_offset_neg128(ptr addrspace(1) %sbase,
 ; GFX1250-ISEL-NEXT:    v_dual_mov_b32 v8, v3 :: v_dual_mov_b32 v9, v4
 ; GFX1250-ISEL-NEXT:    v_dual_mov_b32 v10, v5 :: v_dual_mov_b32 v11, v6
 ; GFX1250-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX1250-ISEL-NEXT:    av_global_store_b128 v[0:1], v[8:11], off offset:-128
+; GFX1250-ISEL-NEXT:    global_store_b128 v[0:1], v[8:11], off offset:-128
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
 ;
 ; GFX12-GENERIC-ISEL-LABEL: global_store_v4i32_zext_vgpr_offset_neg128:
@@ -1348,7 +1348,7 @@ define void @global_store_v4i32_zext_vgpr_offset_neg128(ptr addrspace(1) %sbase,
 ; GFX12-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_alu depctr_va_vcc(0)
 ; GFX12-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX12-GENERIC-ISEL-NEXT:    av_global_store_b128 v[0:1], v[3:6], off offset:-128 scope:SCOPE_SE
+; GFX12-GENERIC-ISEL-NEXT:    global_store_b128 v[0:1], v[3:6], off offset:-128 scope:SCOPE_SE
 ; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
   %zext.offset = zext i32 %voffset to i64
   %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 %zext.offset
@@ -1474,7 +1474,7 @@ define void @global_store_i8_zext_vgpr_offset_2047(ptr addrspace(1) %sbase, ptr
 ; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX11-GENERIC-SDAG-NEXT:    av_global_store_b128 v[0:1], v[4:7], off offset:2047
+; GFX11-GENERIC-SDAG-NEXT:    global_store_b128 v[0:1], v[4:7], off offset:2047
 ; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
 ; GFX1250-SDAG-LABEL: global_store_i8_zext_vgpr_offset_2047:
@@ -1487,7 +1487,7 @@ define void @global_store_i8_zext_vgpr_offset_2047(ptr addrspace(1) %sbase, ptr
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1250-SDAG-NEXT:    v_add_nc_u64_e32 v[0:1], v[0:1], v[2:3]
-; GFX1250-SDAG-NEXT:    av_global_store_b128 v[0:1], v[4:7], off offset:2047 scope:SCOPE_DEV
+; GFX1250-SDAG-NEXT:    global_store_b128 v[0:1], v[4:7], off offset:2047 scope:SCOPE_DEV
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
 ; GFX12-GENERIC-SDAG-LABEL: global_store_i8_zext_vgpr_offset_2047:
@@ -1502,7 +1502,7 @@ define void @global_store_i8_zext_vgpr_offset_2047(ptr addrspace(1) %sbase, ptr
 ; GFX12-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)
 ; GFX12-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX12-GENERIC-SDAG-NEXT:    av_global_store_b128 v[0:1], v[4:7], off offset:2047 scope:SCOPE_DEV
+; GFX12-GENERIC-SDAG-NEXT:    global_store_b128 v[0:1], v[4:7], off offset:2047 scope:SCOPE_DEV
 ; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
 ; GFX9-GENERIC-ISEL-LABEL: global_store_i8_zext_vgpr_offset_2047:
@@ -1623,7 +1623,7 @@ define void @global_store_i8_zext_vgpr_offset_2047(ptr addrspace(1) %sbase, ptr
 ; GFX11-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX11-GENERIC-ISEL-NEXT:    av_global_store_b128 v[0:1], v[4:7], off offset:2047
+; GFX11-GENERIC-ISEL-NEXT:    global_store_b128 v[0:1], v[4:7], off offset:2047
 ; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
 ; GFX1250-ISEL-LABEL: global_store_i8_zext_vgpr_offset_2047:
@@ -1636,7 +1636,7 @@ define void @global_store_i8_zext_vgpr_offset_2047(ptr addrspace(1) %sbase, ptr
 ; GFX1250-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1250-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
 ; GFX1250-ISEL-NEXT:    s_wait_xcnt 0x0
-; GFX1250-ISEL-NEXT:    av_global_store_b128 v[0:1], v[4:7], off offset:2047 scope:SCOPE_DEV
+; GFX1250-ISEL-NEXT:    global_store_b128 v[0:1], v[4:7], off offset:2047 scope:SCOPE_DEV
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
 ;
 ; GFX12-GENERIC-ISEL-LABEL: global_store_i8_zext_vgpr_offset_2047:
@@ -1651,7 +1651,7 @@ define void @global_store_i8_zext_vgpr_offset_2047(ptr addrspace(1) %sbase, ptr
 ; GFX12-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_alu depctr_va_vcc(0)
 ; GFX12-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX12-GENERIC-ISEL-NEXT:    av_global_store_b128 v[0:1], v[4:7], off offset:2047 scope:SCOPE_DEV
+; GFX12-GENERIC-ISEL-NEXT:    global_store_b128 v[0:1], v[4:7], off offset:2047 scope:SCOPE_DEV
 ; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
   %voffset = load i32, ptr addrspace(1) %voffset.ptr
   %zext.offset = zext i32 %voffset to i64
@@ -1778,7 +1778,7 @@ define void @global_store_i8_zext_vgpr_offset_neg2048(ptr addrspace(1) %sbase, p
 ; GFX11-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX11-GENERIC-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX11-GENERIC-SDAG-NEXT:    av_global_store_b128 v[0:1], v[4:7], off offset:-2048
+; GFX11-GENERIC-SDAG-NEXT:    global_store_b128 v[0:1], v[4:7], off offset:-2048
 ; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
 ; GFX1250-SDAG-LABEL: global_store_i8_zext_vgpr_offset_neg2048:
@@ -1791,7 +1791,7 @@ define void @global_store_i8_zext_vgpr_offset_neg2048(ptr addrspace(1) %sbase, p
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1250-SDAG-NEXT:    v_add_nc_u64_e32 v[0:1], v[0:1], v[2:3]
-; GFX1250-SDAG-NEXT:    av_global_store_b128 v[0:1], v[4:7], off offset:-2048 scope:SCOPE_SYS
+; GFX1250-SDAG-NEXT:    global_store_b128 v[0:1], v[4:7], off offset:-2048 scope:SCOPE_SYS
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
 ; GFX12-GENERIC-SDAG-LABEL: global_store_i8_zext_vgpr_offset_neg2048:
@@ -1806,7 +1806,7 @@ define void @global_store_i8_zext_vgpr_offset_neg2048(ptr addrspace(1) %sbase, p
 ; GFX12-GENERIC-SDAG-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_alu depctr_va_vcc(0)
 ; GFX12-GENERIC-SDAG-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX12-GENERIC-SDAG-NEXT:    av_global_store_b128 v[0:1], v[4:7], off offset:-2048 scope:SCOPE_SYS
+; GFX12-GENERIC-SDAG-NEXT:    global_store_b128 v[0:1], v[4:7], off offset:-2048 scope:SCOPE_SYS
 ; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
 ; GFX9-GENERIC-ISEL-LABEL: global_store_i8_zext_vgpr_offset_neg2048:
@@ -1927,7 +1927,7 @@ define void @global_store_i8_zext_vgpr_offset_neg2048(ptr addrspace(1) %sbase, p
 ; GFX11-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX11-GENERIC-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX11-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX11-GENERIC-ISEL-NEXT:    av_global_store_b128 v[0:1], v[4:7], off offset:-2048
+; GFX11-GENERIC-ISEL-NEXT:    global_store_b128 v[0:1], v[4:7], off offset:-2048
 ; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
 ; GFX1250-ISEL-LABEL: global_store_i8_zext_vgpr_offset_neg2048:
@@ -1940,7 +1940,7 @@ define void @global_store_i8_zext_vgpr_offset_neg2048(ptr addrspace(1) %sbase, p
 ; GFX1250-ISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)
 ; GFX1250-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
 ; GFX1250-ISEL-NEXT:    s_wait_xcnt 0x0
-; GFX1250-ISEL-NEXT:    av_global_store_b128 v[0:1], v[4:7], off offset:-2048 scope:SCOPE_SYS
+; GFX1250-ISEL-NEXT:    global_store_b128 v[0:1], v[4:7], off offset:-2048 scope:SCOPE_SYS
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
 ;
 ; GFX12-GENERIC-ISEL-LABEL: global_store_i8_zext_vgpr_offset_neg2048:
@@ -1955,7 +1955,7 @@ define void @global_store_i8_zext_vgpr_offset_neg2048(ptr addrspace(1) %sbase, p
 ; GFX12-GENERIC-ISEL-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v2
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_alu depctr_va_vcc(0)
 ; GFX12-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v1, null, 0, v1, vcc_lo
-; GFX12-GENERIC-ISEL-NEXT:    av_global_store_b128 v[0:1], v[4:7], off offset:-2048 scope:SCOPE_SYS
+; GFX12-GENERIC-ISEL-NEXT:    global_store_b128 v[0:1], v[4:7], off offset:-2048 scope:SCOPE_SYS
 ; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
   %voffset = load i32, ptr addrspace(1) %voffset.ptr
   %zext.offset = zext i32 %voffset to i64
@@ -2065,7 +2065,7 @@ define void @global_store_saddr_i8_zext_vgpr(ptr addrspace(1) inreg %sbase, ptr
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    global_load_b32 v0, v[0:1], off
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
-; GFX11-GENERIC-SDAG-NEXT:    av_global_store_b128 v0, v[2:5], s[0:1]
+; GFX11-GENERIC-SDAG-NEXT:    global_store_b128 v0, v[2:5], s[0:1]
 ; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
 ; GFX1250-SDAG-LABEL: global_store_saddr_i8_zext_vgpr:
@@ -2075,7 +2075,7 @@ define void @global_store_saddr_i8_zext_vgpr(ptr addrspace(1) inreg %sbase, ptr
 ; GFX1250-SDAG-NEXT:    global_load_b32 v0, v[0:1], off
 ; GFX1250-SDAG-NEXT:    s_wait_xcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
-; GFX1250-SDAG-NEXT:    av_global_store_b128 v0, v[2:5], s[0:1]
+; GFX1250-SDAG-NEXT:    global_store_b128 v0, v[2:5], s[0:1]
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
 ; GFX12-GENERIC-SDAG-LABEL: global_store_saddr_i8_zext_vgpr:
@@ -2087,7 +2087,7 @@ define void @global_store_saddr_i8_zext_vgpr(ptr addrspace(1) inreg %sbase, ptr
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    global_load_b32 v0, v[0:1], off
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
-; GFX12-GENERIC-SDAG-NEXT:    av_global_store_b128 v0, v[2:5], s[0:1]
+; GFX12-GENERIC-SDAG-NEXT:    global_store_b128 v0, v[2:5], s[0:1]
 ; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
 ; GFX9-GENERIC-ISEL-LABEL: global_store_saddr_i8_zext_vgpr:
@@ -2182,7 +2182,7 @@ define void @global_store_saddr_i8_zext_vgpr(ptr addrspace(1) inreg %sbase, ptr
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    global_load_b32 v0, v[0:1], off
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
-; GFX11-GENERIC-ISEL-NEXT:    av_global_store_b128 v0, v[2:5], s[0:1]
+; GFX11-GENERIC-ISEL-NEXT:    global_store_b128 v0, v[2:5], s[0:1]
 ; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
 ; GFX1250-ISEL-LABEL: global_store_saddr_i8_zext_vgpr:
@@ -2192,7 +2192,7 @@ define void @global_store_saddr_i8_zext_vgpr(ptr addrspace(1) inreg %sbase, ptr
 ; GFX1250-ISEL-NEXT:    global_load_b32 v0, v[0:1], off
 ; GFX1250-ISEL-NEXT:    s_wait_xcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
-; GFX1250-ISEL-NEXT:    av_global_store_b128 v0, v[2:5], s[0:1]
+; GFX1250-ISEL-NEXT:    global_store_b128 v0, v[2:5], s[0:1]
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
 ;
 ; GFX12-GENERIC-ISEL-LABEL: global_store_saddr_i8_zext_vgpr:
@@ -2204,7 +2204,7 @@ define void @global_store_saddr_i8_zext_vgpr(ptr addrspace(1) inreg %sbase, ptr
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    global_load_b32 v0, v[0:1], off
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
-; GFX12-GENERIC-ISEL-NEXT:    av_global_store_b128 v0, v[2:5], s[0:1]
+; GFX12-GENERIC-ISEL-NEXT:    global_store_b128 v0, v[2:5], s[0:1]
 ; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
   %voffset = load i32, ptr addrspace(1) %voffset.ptr
   %zext.offset = zext i32 %voffset to i64
@@ -2300,7 +2300,7 @@ define void @global_store_saddr_v4i32_zext_vgpr_offset_neg128(ptr addrspace(1) i
 ; GFX11-GENERIC-SDAG-LABEL: global_store_saddr_v4i32_zext_vgpr_offset_neg128:
 ; GFX11-GENERIC-SDAG:       ; %bb.0:
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
-; GFX11-GENERIC-SDAG-NEXT:    av_global_store_b128 v0, v[1:4], s[0:1] offset:-128
+; GFX11-GENERIC-SDAG-NEXT:    global_store_b128 v0, v[1:4], s[0:1] offset:-128
 ; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
 ; GFX1250-SDAG-LABEL: global_store_saddr_v4i32_zext_vgpr_offset_neg128:
@@ -2309,7 +2309,7 @@ define void @global_store_saddr_v4i32_zext_vgpr_offset_neg128(ptr addrspace(1) i
 ; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
 ; GFX1250-SDAG-NEXT:    v_dual_mov_b32 v5, v4 :: v_dual_mov_b32 v4, v3
 ; GFX1250-SDAG-NEXT:    v_dual_mov_b32 v3, v2 :: v_dual_mov_b32 v2, v1
-; GFX1250-SDAG-NEXT:    av_global_store_b128 v0, v[2:5], s[0:1] offset:-128
+; GFX1250-SDAG-NEXT:    global_store_b128 v0, v[2:5], s[0:1] offset:-128
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
 ; GFX12-GENERIC-SDAG-LABEL: global_store_saddr_v4i32_zext_vgpr_offset_neg128:
@@ -2319,7 +2319,7 @@ define void @global_store_saddr_v4i32_zext_vgpr_offset_neg128(ptr addrspace(1) i
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_samplecnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
-; GFX12-GENERIC-SDAG-NEXT:    av_global_store_b128 v0, v[1:4], s[0:1] offset:-128 scope:SCOPE_SE
+; GFX12-GENERIC-SDAG-NEXT:    global_store_b128 v0, v[1:4], s[0:1] offset:-128 scope:SCOPE_SE
 ; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
 ; GFX9-GENERIC-ISEL-LABEL: global_store_saddr_v4i32_zext_vgpr_offset_neg128:
@@ -2408,7 +2408,7 @@ define void @global_store_saddr_v4i32_zext_vgpr_offset_neg128(ptr addrspace(1) i
 ; GFX11-GENERIC-ISEL-LABEL: global_store_saddr_v4i32_zext_vgpr_offset_neg128:
 ; GFX11-GENERIC-ISEL:       ; %bb.0:
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
-; GFX11-GENERIC-ISEL-NEXT:    av_global_store_b128 v0, v[1:4], s[0:1] offset:-128
+; GFX11-GENERIC-ISEL-NEXT:    global_store_b128 v0, v[1:4], s[0:1] offset:-128
 ; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
 ; GFX1250-ISEL-LABEL: global_store_saddr_v4i32_zext_vgpr_offset_neg128:
@@ -2417,7 +2417,7 @@ define void @global_store_saddr_v4i32_zext_vgpr_offset_neg128(ptr addrspace(1) i
 ; GFX1250-ISEL-NEXT:    s_wait_kmcnt 0x0
 ; GFX1250-ISEL-NEXT:    v_dual_mov_b32 v6, v1 :: v_dual_mov_b32 v7, v2
 ; GFX1250-ISEL-NEXT:    v_dual_mov_b32 v8, v3 :: v_dual_mov_b32 v9, v4
-; GFX1250-ISEL-NEXT:    av_global_store_b128 v0, v[6:9], s[0:1] offset:-128
+; GFX1250-ISEL-NEXT:    global_store_b128 v0, v[6:9], s[0:1] offset:-128
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
 ;
 ; GFX12-GENERIC-ISEL-LABEL: global_store_saddr_v4i32_zext_vgpr_offset_neg128:
@@ -2427,7 +2427,7 @@ define void @global_store_saddr_v4i32_zext_vgpr_offset_neg128(ptr addrspace(1) i
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_samplecnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_bvhcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
-; GFX12-GENERIC-ISEL-NEXT:    av_global_store_b128 v0, v[1:4], s[0:1] offset:-128 scope:SCOPE_SE
+; GFX12-GENERIC-ISEL-NEXT:    global_store_b128 v0, v[1:4], s[0:1] offset:-128 scope:SCOPE_SE
 ; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
   %zext.offset = zext i32 %voffset to i64
   %gep0 = getelementptr inbounds i8, ptr addrspace(1) %sbase, i64 %zext.offset
@@ -2530,7 +2530,7 @@ define void @global_store_saddr_i8_zext_vgpr_offset_2047(ptr addrspace(1) inreg
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    global_load_b32 v0, v[0:1], off
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
-; GFX11-GENERIC-SDAG-NEXT:    av_global_store_b128 v0, v[2:5], s[0:1] offset:2047
+; GFX11-GENERIC-SDAG-NEXT:    global_store_b128 v0, v[2:5], s[0:1] offset:2047
 ; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
 ; GFX1250-SDAG-LABEL: global_store_saddr_i8_zext_vgpr_offset_2047:
@@ -2540,7 +2540,7 @@ define void @global_store_saddr_i8_zext_vgpr_offset_2047(ptr addrspace(1) inreg
 ; GFX1250-SDAG-NEXT:    global_load_b32 v0, v[0:1], off
 ; GFX1250-SDAG-NEXT:    s_wait_xcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
-; GFX1250-SDAG-NEXT:    av_global_store_b128 v0, v[2:5], s[0:1] offset:2047 scope:SCOPE_DEV
+; GFX1250-SDAG-NEXT:    global_store_b128 v0, v[2:5], s[0:1] offset:2047 scope:SCOPE_DEV
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
 ; GFX12-GENERIC-SDAG-LABEL: global_store_saddr_i8_zext_vgpr_offset_2047:
@@ -2552,7 +2552,7 @@ define void @global_store_saddr_i8_zext_vgpr_offset_2047(ptr addrspace(1) inreg
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    global_load_b32 v0, v[0:1], off
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
-; GFX12-GENERIC-SDAG-NEXT:    av_global_store_b128 v0, v[2:5], s[0:1] offset:2047 scope:SCOPE_DEV
+; GFX12-GENERIC-SDAG-NEXT:    global_store_b128 v0, v[2:5], s[0:1] offset:2047 scope:SCOPE_DEV
 ; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
 ; GFX9-GENERIC-ISEL-LABEL: global_store_saddr_i8_zext_vgpr_offset_2047:
@@ -2647,7 +2647,7 @@ define void @global_store_saddr_i8_zext_vgpr_offset_2047(ptr addrspace(1) inreg
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    global_load_b32 v0, v[0:1], off
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
-; GFX11-GENERIC-ISEL-NEXT:    av_global_store_b128 v0, v[2:5], s[0:1] offset:2047
+; GFX11-GENERIC-ISEL-NEXT:    global_store_b128 v0, v[2:5], s[0:1] offset:2047
 ; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
 ; GFX1250-ISEL-LABEL: global_store_saddr_i8_zext_vgpr_offset_2047:
@@ -2657,7 +2657,7 @@ define void @global_store_saddr_i8_zext_vgpr_offset_2047(ptr addrspace(1) inreg
 ; GFX1250-ISEL-NEXT:    global_load_b32 v0, v[0:1], off
 ; GFX1250-ISEL-NEXT:    s_wait_xcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
-; GFX1250-ISEL-NEXT:    av_global_store_b128 v0, v[2:5], s[0:1] offset:2047 scope:SCOPE_DEV
+; GFX1250-ISEL-NEXT:    global_store_b128 v0, v[2:5], s[0:1] offset:2047 scope:SCOPE_DEV
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
 ;
 ; GFX12-GENERIC-ISEL-LABEL: global_store_saddr_i8_zext_vgpr_offset_2047:
@@ -2669,7 +2669,7 @@ define void @global_store_saddr_i8_zext_vgpr_offset_2047(ptr addrspace(1) inreg
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    global_load_b32 v0, v[0:1], off
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
-; GFX12-GENERIC-ISEL-NEXT:    av_global_store_b128 v0, v[2:5], s[0:1] offset:2047 scope:SCOPE_DEV
+; GFX12-GENERIC-ISEL-NEXT:    global_store_b128 v0, v[2:5], s[0:1] offset:2047 scope:SCOPE_DEV
 ; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
   %voffset = load i32, ptr addrspace(1) %voffset.ptr
   %zext.offset = zext i32 %voffset to i64
@@ -2773,7 +2773,7 @@ define void @global_store_saddr_i8_zext_vgpr_offset_neg2048(ptr addrspace(1) inr
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-GENERIC-SDAG-NEXT:    global_load_b32 v0, v[0:1], off
 ; GFX11-GENERIC-SDAG-NEXT:    s_waitcnt vmcnt(0)
-; GFX11-GENERIC-SDAG-NEXT:    av_global_store_b128 v0, v[2:5], s[0:1] offset:-2048
+; GFX11-GENERIC-SDAG-NEXT:    global_store_b128 v0, v[2:5], s[0:1] offset:-2048
 ; GFX11-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
 ; GFX1250-SDAG-LABEL: global_store_saddr_i8_zext_vgpr_offset_neg2048:
@@ -2783,7 +2783,7 @@ define void @global_store_saddr_i8_zext_vgpr_offset_neg2048(ptr addrspace(1) inr
 ; GFX1250-SDAG-NEXT:    global_load_b32 v0, v[0:1], off
 ; GFX1250-SDAG-NEXT:    s_wait_xcnt 0x0
 ; GFX1250-SDAG-NEXT:    s_wait_loadcnt 0x0
-; GFX1250-SDAG-NEXT:    av_global_store_b128 v0, v[2:5], s[0:1] offset:-2048 scope:SCOPE_SYS
+; GFX1250-SDAG-NEXT:    global_store_b128 v0, v[2:5], s[0:1] offset:-2048 scope:SCOPE_SYS
 ; GFX1250-SDAG-NEXT:    s_set_pc_i64 s[30:31]
 ;
 ; GFX12-GENERIC-SDAG-LABEL: global_store_saddr_i8_zext_vgpr_offset_neg2048:
@@ -2795,7 +2795,7 @@ define void @global_store_saddr_i8_zext_vgpr_offset_neg2048(ptr addrspace(1) inr
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_kmcnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    global_load_b32 v0, v[0:1], off
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_loadcnt 0x0
-; GFX12-GENERIC-SDAG-NEXT:    av_global_store_b128 v0, v[2:5], s[0:1] offset:-2048 scope:SCOPE_SYS
+; GFX12-GENERIC-SDAG-NEXT:    global_store_b128 v0, v[2:5], s[0:1] offset:-2048 scope:SCOPE_SYS
 ; GFX12-GENERIC-SDAG-NEXT:    s_setpc_b64 s[30:31]
 ;
 ; GFX9-GENERIC-ISEL-LABEL: global_store_saddr_i8_zext_vgpr_offset_neg2048:
@@ -2890,7 +2890,7 @@ define void @global_store_saddr_i8_zext_vgpr_offset_neg2048(ptr addrspace(1) inr
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
 ; GFX11-GENERIC-ISEL-NEXT:    global_load_b32 v0, v[0:1], off
 ; GFX11-GENERIC-ISEL-NEXT:    s_waitcnt vmcnt(0)
-; GFX11-GENERIC-ISEL-NEXT:    av_global_store_b128 v0, v[2:5], s[0:1] offset:-2048
+; GFX11-GENERIC-ISEL-NEXT:    global_store_b128 v0, v[2:5], s[0:1] offset:-2048
 ; GFX11-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
 ;
 ; GFX1250-ISEL-LABEL: global_store_saddr_i8_zext_vgpr_offset_neg2048:
@@ -2900,7 +2900,7 @@ define void @global_store_saddr_i8_zext_vgpr_offset_neg2048(ptr addrspace(1) inr
 ; GFX1250-ISEL-NEXT:    global_load_b32 v0, v[0:1], off
 ; GFX1250-ISEL-NEXT:    s_wait_xcnt 0x0
 ; GFX1250-ISEL-NEXT:    s_wait_loadcnt 0x0
-; GFX1250-ISEL-NEXT:    av_global_store_b128 v0, v[2:5], s[0:1] offset:-2048 scope:SCOPE_SYS
+; GFX1250-ISEL-NEXT:    global_store_b128 v0, v[2:5], s[0:1] offset:-2048 scope:SCOPE_SYS
 ; GFX1250-ISEL-NEXT:    s_set_pc_i64 s[30:31]
 ;
 ; GFX12-GENERIC-ISEL-LABEL: global_store_saddr_i8_zext_vgpr_offset_neg2048:
@@ -2912,7 +2912,7 @@ define void @global_store_saddr_i8_zext_vgpr_offset_neg2048(ptr addrspace(1) inr
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_kmcnt 0x0
 ; GFX12-GENERIC-ISEL-NEXT:    global_load_b32 v0, v[0:1], off
 ; GFX12-GENERIC-ISEL-NEXT:    s_wait_loadcnt 0x0
-; GFX12-GENERIC-ISEL-NEXT:    av_global_store_b128 v0, v[2:5], s[0:1] offset:-2048 scope:SCOPE_SYS
+; GFX12-GENERIC-ISEL-NEXT:    global_store_b128 v0, v[2:5], s[0:1] offset:-2048 scope:SCOPE_SYS
 ; GFX12-GENERIC-ISEL-NEXT:    s_setpc_b64 s[30:31]
   %voffset = load i32, ptr addrspace(1) %voffset.ptr
   %zext.offset = zext i32 %voffset to i64
@@ -3115,15 +3115,15 @@ define amdgpu_kernel void @global_store_saddr_uniform_ptr_in_vgprs(i32 %voffset,
 ; GFX11-GENERIC-SDAG-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX11-GENERIC-SDAG-NEXT:    v_readfirstlane_b32 s0, v4
 ; GFX11-GENERIC-SDAG-NEXT:    v_readfirstlane_b32 s1, v5
-; GFX11-GENERIC-SDAG-NEXT:    av_global_store_b128 v6, v[0:3], s[0:1]
+; GFX11-GENERIC-SDAG-NEXT:    global_store_b128 v6, v[0:3], s[0:1]
 ; GFX11-GENERIC-SDAG-NEXT:    s_endpgm
 ;
 ; GFX1250-SDAG-LABEL: global_store_saddr_uniform_ptr_in_vgprs:
 ; GFX1250-SDAG:       ; %bb.0:
-; GFX1250-SDAG-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_WAVE_MODE, 25, 1), 1
+; GFX1250-SDAG-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_WAVE_MODE, 25, 1), 1 ; msbs: dst=0 src0=0 src1=0 src2=0
 ; GFX1250-SDAG-NEXT:    s_clause 0x1
-; GFX1250-SDAG-NEXT:    s_load_b32 s6, s[4:5], 0x24
-; GFX1250-SDAG-NEXT:    s_load_b128 s[0:3], s[4:5], 0x34
+; GFX1250-SDAG-NEXT:    s_load_b32 s6, s[4:5], 0x24 nv
+; GFX1250-SDAG-NEXT:    s_load_b128 s[0:3], s[4:5], 0x34 nv
 ; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
 ; GFX1250-SDAG-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v6, s6
 ; GFX1250-SDAG-NEXT:    ds_load_b64 v[4:5], v0
@@ -3132,7 +3132,7 @@ define amdgpu_kernel void @global_store_saddr_uniform_ptr_in_vgprs(i32 %voffset,
 ; GFX1250-SDAG-NEXT:    s_wait_dscnt 0x0
 ; GFX1250-SDAG-NEXT:    v_readfirstlane_b32 s0, v4
 ; GFX1250-SDAG-NEXT:    v_readfirstlane_b32 s1, v5
-; GFX1250-SDAG-NEXT:    av_global_store_b128 v6, v[0:3], s[0:1]
+; GFX1250-SDAG-NEXT:    global_store_b128 v6, v[0:3], s[0:1]
 ; GFX1250-SDAG-NEXT:    s_endpgm
 ;
 ; GFX12-GENERIC-SDAG-LABEL: global_store_saddr_uniform_ptr_in_vgprs:
@@ -3149,7 +3149,7 @@ define amdgpu_kernel void @global_store_saddr_uniform_ptr_in_vgprs(i32 %voffset,
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_dscnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    v_readfirstlane_b32 s0, v4
 ; GFX12-GENERIC-SDAG-NEXT:    v_readfirstlane_b32 s1, v5
-; GFX12-GENERIC-SDAG-NEXT:    av_global_store_b128 v6, v[0:3], s[0:1]
+; GFX12-GENERIC-SDAG-NEXT:    global_store_b128 v6, v[0:3], s[0:1]
 ; GFX12-GENERIC-SDAG-NEXT:    s_endpgm
 ;
 ; GFX9-GENERIC-ISEL-LABEL: global_store_saddr_uniform_ptr_in_vgprs:
@@ -3352,15 +3352,15 @@ define amdgpu_kernel void @global_store_saddr_uniform_ptr_in_vgprs(i32 %voffset,
 ; GFX11-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v5, null, v1, v3, vcc_lo
 ; GFX11-GENERIC-ISEL-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v3, s3
 ; GFX11-GENERIC-ISEL-NEXT:    v_dual_mov_b32 v1, s1 :: v_dual_mov_b32 v2, s2
-; GFX11-GENERIC-ISEL-NEXT:    av_global_store_b128 v[4:5], v[0:3], off
+; GFX11-GENERIC-ISEL-NEXT:    global_store_b128 v[4:5], v[0:3], off
 ; GFX11-GENERIC-ISEL-NEXT:    s_endpgm
 ;
 ; GFX1250-ISEL-LABEL: global_store_saddr_uniform_ptr_in_vgprs:
 ; GFX1250-ISEL:       ; %bb.0:
-; GFX1250-ISEL-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_WAVE_MODE, 25, 1), 1
+; GFX1250-ISEL-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_WAVE_MODE, 25, 1), 1 ; msbs: dst=0 src0=0 src1=0 src2=0
 ; GFX1250-ISEL-NEXT:    s_clause 0x1
-; GFX1250-ISEL-NEXT:    s_load_b32 s6, s[4:5], 0x24
-; GFX1250-ISEL-NEXT:    s_load_b128 s[0:3], s[4:5], 0x34
+; GFX1250-ISEL-NEXT:    s_load_b32 s6, s[4:5], 0x24 nv
+; GFX1250-ISEL-NEXT:    s_load_b128 s[0:3], s[4:5], 0x34 nv
 ; GFX1250-ISEL-NEXT:    v_mov_b32_e32 v0, 0
 ; GFX1250-ISEL-NEXT:    s_mov_b32 s7, 0
 ; GFX1250-ISEL-NEXT:    ds_load_b64 v[0:1], v0
@@ -3372,7 +3372,7 @@ define amdgpu_kernel void @global_store_saddr_uniform_ptr_in_vgprs(i32 %voffset,
 ; GFX1250-ISEL-NEXT:    v_add_co_ci_u32_e64 v5, null, v1, v3, vcc_lo
 ; GFX1250-ISEL-NEXT:    v_mov_b64_e32 v[0:1], s[0:1]
 ; GFX1250-ISEL-NEXT:    v_mov_b64_e32 v[2:3], s[2:3]
-; GFX1250-ISEL-NEXT:    av_global_store_b128 v[4:5], v[0:3], off
+; GFX1250-ISEL-NEXT:    global_store_b128 v[4:5], v[0:3], off
 ; GFX1250-ISEL-NEXT:    s_endpgm
 ;
 ; GFX12-GENERIC-ISEL-LABEL: global_store_saddr_uniform_ptr_in_vgprs:
@@ -3391,7 +3391,7 @@ define amdgpu_kernel void @global_store_saddr_uniform_ptr_in_vgprs(i32 %voffset,
 ; GFX12-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v5, null, v1, v3, vcc_lo
 ; GFX12-GENERIC-ISEL-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v3, s3
 ; GFX12-GENERIC-ISEL-NEXT:    v_dual_mov_b32 v1, s1 :: v_dual_mov_b32 v2, s2
-; GFX12-GENERIC-ISEL-NEXT:    av_global_store_b128 v[4:5], v[0:3], off
+; GFX12-GENERIC-ISEL-NEXT:    global_store_b128 v[4:5], v[0:3], off
 ; GFX12-GENERIC-ISEL-NEXT:    s_endpgm
   %sbase = load ptr addrspace(1), ptr addrspace(3) @ptr.in.lds
   %zext.offset = zext i32 %voffset to i64
@@ -3587,15 +3587,15 @@ define amdgpu_kernel void @global_store_saddr_uniform_ptr_in_vgprs_immoffset(i32
 ; GFX11-GENERIC-SDAG-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
 ; GFX11-GENERIC-SDAG-NEXT:    v_readfirstlane_b32 s0, v4
 ; GFX11-GENERIC-SDAG-NEXT:    v_readfirstlane_b32 s1, v5
-; GFX11-GENERIC-SDAG-NEXT:    av_global_store_b128 v6, v[0:3], s[0:1] offset:-120
+; GFX11-GENERIC-SDAG-NEXT:    global_store_b128 v6, v[0:3], s[0:1] offset:-120
 ; GFX11-GENERIC-SDAG-NEXT:    s_endpgm
 ;
 ; GFX1250-SDAG-LABEL: global_store_saddr_uniform_ptr_in_vgprs_immoffset:
 ; GFX1250-SDAG:       ; %bb.0:
-; GFX1250-SDAG-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_WAVE_MODE, 25, 1), 1
+; GFX1250-SDAG-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_WAVE_MODE, 25, 1), 1 ; msbs: dst=0 src0=0 src1=0 src2=0
 ; GFX1250-SDAG-NEXT:    s_clause 0x1
-; GFX1250-SDAG-NEXT:    s_load_b32 s6, s[4:5], 0x24
-; GFX1250-SDAG-NEXT:    s_load_b128 s[0:3], s[4:5], 0x34
+; GFX1250-SDAG-NEXT:    s_load_b32 s6, s[4:5], 0x24 nv
+; GFX1250-SDAG-NEXT:    s_load_b128 s[0:3], s[4:5], 0x34 nv
 ; GFX1250-SDAG-NEXT:    s_wait_kmcnt 0x0
 ; GFX1250-SDAG-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v6, s6
 ; GFX1250-SDAG-NEXT:    ds_load_b64 v[4:5], v0
@@ -3604,7 +3604,7 @@ define amdgpu_kernel void @global_store_saddr_uniform_ptr_in_vgprs_immoffset(i32
 ; GFX1250-SDAG-NEXT:    s_wait_dscnt 0x0
 ; GFX1250-SDAG-NEXT:    v_readfirstlane_b32 s0, v4
 ; GFX1250-SDAG-NEXT:    v_readfirstlane_b32 s1, v5
-; GFX1250-SDAG-NEXT:    av_global_store_b128 v6, v[0:3], s[0:1] offset:-120
+; GFX1250-SDAG-NEXT:    global_store_b128 v6, v[0:3], s[0:1] offset:-120
 ; GFX1250-SDAG-NEXT:    s_endpgm
 ;
 ; GFX12-GENERIC-SDAG-LABEL: global_store_saddr_uniform_ptr_in_vgprs_immoffset:
@@ -3621,7 +3621,7 @@ define amdgpu_kernel void @global_store_saddr_uniform_ptr_in_vgprs_immoffset(i32
 ; GFX12-GENERIC-SDAG-NEXT:    s_wait_dscnt 0x0
 ; GFX12-GENERIC-SDAG-NEXT:    v_readfirstlane_b32 s0, v4
 ; GFX12-GENERIC-SDAG-NEXT:    v_readfirstlane_b32 s1, v5
-; GFX12-GENERIC-SDAG-NEXT:    av_global_store_b128 v6, v[0:3], s[0:1] offset:-120 scope:SCOPE_SE
+; GFX12-GENERIC-SDAG-NEXT:    global_store_b128 v6, v[0:3], s[0:1] offset:-120 scope:SCOPE_SE
 ; GFX12-GENERIC-SDAG-NEXT:    s_endpgm
 ;
 ; GFX9-GENERIC-ISEL-LABEL: global_store_saddr_uniform_ptr_in_vgprs_immoffset:
@@ -3824,15 +3824,15 @@ define amdgpu_kernel void @global_store_saddr_uniform_ptr_in_vgprs_immoffset(i32
 ; GFX11-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v5, null, v1, v3, vcc_lo
 ; GFX11-GENERIC-ISEL-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v3, s3
 ; GFX11-GENERIC-ISEL-NEXT:    v_dual_mov_b32 v1, s1 :: v_dual_mov_b32 v2, s2
-; GFX11-GENERIC-ISEL-NEXT:    av_global_store_b128 v[4:5], v[0:3], off offset:-120
+; GFX11-GENERIC-ISEL-NEXT:    global_store_b128 v[4:5], v[0:3], off offset:-120
 ; GFX11-GENERIC-ISEL-NEXT:    s_endpgm
 ;
 ; GFX1250-ISEL-LABEL: global_store_saddr_uniform_ptr_in_vgprs_immoffset:
 ; GFX1250-ISEL:       ; %bb.0:
-; GFX1250-ISEL-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_WAVE_MODE, 25, 1), 1
+; GFX1250-ISEL-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_WAVE_MODE, 25, 1), 1 ; msbs: dst=0 src0=0 src1=0 src2=0
 ; GFX1250-ISEL-NEXT:    s_clause 0x1
-; GFX1250-ISEL-NEXT:    s_load_b32 s6, s[4:5], 0x24
-; GFX1250-ISEL-NEXT:    s_load_b128 s[0:3], s[4:5], 0x34
+; GFX1250-ISEL-NEXT:    s_load_b32 s6, s[4:5], 0x24 nv
+; GFX1250-ISEL-NEXT:    s_load_b128 s[0:3], s[4:5], 0x34 nv
 ; GFX1250-ISEL-NEXT:    v_mov_b32_e32 v0, 0
 ; GFX1250-ISEL-NEXT:    s_mov_b32 s7, 0
 ; GFX1250-ISEL-NEXT:    ds_load_b64 v[0:1], v0
@@ -3844,7 +3844,7 @@ define amdgpu_kernel void @global_store_saddr_uniform_ptr_in_vgprs_immoffset(i32
 ; GFX1250-ISEL-NEXT:    v_add_co_ci_u32_e64 v5, null, v1, v3, vcc_lo
 ; GFX1250-ISEL-NEXT:    v_mov_b64_e32 v[0:1], s[0:1]
 ; GFX1250-ISEL-NEXT:    v_mov_b64_e32 v[2:3], s[2:3]
-; GFX1250-ISEL-NEXT:    av_global_store_b128 v[4:5], v[0:3], off offset:-120
+; GFX1250-ISEL-NEXT:    global_store_b128 v[4:5], v[0:3], off offset:-120
 ; GFX1250-ISEL-NEXT:    s_endpgm
 ;
 ; GFX12-GENERIC-ISEL-LABEL: global_store_saddr_uniform_ptr_in_vgprs_immoffset:
@@ -3863,7 +3863,7 @@ define amdgpu_kernel void @global_store_saddr_uniform_ptr_in_vgprs_immoffset(i32
 ; GFX12-GENERIC-ISEL-NEXT:    v_add_co_ci_u32_e64 v5, null, v1, v3, vcc_lo
 ; GFX12-GENERIC-ISEL-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v3, s3
 ; GFX12-GENERIC-ISEL-NEXT:    v_dual_mov_b32 v1, s1 :: v_dual_mov_b32 v2, s2
-; GFX12-GENERIC-ISEL-NEXT:    av_global_store_b128 v[4:5], v[0:3], off offset:-120 scope:SCOPE_SE
+; GFX12-GENERIC-ISEL-NEXT:    global_store_b128 v[4:5], v[0:3], off offset:-120 scope:SCOPE_SE
 ; GFX12-GENERIC-ISEL-NEXT:    s_endpgm
   %sbase = load ptr addrspace(1), ptr addrspace(3) @ptr.in.lds
   %zext.offset = zext i32 %voffset to i64
diff --git a/llvm/test/CodeGen/AMDGPU/unsupported-av-global-load.ll b/llvm/test/CodeGen/AMDGPU/unsupported-av-global-load.ll
index c20a6bec97455..001256f52ea98 100644
--- a/llvm/test/CodeGen/AMDGPU/unsupported-av-global-load.ll
+++ b/llvm/test/CodeGen/AMDGPU/unsupported-av-global-load.ll
@@ -1,10 +1,10 @@
-; RUN: not --crash llc -global-isel=0 -mtriple=amdgcn -mcpu=gfx602          < %s 2>&1 | FileCheck -check-prefixes=GFX602          %s
-; RUN: not --crash llc -global-isel=0 -mtriple=amdgcn -mcpu=gfx705          < %s 2>&1 | FileCheck -check-prefixes=GFX705          %s
-; RUN: not --crash llc -global-isel=0 -mtriple=amdgcn -mcpu=gfx810          < %s 2>&1 | FileCheck -check-prefixes=GFX810          %s
+; RUN: not --crash llc -global-isel=0 -mtriple=amdgcn -mcpu=gfx602 -filetype=null < %s 2>&1 | FileCheck -check-prefixes=GFX602          %s
+; RUN: not --crash llc -global-isel=0 -mtriple=amdgcn -mcpu=gfx705 -filetype=null < %s 2>&1 | FileCheck -check-prefixes=GFX705          %s
+; RUN: not --crash llc -global-isel=0 -mtriple=amdgcn -mcpu=gfx810 -filetype=null < %s 2>&1 | FileCheck -check-prefixes=GFX810          %s
 
-; RUN: not llc -global-isel=1 -mtriple=amdgcn -mcpu=gfx602          < %s 2>&1 | FileCheck -check-prefixes=GFX602-GBL-ISEL          %s
-; RUN: not llc -global-isel=1 -mtriple=amdgcn -mcpu=gfx705          < %s 2>&1 | FileCheck -check-prefixes=GFX705-GBL-ISEL          %s
-; RUN: not llc -global-isel=1 -mtriple=amdgcn -mcpu=gfx810          < %s 2>&1 | FileCheck -check-prefixes=GFX810-GBL-ISEL          %s
+; RUN: not llc -global-isel=1 -mtriple=amdgcn -mcpu=gfx602 -filetype=null < %s 2>&1 | FileCheck -check-prefixes=GFX602-GBL-ISEL          %s
+; RUN: not llc -global-isel=1 -mtriple=amdgcn -mcpu=gfx705 -filetype=null < %s 2>&1 | FileCheck -check-prefixes=GFX705-GBL-ISEL          %s
+; RUN: not llc -global-isel=1 -mtriple=amdgcn -mcpu=gfx810 -filetype=null < %s 2>&1 | FileCheck -check-prefixes=GFX810-GBL-ISEL          %s
 
 define <4 x i32> @av_global_load_b128(ptr addrspace(1) %addr) {
 ; GFX602:          LLVM ERROR: Cannot select: intrinsic %llvm.amdgcn.av.global.load.b128
diff --git a/llvm/test/CodeGen/AMDGPU/unsupported-av-global-store.ll b/llvm/test/CodeGen/AMDGPU/unsupported-av-global-store.ll
index e4041c486e143..4859071e25e4c 100644
--- a/llvm/test/CodeGen/AMDGPU/unsupported-av-global-store.ll
+++ b/llvm/test/CodeGen/AMDGPU/unsupported-av-global-store.ll
@@ -1,10 +1,10 @@
-; RUN: not --crash llc -global-isel=0 -mtriple=amdgcn -mcpu=gfx602          < %s 2>&1 | FileCheck -check-prefixes=GFX602          %s
-; RUN: not --crash llc -global-isel=0 -mtriple=amdgcn -mcpu=gfx705          < %s 2>&1 | FileCheck -check-prefixes=GFX705          %s
-; RUN: not --crash llc -global-isel=0 -mtriple=amdgcn -mcpu=gfx810          < %s 2>&1 | FileCheck -check-prefixes=GFX810          %s
+; RUN: not --crash llc -global-isel=0 -mtriple=amdgcn -mcpu=gfx602 -filetype=null < %s 2>&1 | FileCheck -check-prefixes=GFX602          %s
+; RUN: not --crash llc -global-isel=0 -mtriple=amdgcn -mcpu=gfx705 -filetype=null < %s 2>&1 | FileCheck -check-prefixes=GFX705          %s
+; RUN: not --crash llc -global-isel=0 -mtriple=amdgcn -mcpu=gfx810 -filetype=null < %s 2>&1 | FileCheck -check-prefixes=GFX810          %s
 
-; RUN: not llc -global-isel=1 -mtriple=amdgcn -mcpu=gfx602          < %s 2>&1 | FileCheck -check-prefixes=GFX602-GBL-ISEL          %s
-; RUN: not llc -global-isel=1 -mtriple=amdgcn -mcpu=gfx705          < %s 2>&1 | FileCheck -check-prefixes=GFX705-GBL-ISEL          %s
-; RUN: not llc -global-isel=1 -mtriple=amdgcn -mcpu=gfx810          < %s 2>&1 | FileCheck -check-prefixes=GFX810-GBL-ISEL          %s
+; RUN: not llc -global-isel=1 -mtriple=amdgcn -mcpu=gfx602 -filetype=null < %s 2>&1 | FileCheck -check-prefixes=GFX602-GBL-ISEL          %s
+; RUN: not llc -global-isel=1 -mtriple=amdgcn -mcpu=gfx705 -filetype=null < %s 2>&1 | FileCheck -check-prefixes=GFX705-GBL-ISEL          %s
+; RUN: not llc -global-isel=1 -mtriple=amdgcn -mcpu=gfx810 -filetype=null < %s 2>&1 | FileCheck -check-prefixes=GFX810-GBL-ISEL          %s
 
 define void @av_global_store_b128(ptr addrspace(1) %addr, <4 x i32> %data) {
 ; GFX602:          LLVM ERROR: Cannot select: intrinsic %llvm.amdgcn.av.global.store.b128



More information about the llvm-branch-commits mailing list