brintos

brintos / llvm-project-archived public Read only

0
0
Text · 79.1 KiB · b07807a Raw
2334 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=amdgcn-amd-amdhsa -O0 -mcpu=gfx600 < %s | FileCheck --check-prefixes=GFX6 %s3; RUN: llc -mtriple=amdgcn-amd-amdhsa -O0 -mcpu=gfx700 < %s | FileCheck --check-prefixes=GFX7 %s4; RUN: llc -mtriple=amdgcn-amd-amdhsa -O0 -mcpu=gfx1010 < %s | FileCheck --check-prefixes=GFX10-WGP %s5; RUN: llc -mtriple=amdgcn-amd-amdhsa -O0 -mcpu=gfx1010 -mattr=+cumode < %s | FileCheck --check-prefixes=GFX10-CU %s6; RUN: llc -mtriple=amdgcn-amd-amdpal -O0 -mcpu=gfx700 -amdgcn-skip-cache-invalidations < %s | FileCheck --check-prefixes=SKIP-CACHE-INV %s7; RUN: llc -mtriple=amdgcn-amd-amdhsa -O0 -mcpu=gfx90a < %s | FileCheck -check-prefixes=GFX90A-NOTTGSPLIT %s8; RUN: llc -mtriple=amdgcn-amd-amdhsa -O0 -mcpu=gfx90a -mattr=+tgsplit < %s | FileCheck -check-prefixes=GFX90A-TGSPLIT %s9; RUN: llc -mtriple=amdgcn-amd-amdhsa -O0 -mcpu=gfx942 < %s | FileCheck -check-prefixes=GFX942-NOTTGSPLIT %s10; RUN: llc -mtriple=amdgcn-amd-amdhsa -O0 -mcpu=gfx942 -mattr=+tgsplit < %s | FileCheck -check-prefixes=GFX942-TGSPLIT %s11; RUN: llc -mtriple=amdgcn-amd-amdhsa -O0 -mcpu=gfx1100 < %s | FileCheck --check-prefixes=GFX11-WGP %s12; RUN: llc -mtriple=amdgcn-amd-amdhsa -O0 -mcpu=gfx1100 -mattr=+cumode < %s | FileCheck --check-prefixes=GFX11-CU %s13; RUN: llc -mtriple=amdgcn-amd-amdhsa -O0 -mcpu=gfx1200 < %s | FileCheck --check-prefixes=GFX12-WGP %s14; RUN: llc -mtriple=amdgcn-amd-amdhsa -O0 -mcpu=gfx1200 -mattr=+cumode < %s | FileCheck --check-prefixes=GFX12-CU %s15; RUN: llc -mtriple=amdgcn-amd-amdhsa -O0 -mcpu=gfx1250 < %s | FileCheck --check-prefixes=GFX1250 %s16 17define amdgpu_kernel void @workgroup_acquire_fence() {18; GFX6-LABEL: workgroup_acquire_fence:19; GFX6:       ; %bb.0: ; %entry20; GFX6-NEXT:    s_endpgm21;22; GFX7-LABEL: workgroup_acquire_fence:23; GFX7:       ; %bb.0: ; %entry24; GFX7-NEXT:    s_endpgm25;26; GFX10-WGP-LABEL: workgroup_acquire_fence:27; GFX10-WGP:       ; %bb.0: ; %entry28; GFX10-WGP-NEXT:    s_waitcnt vmcnt(0)29; GFX10-WGP-NEXT:    s_waitcnt_vscnt null, 0x030; GFX10-WGP-NEXT:    buffer_gl0_inv31; GFX10-WGP-NEXT:    s_endpgm32;33; GFX10-CU-LABEL: workgroup_acquire_fence:34; GFX10-CU:       ; %bb.0: ; %entry35; GFX10-CU-NEXT:    s_endpgm36;37; SKIP-CACHE-INV-LABEL: workgroup_acquire_fence:38; SKIP-CACHE-INV:       ; %bb.0: ; %entry39; SKIP-CACHE-INV-NEXT:    s_endpgm40;41; GFX90A-NOTTGSPLIT-LABEL: workgroup_acquire_fence:42; GFX90A-NOTTGSPLIT:       ; %bb.0: ; %entry43; GFX90A-NOTTGSPLIT-NEXT:    s_endpgm44;45; GFX90A-TGSPLIT-LABEL: workgroup_acquire_fence:46; GFX90A-TGSPLIT:       ; %bb.0: ; %entry47; GFX90A-TGSPLIT-NEXT:    s_waitcnt vmcnt(0)48; GFX90A-TGSPLIT-NEXT:    buffer_wbinvl1_vol49; GFX90A-TGSPLIT-NEXT:    s_endpgm50;51; GFX942-NOTTGSPLIT-LABEL: workgroup_acquire_fence:52; GFX942-NOTTGSPLIT:       ; %bb.0: ; %entry53; GFX942-NOTTGSPLIT-NEXT:    s_endpgm54;55; GFX942-TGSPLIT-LABEL: workgroup_acquire_fence:56; GFX942-TGSPLIT:       ; %bb.0: ; %entry57; GFX942-TGSPLIT-NEXT:    s_waitcnt vmcnt(0)58; GFX942-TGSPLIT-NEXT:    buffer_inv sc059; GFX942-TGSPLIT-NEXT:    s_endpgm60;61; GFX11-WGP-LABEL: workgroup_acquire_fence:62; GFX11-WGP:       ; %bb.0: ; %entry63; GFX11-WGP-NEXT:    s_waitcnt vmcnt(0)64; GFX11-WGP-NEXT:    s_waitcnt_vscnt null, 0x065; GFX11-WGP-NEXT:    buffer_gl0_inv66; GFX11-WGP-NEXT:    s_endpgm67;68; GFX11-CU-LABEL: workgroup_acquire_fence:69; GFX11-CU:       ; %bb.0: ; %entry70; GFX11-CU-NEXT:    s_endpgm71;72; GFX12-WGP-LABEL: workgroup_acquire_fence:73; GFX12-WGP:       ; %bb.0: ; %entry74; GFX12-WGP-NEXT:    s_wait_loadcnt 0x075; GFX12-WGP-NEXT:    s_wait_storecnt 0x076; GFX12-WGP-NEXT:    global_inv scope:SCOPE_SE77; GFX12-WGP-NEXT:    s_endpgm78;79; GFX12-CU-LABEL: workgroup_acquire_fence:80; GFX12-CU:       ; %bb.0: ; %entry81; GFX12-CU-NEXT:    s_endpgm82;83; GFX1250-LABEL: workgroup_acquire_fence:84; GFX1250:       ; %bb.0: ; %entry85; GFX1250-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_WAVE_MODE, 25, 1), 186; GFX1250-NEXT:    s_wait_loadcnt 0x087; GFX1250-NEXT:    s_wait_storecnt 0x088; GFX1250-NEXT:    s_endpgm89entry:90  fence syncscope("workgroup") acquire, !mmra !{!"amdgpu-synchronize-as", !"global"}91  ret void92}93 94define amdgpu_kernel void @workgroup_release_fence() {95; GFX6-LABEL: workgroup_release_fence:96; GFX6:       ; %bb.0: ; %entry97; GFX6-NEXT:    s_endpgm98;99; GFX7-LABEL: workgroup_release_fence:100; GFX7:       ; %bb.0: ; %entry101; GFX7-NEXT:    s_endpgm102;103; GFX10-WGP-LABEL: workgroup_release_fence:104; GFX10-WGP:       ; %bb.0: ; %entry105; GFX10-WGP-NEXT:    s_waitcnt vmcnt(0)106; GFX10-WGP-NEXT:    s_waitcnt_vscnt null, 0x0107; GFX10-WGP-NEXT:    s_endpgm108;109; GFX10-CU-LABEL: workgroup_release_fence:110; GFX10-CU:       ; %bb.0: ; %entry111; GFX10-CU-NEXT:    s_waitcnt vmcnt(0)112; GFX10-CU-NEXT:    s_waitcnt_vscnt null, 0x0113; GFX10-CU-NEXT:    s_endpgm114;115; SKIP-CACHE-INV-LABEL: workgroup_release_fence:116; SKIP-CACHE-INV:       ; %bb.0: ; %entry117; SKIP-CACHE-INV-NEXT:    s_endpgm118;119; GFX90A-NOTTGSPLIT-LABEL: workgroup_release_fence:120; GFX90A-NOTTGSPLIT:       ; %bb.0: ; %entry121; GFX90A-NOTTGSPLIT-NEXT:    s_endpgm122;123; GFX90A-TGSPLIT-LABEL: workgroup_release_fence:124; GFX90A-TGSPLIT:       ; %bb.0: ; %entry125; GFX90A-TGSPLIT-NEXT:    s_waitcnt vmcnt(0)126; GFX90A-TGSPLIT-NEXT:    s_endpgm127;128; GFX942-NOTTGSPLIT-LABEL: workgroup_release_fence:129; GFX942-NOTTGSPLIT:       ; %bb.0: ; %entry130; GFX942-NOTTGSPLIT-NEXT:    s_endpgm131;132; GFX942-TGSPLIT-LABEL: workgroup_release_fence:133; GFX942-TGSPLIT:       ; %bb.0: ; %entry134; GFX942-TGSPLIT-NEXT:    s_waitcnt vmcnt(0)135; GFX942-TGSPLIT-NEXT:    s_endpgm136;137; GFX11-WGP-LABEL: workgroup_release_fence:138; GFX11-WGP:       ; %bb.0: ; %entry139; GFX11-WGP-NEXT:    s_waitcnt vmcnt(0)140; GFX11-WGP-NEXT:    s_waitcnt_vscnt null, 0x0141; GFX11-WGP-NEXT:    s_endpgm142;143; GFX11-CU-LABEL: workgroup_release_fence:144; GFX11-CU:       ; %bb.0: ; %entry145; GFX11-CU-NEXT:    s_waitcnt vmcnt(0)146; GFX11-CU-NEXT:    s_waitcnt_vscnt null, 0x0147; GFX11-CU-NEXT:    s_endpgm148;149; GFX12-WGP-LABEL: workgroup_release_fence:150; GFX12-WGP:       ; %bb.0: ; %entry151; GFX12-WGP-NEXT:    s_wait_bvhcnt 0x0152; GFX12-WGP-NEXT:    s_wait_samplecnt 0x0153; GFX12-WGP-NEXT:    s_wait_loadcnt 0x0154; GFX12-WGP-NEXT:    s_wait_storecnt 0x0155; GFX12-WGP-NEXT:    s_endpgm156;157; GFX12-CU-LABEL: workgroup_release_fence:158; GFX12-CU:       ; %bb.0: ; %entry159; GFX12-CU-NEXT:    s_wait_bvhcnt 0x0160; GFX12-CU-NEXT:    s_wait_samplecnt 0x0161; GFX12-CU-NEXT:    s_wait_loadcnt 0x0162; GFX12-CU-NEXT:    s_wait_storecnt 0x0163; GFX12-CU-NEXT:    s_endpgm164;165; GFX1250-LABEL: workgroup_release_fence:166; GFX1250:       ; %bb.0: ; %entry167; GFX1250-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_WAVE_MODE, 25, 1), 1168; GFX1250-NEXT:    s_wait_loadcnt 0x0169; GFX1250-NEXT:    s_wait_storecnt 0x0170; GFX1250-NEXT:    s_endpgm171entry:172  fence syncscope("workgroup") release, !mmra !{!"amdgpu-synchronize-as", !"global"}173  ret void174}175 176define amdgpu_kernel void @workgroup_acq_rel_fence() {177; GFX6-LABEL: workgroup_acq_rel_fence:178; GFX6:       ; %bb.0: ; %entry179; GFX6-NEXT:    s_endpgm180;181; GFX7-LABEL: workgroup_acq_rel_fence:182; GFX7:       ; %bb.0: ; %entry183; GFX7-NEXT:    s_endpgm184;185; GFX10-WGP-LABEL: workgroup_acq_rel_fence:186; GFX10-WGP:       ; %bb.0: ; %entry187; GFX10-WGP-NEXT:    s_waitcnt vmcnt(0)188; GFX10-WGP-NEXT:    s_waitcnt_vscnt null, 0x0189; GFX10-WGP-NEXT:    buffer_gl0_inv190; GFX10-WGP-NEXT:    s_endpgm191;192; GFX10-CU-LABEL: workgroup_acq_rel_fence:193; GFX10-CU:       ; %bb.0: ; %entry194; GFX10-CU-NEXT:    s_waitcnt vmcnt(0)195; GFX10-CU-NEXT:    s_waitcnt_vscnt null, 0x0196; GFX10-CU-NEXT:    s_endpgm197;198; SKIP-CACHE-INV-LABEL: workgroup_acq_rel_fence:199; SKIP-CACHE-INV:       ; %bb.0: ; %entry200; SKIP-CACHE-INV-NEXT:    s_endpgm201;202; GFX90A-NOTTGSPLIT-LABEL: workgroup_acq_rel_fence:203; GFX90A-NOTTGSPLIT:       ; %bb.0: ; %entry204; GFX90A-NOTTGSPLIT-NEXT:    s_endpgm205;206; GFX90A-TGSPLIT-LABEL: workgroup_acq_rel_fence:207; GFX90A-TGSPLIT:       ; %bb.0: ; %entry208; GFX90A-TGSPLIT-NEXT:    s_waitcnt vmcnt(0)209; GFX90A-TGSPLIT-NEXT:    buffer_wbinvl1_vol210; GFX90A-TGSPLIT-NEXT:    s_endpgm211;212; GFX942-NOTTGSPLIT-LABEL: workgroup_acq_rel_fence:213; GFX942-NOTTGSPLIT:       ; %bb.0: ; %entry214; GFX942-NOTTGSPLIT-NEXT:    s_endpgm215;216; GFX942-TGSPLIT-LABEL: workgroup_acq_rel_fence:217; GFX942-TGSPLIT:       ; %bb.0: ; %entry218; GFX942-TGSPLIT-NEXT:    s_waitcnt vmcnt(0)219; GFX942-TGSPLIT-NEXT:    buffer_inv sc0220; GFX942-TGSPLIT-NEXT:    s_endpgm221;222; GFX11-WGP-LABEL: workgroup_acq_rel_fence:223; GFX11-WGP:       ; %bb.0: ; %entry224; GFX11-WGP-NEXT:    s_waitcnt vmcnt(0)225; GFX11-WGP-NEXT:    s_waitcnt_vscnt null, 0x0226; GFX11-WGP-NEXT:    buffer_gl0_inv227; GFX11-WGP-NEXT:    s_endpgm228;229; GFX11-CU-LABEL: workgroup_acq_rel_fence:230; GFX11-CU:       ; %bb.0: ; %entry231; GFX11-CU-NEXT:    s_waitcnt vmcnt(0)232; GFX11-CU-NEXT:    s_waitcnt_vscnt null, 0x0233; GFX11-CU-NEXT:    s_endpgm234;235; GFX12-WGP-LABEL: workgroup_acq_rel_fence:236; GFX12-WGP:       ; %bb.0: ; %entry237; GFX12-WGP-NEXT:    s_wait_bvhcnt 0x0238; GFX12-WGP-NEXT:    s_wait_samplecnt 0x0239; GFX12-WGP-NEXT:    s_wait_loadcnt 0x0240; GFX12-WGP-NEXT:    s_wait_storecnt 0x0241; GFX12-WGP-NEXT:    global_inv scope:SCOPE_SE242; GFX12-WGP-NEXT:    s_endpgm243;244; GFX12-CU-LABEL: workgroup_acq_rel_fence:245; GFX12-CU:       ; %bb.0: ; %entry246; GFX12-CU-NEXT:    s_wait_bvhcnt 0x0247; GFX12-CU-NEXT:    s_wait_samplecnt 0x0248; GFX12-CU-NEXT:    s_wait_loadcnt 0x0249; GFX12-CU-NEXT:    s_wait_storecnt 0x0250; GFX12-CU-NEXT:    s_endpgm251;252; GFX1250-LABEL: workgroup_acq_rel_fence:253; GFX1250:       ; %bb.0: ; %entry254; GFX1250-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_WAVE_MODE, 25, 1), 1255; GFX1250-NEXT:    s_wait_loadcnt 0x0256; GFX1250-NEXT:    s_wait_storecnt 0x0257; GFX1250-NEXT:    s_endpgm258entry:259  fence syncscope("workgroup") acq_rel, !mmra !{!"amdgpu-synchronize-as", !"global"}260  ret void261}262 263define amdgpu_kernel void @workgroup_seq_cst_fence() {264; GFX6-LABEL: workgroup_seq_cst_fence:265; GFX6:       ; %bb.0: ; %entry266; GFX6-NEXT:    s_endpgm267;268; GFX7-LABEL: workgroup_seq_cst_fence:269; GFX7:       ; %bb.0: ; %entry270; GFX7-NEXT:    s_endpgm271;272; GFX10-WGP-LABEL: workgroup_seq_cst_fence:273; GFX10-WGP:       ; %bb.0: ; %entry274; GFX10-WGP-NEXT:    s_waitcnt vmcnt(0)275; GFX10-WGP-NEXT:    s_waitcnt_vscnt null, 0x0276; GFX10-WGP-NEXT:    buffer_gl0_inv277; GFX10-WGP-NEXT:    s_endpgm278;279; GFX10-CU-LABEL: workgroup_seq_cst_fence:280; GFX10-CU:       ; %bb.0: ; %entry281; GFX10-CU-NEXT:    s_waitcnt vmcnt(0)282; GFX10-CU-NEXT:    s_waitcnt_vscnt null, 0x0283; GFX10-CU-NEXT:    s_endpgm284;285; SKIP-CACHE-INV-LABEL: workgroup_seq_cst_fence:286; SKIP-CACHE-INV:       ; %bb.0: ; %entry287; SKIP-CACHE-INV-NEXT:    s_endpgm288;289; GFX90A-NOTTGSPLIT-LABEL: workgroup_seq_cst_fence:290; GFX90A-NOTTGSPLIT:       ; %bb.0: ; %entry291; GFX90A-NOTTGSPLIT-NEXT:    s_endpgm292;293; GFX90A-TGSPLIT-LABEL: workgroup_seq_cst_fence:294; GFX90A-TGSPLIT:       ; %bb.0: ; %entry295; GFX90A-TGSPLIT-NEXT:    s_waitcnt vmcnt(0)296; GFX90A-TGSPLIT-NEXT:    buffer_wbinvl1_vol297; GFX90A-TGSPLIT-NEXT:    s_endpgm298;299; GFX942-NOTTGSPLIT-LABEL: workgroup_seq_cst_fence:300; GFX942-NOTTGSPLIT:       ; %bb.0: ; %entry301; GFX942-NOTTGSPLIT-NEXT:    s_endpgm302;303; GFX942-TGSPLIT-LABEL: workgroup_seq_cst_fence:304; GFX942-TGSPLIT:       ; %bb.0: ; %entry305; GFX942-TGSPLIT-NEXT:    s_waitcnt vmcnt(0)306; GFX942-TGSPLIT-NEXT:    buffer_inv sc0307; GFX942-TGSPLIT-NEXT:    s_endpgm308;309; GFX11-WGP-LABEL: workgroup_seq_cst_fence:310; GFX11-WGP:       ; %bb.0: ; %entry311; GFX11-WGP-NEXT:    s_waitcnt vmcnt(0)312; GFX11-WGP-NEXT:    s_waitcnt_vscnt null, 0x0313; GFX11-WGP-NEXT:    buffer_gl0_inv314; GFX11-WGP-NEXT:    s_endpgm315;316; GFX11-CU-LABEL: workgroup_seq_cst_fence:317; GFX11-CU:       ; %bb.0: ; %entry318; GFX11-CU-NEXT:    s_waitcnt vmcnt(0)319; GFX11-CU-NEXT:    s_waitcnt_vscnt null, 0x0320; GFX11-CU-NEXT:    s_endpgm321;322; GFX12-WGP-LABEL: workgroup_seq_cst_fence:323; GFX12-WGP:       ; %bb.0: ; %entry324; GFX12-WGP-NEXT:    s_wait_bvhcnt 0x0325; GFX12-WGP-NEXT:    s_wait_samplecnt 0x0326; GFX12-WGP-NEXT:    s_wait_loadcnt 0x0327; GFX12-WGP-NEXT:    s_wait_storecnt 0x0328; GFX12-WGP-NEXT:    global_inv scope:SCOPE_SE329; GFX12-WGP-NEXT:    s_endpgm330;331; GFX12-CU-LABEL: workgroup_seq_cst_fence:332; GFX12-CU:       ; %bb.0: ; %entry333; GFX12-CU-NEXT:    s_wait_bvhcnt 0x0334; GFX12-CU-NEXT:    s_wait_samplecnt 0x0335; GFX12-CU-NEXT:    s_wait_loadcnt 0x0336; GFX12-CU-NEXT:    s_wait_storecnt 0x0337; GFX12-CU-NEXT:    s_endpgm338;339; GFX1250-LABEL: workgroup_seq_cst_fence:340; GFX1250:       ; %bb.0: ; %entry341; GFX1250-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_WAVE_MODE, 25, 1), 1342; GFX1250-NEXT:    s_wait_loadcnt 0x0343; GFX1250-NEXT:    s_wait_storecnt 0x0344; GFX1250-NEXT:    s_endpgm345entry:346  fence syncscope("workgroup") seq_cst, !mmra !{!"amdgpu-synchronize-as", !"global"}347  ret void348}349 350define amdgpu_kernel void @workgroup_one_as_acquire_fence() {351; GFX6-LABEL: workgroup_one_as_acquire_fence:352; GFX6:       ; %bb.0: ; %entry353; GFX6-NEXT:    s_endpgm354;355; GFX7-LABEL: workgroup_one_as_acquire_fence:356; GFX7:       ; %bb.0: ; %entry357; GFX7-NEXT:    s_endpgm358;359; GFX10-WGP-LABEL: workgroup_one_as_acquire_fence:360; GFX10-WGP:       ; %bb.0: ; %entry361; GFX10-WGP-NEXT:    s_waitcnt vmcnt(0)362; GFX10-WGP-NEXT:    s_waitcnt_vscnt null, 0x0363; GFX10-WGP-NEXT:    buffer_gl0_inv364; GFX10-WGP-NEXT:    s_endpgm365;366; GFX10-CU-LABEL: workgroup_one_as_acquire_fence:367; GFX10-CU:       ; %bb.0: ; %entry368; GFX10-CU-NEXT:    s_endpgm369;370; SKIP-CACHE-INV-LABEL: workgroup_one_as_acquire_fence:371; SKIP-CACHE-INV:       ; %bb.0: ; %entry372; SKIP-CACHE-INV-NEXT:    s_endpgm373;374; GFX90A-NOTTGSPLIT-LABEL: workgroup_one_as_acquire_fence:375; GFX90A-NOTTGSPLIT:       ; %bb.0: ; %entry376; GFX90A-NOTTGSPLIT-NEXT:    s_endpgm377;378; GFX90A-TGSPLIT-LABEL: workgroup_one_as_acquire_fence:379; GFX90A-TGSPLIT:       ; %bb.0: ; %entry380; GFX90A-TGSPLIT-NEXT:    s_waitcnt vmcnt(0)381; GFX90A-TGSPLIT-NEXT:    buffer_wbinvl1_vol382; GFX90A-TGSPLIT-NEXT:    s_endpgm383;384; GFX942-NOTTGSPLIT-LABEL: workgroup_one_as_acquire_fence:385; GFX942-NOTTGSPLIT:       ; %bb.0: ; %entry386; GFX942-NOTTGSPLIT-NEXT:    s_endpgm387;388; GFX942-TGSPLIT-LABEL: workgroup_one_as_acquire_fence:389; GFX942-TGSPLIT:       ; %bb.0: ; %entry390; GFX942-TGSPLIT-NEXT:    s_waitcnt vmcnt(0)391; GFX942-TGSPLIT-NEXT:    buffer_inv sc0392; GFX942-TGSPLIT-NEXT:    s_endpgm393;394; GFX11-WGP-LABEL: workgroup_one_as_acquire_fence:395; GFX11-WGP:       ; %bb.0: ; %entry396; GFX11-WGP-NEXT:    s_waitcnt vmcnt(0)397; GFX11-WGP-NEXT:    s_waitcnt_vscnt null, 0x0398; GFX11-WGP-NEXT:    buffer_gl0_inv399; GFX11-WGP-NEXT:    s_endpgm400;401; GFX11-CU-LABEL: workgroup_one_as_acquire_fence:402; GFX11-CU:       ; %bb.0: ; %entry403; GFX11-CU-NEXT:    s_endpgm404;405; GFX12-WGP-LABEL: workgroup_one_as_acquire_fence:406; GFX12-WGP:       ; %bb.0: ; %entry407; GFX12-WGP-NEXT:    s_wait_loadcnt 0x0408; GFX12-WGP-NEXT:    s_wait_storecnt 0x0409; GFX12-WGP-NEXT:    global_inv scope:SCOPE_SE410; GFX12-WGP-NEXT:    s_endpgm411;412; GFX12-CU-LABEL: workgroup_one_as_acquire_fence:413; GFX12-CU:       ; %bb.0: ; %entry414; GFX12-CU-NEXT:    s_endpgm415;416; GFX1250-LABEL: workgroup_one_as_acquire_fence:417; GFX1250:       ; %bb.0: ; %entry418; GFX1250-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_WAVE_MODE, 25, 1), 1419; GFX1250-NEXT:    s_wait_loadcnt 0x0420; GFX1250-NEXT:    s_wait_storecnt 0x0421; GFX1250-NEXT:    s_endpgm422entry:423  fence syncscope("workgroup-one-as") acquire, !mmra !{!"amdgpu-synchronize-as", !"global"}424  ret void425}426 427define amdgpu_kernel void @workgroup_one_as_release_fence() {428; GFX6-LABEL: workgroup_one_as_release_fence:429; GFX6:       ; %bb.0: ; %entry430; GFX6-NEXT:    s_endpgm431;432; GFX7-LABEL: workgroup_one_as_release_fence:433; GFX7:       ; %bb.0: ; %entry434; GFX7-NEXT:    s_endpgm435;436; GFX10-WGP-LABEL: workgroup_one_as_release_fence:437; GFX10-WGP:       ; %bb.0: ; %entry438; GFX10-WGP-NEXT:    s_waitcnt vmcnt(0)439; GFX10-WGP-NEXT:    s_waitcnt_vscnt null, 0x0440; GFX10-WGP-NEXT:    s_endpgm441;442; GFX10-CU-LABEL: workgroup_one_as_release_fence:443; GFX10-CU:       ; %bb.0: ; %entry444; GFX10-CU-NEXT:    s_waitcnt vmcnt(0)445; GFX10-CU-NEXT:    s_waitcnt_vscnt null, 0x0446; GFX10-CU-NEXT:    s_endpgm447;448; SKIP-CACHE-INV-LABEL: workgroup_one_as_release_fence:449; SKIP-CACHE-INV:       ; %bb.0: ; %entry450; SKIP-CACHE-INV-NEXT:    s_endpgm451;452; GFX90A-NOTTGSPLIT-LABEL: workgroup_one_as_release_fence:453; GFX90A-NOTTGSPLIT:       ; %bb.0: ; %entry454; GFX90A-NOTTGSPLIT-NEXT:    s_endpgm455;456; GFX90A-TGSPLIT-LABEL: workgroup_one_as_release_fence:457; GFX90A-TGSPLIT:       ; %bb.0: ; %entry458; GFX90A-TGSPLIT-NEXT:    s_waitcnt vmcnt(0)459; GFX90A-TGSPLIT-NEXT:    s_endpgm460;461; GFX942-NOTTGSPLIT-LABEL: workgroup_one_as_release_fence:462; GFX942-NOTTGSPLIT:       ; %bb.0: ; %entry463; GFX942-NOTTGSPLIT-NEXT:    s_endpgm464;465; GFX942-TGSPLIT-LABEL: workgroup_one_as_release_fence:466; GFX942-TGSPLIT:       ; %bb.0: ; %entry467; GFX942-TGSPLIT-NEXT:    s_waitcnt vmcnt(0)468; GFX942-TGSPLIT-NEXT:    s_endpgm469;470; GFX11-WGP-LABEL: workgroup_one_as_release_fence:471; GFX11-WGP:       ; %bb.0: ; %entry472; GFX11-WGP-NEXT:    s_waitcnt vmcnt(0)473; GFX11-WGP-NEXT:    s_waitcnt_vscnt null, 0x0474; GFX11-WGP-NEXT:    s_endpgm475;476; GFX11-CU-LABEL: workgroup_one_as_release_fence:477; GFX11-CU:       ; %bb.0: ; %entry478; GFX11-CU-NEXT:    s_waitcnt vmcnt(0)479; GFX11-CU-NEXT:    s_waitcnt_vscnt null, 0x0480; GFX11-CU-NEXT:    s_endpgm481;482; GFX12-WGP-LABEL: workgroup_one_as_release_fence:483; GFX12-WGP:       ; %bb.0: ; %entry484; GFX12-WGP-NEXT:    s_wait_bvhcnt 0x0485; GFX12-WGP-NEXT:    s_wait_samplecnt 0x0486; GFX12-WGP-NEXT:    s_wait_loadcnt 0x0487; GFX12-WGP-NEXT:    s_wait_storecnt 0x0488; GFX12-WGP-NEXT:    s_endpgm489;490; GFX12-CU-LABEL: workgroup_one_as_release_fence:491; GFX12-CU:       ; %bb.0: ; %entry492; GFX12-CU-NEXT:    s_wait_bvhcnt 0x0493; GFX12-CU-NEXT:    s_wait_samplecnt 0x0494; GFX12-CU-NEXT:    s_wait_loadcnt 0x0495; GFX12-CU-NEXT:    s_wait_storecnt 0x0496; GFX12-CU-NEXT:    s_endpgm497;498; GFX1250-LABEL: workgroup_one_as_release_fence:499; GFX1250:       ; %bb.0: ; %entry500; GFX1250-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_WAVE_MODE, 25, 1), 1501; GFX1250-NEXT:    s_wait_loadcnt 0x0502; GFX1250-NEXT:    s_wait_storecnt 0x0503; GFX1250-NEXT:    s_endpgm504entry:505  fence syncscope("workgroup-one-as") release, !mmra !{!"amdgpu-synchronize-as", !"global"}506  ret void507}508 509define amdgpu_kernel void @workgroup_one_as_acq_rel_fence() {510; GFX6-LABEL: workgroup_one_as_acq_rel_fence:511; GFX6:       ; %bb.0: ; %entry512; GFX6-NEXT:    s_endpgm513;514; GFX7-LABEL: workgroup_one_as_acq_rel_fence:515; GFX7:       ; %bb.0: ; %entry516; GFX7-NEXT:    s_endpgm517;518; GFX10-WGP-LABEL: workgroup_one_as_acq_rel_fence:519; GFX10-WGP:       ; %bb.0: ; %entry520; GFX10-WGP-NEXT:    s_waitcnt vmcnt(0)521; GFX10-WGP-NEXT:    s_waitcnt_vscnt null, 0x0522; GFX10-WGP-NEXT:    buffer_gl0_inv523; GFX10-WGP-NEXT:    s_endpgm524;525; GFX10-CU-LABEL: workgroup_one_as_acq_rel_fence:526; GFX10-CU:       ; %bb.0: ; %entry527; GFX10-CU-NEXT:    s_waitcnt vmcnt(0)528; GFX10-CU-NEXT:    s_waitcnt_vscnt null, 0x0529; GFX10-CU-NEXT:    s_endpgm530;531; SKIP-CACHE-INV-LABEL: workgroup_one_as_acq_rel_fence:532; SKIP-CACHE-INV:       ; %bb.0: ; %entry533; SKIP-CACHE-INV-NEXT:    s_endpgm534;535; GFX90A-NOTTGSPLIT-LABEL: workgroup_one_as_acq_rel_fence:536; GFX90A-NOTTGSPLIT:       ; %bb.0: ; %entry537; GFX90A-NOTTGSPLIT-NEXT:    s_endpgm538;539; GFX90A-TGSPLIT-LABEL: workgroup_one_as_acq_rel_fence:540; GFX90A-TGSPLIT:       ; %bb.0: ; %entry541; GFX90A-TGSPLIT-NEXT:    s_waitcnt vmcnt(0)542; GFX90A-TGSPLIT-NEXT:    buffer_wbinvl1_vol543; GFX90A-TGSPLIT-NEXT:    s_endpgm544;545; GFX942-NOTTGSPLIT-LABEL: workgroup_one_as_acq_rel_fence:546; GFX942-NOTTGSPLIT:       ; %bb.0: ; %entry547; GFX942-NOTTGSPLIT-NEXT:    s_endpgm548;549; GFX942-TGSPLIT-LABEL: workgroup_one_as_acq_rel_fence:550; GFX942-TGSPLIT:       ; %bb.0: ; %entry551; GFX942-TGSPLIT-NEXT:    s_waitcnt vmcnt(0)552; GFX942-TGSPLIT-NEXT:    buffer_inv sc0553; GFX942-TGSPLIT-NEXT:    s_endpgm554;555; GFX11-WGP-LABEL: workgroup_one_as_acq_rel_fence:556; GFX11-WGP:       ; %bb.0: ; %entry557; GFX11-WGP-NEXT:    s_waitcnt vmcnt(0)558; GFX11-WGP-NEXT:    s_waitcnt_vscnt null, 0x0559; GFX11-WGP-NEXT:    buffer_gl0_inv560; GFX11-WGP-NEXT:    s_endpgm561;562; GFX11-CU-LABEL: workgroup_one_as_acq_rel_fence:563; GFX11-CU:       ; %bb.0: ; %entry564; GFX11-CU-NEXT:    s_waitcnt vmcnt(0)565; GFX11-CU-NEXT:    s_waitcnt_vscnt null, 0x0566; GFX11-CU-NEXT:    s_endpgm567;568; GFX12-WGP-LABEL: workgroup_one_as_acq_rel_fence:569; GFX12-WGP:       ; %bb.0: ; %entry570; GFX12-WGP-NEXT:    s_wait_bvhcnt 0x0571; GFX12-WGP-NEXT:    s_wait_samplecnt 0x0572; GFX12-WGP-NEXT:    s_wait_loadcnt 0x0573; GFX12-WGP-NEXT:    s_wait_storecnt 0x0574; GFX12-WGP-NEXT:    global_inv scope:SCOPE_SE575; GFX12-WGP-NEXT:    s_endpgm576;577; GFX12-CU-LABEL: workgroup_one_as_acq_rel_fence:578; GFX12-CU:       ; %bb.0: ; %entry579; GFX12-CU-NEXT:    s_wait_bvhcnt 0x0580; GFX12-CU-NEXT:    s_wait_samplecnt 0x0581; GFX12-CU-NEXT:    s_wait_loadcnt 0x0582; GFX12-CU-NEXT:    s_wait_storecnt 0x0583; GFX12-CU-NEXT:    s_endpgm584;585; GFX1250-LABEL: workgroup_one_as_acq_rel_fence:586; GFX1250:       ; %bb.0: ; %entry587; GFX1250-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_WAVE_MODE, 25, 1), 1588; GFX1250-NEXT:    s_wait_loadcnt 0x0589; GFX1250-NEXT:    s_wait_storecnt 0x0590; GFX1250-NEXT:    s_endpgm591entry:592  fence syncscope("workgroup-one-as") acq_rel, !mmra !{!"amdgpu-synchronize-as", !"global"}593  ret void594}595 596define amdgpu_kernel void @workgroup_one_as_seq_cst_fence() {597; GFX6-LABEL: workgroup_one_as_seq_cst_fence:598; GFX6:       ; %bb.0: ; %entry599; GFX6-NEXT:    s_endpgm600;601; GFX7-LABEL: workgroup_one_as_seq_cst_fence:602; GFX7:       ; %bb.0: ; %entry603; GFX7-NEXT:    s_endpgm604;605; GFX10-WGP-LABEL: workgroup_one_as_seq_cst_fence:606; GFX10-WGP:       ; %bb.0: ; %entry607; GFX10-WGP-NEXT:    s_waitcnt vmcnt(0)608; GFX10-WGP-NEXT:    s_waitcnt_vscnt null, 0x0609; GFX10-WGP-NEXT:    buffer_gl0_inv610; GFX10-WGP-NEXT:    s_endpgm611;612; GFX10-CU-LABEL: workgroup_one_as_seq_cst_fence:613; GFX10-CU:       ; %bb.0: ; %entry614; GFX10-CU-NEXT:    s_waitcnt vmcnt(0)615; GFX10-CU-NEXT:    s_waitcnt_vscnt null, 0x0616; GFX10-CU-NEXT:    s_endpgm617;618; SKIP-CACHE-INV-LABEL: workgroup_one_as_seq_cst_fence:619; SKIP-CACHE-INV:       ; %bb.0: ; %entry620; SKIP-CACHE-INV-NEXT:    s_endpgm621;622; GFX90A-NOTTGSPLIT-LABEL: workgroup_one_as_seq_cst_fence:623; GFX90A-NOTTGSPLIT:       ; %bb.0: ; %entry624; GFX90A-NOTTGSPLIT-NEXT:    s_endpgm625;626; GFX90A-TGSPLIT-LABEL: workgroup_one_as_seq_cst_fence:627; GFX90A-TGSPLIT:       ; %bb.0: ; %entry628; GFX90A-TGSPLIT-NEXT:    s_waitcnt vmcnt(0)629; GFX90A-TGSPLIT-NEXT:    buffer_wbinvl1_vol630; GFX90A-TGSPLIT-NEXT:    s_endpgm631;632; GFX942-NOTTGSPLIT-LABEL: workgroup_one_as_seq_cst_fence:633; GFX942-NOTTGSPLIT:       ; %bb.0: ; %entry634; GFX942-NOTTGSPLIT-NEXT:    s_endpgm635;636; GFX942-TGSPLIT-LABEL: workgroup_one_as_seq_cst_fence:637; GFX942-TGSPLIT:       ; %bb.0: ; %entry638; GFX942-TGSPLIT-NEXT:    s_waitcnt vmcnt(0)639; GFX942-TGSPLIT-NEXT:    buffer_inv sc0640; GFX942-TGSPLIT-NEXT:    s_endpgm641;642; GFX11-WGP-LABEL: workgroup_one_as_seq_cst_fence:643; GFX11-WGP:       ; %bb.0: ; %entry644; GFX11-WGP-NEXT:    s_waitcnt vmcnt(0)645; GFX11-WGP-NEXT:    s_waitcnt_vscnt null, 0x0646; GFX11-WGP-NEXT:    buffer_gl0_inv647; GFX11-WGP-NEXT:    s_endpgm648;649; GFX11-CU-LABEL: workgroup_one_as_seq_cst_fence:650; GFX11-CU:       ; %bb.0: ; %entry651; GFX11-CU-NEXT:    s_waitcnt vmcnt(0)652; GFX11-CU-NEXT:    s_waitcnt_vscnt null, 0x0653; GFX11-CU-NEXT:    s_endpgm654;655; GFX12-WGP-LABEL: workgroup_one_as_seq_cst_fence:656; GFX12-WGP:       ; %bb.0: ; %entry657; GFX12-WGP-NEXT:    s_wait_bvhcnt 0x0658; GFX12-WGP-NEXT:    s_wait_samplecnt 0x0659; GFX12-WGP-NEXT:    s_wait_loadcnt 0x0660; GFX12-WGP-NEXT:    s_wait_storecnt 0x0661; GFX12-WGP-NEXT:    global_inv scope:SCOPE_SE662; GFX12-WGP-NEXT:    s_endpgm663;664; GFX12-CU-LABEL: workgroup_one_as_seq_cst_fence:665; GFX12-CU:       ; %bb.0: ; %entry666; GFX12-CU-NEXT:    s_wait_bvhcnt 0x0667; GFX12-CU-NEXT:    s_wait_samplecnt 0x0668; GFX12-CU-NEXT:    s_wait_loadcnt 0x0669; GFX12-CU-NEXT:    s_wait_storecnt 0x0670; GFX12-CU-NEXT:    s_endpgm671;672; GFX1250-LABEL: workgroup_one_as_seq_cst_fence:673; GFX1250:       ; %bb.0: ; %entry674; GFX1250-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_WAVE_MODE, 25, 1), 1675; GFX1250-NEXT:    s_wait_loadcnt 0x0676; GFX1250-NEXT:    s_wait_storecnt 0x0677; GFX1250-NEXT:    s_endpgm678entry:679  fence syncscope("workgroup-one-as") seq_cst, !mmra !{!"amdgpu-synchronize-as", !"global"}680  ret void681}682 683define amdgpu_kernel void @agent_acquire_fence() {684; GFX6-LABEL: agent_acquire_fence:685; GFX6:       ; %bb.0: ; %entry686; GFX6-NEXT:    s_waitcnt vmcnt(0)687; GFX6-NEXT:    buffer_wbinvl1688; GFX6-NEXT:    s_endpgm689;690; GFX7-LABEL: agent_acquire_fence:691; GFX7:       ; %bb.0: ; %entry692; GFX7-NEXT:    s_waitcnt vmcnt(0)693; GFX7-NEXT:    buffer_wbinvl1_vol694; GFX7-NEXT:    s_endpgm695;696; GFX10-WGP-LABEL: agent_acquire_fence:697; GFX10-WGP:       ; %bb.0: ; %entry698; GFX10-WGP-NEXT:    s_waitcnt vmcnt(0)699; GFX10-WGP-NEXT:    s_waitcnt_vscnt null, 0x0700; GFX10-WGP-NEXT:    buffer_gl1_inv701; GFX10-WGP-NEXT:    buffer_gl0_inv702; GFX10-WGP-NEXT:    s_endpgm703;704; GFX10-CU-LABEL: agent_acquire_fence:705; GFX10-CU:       ; %bb.0: ; %entry706; GFX10-CU-NEXT:    s_waitcnt vmcnt(0)707; GFX10-CU-NEXT:    s_waitcnt_vscnt null, 0x0708; GFX10-CU-NEXT:    buffer_gl1_inv709; GFX10-CU-NEXT:    buffer_gl0_inv710; GFX10-CU-NEXT:    s_endpgm711;712; SKIP-CACHE-INV-LABEL: agent_acquire_fence:713; SKIP-CACHE-INV:       ; %bb.0: ; %entry714; SKIP-CACHE-INV-NEXT:    s_waitcnt vmcnt(0)715; SKIP-CACHE-INV-NEXT:    s_endpgm716;717; GFX90A-NOTTGSPLIT-LABEL: agent_acquire_fence:718; GFX90A-NOTTGSPLIT:       ; %bb.0: ; %entry719; GFX90A-NOTTGSPLIT-NEXT:    s_waitcnt vmcnt(0)720; GFX90A-NOTTGSPLIT-NEXT:    buffer_wbinvl1_vol721; GFX90A-NOTTGSPLIT-NEXT:    s_endpgm722;723; GFX90A-TGSPLIT-LABEL: agent_acquire_fence:724; GFX90A-TGSPLIT:       ; %bb.0: ; %entry725; GFX90A-TGSPLIT-NEXT:    s_waitcnt vmcnt(0)726; GFX90A-TGSPLIT-NEXT:    buffer_wbinvl1_vol727; GFX90A-TGSPLIT-NEXT:    s_endpgm728;729; GFX942-NOTTGSPLIT-LABEL: agent_acquire_fence:730; GFX942-NOTTGSPLIT:       ; %bb.0: ; %entry731; GFX942-NOTTGSPLIT-NEXT:    s_waitcnt vmcnt(0)732; GFX942-NOTTGSPLIT-NEXT:    buffer_inv sc1733; GFX942-NOTTGSPLIT-NEXT:    s_endpgm734;735; GFX942-TGSPLIT-LABEL: agent_acquire_fence:736; GFX942-TGSPLIT:       ; %bb.0: ; %entry737; GFX942-TGSPLIT-NEXT:    s_waitcnt vmcnt(0)738; GFX942-TGSPLIT-NEXT:    buffer_inv sc1739; GFX942-TGSPLIT-NEXT:    s_endpgm740;741; GFX11-WGP-LABEL: agent_acquire_fence:742; GFX11-WGP:       ; %bb.0: ; %entry743; GFX11-WGP-NEXT:    s_waitcnt vmcnt(0)744; GFX11-WGP-NEXT:    s_waitcnt_vscnt null, 0x0745; GFX11-WGP-NEXT:    buffer_gl1_inv746; GFX11-WGP-NEXT:    buffer_gl0_inv747; GFX11-WGP-NEXT:    s_endpgm748;749; GFX11-CU-LABEL: agent_acquire_fence:750; GFX11-CU:       ; %bb.0: ; %entry751; GFX11-CU-NEXT:    s_waitcnt vmcnt(0)752; GFX11-CU-NEXT:    s_waitcnt_vscnt null, 0x0753; GFX11-CU-NEXT:    buffer_gl1_inv754; GFX11-CU-NEXT:    buffer_gl0_inv755; GFX11-CU-NEXT:    s_endpgm756;757; GFX12-WGP-LABEL: agent_acquire_fence:758; GFX12-WGP:       ; %bb.0: ; %entry759; GFX12-WGP-NEXT:    s_wait_loadcnt 0x0760; GFX12-WGP-NEXT:    s_wait_storecnt 0x0761; GFX12-WGP-NEXT:    global_inv scope:SCOPE_DEV762; GFX12-WGP-NEXT:    s_endpgm763;764; GFX12-CU-LABEL: agent_acquire_fence:765; GFX12-CU:       ; %bb.0: ; %entry766; GFX12-CU-NEXT:    s_wait_loadcnt 0x0767; GFX12-CU-NEXT:    s_wait_storecnt 0x0768; GFX12-CU-NEXT:    global_inv scope:SCOPE_DEV769; GFX12-CU-NEXT:    s_endpgm770;771; GFX1250-LABEL: agent_acquire_fence:772; GFX1250:       ; %bb.0: ; %entry773; GFX1250-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_WAVE_MODE, 25, 1), 1774; GFX1250-NEXT:    s_wait_loadcnt 0x0775; GFX1250-NEXT:    s_wait_storecnt 0x0776; GFX1250-NEXT:    global_inv scope:SCOPE_DEV777; GFX1250-NEXT:    s_endpgm778entry:779  fence syncscope("agent") acquire, !mmra !{!"amdgpu-synchronize-as", !"global"}780  ret void781}782 783define amdgpu_kernel void @agent_release_fence() {784; GFX6-LABEL: agent_release_fence:785; GFX6:       ; %bb.0: ; %entry786; GFX6-NEXT:    s_waitcnt vmcnt(0)787; GFX6-NEXT:    s_endpgm788;789; GFX7-LABEL: agent_release_fence:790; GFX7:       ; %bb.0: ; %entry791; GFX7-NEXT:    s_waitcnt vmcnt(0)792; GFX7-NEXT:    s_endpgm793;794; GFX10-WGP-LABEL: agent_release_fence:795; GFX10-WGP:       ; %bb.0: ; %entry796; GFX10-WGP-NEXT:    s_waitcnt vmcnt(0)797; GFX10-WGP-NEXT:    s_waitcnt_vscnt null, 0x0798; GFX10-WGP-NEXT:    s_endpgm799;800; GFX10-CU-LABEL: agent_release_fence:801; GFX10-CU:       ; %bb.0: ; %entry802; GFX10-CU-NEXT:    s_waitcnt vmcnt(0)803; GFX10-CU-NEXT:    s_waitcnt_vscnt null, 0x0804; GFX10-CU-NEXT:    s_endpgm805;806; SKIP-CACHE-INV-LABEL: agent_release_fence:807; SKIP-CACHE-INV:       ; %bb.0: ; %entry808; SKIP-CACHE-INV-NEXT:    s_waitcnt vmcnt(0)809; SKIP-CACHE-INV-NEXT:    s_endpgm810;811; GFX90A-NOTTGSPLIT-LABEL: agent_release_fence:812; GFX90A-NOTTGSPLIT:       ; %bb.0: ; %entry813; GFX90A-NOTTGSPLIT-NEXT:    s_waitcnt vmcnt(0)814; GFX90A-NOTTGSPLIT-NEXT:    s_endpgm815;816; GFX90A-TGSPLIT-LABEL: agent_release_fence:817; GFX90A-TGSPLIT:       ; %bb.0: ; %entry818; GFX90A-TGSPLIT-NEXT:    s_waitcnt vmcnt(0)819; GFX90A-TGSPLIT-NEXT:    s_endpgm820;821; GFX942-NOTTGSPLIT-LABEL: agent_release_fence:822; GFX942-NOTTGSPLIT:       ; %bb.0: ; %entry823; GFX942-NOTTGSPLIT-NEXT:    buffer_wbl2 sc1824; GFX942-NOTTGSPLIT-NEXT:    s_waitcnt vmcnt(0)825; GFX942-NOTTGSPLIT-NEXT:    s_endpgm826;827; GFX942-TGSPLIT-LABEL: agent_release_fence:828; GFX942-TGSPLIT:       ; %bb.0: ; %entry829; GFX942-TGSPLIT-NEXT:    buffer_wbl2 sc1830; GFX942-TGSPLIT-NEXT:    s_waitcnt vmcnt(0)831; GFX942-TGSPLIT-NEXT:    s_endpgm832;833; GFX11-WGP-LABEL: agent_release_fence:834; GFX11-WGP:       ; %bb.0: ; %entry835; GFX11-WGP-NEXT:    s_waitcnt vmcnt(0)836; GFX11-WGP-NEXT:    s_waitcnt_vscnt null, 0x0837; GFX11-WGP-NEXT:    s_endpgm838;839; GFX11-CU-LABEL: agent_release_fence:840; GFX11-CU:       ; %bb.0: ; %entry841; GFX11-CU-NEXT:    s_waitcnt vmcnt(0)842; GFX11-CU-NEXT:    s_waitcnt_vscnt null, 0x0843; GFX11-CU-NEXT:    s_endpgm844;845; GFX12-WGP-LABEL: agent_release_fence:846; GFX12-WGP:       ; %bb.0: ; %entry847; GFX12-WGP-NEXT:    s_wait_bvhcnt 0x0848; GFX12-WGP-NEXT:    s_wait_samplecnt 0x0849; GFX12-WGP-NEXT:    s_wait_loadcnt 0x0850; GFX12-WGP-NEXT:    s_wait_storecnt 0x0851; GFX12-WGP-NEXT:    s_endpgm852;853; GFX12-CU-LABEL: agent_release_fence:854; GFX12-CU:       ; %bb.0: ; %entry855; GFX12-CU-NEXT:    s_wait_bvhcnt 0x0856; GFX12-CU-NEXT:    s_wait_samplecnt 0x0857; GFX12-CU-NEXT:    s_wait_loadcnt 0x0858; GFX12-CU-NEXT:    s_wait_storecnt 0x0859; GFX12-CU-NEXT:    s_endpgm860;861; GFX1250-LABEL: agent_release_fence:862; GFX1250:       ; %bb.0: ; %entry863; GFX1250-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_WAVE_MODE, 25, 1), 1864; GFX1250-NEXT:    global_wb scope:SCOPE_DEV865; GFX1250-NEXT:    s_wait_loadcnt 0x0866; GFX1250-NEXT:    s_wait_storecnt 0x0867; GFX1250-NEXT:    s_endpgm868entry:869  fence syncscope("agent") release, !mmra !{!"amdgpu-synchronize-as", !"global"}870  ret void871}872 873define amdgpu_kernel void @agent_acq_rel_fence() {874; GFX6-LABEL: agent_acq_rel_fence:875; GFX6:       ; %bb.0: ; %entry876; GFX6-NEXT:    s_waitcnt vmcnt(0)877; GFX6-NEXT:    buffer_wbinvl1878; GFX6-NEXT:    s_endpgm879;880; GFX7-LABEL: agent_acq_rel_fence:881; GFX7:       ; %bb.0: ; %entry882; GFX7-NEXT:    s_waitcnt vmcnt(0)883; GFX7-NEXT:    buffer_wbinvl1_vol884; GFX7-NEXT:    s_endpgm885;886; GFX10-WGP-LABEL: agent_acq_rel_fence:887; GFX10-WGP:       ; %bb.0: ; %entry888; GFX10-WGP-NEXT:    s_waitcnt vmcnt(0)889; GFX10-WGP-NEXT:    s_waitcnt_vscnt null, 0x0890; GFX10-WGP-NEXT:    buffer_gl1_inv891; GFX10-WGP-NEXT:    buffer_gl0_inv892; GFX10-WGP-NEXT:    s_endpgm893;894; GFX10-CU-LABEL: agent_acq_rel_fence:895; GFX10-CU:       ; %bb.0: ; %entry896; GFX10-CU-NEXT:    s_waitcnt vmcnt(0)897; GFX10-CU-NEXT:    s_waitcnt_vscnt null, 0x0898; GFX10-CU-NEXT:    buffer_gl1_inv899; GFX10-CU-NEXT:    buffer_gl0_inv900; GFX10-CU-NEXT:    s_endpgm901;902; SKIP-CACHE-INV-LABEL: agent_acq_rel_fence:903; SKIP-CACHE-INV:       ; %bb.0: ; %entry904; SKIP-CACHE-INV-NEXT:    s_waitcnt vmcnt(0)905; SKIP-CACHE-INV-NEXT:    s_endpgm906;907; GFX90A-NOTTGSPLIT-LABEL: agent_acq_rel_fence:908; GFX90A-NOTTGSPLIT:       ; %bb.0: ; %entry909; GFX90A-NOTTGSPLIT-NEXT:    s_waitcnt vmcnt(0)910; GFX90A-NOTTGSPLIT-NEXT:    buffer_wbinvl1_vol911; GFX90A-NOTTGSPLIT-NEXT:    s_endpgm912;913; GFX90A-TGSPLIT-LABEL: agent_acq_rel_fence:914; GFX90A-TGSPLIT:       ; %bb.0: ; %entry915; GFX90A-TGSPLIT-NEXT:    s_waitcnt vmcnt(0)916; GFX90A-TGSPLIT-NEXT:    buffer_wbinvl1_vol917; GFX90A-TGSPLIT-NEXT:    s_endpgm918;919; GFX942-NOTTGSPLIT-LABEL: agent_acq_rel_fence:920; GFX942-NOTTGSPLIT:       ; %bb.0: ; %entry921; GFX942-NOTTGSPLIT-NEXT:    buffer_wbl2 sc1922; GFX942-NOTTGSPLIT-NEXT:    s_waitcnt vmcnt(0)923; GFX942-NOTTGSPLIT-NEXT:    buffer_inv sc1924; GFX942-NOTTGSPLIT-NEXT:    s_endpgm925;926; GFX942-TGSPLIT-LABEL: agent_acq_rel_fence:927; GFX942-TGSPLIT:       ; %bb.0: ; %entry928; GFX942-TGSPLIT-NEXT:    buffer_wbl2 sc1929; GFX942-TGSPLIT-NEXT:    s_waitcnt vmcnt(0)930; GFX942-TGSPLIT-NEXT:    buffer_inv sc1931; GFX942-TGSPLIT-NEXT:    s_endpgm932;933; GFX11-WGP-LABEL: agent_acq_rel_fence:934; GFX11-WGP:       ; %bb.0: ; %entry935; GFX11-WGP-NEXT:    s_waitcnt vmcnt(0)936; GFX11-WGP-NEXT:    s_waitcnt_vscnt null, 0x0937; GFX11-WGP-NEXT:    buffer_gl1_inv938; GFX11-WGP-NEXT:    buffer_gl0_inv939; GFX11-WGP-NEXT:    s_endpgm940;941; GFX11-CU-LABEL: agent_acq_rel_fence:942; GFX11-CU:       ; %bb.0: ; %entry943; GFX11-CU-NEXT:    s_waitcnt vmcnt(0)944; GFX11-CU-NEXT:    s_waitcnt_vscnt null, 0x0945; GFX11-CU-NEXT:    buffer_gl1_inv946; GFX11-CU-NEXT:    buffer_gl0_inv947; GFX11-CU-NEXT:    s_endpgm948;949; GFX12-WGP-LABEL: agent_acq_rel_fence:950; GFX12-WGP:       ; %bb.0: ; %entry951; GFX12-WGP-NEXT:    s_wait_bvhcnt 0x0952; GFX12-WGP-NEXT:    s_wait_samplecnt 0x0953; GFX12-WGP-NEXT:    s_wait_loadcnt 0x0954; GFX12-WGP-NEXT:    s_wait_storecnt 0x0955; GFX12-WGP-NEXT:    global_inv scope:SCOPE_DEV956; GFX12-WGP-NEXT:    s_endpgm957;958; GFX12-CU-LABEL: agent_acq_rel_fence:959; GFX12-CU:       ; %bb.0: ; %entry960; GFX12-CU-NEXT:    s_wait_bvhcnt 0x0961; GFX12-CU-NEXT:    s_wait_samplecnt 0x0962; GFX12-CU-NEXT:    s_wait_loadcnt 0x0963; GFX12-CU-NEXT:    s_wait_storecnt 0x0964; GFX12-CU-NEXT:    global_inv scope:SCOPE_DEV965; GFX12-CU-NEXT:    s_endpgm966;967; GFX1250-LABEL: agent_acq_rel_fence:968; GFX1250:       ; %bb.0: ; %entry969; GFX1250-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_WAVE_MODE, 25, 1), 1970; GFX1250-NEXT:    global_wb scope:SCOPE_DEV971; GFX1250-NEXT:    s_wait_loadcnt 0x0972; GFX1250-NEXT:    s_wait_storecnt 0x0973; GFX1250-NEXT:    global_inv scope:SCOPE_DEV974; GFX1250-NEXT:    s_endpgm975entry:976  fence syncscope("agent") acq_rel, !mmra !{!"amdgpu-synchronize-as", !"global"}977  ret void978}979 980define amdgpu_kernel void @agent_seq_cst_fence() {981; GFX6-LABEL: agent_seq_cst_fence:982; GFX6:       ; %bb.0: ; %entry983; GFX6-NEXT:    s_waitcnt vmcnt(0)984; GFX6-NEXT:    buffer_wbinvl1985; GFX6-NEXT:    s_endpgm986;987; GFX7-LABEL: agent_seq_cst_fence:988; GFX7:       ; %bb.0: ; %entry989; GFX7-NEXT:    s_waitcnt vmcnt(0)990; GFX7-NEXT:    buffer_wbinvl1_vol991; GFX7-NEXT:    s_endpgm992;993; GFX10-WGP-LABEL: agent_seq_cst_fence:994; GFX10-WGP:       ; %bb.0: ; %entry995; GFX10-WGP-NEXT:    s_waitcnt vmcnt(0)996; GFX10-WGP-NEXT:    s_waitcnt_vscnt null, 0x0997; GFX10-WGP-NEXT:    buffer_gl1_inv998; GFX10-WGP-NEXT:    buffer_gl0_inv999; GFX10-WGP-NEXT:    s_endpgm1000;1001; GFX10-CU-LABEL: agent_seq_cst_fence:1002; GFX10-CU:       ; %bb.0: ; %entry1003; GFX10-CU-NEXT:    s_waitcnt vmcnt(0)1004; GFX10-CU-NEXT:    s_waitcnt_vscnt null, 0x01005; GFX10-CU-NEXT:    buffer_gl1_inv1006; GFX10-CU-NEXT:    buffer_gl0_inv1007; GFX10-CU-NEXT:    s_endpgm1008;1009; SKIP-CACHE-INV-LABEL: agent_seq_cst_fence:1010; SKIP-CACHE-INV:       ; %bb.0: ; %entry1011; SKIP-CACHE-INV-NEXT:    s_waitcnt vmcnt(0)1012; SKIP-CACHE-INV-NEXT:    s_endpgm1013;1014; GFX90A-NOTTGSPLIT-LABEL: agent_seq_cst_fence:1015; GFX90A-NOTTGSPLIT:       ; %bb.0: ; %entry1016; GFX90A-NOTTGSPLIT-NEXT:    s_waitcnt vmcnt(0)1017; GFX90A-NOTTGSPLIT-NEXT:    buffer_wbinvl1_vol1018; GFX90A-NOTTGSPLIT-NEXT:    s_endpgm1019;1020; GFX90A-TGSPLIT-LABEL: agent_seq_cst_fence:1021; GFX90A-TGSPLIT:       ; %bb.0: ; %entry1022; GFX90A-TGSPLIT-NEXT:    s_waitcnt vmcnt(0)1023; GFX90A-TGSPLIT-NEXT:    buffer_wbinvl1_vol1024; GFX90A-TGSPLIT-NEXT:    s_endpgm1025;1026; GFX942-NOTTGSPLIT-LABEL: agent_seq_cst_fence:1027; GFX942-NOTTGSPLIT:       ; %bb.0: ; %entry1028; GFX942-NOTTGSPLIT-NEXT:    buffer_wbl2 sc11029; GFX942-NOTTGSPLIT-NEXT:    s_waitcnt vmcnt(0)1030; GFX942-NOTTGSPLIT-NEXT:    buffer_inv sc11031; GFX942-NOTTGSPLIT-NEXT:    s_endpgm1032;1033; GFX942-TGSPLIT-LABEL: agent_seq_cst_fence:1034; GFX942-TGSPLIT:       ; %bb.0: ; %entry1035; GFX942-TGSPLIT-NEXT:    buffer_wbl2 sc11036; GFX942-TGSPLIT-NEXT:    s_waitcnt vmcnt(0)1037; GFX942-TGSPLIT-NEXT:    buffer_inv sc11038; GFX942-TGSPLIT-NEXT:    s_endpgm1039;1040; GFX11-WGP-LABEL: agent_seq_cst_fence:1041; GFX11-WGP:       ; %bb.0: ; %entry1042; GFX11-WGP-NEXT:    s_waitcnt vmcnt(0)1043; GFX11-WGP-NEXT:    s_waitcnt_vscnt null, 0x01044; GFX11-WGP-NEXT:    buffer_gl1_inv1045; GFX11-WGP-NEXT:    buffer_gl0_inv1046; GFX11-WGP-NEXT:    s_endpgm1047;1048; GFX11-CU-LABEL: agent_seq_cst_fence:1049; GFX11-CU:       ; %bb.0: ; %entry1050; GFX11-CU-NEXT:    s_waitcnt vmcnt(0)1051; GFX11-CU-NEXT:    s_waitcnt_vscnt null, 0x01052; GFX11-CU-NEXT:    buffer_gl1_inv1053; GFX11-CU-NEXT:    buffer_gl0_inv1054; GFX11-CU-NEXT:    s_endpgm1055;1056; GFX12-WGP-LABEL: agent_seq_cst_fence:1057; GFX12-WGP:       ; %bb.0: ; %entry1058; GFX12-WGP-NEXT:    s_wait_bvhcnt 0x01059; GFX12-WGP-NEXT:    s_wait_samplecnt 0x01060; GFX12-WGP-NEXT:    s_wait_loadcnt 0x01061; GFX12-WGP-NEXT:    s_wait_storecnt 0x01062; GFX12-WGP-NEXT:    global_inv scope:SCOPE_DEV1063; GFX12-WGP-NEXT:    s_endpgm1064;1065; GFX12-CU-LABEL: agent_seq_cst_fence:1066; GFX12-CU:       ; %bb.0: ; %entry1067; GFX12-CU-NEXT:    s_wait_bvhcnt 0x01068; GFX12-CU-NEXT:    s_wait_samplecnt 0x01069; GFX12-CU-NEXT:    s_wait_loadcnt 0x01070; GFX12-CU-NEXT:    s_wait_storecnt 0x01071; GFX12-CU-NEXT:    global_inv scope:SCOPE_DEV1072; GFX12-CU-NEXT:    s_endpgm1073;1074; GFX1250-LABEL: agent_seq_cst_fence:1075; GFX1250:       ; %bb.0: ; %entry1076; GFX1250-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_WAVE_MODE, 25, 1), 11077; GFX1250-NEXT:    global_wb scope:SCOPE_DEV1078; GFX1250-NEXT:    s_wait_loadcnt 0x01079; GFX1250-NEXT:    s_wait_storecnt 0x01080; GFX1250-NEXT:    global_inv scope:SCOPE_DEV1081; GFX1250-NEXT:    s_endpgm1082entry:1083  fence syncscope("agent") seq_cst, !mmra !{!"amdgpu-synchronize-as", !"global"}1084  ret void1085}1086 1087define amdgpu_kernel void @agent_one_as_acquire_fence() {1088; GFX6-LABEL: agent_one_as_acquire_fence:1089; GFX6:       ; %bb.0: ; %entry1090; GFX6-NEXT:    s_waitcnt vmcnt(0)1091; GFX6-NEXT:    buffer_wbinvl11092; GFX6-NEXT:    s_endpgm1093;1094; GFX7-LABEL: agent_one_as_acquire_fence:1095; GFX7:       ; %bb.0: ; %entry1096; GFX7-NEXT:    s_waitcnt vmcnt(0)1097; GFX7-NEXT:    buffer_wbinvl1_vol1098; GFX7-NEXT:    s_endpgm1099;1100; GFX10-WGP-LABEL: agent_one_as_acquire_fence:1101; GFX10-WGP:       ; %bb.0: ; %entry1102; GFX10-WGP-NEXT:    s_waitcnt vmcnt(0)1103; GFX10-WGP-NEXT:    s_waitcnt_vscnt null, 0x01104; GFX10-WGP-NEXT:    buffer_gl1_inv1105; GFX10-WGP-NEXT:    buffer_gl0_inv1106; GFX10-WGP-NEXT:    s_endpgm1107;1108; GFX10-CU-LABEL: agent_one_as_acquire_fence:1109; GFX10-CU:       ; %bb.0: ; %entry1110; GFX10-CU-NEXT:    s_waitcnt vmcnt(0)1111; GFX10-CU-NEXT:    s_waitcnt_vscnt null, 0x01112; GFX10-CU-NEXT:    buffer_gl1_inv1113; GFX10-CU-NEXT:    buffer_gl0_inv1114; GFX10-CU-NEXT:    s_endpgm1115;1116; SKIP-CACHE-INV-LABEL: agent_one_as_acquire_fence:1117; SKIP-CACHE-INV:       ; %bb.0: ; %entry1118; SKIP-CACHE-INV-NEXT:    s_waitcnt vmcnt(0)1119; SKIP-CACHE-INV-NEXT:    s_endpgm1120;1121; GFX90A-NOTTGSPLIT-LABEL: agent_one_as_acquire_fence:1122; GFX90A-NOTTGSPLIT:       ; %bb.0: ; %entry1123; GFX90A-NOTTGSPLIT-NEXT:    s_waitcnt vmcnt(0)1124; GFX90A-NOTTGSPLIT-NEXT:    buffer_wbinvl1_vol1125; GFX90A-NOTTGSPLIT-NEXT:    s_endpgm1126;1127; GFX90A-TGSPLIT-LABEL: agent_one_as_acquire_fence:1128; GFX90A-TGSPLIT:       ; %bb.0: ; %entry1129; GFX90A-TGSPLIT-NEXT:    s_waitcnt vmcnt(0)1130; GFX90A-TGSPLIT-NEXT:    buffer_wbinvl1_vol1131; GFX90A-TGSPLIT-NEXT:    s_endpgm1132;1133; GFX942-NOTTGSPLIT-LABEL: agent_one_as_acquire_fence:1134; GFX942-NOTTGSPLIT:       ; %bb.0: ; %entry1135; GFX942-NOTTGSPLIT-NEXT:    s_waitcnt vmcnt(0)1136; GFX942-NOTTGSPLIT-NEXT:    buffer_inv sc11137; GFX942-NOTTGSPLIT-NEXT:    s_endpgm1138;1139; GFX942-TGSPLIT-LABEL: agent_one_as_acquire_fence:1140; GFX942-TGSPLIT:       ; %bb.0: ; %entry1141; GFX942-TGSPLIT-NEXT:    s_waitcnt vmcnt(0)1142; GFX942-TGSPLIT-NEXT:    buffer_inv sc11143; GFX942-TGSPLIT-NEXT:    s_endpgm1144;1145; GFX11-WGP-LABEL: agent_one_as_acquire_fence:1146; GFX11-WGP:       ; %bb.0: ; %entry1147; GFX11-WGP-NEXT:    s_waitcnt vmcnt(0)1148; GFX11-WGP-NEXT:    s_waitcnt_vscnt null, 0x01149; GFX11-WGP-NEXT:    buffer_gl1_inv1150; GFX11-WGP-NEXT:    buffer_gl0_inv1151; GFX11-WGP-NEXT:    s_endpgm1152;1153; GFX11-CU-LABEL: agent_one_as_acquire_fence:1154; GFX11-CU:       ; %bb.0: ; %entry1155; GFX11-CU-NEXT:    s_waitcnt vmcnt(0)1156; GFX11-CU-NEXT:    s_waitcnt_vscnt null, 0x01157; GFX11-CU-NEXT:    buffer_gl1_inv1158; GFX11-CU-NEXT:    buffer_gl0_inv1159; GFX11-CU-NEXT:    s_endpgm1160;1161; GFX12-WGP-LABEL: agent_one_as_acquire_fence:1162; GFX12-WGP:       ; %bb.0: ; %entry1163; GFX12-WGP-NEXT:    s_wait_loadcnt 0x01164; GFX12-WGP-NEXT:    s_wait_storecnt 0x01165; GFX12-WGP-NEXT:    global_inv scope:SCOPE_DEV1166; GFX12-WGP-NEXT:    s_endpgm1167;1168; GFX12-CU-LABEL: agent_one_as_acquire_fence:1169; GFX12-CU:       ; %bb.0: ; %entry1170; GFX12-CU-NEXT:    s_wait_loadcnt 0x01171; GFX12-CU-NEXT:    s_wait_storecnt 0x01172; GFX12-CU-NEXT:    global_inv scope:SCOPE_DEV1173; GFX12-CU-NEXT:    s_endpgm1174;1175; GFX1250-LABEL: agent_one_as_acquire_fence:1176; GFX1250:       ; %bb.0: ; %entry1177; GFX1250-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_WAVE_MODE, 25, 1), 11178; GFX1250-NEXT:    s_wait_loadcnt 0x01179; GFX1250-NEXT:    s_wait_storecnt 0x01180; GFX1250-NEXT:    global_inv scope:SCOPE_DEV1181; GFX1250-NEXT:    s_endpgm1182entry:1183  fence syncscope("agent-one-as") acquire, !mmra !{!"amdgpu-synchronize-as", !"global"}1184  ret void1185}1186 1187define amdgpu_kernel void @agent_one_as_release_fence() {1188; GFX6-LABEL: agent_one_as_release_fence:1189; GFX6:       ; %bb.0: ; %entry1190; GFX6-NEXT:    s_waitcnt vmcnt(0)1191; GFX6-NEXT:    s_endpgm1192;1193; GFX7-LABEL: agent_one_as_release_fence:1194; GFX7:       ; %bb.0: ; %entry1195; GFX7-NEXT:    s_waitcnt vmcnt(0)1196; GFX7-NEXT:    s_endpgm1197;1198; GFX10-WGP-LABEL: agent_one_as_release_fence:1199; GFX10-WGP:       ; %bb.0: ; %entry1200; GFX10-WGP-NEXT:    s_waitcnt vmcnt(0)1201; GFX10-WGP-NEXT:    s_waitcnt_vscnt null, 0x01202; GFX10-WGP-NEXT:    s_endpgm1203;1204; GFX10-CU-LABEL: agent_one_as_release_fence:1205; GFX10-CU:       ; %bb.0: ; %entry1206; GFX10-CU-NEXT:    s_waitcnt vmcnt(0)1207; GFX10-CU-NEXT:    s_waitcnt_vscnt null, 0x01208; GFX10-CU-NEXT:    s_endpgm1209;1210; SKIP-CACHE-INV-LABEL: agent_one_as_release_fence:1211; SKIP-CACHE-INV:       ; %bb.0: ; %entry1212; SKIP-CACHE-INV-NEXT:    s_waitcnt vmcnt(0)1213; SKIP-CACHE-INV-NEXT:    s_endpgm1214;1215; GFX90A-NOTTGSPLIT-LABEL: agent_one_as_release_fence:1216; GFX90A-NOTTGSPLIT:       ; %bb.0: ; %entry1217; GFX90A-NOTTGSPLIT-NEXT:    s_waitcnt vmcnt(0)1218; GFX90A-NOTTGSPLIT-NEXT:    s_endpgm1219;1220; GFX90A-TGSPLIT-LABEL: agent_one_as_release_fence:1221; GFX90A-TGSPLIT:       ; %bb.0: ; %entry1222; GFX90A-TGSPLIT-NEXT:    s_waitcnt vmcnt(0)1223; GFX90A-TGSPLIT-NEXT:    s_endpgm1224;1225; GFX942-NOTTGSPLIT-LABEL: agent_one_as_release_fence:1226; GFX942-NOTTGSPLIT:       ; %bb.0: ; %entry1227; GFX942-NOTTGSPLIT-NEXT:    buffer_wbl2 sc11228; GFX942-NOTTGSPLIT-NEXT:    s_waitcnt vmcnt(0)1229; GFX942-NOTTGSPLIT-NEXT:    s_endpgm1230;1231; GFX942-TGSPLIT-LABEL: agent_one_as_release_fence:1232; GFX942-TGSPLIT:       ; %bb.0: ; %entry1233; GFX942-TGSPLIT-NEXT:    buffer_wbl2 sc11234; GFX942-TGSPLIT-NEXT:    s_waitcnt vmcnt(0)1235; GFX942-TGSPLIT-NEXT:    s_endpgm1236;1237; GFX11-WGP-LABEL: agent_one_as_release_fence:1238; GFX11-WGP:       ; %bb.0: ; %entry1239; GFX11-WGP-NEXT:    s_waitcnt vmcnt(0)1240; GFX11-WGP-NEXT:    s_waitcnt_vscnt null, 0x01241; GFX11-WGP-NEXT:    s_endpgm1242;1243; GFX11-CU-LABEL: agent_one_as_release_fence:1244; GFX11-CU:       ; %bb.0: ; %entry1245; GFX11-CU-NEXT:    s_waitcnt vmcnt(0)1246; GFX11-CU-NEXT:    s_waitcnt_vscnt null, 0x01247; GFX11-CU-NEXT:    s_endpgm1248;1249; GFX12-WGP-LABEL: agent_one_as_release_fence:1250; GFX12-WGP:       ; %bb.0: ; %entry1251; GFX12-WGP-NEXT:    s_wait_bvhcnt 0x01252; GFX12-WGP-NEXT:    s_wait_samplecnt 0x01253; GFX12-WGP-NEXT:    s_wait_loadcnt 0x01254; GFX12-WGP-NEXT:    s_wait_storecnt 0x01255; GFX12-WGP-NEXT:    s_endpgm1256;1257; GFX12-CU-LABEL: agent_one_as_release_fence:1258; GFX12-CU:       ; %bb.0: ; %entry1259; GFX12-CU-NEXT:    s_wait_bvhcnt 0x01260; GFX12-CU-NEXT:    s_wait_samplecnt 0x01261; GFX12-CU-NEXT:    s_wait_loadcnt 0x01262; GFX12-CU-NEXT:    s_wait_storecnt 0x01263; GFX12-CU-NEXT:    s_endpgm1264;1265; GFX1250-LABEL: agent_one_as_release_fence:1266; GFX1250:       ; %bb.0: ; %entry1267; GFX1250-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_WAVE_MODE, 25, 1), 11268; GFX1250-NEXT:    global_wb scope:SCOPE_DEV1269; GFX1250-NEXT:    s_wait_loadcnt 0x01270; GFX1250-NEXT:    s_wait_storecnt 0x01271; GFX1250-NEXT:    s_endpgm1272entry:1273  fence syncscope("agent-one-as") release, !mmra !{!"amdgpu-synchronize-as", !"global"}1274  ret void1275}1276 1277define amdgpu_kernel void @agent_one_as_acq_rel_fence() {1278; GFX6-LABEL: agent_one_as_acq_rel_fence:1279; GFX6:       ; %bb.0: ; %entry1280; GFX6-NEXT:    s_waitcnt vmcnt(0)1281; GFX6-NEXT:    buffer_wbinvl11282; GFX6-NEXT:    s_endpgm1283;1284; GFX7-LABEL: agent_one_as_acq_rel_fence:1285; GFX7:       ; %bb.0: ; %entry1286; GFX7-NEXT:    s_waitcnt vmcnt(0)1287; GFX7-NEXT:    buffer_wbinvl1_vol1288; GFX7-NEXT:    s_endpgm1289;1290; GFX10-WGP-LABEL: agent_one_as_acq_rel_fence:1291; GFX10-WGP:       ; %bb.0: ; %entry1292; GFX10-WGP-NEXT:    s_waitcnt vmcnt(0)1293; GFX10-WGP-NEXT:    s_waitcnt_vscnt null, 0x01294; GFX10-WGP-NEXT:    buffer_gl1_inv1295; GFX10-WGP-NEXT:    buffer_gl0_inv1296; GFX10-WGP-NEXT:    s_endpgm1297;1298; GFX10-CU-LABEL: agent_one_as_acq_rel_fence:1299; GFX10-CU:       ; %bb.0: ; %entry1300; GFX10-CU-NEXT:    s_waitcnt vmcnt(0)1301; GFX10-CU-NEXT:    s_waitcnt_vscnt null, 0x01302; GFX10-CU-NEXT:    buffer_gl1_inv1303; GFX10-CU-NEXT:    buffer_gl0_inv1304; GFX10-CU-NEXT:    s_endpgm1305;1306; SKIP-CACHE-INV-LABEL: agent_one_as_acq_rel_fence:1307; SKIP-CACHE-INV:       ; %bb.0: ; %entry1308; SKIP-CACHE-INV-NEXT:    s_waitcnt vmcnt(0)1309; SKIP-CACHE-INV-NEXT:    s_endpgm1310;1311; GFX90A-NOTTGSPLIT-LABEL: agent_one_as_acq_rel_fence:1312; GFX90A-NOTTGSPLIT:       ; %bb.0: ; %entry1313; GFX90A-NOTTGSPLIT-NEXT:    s_waitcnt vmcnt(0)1314; GFX90A-NOTTGSPLIT-NEXT:    buffer_wbinvl1_vol1315; GFX90A-NOTTGSPLIT-NEXT:    s_endpgm1316;1317; GFX90A-TGSPLIT-LABEL: agent_one_as_acq_rel_fence:1318; GFX90A-TGSPLIT:       ; %bb.0: ; %entry1319; GFX90A-TGSPLIT-NEXT:    s_waitcnt vmcnt(0)1320; GFX90A-TGSPLIT-NEXT:    buffer_wbinvl1_vol1321; GFX90A-TGSPLIT-NEXT:    s_endpgm1322;1323; GFX942-NOTTGSPLIT-LABEL: agent_one_as_acq_rel_fence:1324; GFX942-NOTTGSPLIT:       ; %bb.0: ; %entry1325; GFX942-NOTTGSPLIT-NEXT:    buffer_wbl2 sc11326; GFX942-NOTTGSPLIT-NEXT:    s_waitcnt vmcnt(0)1327; GFX942-NOTTGSPLIT-NEXT:    buffer_inv sc11328; GFX942-NOTTGSPLIT-NEXT:    s_endpgm1329;1330; GFX942-TGSPLIT-LABEL: agent_one_as_acq_rel_fence:1331; GFX942-TGSPLIT:       ; %bb.0: ; %entry1332; GFX942-TGSPLIT-NEXT:    buffer_wbl2 sc11333; GFX942-TGSPLIT-NEXT:    s_waitcnt vmcnt(0)1334; GFX942-TGSPLIT-NEXT:    buffer_inv sc11335; GFX942-TGSPLIT-NEXT:    s_endpgm1336;1337; GFX11-WGP-LABEL: agent_one_as_acq_rel_fence:1338; GFX11-WGP:       ; %bb.0: ; %entry1339; GFX11-WGP-NEXT:    s_waitcnt vmcnt(0)1340; GFX11-WGP-NEXT:    s_waitcnt_vscnt null, 0x01341; GFX11-WGP-NEXT:    buffer_gl1_inv1342; GFX11-WGP-NEXT:    buffer_gl0_inv1343; GFX11-WGP-NEXT:    s_endpgm1344;1345; GFX11-CU-LABEL: agent_one_as_acq_rel_fence:1346; GFX11-CU:       ; %bb.0: ; %entry1347; GFX11-CU-NEXT:    s_waitcnt vmcnt(0)1348; GFX11-CU-NEXT:    s_waitcnt_vscnt null, 0x01349; GFX11-CU-NEXT:    buffer_gl1_inv1350; GFX11-CU-NEXT:    buffer_gl0_inv1351; GFX11-CU-NEXT:    s_endpgm1352;1353; GFX12-WGP-LABEL: agent_one_as_acq_rel_fence:1354; GFX12-WGP:       ; %bb.0: ; %entry1355; GFX12-WGP-NEXT:    s_wait_bvhcnt 0x01356; GFX12-WGP-NEXT:    s_wait_samplecnt 0x01357; GFX12-WGP-NEXT:    s_wait_loadcnt 0x01358; GFX12-WGP-NEXT:    s_wait_storecnt 0x01359; GFX12-WGP-NEXT:    global_inv scope:SCOPE_DEV1360; GFX12-WGP-NEXT:    s_endpgm1361;1362; GFX12-CU-LABEL: agent_one_as_acq_rel_fence:1363; GFX12-CU:       ; %bb.0: ; %entry1364; GFX12-CU-NEXT:    s_wait_bvhcnt 0x01365; GFX12-CU-NEXT:    s_wait_samplecnt 0x01366; GFX12-CU-NEXT:    s_wait_loadcnt 0x01367; GFX12-CU-NEXT:    s_wait_storecnt 0x01368; GFX12-CU-NEXT:    global_inv scope:SCOPE_DEV1369; GFX12-CU-NEXT:    s_endpgm1370;1371; GFX1250-LABEL: agent_one_as_acq_rel_fence:1372; GFX1250:       ; %bb.0: ; %entry1373; GFX1250-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_WAVE_MODE, 25, 1), 11374; GFX1250-NEXT:    global_wb scope:SCOPE_DEV1375; GFX1250-NEXT:    s_wait_loadcnt 0x01376; GFX1250-NEXT:    s_wait_storecnt 0x01377; GFX1250-NEXT:    global_inv scope:SCOPE_DEV1378; GFX1250-NEXT:    s_endpgm1379entry:1380  fence syncscope("agent-one-as") acq_rel, !mmra !{!"amdgpu-synchronize-as", !"global"}1381  ret void1382}1383 1384define amdgpu_kernel void @agent_one_as_seq_cst_fence() {1385; GFX6-LABEL: agent_one_as_seq_cst_fence:1386; GFX6:       ; %bb.0: ; %entry1387; GFX6-NEXT:    s_waitcnt vmcnt(0)1388; GFX6-NEXT:    buffer_wbinvl11389; GFX6-NEXT:    s_endpgm1390;1391; GFX7-LABEL: agent_one_as_seq_cst_fence:1392; GFX7:       ; %bb.0: ; %entry1393; GFX7-NEXT:    s_waitcnt vmcnt(0)1394; GFX7-NEXT:    buffer_wbinvl1_vol1395; GFX7-NEXT:    s_endpgm1396;1397; GFX10-WGP-LABEL: agent_one_as_seq_cst_fence:1398; GFX10-WGP:       ; %bb.0: ; %entry1399; GFX10-WGP-NEXT:    s_waitcnt vmcnt(0)1400; GFX10-WGP-NEXT:    s_waitcnt_vscnt null, 0x01401; GFX10-WGP-NEXT:    buffer_gl1_inv1402; GFX10-WGP-NEXT:    buffer_gl0_inv1403; GFX10-WGP-NEXT:    s_endpgm1404;1405; GFX10-CU-LABEL: agent_one_as_seq_cst_fence:1406; GFX10-CU:       ; %bb.0: ; %entry1407; GFX10-CU-NEXT:    s_waitcnt vmcnt(0)1408; GFX10-CU-NEXT:    s_waitcnt_vscnt null, 0x01409; GFX10-CU-NEXT:    buffer_gl1_inv1410; GFX10-CU-NEXT:    buffer_gl0_inv1411; GFX10-CU-NEXT:    s_endpgm1412;1413; SKIP-CACHE-INV-LABEL: agent_one_as_seq_cst_fence:1414; SKIP-CACHE-INV:       ; %bb.0: ; %entry1415; SKIP-CACHE-INV-NEXT:    s_waitcnt vmcnt(0)1416; SKIP-CACHE-INV-NEXT:    s_endpgm1417;1418; GFX90A-NOTTGSPLIT-LABEL: agent_one_as_seq_cst_fence:1419; GFX90A-NOTTGSPLIT:       ; %bb.0: ; %entry1420; GFX90A-NOTTGSPLIT-NEXT:    s_waitcnt vmcnt(0)1421; GFX90A-NOTTGSPLIT-NEXT:    buffer_wbinvl1_vol1422; GFX90A-NOTTGSPLIT-NEXT:    s_endpgm1423;1424; GFX90A-TGSPLIT-LABEL: agent_one_as_seq_cst_fence:1425; GFX90A-TGSPLIT:       ; %bb.0: ; %entry1426; GFX90A-TGSPLIT-NEXT:    s_waitcnt vmcnt(0)1427; GFX90A-TGSPLIT-NEXT:    buffer_wbinvl1_vol1428; GFX90A-TGSPLIT-NEXT:    s_endpgm1429;1430; GFX942-NOTTGSPLIT-LABEL: agent_one_as_seq_cst_fence:1431; GFX942-NOTTGSPLIT:       ; %bb.0: ; %entry1432; GFX942-NOTTGSPLIT-NEXT:    buffer_wbl2 sc11433; GFX942-NOTTGSPLIT-NEXT:    s_waitcnt vmcnt(0)1434; GFX942-NOTTGSPLIT-NEXT:    buffer_inv sc11435; GFX942-NOTTGSPLIT-NEXT:    s_endpgm1436;1437; GFX942-TGSPLIT-LABEL: agent_one_as_seq_cst_fence:1438; GFX942-TGSPLIT:       ; %bb.0: ; %entry1439; GFX942-TGSPLIT-NEXT:    buffer_wbl2 sc11440; GFX942-TGSPLIT-NEXT:    s_waitcnt vmcnt(0)1441; GFX942-TGSPLIT-NEXT:    buffer_inv sc11442; GFX942-TGSPLIT-NEXT:    s_endpgm1443;1444; GFX11-WGP-LABEL: agent_one_as_seq_cst_fence:1445; GFX11-WGP:       ; %bb.0: ; %entry1446; GFX11-WGP-NEXT:    s_waitcnt vmcnt(0)1447; GFX11-WGP-NEXT:    s_waitcnt_vscnt null, 0x01448; GFX11-WGP-NEXT:    buffer_gl1_inv1449; GFX11-WGP-NEXT:    buffer_gl0_inv1450; GFX11-WGP-NEXT:    s_endpgm1451;1452; GFX11-CU-LABEL: agent_one_as_seq_cst_fence:1453; GFX11-CU:       ; %bb.0: ; %entry1454; GFX11-CU-NEXT:    s_waitcnt vmcnt(0)1455; GFX11-CU-NEXT:    s_waitcnt_vscnt null, 0x01456; GFX11-CU-NEXT:    buffer_gl1_inv1457; GFX11-CU-NEXT:    buffer_gl0_inv1458; GFX11-CU-NEXT:    s_endpgm1459;1460; GFX12-WGP-LABEL: agent_one_as_seq_cst_fence:1461; GFX12-WGP:       ; %bb.0: ; %entry1462; GFX12-WGP-NEXT:    s_wait_bvhcnt 0x01463; GFX12-WGP-NEXT:    s_wait_samplecnt 0x01464; GFX12-WGP-NEXT:    s_wait_loadcnt 0x01465; GFX12-WGP-NEXT:    s_wait_storecnt 0x01466; GFX12-WGP-NEXT:    global_inv scope:SCOPE_DEV1467; GFX12-WGP-NEXT:    s_endpgm1468;1469; GFX12-CU-LABEL: agent_one_as_seq_cst_fence:1470; GFX12-CU:       ; %bb.0: ; %entry1471; GFX12-CU-NEXT:    s_wait_bvhcnt 0x01472; GFX12-CU-NEXT:    s_wait_samplecnt 0x01473; GFX12-CU-NEXT:    s_wait_loadcnt 0x01474; GFX12-CU-NEXT:    s_wait_storecnt 0x01475; GFX12-CU-NEXT:    global_inv scope:SCOPE_DEV1476; GFX12-CU-NEXT:    s_endpgm1477;1478; GFX1250-LABEL: agent_one_as_seq_cst_fence:1479; GFX1250:       ; %bb.0: ; %entry1480; GFX1250-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_WAVE_MODE, 25, 1), 11481; GFX1250-NEXT:    global_wb scope:SCOPE_DEV1482; GFX1250-NEXT:    s_wait_loadcnt 0x01483; GFX1250-NEXT:    s_wait_storecnt 0x01484; GFX1250-NEXT:    global_inv scope:SCOPE_DEV1485; GFX1250-NEXT:    s_endpgm1486entry:1487  fence syncscope("agent-one-as") seq_cst, !mmra !{!"amdgpu-synchronize-as", !"global"}1488  ret void1489}1490 1491define amdgpu_kernel void @system_acquire_fence() {1492; GFX6-LABEL: system_acquire_fence:1493; GFX6:       ; %bb.0: ; %entry1494; GFX6-NEXT:    s_waitcnt vmcnt(0)1495; GFX6-NEXT:    buffer_wbinvl11496; GFX6-NEXT:    s_endpgm1497;1498; GFX7-LABEL: system_acquire_fence:1499; GFX7:       ; %bb.0: ; %entry1500; GFX7-NEXT:    s_waitcnt vmcnt(0)1501; GFX7-NEXT:    buffer_wbinvl1_vol1502; GFX7-NEXT:    s_endpgm1503;1504; GFX10-WGP-LABEL: system_acquire_fence:1505; GFX10-WGP:       ; %bb.0: ; %entry1506; GFX10-WGP-NEXT:    s_waitcnt vmcnt(0)1507; GFX10-WGP-NEXT:    s_waitcnt_vscnt null, 0x01508; GFX10-WGP-NEXT:    buffer_gl1_inv1509; GFX10-WGP-NEXT:    buffer_gl0_inv1510; GFX10-WGP-NEXT:    s_endpgm1511;1512; GFX10-CU-LABEL: system_acquire_fence:1513; GFX10-CU:       ; %bb.0: ; %entry1514; GFX10-CU-NEXT:    s_waitcnt vmcnt(0)1515; GFX10-CU-NEXT:    s_waitcnt_vscnt null, 0x01516; GFX10-CU-NEXT:    buffer_gl1_inv1517; GFX10-CU-NEXT:    buffer_gl0_inv1518; GFX10-CU-NEXT:    s_endpgm1519;1520; SKIP-CACHE-INV-LABEL: system_acquire_fence:1521; SKIP-CACHE-INV:       ; %bb.0: ; %entry1522; SKIP-CACHE-INV-NEXT:    s_waitcnt vmcnt(0)1523; SKIP-CACHE-INV-NEXT:    s_endpgm1524;1525; GFX90A-NOTTGSPLIT-LABEL: system_acquire_fence:1526; GFX90A-NOTTGSPLIT:       ; %bb.0: ; %entry1527; GFX90A-NOTTGSPLIT-NEXT:    s_waitcnt vmcnt(0)1528; GFX90A-NOTTGSPLIT-NEXT:    buffer_invl21529; GFX90A-NOTTGSPLIT-NEXT:    buffer_wbinvl1_vol1530; GFX90A-NOTTGSPLIT-NEXT:    s_endpgm1531;1532; GFX90A-TGSPLIT-LABEL: system_acquire_fence:1533; GFX90A-TGSPLIT:       ; %bb.0: ; %entry1534; GFX90A-TGSPLIT-NEXT:    s_waitcnt vmcnt(0)1535; GFX90A-TGSPLIT-NEXT:    buffer_invl21536; GFX90A-TGSPLIT-NEXT:    buffer_wbinvl1_vol1537; GFX90A-TGSPLIT-NEXT:    s_endpgm1538;1539; GFX942-NOTTGSPLIT-LABEL: system_acquire_fence:1540; GFX942-NOTTGSPLIT:       ; %bb.0: ; %entry1541; GFX942-NOTTGSPLIT-NEXT:    s_waitcnt vmcnt(0)1542; GFX942-NOTTGSPLIT-NEXT:    buffer_inv sc0 sc11543; GFX942-NOTTGSPLIT-NEXT:    s_endpgm1544;1545; GFX942-TGSPLIT-LABEL: system_acquire_fence:1546; GFX942-TGSPLIT:       ; %bb.0: ; %entry1547; GFX942-TGSPLIT-NEXT:    s_waitcnt vmcnt(0)1548; GFX942-TGSPLIT-NEXT:    buffer_inv sc0 sc11549; GFX942-TGSPLIT-NEXT:    s_endpgm1550;1551; GFX11-WGP-LABEL: system_acquire_fence:1552; GFX11-WGP:       ; %bb.0: ; %entry1553; GFX11-WGP-NEXT:    s_waitcnt vmcnt(0)1554; GFX11-WGP-NEXT:    s_waitcnt_vscnt null, 0x01555; GFX11-WGP-NEXT:    buffer_gl1_inv1556; GFX11-WGP-NEXT:    buffer_gl0_inv1557; GFX11-WGP-NEXT:    s_endpgm1558;1559; GFX11-CU-LABEL: system_acquire_fence:1560; GFX11-CU:       ; %bb.0: ; %entry1561; GFX11-CU-NEXT:    s_waitcnt vmcnt(0)1562; GFX11-CU-NEXT:    s_waitcnt_vscnt null, 0x01563; GFX11-CU-NEXT:    buffer_gl1_inv1564; GFX11-CU-NEXT:    buffer_gl0_inv1565; GFX11-CU-NEXT:    s_endpgm1566;1567; GFX12-WGP-LABEL: system_acquire_fence:1568; GFX12-WGP:       ; %bb.0: ; %entry1569; GFX12-WGP-NEXT:    s_wait_loadcnt 0x01570; GFX12-WGP-NEXT:    s_wait_storecnt 0x01571; GFX12-WGP-NEXT:    global_inv scope:SCOPE_SYS1572; GFX12-WGP-NEXT:    s_endpgm1573;1574; GFX12-CU-LABEL: system_acquire_fence:1575; GFX12-CU:       ; %bb.0: ; %entry1576; GFX12-CU-NEXT:    s_wait_loadcnt 0x01577; GFX12-CU-NEXT:    s_wait_storecnt 0x01578; GFX12-CU-NEXT:    global_inv scope:SCOPE_SYS1579; GFX12-CU-NEXT:    s_endpgm1580;1581; GFX1250-LABEL: system_acquire_fence:1582; GFX1250:       ; %bb.0: ; %entry1583; GFX1250-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_WAVE_MODE, 25, 1), 11584; GFX1250-NEXT:    s_wait_loadcnt 0x01585; GFX1250-NEXT:    s_wait_storecnt 0x01586; GFX1250-NEXT:    global_inv scope:SCOPE_SYS1587; GFX1250-NEXT:    s_endpgm1588entry:1589  fence acquire, !mmra !{!"amdgpu-synchronize-as", !"global"}1590  ret void1591}1592 1593define amdgpu_kernel void @system_release_fence() {1594; GFX6-LABEL: system_release_fence:1595; GFX6:       ; %bb.0: ; %entry1596; GFX6-NEXT:    s_waitcnt vmcnt(0)1597; GFX6-NEXT:    s_endpgm1598;1599; GFX7-LABEL: system_release_fence:1600; GFX7:       ; %bb.0: ; %entry1601; GFX7-NEXT:    s_waitcnt vmcnt(0)1602; GFX7-NEXT:    s_endpgm1603;1604; GFX10-WGP-LABEL: system_release_fence:1605; GFX10-WGP:       ; %bb.0: ; %entry1606; GFX10-WGP-NEXT:    s_waitcnt vmcnt(0)1607; GFX10-WGP-NEXT:    s_waitcnt_vscnt null, 0x01608; GFX10-WGP-NEXT:    s_endpgm1609;1610; GFX10-CU-LABEL: system_release_fence:1611; GFX10-CU:       ; %bb.0: ; %entry1612; GFX10-CU-NEXT:    s_waitcnt vmcnt(0)1613; GFX10-CU-NEXT:    s_waitcnt_vscnt null, 0x01614; GFX10-CU-NEXT:    s_endpgm1615;1616; SKIP-CACHE-INV-LABEL: system_release_fence:1617; SKIP-CACHE-INV:       ; %bb.0: ; %entry1618; SKIP-CACHE-INV-NEXT:    s_waitcnt vmcnt(0)1619; SKIP-CACHE-INV-NEXT:    s_endpgm1620;1621; GFX90A-NOTTGSPLIT-LABEL: system_release_fence:1622; GFX90A-NOTTGSPLIT:       ; %bb.0: ; %entry1623; GFX90A-NOTTGSPLIT-NEXT:    buffer_wbl21624; GFX90A-NOTTGSPLIT-NEXT:    s_waitcnt vmcnt(0)1625; GFX90A-NOTTGSPLIT-NEXT:    s_endpgm1626;1627; GFX90A-TGSPLIT-LABEL: system_release_fence:1628; GFX90A-TGSPLIT:       ; %bb.0: ; %entry1629; GFX90A-TGSPLIT-NEXT:    buffer_wbl21630; GFX90A-TGSPLIT-NEXT:    s_waitcnt vmcnt(0)1631; GFX90A-TGSPLIT-NEXT:    s_endpgm1632;1633; GFX942-NOTTGSPLIT-LABEL: system_release_fence:1634; GFX942-NOTTGSPLIT:       ; %bb.0: ; %entry1635; GFX942-NOTTGSPLIT-NEXT:    buffer_wbl2 sc0 sc11636; GFX942-NOTTGSPLIT-NEXT:    s_waitcnt vmcnt(0)1637; GFX942-NOTTGSPLIT-NEXT:    s_endpgm1638;1639; GFX942-TGSPLIT-LABEL: system_release_fence:1640; GFX942-TGSPLIT:       ; %bb.0: ; %entry1641; GFX942-TGSPLIT-NEXT:    buffer_wbl2 sc0 sc11642; GFX942-TGSPLIT-NEXT:    s_waitcnt vmcnt(0)1643; GFX942-TGSPLIT-NEXT:    s_endpgm1644;1645; GFX11-WGP-LABEL: system_release_fence:1646; GFX11-WGP:       ; %bb.0: ; %entry1647; GFX11-WGP-NEXT:    s_waitcnt vmcnt(0)1648; GFX11-WGP-NEXT:    s_waitcnt_vscnt null, 0x01649; GFX11-WGP-NEXT:    s_endpgm1650;1651; GFX11-CU-LABEL: system_release_fence:1652; GFX11-CU:       ; %bb.0: ; %entry1653; GFX11-CU-NEXT:    s_waitcnt vmcnt(0)1654; GFX11-CU-NEXT:    s_waitcnt_vscnt null, 0x01655; GFX11-CU-NEXT:    s_endpgm1656;1657; GFX12-WGP-LABEL: system_release_fence:1658; GFX12-WGP:       ; %bb.0: ; %entry1659; GFX12-WGP-NEXT:    global_wb scope:SCOPE_SYS1660; GFX12-WGP-NEXT:    s_wait_bvhcnt 0x01661; GFX12-WGP-NEXT:    s_wait_samplecnt 0x01662; GFX12-WGP-NEXT:    s_wait_loadcnt 0x01663; GFX12-WGP-NEXT:    s_wait_storecnt 0x01664; GFX12-WGP-NEXT:    s_endpgm1665;1666; GFX12-CU-LABEL: system_release_fence:1667; GFX12-CU:       ; %bb.0: ; %entry1668; GFX12-CU-NEXT:    global_wb scope:SCOPE_SYS1669; GFX12-CU-NEXT:    s_wait_bvhcnt 0x01670; GFX12-CU-NEXT:    s_wait_samplecnt 0x01671; GFX12-CU-NEXT:    s_wait_loadcnt 0x01672; GFX12-CU-NEXT:    s_wait_storecnt 0x01673; GFX12-CU-NEXT:    s_endpgm1674;1675; GFX1250-LABEL: system_release_fence:1676; GFX1250:       ; %bb.0: ; %entry1677; GFX1250-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_WAVE_MODE, 25, 1), 11678; GFX1250-NEXT:    global_wb scope:SCOPE_SYS1679; GFX1250-NEXT:    s_wait_loadcnt 0x01680; GFX1250-NEXT:    s_wait_storecnt 0x01681; GFX1250-NEXT:    s_endpgm1682entry:1683  fence release, !mmra !{!"amdgpu-synchronize-as", !"global"}1684  ret void1685}1686 1687define amdgpu_kernel void @system_acq_rel_fence() {1688; GFX6-LABEL: system_acq_rel_fence:1689; GFX6:       ; %bb.0: ; %entry1690; GFX6-NEXT:    s_waitcnt vmcnt(0)1691; GFX6-NEXT:    buffer_wbinvl11692; GFX6-NEXT:    s_endpgm1693;1694; GFX7-LABEL: system_acq_rel_fence:1695; GFX7:       ; %bb.0: ; %entry1696; GFX7-NEXT:    s_waitcnt vmcnt(0)1697; GFX7-NEXT:    buffer_wbinvl1_vol1698; GFX7-NEXT:    s_endpgm1699;1700; GFX10-WGP-LABEL: system_acq_rel_fence:1701; GFX10-WGP:       ; %bb.0: ; %entry1702; GFX10-WGP-NEXT:    s_waitcnt vmcnt(0)1703; GFX10-WGP-NEXT:    s_waitcnt_vscnt null, 0x01704; GFX10-WGP-NEXT:    buffer_gl1_inv1705; GFX10-WGP-NEXT:    buffer_gl0_inv1706; GFX10-WGP-NEXT:    s_endpgm1707;1708; GFX10-CU-LABEL: system_acq_rel_fence:1709; GFX10-CU:       ; %bb.0: ; %entry1710; GFX10-CU-NEXT:    s_waitcnt vmcnt(0)1711; GFX10-CU-NEXT:    s_waitcnt_vscnt null, 0x01712; GFX10-CU-NEXT:    buffer_gl1_inv1713; GFX10-CU-NEXT:    buffer_gl0_inv1714; GFX10-CU-NEXT:    s_endpgm1715;1716; SKIP-CACHE-INV-LABEL: system_acq_rel_fence:1717; SKIP-CACHE-INV:       ; %bb.0: ; %entry1718; SKIP-CACHE-INV-NEXT:    s_waitcnt vmcnt(0)1719; SKIP-CACHE-INV-NEXT:    s_endpgm1720;1721; GFX90A-NOTTGSPLIT-LABEL: system_acq_rel_fence:1722; GFX90A-NOTTGSPLIT:       ; %bb.0: ; %entry1723; GFX90A-NOTTGSPLIT-NEXT:    buffer_wbl21724; GFX90A-NOTTGSPLIT-NEXT:    s_waitcnt vmcnt(0)1725; GFX90A-NOTTGSPLIT-NEXT:    buffer_invl21726; GFX90A-NOTTGSPLIT-NEXT:    buffer_wbinvl1_vol1727; GFX90A-NOTTGSPLIT-NEXT:    s_endpgm1728;1729; GFX90A-TGSPLIT-LABEL: system_acq_rel_fence:1730; GFX90A-TGSPLIT:       ; %bb.0: ; %entry1731; GFX90A-TGSPLIT-NEXT:    buffer_wbl21732; GFX90A-TGSPLIT-NEXT:    s_waitcnt vmcnt(0)1733; GFX90A-TGSPLIT-NEXT:    buffer_invl21734; GFX90A-TGSPLIT-NEXT:    buffer_wbinvl1_vol1735; GFX90A-TGSPLIT-NEXT:    s_endpgm1736;1737; GFX942-NOTTGSPLIT-LABEL: system_acq_rel_fence:1738; GFX942-NOTTGSPLIT:       ; %bb.0: ; %entry1739; GFX942-NOTTGSPLIT-NEXT:    buffer_wbl2 sc0 sc11740; GFX942-NOTTGSPLIT-NEXT:    s_waitcnt vmcnt(0)1741; GFX942-NOTTGSPLIT-NEXT:    buffer_inv sc0 sc11742; GFX942-NOTTGSPLIT-NEXT:    s_endpgm1743;1744; GFX942-TGSPLIT-LABEL: system_acq_rel_fence:1745; GFX942-TGSPLIT:       ; %bb.0: ; %entry1746; GFX942-TGSPLIT-NEXT:    buffer_wbl2 sc0 sc11747; GFX942-TGSPLIT-NEXT:    s_waitcnt vmcnt(0)1748; GFX942-TGSPLIT-NEXT:    buffer_inv sc0 sc11749; GFX942-TGSPLIT-NEXT:    s_endpgm1750;1751; GFX11-WGP-LABEL: system_acq_rel_fence:1752; GFX11-WGP:       ; %bb.0: ; %entry1753; GFX11-WGP-NEXT:    s_waitcnt vmcnt(0)1754; GFX11-WGP-NEXT:    s_waitcnt_vscnt null, 0x01755; GFX11-WGP-NEXT:    buffer_gl1_inv1756; GFX11-WGP-NEXT:    buffer_gl0_inv1757; GFX11-WGP-NEXT:    s_endpgm1758;1759; GFX11-CU-LABEL: system_acq_rel_fence:1760; GFX11-CU:       ; %bb.0: ; %entry1761; GFX11-CU-NEXT:    s_waitcnt vmcnt(0)1762; GFX11-CU-NEXT:    s_waitcnt_vscnt null, 0x01763; GFX11-CU-NEXT:    buffer_gl1_inv1764; GFX11-CU-NEXT:    buffer_gl0_inv1765; GFX11-CU-NEXT:    s_endpgm1766;1767; GFX12-WGP-LABEL: system_acq_rel_fence:1768; GFX12-WGP:       ; %bb.0: ; %entry1769; GFX12-WGP-NEXT:    global_wb scope:SCOPE_SYS1770; GFX12-WGP-NEXT:    s_wait_bvhcnt 0x01771; GFX12-WGP-NEXT:    s_wait_samplecnt 0x01772; GFX12-WGP-NEXT:    s_wait_loadcnt 0x01773; GFX12-WGP-NEXT:    s_wait_storecnt 0x01774; GFX12-WGP-NEXT:    global_inv scope:SCOPE_SYS1775; GFX12-WGP-NEXT:    s_endpgm1776;1777; GFX12-CU-LABEL: system_acq_rel_fence:1778; GFX12-CU:       ; %bb.0: ; %entry1779; GFX12-CU-NEXT:    global_wb scope:SCOPE_SYS1780; GFX12-CU-NEXT:    s_wait_bvhcnt 0x01781; GFX12-CU-NEXT:    s_wait_samplecnt 0x01782; GFX12-CU-NEXT:    s_wait_loadcnt 0x01783; GFX12-CU-NEXT:    s_wait_storecnt 0x01784; GFX12-CU-NEXT:    global_inv scope:SCOPE_SYS1785; GFX12-CU-NEXT:    s_endpgm1786;1787; GFX1250-LABEL: system_acq_rel_fence:1788; GFX1250:       ; %bb.0: ; %entry1789; GFX1250-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_WAVE_MODE, 25, 1), 11790; GFX1250-NEXT:    global_wb scope:SCOPE_SYS1791; GFX1250-NEXT:    s_wait_loadcnt 0x01792; GFX1250-NEXT:    s_wait_storecnt 0x01793; GFX1250-NEXT:    global_inv scope:SCOPE_SYS1794; GFX1250-NEXT:    s_endpgm1795entry:1796  fence acq_rel, !mmra !{!"amdgpu-synchronize-as", !"global"}1797  ret void1798}1799 1800define amdgpu_kernel void @system_seq_cst_fence() {1801; GFX6-LABEL: system_seq_cst_fence:1802; GFX6:       ; %bb.0: ; %entry1803; GFX6-NEXT:    s_waitcnt vmcnt(0)1804; GFX6-NEXT:    buffer_wbinvl11805; GFX6-NEXT:    s_endpgm1806;1807; GFX7-LABEL: system_seq_cst_fence:1808; GFX7:       ; %bb.0: ; %entry1809; GFX7-NEXT:    s_waitcnt vmcnt(0)1810; GFX7-NEXT:    buffer_wbinvl1_vol1811; GFX7-NEXT:    s_endpgm1812;1813; GFX10-WGP-LABEL: system_seq_cst_fence:1814; GFX10-WGP:       ; %bb.0: ; %entry1815; GFX10-WGP-NEXT:    s_waitcnt vmcnt(0)1816; GFX10-WGP-NEXT:    s_waitcnt_vscnt null, 0x01817; GFX10-WGP-NEXT:    buffer_gl1_inv1818; GFX10-WGP-NEXT:    buffer_gl0_inv1819; GFX10-WGP-NEXT:    s_endpgm1820;1821; GFX10-CU-LABEL: system_seq_cst_fence:1822; GFX10-CU:       ; %bb.0: ; %entry1823; GFX10-CU-NEXT:    s_waitcnt vmcnt(0)1824; GFX10-CU-NEXT:    s_waitcnt_vscnt null, 0x01825; GFX10-CU-NEXT:    buffer_gl1_inv1826; GFX10-CU-NEXT:    buffer_gl0_inv1827; GFX10-CU-NEXT:    s_endpgm1828;1829; SKIP-CACHE-INV-LABEL: system_seq_cst_fence:1830; SKIP-CACHE-INV:       ; %bb.0: ; %entry1831; SKIP-CACHE-INV-NEXT:    s_waitcnt vmcnt(0)1832; SKIP-CACHE-INV-NEXT:    s_endpgm1833;1834; GFX90A-NOTTGSPLIT-LABEL: system_seq_cst_fence:1835; GFX90A-NOTTGSPLIT:       ; %bb.0: ; %entry1836; GFX90A-NOTTGSPLIT-NEXT:    buffer_wbl21837; GFX90A-NOTTGSPLIT-NEXT:    s_waitcnt vmcnt(0)1838; GFX90A-NOTTGSPLIT-NEXT:    buffer_invl21839; GFX90A-NOTTGSPLIT-NEXT:    buffer_wbinvl1_vol1840; GFX90A-NOTTGSPLIT-NEXT:    s_endpgm1841;1842; GFX90A-TGSPLIT-LABEL: system_seq_cst_fence:1843; GFX90A-TGSPLIT:       ; %bb.0: ; %entry1844; GFX90A-TGSPLIT-NEXT:    buffer_wbl21845; GFX90A-TGSPLIT-NEXT:    s_waitcnt vmcnt(0)1846; GFX90A-TGSPLIT-NEXT:    buffer_invl21847; GFX90A-TGSPLIT-NEXT:    buffer_wbinvl1_vol1848; GFX90A-TGSPLIT-NEXT:    s_endpgm1849;1850; GFX942-NOTTGSPLIT-LABEL: system_seq_cst_fence:1851; GFX942-NOTTGSPLIT:       ; %bb.0: ; %entry1852; GFX942-NOTTGSPLIT-NEXT:    buffer_wbl2 sc0 sc11853; GFX942-NOTTGSPLIT-NEXT:    s_waitcnt vmcnt(0)1854; GFX942-NOTTGSPLIT-NEXT:    buffer_inv sc0 sc11855; GFX942-NOTTGSPLIT-NEXT:    s_endpgm1856;1857; GFX942-TGSPLIT-LABEL: system_seq_cst_fence:1858; GFX942-TGSPLIT:       ; %bb.0: ; %entry1859; GFX942-TGSPLIT-NEXT:    buffer_wbl2 sc0 sc11860; GFX942-TGSPLIT-NEXT:    s_waitcnt vmcnt(0)1861; GFX942-TGSPLIT-NEXT:    buffer_inv sc0 sc11862; GFX942-TGSPLIT-NEXT:    s_endpgm1863;1864; GFX11-WGP-LABEL: system_seq_cst_fence:1865; GFX11-WGP:       ; %bb.0: ; %entry1866; GFX11-WGP-NEXT:    s_waitcnt vmcnt(0)1867; GFX11-WGP-NEXT:    s_waitcnt_vscnt null, 0x01868; GFX11-WGP-NEXT:    buffer_gl1_inv1869; GFX11-WGP-NEXT:    buffer_gl0_inv1870; GFX11-WGP-NEXT:    s_endpgm1871;1872; GFX11-CU-LABEL: system_seq_cst_fence:1873; GFX11-CU:       ; %bb.0: ; %entry1874; GFX11-CU-NEXT:    s_waitcnt vmcnt(0)1875; GFX11-CU-NEXT:    s_waitcnt_vscnt null, 0x01876; GFX11-CU-NEXT:    buffer_gl1_inv1877; GFX11-CU-NEXT:    buffer_gl0_inv1878; GFX11-CU-NEXT:    s_endpgm1879;1880; GFX12-WGP-LABEL: system_seq_cst_fence:1881; GFX12-WGP:       ; %bb.0: ; %entry1882; GFX12-WGP-NEXT:    global_wb scope:SCOPE_SYS1883; GFX12-WGP-NEXT:    s_wait_bvhcnt 0x01884; GFX12-WGP-NEXT:    s_wait_samplecnt 0x01885; GFX12-WGP-NEXT:    s_wait_loadcnt 0x01886; GFX12-WGP-NEXT:    s_wait_storecnt 0x01887; GFX12-WGP-NEXT:    global_inv scope:SCOPE_SYS1888; GFX12-WGP-NEXT:    s_endpgm1889;1890; GFX12-CU-LABEL: system_seq_cst_fence:1891; GFX12-CU:       ; %bb.0: ; %entry1892; GFX12-CU-NEXT:    global_wb scope:SCOPE_SYS1893; GFX12-CU-NEXT:    s_wait_bvhcnt 0x01894; GFX12-CU-NEXT:    s_wait_samplecnt 0x01895; GFX12-CU-NEXT:    s_wait_loadcnt 0x01896; GFX12-CU-NEXT:    s_wait_storecnt 0x01897; GFX12-CU-NEXT:    global_inv scope:SCOPE_SYS1898; GFX12-CU-NEXT:    s_endpgm1899;1900; GFX1250-LABEL: system_seq_cst_fence:1901; GFX1250:       ; %bb.0: ; %entry1902; GFX1250-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_WAVE_MODE, 25, 1), 11903; GFX1250-NEXT:    global_wb scope:SCOPE_SYS1904; GFX1250-NEXT:    s_wait_loadcnt 0x01905; GFX1250-NEXT:    s_wait_storecnt 0x01906; GFX1250-NEXT:    global_inv scope:SCOPE_SYS1907; GFX1250-NEXT:    s_endpgm1908entry:1909  fence seq_cst, !mmra !{!"amdgpu-synchronize-as", !"global"}1910  ret void1911}1912 1913define amdgpu_kernel void @system_one_as_acquire_fence() {1914; GFX6-LABEL: system_one_as_acquire_fence:1915; GFX6:       ; %bb.0: ; %entry1916; GFX6-NEXT:    s_waitcnt vmcnt(0)1917; GFX6-NEXT:    buffer_wbinvl11918; GFX6-NEXT:    s_endpgm1919;1920; GFX7-LABEL: system_one_as_acquire_fence:1921; GFX7:       ; %bb.0: ; %entry1922; GFX7-NEXT:    s_waitcnt vmcnt(0)1923; GFX7-NEXT:    buffer_wbinvl1_vol1924; GFX7-NEXT:    s_endpgm1925;1926; GFX10-WGP-LABEL: system_one_as_acquire_fence:1927; GFX10-WGP:       ; %bb.0: ; %entry1928; GFX10-WGP-NEXT:    s_waitcnt vmcnt(0)1929; GFX10-WGP-NEXT:    s_waitcnt_vscnt null, 0x01930; GFX10-WGP-NEXT:    buffer_gl1_inv1931; GFX10-WGP-NEXT:    buffer_gl0_inv1932; GFX10-WGP-NEXT:    s_endpgm1933;1934; GFX10-CU-LABEL: system_one_as_acquire_fence:1935; GFX10-CU:       ; %bb.0: ; %entry1936; GFX10-CU-NEXT:    s_waitcnt vmcnt(0)1937; GFX10-CU-NEXT:    s_waitcnt_vscnt null, 0x01938; GFX10-CU-NEXT:    buffer_gl1_inv1939; GFX10-CU-NEXT:    buffer_gl0_inv1940; GFX10-CU-NEXT:    s_endpgm1941;1942; SKIP-CACHE-INV-LABEL: system_one_as_acquire_fence:1943; SKIP-CACHE-INV:       ; %bb.0: ; %entry1944; SKIP-CACHE-INV-NEXT:    s_waitcnt vmcnt(0)1945; SKIP-CACHE-INV-NEXT:    s_endpgm1946;1947; GFX90A-NOTTGSPLIT-LABEL: system_one_as_acquire_fence:1948; GFX90A-NOTTGSPLIT:       ; %bb.0: ; %entry1949; GFX90A-NOTTGSPLIT-NEXT:    s_waitcnt vmcnt(0)1950; GFX90A-NOTTGSPLIT-NEXT:    buffer_invl21951; GFX90A-NOTTGSPLIT-NEXT:    buffer_wbinvl1_vol1952; GFX90A-NOTTGSPLIT-NEXT:    s_endpgm1953;1954; GFX90A-TGSPLIT-LABEL: system_one_as_acquire_fence:1955; GFX90A-TGSPLIT:       ; %bb.0: ; %entry1956; GFX90A-TGSPLIT-NEXT:    s_waitcnt vmcnt(0)1957; GFX90A-TGSPLIT-NEXT:    buffer_invl21958; GFX90A-TGSPLIT-NEXT:    buffer_wbinvl1_vol1959; GFX90A-TGSPLIT-NEXT:    s_endpgm1960;1961; GFX942-NOTTGSPLIT-LABEL: system_one_as_acquire_fence:1962; GFX942-NOTTGSPLIT:       ; %bb.0: ; %entry1963; GFX942-NOTTGSPLIT-NEXT:    s_waitcnt vmcnt(0)1964; GFX942-NOTTGSPLIT-NEXT:    buffer_inv sc0 sc11965; GFX942-NOTTGSPLIT-NEXT:    s_endpgm1966;1967; GFX942-TGSPLIT-LABEL: system_one_as_acquire_fence:1968; GFX942-TGSPLIT:       ; %bb.0: ; %entry1969; GFX942-TGSPLIT-NEXT:    s_waitcnt vmcnt(0)1970; GFX942-TGSPLIT-NEXT:    buffer_inv sc0 sc11971; GFX942-TGSPLIT-NEXT:    s_endpgm1972;1973; GFX11-WGP-LABEL: system_one_as_acquire_fence:1974; GFX11-WGP:       ; %bb.0: ; %entry1975; GFX11-WGP-NEXT:    s_waitcnt vmcnt(0)1976; GFX11-WGP-NEXT:    s_waitcnt_vscnt null, 0x01977; GFX11-WGP-NEXT:    buffer_gl1_inv1978; GFX11-WGP-NEXT:    buffer_gl0_inv1979; GFX11-WGP-NEXT:    s_endpgm1980;1981; GFX11-CU-LABEL: system_one_as_acquire_fence:1982; GFX11-CU:       ; %bb.0: ; %entry1983; GFX11-CU-NEXT:    s_waitcnt vmcnt(0)1984; GFX11-CU-NEXT:    s_waitcnt_vscnt null, 0x01985; GFX11-CU-NEXT:    buffer_gl1_inv1986; GFX11-CU-NEXT:    buffer_gl0_inv1987; GFX11-CU-NEXT:    s_endpgm1988;1989; GFX12-WGP-LABEL: system_one_as_acquire_fence:1990; GFX12-WGP:       ; %bb.0: ; %entry1991; GFX12-WGP-NEXT:    s_wait_loadcnt 0x01992; GFX12-WGP-NEXT:    s_wait_storecnt 0x01993; GFX12-WGP-NEXT:    global_inv scope:SCOPE_SYS1994; GFX12-WGP-NEXT:    s_endpgm1995;1996; GFX12-CU-LABEL: system_one_as_acquire_fence:1997; GFX12-CU:       ; %bb.0: ; %entry1998; GFX12-CU-NEXT:    s_wait_loadcnt 0x01999; GFX12-CU-NEXT:    s_wait_storecnt 0x02000; GFX12-CU-NEXT:    global_inv scope:SCOPE_SYS2001; GFX12-CU-NEXT:    s_endpgm2002;2003; GFX1250-LABEL: system_one_as_acquire_fence:2004; GFX1250:       ; %bb.0: ; %entry2005; GFX1250-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_WAVE_MODE, 25, 1), 12006; GFX1250-NEXT:    s_wait_loadcnt 0x02007; GFX1250-NEXT:    s_wait_storecnt 0x02008; GFX1250-NEXT:    global_inv scope:SCOPE_SYS2009; GFX1250-NEXT:    s_endpgm2010entry:2011  fence syncscope("one-as") acquire, !mmra !{!"amdgpu-synchronize-as", !"global"}2012  ret void2013}2014 2015define amdgpu_kernel void @system_one_as_release_fence() {2016; GFX6-LABEL: system_one_as_release_fence:2017; GFX6:       ; %bb.0: ; %entry2018; GFX6-NEXT:    s_waitcnt vmcnt(0)2019; GFX6-NEXT:    s_endpgm2020;2021; GFX7-LABEL: system_one_as_release_fence:2022; GFX7:       ; %bb.0: ; %entry2023; GFX7-NEXT:    s_waitcnt vmcnt(0)2024; GFX7-NEXT:    s_endpgm2025;2026; GFX10-WGP-LABEL: system_one_as_release_fence:2027; GFX10-WGP:       ; %bb.0: ; %entry2028; GFX10-WGP-NEXT:    s_waitcnt vmcnt(0)2029; GFX10-WGP-NEXT:    s_waitcnt_vscnt null, 0x02030; GFX10-WGP-NEXT:    s_endpgm2031;2032; GFX10-CU-LABEL: system_one_as_release_fence:2033; GFX10-CU:       ; %bb.0: ; %entry2034; GFX10-CU-NEXT:    s_waitcnt vmcnt(0)2035; GFX10-CU-NEXT:    s_waitcnt_vscnt null, 0x02036; GFX10-CU-NEXT:    s_endpgm2037;2038; SKIP-CACHE-INV-LABEL: system_one_as_release_fence:2039; SKIP-CACHE-INV:       ; %bb.0: ; %entry2040; SKIP-CACHE-INV-NEXT:    s_waitcnt vmcnt(0)2041; SKIP-CACHE-INV-NEXT:    s_endpgm2042;2043; GFX90A-NOTTGSPLIT-LABEL: system_one_as_release_fence:2044; GFX90A-NOTTGSPLIT:       ; %bb.0: ; %entry2045; GFX90A-NOTTGSPLIT-NEXT:    buffer_wbl22046; GFX90A-NOTTGSPLIT-NEXT:    s_waitcnt vmcnt(0)2047; GFX90A-NOTTGSPLIT-NEXT:    s_endpgm2048;2049; GFX90A-TGSPLIT-LABEL: system_one_as_release_fence:2050; GFX90A-TGSPLIT:       ; %bb.0: ; %entry2051; GFX90A-TGSPLIT-NEXT:    buffer_wbl22052; GFX90A-TGSPLIT-NEXT:    s_waitcnt vmcnt(0)2053; GFX90A-TGSPLIT-NEXT:    s_endpgm2054;2055; GFX942-NOTTGSPLIT-LABEL: system_one_as_release_fence:2056; GFX942-NOTTGSPLIT:       ; %bb.0: ; %entry2057; GFX942-NOTTGSPLIT-NEXT:    buffer_wbl2 sc0 sc12058; GFX942-NOTTGSPLIT-NEXT:    s_waitcnt vmcnt(0)2059; GFX942-NOTTGSPLIT-NEXT:    s_endpgm2060;2061; GFX942-TGSPLIT-LABEL: system_one_as_release_fence:2062; GFX942-TGSPLIT:       ; %bb.0: ; %entry2063; GFX942-TGSPLIT-NEXT:    buffer_wbl2 sc0 sc12064; GFX942-TGSPLIT-NEXT:    s_waitcnt vmcnt(0)2065; GFX942-TGSPLIT-NEXT:    s_endpgm2066;2067; GFX11-WGP-LABEL: system_one_as_release_fence:2068; GFX11-WGP:       ; %bb.0: ; %entry2069; GFX11-WGP-NEXT:    s_waitcnt vmcnt(0)2070; GFX11-WGP-NEXT:    s_waitcnt_vscnt null, 0x02071; GFX11-WGP-NEXT:    s_endpgm2072;2073; GFX11-CU-LABEL: system_one_as_release_fence:2074; GFX11-CU:       ; %bb.0: ; %entry2075; GFX11-CU-NEXT:    s_waitcnt vmcnt(0)2076; GFX11-CU-NEXT:    s_waitcnt_vscnt null, 0x02077; GFX11-CU-NEXT:    s_endpgm2078;2079; GFX12-WGP-LABEL: system_one_as_release_fence:2080; GFX12-WGP:       ; %bb.0: ; %entry2081; GFX12-WGP-NEXT:    global_wb scope:SCOPE_SYS2082; GFX12-WGP-NEXT:    s_wait_bvhcnt 0x02083; GFX12-WGP-NEXT:    s_wait_samplecnt 0x02084; GFX12-WGP-NEXT:    s_wait_loadcnt 0x02085; GFX12-WGP-NEXT:    s_wait_storecnt 0x02086; GFX12-WGP-NEXT:    s_endpgm2087;2088; GFX12-CU-LABEL: system_one_as_release_fence:2089; GFX12-CU:       ; %bb.0: ; %entry2090; GFX12-CU-NEXT:    global_wb scope:SCOPE_SYS2091; GFX12-CU-NEXT:    s_wait_bvhcnt 0x02092; GFX12-CU-NEXT:    s_wait_samplecnt 0x02093; GFX12-CU-NEXT:    s_wait_loadcnt 0x02094; GFX12-CU-NEXT:    s_wait_storecnt 0x02095; GFX12-CU-NEXT:    s_endpgm2096;2097; GFX1250-LABEL: system_one_as_release_fence:2098; GFX1250:       ; %bb.0: ; %entry2099; GFX1250-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_WAVE_MODE, 25, 1), 12100; GFX1250-NEXT:    global_wb scope:SCOPE_SYS2101; GFX1250-NEXT:    s_wait_loadcnt 0x02102; GFX1250-NEXT:    s_wait_storecnt 0x02103; GFX1250-NEXT:    s_endpgm2104entry:2105  fence syncscope("one-as") release, !mmra !{!"amdgpu-synchronize-as", !"global"}2106  ret void2107}2108 2109define amdgpu_kernel void @system_one_as_acq_rel_fence() {2110; GFX6-LABEL: system_one_as_acq_rel_fence:2111; GFX6:       ; %bb.0: ; %entry2112; GFX6-NEXT:    s_waitcnt vmcnt(0)2113; GFX6-NEXT:    buffer_wbinvl12114; GFX6-NEXT:    s_endpgm2115;2116; GFX7-LABEL: system_one_as_acq_rel_fence:2117; GFX7:       ; %bb.0: ; %entry2118; GFX7-NEXT:    s_waitcnt vmcnt(0)2119; GFX7-NEXT:    buffer_wbinvl1_vol2120; GFX7-NEXT:    s_endpgm2121;2122; GFX10-WGP-LABEL: system_one_as_acq_rel_fence:2123; GFX10-WGP:       ; %bb.0: ; %entry2124; GFX10-WGP-NEXT:    s_waitcnt vmcnt(0)2125; GFX10-WGP-NEXT:    s_waitcnt_vscnt null, 0x02126; GFX10-WGP-NEXT:    buffer_gl1_inv2127; GFX10-WGP-NEXT:    buffer_gl0_inv2128; GFX10-WGP-NEXT:    s_endpgm2129;2130; GFX10-CU-LABEL: system_one_as_acq_rel_fence:2131; GFX10-CU:       ; %bb.0: ; %entry2132; GFX10-CU-NEXT:    s_waitcnt vmcnt(0)2133; GFX10-CU-NEXT:    s_waitcnt_vscnt null, 0x02134; GFX10-CU-NEXT:    buffer_gl1_inv2135; GFX10-CU-NEXT:    buffer_gl0_inv2136; GFX10-CU-NEXT:    s_endpgm2137;2138; SKIP-CACHE-INV-LABEL: system_one_as_acq_rel_fence:2139; SKIP-CACHE-INV:       ; %bb.0: ; %entry2140; SKIP-CACHE-INV-NEXT:    s_waitcnt vmcnt(0)2141; SKIP-CACHE-INV-NEXT:    s_endpgm2142;2143; GFX90A-NOTTGSPLIT-LABEL: system_one_as_acq_rel_fence:2144; GFX90A-NOTTGSPLIT:       ; %bb.0: ; %entry2145; GFX90A-NOTTGSPLIT-NEXT:    buffer_wbl22146; GFX90A-NOTTGSPLIT-NEXT:    s_waitcnt vmcnt(0)2147; GFX90A-NOTTGSPLIT-NEXT:    buffer_invl22148; GFX90A-NOTTGSPLIT-NEXT:    buffer_wbinvl1_vol2149; GFX90A-NOTTGSPLIT-NEXT:    s_endpgm2150;2151; GFX90A-TGSPLIT-LABEL: system_one_as_acq_rel_fence:2152; GFX90A-TGSPLIT:       ; %bb.0: ; %entry2153; GFX90A-TGSPLIT-NEXT:    buffer_wbl22154; GFX90A-TGSPLIT-NEXT:    s_waitcnt vmcnt(0)2155; GFX90A-TGSPLIT-NEXT:    buffer_invl22156; GFX90A-TGSPLIT-NEXT:    buffer_wbinvl1_vol2157; GFX90A-TGSPLIT-NEXT:    s_endpgm2158;2159; GFX942-NOTTGSPLIT-LABEL: system_one_as_acq_rel_fence:2160; GFX942-NOTTGSPLIT:       ; %bb.0: ; %entry2161; GFX942-NOTTGSPLIT-NEXT:    buffer_wbl2 sc0 sc12162; GFX942-NOTTGSPLIT-NEXT:    s_waitcnt vmcnt(0)2163; GFX942-NOTTGSPLIT-NEXT:    buffer_inv sc0 sc12164; GFX942-NOTTGSPLIT-NEXT:    s_endpgm2165;2166; GFX942-TGSPLIT-LABEL: system_one_as_acq_rel_fence:2167; GFX942-TGSPLIT:       ; %bb.0: ; %entry2168; GFX942-TGSPLIT-NEXT:    buffer_wbl2 sc0 sc12169; GFX942-TGSPLIT-NEXT:    s_waitcnt vmcnt(0)2170; GFX942-TGSPLIT-NEXT:    buffer_inv sc0 sc12171; GFX942-TGSPLIT-NEXT:    s_endpgm2172;2173; GFX11-WGP-LABEL: system_one_as_acq_rel_fence:2174; GFX11-WGP:       ; %bb.0: ; %entry2175; GFX11-WGP-NEXT:    s_waitcnt vmcnt(0)2176; GFX11-WGP-NEXT:    s_waitcnt_vscnt null, 0x02177; GFX11-WGP-NEXT:    buffer_gl1_inv2178; GFX11-WGP-NEXT:    buffer_gl0_inv2179; GFX11-WGP-NEXT:    s_endpgm2180;2181; GFX11-CU-LABEL: system_one_as_acq_rel_fence:2182; GFX11-CU:       ; %bb.0: ; %entry2183; GFX11-CU-NEXT:    s_waitcnt vmcnt(0)2184; GFX11-CU-NEXT:    s_waitcnt_vscnt null, 0x02185; GFX11-CU-NEXT:    buffer_gl1_inv2186; GFX11-CU-NEXT:    buffer_gl0_inv2187; GFX11-CU-NEXT:    s_endpgm2188;2189; GFX12-WGP-LABEL: system_one_as_acq_rel_fence:2190; GFX12-WGP:       ; %bb.0: ; %entry2191; GFX12-WGP-NEXT:    global_wb scope:SCOPE_SYS2192; GFX12-WGP-NEXT:    s_wait_bvhcnt 0x02193; GFX12-WGP-NEXT:    s_wait_samplecnt 0x02194; GFX12-WGP-NEXT:    s_wait_loadcnt 0x02195; GFX12-WGP-NEXT:    s_wait_storecnt 0x02196; GFX12-WGP-NEXT:    global_inv scope:SCOPE_SYS2197; GFX12-WGP-NEXT:    s_endpgm2198;2199; GFX12-CU-LABEL: system_one_as_acq_rel_fence:2200; GFX12-CU:       ; %bb.0: ; %entry2201; GFX12-CU-NEXT:    global_wb scope:SCOPE_SYS2202; GFX12-CU-NEXT:    s_wait_bvhcnt 0x02203; GFX12-CU-NEXT:    s_wait_samplecnt 0x02204; GFX12-CU-NEXT:    s_wait_loadcnt 0x02205; GFX12-CU-NEXT:    s_wait_storecnt 0x02206; GFX12-CU-NEXT:    global_inv scope:SCOPE_SYS2207; GFX12-CU-NEXT:    s_endpgm2208;2209; GFX1250-LABEL: system_one_as_acq_rel_fence:2210; GFX1250:       ; %bb.0: ; %entry2211; GFX1250-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_WAVE_MODE, 25, 1), 12212; GFX1250-NEXT:    global_wb scope:SCOPE_SYS2213; GFX1250-NEXT:    s_wait_loadcnt 0x02214; GFX1250-NEXT:    s_wait_storecnt 0x02215; GFX1250-NEXT:    global_inv scope:SCOPE_SYS2216; GFX1250-NEXT:    s_endpgm2217entry:2218  fence syncscope("one-as") acq_rel, !mmra !{!"amdgpu-synchronize-as", !"global"}2219  ret void2220}2221 2222define amdgpu_kernel void @system_one_as_seq_cst_fence() {2223; GFX6-LABEL: system_one_as_seq_cst_fence:2224; GFX6:       ; %bb.0: ; %entry2225; GFX6-NEXT:    s_waitcnt vmcnt(0)2226; GFX6-NEXT:    buffer_wbinvl12227; GFX6-NEXT:    s_endpgm2228;2229; GFX7-LABEL: system_one_as_seq_cst_fence:2230; GFX7:       ; %bb.0: ; %entry2231; GFX7-NEXT:    s_waitcnt vmcnt(0)2232; GFX7-NEXT:    buffer_wbinvl1_vol2233; GFX7-NEXT:    s_endpgm2234;2235; GFX10-WGP-LABEL: system_one_as_seq_cst_fence:2236; GFX10-WGP:       ; %bb.0: ; %entry2237; GFX10-WGP-NEXT:    s_waitcnt vmcnt(0)2238; GFX10-WGP-NEXT:    s_waitcnt_vscnt null, 0x02239; GFX10-WGP-NEXT:    buffer_gl1_inv2240; GFX10-WGP-NEXT:    buffer_gl0_inv2241; GFX10-WGP-NEXT:    s_endpgm2242;2243; GFX10-CU-LABEL: system_one_as_seq_cst_fence:2244; GFX10-CU:       ; %bb.0: ; %entry2245; GFX10-CU-NEXT:    s_waitcnt vmcnt(0)2246; GFX10-CU-NEXT:    s_waitcnt_vscnt null, 0x02247; GFX10-CU-NEXT:    buffer_gl1_inv2248; GFX10-CU-NEXT:    buffer_gl0_inv2249; GFX10-CU-NEXT:    s_endpgm2250;2251; SKIP-CACHE-INV-LABEL: system_one_as_seq_cst_fence:2252; SKIP-CACHE-INV:       ; %bb.0: ; %entry2253; SKIP-CACHE-INV-NEXT:    s_waitcnt vmcnt(0)2254; SKIP-CACHE-INV-NEXT:    s_endpgm2255;2256; GFX90A-NOTTGSPLIT-LABEL: system_one_as_seq_cst_fence:2257; GFX90A-NOTTGSPLIT:       ; %bb.0: ; %entry2258; GFX90A-NOTTGSPLIT-NEXT:    buffer_wbl22259; GFX90A-NOTTGSPLIT-NEXT:    s_waitcnt vmcnt(0)2260; GFX90A-NOTTGSPLIT-NEXT:    buffer_invl22261; GFX90A-NOTTGSPLIT-NEXT:    buffer_wbinvl1_vol2262; GFX90A-NOTTGSPLIT-NEXT:    s_endpgm2263;2264; GFX90A-TGSPLIT-LABEL: system_one_as_seq_cst_fence:2265; GFX90A-TGSPLIT:       ; %bb.0: ; %entry2266; GFX90A-TGSPLIT-NEXT:    buffer_wbl22267; GFX90A-TGSPLIT-NEXT:    s_waitcnt vmcnt(0)2268; GFX90A-TGSPLIT-NEXT:    buffer_invl22269; GFX90A-TGSPLIT-NEXT:    buffer_wbinvl1_vol2270; GFX90A-TGSPLIT-NEXT:    s_endpgm2271;2272; GFX942-NOTTGSPLIT-LABEL: system_one_as_seq_cst_fence:2273; GFX942-NOTTGSPLIT:       ; %bb.0: ; %entry2274; GFX942-NOTTGSPLIT-NEXT:    buffer_wbl2 sc0 sc12275; GFX942-NOTTGSPLIT-NEXT:    s_waitcnt vmcnt(0)2276; GFX942-NOTTGSPLIT-NEXT:    buffer_inv sc0 sc12277; GFX942-NOTTGSPLIT-NEXT:    s_endpgm2278;2279; GFX942-TGSPLIT-LABEL: system_one_as_seq_cst_fence:2280; GFX942-TGSPLIT:       ; %bb.0: ; %entry2281; GFX942-TGSPLIT-NEXT:    buffer_wbl2 sc0 sc12282; GFX942-TGSPLIT-NEXT:    s_waitcnt vmcnt(0)2283; GFX942-TGSPLIT-NEXT:    buffer_inv sc0 sc12284; GFX942-TGSPLIT-NEXT:    s_endpgm2285;2286; GFX11-WGP-LABEL: system_one_as_seq_cst_fence:2287; GFX11-WGP:       ; %bb.0: ; %entry2288; GFX11-WGP-NEXT:    s_waitcnt vmcnt(0)2289; GFX11-WGP-NEXT:    s_waitcnt_vscnt null, 0x02290; GFX11-WGP-NEXT:    buffer_gl1_inv2291; GFX11-WGP-NEXT:    buffer_gl0_inv2292; GFX11-WGP-NEXT:    s_endpgm2293;2294; GFX11-CU-LABEL: system_one_as_seq_cst_fence:2295; GFX11-CU:       ; %bb.0: ; %entry2296; GFX11-CU-NEXT:    s_waitcnt vmcnt(0)2297; GFX11-CU-NEXT:    s_waitcnt_vscnt null, 0x02298; GFX11-CU-NEXT:    buffer_gl1_inv2299; GFX11-CU-NEXT:    buffer_gl0_inv2300; GFX11-CU-NEXT:    s_endpgm2301;2302; GFX12-WGP-LABEL: system_one_as_seq_cst_fence:2303; GFX12-WGP:       ; %bb.0: ; %entry2304; GFX12-WGP-NEXT:    global_wb scope:SCOPE_SYS2305; GFX12-WGP-NEXT:    s_wait_bvhcnt 0x02306; GFX12-WGP-NEXT:    s_wait_samplecnt 0x02307; GFX12-WGP-NEXT:    s_wait_loadcnt 0x02308; GFX12-WGP-NEXT:    s_wait_storecnt 0x02309; GFX12-WGP-NEXT:    global_inv scope:SCOPE_SYS2310; GFX12-WGP-NEXT:    s_endpgm2311;2312; GFX12-CU-LABEL: system_one_as_seq_cst_fence:2313; GFX12-CU:       ; %bb.0: ; %entry2314; GFX12-CU-NEXT:    global_wb scope:SCOPE_SYS2315; GFX12-CU-NEXT:    s_wait_bvhcnt 0x02316; GFX12-CU-NEXT:    s_wait_samplecnt 0x02317; GFX12-CU-NEXT:    s_wait_loadcnt 0x02318; GFX12-CU-NEXT:    s_wait_storecnt 0x02319; GFX12-CU-NEXT:    global_inv scope:SCOPE_SYS2320; GFX12-CU-NEXT:    s_endpgm2321;2322; GFX1250-LABEL: system_one_as_seq_cst_fence:2323; GFX1250:       ; %bb.0: ; %entry2324; GFX1250-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_WAVE_MODE, 25, 1), 12325; GFX1250-NEXT:    global_wb scope:SCOPE_SYS2326; GFX1250-NEXT:    s_wait_loadcnt 0x02327; GFX1250-NEXT:    s_wait_storecnt 0x02328; GFX1250-NEXT:    global_inv scope:SCOPE_SYS2329; GFX1250-NEXT:    s_endpgm2330entry:2331  fence syncscope("one-as") seq_cst, !mmra !{!"amdgpu-synchronize-as", !"global"}2332  ret void2333}2334