brintos

brintos / llvm-project-archived public Read only

0
0
Text · 30.3 KiB · c7adf2a Raw
730 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=amdgcn-amd- -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=gfx1100 < %s | FileCheck --check-prefixes=GFX11-WGP %s8; RUN: llc -mtriple=amdgcn-amd-amdhsa -O0 -mcpu=gfx1100 -mattr=+cumode < %s | FileCheck --check-prefixes=GFX11-CU %s9; RUN: llc -mtriple=amdgcn-amd-amdhsa -O0 -mcpu=gfx1200 < %s | FileCheck --check-prefixes=GFX12-WGP %s10; RUN: llc -mtriple=amdgcn-amd-amdhsa -O0 -mcpu=gfx1200 -mattr=+cumode < %s | FileCheck --check-prefixes=GFX12-CU %s11; RUN: llc -mtriple=amdgcn-amd-amdhsa -O0 -mcpu=gfx1250 < %s | FileCheck --check-prefixes=GFX1250 %s12 13define amdgpu_kernel void @private_volatile_load_0(14; GFX6-LABEL: private_volatile_load_0:15; GFX6:       ; %bb.0: ; %entry16; GFX6-NEXT:    s_mov_b32 s12, SCRATCH_RSRC_DWORD017; GFX6-NEXT:    s_mov_b32 s13, SCRATCH_RSRC_DWORD118; GFX6-NEXT:    s_mov_b32 s14, -119; GFX6-NEXT:    s_mov_b32 s15, 0xe8f00020; GFX6-NEXT:    s_add_u32 s12, s12, s1121; GFX6-NEXT:    s_addc_u32 s13, s13, 022; GFX6-NEXT:    s_mov_b64 s[0:1], s[4:5]23; GFX6-NEXT:    s_load_dword s4, s[0:1], 0x924; GFX6-NEXT:    s_load_dwordx2 s[0:1], s[0:1], 0xb25; GFX6-NEXT:    s_waitcnt lgkmcnt(0)26; GFX6-NEXT:    s_mov_b32 s7, s127; GFX6-NEXT:    ; kill: def $sgpr0 killed $sgpr0 killed $sgpr0_sgpr128; GFX6-NEXT:    s_mov_b32 s5, 0xf00029; GFX6-NEXT:    s_mov_b32 s6, -130; GFX6-NEXT:    ; kill: def $sgpr0 killed $sgpr0 def $sgpr0_sgpr1_sgpr2_sgpr331; GFX6-NEXT:    s_mov_b32 s1, s732; GFX6-NEXT:    s_mov_b32 s2, s633; GFX6-NEXT:    s_mov_b32 s3, s534; GFX6-NEXT:    v_mov_b32_e32 v0, s435; GFX6-NEXT:    buffer_load_dword v0, v0, s[12:15], 0 offen glc36; GFX6-NEXT:    s_waitcnt vmcnt(0)37; GFX6-NEXT:    buffer_store_dword v0, off, s[0:3], 038; GFX6-NEXT:    s_endpgm39;40; GFX7-LABEL: private_volatile_load_0:41; GFX7:       ; %bb.0: ; %entry42; GFX7-NEXT:    s_mov_b32 flat_scratch_lo, s1343; GFX7-NEXT:    s_add_i32 s12, s12, s1744; GFX7-NEXT:    s_lshr_b32 flat_scratch_hi, s12, 845; GFX7-NEXT:    s_add_u32 s0, s0, s1746; GFX7-NEXT:    s_addc_u32 s1, s1, 047; GFX7-NEXT:    s_load_dword s6, s[8:9], 0x048; GFX7-NEXT:    s_load_dwordx2 s[4:5], s[8:9], 0x249; GFX7-NEXT:    s_waitcnt lgkmcnt(0)50; GFX7-NEXT:    v_mov_b32_e32 v0, s651; GFX7-NEXT:    buffer_load_dword v2, v0, s[0:3], 0 offen glc52; GFX7-NEXT:    s_waitcnt vmcnt(0)53; GFX7-NEXT:    v_mov_b32_e32 v0, s454; GFX7-NEXT:    v_mov_b32_e32 v1, s555; GFX7-NEXT:    flat_store_dword v[0:1], v256; GFX7-NEXT:    s_endpgm57;58; GFX10-WGP-LABEL: private_volatile_load_0:59; GFX10-WGP:       ; %bb.0: ; %entry60; GFX10-WGP-NEXT:    s_add_u32 s0, s0, s1761; GFX10-WGP-NEXT:    s_addc_u32 s1, s1, 062; GFX10-WGP-NEXT:    s_load_dword s6, s[8:9], 0x063; GFX10-WGP-NEXT:    s_load_dwordx2 s[4:5], s[8:9], 0x864; GFX10-WGP-NEXT:    v_mov_b32_e32 v0, 065; GFX10-WGP-NEXT:    s_waitcnt lgkmcnt(0)66; GFX10-WGP-NEXT:    v_mov_b32_e32 v1, s667; GFX10-WGP-NEXT:    buffer_load_dword v1, v1, s[0:3], 0 offen glc dlc68; GFX10-WGP-NEXT:    s_waitcnt vmcnt(0)69; GFX10-WGP-NEXT:    global_store_dword v0, v1, s[4:5]70; GFX10-WGP-NEXT:    s_endpgm71;72; GFX10-CU-LABEL: private_volatile_load_0:73; GFX10-CU:       ; %bb.0: ; %entry74; GFX10-CU-NEXT:    s_add_u32 s0, s0, s1775; GFX10-CU-NEXT:    s_addc_u32 s1, s1, 076; GFX10-CU-NEXT:    s_load_dword s6, s[8:9], 0x077; GFX10-CU-NEXT:    s_load_dwordx2 s[4:5], s[8:9], 0x878; GFX10-CU-NEXT:    v_mov_b32_e32 v0, 079; GFX10-CU-NEXT:    s_waitcnt lgkmcnt(0)80; GFX10-CU-NEXT:    v_mov_b32_e32 v1, s681; GFX10-CU-NEXT:    buffer_load_dword v1, v1, s[0:3], 0 offen glc dlc82; GFX10-CU-NEXT:    s_waitcnt vmcnt(0)83; GFX10-CU-NEXT:    global_store_dword v0, v1, s[4:5]84; GFX10-CU-NEXT:    s_endpgm85;86; SKIP-CACHE-INV-LABEL: private_volatile_load_0:87; SKIP-CACHE-INV:       ; %bb.0: ; %entry88; SKIP-CACHE-INV-NEXT:    s_getpc_b64 s[12:13]89; SKIP-CACHE-INV-NEXT:    s_mov_b32 s12, s090; SKIP-CACHE-INV-NEXT:    s_load_dwordx4 s[12:15], s[12:13], 0x091; SKIP-CACHE-INV-NEXT:    s_waitcnt lgkmcnt(0)92; SKIP-CACHE-INV-NEXT:    s_add_u32 s12, s12, s1193; SKIP-CACHE-INV-NEXT:    s_addc_u32 s13, s13, 094; SKIP-CACHE-INV-NEXT:    s_mov_b64 s[0:1], s[4:5]95; SKIP-CACHE-INV-NEXT:    s_load_dword s4, s[0:1], 0x096; SKIP-CACHE-INV-NEXT:    s_load_dwordx2 s[0:1], s[0:1], 0x297; SKIP-CACHE-INV-NEXT:    s_waitcnt lgkmcnt(0)98; SKIP-CACHE-INV-NEXT:    s_mov_b32 s7, s199; SKIP-CACHE-INV-NEXT:    ; kill: def $sgpr0 killed $sgpr0 killed $sgpr0_sgpr1100; SKIP-CACHE-INV-NEXT:    s_mov_b32 s5, 0xf000101; SKIP-CACHE-INV-NEXT:    s_mov_b32 s6, -1102; SKIP-CACHE-INV-NEXT:    ; kill: def $sgpr0 killed $sgpr0 def $sgpr0_sgpr1_sgpr2_sgpr3103; SKIP-CACHE-INV-NEXT:    s_mov_b32 s1, s7104; SKIP-CACHE-INV-NEXT:    s_mov_b32 s2, s6105; SKIP-CACHE-INV-NEXT:    s_mov_b32 s3, s5106; SKIP-CACHE-INV-NEXT:    v_mov_b32_e32 v0, s4107; SKIP-CACHE-INV-NEXT:    buffer_load_dword v0, v0, s[12:15], 0 offen glc108; SKIP-CACHE-INV-NEXT:    s_waitcnt vmcnt(0)109; SKIP-CACHE-INV-NEXT:    buffer_store_dword v0, off, s[0:3], 0110; SKIP-CACHE-INV-NEXT:    s_endpgm111;112; GFX11-WGP-LABEL: private_volatile_load_0:113; GFX11-WGP:       ; %bb.0: ; %entry114; GFX11-WGP-NEXT:    s_load_b32 s2, s[4:5], 0x0115; GFX11-WGP-NEXT:    s_load_b64 s[0:1], s[4:5], 0x8116; GFX11-WGP-NEXT:    v_mov_b32_e32 v0, 0117; GFX11-WGP-NEXT:    s_waitcnt lgkmcnt(0)118; GFX11-WGP-NEXT:    scratch_load_b32 v1, off, s2 glc dlc119; GFX11-WGP-NEXT:    s_waitcnt vmcnt(0)120; GFX11-WGP-NEXT:    global_store_b32 v0, v1, s[0:1]121; GFX11-WGP-NEXT:    s_endpgm122;123; GFX11-CU-LABEL: private_volatile_load_0:124; GFX11-CU:       ; %bb.0: ; %entry125; GFX11-CU-NEXT:    s_load_b32 s2, s[4:5], 0x0126; GFX11-CU-NEXT:    s_load_b64 s[0:1], s[4:5], 0x8127; GFX11-CU-NEXT:    v_mov_b32_e32 v0, 0128; GFX11-CU-NEXT:    s_waitcnt lgkmcnt(0)129; GFX11-CU-NEXT:    scratch_load_b32 v1, off, s2 glc dlc130; GFX11-CU-NEXT:    s_waitcnt vmcnt(0)131; GFX11-CU-NEXT:    global_store_b32 v0, v1, s[0:1]132; GFX11-CU-NEXT:    s_endpgm133;134; GFX12-WGP-LABEL: private_volatile_load_0:135; GFX12-WGP:       ; %bb.0: ; %entry136; GFX12-WGP-NEXT:    s_load_b32 s2, s[4:5], 0x0137; GFX12-WGP-NEXT:    s_load_b64 s[0:1], s[4:5], 0x8138; GFX12-WGP-NEXT:    v_mov_b32_e32 v0, 0139; GFX12-WGP-NEXT:    s_wait_kmcnt 0x0140; GFX12-WGP-NEXT:    scratch_load_b32 v1, off, s2 scope:SCOPE_SYS141; GFX12-WGP-NEXT:    s_wait_bvhcnt 0x0142; GFX12-WGP-NEXT:    s_wait_samplecnt 0x0143; GFX12-WGP-NEXT:    s_wait_loadcnt 0x0144; GFX12-WGP-NEXT:    global_store_b32 v0, v1, s[0:1]145; GFX12-WGP-NEXT:    s_endpgm146;147; GFX12-CU-LABEL: private_volatile_load_0:148; GFX12-CU:       ; %bb.0: ; %entry149; GFX12-CU-NEXT:    s_load_b32 s2, s[4:5], 0x0150; GFX12-CU-NEXT:    s_load_b64 s[0:1], s[4:5], 0x8151; GFX12-CU-NEXT:    v_mov_b32_e32 v0, 0152; GFX12-CU-NEXT:    s_wait_kmcnt 0x0153; GFX12-CU-NEXT:    scratch_load_b32 v1, off, s2 scope:SCOPE_SYS154; GFX12-CU-NEXT:    s_wait_bvhcnt 0x0155; GFX12-CU-NEXT:    s_wait_samplecnt 0x0156; GFX12-CU-NEXT:    s_wait_loadcnt 0x0157; GFX12-CU-NEXT:    global_store_b32 v0, v1, s[0:1]158; GFX12-CU-NEXT:    s_endpgm159;160; GFX1250-LABEL: private_volatile_load_0:161; GFX1250:       ; %bb.0: ; %entry162; GFX1250-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_WAVE_MODE, 25, 1), 1163; GFX1250-NEXT:    s_load_b32 s2, s[4:5], 0x0164; GFX1250-NEXT:    s_load_b64 s[0:1], s[4:5], 0x8165; GFX1250-NEXT:    v_mov_b32_e32 v0, 0166; GFX1250-NEXT:    s_wait_xcnt 0x0167; GFX1250-NEXT:    s_wait_kmcnt 0x0168; GFX1250-NEXT:    scratch_load_b32 v1, off, s2 scope:SCOPE_SYS169; GFX1250-NEXT:    s_wait_loadcnt 0x0170; GFX1250-NEXT:    global_store_b32 v0, v1, s[0:1]171; GFX1250-NEXT:    s_endpgm172    ptr addrspace(5) %in, ptr addrspace(1) %out) {173entry:174  %val = load volatile i32, ptr addrspace(5) %in, align 4175  store i32 %val, ptr addrspace(1) %out176  ret void177}178 179define amdgpu_kernel void @private_volatile_load_1(180; GFX6-LABEL: private_volatile_load_1:181; GFX6:       ; %bb.0: ; %entry182; GFX6-NEXT:    s_mov_b32 s12, SCRATCH_RSRC_DWORD0183; GFX6-NEXT:    s_mov_b32 s13, SCRATCH_RSRC_DWORD1184; GFX6-NEXT:    s_mov_b32 s14, -1185; GFX6-NEXT:    s_mov_b32 s15, 0xe8f000186; GFX6-NEXT:    s_add_u32 s12, s12, s11187; GFX6-NEXT:    s_addc_u32 s13, s13, 0188; GFX6-NEXT:    s_mov_b64 s[0:1], s[4:5]189; GFX6-NEXT:    s_load_dword s4, s[0:1], 0x9190; GFX6-NEXT:    s_load_dwordx2 s[0:1], s[0:1], 0xb191; GFX6-NEXT:    s_waitcnt lgkmcnt(0)192; GFX6-NEXT:    s_mov_b32 s7, s1193; GFX6-NEXT:    ; kill: def $sgpr0 killed $sgpr0 killed $sgpr0_sgpr1194; GFX6-NEXT:    s_mov_b32 s5, 0xf000195; GFX6-NEXT:    s_mov_b32 s6, -1196; GFX6-NEXT:    ; kill: def $sgpr0 killed $sgpr0 def $sgpr0_sgpr1_sgpr2_sgpr3197; GFX6-NEXT:    s_mov_b32 s1, s7198; GFX6-NEXT:    s_mov_b32 s2, s6199; GFX6-NEXT:    s_mov_b32 s3, s5200; GFX6-NEXT:    s_mov_b32 s5, 2201; GFX6-NEXT:    v_lshlrev_b32_e64 v0, s5, v0202; GFX6-NEXT:    v_add_i32_e64 v0, s[4:5], s4, v0203; GFX6-NEXT:    buffer_load_dword v0, v0, s[12:15], 0 offen glc204; GFX6-NEXT:    s_waitcnt vmcnt(0)205; GFX6-NEXT:    buffer_store_dword v0, off, s[0:3], 0206; GFX6-NEXT:    s_endpgm207;208; GFX7-LABEL: private_volatile_load_1:209; GFX7:       ; %bb.0: ; %entry210; GFX7-NEXT:    s_mov_b32 flat_scratch_lo, s13211; GFX7-NEXT:    s_add_i32 s12, s12, s17212; GFX7-NEXT:    s_lshr_b32 flat_scratch_hi, s12, 8213; GFX7-NEXT:    s_add_u32 s0, s0, s17214; GFX7-NEXT:    s_addc_u32 s1, s1, 0215; GFX7-NEXT:    s_load_dword s6, s[8:9], 0x0216; GFX7-NEXT:    s_load_dwordx2 s[4:5], s[8:9], 0x2217; GFX7-NEXT:    s_mov_b32 s7, 2218; GFX7-NEXT:    v_lshlrev_b32_e64 v0, s7, v0219; GFX7-NEXT:    s_waitcnt lgkmcnt(0)220; GFX7-NEXT:    v_add_i32_e64 v0, s[6:7], s6, v0221; GFX7-NEXT:    buffer_load_dword v2, v0, s[0:3], 0 offen glc222; GFX7-NEXT:    s_waitcnt vmcnt(0)223; GFX7-NEXT:    v_mov_b32_e32 v0, s4224; GFX7-NEXT:    v_mov_b32_e32 v1, s5225; GFX7-NEXT:    flat_store_dword v[0:1], v2226; GFX7-NEXT:    s_endpgm227;228; GFX10-WGP-LABEL: private_volatile_load_1:229; GFX10-WGP:       ; %bb.0: ; %entry230; GFX10-WGP-NEXT:    s_add_u32 s0, s0, s17231; GFX10-WGP-NEXT:    s_addc_u32 s1, s1, 0232; GFX10-WGP-NEXT:    v_mov_b32_e32 v1, v0233; GFX10-WGP-NEXT:    s_load_dword s6, s[8:9], 0x0234; GFX10-WGP-NEXT:    s_load_dwordx2 s[4:5], s[8:9], 0x8235; GFX10-WGP-NEXT:    v_mov_b32_e32 v0, 0236; GFX10-WGP-NEXT:    s_waitcnt lgkmcnt(0)237; GFX10-WGP-NEXT:    v_lshl_add_u32 v1, v1, 2, s6238; GFX10-WGP-NEXT:    buffer_load_dword v1, v1, s[0:3], 0 offen glc dlc239; GFX10-WGP-NEXT:    s_waitcnt vmcnt(0)240; GFX10-WGP-NEXT:    global_store_dword v0, v1, s[4:5]241; GFX10-WGP-NEXT:    s_endpgm242;243; GFX10-CU-LABEL: private_volatile_load_1:244; GFX10-CU:       ; %bb.0: ; %entry245; GFX10-CU-NEXT:    s_add_u32 s0, s0, s17246; GFX10-CU-NEXT:    s_addc_u32 s1, s1, 0247; GFX10-CU-NEXT:    v_mov_b32_e32 v1, v0248; GFX10-CU-NEXT:    s_load_dword s6, s[8:9], 0x0249; GFX10-CU-NEXT:    s_load_dwordx2 s[4:5], s[8:9], 0x8250; GFX10-CU-NEXT:    v_mov_b32_e32 v0, 0251; GFX10-CU-NEXT:    s_waitcnt lgkmcnt(0)252; GFX10-CU-NEXT:    v_lshl_add_u32 v1, v1, 2, s6253; GFX10-CU-NEXT:    buffer_load_dword v1, v1, s[0:3], 0 offen glc dlc254; GFX10-CU-NEXT:    s_waitcnt vmcnt(0)255; GFX10-CU-NEXT:    global_store_dword v0, v1, s[4:5]256; GFX10-CU-NEXT:    s_endpgm257;258; SKIP-CACHE-INV-LABEL: private_volatile_load_1:259; SKIP-CACHE-INV:       ; %bb.0: ; %entry260; SKIP-CACHE-INV-NEXT:    s_getpc_b64 s[12:13]261; SKIP-CACHE-INV-NEXT:    s_mov_b32 s12, s0262; SKIP-CACHE-INV-NEXT:    s_load_dwordx4 s[12:15], s[12:13], 0x0263; SKIP-CACHE-INV-NEXT:    s_waitcnt lgkmcnt(0)264; SKIP-CACHE-INV-NEXT:    s_add_u32 s12, s12, s11265; SKIP-CACHE-INV-NEXT:    s_addc_u32 s13, s13, 0266; SKIP-CACHE-INV-NEXT:    s_mov_b64 s[0:1], s[4:5]267; SKIP-CACHE-INV-NEXT:    s_load_dword s4, s[0:1], 0x0268; SKIP-CACHE-INV-NEXT:    s_load_dwordx2 s[0:1], s[0:1], 0x2269; SKIP-CACHE-INV-NEXT:    s_waitcnt lgkmcnt(0)270; SKIP-CACHE-INV-NEXT:    s_mov_b32 s7, s1271; SKIP-CACHE-INV-NEXT:    ; kill: def $sgpr0 killed $sgpr0 killed $sgpr0_sgpr1272; SKIP-CACHE-INV-NEXT:    s_mov_b32 s5, 0xf000273; SKIP-CACHE-INV-NEXT:    s_mov_b32 s6, -1274; SKIP-CACHE-INV-NEXT:    ; kill: def $sgpr0 killed $sgpr0 def $sgpr0_sgpr1_sgpr2_sgpr3275; SKIP-CACHE-INV-NEXT:    s_mov_b32 s1, s7276; SKIP-CACHE-INV-NEXT:    s_mov_b32 s2, s6277; SKIP-CACHE-INV-NEXT:    s_mov_b32 s3, s5278; SKIP-CACHE-INV-NEXT:    s_mov_b32 s5, 2279; SKIP-CACHE-INV-NEXT:    v_lshlrev_b32_e64 v0, s5, v0280; SKIP-CACHE-INV-NEXT:    v_add_i32_e64 v0, s[4:5], s4, v0281; SKIP-CACHE-INV-NEXT:    buffer_load_dword v0, v0, s[12:15], 0 offen glc282; SKIP-CACHE-INV-NEXT:    s_waitcnt vmcnt(0)283; SKIP-CACHE-INV-NEXT:    buffer_store_dword v0, off, s[0:3], 0284; SKIP-CACHE-INV-NEXT:    s_endpgm285;286; GFX11-WGP-LABEL: private_volatile_load_1:287; GFX11-WGP:       ; %bb.0: ; %entry288; GFX11-WGP-NEXT:    v_mov_b32_e32 v1, v0289; GFX11-WGP-NEXT:    s_load_b32 s2, s[4:5], 0x0290; GFX11-WGP-NEXT:    s_load_b64 s[0:1], s[4:5], 0x8291; GFX11-WGP-NEXT:    v_mov_b32_e32 v0, 0292; GFX11-WGP-NEXT:    s_mov_b32 s3, 0x3ff293; GFX11-WGP-NEXT:    v_and_b32_e64 v1, v1, s3294; GFX11-WGP-NEXT:    s_waitcnt lgkmcnt(0)295; GFX11-WGP-NEXT:    v_lshl_add_u32 v1, v1, 2, s2296; GFX11-WGP-NEXT:    scratch_load_b32 v1, v1, off glc dlc297; GFX11-WGP-NEXT:    s_waitcnt vmcnt(0)298; GFX11-WGP-NEXT:    global_store_b32 v0, v1, s[0:1]299; GFX11-WGP-NEXT:    s_endpgm300;301; GFX11-CU-LABEL: private_volatile_load_1:302; GFX11-CU:       ; %bb.0: ; %entry303; GFX11-CU-NEXT:    v_mov_b32_e32 v1, v0304; GFX11-CU-NEXT:    s_load_b32 s2, s[4:5], 0x0305; GFX11-CU-NEXT:    s_load_b64 s[0:1], s[4:5], 0x8306; GFX11-CU-NEXT:    v_mov_b32_e32 v0, 0307; GFX11-CU-NEXT:    s_mov_b32 s3, 0x3ff308; GFX11-CU-NEXT:    v_and_b32_e64 v1, v1, s3309; GFX11-CU-NEXT:    s_waitcnt lgkmcnt(0)310; GFX11-CU-NEXT:    v_lshl_add_u32 v1, v1, 2, s2311; GFX11-CU-NEXT:    scratch_load_b32 v1, v1, off glc dlc312; GFX11-CU-NEXT:    s_waitcnt vmcnt(0)313; GFX11-CU-NEXT:    global_store_b32 v0, v1, s[0:1]314; GFX11-CU-NEXT:    s_endpgm315;316; GFX12-WGP-LABEL: private_volatile_load_1:317; GFX12-WGP:       ; %bb.0: ; %entry318; GFX12-WGP-NEXT:    v_mov_b32_e32 v1, v0319; GFX12-WGP-NEXT:    s_load_b32 s2, s[4:5], 0x0320; GFX12-WGP-NEXT:    s_load_b64 s[0:1], s[4:5], 0x8321; GFX12-WGP-NEXT:    v_mov_b32_e32 v0, 0322; GFX12-WGP-NEXT:    s_mov_b32 s3, 0x3ff323; GFX12-WGP-NEXT:    v_and_b32_e64 v1, v1, s3324; GFX12-WGP-NEXT:    s_mov_b32 s3, 2325; GFX12-WGP-NEXT:    s_wait_alu depctr_sa_sdst(0)326; GFX12-WGP-NEXT:    v_lshlrev_b32_e64 v1, s3, v1327; GFX12-WGP-NEXT:    s_wait_kmcnt 0x0328; GFX12-WGP-NEXT:    scratch_load_b32 v1, v1, s2 scope:SCOPE_SYS329; GFX12-WGP-NEXT:    s_wait_bvhcnt 0x0330; GFX12-WGP-NEXT:    s_wait_samplecnt 0x0331; GFX12-WGP-NEXT:    s_wait_loadcnt 0x0332; GFX12-WGP-NEXT:    global_store_b32 v0, v1, s[0:1]333; GFX12-WGP-NEXT:    s_endpgm334;335; GFX12-CU-LABEL: private_volatile_load_1:336; GFX12-CU:       ; %bb.0: ; %entry337; GFX12-CU-NEXT:    v_mov_b32_e32 v1, v0338; GFX12-CU-NEXT:    s_load_b32 s2, s[4:5], 0x0339; GFX12-CU-NEXT:    s_load_b64 s[0:1], s[4:5], 0x8340; GFX12-CU-NEXT:    v_mov_b32_e32 v0, 0341; GFX12-CU-NEXT:    s_mov_b32 s3, 0x3ff342; GFX12-CU-NEXT:    v_and_b32_e64 v1, v1, s3343; GFX12-CU-NEXT:    s_mov_b32 s3, 2344; GFX12-CU-NEXT:    s_wait_alu depctr_sa_sdst(0)345; GFX12-CU-NEXT:    v_lshlrev_b32_e64 v1, s3, v1346; GFX12-CU-NEXT:    s_wait_kmcnt 0x0347; GFX12-CU-NEXT:    scratch_load_b32 v1, v1, s2 scope:SCOPE_SYS348; GFX12-CU-NEXT:    s_wait_bvhcnt 0x0349; GFX12-CU-NEXT:    s_wait_samplecnt 0x0350; GFX12-CU-NEXT:    s_wait_loadcnt 0x0351; GFX12-CU-NEXT:    global_store_b32 v0, v1, s[0:1]352; GFX12-CU-NEXT:    s_endpgm353;354; GFX1250-LABEL: private_volatile_load_1:355; GFX1250:       ; %bb.0: ; %entry356; GFX1250-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_WAVE_MODE, 25, 1), 1357; GFX1250-NEXT:    v_mov_b32_e32 v1, v0358; GFX1250-NEXT:    s_load_b32 s2, s[4:5], 0x0359; GFX1250-NEXT:    s_load_b64 s[0:1], s[4:5], 0x8360; GFX1250-NEXT:    v_mov_b32_e32 v0, 0361; GFX1250-NEXT:    s_mov_b32 s3, 0x3ff362; GFX1250-NEXT:    v_and_b32_e64 v1, v1, s3363; GFX1250-NEXT:    s_wait_xcnt 0x0364; GFX1250-NEXT:    s_wait_kmcnt 0x0365; GFX1250-NEXT:    scratch_load_b32 v1, v1, s2 scale_offset scope:SCOPE_SYS366; GFX1250-NEXT:    s_wait_loadcnt 0x0367; GFX1250-NEXT:    global_store_b32 v0, v1, s[0:1]368; GFX1250-NEXT:    s_endpgm369    ptr addrspace(5) %in, ptr addrspace(1) %out) {370entry:371  %tid = call i32 @llvm.amdgcn.workitem.id.x()372  %val.gep = getelementptr inbounds i32, ptr addrspace(5) %in, i32 %tid373  %val = load volatile i32, ptr addrspace(5) %val.gep, align 4374  store i32 %val, ptr addrspace(1) %out375  ret void376}377 378define amdgpu_kernel void @private_volatile_store_0(379; GFX6-LABEL: private_volatile_store_0:380; GFX6:       ; %bb.0: ; %entry381; GFX6-NEXT:    s_mov_b32 s12, SCRATCH_RSRC_DWORD0382; GFX6-NEXT:    s_mov_b32 s13, SCRATCH_RSRC_DWORD1383; GFX6-NEXT:    s_mov_b32 s14, -1384; GFX6-NEXT:    s_mov_b32 s15, 0xe8f000385; GFX6-NEXT:    s_add_u32 s12, s12, s11386; GFX6-NEXT:    s_addc_u32 s13, s13, 0387; GFX6-NEXT:    s_load_dwordx2 s[2:3], s[4:5], 0x9388; GFX6-NEXT:    s_load_dword s0, s[4:5], 0xb389; GFX6-NEXT:    s_waitcnt lgkmcnt(0)390; GFX6-NEXT:    s_load_dword s1, s[2:3], 0x0391; GFX6-NEXT:    s_waitcnt lgkmcnt(0)392; GFX6-NEXT:    v_mov_b32_e32 v0, s1393; GFX6-NEXT:    v_mov_b32_e32 v1, s0394; GFX6-NEXT:    buffer_store_dword v0, v1, s[12:15], 0 offen395; GFX6-NEXT:    s_waitcnt vmcnt(0)396; GFX6-NEXT:    s_endpgm397;398; GFX7-LABEL: private_volatile_store_0:399; GFX7:       ; %bb.0: ; %entry400; GFX7-NEXT:    s_add_u32 s0, s0, s17401; GFX7-NEXT:    s_addc_u32 s1, s1, 0402; GFX7-NEXT:    s_load_dwordx2 s[6:7], s[8:9], 0x0403; GFX7-NEXT:    s_load_dword s4, s[8:9], 0x2404; GFX7-NEXT:    s_waitcnt lgkmcnt(0)405; GFX7-NEXT:    s_load_dword s5, s[6:7], 0x0406; GFX7-NEXT:    s_waitcnt lgkmcnt(0)407; GFX7-NEXT:    v_mov_b32_e32 v0, s5408; GFX7-NEXT:    v_mov_b32_e32 v1, s4409; GFX7-NEXT:    buffer_store_dword v0, v1, s[0:3], 0 offen410; GFX7-NEXT:    s_waitcnt vmcnt(0)411; GFX7-NEXT:    s_endpgm412;413; GFX10-WGP-LABEL: private_volatile_store_0:414; GFX10-WGP:       ; %bb.0: ; %entry415; GFX10-WGP-NEXT:    s_add_u32 s0, s0, s17416; GFX10-WGP-NEXT:    s_addc_u32 s1, s1, 0417; GFX10-WGP-NEXT:    s_load_dwordx2 s[6:7], s[8:9], 0x0418; GFX10-WGP-NEXT:    s_load_dword s4, s[8:9], 0x8419; GFX10-WGP-NEXT:    s_waitcnt lgkmcnt(0)420; GFX10-WGP-NEXT:    s_load_dword s5, s[6:7], 0x0421; GFX10-WGP-NEXT:    s_waitcnt lgkmcnt(0)422; GFX10-WGP-NEXT:    v_mov_b32_e32 v0, s5423; GFX10-WGP-NEXT:    v_mov_b32_e32 v1, s4424; GFX10-WGP-NEXT:    buffer_store_dword v0, v1, s[0:3], 0 offen425; GFX10-WGP-NEXT:    s_waitcnt_vscnt null, 0x0426; GFX10-WGP-NEXT:    s_endpgm427;428; GFX10-CU-LABEL: private_volatile_store_0:429; GFX10-CU:       ; %bb.0: ; %entry430; GFX10-CU-NEXT:    s_add_u32 s0, s0, s17431; GFX10-CU-NEXT:    s_addc_u32 s1, s1, 0432; GFX10-CU-NEXT:    s_load_dwordx2 s[6:7], s[8:9], 0x0433; GFX10-CU-NEXT:    s_load_dword s4, s[8:9], 0x8434; GFX10-CU-NEXT:    s_waitcnt lgkmcnt(0)435; GFX10-CU-NEXT:    s_load_dword s5, s[6:7], 0x0436; GFX10-CU-NEXT:    s_waitcnt lgkmcnt(0)437; GFX10-CU-NEXT:    v_mov_b32_e32 v0, s5438; GFX10-CU-NEXT:    v_mov_b32_e32 v1, s4439; GFX10-CU-NEXT:    buffer_store_dword v0, v1, s[0:3], 0 offen440; GFX10-CU-NEXT:    s_waitcnt_vscnt null, 0x0441; GFX10-CU-NEXT:    s_endpgm442;443; SKIP-CACHE-INV-LABEL: private_volatile_store_0:444; SKIP-CACHE-INV:       ; %bb.0: ; %entry445; SKIP-CACHE-INV-NEXT:    s_getpc_b64 s[12:13]446; SKIP-CACHE-INV-NEXT:    s_mov_b32 s12, s0447; SKIP-CACHE-INV-NEXT:    s_load_dwordx4 s[12:15], s[12:13], 0x0448; SKIP-CACHE-INV-NEXT:    s_waitcnt lgkmcnt(0)449; SKIP-CACHE-INV-NEXT:    s_add_u32 s12, s12, s11450; SKIP-CACHE-INV-NEXT:    s_addc_u32 s13, s13, 0451; SKIP-CACHE-INV-NEXT:    s_load_dwordx2 s[2:3], s[4:5], 0x0452; SKIP-CACHE-INV-NEXT:    s_load_dword s0, s[4:5], 0x2453; SKIP-CACHE-INV-NEXT:    s_waitcnt lgkmcnt(0)454; SKIP-CACHE-INV-NEXT:    s_load_dword s1, s[2:3], 0x0455; SKIP-CACHE-INV-NEXT:    s_waitcnt lgkmcnt(0)456; SKIP-CACHE-INV-NEXT:    v_mov_b32_e32 v0, s1457; SKIP-CACHE-INV-NEXT:    v_mov_b32_e32 v1, s0458; SKIP-CACHE-INV-NEXT:    buffer_store_dword v0, v1, s[12:15], 0 offen459; SKIP-CACHE-INV-NEXT:    s_waitcnt vmcnt(0)460; SKIP-CACHE-INV-NEXT:    s_endpgm461;462; GFX11-WGP-LABEL: private_volatile_store_0:463; GFX11-WGP:       ; %bb.0: ; %entry464; GFX11-WGP-NEXT:    s_load_b64 s[2:3], s[4:5], 0x0465; GFX11-WGP-NEXT:    s_load_b32 s0, s[4:5], 0x8466; GFX11-WGP-NEXT:    s_waitcnt lgkmcnt(0)467; GFX11-WGP-NEXT:    s_load_b32 s1, s[2:3], 0x0468; GFX11-WGP-NEXT:    s_waitcnt lgkmcnt(0)469; GFX11-WGP-NEXT:    v_mov_b32_e32 v0, s1470; GFX11-WGP-NEXT:    scratch_store_b32 off, v0, s0 dlc471; GFX11-WGP-NEXT:    s_waitcnt_vscnt null, 0x0472; GFX11-WGP-NEXT:    s_endpgm473;474; GFX11-CU-LABEL: private_volatile_store_0:475; GFX11-CU:       ; %bb.0: ; %entry476; GFX11-CU-NEXT:    s_load_b64 s[2:3], s[4:5], 0x0477; GFX11-CU-NEXT:    s_load_b32 s0, s[4:5], 0x8478; GFX11-CU-NEXT:    s_waitcnt lgkmcnt(0)479; GFX11-CU-NEXT:    s_load_b32 s1, s[2:3], 0x0480; GFX11-CU-NEXT:    s_waitcnt lgkmcnt(0)481; GFX11-CU-NEXT:    v_mov_b32_e32 v0, s1482; GFX11-CU-NEXT:    scratch_store_b32 off, v0, s0 dlc483; GFX11-CU-NEXT:    s_waitcnt_vscnt null, 0x0484; GFX11-CU-NEXT:    s_endpgm485;486; GFX12-WGP-LABEL: private_volatile_store_0:487; GFX12-WGP:       ; %bb.0: ; %entry488; GFX12-WGP-NEXT:    s_load_b64 s[2:3], s[4:5], 0x0489; GFX12-WGP-NEXT:    s_load_b32 s0, s[4:5], 0x8490; GFX12-WGP-NEXT:    s_wait_kmcnt 0x0491; GFX12-WGP-NEXT:    s_load_b32 s1, s[2:3], 0x0492; GFX12-WGP-NEXT:    s_wait_kmcnt 0x0493; GFX12-WGP-NEXT:    v_mov_b32_e32 v0, s1494; GFX12-WGP-NEXT:    s_wait_loadcnt 0x0495; GFX12-WGP-NEXT:    s_wait_samplecnt 0x0496; GFX12-WGP-NEXT:    s_wait_bvhcnt 0x0497; GFX12-WGP-NEXT:    s_wait_kmcnt 0x0498; GFX12-WGP-NEXT:    s_wait_storecnt 0x0499; GFX12-WGP-NEXT:    scratch_store_b32 off, v0, s0 scope:SCOPE_SYS500; GFX12-WGP-NEXT:    s_wait_storecnt 0x0501; GFX12-WGP-NEXT:    s_endpgm502;503; GFX12-CU-LABEL: private_volatile_store_0:504; GFX12-CU:       ; %bb.0: ; %entry505; GFX12-CU-NEXT:    s_load_b64 s[2:3], s[4:5], 0x0506; GFX12-CU-NEXT:    s_load_b32 s0, s[4:5], 0x8507; GFX12-CU-NEXT:    s_wait_kmcnt 0x0508; GFX12-CU-NEXT:    s_load_b32 s1, s[2:3], 0x0509; GFX12-CU-NEXT:    s_wait_kmcnt 0x0510; GFX12-CU-NEXT:    v_mov_b32_e32 v0, s1511; GFX12-CU-NEXT:    s_wait_loadcnt 0x0512; GFX12-CU-NEXT:    s_wait_samplecnt 0x0513; GFX12-CU-NEXT:    s_wait_bvhcnt 0x0514; GFX12-CU-NEXT:    s_wait_kmcnt 0x0515; GFX12-CU-NEXT:    s_wait_storecnt 0x0516; GFX12-CU-NEXT:    scratch_store_b32 off, v0, s0 scope:SCOPE_SYS517; GFX12-CU-NEXT:    s_wait_storecnt 0x0518; GFX12-CU-NEXT:    s_endpgm519;520; GFX1250-LABEL: private_volatile_store_0:521; GFX1250:       ; %bb.0: ; %entry522; GFX1250-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_WAVE_MODE, 25, 1), 1523; GFX1250-NEXT:    s_load_b64 s[2:3], s[4:5], 0x0524; GFX1250-NEXT:    s_load_b32 s0, s[4:5], 0x8525; GFX1250-NEXT:    s_wait_kmcnt 0x0526; GFX1250-NEXT:    s_load_b32 s1, s[2:3], 0x0527; GFX1250-NEXT:    s_wait_kmcnt 0x0528; GFX1250-NEXT:    v_mov_b32_e32 v0, s1529; GFX1250-NEXT:    s_wait_xcnt 0x0530; GFX1250-NEXT:    scratch_store_b32 off, v0, s0 scope:SCOPE_SYS531; GFX1250-NEXT:    s_wait_storecnt 0x0532; GFX1250-NEXT:    s_endpgm533    ptr addrspace(1) %in, ptr addrspace(5) %out) {534entry:535  %val = load i32, ptr addrspace(1) %in, align 4536  store volatile i32 %val, ptr addrspace(5) %out537  ret void538}539 540define amdgpu_kernel void @private_volatile_store_1(541; GFX6-LABEL: private_volatile_store_1:542; GFX6:       ; %bb.0: ; %entry543; GFX6-NEXT:    s_mov_b32 s12, SCRATCH_RSRC_DWORD0544; GFX6-NEXT:    s_mov_b32 s13, SCRATCH_RSRC_DWORD1545; GFX6-NEXT:    s_mov_b32 s14, -1546; GFX6-NEXT:    s_mov_b32 s15, 0xe8f000547; GFX6-NEXT:    s_add_u32 s12, s12, s11548; GFX6-NEXT:    s_addc_u32 s13, s13, 0549; GFX6-NEXT:    s_load_dwordx2 s[2:3], s[4:5], 0x9550; GFX6-NEXT:    s_load_dword s1, s[4:5], 0xb551; GFX6-NEXT:    s_waitcnt lgkmcnt(0)552; GFX6-NEXT:    s_load_dword s0, s[2:3], 0x0553; GFX6-NEXT:    s_mov_b32 s2, 2554; GFX6-NEXT:    v_lshlrev_b32_e64 v0, s2, v0555; GFX6-NEXT:    v_add_i32_e64 v1, s[2:3], s1, v0556; GFX6-NEXT:    s_waitcnt lgkmcnt(0)557; GFX6-NEXT:    v_mov_b32_e32 v0, s0558; GFX6-NEXT:    buffer_store_dword v0, v1, s[12:15], 0 offen559; GFX6-NEXT:    s_waitcnt vmcnt(0)560; GFX6-NEXT:    s_endpgm561;562; GFX7-LABEL: private_volatile_store_1:563; GFX7:       ; %bb.0: ; %entry564; GFX7-NEXT:    s_add_u32 s0, s0, s17565; GFX7-NEXT:    s_addc_u32 s1, s1, 0566; GFX7-NEXT:    s_load_dwordx2 s[6:7], s[8:9], 0x0567; GFX7-NEXT:    s_load_dword s5, s[8:9], 0x2568; GFX7-NEXT:    s_waitcnt lgkmcnt(0)569; GFX7-NEXT:    s_load_dword s4, s[6:7], 0x0570; GFX7-NEXT:    s_mov_b32 s6, 2571; GFX7-NEXT:    v_lshlrev_b32_e64 v0, s6, v0572; GFX7-NEXT:    v_add_i32_e64 v1, s[6:7], s5, v0573; GFX7-NEXT:    s_waitcnt lgkmcnt(0)574; GFX7-NEXT:    v_mov_b32_e32 v0, s4575; GFX7-NEXT:    buffer_store_dword v0, v1, s[0:3], 0 offen576; GFX7-NEXT:    s_waitcnt vmcnt(0)577; GFX7-NEXT:    s_endpgm578;579; GFX10-WGP-LABEL: private_volatile_store_1:580; GFX10-WGP:       ; %bb.0: ; %entry581; GFX10-WGP-NEXT:    s_add_u32 s0, s0, s17582; GFX10-WGP-NEXT:    s_addc_u32 s1, s1, 0583; GFX10-WGP-NEXT:    s_load_dwordx2 s[6:7], s[8:9], 0x0584; GFX10-WGP-NEXT:    s_load_dword s5, s[8:9], 0x8585; GFX10-WGP-NEXT:    s_waitcnt lgkmcnt(0)586; GFX10-WGP-NEXT:    s_load_dword s4, s[6:7], 0x0587; GFX10-WGP-NEXT:    v_lshl_add_u32 v1, v0, 2, s5588; GFX10-WGP-NEXT:    s_waitcnt lgkmcnt(0)589; GFX10-WGP-NEXT:    v_mov_b32_e32 v0, s4590; GFX10-WGP-NEXT:    buffer_store_dword v0, v1, s[0:3], 0 offen591; GFX10-WGP-NEXT:    s_waitcnt_vscnt null, 0x0592; GFX10-WGP-NEXT:    s_endpgm593;594; GFX10-CU-LABEL: private_volatile_store_1:595; GFX10-CU:       ; %bb.0: ; %entry596; GFX10-CU-NEXT:    s_add_u32 s0, s0, s17597; GFX10-CU-NEXT:    s_addc_u32 s1, s1, 0598; GFX10-CU-NEXT:    s_load_dwordx2 s[6:7], s[8:9], 0x0599; GFX10-CU-NEXT:    s_load_dword s5, s[8:9], 0x8600; GFX10-CU-NEXT:    s_waitcnt lgkmcnt(0)601; GFX10-CU-NEXT:    s_load_dword s4, s[6:7], 0x0602; GFX10-CU-NEXT:    v_lshl_add_u32 v1, v0, 2, s5603; GFX10-CU-NEXT:    s_waitcnt lgkmcnt(0)604; GFX10-CU-NEXT:    v_mov_b32_e32 v0, s4605; GFX10-CU-NEXT:    buffer_store_dword v0, v1, s[0:3], 0 offen606; GFX10-CU-NEXT:    s_waitcnt_vscnt null, 0x0607; GFX10-CU-NEXT:    s_endpgm608;609; SKIP-CACHE-INV-LABEL: private_volatile_store_1:610; SKIP-CACHE-INV:       ; %bb.0: ; %entry611; SKIP-CACHE-INV-NEXT:    s_getpc_b64 s[12:13]612; SKIP-CACHE-INV-NEXT:    s_mov_b32 s12, s0613; SKIP-CACHE-INV-NEXT:    s_load_dwordx4 s[12:15], s[12:13], 0x0614; SKIP-CACHE-INV-NEXT:    s_waitcnt lgkmcnt(0)615; SKIP-CACHE-INV-NEXT:    s_add_u32 s12, s12, s11616; SKIP-CACHE-INV-NEXT:    s_addc_u32 s13, s13, 0617; SKIP-CACHE-INV-NEXT:    s_load_dwordx2 s[2:3], s[4:5], 0x0618; SKIP-CACHE-INV-NEXT:    s_load_dword s1, s[4:5], 0x2619; SKIP-CACHE-INV-NEXT:    s_waitcnt lgkmcnt(0)620; SKIP-CACHE-INV-NEXT:    s_load_dword s0, s[2:3], 0x0621; SKIP-CACHE-INV-NEXT:    s_mov_b32 s2, 2622; SKIP-CACHE-INV-NEXT:    v_lshlrev_b32_e64 v0, s2, v0623; SKIP-CACHE-INV-NEXT:    v_add_i32_e64 v1, s[2:3], s1, v0624; SKIP-CACHE-INV-NEXT:    s_waitcnt lgkmcnt(0)625; SKIP-CACHE-INV-NEXT:    v_mov_b32_e32 v0, s0626; SKIP-CACHE-INV-NEXT:    buffer_store_dword v0, v1, s[12:15], 0 offen627; SKIP-CACHE-INV-NEXT:    s_waitcnt vmcnt(0)628; SKIP-CACHE-INV-NEXT:    s_endpgm629;630; GFX11-WGP-LABEL: private_volatile_store_1:631; GFX11-WGP:       ; %bb.0: ; %entry632; GFX11-WGP-NEXT:    s_load_b64 s[2:3], s[4:5], 0x0633; GFX11-WGP-NEXT:    s_load_b32 s1, s[4:5], 0x8634; GFX11-WGP-NEXT:    s_waitcnt lgkmcnt(0)635; GFX11-WGP-NEXT:    s_load_b32 s0, s[2:3], 0x0636; GFX11-WGP-NEXT:    s_mov_b32 s2, 0x3ff637; GFX11-WGP-NEXT:    v_and_b32_e64 v0, v0, s2638; GFX11-WGP-NEXT:    v_lshl_add_u32 v1, v0, 2, s1639; GFX11-WGP-NEXT:    s_waitcnt lgkmcnt(0)640; GFX11-WGP-NEXT:    v_mov_b32_e32 v0, s0641; GFX11-WGP-NEXT:    scratch_store_b32 v1, v0, off dlc642; GFX11-WGP-NEXT:    s_waitcnt_vscnt null, 0x0643; GFX11-WGP-NEXT:    s_endpgm644;645; GFX11-CU-LABEL: private_volatile_store_1:646; GFX11-CU:       ; %bb.0: ; %entry647; GFX11-CU-NEXT:    s_load_b64 s[2:3], s[4:5], 0x0648; GFX11-CU-NEXT:    s_load_b32 s1, s[4:5], 0x8649; GFX11-CU-NEXT:    s_waitcnt lgkmcnt(0)650; GFX11-CU-NEXT:    s_load_b32 s0, s[2:3], 0x0651; GFX11-CU-NEXT:    s_mov_b32 s2, 0x3ff652; GFX11-CU-NEXT:    v_and_b32_e64 v0, v0, s2653; GFX11-CU-NEXT:    v_lshl_add_u32 v1, v0, 2, s1654; GFX11-CU-NEXT:    s_waitcnt lgkmcnt(0)655; GFX11-CU-NEXT:    v_mov_b32_e32 v0, s0656; GFX11-CU-NEXT:    scratch_store_b32 v1, v0, off dlc657; GFX11-CU-NEXT:    s_waitcnt_vscnt null, 0x0658; GFX11-CU-NEXT:    s_endpgm659;660; GFX12-WGP-LABEL: private_volatile_store_1:661; GFX12-WGP:       ; %bb.0: ; %entry662; GFX12-WGP-NEXT:    s_load_b64 s[2:3], s[4:5], 0x0663; GFX12-WGP-NEXT:    s_load_b32 s0, s[4:5], 0x8664; GFX12-WGP-NEXT:    s_wait_kmcnt 0x0665; GFX12-WGP-NEXT:    s_load_b32 s1, s[2:3], 0x0666; GFX12-WGP-NEXT:    s_mov_b32 s2, 0x3ff667; GFX12-WGP-NEXT:    v_and_b32_e64 v0, v0, s2668; GFX12-WGP-NEXT:    s_mov_b32 s2, 2669; GFX12-WGP-NEXT:    s_wait_alu depctr_sa_sdst(0)670; GFX12-WGP-NEXT:    v_lshlrev_b32_e64 v1, s2, v0671; GFX12-WGP-NEXT:    s_wait_kmcnt 0x0672; GFX12-WGP-NEXT:    v_mov_b32_e32 v0, s1673; GFX12-WGP-NEXT:    s_wait_loadcnt 0x0674; GFX12-WGP-NEXT:    s_wait_samplecnt 0x0675; GFX12-WGP-NEXT:    s_wait_bvhcnt 0x0676; GFX12-WGP-NEXT:    s_wait_kmcnt 0x0677; GFX12-WGP-NEXT:    s_wait_storecnt 0x0678; GFX12-WGP-NEXT:    scratch_store_b32 v1, v0, s0 scope:SCOPE_SYS679; GFX12-WGP-NEXT:    s_wait_storecnt 0x0680; GFX12-WGP-NEXT:    s_endpgm681;682; GFX12-CU-LABEL: private_volatile_store_1:683; GFX12-CU:       ; %bb.0: ; %entry684; GFX12-CU-NEXT:    s_load_b64 s[2:3], s[4:5], 0x0685; GFX12-CU-NEXT:    s_load_b32 s0, s[4:5], 0x8686; GFX12-CU-NEXT:    s_wait_kmcnt 0x0687; GFX12-CU-NEXT:    s_load_b32 s1, s[2:3], 0x0688; GFX12-CU-NEXT:    s_mov_b32 s2, 0x3ff689; GFX12-CU-NEXT:    v_and_b32_e64 v0, v0, s2690; GFX12-CU-NEXT:    s_mov_b32 s2, 2691; GFX12-CU-NEXT:    s_wait_alu depctr_sa_sdst(0)692; GFX12-CU-NEXT:    v_lshlrev_b32_e64 v1, s2, v0693; GFX12-CU-NEXT:    s_wait_kmcnt 0x0694; GFX12-CU-NEXT:    v_mov_b32_e32 v0, s1695; GFX12-CU-NEXT:    s_wait_loadcnt 0x0696; GFX12-CU-NEXT:    s_wait_samplecnt 0x0697; GFX12-CU-NEXT:    s_wait_bvhcnt 0x0698; GFX12-CU-NEXT:    s_wait_kmcnt 0x0699; GFX12-CU-NEXT:    s_wait_storecnt 0x0700; GFX12-CU-NEXT:    scratch_store_b32 v1, v0, s0 scope:SCOPE_SYS701; GFX12-CU-NEXT:    s_wait_storecnt 0x0702; GFX12-CU-NEXT:    s_endpgm703;704; GFX1250-LABEL: private_volatile_store_1:705; GFX1250:       ; %bb.0: ; %entry706; GFX1250-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_WAVE_MODE, 25, 1), 1707; GFX1250-NEXT:    s_load_b64 s[2:3], s[4:5], 0x0708; GFX1250-NEXT:    s_load_b32 s0, s[4:5], 0x8709; GFX1250-NEXT:    s_wait_kmcnt 0x0710; GFX1250-NEXT:    s_load_b32 s1, s[2:3], 0x0711; GFX1250-NEXT:    s_wait_xcnt 0x0712; GFX1250-NEXT:    s_mov_b32 s2, 0x3ff713; GFX1250-NEXT:    v_and_b32_e64 v1, v0, s2714; GFX1250-NEXT:    s_wait_kmcnt 0x0715; GFX1250-NEXT:    v_mov_b32_e32 v0, s1716; GFX1250-NEXT:    s_wait_xcnt 0x0717; GFX1250-NEXT:    scratch_store_b32 v1, v0, s0 scale_offset scope:SCOPE_SYS718; GFX1250-NEXT:    s_wait_storecnt 0x0719; GFX1250-NEXT:    s_endpgm720    ptr addrspace(1) %in, ptr addrspace(5) %out) {721entry:722  %tid = call i32 @llvm.amdgcn.workitem.id.x()723  %val = load i32, ptr addrspace(1) %in, align 4724  %out.gep = getelementptr inbounds i32, ptr addrspace(5) %out, i32 %tid725  store volatile i32 %val, ptr addrspace(5) %out.gep726  ret void727}728 729declare i32 @llvm.amdgcn.workitem.id.x()730