; 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 @global_store_b128_0_00(ptr addrspace(1) %addr, <4 x i32> %data) { ; GFX9-GENERIC-SDAG-LABEL: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: global_store_b128 v[0:1], v[2:5], off ; GFX11-GENERIC-SDAG-NEXT: s_setpc_b64 s[30:31] ; ; GFX1250-SDAG-LABEL: 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: global_store_b128 v[0:1], v[2:5], off ; GFX1250-SDAG-NEXT: s_set_pc_i64 s[30:31] ; ; GFX12-GENERIC-SDAG-LABEL: 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: global_store_b128 v[0:1], v[2:5], off ; GFX12-GENERIC-SDAG-NEXT: s_setpc_b64 s[30:31] ; ; GFX9-GENERIC-ISEL-LABEL: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: global_store_b128 v[0:1], v[2:5], off ; GFX11-GENERIC-ISEL-NEXT: s_setpc_b64 s[30:31] ; ; GFX1250-ISEL-LABEL: 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: global_store_b128 v[0:1], v[2:5], off ; GFX1250-ISEL-NEXT: s_set_pc_i64 s[30:31] ; ; GFX12-GENERIC-ISEL-LABEL: 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: 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.global.store.b128(ptr addrspace(1) %addr, <4 x i32> %data, metadata !0) ret void } define void @global_store_b128_0_01(ptr addrspace(1) %addr, <4 x i32> %data) { ; GFX9-GENERIC-SDAG-LABEL: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: global_store_b128 v[0:1], v[2:5], off ; GFX11-GENERIC-SDAG-NEXT: s_setpc_b64 s[30:31] ; ; GFX1250-SDAG-LABEL: 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: global_store_b128 v[0:1], v[2:5], off ; GFX1250-SDAG-NEXT: s_set_pc_i64 s[30:31] ; ; GFX12-GENERIC-SDAG-LABEL: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: global_store_b128 v[0:1], v[2:5], off ; GFX11-GENERIC-ISEL-NEXT: s_setpc_b64 s[30:31] ; ; GFX1250-ISEL-LABEL: 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: global_store_b128 v[0:1], v[2:5], off ; GFX1250-ISEL-NEXT: s_set_pc_i64 s[30:31] ; ; GFX12-GENERIC-ISEL-LABEL: 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: 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.global.store.b128(ptr addrspace(1) %addr, <4 x i32> %data, metadata !1) ret void } define void @global_store_b128_0_cluster(ptr addrspace(1) %addr, <4 x i32> %data) { ; GFX9-GENERIC-SDAG-LABEL: global_store_b128_0_cluster: ; 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: global_store_b128_0_cluster: ; 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: global_store_b128_0_cluster: ; 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: global_store_b128_0_cluster: ; 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: global_store_b128_0_cluster: ; 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: global_store_b128_0_cluster: ; 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: global_store_b128_0_cluster: ; 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: global_store_b128_0_cluster: ; 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: global_store_b128_0_cluster: ; 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: global_store_b128_0_cluster: ; 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: global_store_b128_0_cluster: ; GFX11-GENERIC-SDAG: ; %bb.0: ; %entry ; GFX11-GENERIC-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) ; 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: global_store_b128_0_cluster: ; GFX1250-SDAG: ; %bb.0: ; %entry ; GFX1250-SDAG-NEXT: s_wait_loadcnt_dscnt 0x0 ; GFX1250-SDAG-NEXT: s_wait_kmcnt 0x0 ; 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] ; ; GFX12-GENERIC-SDAG-LABEL: global_store_b128_0_cluster: ; 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: 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: global_store_b128_0_cluster: ; 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: global_store_b128_0_cluster: ; 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: global_store_b128_0_cluster: ; 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: global_store_b128_0_cluster: ; 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: global_store_b128_0_cluster: ; 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: global_store_b128_0_cluster: ; 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: global_store_b128_0_cluster: ; 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: global_store_b128_0_cluster: ; 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: global_store_b128_0_cluster: ; 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: global_store_b128_0_cluster: ; 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: global_store_b128_0_cluster: ; GFX11-GENERIC-ISEL: ; %bb.0: ; %entry ; GFX11-GENERIC-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) ; 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: global_store_b128_0_cluster: ; GFX1250-ISEL: ; %bb.0: ; %entry ; GFX1250-ISEL-NEXT: s_wait_loadcnt_dscnt 0x0 ; GFX1250-ISEL-NEXT: s_wait_kmcnt 0x0 ; 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] ; ; GFX12-GENERIC-ISEL-LABEL: global_store_b128_0_cluster: ; 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: 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.global.store.b128(ptr addrspace(1) %addr, <4 x i32> %data, metadata !2) ret void } define void @global_store_b128_0_10(ptr addrspace(1) %addr, <4 x i32> %data) { ; GFX9-GENERIC-SDAG-LABEL: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: global_store_b128 v[0:1], v[2:5], off ; GFX11-GENERIC-SDAG-NEXT: s_setpc_b64 s[30:31] ; ; GFX1250-SDAG-LABEL: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: global_store_b128 v[0:1], v[2:5], off ; GFX11-GENERIC-ISEL-NEXT: s_setpc_b64 s[30:31] ; ; GFX1250-ISEL-LABEL: 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: 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: 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: 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.global.store.b128(ptr addrspace(1) %addr, <4 x i32> %data, metadata !3) ret void } define void @global_store_b128_0_11(ptr addrspace(1) %addr, <4 x i32> %data) { ; GFX9-GENERIC-SDAG-LABEL: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: global_store_b128 v[0:1], v[2:5], off ; GFX11-GENERIC-SDAG-NEXT: s_setpc_b64 s[30:31] ; ; GFX1250-SDAG-LABEL: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: global_store_b128 v[0:1], v[2:5], off ; GFX11-GENERIC-ISEL-NEXT: s_setpc_b64 s[30:31] ; ; GFX1250-ISEL-LABEL: 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: 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: 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: 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.global.store.b128(ptr addrspace(1) %addr, <4 x i32> %data, metadata !4) 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: 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: 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: 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: 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: 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: 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.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: 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: 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: 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: 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: 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: 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.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: 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: global_store_b128 v[0:1], v[4:7], off offset:2047 scope:SCOPE_SE ; 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: 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: 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: global_store_b128 v[0:1], v[4:7], off offset:2047 scope:SCOPE_SE ; 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: 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.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 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 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 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: 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: global_store_b128 v[0:1], v[4:7], off offset:-2048 scope:SCOPE_DEV ; 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: global_store_b128 v[0:1], v[4:7], off offset:-2048 scope:SCOPE_DEV ; 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 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 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 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: 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: global_store_b128 v[0:1], v[4:7], off offset:-2048 scope:SCOPE_DEV ; 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: global_store_b128 v[0:1], v[4:7], off offset:-2048 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 -2048 call void @llvm.amdgcn.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] 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: ; 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] 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: ; 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] 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: ; 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: 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: global_store_b128 v0, v[2:5], s[0:1] scope:SCOPE_SYS ; 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: global_store_b128 v0, v[2:5], s[0:1] scope:SCOPE_SYS ; 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] 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: ; 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] 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: ; 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] 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: ; 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: 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: global_store_b128 v0, v[2:5], s[0:1] scope:SCOPE_SYS ; 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: global_store_b128 v0, v[2:5], s[0:1] 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 call void @llvm.amdgcn.global.store.b128(ptr addrspace(1) %gep0, <4 x i32> %data, metadata !4) 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 ; 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 ; 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 ; 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: 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: 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: global_store_b128 v0, v[1:4], s[0:1] offset:-128 ; 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 ; 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 ; 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 ; 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: 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: 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: global_store_b128 v0, v[1:4], s[0:1] offset:-128 ; 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.global.store.b128(ptr addrspace(1) %gep1, <4 x i32> %data, metadata !0) 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 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_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 sc0 ; 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 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_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: 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: global_store_b128 v0, v[2:5], s[0:1] offset:2047 ; 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: global_store_b128 v0, v[2:5], s[0:1] offset:2047 scope:SCOPE_SE ; 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 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_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 sc0 ; 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 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_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: 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: global_store_b128 v0, v[2:5], s[0:1] offset:2047 ; 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: global_store_b128 v0, v[2:5], s[0:1] offset:2047 scope:SCOPE_SE ; 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.global.store.b128(ptr addrspace(1) %gep1, <4 x i32> %data, metadata !1) 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 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 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 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: 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: global_store_b128 v0, v[2:5], s[0:1] offset:-2048 scope:SCOPE_SE ; 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: global_store_b128 v0, v[2:5], s[0:1] offset:-2048 scope:SCOPE_DEV ; 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 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 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 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: 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: global_store_b128 v0, v[2:5], s[0:1] offset:-2048 scope:SCOPE_SE ; 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: global_store_b128 v0, v[2:5], s[0:1] offset:-2048 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 -2048 call void @llvm.amdgcn.global.store.b128(ptr addrspace(1) %gep1, <4 x i32> %data, metadata !2) ret void } ;;------------------------------------------------------------------------------ ;; Uniformity edge cases ;;------------------------------------------------------------------------------ @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] sc1 ; 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] sc1 ; 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] sc1 ; 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: 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: global_prefetch_b8 v0, s[0:1] scope:SCOPE_SE ; GFX1250-SDAG-NEXT: v_nop ; 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 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 ; 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: global_store_b128 v6, v[0:3], s[0:1] scope:SCOPE_DEV ; 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: global_store_b128 v6, v[0:3], s[0:1] scope:SCOPE_DEV ; 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 sc1 ; 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 sc1 ; 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 sc1 ; 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: 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: global_prefetch_b8 v0, s[0:1] scope:SCOPE_SE ; GFX1250-ISEL-NEXT: v_nop ; 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 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 ; 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: global_store_b128 v[4:5], v[0:3], off scope:SCOPE_DEV ; 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: global_store_b128 v[4:5], v[0:3], off scope:SCOPE_DEV ; 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.global.store.b128(ptr addrspace(1) %gep0, <4 x i32> %data, metadata !3) 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 sc1 ; 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 sc1 ; 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 sc1 ; 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: 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: global_prefetch_b8 v0, s[0:1] scope:SCOPE_SE ; GFX1250-SDAG-NEXT: v_nop ; 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 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 ; 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: global_store_b128 v6, v[0:3], s[0:1] offset:-120 scope:SCOPE_SYS ; 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: global_store_b128 v6, v[0:3], s[0:1] offset:-120 scope:SCOPE_SYS ; 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 sc1 ; 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 sc1 ; 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 sc1 ; 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: 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: global_prefetch_b8 v0, s[0:1] scope:SCOPE_SE ; GFX1250-ISEL-NEXT: v_nop ; 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 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 ; 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: global_store_b128 v[4:5], v[0:3], off offset:-120 scope:SCOPE_SYS ; 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: global_store_b128 v[4:5], v[0:3], off offset:-120 scope:SCOPE_SYS ; 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.global.store.b128(ptr addrspace(1) %gep1, <4 x i32> %data, metadata !4) ret void } ;;============================================================================== ;; } End saddr addressing modes ;;============================================================================== !0 = !{!"wavefront"} !1 = !{!"workgroup"} !2 = !{!"cluster"} !3 = !{!"agent"} !4 = !{!""} ;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line: ; GFX: {{.*}} ; GFX-ISEL: {{.*}} ; GFX-SDAG: {{.*}}