blob: 71d739519d5bb970ac9039531fa664f741880005 [file]
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
; Check the cache policy bits produced by scope metadata on av operations.
; RUN: llc -global-isel=0 -mtriple=amdgcn -mcpu=gfx942 < %s | FileCheck -check-prefix=GFX942-SDAG %s
; RUN: llc -global-isel=0 -mtriple=amdgcn -mcpu=gfx1012 < %s | FileCheck -check-prefix=GFX1012-SDAG %s
; RUN: llc -global-isel=0 -mtriple=amdgcn -mcpu=gfx1100 < %s | FileCheck -check-prefix=GFX1100-SDAG %s
; RUN: llc -global-isel=0 -mtriple=amdgcn -mcpu=gfx1250 < %s | FileCheck -check-prefix=GFX1250-SDAG %s
; RUN: llc -global-isel=0 -mtriple=amdgcn -mcpu=gfx1012 -mattr=-cumode < %s | FileCheck -check-prefix=GFX1012-WGP-SDAG %s
; RUN: llc -global-isel=0 -mtriple=amdgcn -mcpu=gfx1100 -mattr=-cumode < %s | FileCheck -check-prefix=GFX1100-WGP-SDAG %s
; RUN: llc -global-isel=1 -mtriple=amdgcn -mcpu=gfx942 < %s | FileCheck -check-prefix=GFX942-ISEL %s
; RUN: llc -global-isel=1 -mtriple=amdgcn -mcpu=gfx1012 < %s | FileCheck -check-prefix=GFX1012-ISEL %s
; RUN: llc -global-isel=1 -mtriple=amdgcn -mcpu=gfx1100 < %s | FileCheck -check-prefix=GFX1100-ISEL %s
; RUN: llc -global-isel=1 -mtriple=amdgcn -mcpu=gfx1250 < %s | FileCheck -check-prefix=GFX1250-ISEL %s
; RUN: llc -global-isel=1 -mtriple=amdgcn -mcpu=gfx1012 -mattr=-cumode < %s | FileCheck -check-prefix=GFX1012-WGP-ISEL %s
; RUN: llc -global-isel=1 -mtriple=amdgcn -mcpu=gfx1100 -mattr=-cumode < %s | FileCheck -check-prefix=GFX1100-WGP-ISEL %s
; scope: wavefront
define <4 x i32> @global_load_wavefront(ptr addrspace(1) %p) {
; GFX942-SDAG-LABEL: global_load_wavefront:
; GFX942-SDAG: ; %bb.0:
; GFX942-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX942-SDAG-NEXT: global_load_dwordx4 v[0:3], v[0:1], off
; GFX942-SDAG-NEXT: s_waitcnt vmcnt(0)
; GFX942-SDAG-NEXT: s_setpc_b64 s[30:31]
;
; GFX1012-SDAG-LABEL: global_load_wavefront:
; GFX1012-SDAG: ; %bb.0:
; GFX1012-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1012-SDAG-NEXT: global_load_dwordx4 v[0:3], v[0:1], off
; GFX1012-SDAG-NEXT: s_waitcnt vmcnt(0)
; GFX1012-SDAG-NEXT: s_setpc_b64 s[30:31]
;
; GFX1100-SDAG-LABEL: global_load_wavefront:
; GFX1100-SDAG: ; %bb.0:
; GFX1100-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1100-SDAG-NEXT: global_load_b128 v[0:3], v[0:1], off
; GFX1100-SDAG-NEXT: s_waitcnt vmcnt(0)
; GFX1100-SDAG-NEXT: s_setpc_b64 s[30:31]
;
; GFX1250-SDAG-LABEL: global_load_wavefront:
; GFX1250-SDAG: ; %bb.0:
; GFX1250-SDAG-NEXT: s_wait_loadcnt_dscnt 0x0
; GFX1250-SDAG-NEXT: s_wait_kmcnt 0x0
; GFX1250-SDAG-NEXT: global_load_b128 v[0:3], v[0:1], off
; GFX1250-SDAG-NEXT: s_wait_loadcnt 0x0
; GFX1250-SDAG-NEXT: s_set_pc_i64 s[30:31]
;
; GFX1012-WGP-SDAG-LABEL: global_load_wavefront:
; GFX1012-WGP-SDAG: ; %bb.0:
; GFX1012-WGP-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1012-WGP-SDAG-NEXT: global_load_dwordx4 v[0:3], v[0:1], off
; GFX1012-WGP-SDAG-NEXT: s_waitcnt vmcnt(0)
; GFX1012-WGP-SDAG-NEXT: s_setpc_b64 s[30:31]
;
; GFX1100-WGP-SDAG-LABEL: global_load_wavefront:
; GFX1100-WGP-SDAG: ; %bb.0:
; GFX1100-WGP-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1100-WGP-SDAG-NEXT: global_load_b128 v[0:3], v[0:1], off
; GFX1100-WGP-SDAG-NEXT: s_waitcnt vmcnt(0)
; GFX1100-WGP-SDAG-NEXT: s_setpc_b64 s[30:31]
;
; GFX942-ISEL-LABEL: global_load_wavefront:
; GFX942-ISEL: ; %bb.0:
; GFX942-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX942-ISEL-NEXT: global_load_dwordx4 v[0:3], v[0:1], off
; GFX942-ISEL-NEXT: s_waitcnt vmcnt(0)
; GFX942-ISEL-NEXT: s_setpc_b64 s[30:31]
;
; GFX1012-ISEL-LABEL: global_load_wavefront:
; GFX1012-ISEL: ; %bb.0:
; GFX1012-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1012-ISEL-NEXT: global_load_dwordx4 v[0:3], v[0:1], off
; GFX1012-ISEL-NEXT: s_waitcnt vmcnt(0)
; GFX1012-ISEL-NEXT: s_setpc_b64 s[30:31]
;
; GFX1100-ISEL-LABEL: global_load_wavefront:
; GFX1100-ISEL: ; %bb.0:
; GFX1100-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1100-ISEL-NEXT: global_load_b128 v[0:3], v[0:1], off
; GFX1100-ISEL-NEXT: s_waitcnt vmcnt(0)
; GFX1100-ISEL-NEXT: s_setpc_b64 s[30:31]
;
; GFX1250-ISEL-LABEL: global_load_wavefront:
; GFX1250-ISEL: ; %bb.0:
; GFX1250-ISEL-NEXT: s_wait_loadcnt_dscnt 0x0
; GFX1250-ISEL-NEXT: s_wait_kmcnt 0x0
; GFX1250-ISEL-NEXT: global_load_b128 v[0:3], v[0:1], off
; GFX1250-ISEL-NEXT: s_wait_loadcnt 0x0
; GFX1250-ISEL-NEXT: s_set_pc_i64 s[30:31]
;
; GFX1012-WGP-ISEL-LABEL: global_load_wavefront:
; GFX1012-WGP-ISEL: ; %bb.0:
; GFX1012-WGP-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1012-WGP-ISEL-NEXT: global_load_dwordx4 v[0:3], v[0:1], off
; GFX1012-WGP-ISEL-NEXT: s_waitcnt vmcnt(0)
; GFX1012-WGP-ISEL-NEXT: s_setpc_b64 s[30:31]
;
; GFX1100-WGP-ISEL-LABEL: global_load_wavefront:
; GFX1100-WGP-ISEL: ; %bb.0:
; GFX1100-WGP-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1100-WGP-ISEL-NEXT: global_load_b128 v[0:3], v[0:1], off
; GFX1100-WGP-ISEL-NEXT: s_waitcnt vmcnt(0)
; GFX1100-WGP-ISEL-NEXT: s_setpc_b64 s[30:31]
%v = call <4 x i32> @llvm.amdgcn.av.load.b128.p1(ptr addrspace(1) %p, metadata !0)
ret <4 x i32> %v
}
; scope: workgroup
define <4 x i32> @global_load_workgroup(ptr addrspace(1) %p) {
; GFX942-SDAG-LABEL: global_load_workgroup:
; GFX942-SDAG: ; %bb.0:
; GFX942-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX942-SDAG-NEXT: global_load_dwordx4 v[0:3], v[0:1], off sc0
; GFX942-SDAG-NEXT: s_waitcnt vmcnt(0)
; GFX942-SDAG-NEXT: s_setpc_b64 s[30:31]
;
; GFX1012-SDAG-LABEL: global_load_workgroup:
; GFX1012-SDAG: ; %bb.0:
; GFX1012-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1012-SDAG-NEXT: global_load_dwordx4 v[0:3], v[0:1], off glc
; GFX1012-SDAG-NEXT: s_waitcnt vmcnt(0)
; GFX1012-SDAG-NEXT: s_setpc_b64 s[30:31]
;
; GFX1100-SDAG-LABEL: global_load_workgroup:
; GFX1100-SDAG: ; %bb.0:
; GFX1100-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1100-SDAG-NEXT: global_load_b128 v[0:3], v[0:1], off glc
; GFX1100-SDAG-NEXT: s_waitcnt vmcnt(0)
; GFX1100-SDAG-NEXT: s_setpc_b64 s[30:31]
;
; GFX1250-SDAG-LABEL: global_load_workgroup:
; GFX1250-SDAG: ; %bb.0:
; GFX1250-SDAG-NEXT: s_wait_loadcnt_dscnt 0x0
; GFX1250-SDAG-NEXT: s_wait_kmcnt 0x0
; GFX1250-SDAG-NEXT: global_load_b128 v[0:3], v[0:1], off
; GFX1250-SDAG-NEXT: s_wait_loadcnt 0x0
; GFX1250-SDAG-NEXT: s_set_pc_i64 s[30:31]
;
; GFX1012-WGP-SDAG-LABEL: global_load_workgroup:
; GFX1012-WGP-SDAG: ; %bb.0:
; GFX1012-WGP-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1012-WGP-SDAG-NEXT: global_load_dwordx4 v[0:3], v[0:1], off glc
; GFX1012-WGP-SDAG-NEXT: s_waitcnt vmcnt(0)
; GFX1012-WGP-SDAG-NEXT: s_setpc_b64 s[30:31]
;
; GFX1100-WGP-SDAG-LABEL: global_load_workgroup:
; GFX1100-WGP-SDAG: ; %bb.0:
; GFX1100-WGP-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1100-WGP-SDAG-NEXT: global_load_b128 v[0:3], v[0:1], off glc
; GFX1100-WGP-SDAG-NEXT: s_waitcnt vmcnt(0)
; GFX1100-WGP-SDAG-NEXT: s_setpc_b64 s[30:31]
;
; GFX942-ISEL-LABEL: global_load_workgroup:
; GFX942-ISEL: ; %bb.0:
; GFX942-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX942-ISEL-NEXT: global_load_dwordx4 v[0:3], v[0:1], off sc0
; GFX942-ISEL-NEXT: s_waitcnt vmcnt(0)
; GFX942-ISEL-NEXT: s_setpc_b64 s[30:31]
;
; GFX1012-ISEL-LABEL: global_load_workgroup:
; GFX1012-ISEL: ; %bb.0:
; GFX1012-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1012-ISEL-NEXT: global_load_dwordx4 v[0:3], v[0:1], off glc
; GFX1012-ISEL-NEXT: s_waitcnt vmcnt(0)
; GFX1012-ISEL-NEXT: s_setpc_b64 s[30:31]
;
; GFX1100-ISEL-LABEL: global_load_workgroup:
; GFX1100-ISEL: ; %bb.0:
; GFX1100-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1100-ISEL-NEXT: global_load_b128 v[0:3], v[0:1], off glc
; GFX1100-ISEL-NEXT: s_waitcnt vmcnt(0)
; GFX1100-ISEL-NEXT: s_setpc_b64 s[30:31]
;
; GFX1250-ISEL-LABEL: global_load_workgroup:
; GFX1250-ISEL: ; %bb.0:
; GFX1250-ISEL-NEXT: s_wait_loadcnt_dscnt 0x0
; GFX1250-ISEL-NEXT: s_wait_kmcnt 0x0
; GFX1250-ISEL-NEXT: global_load_b128 v[0:3], v[0:1], off
; GFX1250-ISEL-NEXT: s_wait_loadcnt 0x0
; GFX1250-ISEL-NEXT: s_set_pc_i64 s[30:31]
;
; GFX1012-WGP-ISEL-LABEL: global_load_workgroup:
; GFX1012-WGP-ISEL: ; %bb.0:
; GFX1012-WGP-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1012-WGP-ISEL-NEXT: global_load_dwordx4 v[0:3], v[0:1], off glc
; GFX1012-WGP-ISEL-NEXT: s_waitcnt vmcnt(0)
; GFX1012-WGP-ISEL-NEXT: s_setpc_b64 s[30:31]
;
; GFX1100-WGP-ISEL-LABEL: global_load_workgroup:
; GFX1100-WGP-ISEL: ; %bb.0:
; GFX1100-WGP-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1100-WGP-ISEL-NEXT: global_load_b128 v[0:3], v[0:1], off glc
; GFX1100-WGP-ISEL-NEXT: s_waitcnt vmcnt(0)
; GFX1100-WGP-ISEL-NEXT: s_setpc_b64 s[30:31]
%v = call <4 x i32> @llvm.amdgcn.av.load.b128.p1(ptr addrspace(1) %p, metadata !1)
ret <4 x i32> %v
}
; scope: agent
define <4 x i32> @global_load_agent(ptr addrspace(1) %p) {
; GFX942-SDAG-LABEL: global_load_agent:
; GFX942-SDAG: ; %bb.0:
; GFX942-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX942-SDAG-NEXT: global_load_dwordx4 v[0:3], v[0:1], off sc1
; GFX942-SDAG-NEXT: s_waitcnt vmcnt(0)
; GFX942-SDAG-NEXT: s_setpc_b64 s[30:31]
;
; GFX1012-SDAG-LABEL: global_load_agent:
; GFX1012-SDAG: ; %bb.0:
; GFX1012-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1012-SDAG-NEXT: global_load_dwordx4 v[0:3], v[0:1], off glc dlc
; GFX1012-SDAG-NEXT: s_waitcnt vmcnt(0)
; GFX1012-SDAG-NEXT: s_setpc_b64 s[30:31]
;
; GFX1100-SDAG-LABEL: global_load_agent:
; GFX1100-SDAG: ; %bb.0:
; GFX1100-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1100-SDAG-NEXT: global_load_b128 v[0:3], v[0:1], off glc
; GFX1100-SDAG-NEXT: s_waitcnt vmcnt(0)
; GFX1100-SDAG-NEXT: s_setpc_b64 s[30:31]
;
; GFX1250-SDAG-LABEL: global_load_agent:
; GFX1250-SDAG: ; %bb.0:
; GFX1250-SDAG-NEXT: s_wait_loadcnt_dscnt 0x0
; GFX1250-SDAG-NEXT: s_wait_kmcnt 0x0
; GFX1250-SDAG-NEXT: global_load_b128 v[0:3], v[0:1], off scope:SCOPE_DEV
; GFX1250-SDAG-NEXT: s_wait_loadcnt 0x0
; GFX1250-SDAG-NEXT: s_set_pc_i64 s[30:31]
;
; GFX1012-WGP-SDAG-LABEL: global_load_agent:
; GFX1012-WGP-SDAG: ; %bb.0:
; GFX1012-WGP-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1012-WGP-SDAG-NEXT: global_load_dwordx4 v[0:3], v[0:1], off glc dlc
; GFX1012-WGP-SDAG-NEXT: s_waitcnt vmcnt(0)
; GFX1012-WGP-SDAG-NEXT: s_setpc_b64 s[30:31]
;
; GFX1100-WGP-SDAG-LABEL: global_load_agent:
; GFX1100-WGP-SDAG: ; %bb.0:
; GFX1100-WGP-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1100-WGP-SDAG-NEXT: global_load_b128 v[0:3], v[0:1], off glc
; GFX1100-WGP-SDAG-NEXT: s_waitcnt vmcnt(0)
; GFX1100-WGP-SDAG-NEXT: s_setpc_b64 s[30:31]
;
; GFX942-ISEL-LABEL: global_load_agent:
; GFX942-ISEL: ; %bb.0:
; GFX942-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX942-ISEL-NEXT: global_load_dwordx4 v[0:3], v[0:1], off sc1
; GFX942-ISEL-NEXT: s_waitcnt vmcnt(0)
; GFX942-ISEL-NEXT: s_setpc_b64 s[30:31]
;
; GFX1012-ISEL-LABEL: global_load_agent:
; GFX1012-ISEL: ; %bb.0:
; GFX1012-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1012-ISEL-NEXT: global_load_dwordx4 v[0:3], v[0:1], off glc dlc
; GFX1012-ISEL-NEXT: s_waitcnt vmcnt(0)
; GFX1012-ISEL-NEXT: s_setpc_b64 s[30:31]
;
; GFX1100-ISEL-LABEL: global_load_agent:
; GFX1100-ISEL: ; %bb.0:
; GFX1100-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1100-ISEL-NEXT: global_load_b128 v[0:3], v[0:1], off glc
; GFX1100-ISEL-NEXT: s_waitcnt vmcnt(0)
; GFX1100-ISEL-NEXT: s_setpc_b64 s[30:31]
;
; GFX1250-ISEL-LABEL: global_load_agent:
; GFX1250-ISEL: ; %bb.0:
; GFX1250-ISEL-NEXT: s_wait_loadcnt_dscnt 0x0
; GFX1250-ISEL-NEXT: s_wait_kmcnt 0x0
; GFX1250-ISEL-NEXT: global_load_b128 v[0:3], v[0:1], off scope:SCOPE_DEV
; GFX1250-ISEL-NEXT: s_wait_loadcnt 0x0
; GFX1250-ISEL-NEXT: s_set_pc_i64 s[30:31]
;
; GFX1012-WGP-ISEL-LABEL: global_load_agent:
; GFX1012-WGP-ISEL: ; %bb.0:
; GFX1012-WGP-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1012-WGP-ISEL-NEXT: global_load_dwordx4 v[0:3], v[0:1], off glc dlc
; GFX1012-WGP-ISEL-NEXT: s_waitcnt vmcnt(0)
; GFX1012-WGP-ISEL-NEXT: s_setpc_b64 s[30:31]
;
; GFX1100-WGP-ISEL-LABEL: global_load_agent:
; GFX1100-WGP-ISEL: ; %bb.0:
; GFX1100-WGP-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1100-WGP-ISEL-NEXT: global_load_b128 v[0:3], v[0:1], off glc
; GFX1100-WGP-ISEL-NEXT: s_waitcnt vmcnt(0)
; GFX1100-WGP-ISEL-NEXT: s_setpc_b64 s[30:31]
%v = call <4 x i32> @llvm.amdgcn.av.load.b128.p1(ptr addrspace(1) %p, metadata !2)
ret <4 x i32> %v
}
; scope: system (empty string = system scope)
define <4 x i32> @global_load_system(ptr addrspace(1) %p) {
; GFX942-SDAG-LABEL: global_load_system:
; GFX942-SDAG: ; %bb.0:
; GFX942-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX942-SDAG-NEXT: global_load_dwordx4 v[0:3], v[0:1], off sc0 sc1
; GFX942-SDAG-NEXT: s_waitcnt vmcnt(0)
; GFX942-SDAG-NEXT: s_setpc_b64 s[30:31]
;
; GFX1012-SDAG-LABEL: global_load_system:
; GFX1012-SDAG: ; %bb.0:
; GFX1012-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1012-SDAG-NEXT: global_load_dwordx4 v[0:3], v[0:1], off glc dlc
; GFX1012-SDAG-NEXT: s_waitcnt vmcnt(0)
; GFX1012-SDAG-NEXT: s_setpc_b64 s[30:31]
;
; GFX1100-SDAG-LABEL: global_load_system:
; GFX1100-SDAG: ; %bb.0:
; GFX1100-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1100-SDAG-NEXT: global_load_b128 v[0:3], v[0:1], off glc
; GFX1100-SDAG-NEXT: s_waitcnt vmcnt(0)
; GFX1100-SDAG-NEXT: s_setpc_b64 s[30:31]
;
; GFX1250-SDAG-LABEL: global_load_system:
; GFX1250-SDAG: ; %bb.0:
; GFX1250-SDAG-NEXT: s_wait_loadcnt_dscnt 0x0
; GFX1250-SDAG-NEXT: s_wait_kmcnt 0x0
; GFX1250-SDAG-NEXT: global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SYS
; GFX1250-SDAG-NEXT: s_wait_loadcnt 0x0
; GFX1250-SDAG-NEXT: s_set_pc_i64 s[30:31]
;
; GFX1012-WGP-SDAG-LABEL: global_load_system:
; GFX1012-WGP-SDAG: ; %bb.0:
; GFX1012-WGP-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1012-WGP-SDAG-NEXT: global_load_dwordx4 v[0:3], v[0:1], off glc dlc
; GFX1012-WGP-SDAG-NEXT: s_waitcnt vmcnt(0)
; GFX1012-WGP-SDAG-NEXT: s_setpc_b64 s[30:31]
;
; GFX1100-WGP-SDAG-LABEL: global_load_system:
; GFX1100-WGP-SDAG: ; %bb.0:
; GFX1100-WGP-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1100-WGP-SDAG-NEXT: global_load_b128 v[0:3], v[0:1], off glc
; GFX1100-WGP-SDAG-NEXT: s_waitcnt vmcnt(0)
; GFX1100-WGP-SDAG-NEXT: s_setpc_b64 s[30:31]
;
; GFX942-ISEL-LABEL: global_load_system:
; GFX942-ISEL: ; %bb.0:
; GFX942-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX942-ISEL-NEXT: global_load_dwordx4 v[0:3], v[0:1], off sc0 sc1
; GFX942-ISEL-NEXT: s_waitcnt vmcnt(0)
; GFX942-ISEL-NEXT: s_setpc_b64 s[30:31]
;
; GFX1012-ISEL-LABEL: global_load_system:
; GFX1012-ISEL: ; %bb.0:
; GFX1012-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1012-ISEL-NEXT: global_load_dwordx4 v[0:3], v[0:1], off glc dlc
; GFX1012-ISEL-NEXT: s_waitcnt vmcnt(0)
; GFX1012-ISEL-NEXT: s_setpc_b64 s[30:31]
;
; GFX1100-ISEL-LABEL: global_load_system:
; GFX1100-ISEL: ; %bb.0:
; GFX1100-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1100-ISEL-NEXT: global_load_b128 v[0:3], v[0:1], off glc
; GFX1100-ISEL-NEXT: s_waitcnt vmcnt(0)
; GFX1100-ISEL-NEXT: s_setpc_b64 s[30:31]
;
; GFX1250-ISEL-LABEL: global_load_system:
; GFX1250-ISEL: ; %bb.0:
; GFX1250-ISEL-NEXT: s_wait_loadcnt_dscnt 0x0
; GFX1250-ISEL-NEXT: s_wait_kmcnt 0x0
; GFX1250-ISEL-NEXT: global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SYS
; GFX1250-ISEL-NEXT: s_wait_loadcnt 0x0
; GFX1250-ISEL-NEXT: s_set_pc_i64 s[30:31]
;
; GFX1012-WGP-ISEL-LABEL: global_load_system:
; GFX1012-WGP-ISEL: ; %bb.0:
; GFX1012-WGP-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1012-WGP-ISEL-NEXT: global_load_dwordx4 v[0:3], v[0:1], off glc dlc
; GFX1012-WGP-ISEL-NEXT: s_waitcnt vmcnt(0)
; GFX1012-WGP-ISEL-NEXT: s_setpc_b64 s[30:31]
;
; GFX1100-WGP-ISEL-LABEL: global_load_system:
; GFX1100-WGP-ISEL: ; %bb.0:
; GFX1100-WGP-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1100-WGP-ISEL-NEXT: global_load_b128 v[0:3], v[0:1], off glc
; GFX1100-WGP-ISEL-NEXT: s_waitcnt vmcnt(0)
; GFX1100-WGP-ISEL-NEXT: s_setpc_b64 s[30:31]
%v = call <4 x i32> @llvm.amdgcn.av.load.b128.p1(ptr addrspace(1) %p, metadata !3)
ret <4 x i32> %v
}
; scope: singlethread
define <4 x i32> @global_load_singlethread(ptr addrspace(1) %p) {
; GFX942-SDAG-LABEL: global_load_singlethread:
; GFX942-SDAG: ; %bb.0:
; GFX942-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX942-SDAG-NEXT: global_load_dwordx4 v[0:3], v[0:1], off
; GFX942-SDAG-NEXT: s_waitcnt vmcnt(0)
; GFX942-SDAG-NEXT: s_setpc_b64 s[30:31]
;
; GFX1012-SDAG-LABEL: global_load_singlethread:
; GFX1012-SDAG: ; %bb.0:
; GFX1012-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1012-SDAG-NEXT: global_load_dwordx4 v[0:3], v[0:1], off
; GFX1012-SDAG-NEXT: s_waitcnt vmcnt(0)
; GFX1012-SDAG-NEXT: s_setpc_b64 s[30:31]
;
; GFX1100-SDAG-LABEL: global_load_singlethread:
; GFX1100-SDAG: ; %bb.0:
; GFX1100-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1100-SDAG-NEXT: global_load_b128 v[0:3], v[0:1], off
; GFX1100-SDAG-NEXT: s_waitcnt vmcnt(0)
; GFX1100-SDAG-NEXT: s_setpc_b64 s[30:31]
;
; GFX1250-SDAG-LABEL: global_load_singlethread:
; GFX1250-SDAG: ; %bb.0:
; GFX1250-SDAG-NEXT: s_wait_loadcnt_dscnt 0x0
; GFX1250-SDAG-NEXT: s_wait_kmcnt 0x0
; GFX1250-SDAG-NEXT: global_load_b128 v[0:3], v[0:1], off
; GFX1250-SDAG-NEXT: s_wait_loadcnt 0x0
; GFX1250-SDAG-NEXT: s_set_pc_i64 s[30:31]
;
; GFX1012-WGP-SDAG-LABEL: global_load_singlethread:
; GFX1012-WGP-SDAG: ; %bb.0:
; GFX1012-WGP-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1012-WGP-SDAG-NEXT: global_load_dwordx4 v[0:3], v[0:1], off
; GFX1012-WGP-SDAG-NEXT: s_waitcnt vmcnt(0)
; GFX1012-WGP-SDAG-NEXT: s_setpc_b64 s[30:31]
;
; GFX1100-WGP-SDAG-LABEL: global_load_singlethread:
; GFX1100-WGP-SDAG: ; %bb.0:
; GFX1100-WGP-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1100-WGP-SDAG-NEXT: global_load_b128 v[0:3], v[0:1], off
; GFX1100-WGP-SDAG-NEXT: s_waitcnt vmcnt(0)
; GFX1100-WGP-SDAG-NEXT: s_setpc_b64 s[30:31]
;
; GFX942-ISEL-LABEL: global_load_singlethread:
; GFX942-ISEL: ; %bb.0:
; GFX942-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX942-ISEL-NEXT: global_load_dwordx4 v[0:3], v[0:1], off
; GFX942-ISEL-NEXT: s_waitcnt vmcnt(0)
; GFX942-ISEL-NEXT: s_setpc_b64 s[30:31]
;
; GFX1012-ISEL-LABEL: global_load_singlethread:
; GFX1012-ISEL: ; %bb.0:
; GFX1012-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1012-ISEL-NEXT: global_load_dwordx4 v[0:3], v[0:1], off
; GFX1012-ISEL-NEXT: s_waitcnt vmcnt(0)
; GFX1012-ISEL-NEXT: s_setpc_b64 s[30:31]
;
; GFX1100-ISEL-LABEL: global_load_singlethread:
; GFX1100-ISEL: ; %bb.0:
; GFX1100-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1100-ISEL-NEXT: global_load_b128 v[0:3], v[0:1], off
; GFX1100-ISEL-NEXT: s_waitcnt vmcnt(0)
; GFX1100-ISEL-NEXT: s_setpc_b64 s[30:31]
;
; GFX1250-ISEL-LABEL: global_load_singlethread:
; GFX1250-ISEL: ; %bb.0:
; GFX1250-ISEL-NEXT: s_wait_loadcnt_dscnt 0x0
; GFX1250-ISEL-NEXT: s_wait_kmcnt 0x0
; GFX1250-ISEL-NEXT: global_load_b128 v[0:3], v[0:1], off
; GFX1250-ISEL-NEXT: s_wait_loadcnt 0x0
; GFX1250-ISEL-NEXT: s_set_pc_i64 s[30:31]
;
; GFX1012-WGP-ISEL-LABEL: global_load_singlethread:
; GFX1012-WGP-ISEL: ; %bb.0:
; GFX1012-WGP-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1012-WGP-ISEL-NEXT: global_load_dwordx4 v[0:3], v[0:1], off
; GFX1012-WGP-ISEL-NEXT: s_waitcnt vmcnt(0)
; GFX1012-WGP-ISEL-NEXT: s_setpc_b64 s[30:31]
;
; GFX1100-WGP-ISEL-LABEL: global_load_singlethread:
; GFX1100-WGP-ISEL: ; %bb.0:
; GFX1100-WGP-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1100-WGP-ISEL-NEXT: global_load_b128 v[0:3], v[0:1], off
; GFX1100-WGP-ISEL-NEXT: s_waitcnt vmcnt(0)
; GFX1100-WGP-ISEL-NEXT: s_setpc_b64 s[30:31]
%v = call <4 x i32> @llvm.amdgcn.av.load.b128.p1(ptr addrspace(1) %p, metadata !4)
ret <4 x i32> %v
}
; scope: cluster
define <4 x i32> @global_load_cluster(ptr addrspace(1) %p) {
; GFX942-SDAG-LABEL: global_load_cluster:
; GFX942-SDAG: ; %bb.0:
; GFX942-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX942-SDAG-NEXT: global_load_dwordx4 v[0:3], v[0:1], off sc1
; GFX942-SDAG-NEXT: s_waitcnt vmcnt(0)
; GFX942-SDAG-NEXT: s_setpc_b64 s[30:31]
;
; GFX1012-SDAG-LABEL: global_load_cluster:
; GFX1012-SDAG: ; %bb.0:
; GFX1012-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1012-SDAG-NEXT: global_load_dwordx4 v[0:3], v[0:1], off glc dlc
; GFX1012-SDAG-NEXT: s_waitcnt vmcnt(0)
; GFX1012-SDAG-NEXT: s_setpc_b64 s[30:31]
;
; GFX1100-SDAG-LABEL: global_load_cluster:
; GFX1100-SDAG: ; %bb.0:
; GFX1100-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1100-SDAG-NEXT: global_load_b128 v[0:3], v[0:1], off glc
; GFX1100-SDAG-NEXT: s_waitcnt vmcnt(0)
; GFX1100-SDAG-NEXT: s_setpc_b64 s[30:31]
;
; GFX1250-SDAG-LABEL: global_load_cluster:
; GFX1250-SDAG: ; %bb.0:
; GFX1250-SDAG-NEXT: s_wait_loadcnt_dscnt 0x0
; GFX1250-SDAG-NEXT: s_wait_kmcnt 0x0
; GFX1250-SDAG-NEXT: global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SE
; GFX1250-SDAG-NEXT: s_wait_loadcnt 0x0
; GFX1250-SDAG-NEXT: s_set_pc_i64 s[30:31]
;
; GFX1012-WGP-SDAG-LABEL: global_load_cluster:
; GFX1012-WGP-SDAG: ; %bb.0:
; GFX1012-WGP-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1012-WGP-SDAG-NEXT: global_load_dwordx4 v[0:3], v[0:1], off glc dlc
; GFX1012-WGP-SDAG-NEXT: s_waitcnt vmcnt(0)
; GFX1012-WGP-SDAG-NEXT: s_setpc_b64 s[30:31]
;
; GFX1100-WGP-SDAG-LABEL: global_load_cluster:
; GFX1100-WGP-SDAG: ; %bb.0:
; GFX1100-WGP-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1100-WGP-SDAG-NEXT: global_load_b128 v[0:3], v[0:1], off glc
; GFX1100-WGP-SDAG-NEXT: s_waitcnt vmcnt(0)
; GFX1100-WGP-SDAG-NEXT: s_setpc_b64 s[30:31]
;
; GFX942-ISEL-LABEL: global_load_cluster:
; GFX942-ISEL: ; %bb.0:
; GFX942-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX942-ISEL-NEXT: global_load_dwordx4 v[0:3], v[0:1], off sc1
; GFX942-ISEL-NEXT: s_waitcnt vmcnt(0)
; GFX942-ISEL-NEXT: s_setpc_b64 s[30:31]
;
; GFX1012-ISEL-LABEL: global_load_cluster:
; GFX1012-ISEL: ; %bb.0:
; GFX1012-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1012-ISEL-NEXT: global_load_dwordx4 v[0:3], v[0:1], off glc dlc
; GFX1012-ISEL-NEXT: s_waitcnt vmcnt(0)
; GFX1012-ISEL-NEXT: s_setpc_b64 s[30:31]
;
; GFX1100-ISEL-LABEL: global_load_cluster:
; GFX1100-ISEL: ; %bb.0:
; GFX1100-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1100-ISEL-NEXT: global_load_b128 v[0:3], v[0:1], off glc
; GFX1100-ISEL-NEXT: s_waitcnt vmcnt(0)
; GFX1100-ISEL-NEXT: s_setpc_b64 s[30:31]
;
; GFX1250-ISEL-LABEL: global_load_cluster:
; GFX1250-ISEL: ; %bb.0:
; GFX1250-ISEL-NEXT: s_wait_loadcnt_dscnt 0x0
; GFX1250-ISEL-NEXT: s_wait_kmcnt 0x0
; GFX1250-ISEL-NEXT: global_load_b128 v[0:3], v[0:1], off scope:SCOPE_SE
; GFX1250-ISEL-NEXT: s_wait_loadcnt 0x0
; GFX1250-ISEL-NEXT: s_set_pc_i64 s[30:31]
;
; GFX1012-WGP-ISEL-LABEL: global_load_cluster:
; GFX1012-WGP-ISEL: ; %bb.0:
; GFX1012-WGP-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1012-WGP-ISEL-NEXT: global_load_dwordx4 v[0:3], v[0:1], off glc dlc
; GFX1012-WGP-ISEL-NEXT: s_waitcnt vmcnt(0)
; GFX1012-WGP-ISEL-NEXT: s_setpc_b64 s[30:31]
;
; GFX1100-WGP-ISEL-LABEL: global_load_cluster:
; GFX1100-WGP-ISEL: ; %bb.0:
; GFX1100-WGP-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1100-WGP-ISEL-NEXT: global_load_b128 v[0:3], v[0:1], off glc
; GFX1100-WGP-ISEL-NEXT: s_waitcnt vmcnt(0)
; GFX1100-WGP-ISEL-NEXT: s_setpc_b64 s[30:31]
%v = call <4 x i32> @llvm.amdgcn.av.load.b128.p1(ptr addrspace(1) %p, metadata !5)
ret <4 x i32> %v
}
; scope: wavefront
define void @global_store_wavefront(ptr addrspace(1) %p, <4 x i32> %v) {
; GFX942-SDAG-LABEL: global_store_wavefront:
; GFX942-SDAG: ; %bb.0:
; GFX942-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX942-SDAG-NEXT: global_store_dwordx4 v[0:1], v[2:5], off
; GFX942-SDAG-NEXT: s_waitcnt vmcnt(0)
; GFX942-SDAG-NEXT: s_setpc_b64 s[30:31]
;
; GFX1012-SDAG-LABEL: global_store_wavefront:
; GFX1012-SDAG: ; %bb.0:
; GFX1012-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1012-SDAG-NEXT: global_store_dwordx4 v[0:1], v[2:5], off
; GFX1012-SDAG-NEXT: s_setpc_b64 s[30:31]
;
; GFX1100-SDAG-LABEL: global_store_wavefront:
; GFX1100-SDAG: ; %bb.0:
; GFX1100-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1100-SDAG-NEXT: global_store_b128 v[0:1], v[2:5], off
; GFX1100-SDAG-NEXT: s_setpc_b64 s[30:31]
;
; GFX1250-SDAG-LABEL: global_store_wavefront:
; GFX1250-SDAG: ; %bb.0:
; 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]
;
; GFX1012-WGP-SDAG-LABEL: global_store_wavefront:
; GFX1012-WGP-SDAG: ; %bb.0:
; GFX1012-WGP-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1012-WGP-SDAG-NEXT: global_store_dwordx4 v[0:1], v[2:5], off
; GFX1012-WGP-SDAG-NEXT: s_setpc_b64 s[30:31]
;
; GFX1100-WGP-SDAG-LABEL: global_store_wavefront:
; GFX1100-WGP-SDAG: ; %bb.0:
; GFX1100-WGP-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1100-WGP-SDAG-NEXT: global_store_b128 v[0:1], v[2:5], off
; GFX1100-WGP-SDAG-NEXT: s_setpc_b64 s[30:31]
;
; GFX942-ISEL-LABEL: global_store_wavefront:
; GFX942-ISEL: ; %bb.0:
; GFX942-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX942-ISEL-NEXT: global_store_dwordx4 v[0:1], v[2:5], off
; GFX942-ISEL-NEXT: s_waitcnt vmcnt(0)
; GFX942-ISEL-NEXT: s_setpc_b64 s[30:31]
;
; GFX1012-ISEL-LABEL: global_store_wavefront:
; GFX1012-ISEL: ; %bb.0:
; GFX1012-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1012-ISEL-NEXT: global_store_dwordx4 v[0:1], v[2:5], off
; GFX1012-ISEL-NEXT: s_setpc_b64 s[30:31]
;
; GFX1100-ISEL-LABEL: global_store_wavefront:
; GFX1100-ISEL: ; %bb.0:
; GFX1100-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1100-ISEL-NEXT: global_store_b128 v[0:1], v[2:5], off
; GFX1100-ISEL-NEXT: s_setpc_b64 s[30:31]
;
; GFX1250-ISEL-LABEL: global_store_wavefront:
; GFX1250-ISEL: ; %bb.0:
; 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]
;
; GFX1012-WGP-ISEL-LABEL: global_store_wavefront:
; GFX1012-WGP-ISEL: ; %bb.0:
; GFX1012-WGP-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1012-WGP-ISEL-NEXT: global_store_dwordx4 v[0:1], v[2:5], off
; GFX1012-WGP-ISEL-NEXT: s_setpc_b64 s[30:31]
;
; GFX1100-WGP-ISEL-LABEL: global_store_wavefront:
; GFX1100-WGP-ISEL: ; %bb.0:
; GFX1100-WGP-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1100-WGP-ISEL-NEXT: global_store_b128 v[0:1], v[2:5], off
; GFX1100-WGP-ISEL-NEXT: s_setpc_b64 s[30:31]
call void @llvm.amdgcn.av.store.b128.p1(ptr addrspace(1) %p, <4 x i32> %v, metadata !0)
ret void
}
; scope: workgroup
define void @global_store_workgroup(ptr addrspace(1) %p, <4 x i32> %v) {
; GFX942-SDAG-LABEL: global_store_workgroup:
; GFX942-SDAG: ; %bb.0:
; GFX942-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX942-SDAG-NEXT: global_store_dwordx4 v[0:1], v[2:5], off sc0
; GFX942-SDAG-NEXT: s_waitcnt vmcnt(0)
; GFX942-SDAG-NEXT: s_setpc_b64 s[30:31]
;
; GFX1012-SDAG-LABEL: global_store_workgroup:
; GFX1012-SDAG: ; %bb.0:
; GFX1012-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1012-SDAG-NEXT: global_store_dwordx4 v[0:1], v[2:5], off
; GFX1012-SDAG-NEXT: s_setpc_b64 s[30:31]
;
; GFX1100-SDAG-LABEL: global_store_workgroup:
; GFX1100-SDAG: ; %bb.0:
; GFX1100-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1100-SDAG-NEXT: global_store_b128 v[0:1], v[2:5], off
; GFX1100-SDAG-NEXT: s_setpc_b64 s[30:31]
;
; GFX1250-SDAG-LABEL: global_store_workgroup:
; GFX1250-SDAG: ; %bb.0:
; 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]
;
; GFX1012-WGP-SDAG-LABEL: global_store_workgroup:
; GFX1012-WGP-SDAG: ; %bb.0:
; GFX1012-WGP-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1012-WGP-SDAG-NEXT: global_store_dwordx4 v[0:1], v[2:5], off
; GFX1012-WGP-SDAG-NEXT: s_setpc_b64 s[30:31]
;
; GFX1100-WGP-SDAG-LABEL: global_store_workgroup:
; GFX1100-WGP-SDAG: ; %bb.0:
; GFX1100-WGP-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1100-WGP-SDAG-NEXT: global_store_b128 v[0:1], v[2:5], off
; GFX1100-WGP-SDAG-NEXT: s_setpc_b64 s[30:31]
;
; GFX942-ISEL-LABEL: global_store_workgroup:
; GFX942-ISEL: ; %bb.0:
; GFX942-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX942-ISEL-NEXT: global_store_dwordx4 v[0:1], v[2:5], off sc0
; GFX942-ISEL-NEXT: s_waitcnt vmcnt(0)
; GFX942-ISEL-NEXT: s_setpc_b64 s[30:31]
;
; GFX1012-ISEL-LABEL: global_store_workgroup:
; GFX1012-ISEL: ; %bb.0:
; GFX1012-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1012-ISEL-NEXT: global_store_dwordx4 v[0:1], v[2:5], off
; GFX1012-ISEL-NEXT: s_setpc_b64 s[30:31]
;
; GFX1100-ISEL-LABEL: global_store_workgroup:
; GFX1100-ISEL: ; %bb.0:
; GFX1100-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1100-ISEL-NEXT: global_store_b128 v[0:1], v[2:5], off
; GFX1100-ISEL-NEXT: s_setpc_b64 s[30:31]
;
; GFX1250-ISEL-LABEL: global_store_workgroup:
; GFX1250-ISEL: ; %bb.0:
; 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]
;
; GFX1012-WGP-ISEL-LABEL: global_store_workgroup:
; GFX1012-WGP-ISEL: ; %bb.0:
; GFX1012-WGP-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1012-WGP-ISEL-NEXT: global_store_dwordx4 v[0:1], v[2:5], off
; GFX1012-WGP-ISEL-NEXT: s_setpc_b64 s[30:31]
;
; GFX1100-WGP-ISEL-LABEL: global_store_workgroup:
; GFX1100-WGP-ISEL: ; %bb.0:
; GFX1100-WGP-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1100-WGP-ISEL-NEXT: global_store_b128 v[0:1], v[2:5], off
; GFX1100-WGP-ISEL-NEXT: s_setpc_b64 s[30:31]
call void @llvm.amdgcn.av.store.b128.p1(ptr addrspace(1) %p, <4 x i32> %v, metadata !1)
ret void
}
; scope: agent
define void @global_store_agent(ptr addrspace(1) %p, <4 x i32> %v) {
; GFX942-SDAG-LABEL: global_store_agent:
; GFX942-SDAG: ; %bb.0:
; GFX942-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX942-SDAG-NEXT: global_store_dwordx4 v[0:1], v[2:5], off sc1
; GFX942-SDAG-NEXT: s_waitcnt vmcnt(0)
; GFX942-SDAG-NEXT: s_setpc_b64 s[30:31]
;
; GFX1012-SDAG-LABEL: global_store_agent:
; GFX1012-SDAG: ; %bb.0:
; GFX1012-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1012-SDAG-NEXT: global_store_dwordx4 v[0:1], v[2:5], off
; GFX1012-SDAG-NEXT: s_setpc_b64 s[30:31]
;
; GFX1100-SDAG-LABEL: global_store_agent:
; GFX1100-SDAG: ; %bb.0:
; GFX1100-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1100-SDAG-NEXT: global_store_b128 v[0:1], v[2:5], off
; GFX1100-SDAG-NEXT: s_setpc_b64 s[30:31]
;
; GFX1250-SDAG-LABEL: global_store_agent:
; GFX1250-SDAG: ; %bb.0:
; 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]
;
; GFX1012-WGP-SDAG-LABEL: global_store_agent:
; GFX1012-WGP-SDAG: ; %bb.0:
; GFX1012-WGP-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1012-WGP-SDAG-NEXT: global_store_dwordx4 v[0:1], v[2:5], off
; GFX1012-WGP-SDAG-NEXT: s_setpc_b64 s[30:31]
;
; GFX1100-WGP-SDAG-LABEL: global_store_agent:
; GFX1100-WGP-SDAG: ; %bb.0:
; GFX1100-WGP-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1100-WGP-SDAG-NEXT: global_store_b128 v[0:1], v[2:5], off
; GFX1100-WGP-SDAG-NEXT: s_setpc_b64 s[30:31]
;
; GFX942-ISEL-LABEL: global_store_agent:
; GFX942-ISEL: ; %bb.0:
; GFX942-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX942-ISEL-NEXT: global_store_dwordx4 v[0:1], v[2:5], off sc1
; GFX942-ISEL-NEXT: s_waitcnt vmcnt(0)
; GFX942-ISEL-NEXT: s_setpc_b64 s[30:31]
;
; GFX1012-ISEL-LABEL: global_store_agent:
; GFX1012-ISEL: ; %bb.0:
; GFX1012-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1012-ISEL-NEXT: global_store_dwordx4 v[0:1], v[2:5], off
; GFX1012-ISEL-NEXT: s_setpc_b64 s[30:31]
;
; GFX1100-ISEL-LABEL: global_store_agent:
; GFX1100-ISEL: ; %bb.0:
; GFX1100-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1100-ISEL-NEXT: global_store_b128 v[0:1], v[2:5], off
; GFX1100-ISEL-NEXT: s_setpc_b64 s[30:31]
;
; GFX1250-ISEL-LABEL: global_store_agent:
; GFX1250-ISEL: ; %bb.0:
; 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]
;
; GFX1012-WGP-ISEL-LABEL: global_store_agent:
; GFX1012-WGP-ISEL: ; %bb.0:
; GFX1012-WGP-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1012-WGP-ISEL-NEXT: global_store_dwordx4 v[0:1], v[2:5], off
; GFX1012-WGP-ISEL-NEXT: s_setpc_b64 s[30:31]
;
; GFX1100-WGP-ISEL-LABEL: global_store_agent:
; GFX1100-WGP-ISEL: ; %bb.0:
; GFX1100-WGP-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1100-WGP-ISEL-NEXT: global_store_b128 v[0:1], v[2:5], off
; GFX1100-WGP-ISEL-NEXT: s_setpc_b64 s[30:31]
call void @llvm.amdgcn.av.store.b128.p1(ptr addrspace(1) %p, <4 x i32> %v, metadata !2)
ret void
}
; scope: system (empty string = system scope)
define void @global_store_system(ptr addrspace(1) %p, <4 x i32> %v) {
; GFX942-SDAG-LABEL: global_store_system:
; GFX942-SDAG: ; %bb.0:
; GFX942-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX942-SDAG-NEXT: global_store_dwordx4 v[0:1], v[2:5], off sc0 sc1
; GFX942-SDAG-NEXT: s_waitcnt vmcnt(0)
; GFX942-SDAG-NEXT: s_setpc_b64 s[30:31]
;
; GFX1012-SDAG-LABEL: global_store_system:
; GFX1012-SDAG: ; %bb.0:
; GFX1012-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1012-SDAG-NEXT: global_store_dwordx4 v[0:1], v[2:5], off
; GFX1012-SDAG-NEXT: s_setpc_b64 s[30:31]
;
; GFX1100-SDAG-LABEL: global_store_system:
; GFX1100-SDAG: ; %bb.0:
; GFX1100-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1100-SDAG-NEXT: global_store_b128 v[0:1], v[2:5], off
; GFX1100-SDAG-NEXT: s_setpc_b64 s[30:31]
;
; GFX1250-SDAG-LABEL: global_store_system:
; GFX1250-SDAG: ; %bb.0:
; 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]
;
; GFX1012-WGP-SDAG-LABEL: global_store_system:
; GFX1012-WGP-SDAG: ; %bb.0:
; GFX1012-WGP-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1012-WGP-SDAG-NEXT: global_store_dwordx4 v[0:1], v[2:5], off
; GFX1012-WGP-SDAG-NEXT: s_setpc_b64 s[30:31]
;
; GFX1100-WGP-SDAG-LABEL: global_store_system:
; GFX1100-WGP-SDAG: ; %bb.0:
; GFX1100-WGP-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1100-WGP-SDAG-NEXT: global_store_b128 v[0:1], v[2:5], off
; GFX1100-WGP-SDAG-NEXT: s_setpc_b64 s[30:31]
;
; GFX942-ISEL-LABEL: global_store_system:
; GFX942-ISEL: ; %bb.0:
; GFX942-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX942-ISEL-NEXT: global_store_dwordx4 v[0:1], v[2:5], off sc0 sc1
; GFX942-ISEL-NEXT: s_waitcnt vmcnt(0)
; GFX942-ISEL-NEXT: s_setpc_b64 s[30:31]
;
; GFX1012-ISEL-LABEL: global_store_system:
; GFX1012-ISEL: ; %bb.0:
; GFX1012-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1012-ISEL-NEXT: global_store_dwordx4 v[0:1], v[2:5], off
; GFX1012-ISEL-NEXT: s_setpc_b64 s[30:31]
;
; GFX1100-ISEL-LABEL: global_store_system:
; GFX1100-ISEL: ; %bb.0:
; GFX1100-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1100-ISEL-NEXT: global_store_b128 v[0:1], v[2:5], off
; GFX1100-ISEL-NEXT: s_setpc_b64 s[30:31]
;
; GFX1250-ISEL-LABEL: global_store_system:
; GFX1250-ISEL: ; %bb.0:
; 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]
;
; GFX1012-WGP-ISEL-LABEL: global_store_system:
; GFX1012-WGP-ISEL: ; %bb.0:
; GFX1012-WGP-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1012-WGP-ISEL-NEXT: global_store_dwordx4 v[0:1], v[2:5], off
; GFX1012-WGP-ISEL-NEXT: s_setpc_b64 s[30:31]
;
; GFX1100-WGP-ISEL-LABEL: global_store_system:
; GFX1100-WGP-ISEL: ; %bb.0:
; GFX1100-WGP-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1100-WGP-ISEL-NEXT: global_store_b128 v[0:1], v[2:5], off
; GFX1100-WGP-ISEL-NEXT: s_setpc_b64 s[30:31]
call void @llvm.amdgcn.av.store.b128.p1(ptr addrspace(1) %p, <4 x i32> %v, metadata !3)
ret void
}
; scope: singlethread
define void @global_store_singlethread(ptr addrspace(1) %p, <4 x i32> %v) {
; GFX942-SDAG-LABEL: global_store_singlethread:
; GFX942-SDAG: ; %bb.0:
; GFX942-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX942-SDAG-NEXT: global_store_dwordx4 v[0:1], v[2:5], off
; GFX942-SDAG-NEXT: s_waitcnt vmcnt(0)
; GFX942-SDAG-NEXT: s_setpc_b64 s[30:31]
;
; GFX1012-SDAG-LABEL: global_store_singlethread:
; GFX1012-SDAG: ; %bb.0:
; GFX1012-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1012-SDAG-NEXT: global_store_dwordx4 v[0:1], v[2:5], off
; GFX1012-SDAG-NEXT: s_setpc_b64 s[30:31]
;
; GFX1100-SDAG-LABEL: global_store_singlethread:
; GFX1100-SDAG: ; %bb.0:
; GFX1100-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1100-SDAG-NEXT: global_store_b128 v[0:1], v[2:5], off
; GFX1100-SDAG-NEXT: s_setpc_b64 s[30:31]
;
; GFX1250-SDAG-LABEL: global_store_singlethread:
; GFX1250-SDAG: ; %bb.0:
; 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]
;
; GFX1012-WGP-SDAG-LABEL: global_store_singlethread:
; GFX1012-WGP-SDAG: ; %bb.0:
; GFX1012-WGP-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1012-WGP-SDAG-NEXT: global_store_dwordx4 v[0:1], v[2:5], off
; GFX1012-WGP-SDAG-NEXT: s_setpc_b64 s[30:31]
;
; GFX1100-WGP-SDAG-LABEL: global_store_singlethread:
; GFX1100-WGP-SDAG: ; %bb.0:
; GFX1100-WGP-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1100-WGP-SDAG-NEXT: global_store_b128 v[0:1], v[2:5], off
; GFX1100-WGP-SDAG-NEXT: s_setpc_b64 s[30:31]
;
; GFX942-ISEL-LABEL: global_store_singlethread:
; GFX942-ISEL: ; %bb.0:
; GFX942-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX942-ISEL-NEXT: global_store_dwordx4 v[0:1], v[2:5], off
; GFX942-ISEL-NEXT: s_waitcnt vmcnt(0)
; GFX942-ISEL-NEXT: s_setpc_b64 s[30:31]
;
; GFX1012-ISEL-LABEL: global_store_singlethread:
; GFX1012-ISEL: ; %bb.0:
; GFX1012-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1012-ISEL-NEXT: global_store_dwordx4 v[0:1], v[2:5], off
; GFX1012-ISEL-NEXT: s_setpc_b64 s[30:31]
;
; GFX1100-ISEL-LABEL: global_store_singlethread:
; GFX1100-ISEL: ; %bb.0:
; GFX1100-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1100-ISEL-NEXT: global_store_b128 v[0:1], v[2:5], off
; GFX1100-ISEL-NEXT: s_setpc_b64 s[30:31]
;
; GFX1250-ISEL-LABEL: global_store_singlethread:
; GFX1250-ISEL: ; %bb.0:
; 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]
;
; GFX1012-WGP-ISEL-LABEL: global_store_singlethread:
; GFX1012-WGP-ISEL: ; %bb.0:
; GFX1012-WGP-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1012-WGP-ISEL-NEXT: global_store_dwordx4 v[0:1], v[2:5], off
; GFX1012-WGP-ISEL-NEXT: s_setpc_b64 s[30:31]
;
; GFX1100-WGP-ISEL-LABEL: global_store_singlethread:
; GFX1100-WGP-ISEL: ; %bb.0:
; GFX1100-WGP-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1100-WGP-ISEL-NEXT: global_store_b128 v[0:1], v[2:5], off
; GFX1100-WGP-ISEL-NEXT: s_setpc_b64 s[30:31]
call void @llvm.amdgcn.av.store.b128.p1(ptr addrspace(1) %p, <4 x i32> %v, metadata !4)
ret void
}
; scope: cluster
define void @global_store_cluster(ptr addrspace(1) %p, <4 x i32> %v) {
; GFX942-SDAG-LABEL: global_store_cluster:
; GFX942-SDAG: ; %bb.0:
; GFX942-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX942-SDAG-NEXT: global_store_dwordx4 v[0:1], v[2:5], off sc1
; GFX942-SDAG-NEXT: s_waitcnt vmcnt(0)
; GFX942-SDAG-NEXT: s_setpc_b64 s[30:31]
;
; GFX1012-SDAG-LABEL: global_store_cluster:
; GFX1012-SDAG: ; %bb.0:
; GFX1012-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1012-SDAG-NEXT: global_store_dwordx4 v[0:1], v[2:5], off
; GFX1012-SDAG-NEXT: s_setpc_b64 s[30:31]
;
; GFX1100-SDAG-LABEL: global_store_cluster:
; GFX1100-SDAG: ; %bb.0:
; GFX1100-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1100-SDAG-NEXT: global_store_b128 v[0:1], v[2:5], off
; GFX1100-SDAG-NEXT: s_setpc_b64 s[30:31]
;
; GFX1250-SDAG-LABEL: global_store_cluster:
; GFX1250-SDAG: ; %bb.0:
; 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]
;
; GFX1012-WGP-SDAG-LABEL: global_store_cluster:
; GFX1012-WGP-SDAG: ; %bb.0:
; GFX1012-WGP-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1012-WGP-SDAG-NEXT: global_store_dwordx4 v[0:1], v[2:5], off
; GFX1012-WGP-SDAG-NEXT: s_setpc_b64 s[30:31]
;
; GFX1100-WGP-SDAG-LABEL: global_store_cluster:
; GFX1100-WGP-SDAG: ; %bb.0:
; GFX1100-WGP-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1100-WGP-SDAG-NEXT: global_store_b128 v[0:1], v[2:5], off
; GFX1100-WGP-SDAG-NEXT: s_setpc_b64 s[30:31]
;
; GFX942-ISEL-LABEL: global_store_cluster:
; GFX942-ISEL: ; %bb.0:
; GFX942-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX942-ISEL-NEXT: global_store_dwordx4 v[0:1], v[2:5], off sc1
; GFX942-ISEL-NEXT: s_waitcnt vmcnt(0)
; GFX942-ISEL-NEXT: s_setpc_b64 s[30:31]
;
; GFX1012-ISEL-LABEL: global_store_cluster:
; GFX1012-ISEL: ; %bb.0:
; GFX1012-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1012-ISEL-NEXT: global_store_dwordx4 v[0:1], v[2:5], off
; GFX1012-ISEL-NEXT: s_setpc_b64 s[30:31]
;
; GFX1100-ISEL-LABEL: global_store_cluster:
; GFX1100-ISEL: ; %bb.0:
; GFX1100-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1100-ISEL-NEXT: global_store_b128 v[0:1], v[2:5], off
; GFX1100-ISEL-NEXT: s_setpc_b64 s[30:31]
;
; GFX1250-ISEL-LABEL: global_store_cluster:
; GFX1250-ISEL: ; %bb.0:
; 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]
;
; GFX1012-WGP-ISEL-LABEL: global_store_cluster:
; GFX1012-WGP-ISEL: ; %bb.0:
; GFX1012-WGP-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1012-WGP-ISEL-NEXT: global_store_dwordx4 v[0:1], v[2:5], off
; GFX1012-WGP-ISEL-NEXT: s_setpc_b64 s[30:31]
;
; GFX1100-WGP-ISEL-LABEL: global_store_cluster:
; GFX1100-WGP-ISEL: ; %bb.0:
; GFX1100-WGP-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1100-WGP-ISEL-NEXT: global_store_b128 v[0:1], v[2:5], off
; GFX1100-WGP-ISEL-NEXT: s_setpc_b64 s[30:31]
call void @llvm.amdgcn.av.store.b128.p1(ptr addrspace(1) %p, <4 x i32> %v, metadata !5)
ret void
}
; scope: wavefront
define <4 x i32> @flat_load_wavefront(ptr %p) {
; GFX942-SDAG-LABEL: flat_load_wavefront:
; GFX942-SDAG: ; %bb.0:
; GFX942-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX942-SDAG-NEXT: flat_load_dwordx4 v[0:3], v[0:1]
; GFX942-SDAG-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
; GFX942-SDAG-NEXT: s_setpc_b64 s[30:31]
;
; GFX1012-SDAG-LABEL: flat_load_wavefront:
; GFX1012-SDAG: ; %bb.0:
; GFX1012-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1012-SDAG-NEXT: flat_load_dwordx4 v[0:3], v[0:1]
; GFX1012-SDAG-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
; GFX1012-SDAG-NEXT: s_setpc_b64 s[30:31]
;
; GFX1100-SDAG-LABEL: flat_load_wavefront:
; GFX1100-SDAG: ; %bb.0:
; GFX1100-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1100-SDAG-NEXT: flat_load_b128 v[0:3], v[0:1]
; GFX1100-SDAG-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
; GFX1100-SDAG-NEXT: s_setpc_b64 s[30:31]
;
; GFX1250-SDAG-LABEL: flat_load_wavefront:
; GFX1250-SDAG: ; %bb.0:
; GFX1250-SDAG-NEXT: s_wait_loadcnt_dscnt 0x0
; GFX1250-SDAG-NEXT: s_wait_kmcnt 0x0
; GFX1250-SDAG-NEXT: flat_load_b128 v[0:3], v[0:1]
; GFX1250-SDAG-NEXT: s_wait_loadcnt_dscnt 0x0
; GFX1250-SDAG-NEXT: s_set_pc_i64 s[30:31]
;
; GFX1012-WGP-SDAG-LABEL: flat_load_wavefront:
; GFX1012-WGP-SDAG: ; %bb.0:
; GFX1012-WGP-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1012-WGP-SDAG-NEXT: flat_load_dwordx4 v[0:3], v[0:1]
; GFX1012-WGP-SDAG-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
; GFX1012-WGP-SDAG-NEXT: s_setpc_b64 s[30:31]
;
; GFX1100-WGP-SDAG-LABEL: flat_load_wavefront:
; GFX1100-WGP-SDAG: ; %bb.0:
; GFX1100-WGP-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1100-WGP-SDAG-NEXT: flat_load_b128 v[0:3], v[0:1]
; GFX1100-WGP-SDAG-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
; GFX1100-WGP-SDAG-NEXT: s_setpc_b64 s[30:31]
;
; GFX942-ISEL-LABEL: flat_load_wavefront:
; GFX942-ISEL: ; %bb.0:
; GFX942-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX942-ISEL-NEXT: flat_load_dwordx4 v[0:3], v[0:1]
; GFX942-ISEL-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
; GFX942-ISEL-NEXT: s_setpc_b64 s[30:31]
;
; GFX1012-ISEL-LABEL: flat_load_wavefront:
; GFX1012-ISEL: ; %bb.0:
; GFX1012-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1012-ISEL-NEXT: flat_load_dwordx4 v[0:3], v[0:1]
; GFX1012-ISEL-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
; GFX1012-ISEL-NEXT: s_setpc_b64 s[30:31]
;
; GFX1100-ISEL-LABEL: flat_load_wavefront:
; GFX1100-ISEL: ; %bb.0:
; GFX1100-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1100-ISEL-NEXT: flat_load_b128 v[0:3], v[0:1]
; GFX1100-ISEL-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
; GFX1100-ISEL-NEXT: s_setpc_b64 s[30:31]
;
; GFX1250-ISEL-LABEL: flat_load_wavefront:
; GFX1250-ISEL: ; %bb.0:
; GFX1250-ISEL-NEXT: s_wait_loadcnt_dscnt 0x0
; GFX1250-ISEL-NEXT: s_wait_kmcnt 0x0
; GFX1250-ISEL-NEXT: flat_load_b128 v[0:3], v[0:1]
; GFX1250-ISEL-NEXT: s_wait_loadcnt_dscnt 0x0
; GFX1250-ISEL-NEXT: s_set_pc_i64 s[30:31]
;
; GFX1012-WGP-ISEL-LABEL: flat_load_wavefront:
; GFX1012-WGP-ISEL: ; %bb.0:
; GFX1012-WGP-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1012-WGP-ISEL-NEXT: flat_load_dwordx4 v[0:3], v[0:1]
; GFX1012-WGP-ISEL-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
; GFX1012-WGP-ISEL-NEXT: s_setpc_b64 s[30:31]
;
; GFX1100-WGP-ISEL-LABEL: flat_load_wavefront:
; GFX1100-WGP-ISEL: ; %bb.0:
; GFX1100-WGP-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1100-WGP-ISEL-NEXT: flat_load_b128 v[0:3], v[0:1]
; GFX1100-WGP-ISEL-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
; GFX1100-WGP-ISEL-NEXT: s_setpc_b64 s[30:31]
%v = call <4 x i32> @llvm.amdgcn.av.load.b128.p0(ptr %p, metadata !0)
ret <4 x i32> %v
}
; scope: workgroup
define <4 x i32> @flat_load_workgroup(ptr %p) {
; GFX942-SDAG-LABEL: flat_load_workgroup:
; GFX942-SDAG: ; %bb.0:
; GFX942-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX942-SDAG-NEXT: flat_load_dwordx4 v[0:3], v[0:1] sc0
; GFX942-SDAG-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
; GFX942-SDAG-NEXT: s_setpc_b64 s[30:31]
;
; GFX1012-SDAG-LABEL: flat_load_workgroup:
; GFX1012-SDAG: ; %bb.0:
; GFX1012-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1012-SDAG-NEXT: flat_load_dwordx4 v[0:3], v[0:1] glc
; GFX1012-SDAG-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
; GFX1012-SDAG-NEXT: s_setpc_b64 s[30:31]
;
; GFX1100-SDAG-LABEL: flat_load_workgroup:
; GFX1100-SDAG: ; %bb.0:
; GFX1100-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1100-SDAG-NEXT: flat_load_b128 v[0:3], v[0:1] glc
; GFX1100-SDAG-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
; GFX1100-SDAG-NEXT: s_setpc_b64 s[30:31]
;
; GFX1250-SDAG-LABEL: flat_load_workgroup:
; GFX1250-SDAG: ; %bb.0:
; GFX1250-SDAG-NEXT: s_wait_loadcnt_dscnt 0x0
; GFX1250-SDAG-NEXT: s_wait_kmcnt 0x0
; GFX1250-SDAG-NEXT: flat_load_b128 v[0:3], v[0:1]
; GFX1250-SDAG-NEXT: s_wait_loadcnt_dscnt 0x0
; GFX1250-SDAG-NEXT: s_set_pc_i64 s[30:31]
;
; GFX1012-WGP-SDAG-LABEL: flat_load_workgroup:
; GFX1012-WGP-SDAG: ; %bb.0:
; GFX1012-WGP-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1012-WGP-SDAG-NEXT: flat_load_dwordx4 v[0:3], v[0:1] glc
; GFX1012-WGP-SDAG-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
; GFX1012-WGP-SDAG-NEXT: s_setpc_b64 s[30:31]
;
; GFX1100-WGP-SDAG-LABEL: flat_load_workgroup:
; GFX1100-WGP-SDAG: ; %bb.0:
; GFX1100-WGP-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1100-WGP-SDAG-NEXT: flat_load_b128 v[0:3], v[0:1] glc
; GFX1100-WGP-SDAG-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
; GFX1100-WGP-SDAG-NEXT: s_setpc_b64 s[30:31]
;
; GFX942-ISEL-LABEL: flat_load_workgroup:
; GFX942-ISEL: ; %bb.0:
; GFX942-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX942-ISEL-NEXT: flat_load_dwordx4 v[0:3], v[0:1] sc0
; GFX942-ISEL-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
; GFX942-ISEL-NEXT: s_setpc_b64 s[30:31]
;
; GFX1012-ISEL-LABEL: flat_load_workgroup:
; GFX1012-ISEL: ; %bb.0:
; GFX1012-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1012-ISEL-NEXT: flat_load_dwordx4 v[0:3], v[0:1] glc
; GFX1012-ISEL-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
; GFX1012-ISEL-NEXT: s_setpc_b64 s[30:31]
;
; GFX1100-ISEL-LABEL: flat_load_workgroup:
; GFX1100-ISEL: ; %bb.0:
; GFX1100-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1100-ISEL-NEXT: flat_load_b128 v[0:3], v[0:1] glc
; GFX1100-ISEL-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
; GFX1100-ISEL-NEXT: s_setpc_b64 s[30:31]
;
; GFX1250-ISEL-LABEL: flat_load_workgroup:
; GFX1250-ISEL: ; %bb.0:
; GFX1250-ISEL-NEXT: s_wait_loadcnt_dscnt 0x0
; GFX1250-ISEL-NEXT: s_wait_kmcnt 0x0
; GFX1250-ISEL-NEXT: flat_load_b128 v[0:3], v[0:1]
; GFX1250-ISEL-NEXT: s_wait_loadcnt_dscnt 0x0
; GFX1250-ISEL-NEXT: s_set_pc_i64 s[30:31]
;
; GFX1012-WGP-ISEL-LABEL: flat_load_workgroup:
; GFX1012-WGP-ISEL: ; %bb.0:
; GFX1012-WGP-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1012-WGP-ISEL-NEXT: flat_load_dwordx4 v[0:3], v[0:1] glc
; GFX1012-WGP-ISEL-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
; GFX1012-WGP-ISEL-NEXT: s_setpc_b64 s[30:31]
;
; GFX1100-WGP-ISEL-LABEL: flat_load_workgroup:
; GFX1100-WGP-ISEL: ; %bb.0:
; GFX1100-WGP-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1100-WGP-ISEL-NEXT: flat_load_b128 v[0:3], v[0:1] glc
; GFX1100-WGP-ISEL-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
; GFX1100-WGP-ISEL-NEXT: s_setpc_b64 s[30:31]
%v = call <4 x i32> @llvm.amdgcn.av.load.b128.p0(ptr %p, metadata !1)
ret <4 x i32> %v
}
; scope: agent
define <4 x i32> @flat_load_agent(ptr %p) {
; GFX942-SDAG-LABEL: flat_load_agent:
; GFX942-SDAG: ; %bb.0:
; GFX942-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX942-SDAG-NEXT: flat_load_dwordx4 v[0:3], v[0:1] sc1
; GFX942-SDAG-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
; GFX942-SDAG-NEXT: s_setpc_b64 s[30:31]
;
; GFX1012-SDAG-LABEL: flat_load_agent:
; GFX1012-SDAG: ; %bb.0:
; GFX1012-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1012-SDAG-NEXT: flat_load_dwordx4 v[0:3], v[0:1] glc dlc
; GFX1012-SDAG-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
; GFX1012-SDAG-NEXT: s_setpc_b64 s[30:31]
;
; GFX1100-SDAG-LABEL: flat_load_agent:
; GFX1100-SDAG: ; %bb.0:
; GFX1100-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1100-SDAG-NEXT: flat_load_b128 v[0:3], v[0:1] glc
; GFX1100-SDAG-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
; GFX1100-SDAG-NEXT: s_setpc_b64 s[30:31]
;
; GFX1250-SDAG-LABEL: flat_load_agent:
; GFX1250-SDAG: ; %bb.0:
; GFX1250-SDAG-NEXT: s_wait_loadcnt_dscnt 0x0
; GFX1250-SDAG-NEXT: s_wait_kmcnt 0x0
; GFX1250-SDAG-NEXT: flat_load_b128 v[0:3], v[0:1] scope:SCOPE_DEV
; GFX1250-SDAG-NEXT: s_wait_loadcnt_dscnt 0x0
; GFX1250-SDAG-NEXT: s_set_pc_i64 s[30:31]
;
; GFX1012-WGP-SDAG-LABEL: flat_load_agent:
; GFX1012-WGP-SDAG: ; %bb.0:
; GFX1012-WGP-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1012-WGP-SDAG-NEXT: flat_load_dwordx4 v[0:3], v[0:1] glc dlc
; GFX1012-WGP-SDAG-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
; GFX1012-WGP-SDAG-NEXT: s_setpc_b64 s[30:31]
;
; GFX1100-WGP-SDAG-LABEL: flat_load_agent:
; GFX1100-WGP-SDAG: ; %bb.0:
; GFX1100-WGP-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1100-WGP-SDAG-NEXT: flat_load_b128 v[0:3], v[0:1] glc
; GFX1100-WGP-SDAG-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
; GFX1100-WGP-SDAG-NEXT: s_setpc_b64 s[30:31]
;
; GFX942-ISEL-LABEL: flat_load_agent:
; GFX942-ISEL: ; %bb.0:
; GFX942-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX942-ISEL-NEXT: flat_load_dwordx4 v[0:3], v[0:1] sc1
; GFX942-ISEL-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
; GFX942-ISEL-NEXT: s_setpc_b64 s[30:31]
;
; GFX1012-ISEL-LABEL: flat_load_agent:
; GFX1012-ISEL: ; %bb.0:
; GFX1012-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1012-ISEL-NEXT: flat_load_dwordx4 v[0:3], v[0:1] glc dlc
; GFX1012-ISEL-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
; GFX1012-ISEL-NEXT: s_setpc_b64 s[30:31]
;
; GFX1100-ISEL-LABEL: flat_load_agent:
; GFX1100-ISEL: ; %bb.0:
; GFX1100-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1100-ISEL-NEXT: flat_load_b128 v[0:3], v[0:1] glc
; GFX1100-ISEL-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
; GFX1100-ISEL-NEXT: s_setpc_b64 s[30:31]
;
; GFX1250-ISEL-LABEL: flat_load_agent:
; GFX1250-ISEL: ; %bb.0:
; GFX1250-ISEL-NEXT: s_wait_loadcnt_dscnt 0x0
; GFX1250-ISEL-NEXT: s_wait_kmcnt 0x0
; GFX1250-ISEL-NEXT: flat_load_b128 v[0:3], v[0:1] scope:SCOPE_DEV
; GFX1250-ISEL-NEXT: s_wait_loadcnt_dscnt 0x0
; GFX1250-ISEL-NEXT: s_set_pc_i64 s[30:31]
;
; GFX1012-WGP-ISEL-LABEL: flat_load_agent:
; GFX1012-WGP-ISEL: ; %bb.0:
; GFX1012-WGP-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1012-WGP-ISEL-NEXT: flat_load_dwordx4 v[0:3], v[0:1] glc dlc
; GFX1012-WGP-ISEL-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
; GFX1012-WGP-ISEL-NEXT: s_setpc_b64 s[30:31]
;
; GFX1100-WGP-ISEL-LABEL: flat_load_agent:
; GFX1100-WGP-ISEL: ; %bb.0:
; GFX1100-WGP-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1100-WGP-ISEL-NEXT: flat_load_b128 v[0:3], v[0:1] glc
; GFX1100-WGP-ISEL-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
; GFX1100-WGP-ISEL-NEXT: s_setpc_b64 s[30:31]
%v = call <4 x i32> @llvm.amdgcn.av.load.b128.p0(ptr %p, metadata !2)
ret <4 x i32> %v
}
; scope: system (empty string = system scope)
define <4 x i32> @flat_load_system(ptr %p) {
; GFX942-SDAG-LABEL: flat_load_system:
; GFX942-SDAG: ; %bb.0:
; GFX942-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX942-SDAG-NEXT: flat_load_dwordx4 v[0:3], v[0:1] sc0 sc1
; GFX942-SDAG-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
; GFX942-SDAG-NEXT: s_setpc_b64 s[30:31]
;
; GFX1012-SDAG-LABEL: flat_load_system:
; GFX1012-SDAG: ; %bb.0:
; GFX1012-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1012-SDAG-NEXT: flat_load_dwordx4 v[0:3], v[0:1] glc dlc
; GFX1012-SDAG-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
; GFX1012-SDAG-NEXT: s_setpc_b64 s[30:31]
;
; GFX1100-SDAG-LABEL: flat_load_system:
; GFX1100-SDAG: ; %bb.0:
; GFX1100-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1100-SDAG-NEXT: flat_load_b128 v[0:3], v[0:1] glc
; GFX1100-SDAG-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
; GFX1100-SDAG-NEXT: s_setpc_b64 s[30:31]
;
; GFX1250-SDAG-LABEL: flat_load_system:
; GFX1250-SDAG: ; %bb.0:
; GFX1250-SDAG-NEXT: s_wait_loadcnt_dscnt 0x0
; GFX1250-SDAG-NEXT: s_wait_kmcnt 0x0
; GFX1250-SDAG-NEXT: flat_load_b128 v[0:3], v[0:1] scope:SCOPE_SYS
; GFX1250-SDAG-NEXT: s_wait_loadcnt_dscnt 0x0
; GFX1250-SDAG-NEXT: s_set_pc_i64 s[30:31]
;
; GFX1012-WGP-SDAG-LABEL: flat_load_system:
; GFX1012-WGP-SDAG: ; %bb.0:
; GFX1012-WGP-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1012-WGP-SDAG-NEXT: flat_load_dwordx4 v[0:3], v[0:1] glc dlc
; GFX1012-WGP-SDAG-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
; GFX1012-WGP-SDAG-NEXT: s_setpc_b64 s[30:31]
;
; GFX1100-WGP-SDAG-LABEL: flat_load_system:
; GFX1100-WGP-SDAG: ; %bb.0:
; GFX1100-WGP-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1100-WGP-SDAG-NEXT: flat_load_b128 v[0:3], v[0:1] glc
; GFX1100-WGP-SDAG-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
; GFX1100-WGP-SDAG-NEXT: s_setpc_b64 s[30:31]
;
; GFX942-ISEL-LABEL: flat_load_system:
; GFX942-ISEL: ; %bb.0:
; GFX942-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX942-ISEL-NEXT: flat_load_dwordx4 v[0:3], v[0:1] sc0 sc1
; GFX942-ISEL-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
; GFX942-ISEL-NEXT: s_setpc_b64 s[30:31]
;
; GFX1012-ISEL-LABEL: flat_load_system:
; GFX1012-ISEL: ; %bb.0:
; GFX1012-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1012-ISEL-NEXT: flat_load_dwordx4 v[0:3], v[0:1] glc dlc
; GFX1012-ISEL-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
; GFX1012-ISEL-NEXT: s_setpc_b64 s[30:31]
;
; GFX1100-ISEL-LABEL: flat_load_system:
; GFX1100-ISEL: ; %bb.0:
; GFX1100-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1100-ISEL-NEXT: flat_load_b128 v[0:3], v[0:1] glc
; GFX1100-ISEL-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
; GFX1100-ISEL-NEXT: s_setpc_b64 s[30:31]
;
; GFX1250-ISEL-LABEL: flat_load_system:
; GFX1250-ISEL: ; %bb.0:
; GFX1250-ISEL-NEXT: s_wait_loadcnt_dscnt 0x0
; GFX1250-ISEL-NEXT: s_wait_kmcnt 0x0
; GFX1250-ISEL-NEXT: flat_load_b128 v[0:3], v[0:1] scope:SCOPE_SYS
; GFX1250-ISEL-NEXT: s_wait_loadcnt_dscnt 0x0
; GFX1250-ISEL-NEXT: s_set_pc_i64 s[30:31]
;
; GFX1012-WGP-ISEL-LABEL: flat_load_system:
; GFX1012-WGP-ISEL: ; %bb.0:
; GFX1012-WGP-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1012-WGP-ISEL-NEXT: flat_load_dwordx4 v[0:3], v[0:1] glc dlc
; GFX1012-WGP-ISEL-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
; GFX1012-WGP-ISEL-NEXT: s_setpc_b64 s[30:31]
;
; GFX1100-WGP-ISEL-LABEL: flat_load_system:
; GFX1100-WGP-ISEL: ; %bb.0:
; GFX1100-WGP-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1100-WGP-ISEL-NEXT: flat_load_b128 v[0:3], v[0:1] glc
; GFX1100-WGP-ISEL-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
; GFX1100-WGP-ISEL-NEXT: s_setpc_b64 s[30:31]
%v = call <4 x i32> @llvm.amdgcn.av.load.b128.p0(ptr %p, metadata !3)
ret <4 x i32> %v
}
; scope: singlethread
define <4 x i32> @flat_load_singlethread(ptr %p) {
; GFX942-SDAG-LABEL: flat_load_singlethread:
; GFX942-SDAG: ; %bb.0:
; GFX942-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX942-SDAG-NEXT: flat_load_dwordx4 v[0:3], v[0:1]
; GFX942-SDAG-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
; GFX942-SDAG-NEXT: s_setpc_b64 s[30:31]
;
; GFX1012-SDAG-LABEL: flat_load_singlethread:
; GFX1012-SDAG: ; %bb.0:
; GFX1012-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1012-SDAG-NEXT: flat_load_dwordx4 v[0:3], v[0:1]
; GFX1012-SDAG-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
; GFX1012-SDAG-NEXT: s_setpc_b64 s[30:31]
;
; GFX1100-SDAG-LABEL: flat_load_singlethread:
; GFX1100-SDAG: ; %bb.0:
; GFX1100-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1100-SDAG-NEXT: flat_load_b128 v[0:3], v[0:1]
; GFX1100-SDAG-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
; GFX1100-SDAG-NEXT: s_setpc_b64 s[30:31]
;
; GFX1250-SDAG-LABEL: flat_load_singlethread:
; GFX1250-SDAG: ; %bb.0:
; GFX1250-SDAG-NEXT: s_wait_loadcnt_dscnt 0x0
; GFX1250-SDAG-NEXT: s_wait_kmcnt 0x0
; GFX1250-SDAG-NEXT: flat_load_b128 v[0:3], v[0:1]
; GFX1250-SDAG-NEXT: s_wait_loadcnt_dscnt 0x0
; GFX1250-SDAG-NEXT: s_set_pc_i64 s[30:31]
;
; GFX1012-WGP-SDAG-LABEL: flat_load_singlethread:
; GFX1012-WGP-SDAG: ; %bb.0:
; GFX1012-WGP-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1012-WGP-SDAG-NEXT: flat_load_dwordx4 v[0:3], v[0:1]
; GFX1012-WGP-SDAG-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
; GFX1012-WGP-SDAG-NEXT: s_setpc_b64 s[30:31]
;
; GFX1100-WGP-SDAG-LABEL: flat_load_singlethread:
; GFX1100-WGP-SDAG: ; %bb.0:
; GFX1100-WGP-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1100-WGP-SDAG-NEXT: flat_load_b128 v[0:3], v[0:1]
; GFX1100-WGP-SDAG-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
; GFX1100-WGP-SDAG-NEXT: s_setpc_b64 s[30:31]
;
; GFX942-ISEL-LABEL: flat_load_singlethread:
; GFX942-ISEL: ; %bb.0:
; GFX942-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX942-ISEL-NEXT: flat_load_dwordx4 v[0:3], v[0:1]
; GFX942-ISEL-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
; GFX942-ISEL-NEXT: s_setpc_b64 s[30:31]
;
; GFX1012-ISEL-LABEL: flat_load_singlethread:
; GFX1012-ISEL: ; %bb.0:
; GFX1012-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1012-ISEL-NEXT: flat_load_dwordx4 v[0:3], v[0:1]
; GFX1012-ISEL-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
; GFX1012-ISEL-NEXT: s_setpc_b64 s[30:31]
;
; GFX1100-ISEL-LABEL: flat_load_singlethread:
; GFX1100-ISEL: ; %bb.0:
; GFX1100-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1100-ISEL-NEXT: flat_load_b128 v[0:3], v[0:1]
; GFX1100-ISEL-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
; GFX1100-ISEL-NEXT: s_setpc_b64 s[30:31]
;
; GFX1250-ISEL-LABEL: flat_load_singlethread:
; GFX1250-ISEL: ; %bb.0:
; GFX1250-ISEL-NEXT: s_wait_loadcnt_dscnt 0x0
; GFX1250-ISEL-NEXT: s_wait_kmcnt 0x0
; GFX1250-ISEL-NEXT: flat_load_b128 v[0:3], v[0:1]
; GFX1250-ISEL-NEXT: s_wait_loadcnt_dscnt 0x0
; GFX1250-ISEL-NEXT: s_set_pc_i64 s[30:31]
;
; GFX1012-WGP-ISEL-LABEL: flat_load_singlethread:
; GFX1012-WGP-ISEL: ; %bb.0:
; GFX1012-WGP-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1012-WGP-ISEL-NEXT: flat_load_dwordx4 v[0:3], v[0:1]
; GFX1012-WGP-ISEL-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
; GFX1012-WGP-ISEL-NEXT: s_setpc_b64 s[30:31]
;
; GFX1100-WGP-ISEL-LABEL: flat_load_singlethread:
; GFX1100-WGP-ISEL: ; %bb.0:
; GFX1100-WGP-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1100-WGP-ISEL-NEXT: flat_load_b128 v[0:3], v[0:1]
; GFX1100-WGP-ISEL-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
; GFX1100-WGP-ISEL-NEXT: s_setpc_b64 s[30:31]
%v = call <4 x i32> @llvm.amdgcn.av.load.b128.p0(ptr %p, metadata !4)
ret <4 x i32> %v
}
; scope: cluster
define <4 x i32> @flat_load_cluster(ptr %p) {
; GFX942-SDAG-LABEL: flat_load_cluster:
; GFX942-SDAG: ; %bb.0:
; GFX942-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX942-SDAG-NEXT: flat_load_dwordx4 v[0:3], v[0:1] sc1
; GFX942-SDAG-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
; GFX942-SDAG-NEXT: s_setpc_b64 s[30:31]
;
; GFX1012-SDAG-LABEL: flat_load_cluster:
; GFX1012-SDAG: ; %bb.0:
; GFX1012-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1012-SDAG-NEXT: flat_load_dwordx4 v[0:3], v[0:1] glc dlc
; GFX1012-SDAG-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
; GFX1012-SDAG-NEXT: s_setpc_b64 s[30:31]
;
; GFX1100-SDAG-LABEL: flat_load_cluster:
; GFX1100-SDAG: ; %bb.0:
; GFX1100-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1100-SDAG-NEXT: flat_load_b128 v[0:3], v[0:1] glc
; GFX1100-SDAG-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
; GFX1100-SDAG-NEXT: s_setpc_b64 s[30:31]
;
; GFX1250-SDAG-LABEL: flat_load_cluster:
; GFX1250-SDAG: ; %bb.0:
; GFX1250-SDAG-NEXT: s_wait_loadcnt_dscnt 0x0
; GFX1250-SDAG-NEXT: s_wait_kmcnt 0x0
; GFX1250-SDAG-NEXT: flat_load_b128 v[0:3], v[0:1] scope:SCOPE_SE
; GFX1250-SDAG-NEXT: s_wait_loadcnt_dscnt 0x0
; GFX1250-SDAG-NEXT: s_set_pc_i64 s[30:31]
;
; GFX1012-WGP-SDAG-LABEL: flat_load_cluster:
; GFX1012-WGP-SDAG: ; %bb.0:
; GFX1012-WGP-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1012-WGP-SDAG-NEXT: flat_load_dwordx4 v[0:3], v[0:1] glc dlc
; GFX1012-WGP-SDAG-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
; GFX1012-WGP-SDAG-NEXT: s_setpc_b64 s[30:31]
;
; GFX1100-WGP-SDAG-LABEL: flat_load_cluster:
; GFX1100-WGP-SDAG: ; %bb.0:
; GFX1100-WGP-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1100-WGP-SDAG-NEXT: flat_load_b128 v[0:3], v[0:1] glc
; GFX1100-WGP-SDAG-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
; GFX1100-WGP-SDAG-NEXT: s_setpc_b64 s[30:31]
;
; GFX942-ISEL-LABEL: flat_load_cluster:
; GFX942-ISEL: ; %bb.0:
; GFX942-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX942-ISEL-NEXT: flat_load_dwordx4 v[0:3], v[0:1] sc1
; GFX942-ISEL-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
; GFX942-ISEL-NEXT: s_setpc_b64 s[30:31]
;
; GFX1012-ISEL-LABEL: flat_load_cluster:
; GFX1012-ISEL: ; %bb.0:
; GFX1012-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1012-ISEL-NEXT: flat_load_dwordx4 v[0:3], v[0:1] glc dlc
; GFX1012-ISEL-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
; GFX1012-ISEL-NEXT: s_setpc_b64 s[30:31]
;
; GFX1100-ISEL-LABEL: flat_load_cluster:
; GFX1100-ISEL: ; %bb.0:
; GFX1100-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1100-ISEL-NEXT: flat_load_b128 v[0:3], v[0:1] glc
; GFX1100-ISEL-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
; GFX1100-ISEL-NEXT: s_setpc_b64 s[30:31]
;
; GFX1250-ISEL-LABEL: flat_load_cluster:
; GFX1250-ISEL: ; %bb.0:
; GFX1250-ISEL-NEXT: s_wait_loadcnt_dscnt 0x0
; GFX1250-ISEL-NEXT: s_wait_kmcnt 0x0
; GFX1250-ISEL-NEXT: flat_load_b128 v[0:3], v[0:1] scope:SCOPE_SE
; GFX1250-ISEL-NEXT: s_wait_loadcnt_dscnt 0x0
; GFX1250-ISEL-NEXT: s_set_pc_i64 s[30:31]
;
; GFX1012-WGP-ISEL-LABEL: flat_load_cluster:
; GFX1012-WGP-ISEL: ; %bb.0:
; GFX1012-WGP-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1012-WGP-ISEL-NEXT: flat_load_dwordx4 v[0:3], v[0:1] glc dlc
; GFX1012-WGP-ISEL-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
; GFX1012-WGP-ISEL-NEXT: s_setpc_b64 s[30:31]
;
; GFX1100-WGP-ISEL-LABEL: flat_load_cluster:
; GFX1100-WGP-ISEL: ; %bb.0:
; GFX1100-WGP-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1100-WGP-ISEL-NEXT: flat_load_b128 v[0:3], v[0:1] glc
; GFX1100-WGP-ISEL-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
; GFX1100-WGP-ISEL-NEXT: s_setpc_b64 s[30:31]
%v = call <4 x i32> @llvm.amdgcn.av.load.b128.p0(ptr %p, metadata !5)
ret <4 x i32> %v
}
; scope: wavefront
define void @flat_store_wavefront(ptr %p, <4 x i32> %v) {
; GFX942-SDAG-LABEL: flat_store_wavefront:
; GFX942-SDAG: ; %bb.0:
; GFX942-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX942-SDAG-NEXT: flat_store_dwordx4 v[0:1], v[2:5]
; GFX942-SDAG-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
; GFX942-SDAG-NEXT: s_setpc_b64 s[30:31]
;
; GFX1012-SDAG-LABEL: flat_store_wavefront:
; GFX1012-SDAG: ; %bb.0:
; GFX1012-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1012-SDAG-NEXT: flat_store_dwordx4 v[0:1], v[2:5]
; GFX1012-SDAG-NEXT: s_waitcnt lgkmcnt(0)
; GFX1012-SDAG-NEXT: s_setpc_b64 s[30:31]
;
; GFX1100-SDAG-LABEL: flat_store_wavefront:
; GFX1100-SDAG: ; %bb.0:
; GFX1100-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1100-SDAG-NEXT: flat_store_b128 v[0:1], v[2:5]
; GFX1100-SDAG-NEXT: s_waitcnt lgkmcnt(0)
; GFX1100-SDAG-NEXT: s_setpc_b64 s[30:31]
;
; GFX1250-SDAG-LABEL: flat_store_wavefront:
; GFX1250-SDAG: ; %bb.0:
; GFX1250-SDAG-NEXT: s_wait_loadcnt_dscnt 0x0
; GFX1250-SDAG-NEXT: s_wait_kmcnt 0x0
; GFX1250-SDAG-NEXT: flat_store_b128 v[0:1], v[2:5]
; GFX1250-SDAG-NEXT: s_wait_dscnt 0x0
; GFX1250-SDAG-NEXT: s_set_pc_i64 s[30:31]
;
; GFX1012-WGP-SDAG-LABEL: flat_store_wavefront:
; GFX1012-WGP-SDAG: ; %bb.0:
; GFX1012-WGP-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1012-WGP-SDAG-NEXT: flat_store_dwordx4 v[0:1], v[2:5]
; GFX1012-WGP-SDAG-NEXT: s_waitcnt lgkmcnt(0)
; GFX1012-WGP-SDAG-NEXT: s_setpc_b64 s[30:31]
;
; GFX1100-WGP-SDAG-LABEL: flat_store_wavefront:
; GFX1100-WGP-SDAG: ; %bb.0:
; GFX1100-WGP-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1100-WGP-SDAG-NEXT: flat_store_b128 v[0:1], v[2:5]
; GFX1100-WGP-SDAG-NEXT: s_waitcnt lgkmcnt(0)
; GFX1100-WGP-SDAG-NEXT: s_setpc_b64 s[30:31]
;
; GFX942-ISEL-LABEL: flat_store_wavefront:
; GFX942-ISEL: ; %bb.0:
; GFX942-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX942-ISEL-NEXT: flat_store_dwordx4 v[0:1], v[2:5]
; GFX942-ISEL-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
; GFX942-ISEL-NEXT: s_setpc_b64 s[30:31]
;
; GFX1012-ISEL-LABEL: flat_store_wavefront:
; GFX1012-ISEL: ; %bb.0:
; GFX1012-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1012-ISEL-NEXT: flat_store_dwordx4 v[0:1], v[2:5]
; GFX1012-ISEL-NEXT: s_waitcnt lgkmcnt(0)
; GFX1012-ISEL-NEXT: s_setpc_b64 s[30:31]
;
; GFX1100-ISEL-LABEL: flat_store_wavefront:
; GFX1100-ISEL: ; %bb.0:
; GFX1100-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1100-ISEL-NEXT: flat_store_b128 v[0:1], v[2:5]
; GFX1100-ISEL-NEXT: s_waitcnt lgkmcnt(0)
; GFX1100-ISEL-NEXT: s_setpc_b64 s[30:31]
;
; GFX1250-ISEL-LABEL: flat_store_wavefront:
; GFX1250-ISEL: ; %bb.0:
; GFX1250-ISEL-NEXT: s_wait_loadcnt_dscnt 0x0
; GFX1250-ISEL-NEXT: s_wait_kmcnt 0x0
; GFX1250-ISEL-NEXT: flat_store_b128 v[0:1], v[2:5]
; GFX1250-ISEL-NEXT: s_wait_dscnt 0x0
; GFX1250-ISEL-NEXT: s_set_pc_i64 s[30:31]
;
; GFX1012-WGP-ISEL-LABEL: flat_store_wavefront:
; GFX1012-WGP-ISEL: ; %bb.0:
; GFX1012-WGP-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1012-WGP-ISEL-NEXT: flat_store_dwordx4 v[0:1], v[2:5]
; GFX1012-WGP-ISEL-NEXT: s_waitcnt lgkmcnt(0)
; GFX1012-WGP-ISEL-NEXT: s_setpc_b64 s[30:31]
;
; GFX1100-WGP-ISEL-LABEL: flat_store_wavefront:
; GFX1100-WGP-ISEL: ; %bb.0:
; GFX1100-WGP-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1100-WGP-ISEL-NEXT: flat_store_b128 v[0:1], v[2:5]
; GFX1100-WGP-ISEL-NEXT: s_waitcnt lgkmcnt(0)
; GFX1100-WGP-ISEL-NEXT: s_setpc_b64 s[30:31]
call void @llvm.amdgcn.av.store.b128.p0(ptr %p, <4 x i32> %v, metadata !0)
ret void
}
; scope: workgroup
define void @flat_store_workgroup(ptr %p, <4 x i32> %v) {
; GFX942-SDAG-LABEL: flat_store_workgroup:
; GFX942-SDAG: ; %bb.0:
; GFX942-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX942-SDAG-NEXT: flat_store_dwordx4 v[0:1], v[2:5] sc0
; GFX942-SDAG-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
; GFX942-SDAG-NEXT: s_setpc_b64 s[30:31]
;
; GFX1012-SDAG-LABEL: flat_store_workgroup:
; GFX1012-SDAG: ; %bb.0:
; GFX1012-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1012-SDAG-NEXT: flat_store_dwordx4 v[0:1], v[2:5]
; GFX1012-SDAG-NEXT: s_waitcnt lgkmcnt(0)
; GFX1012-SDAG-NEXT: s_setpc_b64 s[30:31]
;
; GFX1100-SDAG-LABEL: flat_store_workgroup:
; GFX1100-SDAG: ; %bb.0:
; GFX1100-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1100-SDAG-NEXT: flat_store_b128 v[0:1], v[2:5]
; GFX1100-SDAG-NEXT: s_waitcnt lgkmcnt(0)
; GFX1100-SDAG-NEXT: s_setpc_b64 s[30:31]
;
; GFX1250-SDAG-LABEL: flat_store_workgroup:
; GFX1250-SDAG: ; %bb.0:
; GFX1250-SDAG-NEXT: s_wait_loadcnt_dscnt 0x0
; GFX1250-SDAG-NEXT: s_wait_kmcnt 0x0
; GFX1250-SDAG-NEXT: flat_store_b128 v[0:1], v[2:5]
; GFX1250-SDAG-NEXT: s_wait_dscnt 0x0
; GFX1250-SDAG-NEXT: s_set_pc_i64 s[30:31]
;
; GFX1012-WGP-SDAG-LABEL: flat_store_workgroup:
; GFX1012-WGP-SDAG: ; %bb.0:
; GFX1012-WGP-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1012-WGP-SDAG-NEXT: flat_store_dwordx4 v[0:1], v[2:5]
; GFX1012-WGP-SDAG-NEXT: s_waitcnt lgkmcnt(0)
; GFX1012-WGP-SDAG-NEXT: s_setpc_b64 s[30:31]
;
; GFX1100-WGP-SDAG-LABEL: flat_store_workgroup:
; GFX1100-WGP-SDAG: ; %bb.0:
; GFX1100-WGP-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1100-WGP-SDAG-NEXT: flat_store_b128 v[0:1], v[2:5]
; GFX1100-WGP-SDAG-NEXT: s_waitcnt lgkmcnt(0)
; GFX1100-WGP-SDAG-NEXT: s_setpc_b64 s[30:31]
;
; GFX942-ISEL-LABEL: flat_store_workgroup:
; GFX942-ISEL: ; %bb.0:
; GFX942-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX942-ISEL-NEXT: flat_store_dwordx4 v[0:1], v[2:5] sc0
; GFX942-ISEL-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
; GFX942-ISEL-NEXT: s_setpc_b64 s[30:31]
;
; GFX1012-ISEL-LABEL: flat_store_workgroup:
; GFX1012-ISEL: ; %bb.0:
; GFX1012-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1012-ISEL-NEXT: flat_store_dwordx4 v[0:1], v[2:5]
; GFX1012-ISEL-NEXT: s_waitcnt lgkmcnt(0)
; GFX1012-ISEL-NEXT: s_setpc_b64 s[30:31]
;
; GFX1100-ISEL-LABEL: flat_store_workgroup:
; GFX1100-ISEL: ; %bb.0:
; GFX1100-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1100-ISEL-NEXT: flat_store_b128 v[0:1], v[2:5]
; GFX1100-ISEL-NEXT: s_waitcnt lgkmcnt(0)
; GFX1100-ISEL-NEXT: s_setpc_b64 s[30:31]
;
; GFX1250-ISEL-LABEL: flat_store_workgroup:
; GFX1250-ISEL: ; %bb.0:
; GFX1250-ISEL-NEXT: s_wait_loadcnt_dscnt 0x0
; GFX1250-ISEL-NEXT: s_wait_kmcnt 0x0
; GFX1250-ISEL-NEXT: flat_store_b128 v[0:1], v[2:5]
; GFX1250-ISEL-NEXT: s_wait_dscnt 0x0
; GFX1250-ISEL-NEXT: s_set_pc_i64 s[30:31]
;
; GFX1012-WGP-ISEL-LABEL: flat_store_workgroup:
; GFX1012-WGP-ISEL: ; %bb.0:
; GFX1012-WGP-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1012-WGP-ISEL-NEXT: flat_store_dwordx4 v[0:1], v[2:5]
; GFX1012-WGP-ISEL-NEXT: s_waitcnt lgkmcnt(0)
; GFX1012-WGP-ISEL-NEXT: s_setpc_b64 s[30:31]
;
; GFX1100-WGP-ISEL-LABEL: flat_store_workgroup:
; GFX1100-WGP-ISEL: ; %bb.0:
; GFX1100-WGP-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1100-WGP-ISEL-NEXT: flat_store_b128 v[0:1], v[2:5]
; GFX1100-WGP-ISEL-NEXT: s_waitcnt lgkmcnt(0)
; GFX1100-WGP-ISEL-NEXT: s_setpc_b64 s[30:31]
call void @llvm.amdgcn.av.store.b128.p0(ptr %p, <4 x i32> %v, metadata !1)
ret void
}
; scope: agent
define void @flat_store_agent(ptr %p, <4 x i32> %v) {
; GFX942-SDAG-LABEL: flat_store_agent:
; GFX942-SDAG: ; %bb.0:
; GFX942-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX942-SDAG-NEXT: flat_store_dwordx4 v[0:1], v[2:5] sc1
; GFX942-SDAG-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
; GFX942-SDAG-NEXT: s_setpc_b64 s[30:31]
;
; GFX1012-SDAG-LABEL: flat_store_agent:
; GFX1012-SDAG: ; %bb.0:
; GFX1012-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1012-SDAG-NEXT: flat_store_dwordx4 v[0:1], v[2:5]
; GFX1012-SDAG-NEXT: s_waitcnt lgkmcnt(0)
; GFX1012-SDAG-NEXT: s_setpc_b64 s[30:31]
;
; GFX1100-SDAG-LABEL: flat_store_agent:
; GFX1100-SDAG: ; %bb.0:
; GFX1100-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1100-SDAG-NEXT: flat_store_b128 v[0:1], v[2:5]
; GFX1100-SDAG-NEXT: s_waitcnt lgkmcnt(0)
; GFX1100-SDAG-NEXT: s_setpc_b64 s[30:31]
;
; GFX1250-SDAG-LABEL: flat_store_agent:
; GFX1250-SDAG: ; %bb.0:
; GFX1250-SDAG-NEXT: s_wait_loadcnt_dscnt 0x0
; GFX1250-SDAG-NEXT: s_wait_kmcnt 0x0
; GFX1250-SDAG-NEXT: flat_store_b128 v[0:1], v[2:5] scope:SCOPE_DEV
; GFX1250-SDAG-NEXT: s_wait_dscnt 0x0
; GFX1250-SDAG-NEXT: s_set_pc_i64 s[30:31]
;
; GFX1012-WGP-SDAG-LABEL: flat_store_agent:
; GFX1012-WGP-SDAG: ; %bb.0:
; GFX1012-WGP-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1012-WGP-SDAG-NEXT: flat_store_dwordx4 v[0:1], v[2:5]
; GFX1012-WGP-SDAG-NEXT: s_waitcnt lgkmcnt(0)
; GFX1012-WGP-SDAG-NEXT: s_setpc_b64 s[30:31]
;
; GFX1100-WGP-SDAG-LABEL: flat_store_agent:
; GFX1100-WGP-SDAG: ; %bb.0:
; GFX1100-WGP-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1100-WGP-SDAG-NEXT: flat_store_b128 v[0:1], v[2:5]
; GFX1100-WGP-SDAG-NEXT: s_waitcnt lgkmcnt(0)
; GFX1100-WGP-SDAG-NEXT: s_setpc_b64 s[30:31]
;
; GFX942-ISEL-LABEL: flat_store_agent:
; GFX942-ISEL: ; %bb.0:
; GFX942-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX942-ISEL-NEXT: flat_store_dwordx4 v[0:1], v[2:5] sc1
; GFX942-ISEL-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
; GFX942-ISEL-NEXT: s_setpc_b64 s[30:31]
;
; GFX1012-ISEL-LABEL: flat_store_agent:
; GFX1012-ISEL: ; %bb.0:
; GFX1012-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1012-ISEL-NEXT: flat_store_dwordx4 v[0:1], v[2:5]
; GFX1012-ISEL-NEXT: s_waitcnt lgkmcnt(0)
; GFX1012-ISEL-NEXT: s_setpc_b64 s[30:31]
;
; GFX1100-ISEL-LABEL: flat_store_agent:
; GFX1100-ISEL: ; %bb.0:
; GFX1100-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1100-ISEL-NEXT: flat_store_b128 v[0:1], v[2:5]
; GFX1100-ISEL-NEXT: s_waitcnt lgkmcnt(0)
; GFX1100-ISEL-NEXT: s_setpc_b64 s[30:31]
;
; GFX1250-ISEL-LABEL: flat_store_agent:
; GFX1250-ISEL: ; %bb.0:
; GFX1250-ISEL-NEXT: s_wait_loadcnt_dscnt 0x0
; GFX1250-ISEL-NEXT: s_wait_kmcnt 0x0
; GFX1250-ISEL-NEXT: flat_store_b128 v[0:1], v[2:5] scope:SCOPE_DEV
; GFX1250-ISEL-NEXT: s_wait_dscnt 0x0
; GFX1250-ISEL-NEXT: s_set_pc_i64 s[30:31]
;
; GFX1012-WGP-ISEL-LABEL: flat_store_agent:
; GFX1012-WGP-ISEL: ; %bb.0:
; GFX1012-WGP-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1012-WGP-ISEL-NEXT: flat_store_dwordx4 v[0:1], v[2:5]
; GFX1012-WGP-ISEL-NEXT: s_waitcnt lgkmcnt(0)
; GFX1012-WGP-ISEL-NEXT: s_setpc_b64 s[30:31]
;
; GFX1100-WGP-ISEL-LABEL: flat_store_agent:
; GFX1100-WGP-ISEL: ; %bb.0:
; GFX1100-WGP-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1100-WGP-ISEL-NEXT: flat_store_b128 v[0:1], v[2:5]
; GFX1100-WGP-ISEL-NEXT: s_waitcnt lgkmcnt(0)
; GFX1100-WGP-ISEL-NEXT: s_setpc_b64 s[30:31]
call void @llvm.amdgcn.av.store.b128.p0(ptr %p, <4 x i32> %v, metadata !2)
ret void
}
; scope: system (empty string = system scope)
define void @flat_store_system(ptr %p, <4 x i32> %v) {
; GFX942-SDAG-LABEL: flat_store_system:
; GFX942-SDAG: ; %bb.0:
; GFX942-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX942-SDAG-NEXT: flat_store_dwordx4 v[0:1], v[2:5] sc0 sc1
; GFX942-SDAG-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
; GFX942-SDAG-NEXT: s_setpc_b64 s[30:31]
;
; GFX1012-SDAG-LABEL: flat_store_system:
; GFX1012-SDAG: ; %bb.0:
; GFX1012-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1012-SDAG-NEXT: flat_store_dwordx4 v[0:1], v[2:5]
; GFX1012-SDAG-NEXT: s_waitcnt lgkmcnt(0)
; GFX1012-SDAG-NEXT: s_setpc_b64 s[30:31]
;
; GFX1100-SDAG-LABEL: flat_store_system:
; GFX1100-SDAG: ; %bb.0:
; GFX1100-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1100-SDAG-NEXT: flat_store_b128 v[0:1], v[2:5]
; GFX1100-SDAG-NEXT: s_waitcnt lgkmcnt(0)
; GFX1100-SDAG-NEXT: s_setpc_b64 s[30:31]
;
; GFX1250-SDAG-LABEL: flat_store_system:
; GFX1250-SDAG: ; %bb.0:
; GFX1250-SDAG-NEXT: s_wait_loadcnt_dscnt 0x0
; GFX1250-SDAG-NEXT: s_wait_kmcnt 0x0
; GFX1250-SDAG-NEXT: flat_store_b128 v[0:1], v[2:5] scope:SCOPE_SYS
; GFX1250-SDAG-NEXT: s_wait_dscnt 0x0
; GFX1250-SDAG-NEXT: s_set_pc_i64 s[30:31]
;
; GFX1012-WGP-SDAG-LABEL: flat_store_system:
; GFX1012-WGP-SDAG: ; %bb.0:
; GFX1012-WGP-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1012-WGP-SDAG-NEXT: flat_store_dwordx4 v[0:1], v[2:5]
; GFX1012-WGP-SDAG-NEXT: s_waitcnt lgkmcnt(0)
; GFX1012-WGP-SDAG-NEXT: s_setpc_b64 s[30:31]
;
; GFX1100-WGP-SDAG-LABEL: flat_store_system:
; GFX1100-WGP-SDAG: ; %bb.0:
; GFX1100-WGP-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1100-WGP-SDAG-NEXT: flat_store_b128 v[0:1], v[2:5]
; GFX1100-WGP-SDAG-NEXT: s_waitcnt lgkmcnt(0)
; GFX1100-WGP-SDAG-NEXT: s_setpc_b64 s[30:31]
;
; GFX942-ISEL-LABEL: flat_store_system:
; GFX942-ISEL: ; %bb.0:
; GFX942-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX942-ISEL-NEXT: flat_store_dwordx4 v[0:1], v[2:5] sc0 sc1
; GFX942-ISEL-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
; GFX942-ISEL-NEXT: s_setpc_b64 s[30:31]
;
; GFX1012-ISEL-LABEL: flat_store_system:
; GFX1012-ISEL: ; %bb.0:
; GFX1012-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1012-ISEL-NEXT: flat_store_dwordx4 v[0:1], v[2:5]
; GFX1012-ISEL-NEXT: s_waitcnt lgkmcnt(0)
; GFX1012-ISEL-NEXT: s_setpc_b64 s[30:31]
;
; GFX1100-ISEL-LABEL: flat_store_system:
; GFX1100-ISEL: ; %bb.0:
; GFX1100-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1100-ISEL-NEXT: flat_store_b128 v[0:1], v[2:5]
; GFX1100-ISEL-NEXT: s_waitcnt lgkmcnt(0)
; GFX1100-ISEL-NEXT: s_setpc_b64 s[30:31]
;
; GFX1250-ISEL-LABEL: flat_store_system:
; GFX1250-ISEL: ; %bb.0:
; GFX1250-ISEL-NEXT: s_wait_loadcnt_dscnt 0x0
; GFX1250-ISEL-NEXT: s_wait_kmcnt 0x0
; GFX1250-ISEL-NEXT: flat_store_b128 v[0:1], v[2:5] scope:SCOPE_SYS
; GFX1250-ISEL-NEXT: s_wait_dscnt 0x0
; GFX1250-ISEL-NEXT: s_set_pc_i64 s[30:31]
;
; GFX1012-WGP-ISEL-LABEL: flat_store_system:
; GFX1012-WGP-ISEL: ; %bb.0:
; GFX1012-WGP-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1012-WGP-ISEL-NEXT: flat_store_dwordx4 v[0:1], v[2:5]
; GFX1012-WGP-ISEL-NEXT: s_waitcnt lgkmcnt(0)
; GFX1012-WGP-ISEL-NEXT: s_setpc_b64 s[30:31]
;
; GFX1100-WGP-ISEL-LABEL: flat_store_system:
; GFX1100-WGP-ISEL: ; %bb.0:
; GFX1100-WGP-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1100-WGP-ISEL-NEXT: flat_store_b128 v[0:1], v[2:5]
; GFX1100-WGP-ISEL-NEXT: s_waitcnt lgkmcnt(0)
; GFX1100-WGP-ISEL-NEXT: s_setpc_b64 s[30:31]
call void @llvm.amdgcn.av.store.b128.p0(ptr %p, <4 x i32> %v, metadata !3)
ret void
}
; scope: singlethread
define void @flat_store_singlethread(ptr %p, <4 x i32> %v) {
; GFX942-SDAG-LABEL: flat_store_singlethread:
; GFX942-SDAG: ; %bb.0:
; GFX942-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX942-SDAG-NEXT: flat_store_dwordx4 v[0:1], v[2:5]
; GFX942-SDAG-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
; GFX942-SDAG-NEXT: s_setpc_b64 s[30:31]
;
; GFX1012-SDAG-LABEL: flat_store_singlethread:
; GFX1012-SDAG: ; %bb.0:
; GFX1012-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1012-SDAG-NEXT: flat_store_dwordx4 v[0:1], v[2:5]
; GFX1012-SDAG-NEXT: s_waitcnt lgkmcnt(0)
; GFX1012-SDAG-NEXT: s_setpc_b64 s[30:31]
;
; GFX1100-SDAG-LABEL: flat_store_singlethread:
; GFX1100-SDAG: ; %bb.0:
; GFX1100-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1100-SDAG-NEXT: flat_store_b128 v[0:1], v[2:5]
; GFX1100-SDAG-NEXT: s_waitcnt lgkmcnt(0)
; GFX1100-SDAG-NEXT: s_setpc_b64 s[30:31]
;
; GFX1250-SDAG-LABEL: flat_store_singlethread:
; GFX1250-SDAG: ; %bb.0:
; GFX1250-SDAG-NEXT: s_wait_loadcnt_dscnt 0x0
; GFX1250-SDAG-NEXT: s_wait_kmcnt 0x0
; GFX1250-SDAG-NEXT: flat_store_b128 v[0:1], v[2:5]
; GFX1250-SDAG-NEXT: s_wait_dscnt 0x0
; GFX1250-SDAG-NEXT: s_set_pc_i64 s[30:31]
;
; GFX1012-WGP-SDAG-LABEL: flat_store_singlethread:
; GFX1012-WGP-SDAG: ; %bb.0:
; GFX1012-WGP-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1012-WGP-SDAG-NEXT: flat_store_dwordx4 v[0:1], v[2:5]
; GFX1012-WGP-SDAG-NEXT: s_waitcnt lgkmcnt(0)
; GFX1012-WGP-SDAG-NEXT: s_setpc_b64 s[30:31]
;
; GFX1100-WGP-SDAG-LABEL: flat_store_singlethread:
; GFX1100-WGP-SDAG: ; %bb.0:
; GFX1100-WGP-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1100-WGP-SDAG-NEXT: flat_store_b128 v[0:1], v[2:5]
; GFX1100-WGP-SDAG-NEXT: s_waitcnt lgkmcnt(0)
; GFX1100-WGP-SDAG-NEXT: s_setpc_b64 s[30:31]
;
; GFX942-ISEL-LABEL: flat_store_singlethread:
; GFX942-ISEL: ; %bb.0:
; GFX942-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX942-ISEL-NEXT: flat_store_dwordx4 v[0:1], v[2:5]
; GFX942-ISEL-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
; GFX942-ISEL-NEXT: s_setpc_b64 s[30:31]
;
; GFX1012-ISEL-LABEL: flat_store_singlethread:
; GFX1012-ISEL: ; %bb.0:
; GFX1012-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1012-ISEL-NEXT: flat_store_dwordx4 v[0:1], v[2:5]
; GFX1012-ISEL-NEXT: s_waitcnt lgkmcnt(0)
; GFX1012-ISEL-NEXT: s_setpc_b64 s[30:31]
;
; GFX1100-ISEL-LABEL: flat_store_singlethread:
; GFX1100-ISEL: ; %bb.0:
; GFX1100-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1100-ISEL-NEXT: flat_store_b128 v[0:1], v[2:5]
; GFX1100-ISEL-NEXT: s_waitcnt lgkmcnt(0)
; GFX1100-ISEL-NEXT: s_setpc_b64 s[30:31]
;
; GFX1250-ISEL-LABEL: flat_store_singlethread:
; GFX1250-ISEL: ; %bb.0:
; GFX1250-ISEL-NEXT: s_wait_loadcnt_dscnt 0x0
; GFX1250-ISEL-NEXT: s_wait_kmcnt 0x0
; GFX1250-ISEL-NEXT: flat_store_b128 v[0:1], v[2:5]
; GFX1250-ISEL-NEXT: s_wait_dscnt 0x0
; GFX1250-ISEL-NEXT: s_set_pc_i64 s[30:31]
;
; GFX1012-WGP-ISEL-LABEL: flat_store_singlethread:
; GFX1012-WGP-ISEL: ; %bb.0:
; GFX1012-WGP-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1012-WGP-ISEL-NEXT: flat_store_dwordx4 v[0:1], v[2:5]
; GFX1012-WGP-ISEL-NEXT: s_waitcnt lgkmcnt(0)
; GFX1012-WGP-ISEL-NEXT: s_setpc_b64 s[30:31]
;
; GFX1100-WGP-ISEL-LABEL: flat_store_singlethread:
; GFX1100-WGP-ISEL: ; %bb.0:
; GFX1100-WGP-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1100-WGP-ISEL-NEXT: flat_store_b128 v[0:1], v[2:5]
; GFX1100-WGP-ISEL-NEXT: s_waitcnt lgkmcnt(0)
; GFX1100-WGP-ISEL-NEXT: s_setpc_b64 s[30:31]
call void @llvm.amdgcn.av.store.b128.p0(ptr %p, <4 x i32> %v, metadata !4)
ret void
}
; scope: cluster
define void @flat_store_cluster(ptr %p, <4 x i32> %v) {
; GFX942-SDAG-LABEL: flat_store_cluster:
; GFX942-SDAG: ; %bb.0:
; GFX942-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX942-SDAG-NEXT: flat_store_dwordx4 v[0:1], v[2:5] sc1
; GFX942-SDAG-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
; GFX942-SDAG-NEXT: s_setpc_b64 s[30:31]
;
; GFX1012-SDAG-LABEL: flat_store_cluster:
; GFX1012-SDAG: ; %bb.0:
; GFX1012-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1012-SDAG-NEXT: flat_store_dwordx4 v[0:1], v[2:5]
; GFX1012-SDAG-NEXT: s_waitcnt lgkmcnt(0)
; GFX1012-SDAG-NEXT: s_setpc_b64 s[30:31]
;
; GFX1100-SDAG-LABEL: flat_store_cluster:
; GFX1100-SDAG: ; %bb.0:
; GFX1100-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1100-SDAG-NEXT: flat_store_b128 v[0:1], v[2:5]
; GFX1100-SDAG-NEXT: s_waitcnt lgkmcnt(0)
; GFX1100-SDAG-NEXT: s_setpc_b64 s[30:31]
;
; GFX1250-SDAG-LABEL: flat_store_cluster:
; GFX1250-SDAG: ; %bb.0:
; GFX1250-SDAG-NEXT: s_wait_loadcnt_dscnt 0x0
; GFX1250-SDAG-NEXT: s_wait_kmcnt 0x0
; GFX1250-SDAG-NEXT: flat_store_b128 v[0:1], v[2:5] scope:SCOPE_SE
; GFX1250-SDAG-NEXT: s_wait_dscnt 0x0
; GFX1250-SDAG-NEXT: s_set_pc_i64 s[30:31]
;
; GFX1012-WGP-SDAG-LABEL: flat_store_cluster:
; GFX1012-WGP-SDAG: ; %bb.0:
; GFX1012-WGP-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1012-WGP-SDAG-NEXT: flat_store_dwordx4 v[0:1], v[2:5]
; GFX1012-WGP-SDAG-NEXT: s_waitcnt lgkmcnt(0)
; GFX1012-WGP-SDAG-NEXT: s_setpc_b64 s[30:31]
;
; GFX1100-WGP-SDAG-LABEL: flat_store_cluster:
; GFX1100-WGP-SDAG: ; %bb.0:
; GFX1100-WGP-SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1100-WGP-SDAG-NEXT: flat_store_b128 v[0:1], v[2:5]
; GFX1100-WGP-SDAG-NEXT: s_waitcnt lgkmcnt(0)
; GFX1100-WGP-SDAG-NEXT: s_setpc_b64 s[30:31]
;
; GFX942-ISEL-LABEL: flat_store_cluster:
; GFX942-ISEL: ; %bb.0:
; GFX942-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX942-ISEL-NEXT: flat_store_dwordx4 v[0:1], v[2:5] sc1
; GFX942-ISEL-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
; GFX942-ISEL-NEXT: s_setpc_b64 s[30:31]
;
; GFX1012-ISEL-LABEL: flat_store_cluster:
; GFX1012-ISEL: ; %bb.0:
; GFX1012-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1012-ISEL-NEXT: flat_store_dwordx4 v[0:1], v[2:5]
; GFX1012-ISEL-NEXT: s_waitcnt lgkmcnt(0)
; GFX1012-ISEL-NEXT: s_setpc_b64 s[30:31]
;
; GFX1100-ISEL-LABEL: flat_store_cluster:
; GFX1100-ISEL: ; %bb.0:
; GFX1100-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1100-ISEL-NEXT: flat_store_b128 v[0:1], v[2:5]
; GFX1100-ISEL-NEXT: s_waitcnt lgkmcnt(0)
; GFX1100-ISEL-NEXT: s_setpc_b64 s[30:31]
;
; GFX1250-ISEL-LABEL: flat_store_cluster:
; GFX1250-ISEL: ; %bb.0:
; GFX1250-ISEL-NEXT: s_wait_loadcnt_dscnt 0x0
; GFX1250-ISEL-NEXT: s_wait_kmcnt 0x0
; GFX1250-ISEL-NEXT: flat_store_b128 v[0:1], v[2:5] scope:SCOPE_SE
; GFX1250-ISEL-NEXT: s_wait_dscnt 0x0
; GFX1250-ISEL-NEXT: s_set_pc_i64 s[30:31]
;
; GFX1012-WGP-ISEL-LABEL: flat_store_cluster:
; GFX1012-WGP-ISEL: ; %bb.0:
; GFX1012-WGP-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1012-WGP-ISEL-NEXT: flat_store_dwordx4 v[0:1], v[2:5]
; GFX1012-WGP-ISEL-NEXT: s_waitcnt lgkmcnt(0)
; GFX1012-WGP-ISEL-NEXT: s_setpc_b64 s[30:31]
;
; GFX1100-WGP-ISEL-LABEL: flat_store_cluster:
; GFX1100-WGP-ISEL: ; %bb.0:
; GFX1100-WGP-ISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX1100-WGP-ISEL-NEXT: flat_store_b128 v[0:1], v[2:5]
; GFX1100-WGP-ISEL-NEXT: s_waitcnt lgkmcnt(0)
; GFX1100-WGP-ISEL-NEXT: s_setpc_b64 s[30:31]
call void @llvm.amdgcn.av.store.b128.p0(ptr %p, <4 x i32> %v, metadata !5)
ret void
}
!0 = !{!"wavefront"}
!1 = !{!"workgroup"}
!2 = !{!"agent"}
!3 = !{!""}
!4 = !{!"singlethread"}
!5 = !{!"cluster"}