1103 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 @private_nontemporal_load_0(18; GFX6-LABEL: private_nontemporal_load_0:19; GFX6: ; %bb.0: ; %entry20; GFX6-NEXT: s_add_u32 s0, s0, s1521; GFX6-NEXT: s_addc_u32 s1, s1, 022; GFX6-NEXT: s_mov_b64 s[4:5], s[8:9]23; GFX6-NEXT: s_load_dword s8, s[4:5], 0x024; GFX6-NEXT: s_load_dwordx2 s[4:5], s[4:5], 0x225; GFX6-NEXT: s_waitcnt lgkmcnt(0)26; GFX6-NEXT: s_mov_b32 s11, s527; GFX6-NEXT: ; kill: def $sgpr4 killed $sgpr4 killed $sgpr4_sgpr528; GFX6-NEXT: s_mov_b32 s9, 0x100f00029; GFX6-NEXT: s_mov_b32 s10, -130; GFX6-NEXT: ; kill: def $sgpr4 killed $sgpr4 def $sgpr4_sgpr5_sgpr6_sgpr731; GFX6-NEXT: s_mov_b32 s5, s1132; GFX6-NEXT: s_mov_b32 s6, s1033; GFX6-NEXT: s_mov_b32 s7, s934; GFX6-NEXT: v_mov_b32_e32 v0, s835; GFX6-NEXT: buffer_load_dword v0, v0, s[0:3], 0 offen glc slc36; GFX6-NEXT: s_waitcnt vmcnt(0)37; GFX6-NEXT: buffer_store_dword v0, off, s[4:7], 038; GFX6-NEXT: s_endpgm39;40; GFX7-LABEL: private_nontemporal_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 glc slc52; GFX7-NEXT: v_mov_b32_e32 v0, s453; GFX7-NEXT: v_mov_b32_e32 v1, s554; GFX7-NEXT: s_waitcnt vmcnt(0)55; GFX7-NEXT: flat_store_dword v[0:1], v256; GFX7-NEXT: s_endpgm57;58; GFX10-WGP-LABEL: private_nontemporal_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 slc68; 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_nontemporal_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 slc82; 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_nontemporal_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 glc slc108; 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; GFX90A-NOTTGSPLIT-LABEL: private_nontemporal_load_0:113; GFX90A-NOTTGSPLIT: ; %bb.0: ; %entry114; GFX90A-NOTTGSPLIT-NEXT: s_add_u32 s0, s0, s17115; GFX90A-NOTTGSPLIT-NEXT: s_addc_u32 s1, s1, 0116; GFX90A-NOTTGSPLIT-NEXT: s_load_dword s6, s[8:9], 0x0117; GFX90A-NOTTGSPLIT-NEXT: s_load_dwordx2 s[4:5], s[8:9], 0x8118; GFX90A-NOTTGSPLIT-NEXT: v_mov_b32_e32 v0, 0119; GFX90A-NOTTGSPLIT-NEXT: s_waitcnt lgkmcnt(0)120; GFX90A-NOTTGSPLIT-NEXT: v_mov_b32_e32 v1, s6121; GFX90A-NOTTGSPLIT-NEXT: buffer_load_dword v1, v1, s[0:3], 0 offen glc slc122; GFX90A-NOTTGSPLIT-NEXT: s_waitcnt vmcnt(0)123; GFX90A-NOTTGSPLIT-NEXT: global_store_dword v0, v1, s[4:5]124; GFX90A-NOTTGSPLIT-NEXT: s_endpgm125;126; GFX90A-TGSPLIT-LABEL: private_nontemporal_load_0:127; GFX90A-TGSPLIT: ; %bb.0: ; %entry128; GFX90A-TGSPLIT-NEXT: s_add_u32 s0, s0, s17129; GFX90A-TGSPLIT-NEXT: s_addc_u32 s1, s1, 0130; GFX90A-TGSPLIT-NEXT: s_load_dword s6, s[8:9], 0x0131; GFX90A-TGSPLIT-NEXT: s_load_dwordx2 s[4:5], s[8:9], 0x8132; GFX90A-TGSPLIT-NEXT: v_mov_b32_e32 v0, 0133; GFX90A-TGSPLIT-NEXT: s_waitcnt lgkmcnt(0)134; GFX90A-TGSPLIT-NEXT: v_mov_b32_e32 v1, s6135; GFX90A-TGSPLIT-NEXT: buffer_load_dword v1, v1, s[0:3], 0 offen glc slc136; GFX90A-TGSPLIT-NEXT: s_waitcnt vmcnt(0)137; GFX90A-TGSPLIT-NEXT: global_store_dword v0, v1, s[4:5]138; GFX90A-TGSPLIT-NEXT: s_endpgm139;140; GFX942-NOTTGSPLIT-LABEL: private_nontemporal_load_0:141; GFX942-NOTTGSPLIT: ; %bb.0: ; %entry142; GFX942-NOTTGSPLIT-NEXT: s_load_dword s2, s[4:5], 0x0143; GFX942-NOTTGSPLIT-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x8144; GFX942-NOTTGSPLIT-NEXT: v_mov_b32_e32 v0, 0145; GFX942-NOTTGSPLIT-NEXT: s_waitcnt lgkmcnt(0)146; GFX942-NOTTGSPLIT-NEXT: scratch_load_dword v1, off, s2 nt147; GFX942-NOTTGSPLIT-NEXT: s_waitcnt vmcnt(0)148; GFX942-NOTTGSPLIT-NEXT: global_store_dword v0, v1, s[0:1]149; GFX942-NOTTGSPLIT-NEXT: s_endpgm150;151; GFX942-TGSPLIT-LABEL: private_nontemporal_load_0:152; GFX942-TGSPLIT: ; %bb.0: ; %entry153; GFX942-TGSPLIT-NEXT: s_load_dword s2, s[4:5], 0x0154; GFX942-TGSPLIT-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x8155; GFX942-TGSPLIT-NEXT: v_mov_b32_e32 v0, 0156; GFX942-TGSPLIT-NEXT: s_waitcnt lgkmcnt(0)157; GFX942-TGSPLIT-NEXT: scratch_load_dword v1, off, s2 nt158; GFX942-TGSPLIT-NEXT: s_waitcnt vmcnt(0)159; GFX942-TGSPLIT-NEXT: global_store_dword v0, v1, s[0:1]160; GFX942-TGSPLIT-NEXT: s_endpgm161;162; GFX11-WGP-LABEL: private_nontemporal_load_0:163; GFX11-WGP: ; %bb.0: ; %entry164; GFX11-WGP-NEXT: s_load_b32 s2, s[4:5], 0x0165; GFX11-WGP-NEXT: s_load_b64 s[0:1], s[4:5], 0x8166; GFX11-WGP-NEXT: v_mov_b32_e32 v0, 0167; GFX11-WGP-NEXT: s_waitcnt lgkmcnt(0)168; GFX11-WGP-NEXT: scratch_load_b32 v1, off, s2 slc dlc169; GFX11-WGP-NEXT: s_waitcnt vmcnt(0)170; GFX11-WGP-NEXT: global_store_b32 v0, v1, s[0:1]171; GFX11-WGP-NEXT: s_endpgm172;173; GFX11-CU-LABEL: private_nontemporal_load_0:174; GFX11-CU: ; %bb.0: ; %entry175; GFX11-CU-NEXT: s_load_b32 s2, s[4:5], 0x0176; GFX11-CU-NEXT: s_load_b64 s[0:1], s[4:5], 0x8177; GFX11-CU-NEXT: v_mov_b32_e32 v0, 0178; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)179; GFX11-CU-NEXT: scratch_load_b32 v1, off, s2 slc dlc180; GFX11-CU-NEXT: s_waitcnt vmcnt(0)181; GFX11-CU-NEXT: global_store_b32 v0, v1, s[0:1]182; GFX11-CU-NEXT: s_endpgm183;184; GFX12-WGP-LABEL: private_nontemporal_load_0:185; GFX12-WGP: ; %bb.0: ; %entry186; GFX12-WGP-NEXT: s_load_b32 s2, s[4:5], 0x0187; GFX12-WGP-NEXT: s_load_b64 s[0:1], s[4:5], 0x8188; GFX12-WGP-NEXT: v_mov_b32_e32 v0, 0189; GFX12-WGP-NEXT: s_wait_kmcnt 0x0190; GFX12-WGP-NEXT: scratch_load_b32 v1, off, s2 th:TH_LOAD_NT191; GFX12-WGP-NEXT: s_wait_loadcnt 0x0192; GFX12-WGP-NEXT: global_store_b32 v0, v1, s[0:1]193; GFX12-WGP-NEXT: s_endpgm194;195; GFX12-CU-LABEL: private_nontemporal_load_0:196; GFX12-CU: ; %bb.0: ; %entry197; GFX12-CU-NEXT: s_load_b32 s2, s[4:5], 0x0198; GFX12-CU-NEXT: s_load_b64 s[0:1], s[4:5], 0x8199; GFX12-CU-NEXT: v_mov_b32_e32 v0, 0200; GFX12-CU-NEXT: s_wait_kmcnt 0x0201; GFX12-CU-NEXT: scratch_load_b32 v1, off, s2 th:TH_LOAD_NT202; GFX12-CU-NEXT: s_wait_loadcnt 0x0203; GFX12-CU-NEXT: global_store_b32 v0, v1, s[0:1]204; GFX12-CU-NEXT: s_endpgm205;206; GFX1250-LABEL: private_nontemporal_load_0:207; GFX1250: ; %bb.0: ; %entry208; GFX1250-NEXT: s_setreg_imm32_b32 hwreg(HW_REG_WAVE_MODE, 25, 1), 1209; GFX1250-NEXT: s_load_b32 s2, s[4:5], 0x0210; GFX1250-NEXT: s_load_b64 s[0:1], s[4:5], 0x8211; GFX1250-NEXT: v_mov_b32_e32 v0, 0212; GFX1250-NEXT: s_wait_kmcnt 0x0213; GFX1250-NEXT: scratch_load_b32 v1, off, s2 th:TH_LOAD_NT214; GFX1250-NEXT: s_wait_loadcnt 0x0215; GFX1250-NEXT: global_store_b32 v0, v1, s[0:1]216; GFX1250-NEXT: s_endpgm217 ptr addrspace(5) %in, ptr addrspace(1) %out) {218entry:219 %val = load i32, ptr addrspace(5) %in, align 4, !nontemporal !0220 store i32 %val, ptr addrspace(1) %out221 ret void222}223 224define amdgpu_kernel void @private_nontemporal_load_1(225; GFX6-LABEL: private_nontemporal_load_1:226; GFX6: ; %bb.0: ; %entry227; GFX6-NEXT: s_add_u32 s0, s0, s15228; GFX6-NEXT: s_addc_u32 s1, s1, 0229; GFX6-NEXT: s_mov_b64 s[4:5], s[8:9]230; GFX6-NEXT: s_load_dword s8, s[4:5], 0x0231; GFX6-NEXT: s_load_dwordx2 s[4:5], s[4:5], 0x2232; GFX6-NEXT: s_waitcnt lgkmcnt(0)233; GFX6-NEXT: s_mov_b32 s11, s5234; GFX6-NEXT: ; kill: def $sgpr4 killed $sgpr4 killed $sgpr4_sgpr5235; GFX6-NEXT: s_mov_b32 s9, 0x100f000236; GFX6-NEXT: s_mov_b32 s10, -1237; GFX6-NEXT: ; kill: def $sgpr4 killed $sgpr4 def $sgpr4_sgpr5_sgpr6_sgpr7238; GFX6-NEXT: s_mov_b32 s5, s11239; GFX6-NEXT: s_mov_b32 s6, s10240; GFX6-NEXT: s_mov_b32 s7, s9241; GFX6-NEXT: s_mov_b32 s9, 2242; GFX6-NEXT: v_lshlrev_b32_e64 v0, s9, v0243; GFX6-NEXT: v_add_i32_e64 v0, s[8:9], s8, v0244; GFX6-NEXT: buffer_load_dword v0, v0, s[0:3], 0 offen glc slc245; GFX6-NEXT: s_waitcnt vmcnt(0)246; GFX6-NEXT: buffer_store_dword v0, off, s[4:7], 0247; GFX6-NEXT: s_endpgm248;249; GFX7-LABEL: private_nontemporal_load_1:250; GFX7: ; %bb.0: ; %entry251; GFX7-NEXT: s_mov_b32 flat_scratch_lo, s13252; GFX7-NEXT: s_add_i32 s12, s12, s17253; GFX7-NEXT: s_lshr_b32 flat_scratch_hi, s12, 8254; GFX7-NEXT: s_add_u32 s0, s0, s17255; GFX7-NEXT: s_addc_u32 s1, s1, 0256; GFX7-NEXT: s_load_dword s6, s[8:9], 0x0257; GFX7-NEXT: s_load_dwordx2 s[4:5], s[8:9], 0x2258; GFX7-NEXT: s_mov_b32 s7, 2259; GFX7-NEXT: v_lshlrev_b32_e64 v0, s7, v0260; GFX7-NEXT: s_waitcnt lgkmcnt(0)261; GFX7-NEXT: v_add_i32_e64 v0, s[6:7], s6, v0262; GFX7-NEXT: buffer_load_dword v2, v0, s[0:3], 0 offen glc slc263; GFX7-NEXT: v_mov_b32_e32 v0, s4264; GFX7-NEXT: v_mov_b32_e32 v1, s5265; GFX7-NEXT: s_waitcnt vmcnt(0)266; GFX7-NEXT: flat_store_dword v[0:1], v2267; GFX7-NEXT: s_endpgm268;269; GFX10-WGP-LABEL: private_nontemporal_load_1:270; GFX10-WGP: ; %bb.0: ; %entry271; GFX10-WGP-NEXT: s_add_u32 s0, s0, s17272; GFX10-WGP-NEXT: s_addc_u32 s1, s1, 0273; GFX10-WGP-NEXT: v_mov_b32_e32 v1, v0274; GFX10-WGP-NEXT: s_load_dword s6, s[8:9], 0x0275; GFX10-WGP-NEXT: s_load_dwordx2 s[4:5], s[8:9], 0x8276; GFX10-WGP-NEXT: v_mov_b32_e32 v0, 0277; GFX10-WGP-NEXT: s_waitcnt lgkmcnt(0)278; GFX10-WGP-NEXT: v_lshl_add_u32 v1, v1, 2, s6279; GFX10-WGP-NEXT: buffer_load_dword v1, v1, s[0:3], 0 offen slc280; GFX10-WGP-NEXT: s_waitcnt vmcnt(0)281; GFX10-WGP-NEXT: global_store_dword v0, v1, s[4:5]282; GFX10-WGP-NEXT: s_endpgm283;284; GFX10-CU-LABEL: private_nontemporal_load_1:285; GFX10-CU: ; %bb.0: ; %entry286; GFX10-CU-NEXT: s_add_u32 s0, s0, s17287; GFX10-CU-NEXT: s_addc_u32 s1, s1, 0288; GFX10-CU-NEXT: v_mov_b32_e32 v1, v0289; GFX10-CU-NEXT: s_load_dword s6, s[8:9], 0x0290; GFX10-CU-NEXT: s_load_dwordx2 s[4:5], s[8:9], 0x8291; GFX10-CU-NEXT: v_mov_b32_e32 v0, 0292; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)293; GFX10-CU-NEXT: v_lshl_add_u32 v1, v1, 2, s6294; GFX10-CU-NEXT: buffer_load_dword v1, v1, s[0:3], 0 offen slc295; GFX10-CU-NEXT: s_waitcnt vmcnt(0)296; GFX10-CU-NEXT: global_store_dword v0, v1, s[4:5]297; GFX10-CU-NEXT: s_endpgm298;299; SKIP-CACHE-INV-LABEL: private_nontemporal_load_1:300; SKIP-CACHE-INV: ; %bb.0: ; %entry301; SKIP-CACHE-INV-NEXT: s_getpc_b64 s[12:13]302; SKIP-CACHE-INV-NEXT: s_mov_b32 s12, s0303; SKIP-CACHE-INV-NEXT: s_load_dwordx4 s[12:15], s[12:13], 0x0304; SKIP-CACHE-INV-NEXT: s_waitcnt lgkmcnt(0)305; SKIP-CACHE-INV-NEXT: s_add_u32 s12, s12, s11306; SKIP-CACHE-INV-NEXT: s_addc_u32 s13, s13, 0307; SKIP-CACHE-INV-NEXT: s_mov_b64 s[0:1], s[4:5]308; SKIP-CACHE-INV-NEXT: s_load_dword s4, s[0:1], 0x0309; SKIP-CACHE-INV-NEXT: s_load_dwordx2 s[0:1], s[0:1], 0x2310; SKIP-CACHE-INV-NEXT: s_waitcnt lgkmcnt(0)311; SKIP-CACHE-INV-NEXT: s_mov_b32 s7, s1312; SKIP-CACHE-INV-NEXT: ; kill: def $sgpr0 killed $sgpr0 killed $sgpr0_sgpr1313; SKIP-CACHE-INV-NEXT: s_mov_b32 s5, 0xf000314; SKIP-CACHE-INV-NEXT: s_mov_b32 s6, -1315; SKIP-CACHE-INV-NEXT: ; kill: def $sgpr0 killed $sgpr0 def $sgpr0_sgpr1_sgpr2_sgpr3316; SKIP-CACHE-INV-NEXT: s_mov_b32 s1, s7317; SKIP-CACHE-INV-NEXT: s_mov_b32 s2, s6318; SKIP-CACHE-INV-NEXT: s_mov_b32 s3, s5319; SKIP-CACHE-INV-NEXT: s_mov_b32 s5, 2320; SKIP-CACHE-INV-NEXT: v_lshlrev_b32_e64 v0, s5, v0321; SKIP-CACHE-INV-NEXT: v_add_i32_e64 v0, s[4:5], s4, v0322; SKIP-CACHE-INV-NEXT: buffer_load_dword v0, v0, s[12:15], 0 offen glc slc323; SKIP-CACHE-INV-NEXT: s_waitcnt vmcnt(0)324; SKIP-CACHE-INV-NEXT: buffer_store_dword v0, off, s[0:3], 0325; SKIP-CACHE-INV-NEXT: s_endpgm326;327; GFX90A-NOTTGSPLIT-LABEL: private_nontemporal_load_1:328; GFX90A-NOTTGSPLIT: ; %bb.0: ; %entry329; GFX90A-NOTTGSPLIT-NEXT: s_add_u32 s0, s0, s17330; GFX90A-NOTTGSPLIT-NEXT: s_addc_u32 s1, s1, 0331; GFX90A-NOTTGSPLIT-NEXT: v_mov_b32_e32 v1, v0332; GFX90A-NOTTGSPLIT-NEXT: s_load_dword s6, s[8:9], 0x0333; GFX90A-NOTTGSPLIT-NEXT: s_load_dwordx2 s[4:5], s[8:9], 0x8334; GFX90A-NOTTGSPLIT-NEXT: v_mov_b32_e32 v0, 0335; GFX90A-NOTTGSPLIT-NEXT: s_mov_b32 s7, 0x3ff336; GFX90A-NOTTGSPLIT-NEXT: v_and_b32_e64 v1, v1, s7337; GFX90A-NOTTGSPLIT-NEXT: s_waitcnt lgkmcnt(0)338; GFX90A-NOTTGSPLIT-NEXT: v_lshl_add_u32 v1, v1, 2, s6339; GFX90A-NOTTGSPLIT-NEXT: buffer_load_dword v1, v1, s[0:3], 0 offen glc slc340; GFX90A-NOTTGSPLIT-NEXT: s_waitcnt vmcnt(0)341; GFX90A-NOTTGSPLIT-NEXT: global_store_dword v0, v1, s[4:5]342; GFX90A-NOTTGSPLIT-NEXT: s_endpgm343;344; GFX90A-TGSPLIT-LABEL: private_nontemporal_load_1:345; GFX90A-TGSPLIT: ; %bb.0: ; %entry346; GFX90A-TGSPLIT-NEXT: s_add_u32 s0, s0, s17347; GFX90A-TGSPLIT-NEXT: s_addc_u32 s1, s1, 0348; GFX90A-TGSPLIT-NEXT: v_mov_b32_e32 v1, v0349; GFX90A-TGSPLIT-NEXT: s_load_dword s6, s[8:9], 0x0350; GFX90A-TGSPLIT-NEXT: s_load_dwordx2 s[4:5], s[8:9], 0x8351; GFX90A-TGSPLIT-NEXT: v_mov_b32_e32 v0, 0352; GFX90A-TGSPLIT-NEXT: s_mov_b32 s7, 0x3ff353; GFX90A-TGSPLIT-NEXT: v_and_b32_e64 v1, v1, s7354; GFX90A-TGSPLIT-NEXT: s_waitcnt lgkmcnt(0)355; GFX90A-TGSPLIT-NEXT: v_lshl_add_u32 v1, v1, 2, s6356; GFX90A-TGSPLIT-NEXT: buffer_load_dword v1, v1, s[0:3], 0 offen glc slc357; GFX90A-TGSPLIT-NEXT: s_waitcnt vmcnt(0)358; GFX90A-TGSPLIT-NEXT: global_store_dword v0, v1, s[4:5]359; GFX90A-TGSPLIT-NEXT: s_endpgm360;361; GFX942-NOTTGSPLIT-LABEL: private_nontemporal_load_1:362; GFX942-NOTTGSPLIT: ; %bb.0: ; %entry363; GFX942-NOTTGSPLIT-NEXT: v_mov_b32_e32 v1, v0364; GFX942-NOTTGSPLIT-NEXT: s_load_dword s2, s[4:5], 0x0365; GFX942-NOTTGSPLIT-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x8366; GFX942-NOTTGSPLIT-NEXT: v_mov_b32_e32 v0, 0367; GFX942-NOTTGSPLIT-NEXT: s_mov_b32 s3, 0x3ff368; GFX942-NOTTGSPLIT-NEXT: v_and_b32_e64 v1, v1, s3369; GFX942-NOTTGSPLIT-NEXT: s_waitcnt lgkmcnt(0)370; GFX942-NOTTGSPLIT-NEXT: v_lshl_add_u32 v1, v1, 2, s2371; GFX942-NOTTGSPLIT-NEXT: scratch_load_dword v1, v1, off nt372; GFX942-NOTTGSPLIT-NEXT: s_waitcnt vmcnt(0)373; GFX942-NOTTGSPLIT-NEXT: global_store_dword v0, v1, s[0:1]374; GFX942-NOTTGSPLIT-NEXT: s_endpgm375;376; GFX942-TGSPLIT-LABEL: private_nontemporal_load_1:377; GFX942-TGSPLIT: ; %bb.0: ; %entry378; GFX942-TGSPLIT-NEXT: v_mov_b32_e32 v1, v0379; GFX942-TGSPLIT-NEXT: s_load_dword s2, s[4:5], 0x0380; GFX942-TGSPLIT-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x8381; GFX942-TGSPLIT-NEXT: v_mov_b32_e32 v0, 0382; GFX942-TGSPLIT-NEXT: s_mov_b32 s3, 0x3ff383; GFX942-TGSPLIT-NEXT: v_and_b32_e64 v1, v1, s3384; GFX942-TGSPLIT-NEXT: s_waitcnt lgkmcnt(0)385; GFX942-TGSPLIT-NEXT: v_lshl_add_u32 v1, v1, 2, s2386; GFX942-TGSPLIT-NEXT: scratch_load_dword v1, v1, off nt387; GFX942-TGSPLIT-NEXT: s_waitcnt vmcnt(0)388; GFX942-TGSPLIT-NEXT: global_store_dword v0, v1, s[0:1]389; GFX942-TGSPLIT-NEXT: s_endpgm390;391; GFX11-WGP-LABEL: private_nontemporal_load_1:392; GFX11-WGP: ; %bb.0: ; %entry393; GFX11-WGP-NEXT: v_mov_b32_e32 v1, v0394; GFX11-WGP-NEXT: s_load_b32 s2, s[4:5], 0x0395; GFX11-WGP-NEXT: s_load_b64 s[0:1], s[4:5], 0x8396; GFX11-WGP-NEXT: v_mov_b32_e32 v0, 0397; GFX11-WGP-NEXT: s_mov_b32 s3, 0x3ff398; GFX11-WGP-NEXT: v_and_b32_e64 v1, v1, s3399; GFX11-WGP-NEXT: s_waitcnt lgkmcnt(0)400; GFX11-WGP-NEXT: v_lshl_add_u32 v1, v1, 2, s2401; GFX11-WGP-NEXT: scratch_load_b32 v1, v1, off slc dlc402; GFX11-WGP-NEXT: s_waitcnt vmcnt(0)403; GFX11-WGP-NEXT: global_store_b32 v0, v1, s[0:1]404; GFX11-WGP-NEXT: s_endpgm405;406; GFX11-CU-LABEL: private_nontemporal_load_1:407; GFX11-CU: ; %bb.0: ; %entry408; GFX11-CU-NEXT: v_mov_b32_e32 v1, v0409; GFX11-CU-NEXT: s_load_b32 s2, s[4:5], 0x0410; GFX11-CU-NEXT: s_load_b64 s[0:1], s[4:5], 0x8411; GFX11-CU-NEXT: v_mov_b32_e32 v0, 0412; GFX11-CU-NEXT: s_mov_b32 s3, 0x3ff413; GFX11-CU-NEXT: v_and_b32_e64 v1, v1, s3414; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)415; GFX11-CU-NEXT: v_lshl_add_u32 v1, v1, 2, s2416; GFX11-CU-NEXT: scratch_load_b32 v1, v1, off slc dlc417; GFX11-CU-NEXT: s_waitcnt vmcnt(0)418; GFX11-CU-NEXT: global_store_b32 v0, v1, s[0:1]419; GFX11-CU-NEXT: s_endpgm420;421; GFX12-WGP-LABEL: private_nontemporal_load_1:422; GFX12-WGP: ; %bb.0: ; %entry423; GFX12-WGP-NEXT: v_mov_b32_e32 v1, v0424; GFX12-WGP-NEXT: s_load_b32 s2, s[4:5], 0x0425; GFX12-WGP-NEXT: s_load_b64 s[0:1], s[4:5], 0x8426; GFX12-WGP-NEXT: v_mov_b32_e32 v0, 0427; GFX12-WGP-NEXT: s_mov_b32 s3, 0x3ff428; GFX12-WGP-NEXT: v_and_b32_e64 v1, v1, s3429; GFX12-WGP-NEXT: s_mov_b32 s3, 2430; GFX12-WGP-NEXT: s_wait_alu depctr_sa_sdst(0)431; GFX12-WGP-NEXT: v_lshlrev_b32_e64 v1, s3, v1432; GFX12-WGP-NEXT: s_wait_kmcnt 0x0433; GFX12-WGP-NEXT: scratch_load_b32 v1, v1, s2 th:TH_LOAD_NT434; GFX12-WGP-NEXT: s_wait_loadcnt 0x0435; GFX12-WGP-NEXT: global_store_b32 v0, v1, s[0:1]436; GFX12-WGP-NEXT: s_endpgm437;438; GFX12-CU-LABEL: private_nontemporal_load_1:439; GFX12-CU: ; %bb.0: ; %entry440; GFX12-CU-NEXT: v_mov_b32_e32 v1, v0441; GFX12-CU-NEXT: s_load_b32 s2, s[4:5], 0x0442; GFX12-CU-NEXT: s_load_b64 s[0:1], s[4:5], 0x8443; GFX12-CU-NEXT: v_mov_b32_e32 v0, 0444; GFX12-CU-NEXT: s_mov_b32 s3, 0x3ff445; GFX12-CU-NEXT: v_and_b32_e64 v1, v1, s3446; GFX12-CU-NEXT: s_mov_b32 s3, 2447; GFX12-CU-NEXT: s_wait_alu depctr_sa_sdst(0)448; GFX12-CU-NEXT: v_lshlrev_b32_e64 v1, s3, v1449; GFX12-CU-NEXT: s_wait_kmcnt 0x0450; GFX12-CU-NEXT: scratch_load_b32 v1, v1, s2 th:TH_LOAD_NT451; GFX12-CU-NEXT: s_wait_loadcnt 0x0452; GFX12-CU-NEXT: global_store_b32 v0, v1, s[0:1]453; GFX12-CU-NEXT: s_endpgm454;455; GFX1250-LABEL: private_nontemporal_load_1:456; GFX1250: ; %bb.0: ; %entry457; GFX1250-NEXT: s_setreg_imm32_b32 hwreg(HW_REG_WAVE_MODE, 25, 1), 1458; GFX1250-NEXT: v_mov_b32_e32 v1, v0459; GFX1250-NEXT: s_load_b32 s2, s[4:5], 0x0460; GFX1250-NEXT: s_load_b64 s[0:1], s[4:5], 0x8461; GFX1250-NEXT: v_mov_b32_e32 v0, 0462; GFX1250-NEXT: s_mov_b32 s3, 0x3ff463; GFX1250-NEXT: v_and_b32_e64 v1, v1, s3464; GFX1250-NEXT: s_wait_kmcnt 0x0465; GFX1250-NEXT: scratch_load_b32 v1, v1, s2 scale_offset th:TH_LOAD_NT466; GFX1250-NEXT: s_wait_loadcnt 0x0467; GFX1250-NEXT: global_store_b32 v0, v1, s[0:1]468; GFX1250-NEXT: s_endpgm469 ptr addrspace(5) %in, ptr addrspace(1) %out) {470entry:471 %tid = call i32 @llvm.amdgcn.workitem.id.x()472 %val.gep = getelementptr inbounds i32, ptr addrspace(5) %in, i32 %tid473 %val = load i32, ptr addrspace(5) %val.gep, align 4, !nontemporal !0474 store i32 %val, ptr addrspace(1) %out475 ret void476}477 478define amdgpu_kernel void @private_nontemporal_store_0(479; GFX6-LABEL: private_nontemporal_store_0:480; GFX6: ; %bb.0: ; %entry481; GFX6-NEXT: s_add_u32 s0, s0, s15482; GFX6-NEXT: s_addc_u32 s1, s1, 0483; GFX6-NEXT: s_load_dwordx2 s[6:7], s[8:9], 0x0484; GFX6-NEXT: s_load_dword s4, s[8:9], 0x2485; GFX6-NEXT: s_waitcnt lgkmcnt(0)486; GFX6-NEXT: s_load_dword s5, s[6:7], 0x0487; GFX6-NEXT: s_waitcnt lgkmcnt(0)488; GFX6-NEXT: v_mov_b32_e32 v0, s5489; GFX6-NEXT: v_mov_b32_e32 v1, s4490; GFX6-NEXT: buffer_store_dword v0, v1, s[0:3], 0 offen glc slc491; GFX6-NEXT: s_endpgm492;493; GFX7-LABEL: private_nontemporal_store_0:494; GFX7: ; %bb.0: ; %entry495; GFX7-NEXT: s_add_u32 s0, s0, s17496; GFX7-NEXT: s_addc_u32 s1, s1, 0497; GFX7-NEXT: s_load_dwordx2 s[6:7], s[8:9], 0x0498; GFX7-NEXT: s_load_dword s4, s[8:9], 0x2499; GFX7-NEXT: s_waitcnt lgkmcnt(0)500; GFX7-NEXT: s_load_dword s5, s[6:7], 0x0501; GFX7-NEXT: s_waitcnt lgkmcnt(0)502; GFX7-NEXT: v_mov_b32_e32 v0, s5503; GFX7-NEXT: v_mov_b32_e32 v1, s4504; GFX7-NEXT: buffer_store_dword v0, v1, s[0:3], 0 offen glc slc505; GFX7-NEXT: s_endpgm506;507; GFX10-WGP-LABEL: private_nontemporal_store_0:508; GFX10-WGP: ; %bb.0: ; %entry509; GFX10-WGP-NEXT: s_add_u32 s0, s0, s17510; GFX10-WGP-NEXT: s_addc_u32 s1, s1, 0511; GFX10-WGP-NEXT: s_load_dwordx2 s[6:7], s[8:9], 0x0512; GFX10-WGP-NEXT: s_load_dword s4, s[8:9], 0x8513; GFX10-WGP-NEXT: s_waitcnt lgkmcnt(0)514; GFX10-WGP-NEXT: s_load_dword s5, s[6:7], 0x0515; GFX10-WGP-NEXT: s_waitcnt lgkmcnt(0)516; GFX10-WGP-NEXT: v_mov_b32_e32 v0, s5517; GFX10-WGP-NEXT: v_mov_b32_e32 v1, s4518; GFX10-WGP-NEXT: buffer_store_dword v0, v1, s[0:3], 0 offen glc slc519; GFX10-WGP-NEXT: s_endpgm520;521; GFX10-CU-LABEL: private_nontemporal_store_0:522; GFX10-CU: ; %bb.0: ; %entry523; GFX10-CU-NEXT: s_add_u32 s0, s0, s17524; GFX10-CU-NEXT: s_addc_u32 s1, s1, 0525; GFX10-CU-NEXT: s_load_dwordx2 s[6:7], s[8:9], 0x0526; GFX10-CU-NEXT: s_load_dword s4, s[8:9], 0x8527; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)528; GFX10-CU-NEXT: s_load_dword s5, s[6:7], 0x0529; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)530; GFX10-CU-NEXT: v_mov_b32_e32 v0, s5531; GFX10-CU-NEXT: v_mov_b32_e32 v1, s4532; GFX10-CU-NEXT: buffer_store_dword v0, v1, s[0:3], 0 offen glc slc533; GFX10-CU-NEXT: s_endpgm534;535; SKIP-CACHE-INV-LABEL: private_nontemporal_store_0:536; SKIP-CACHE-INV: ; %bb.0: ; %entry537; SKIP-CACHE-INV-NEXT: s_getpc_b64 s[12:13]538; SKIP-CACHE-INV-NEXT: s_mov_b32 s12, s0539; SKIP-CACHE-INV-NEXT: s_load_dwordx4 s[12:15], s[12:13], 0x0540; SKIP-CACHE-INV-NEXT: s_waitcnt lgkmcnt(0)541; SKIP-CACHE-INV-NEXT: s_add_u32 s12, s12, s11542; SKIP-CACHE-INV-NEXT: s_addc_u32 s13, s13, 0543; SKIP-CACHE-INV-NEXT: s_load_dwordx2 s[2:3], s[4:5], 0x0544; SKIP-CACHE-INV-NEXT: s_load_dword s0, s[4:5], 0x2545; SKIP-CACHE-INV-NEXT: s_waitcnt lgkmcnt(0)546; SKIP-CACHE-INV-NEXT: s_load_dword s1, s[2:3], 0x0547; SKIP-CACHE-INV-NEXT: s_waitcnt lgkmcnt(0)548; SKIP-CACHE-INV-NEXT: v_mov_b32_e32 v0, s1549; SKIP-CACHE-INV-NEXT: v_mov_b32_e32 v1, s0550; SKIP-CACHE-INV-NEXT: buffer_store_dword v0, v1, s[12:15], 0 offen glc slc551; SKIP-CACHE-INV-NEXT: s_endpgm552;553; GFX90A-NOTTGSPLIT-LABEL: private_nontemporal_store_0:554; GFX90A-NOTTGSPLIT: ; %bb.0: ; %entry555; GFX90A-NOTTGSPLIT-NEXT: s_add_u32 s0, s0, s17556; GFX90A-NOTTGSPLIT-NEXT: s_addc_u32 s1, s1, 0557; GFX90A-NOTTGSPLIT-NEXT: s_load_dwordx2 s[6:7], s[8:9], 0x0558; GFX90A-NOTTGSPLIT-NEXT: s_load_dword s4, s[8:9], 0x8559; GFX90A-NOTTGSPLIT-NEXT: s_waitcnt lgkmcnt(0)560; GFX90A-NOTTGSPLIT-NEXT: s_load_dword s5, s[6:7], 0x0561; GFX90A-NOTTGSPLIT-NEXT: s_waitcnt lgkmcnt(0)562; GFX90A-NOTTGSPLIT-NEXT: v_mov_b32_e32 v0, s5563; GFX90A-NOTTGSPLIT-NEXT: v_mov_b32_e32 v1, s4564; GFX90A-NOTTGSPLIT-NEXT: buffer_store_dword v0, v1, s[0:3], 0 offen glc slc565; GFX90A-NOTTGSPLIT-NEXT: s_endpgm566;567; GFX90A-TGSPLIT-LABEL: private_nontemporal_store_0:568; GFX90A-TGSPLIT: ; %bb.0: ; %entry569; GFX90A-TGSPLIT-NEXT: s_add_u32 s0, s0, s17570; GFX90A-TGSPLIT-NEXT: s_addc_u32 s1, s1, 0571; GFX90A-TGSPLIT-NEXT: s_load_dwordx2 s[6:7], s[8:9], 0x0572; GFX90A-TGSPLIT-NEXT: s_load_dword s4, s[8:9], 0x8573; GFX90A-TGSPLIT-NEXT: s_waitcnt lgkmcnt(0)574; GFX90A-TGSPLIT-NEXT: s_load_dword s5, s[6:7], 0x0575; GFX90A-TGSPLIT-NEXT: s_waitcnt lgkmcnt(0)576; GFX90A-TGSPLIT-NEXT: v_mov_b32_e32 v0, s5577; GFX90A-TGSPLIT-NEXT: v_mov_b32_e32 v1, s4578; GFX90A-TGSPLIT-NEXT: buffer_store_dword v0, v1, s[0:3], 0 offen glc slc579; GFX90A-TGSPLIT-NEXT: s_endpgm580;581; GFX942-NOTTGSPLIT-LABEL: private_nontemporal_store_0:582; GFX942-NOTTGSPLIT: ; %bb.0: ; %entry583; GFX942-NOTTGSPLIT-NEXT: s_load_dwordx2 s[2:3], s[4:5], 0x0584; GFX942-NOTTGSPLIT-NEXT: s_load_dword s0, s[4:5], 0x8585; GFX942-NOTTGSPLIT-NEXT: s_waitcnt lgkmcnt(0)586; GFX942-NOTTGSPLIT-NEXT: s_load_dword s1, s[2:3], 0x0587; GFX942-NOTTGSPLIT-NEXT: s_waitcnt lgkmcnt(0)588; GFX942-NOTTGSPLIT-NEXT: v_mov_b32_e32 v0, s1589; GFX942-NOTTGSPLIT-NEXT: scratch_store_dword off, v0, s0 nt590; GFX942-NOTTGSPLIT-NEXT: s_endpgm591;592; GFX942-TGSPLIT-LABEL: private_nontemporal_store_0:593; GFX942-TGSPLIT: ; %bb.0: ; %entry594; GFX942-TGSPLIT-NEXT: s_load_dwordx2 s[2:3], s[4:5], 0x0595; GFX942-TGSPLIT-NEXT: s_load_dword s0, s[4:5], 0x8596; GFX942-TGSPLIT-NEXT: s_waitcnt lgkmcnt(0)597; GFX942-TGSPLIT-NEXT: s_load_dword s1, s[2:3], 0x0598; GFX942-TGSPLIT-NEXT: s_waitcnt lgkmcnt(0)599; GFX942-TGSPLIT-NEXT: v_mov_b32_e32 v0, s1600; GFX942-TGSPLIT-NEXT: scratch_store_dword off, v0, s0 nt601; GFX942-TGSPLIT-NEXT: s_endpgm602;603; GFX11-WGP-LABEL: private_nontemporal_store_0:604; GFX11-WGP: ; %bb.0: ; %entry605; GFX11-WGP-NEXT: s_load_b64 s[2:3], s[4:5], 0x0606; GFX11-WGP-NEXT: s_load_b32 s0, s[4:5], 0x8607; GFX11-WGP-NEXT: s_waitcnt lgkmcnt(0)608; GFX11-WGP-NEXT: s_load_b32 s1, s[2:3], 0x0609; GFX11-WGP-NEXT: s_waitcnt lgkmcnt(0)610; GFX11-WGP-NEXT: v_mov_b32_e32 v0, s1611; GFX11-WGP-NEXT: scratch_store_b32 off, v0, s0 glc slc dlc612; GFX11-WGP-NEXT: s_endpgm613;614; GFX11-CU-LABEL: private_nontemporal_store_0:615; GFX11-CU: ; %bb.0: ; %entry616; GFX11-CU-NEXT: s_load_b64 s[2:3], s[4:5], 0x0617; GFX11-CU-NEXT: s_load_b32 s0, s[4:5], 0x8618; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)619; GFX11-CU-NEXT: s_load_b32 s1, s[2:3], 0x0620; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)621; GFX11-CU-NEXT: v_mov_b32_e32 v0, s1622; GFX11-CU-NEXT: scratch_store_b32 off, v0, s0 glc slc dlc623; GFX11-CU-NEXT: s_endpgm624;625; GFX12-WGP-LABEL: private_nontemporal_store_0:626; GFX12-WGP: ; %bb.0: ; %entry627; GFX12-WGP-NEXT: s_load_b64 s[2:3], s[4:5], 0x0628; GFX12-WGP-NEXT: s_load_b32 s0, s[4:5], 0x8629; GFX12-WGP-NEXT: s_wait_kmcnt 0x0630; GFX12-WGP-NEXT: s_load_b32 s1, s[2:3], 0x0631; GFX12-WGP-NEXT: s_wait_kmcnt 0x0632; GFX12-WGP-NEXT: v_mov_b32_e32 v0, s1633; GFX12-WGP-NEXT: scratch_store_b32 off, v0, s0 th:TH_STORE_NT634; GFX12-WGP-NEXT: s_endpgm635;636; GFX12-CU-LABEL: private_nontemporal_store_0:637; GFX12-CU: ; %bb.0: ; %entry638; GFX12-CU-NEXT: s_load_b64 s[2:3], s[4:5], 0x0639; GFX12-CU-NEXT: s_load_b32 s0, s[4:5], 0x8640; GFX12-CU-NEXT: s_wait_kmcnt 0x0641; GFX12-CU-NEXT: s_load_b32 s1, s[2:3], 0x0642; GFX12-CU-NEXT: s_wait_kmcnt 0x0643; GFX12-CU-NEXT: v_mov_b32_e32 v0, s1644; GFX12-CU-NEXT: scratch_store_b32 off, v0, s0 th:TH_STORE_NT645; GFX12-CU-NEXT: s_endpgm646;647; GFX1250-LABEL: private_nontemporal_store_0:648; GFX1250: ; %bb.0: ; %entry649; GFX1250-NEXT: s_setreg_imm32_b32 hwreg(HW_REG_WAVE_MODE, 25, 1), 1650; GFX1250-NEXT: s_load_b64 s[2:3], s[4:5], 0x0651; GFX1250-NEXT: s_load_b32 s0, s[4:5], 0x8652; GFX1250-NEXT: s_wait_kmcnt 0x0653; GFX1250-NEXT: s_load_b32 s1, s[2:3], 0x0654; GFX1250-NEXT: s_wait_kmcnt 0x0655; GFX1250-NEXT: v_mov_b32_e32 v0, s1656; GFX1250-NEXT: scratch_store_b32 off, v0, s0 th:TH_STORE_NT657; GFX1250-NEXT: s_endpgm658 ptr addrspace(1) %in, ptr addrspace(5) %out) {659entry:660 %val = load i32, ptr addrspace(1) %in, align 4661 store i32 %val, ptr addrspace(5) %out, !nontemporal !0662 ret void663}664 665define amdgpu_kernel void @private_nontemporal_store_1(666; GFX6-LABEL: private_nontemporal_store_1:667; GFX6: ; %bb.0: ; %entry668; GFX6-NEXT: s_add_u32 s0, s0, s15669; GFX6-NEXT: s_addc_u32 s1, s1, 0670; GFX6-NEXT: s_load_dwordx2 s[6:7], s[8:9], 0x0671; GFX6-NEXT: s_load_dword s5, s[8:9], 0x2672; GFX6-NEXT: s_waitcnt lgkmcnt(0)673; GFX6-NEXT: s_load_dword s4, s[6:7], 0x0674; GFX6-NEXT: s_mov_b32 s6, 2675; GFX6-NEXT: v_lshlrev_b32_e64 v0, s6, v0676; GFX6-NEXT: v_add_i32_e64 v1, s[6:7], s5, v0677; GFX6-NEXT: s_waitcnt lgkmcnt(0)678; GFX6-NEXT: v_mov_b32_e32 v0, s4679; GFX6-NEXT: buffer_store_dword v0, v1, s[0:3], 0 offen glc slc680; GFX6-NEXT: s_endpgm681;682; GFX7-LABEL: private_nontemporal_store_1:683; GFX7: ; %bb.0: ; %entry684; GFX7-NEXT: s_add_u32 s0, s0, s17685; GFX7-NEXT: s_addc_u32 s1, s1, 0686; GFX7-NEXT: s_load_dwordx2 s[6:7], s[8:9], 0x0687; GFX7-NEXT: s_load_dword s5, s[8:9], 0x2688; GFX7-NEXT: s_waitcnt lgkmcnt(0)689; GFX7-NEXT: s_load_dword s4, s[6:7], 0x0690; GFX7-NEXT: s_mov_b32 s6, 2691; GFX7-NEXT: v_lshlrev_b32_e64 v0, s6, v0692; GFX7-NEXT: v_add_i32_e64 v1, s[6:7], s5, v0693; GFX7-NEXT: s_waitcnt lgkmcnt(0)694; GFX7-NEXT: v_mov_b32_e32 v0, s4695; GFX7-NEXT: buffer_store_dword v0, v1, s[0:3], 0 offen glc slc696; GFX7-NEXT: s_endpgm697;698; GFX10-WGP-LABEL: private_nontemporal_store_1:699; GFX10-WGP: ; %bb.0: ; %entry700; GFX10-WGP-NEXT: s_add_u32 s0, s0, s17701; GFX10-WGP-NEXT: s_addc_u32 s1, s1, 0702; GFX10-WGP-NEXT: s_load_dwordx2 s[6:7], s[8:9], 0x0703; GFX10-WGP-NEXT: s_load_dword s5, s[8:9], 0x8704; GFX10-WGP-NEXT: s_waitcnt lgkmcnt(0)705; GFX10-WGP-NEXT: s_load_dword s4, s[6:7], 0x0706; GFX10-WGP-NEXT: v_lshl_add_u32 v1, v0, 2, s5707; GFX10-WGP-NEXT: s_waitcnt lgkmcnt(0)708; GFX10-WGP-NEXT: v_mov_b32_e32 v0, s4709; GFX10-WGP-NEXT: buffer_store_dword v0, v1, s[0:3], 0 offen glc slc710; GFX10-WGP-NEXT: s_endpgm711;712; GFX10-CU-LABEL: private_nontemporal_store_1:713; GFX10-CU: ; %bb.0: ; %entry714; GFX10-CU-NEXT: s_add_u32 s0, s0, s17715; GFX10-CU-NEXT: s_addc_u32 s1, s1, 0716; GFX10-CU-NEXT: s_load_dwordx2 s[6:7], s[8:9], 0x0717; GFX10-CU-NEXT: s_load_dword s5, s[8:9], 0x8718; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)719; GFX10-CU-NEXT: s_load_dword s4, s[6:7], 0x0720; GFX10-CU-NEXT: v_lshl_add_u32 v1, v0, 2, s5721; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)722; GFX10-CU-NEXT: v_mov_b32_e32 v0, s4723; GFX10-CU-NEXT: buffer_store_dword v0, v1, s[0:3], 0 offen glc slc724; GFX10-CU-NEXT: s_endpgm725;726; SKIP-CACHE-INV-LABEL: private_nontemporal_store_1:727; SKIP-CACHE-INV: ; %bb.0: ; %entry728; SKIP-CACHE-INV-NEXT: s_getpc_b64 s[12:13]729; SKIP-CACHE-INV-NEXT: s_mov_b32 s12, s0730; SKIP-CACHE-INV-NEXT: s_load_dwordx4 s[12:15], s[12:13], 0x0731; SKIP-CACHE-INV-NEXT: s_waitcnt lgkmcnt(0)732; SKIP-CACHE-INV-NEXT: s_add_u32 s12, s12, s11733; SKIP-CACHE-INV-NEXT: s_addc_u32 s13, s13, 0734; SKIP-CACHE-INV-NEXT: s_load_dwordx2 s[2:3], s[4:5], 0x0735; SKIP-CACHE-INV-NEXT: s_load_dword s1, s[4:5], 0x2736; SKIP-CACHE-INV-NEXT: s_waitcnt lgkmcnt(0)737; SKIP-CACHE-INV-NEXT: s_load_dword s0, s[2:3], 0x0738; SKIP-CACHE-INV-NEXT: s_mov_b32 s2, 2739; SKIP-CACHE-INV-NEXT: v_lshlrev_b32_e64 v0, s2, v0740; SKIP-CACHE-INV-NEXT: v_add_i32_e64 v1, s[2:3], s1, v0741; SKIP-CACHE-INV-NEXT: s_waitcnt lgkmcnt(0)742; SKIP-CACHE-INV-NEXT: v_mov_b32_e32 v0, s0743; SKIP-CACHE-INV-NEXT: buffer_store_dword v0, v1, s[12:15], 0 offen glc slc744; SKIP-CACHE-INV-NEXT: s_endpgm745;746; GFX90A-NOTTGSPLIT-LABEL: private_nontemporal_store_1:747; GFX90A-NOTTGSPLIT: ; %bb.0: ; %entry748; GFX90A-NOTTGSPLIT-NEXT: s_add_u32 s0, s0, s17749; GFX90A-NOTTGSPLIT-NEXT: s_addc_u32 s1, s1, 0750; GFX90A-NOTTGSPLIT-NEXT: s_load_dwordx2 s[6:7], s[8:9], 0x0751; GFX90A-NOTTGSPLIT-NEXT: s_load_dword s5, s[8:9], 0x8752; GFX90A-NOTTGSPLIT-NEXT: s_waitcnt lgkmcnt(0)753; GFX90A-NOTTGSPLIT-NEXT: s_load_dword s4, s[6:7], 0x0754; GFX90A-NOTTGSPLIT-NEXT: s_mov_b32 s6, 0x3ff755; GFX90A-NOTTGSPLIT-NEXT: v_and_b32_e64 v0, v0, s6756; GFX90A-NOTTGSPLIT-NEXT: v_lshl_add_u32 v1, v0, 2, s5757; GFX90A-NOTTGSPLIT-NEXT: s_waitcnt lgkmcnt(0)758; GFX90A-NOTTGSPLIT-NEXT: v_mov_b32_e32 v0, s4759; GFX90A-NOTTGSPLIT-NEXT: buffer_store_dword v0, v1, s[0:3], 0 offen glc slc760; GFX90A-NOTTGSPLIT-NEXT: s_endpgm761;762; GFX90A-TGSPLIT-LABEL: private_nontemporal_store_1:763; GFX90A-TGSPLIT: ; %bb.0: ; %entry764; GFX90A-TGSPLIT-NEXT: s_add_u32 s0, s0, s17765; GFX90A-TGSPLIT-NEXT: s_addc_u32 s1, s1, 0766; GFX90A-TGSPLIT-NEXT: s_load_dwordx2 s[6:7], s[8:9], 0x0767; GFX90A-TGSPLIT-NEXT: s_load_dword s5, s[8:9], 0x8768; GFX90A-TGSPLIT-NEXT: s_waitcnt lgkmcnt(0)769; GFX90A-TGSPLIT-NEXT: s_load_dword s4, s[6:7], 0x0770; GFX90A-TGSPLIT-NEXT: s_mov_b32 s6, 0x3ff771; GFX90A-TGSPLIT-NEXT: v_and_b32_e64 v0, v0, s6772; GFX90A-TGSPLIT-NEXT: v_lshl_add_u32 v1, v0, 2, s5773; GFX90A-TGSPLIT-NEXT: s_waitcnt lgkmcnt(0)774; GFX90A-TGSPLIT-NEXT: v_mov_b32_e32 v0, s4775; GFX90A-TGSPLIT-NEXT: buffer_store_dword v0, v1, s[0:3], 0 offen glc slc776; GFX90A-TGSPLIT-NEXT: s_endpgm777;778; GFX942-NOTTGSPLIT-LABEL: private_nontemporal_store_1:779; GFX942-NOTTGSPLIT: ; %bb.0: ; %entry780; GFX942-NOTTGSPLIT-NEXT: s_load_dwordx2 s[2:3], s[4:5], 0x0781; GFX942-NOTTGSPLIT-NEXT: s_load_dword s1, s[4:5], 0x8782; GFX942-NOTTGSPLIT-NEXT: s_waitcnt lgkmcnt(0)783; GFX942-NOTTGSPLIT-NEXT: s_load_dword s0, s[2:3], 0x0784; GFX942-NOTTGSPLIT-NEXT: s_mov_b32 s2, 0x3ff785; GFX942-NOTTGSPLIT-NEXT: v_and_b32_e64 v0, v0, s2786; GFX942-NOTTGSPLIT-NEXT: v_lshl_add_u32 v1, v0, 2, s1787; GFX942-NOTTGSPLIT-NEXT: s_waitcnt lgkmcnt(0)788; GFX942-NOTTGSPLIT-NEXT: v_mov_b32_e32 v0, s0789; GFX942-NOTTGSPLIT-NEXT: scratch_store_dword v1, v0, off nt790; GFX942-NOTTGSPLIT-NEXT: s_endpgm791;792; GFX942-TGSPLIT-LABEL: private_nontemporal_store_1:793; GFX942-TGSPLIT: ; %bb.0: ; %entry794; GFX942-TGSPLIT-NEXT: s_load_dwordx2 s[2:3], s[4:5], 0x0795; GFX942-TGSPLIT-NEXT: s_load_dword s1, s[4:5], 0x8796; GFX942-TGSPLIT-NEXT: s_waitcnt lgkmcnt(0)797; GFX942-TGSPLIT-NEXT: s_load_dword s0, s[2:3], 0x0798; GFX942-TGSPLIT-NEXT: s_mov_b32 s2, 0x3ff799; GFX942-TGSPLIT-NEXT: v_and_b32_e64 v0, v0, s2800; GFX942-TGSPLIT-NEXT: v_lshl_add_u32 v1, v0, 2, s1801; GFX942-TGSPLIT-NEXT: s_waitcnt lgkmcnt(0)802; GFX942-TGSPLIT-NEXT: v_mov_b32_e32 v0, s0803; GFX942-TGSPLIT-NEXT: scratch_store_dword v1, v0, off nt804; GFX942-TGSPLIT-NEXT: s_endpgm805;806; GFX11-WGP-LABEL: private_nontemporal_store_1:807; GFX11-WGP: ; %bb.0: ; %entry808; GFX11-WGP-NEXT: s_load_b64 s[2:3], s[4:5], 0x0809; GFX11-WGP-NEXT: s_load_b32 s1, s[4:5], 0x8810; GFX11-WGP-NEXT: s_waitcnt lgkmcnt(0)811; GFX11-WGP-NEXT: s_load_b32 s0, s[2:3], 0x0812; GFX11-WGP-NEXT: s_mov_b32 s2, 0x3ff813; GFX11-WGP-NEXT: v_and_b32_e64 v0, v0, s2814; GFX11-WGP-NEXT: v_lshl_add_u32 v1, v0, 2, s1815; GFX11-WGP-NEXT: s_waitcnt lgkmcnt(0)816; GFX11-WGP-NEXT: v_mov_b32_e32 v0, s0817; GFX11-WGP-NEXT: scratch_store_b32 v1, v0, off glc slc dlc818; GFX11-WGP-NEXT: s_endpgm819;820; GFX11-CU-LABEL: private_nontemporal_store_1:821; GFX11-CU: ; %bb.0: ; %entry822; GFX11-CU-NEXT: s_load_b64 s[2:3], s[4:5], 0x0823; GFX11-CU-NEXT: s_load_b32 s1, s[4:5], 0x8824; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)825; GFX11-CU-NEXT: s_load_b32 s0, s[2:3], 0x0826; GFX11-CU-NEXT: s_mov_b32 s2, 0x3ff827; GFX11-CU-NEXT: v_and_b32_e64 v0, v0, s2828; GFX11-CU-NEXT: v_lshl_add_u32 v1, v0, 2, s1829; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)830; GFX11-CU-NEXT: v_mov_b32_e32 v0, s0831; GFX11-CU-NEXT: scratch_store_b32 v1, v0, off glc slc dlc832; GFX11-CU-NEXT: s_endpgm833;834; GFX12-WGP-LABEL: private_nontemporal_store_1:835; GFX12-WGP: ; %bb.0: ; %entry836; GFX12-WGP-NEXT: s_load_b64 s[2:3], s[4:5], 0x0837; GFX12-WGP-NEXT: s_load_b32 s0, s[4:5], 0x8838; GFX12-WGP-NEXT: s_wait_kmcnt 0x0839; GFX12-WGP-NEXT: s_load_b32 s1, s[2:3], 0x0840; GFX12-WGP-NEXT: s_mov_b32 s2, 0x3ff841; GFX12-WGP-NEXT: v_and_b32_e64 v0, v0, s2842; GFX12-WGP-NEXT: s_mov_b32 s2, 2843; GFX12-WGP-NEXT: s_wait_alu depctr_sa_sdst(0)844; GFX12-WGP-NEXT: v_lshlrev_b32_e64 v1, s2, v0845; GFX12-WGP-NEXT: s_wait_kmcnt 0x0846; GFX12-WGP-NEXT: v_mov_b32_e32 v0, s1847; GFX12-WGP-NEXT: scratch_store_b32 v1, v0, s0 th:TH_STORE_NT848; GFX12-WGP-NEXT: s_endpgm849;850; GFX12-CU-LABEL: private_nontemporal_store_1:851; GFX12-CU: ; %bb.0: ; %entry852; GFX12-CU-NEXT: s_load_b64 s[2:3], s[4:5], 0x0853; GFX12-CU-NEXT: s_load_b32 s0, s[4:5], 0x8854; GFX12-CU-NEXT: s_wait_kmcnt 0x0855; GFX12-CU-NEXT: s_load_b32 s1, s[2:3], 0x0856; GFX12-CU-NEXT: s_mov_b32 s2, 0x3ff857; GFX12-CU-NEXT: v_and_b32_e64 v0, v0, s2858; GFX12-CU-NEXT: s_mov_b32 s2, 2859; GFX12-CU-NEXT: s_wait_alu depctr_sa_sdst(0)860; GFX12-CU-NEXT: v_lshlrev_b32_e64 v1, s2, v0861; GFX12-CU-NEXT: s_wait_kmcnt 0x0862; GFX12-CU-NEXT: v_mov_b32_e32 v0, s1863; GFX12-CU-NEXT: scratch_store_b32 v1, v0, s0 th:TH_STORE_NT864; GFX12-CU-NEXT: s_endpgm865;866; GFX1250-LABEL: private_nontemporal_store_1:867; GFX1250: ; %bb.0: ; %entry868; GFX1250-NEXT: s_setreg_imm32_b32 hwreg(HW_REG_WAVE_MODE, 25, 1), 1869; GFX1250-NEXT: s_load_b64 s[2:3], s[4:5], 0x0870; GFX1250-NEXT: s_load_b32 s0, s[4:5], 0x8871; GFX1250-NEXT: s_wait_kmcnt 0x0872; GFX1250-NEXT: s_load_b32 s1, s[2:3], 0x0873; GFX1250-NEXT: s_wait_xcnt 0x0874; GFX1250-NEXT: s_mov_b32 s2, 0x3ff875; GFX1250-NEXT: v_and_b32_e64 v1, v0, s2876; GFX1250-NEXT: s_wait_kmcnt 0x0877; GFX1250-NEXT: v_mov_b32_e32 v0, s1878; GFX1250-NEXT: scratch_store_b32 v1, v0, s0 scale_offset th:TH_STORE_NT879; GFX1250-NEXT: s_endpgm880 ptr addrspace(1) %in, ptr addrspace(5) %out) {881entry:882 %tid = call i32 @llvm.amdgcn.workitem.id.x()883 %val = load i32, ptr addrspace(1) %in, align 4884 %out.gep = getelementptr inbounds i32, ptr addrspace(5) %out, i32 %tid885 store i32 %val, ptr addrspace(5) %out.gep, !nontemporal !0886 ret void887}888 889define amdgpu_kernel void @private_nontemporal_volatile_load(890; GFX6-LABEL: private_nontemporal_volatile_load:891; GFX6: ; %bb.0: ; %entry892; GFX6-NEXT: s_add_u32 s0, s0, s15893; GFX6-NEXT: s_addc_u32 s1, s1, 0894; GFX6-NEXT: s_mov_b64 s[4:5], s[8:9]895; GFX6-NEXT: s_load_dword s8, s[4:5], 0x0896; GFX6-NEXT: s_load_dwordx2 s[4:5], s[4:5], 0x2897; GFX6-NEXT: s_waitcnt lgkmcnt(0)898; GFX6-NEXT: s_mov_b32 s11, s5899; GFX6-NEXT: ; kill: def $sgpr4 killed $sgpr4 killed $sgpr4_sgpr5900; GFX6-NEXT: s_mov_b32 s9, 0x100f000901; GFX6-NEXT: s_mov_b32 s10, -1902; GFX6-NEXT: ; kill: def $sgpr4 killed $sgpr4 def $sgpr4_sgpr5_sgpr6_sgpr7903; GFX6-NEXT: s_mov_b32 s5, s11904; GFX6-NEXT: s_mov_b32 s6, s10905; GFX6-NEXT: s_mov_b32 s7, s9906; GFX6-NEXT: v_mov_b32_e32 v0, s8907; GFX6-NEXT: buffer_load_dword v0, v0, s[0:3], 0 offen glc908; GFX6-NEXT: s_waitcnt vmcnt(0)909; GFX6-NEXT: buffer_store_dword v0, off, s[4:7], 0910; GFX6-NEXT: s_endpgm911;912; GFX7-LABEL: private_nontemporal_volatile_load:913; GFX7: ; %bb.0: ; %entry914; GFX7-NEXT: s_mov_b32 flat_scratch_lo, s13915; GFX7-NEXT: s_add_i32 s12, s12, s17916; GFX7-NEXT: s_lshr_b32 flat_scratch_hi, s12, 8917; GFX7-NEXT: s_add_u32 s0, s0, s17918; GFX7-NEXT: s_addc_u32 s1, s1, 0919; GFX7-NEXT: s_load_dword s6, s[8:9], 0x0920; GFX7-NEXT: s_load_dwordx2 s[4:5], s[8:9], 0x2921; GFX7-NEXT: s_waitcnt lgkmcnt(0)922; GFX7-NEXT: v_mov_b32_e32 v0, s6923; GFX7-NEXT: buffer_load_dword v2, v0, s[0:3], 0 offen glc924; GFX7-NEXT: s_waitcnt vmcnt(0)925; GFX7-NEXT: v_mov_b32_e32 v0, s4926; GFX7-NEXT: v_mov_b32_e32 v1, s5927; GFX7-NEXT: flat_store_dword v[0:1], v2928; GFX7-NEXT: s_endpgm929;930; GFX10-WGP-LABEL: private_nontemporal_volatile_load:931; GFX10-WGP: ; %bb.0: ; %entry932; GFX10-WGP-NEXT: s_add_u32 s0, s0, s17933; GFX10-WGP-NEXT: s_addc_u32 s1, s1, 0934; GFX10-WGP-NEXT: s_load_dword s6, s[8:9], 0x0935; GFX10-WGP-NEXT: s_load_dwordx2 s[4:5], s[8:9], 0x8936; GFX10-WGP-NEXT: v_mov_b32_e32 v0, 0937; GFX10-WGP-NEXT: s_waitcnt lgkmcnt(0)938; GFX10-WGP-NEXT: v_mov_b32_e32 v1, s6939; GFX10-WGP-NEXT: buffer_load_dword v1, v1, s[0:3], 0 offen glc dlc940; GFX10-WGP-NEXT: s_waitcnt vmcnt(0)941; GFX10-WGP-NEXT: global_store_dword v0, v1, s[4:5]942; GFX10-WGP-NEXT: s_endpgm943;944; GFX10-CU-LABEL: private_nontemporal_volatile_load:945; GFX10-CU: ; %bb.0: ; %entry946; GFX10-CU-NEXT: s_add_u32 s0, s0, s17947; GFX10-CU-NEXT: s_addc_u32 s1, s1, 0948; GFX10-CU-NEXT: s_load_dword s6, s[8:9], 0x0949; GFX10-CU-NEXT: s_load_dwordx2 s[4:5], s[8:9], 0x8950; GFX10-CU-NEXT: v_mov_b32_e32 v0, 0951; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)952; GFX10-CU-NEXT: v_mov_b32_e32 v1, s6953; GFX10-CU-NEXT: buffer_load_dword v1, v1, s[0:3], 0 offen glc dlc954; GFX10-CU-NEXT: s_waitcnt vmcnt(0)955; GFX10-CU-NEXT: global_store_dword v0, v1, s[4:5]956; GFX10-CU-NEXT: s_endpgm957;958; SKIP-CACHE-INV-LABEL: private_nontemporal_volatile_load:959; SKIP-CACHE-INV: ; %bb.0: ; %entry960; SKIP-CACHE-INV-NEXT: s_getpc_b64 s[12:13]961; SKIP-CACHE-INV-NEXT: s_mov_b32 s12, s0962; SKIP-CACHE-INV-NEXT: s_load_dwordx4 s[12:15], s[12:13], 0x0963; SKIP-CACHE-INV-NEXT: s_waitcnt lgkmcnt(0)964; SKIP-CACHE-INV-NEXT: s_add_u32 s12, s12, s11965; SKIP-CACHE-INV-NEXT: s_addc_u32 s13, s13, 0966; SKIP-CACHE-INV-NEXT: s_mov_b64 s[0:1], s[4:5]967; SKIP-CACHE-INV-NEXT: s_load_dword s4, s[0:1], 0x0968; SKIP-CACHE-INV-NEXT: s_load_dwordx2 s[0:1], s[0:1], 0x2969; SKIP-CACHE-INV-NEXT: s_waitcnt lgkmcnt(0)970; SKIP-CACHE-INV-NEXT: s_mov_b32 s7, s1971; SKIP-CACHE-INV-NEXT: ; kill: def $sgpr0 killed $sgpr0 killed $sgpr0_sgpr1972; SKIP-CACHE-INV-NEXT: s_mov_b32 s5, 0xf000973; SKIP-CACHE-INV-NEXT: s_mov_b32 s6, -1974; SKIP-CACHE-INV-NEXT: ; kill: def $sgpr0 killed $sgpr0 def $sgpr0_sgpr1_sgpr2_sgpr3975; SKIP-CACHE-INV-NEXT: s_mov_b32 s1, s7976; SKIP-CACHE-INV-NEXT: s_mov_b32 s2, s6977; SKIP-CACHE-INV-NEXT: s_mov_b32 s3, s5978; SKIP-CACHE-INV-NEXT: v_mov_b32_e32 v0, s4979; SKIP-CACHE-INV-NEXT: buffer_load_dword v0, v0, s[12:15], 0 offen glc980; SKIP-CACHE-INV-NEXT: s_waitcnt vmcnt(0)981; SKIP-CACHE-INV-NEXT: buffer_store_dword v0, off, s[0:3], 0982; SKIP-CACHE-INV-NEXT: s_endpgm983;984; GFX90A-NOTTGSPLIT-LABEL: private_nontemporal_volatile_load:985; GFX90A-NOTTGSPLIT: ; %bb.0: ; %entry986; GFX90A-NOTTGSPLIT-NEXT: s_add_u32 s0, s0, s17987; GFX90A-NOTTGSPLIT-NEXT: s_addc_u32 s1, s1, 0988; GFX90A-NOTTGSPLIT-NEXT: s_load_dword s6, s[8:9], 0x0989; GFX90A-NOTTGSPLIT-NEXT: s_load_dwordx2 s[4:5], s[8:9], 0x8990; GFX90A-NOTTGSPLIT-NEXT: v_mov_b32_e32 v0, 0991; GFX90A-NOTTGSPLIT-NEXT: s_waitcnt lgkmcnt(0)992; GFX90A-NOTTGSPLIT-NEXT: v_mov_b32_e32 v1, s6993; GFX90A-NOTTGSPLIT-NEXT: buffer_load_dword v1, v1, s[0:3], 0 offen glc994; GFX90A-NOTTGSPLIT-NEXT: s_waitcnt vmcnt(0)995; GFX90A-NOTTGSPLIT-NEXT: global_store_dword v0, v1, s[4:5]996; GFX90A-NOTTGSPLIT-NEXT: s_endpgm997;998; GFX90A-TGSPLIT-LABEL: private_nontemporal_volatile_load:999; GFX90A-TGSPLIT: ; %bb.0: ; %entry1000; GFX90A-TGSPLIT-NEXT: s_add_u32 s0, s0, s171001; GFX90A-TGSPLIT-NEXT: s_addc_u32 s1, s1, 01002; GFX90A-TGSPLIT-NEXT: s_load_dword s6, s[8:9], 0x01003; GFX90A-TGSPLIT-NEXT: s_load_dwordx2 s[4:5], s[8:9], 0x81004; GFX90A-TGSPLIT-NEXT: v_mov_b32_e32 v0, 01005; GFX90A-TGSPLIT-NEXT: s_waitcnt lgkmcnt(0)1006; GFX90A-TGSPLIT-NEXT: v_mov_b32_e32 v1, s61007; GFX90A-TGSPLIT-NEXT: buffer_load_dword v1, v1, s[0:3], 0 offen glc1008; GFX90A-TGSPLIT-NEXT: s_waitcnt vmcnt(0)1009; GFX90A-TGSPLIT-NEXT: global_store_dword v0, v1, s[4:5]1010; GFX90A-TGSPLIT-NEXT: s_endpgm1011;1012; GFX942-NOTTGSPLIT-LABEL: private_nontemporal_volatile_load:1013; GFX942-NOTTGSPLIT: ; %bb.0: ; %entry1014; GFX942-NOTTGSPLIT-NEXT: s_load_dword s2, s[4:5], 0x01015; GFX942-NOTTGSPLIT-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x81016; GFX942-NOTTGSPLIT-NEXT: v_mov_b32_e32 v0, 01017; GFX942-NOTTGSPLIT-NEXT: s_waitcnt lgkmcnt(0)1018; GFX942-NOTTGSPLIT-NEXT: scratch_load_dword v1, off, s2 sc0 sc11019; GFX942-NOTTGSPLIT-NEXT: s_waitcnt vmcnt(0)1020; GFX942-NOTTGSPLIT-NEXT: global_store_dword v0, v1, s[0:1]1021; GFX942-NOTTGSPLIT-NEXT: s_endpgm1022;1023; GFX942-TGSPLIT-LABEL: private_nontemporal_volatile_load:1024; GFX942-TGSPLIT: ; %bb.0: ; %entry1025; GFX942-TGSPLIT-NEXT: s_load_dword s2, s[4:5], 0x01026; GFX942-TGSPLIT-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x81027; GFX942-TGSPLIT-NEXT: v_mov_b32_e32 v0, 01028; GFX942-TGSPLIT-NEXT: s_waitcnt lgkmcnt(0)1029; GFX942-TGSPLIT-NEXT: scratch_load_dword v1, off, s2 sc0 sc11030; GFX942-TGSPLIT-NEXT: s_waitcnt vmcnt(0)1031; GFX942-TGSPLIT-NEXT: global_store_dword v0, v1, s[0:1]1032; GFX942-TGSPLIT-NEXT: s_endpgm1033;1034; GFX11-WGP-LABEL: private_nontemporal_volatile_load:1035; GFX11-WGP: ; %bb.0: ; %entry1036; GFX11-WGP-NEXT: s_load_b32 s2, s[4:5], 0x01037; GFX11-WGP-NEXT: s_load_b64 s[0:1], s[4:5], 0x81038; GFX11-WGP-NEXT: v_mov_b32_e32 v0, 01039; GFX11-WGP-NEXT: s_waitcnt lgkmcnt(0)1040; GFX11-WGP-NEXT: scratch_load_b32 v1, off, s2 glc dlc1041; GFX11-WGP-NEXT: s_waitcnt vmcnt(0)1042; GFX11-WGP-NEXT: global_store_b32 v0, v1, s[0:1]1043; GFX11-WGP-NEXT: s_endpgm1044;1045; GFX11-CU-LABEL: private_nontemporal_volatile_load:1046; GFX11-CU: ; %bb.0: ; %entry1047; GFX11-CU-NEXT: s_load_b32 s2, s[4:5], 0x01048; GFX11-CU-NEXT: s_load_b64 s[0:1], s[4:5], 0x81049; GFX11-CU-NEXT: v_mov_b32_e32 v0, 01050; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)1051; GFX11-CU-NEXT: scratch_load_b32 v1, off, s2 glc dlc1052; GFX11-CU-NEXT: s_waitcnt vmcnt(0)1053; GFX11-CU-NEXT: global_store_b32 v0, v1, s[0:1]1054; GFX11-CU-NEXT: s_endpgm1055;1056; GFX12-WGP-LABEL: private_nontemporal_volatile_load:1057; GFX12-WGP: ; %bb.0: ; %entry1058; GFX12-WGP-NEXT: s_load_b32 s2, s[4:5], 0x01059; GFX12-WGP-NEXT: s_load_b64 s[0:1], s[4:5], 0x81060; GFX12-WGP-NEXT: v_mov_b32_e32 v0, 01061; GFX12-WGP-NEXT: s_wait_kmcnt 0x01062; GFX12-WGP-NEXT: scratch_load_b32 v1, off, s2 th:TH_LOAD_NT scope:SCOPE_SYS1063; GFX12-WGP-NEXT: s_wait_bvhcnt 0x01064; GFX12-WGP-NEXT: s_wait_samplecnt 0x01065; GFX12-WGP-NEXT: s_wait_loadcnt 0x01066; GFX12-WGP-NEXT: global_store_b32 v0, v1, s[0:1]1067; GFX12-WGP-NEXT: s_endpgm1068;1069; GFX12-CU-LABEL: private_nontemporal_volatile_load:1070; GFX12-CU: ; %bb.0: ; %entry1071; GFX12-CU-NEXT: s_load_b32 s2, s[4:5], 0x01072; GFX12-CU-NEXT: s_load_b64 s[0:1], s[4:5], 0x81073; GFX12-CU-NEXT: v_mov_b32_e32 v0, 01074; GFX12-CU-NEXT: s_wait_kmcnt 0x01075; GFX12-CU-NEXT: scratch_load_b32 v1, off, s2 th:TH_LOAD_NT scope:SCOPE_SYS1076; GFX12-CU-NEXT: s_wait_bvhcnt 0x01077; GFX12-CU-NEXT: s_wait_samplecnt 0x01078; GFX12-CU-NEXT: s_wait_loadcnt 0x01079; GFX12-CU-NEXT: global_store_b32 v0, v1, s[0:1]1080; GFX12-CU-NEXT: s_endpgm1081;1082; GFX1250-LABEL: private_nontemporal_volatile_load:1083; GFX1250: ; %bb.0: ; %entry1084; GFX1250-NEXT: s_setreg_imm32_b32 hwreg(HW_REG_WAVE_MODE, 25, 1), 11085; GFX1250-NEXT: s_load_b32 s2, s[4:5], 0x01086; GFX1250-NEXT: s_load_b64 s[0:1], s[4:5], 0x81087; GFX1250-NEXT: v_mov_b32_e32 v0, 01088; GFX1250-NEXT: s_wait_xcnt 0x01089; GFX1250-NEXT: s_wait_kmcnt 0x01090; GFX1250-NEXT: scratch_load_b32 v1, off, s2 th:TH_LOAD_NT scope:SCOPE_SYS1091; GFX1250-NEXT: s_wait_loadcnt 0x01092; GFX1250-NEXT: global_store_b32 v0, v1, s[0:1]1093; GFX1250-NEXT: s_endpgm1094 ptr addrspace(5) %in, ptr addrspace(1) %out) {1095entry:1096 %val = load volatile i32, ptr addrspace(5) %in, align 4, !nontemporal !01097 store i32 %val, ptr addrspace(1) %out1098 ret void1099}1100 1101!0 = !{i32 1}1102declare i32 @llvm.amdgcn.workitem.id.x()1103