brintos

brintos / llvm-project-archived public Read only

0
0
Text · 49.5 KiB · f15dbf0 Raw
1127 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 @global_nontemporal_load_0(18; GFX6-LABEL: global_nontemporal_load_0:19; GFX6:       ; %bb.0: ; %entry20; GFX6-NEXT:    s_mov_b64 s[4:5], s[8:9]21; GFX6-NEXT:    s_load_dwordx2 s[8:9], s[4:5], 0x022; GFX6-NEXT:    s_load_dwordx2 s[4:5], s[4:5], 0x223; GFX6-NEXT:    s_waitcnt lgkmcnt(0)24; GFX6-NEXT:    s_mov_b32 s12, s525; GFX6-NEXT:    ; kill: def $sgpr4 killed $sgpr4 killed $sgpr4_sgpr526; GFX6-NEXT:    s_mov_b32 s10, 0x100f00027; GFX6-NEXT:    s_mov_b32 s11, -128; GFX6-NEXT:    ; kill: def $sgpr4 killed $sgpr4 def $sgpr4_sgpr5_sgpr6_sgpr729; GFX6-NEXT:    s_mov_b32 s5, s1230; GFX6-NEXT:    s_mov_b32 s6, s1131; GFX6-NEXT:    s_mov_b32 s7, s1032; GFX6-NEXT:    s_load_dword s8, s[8:9], 0x033; GFX6-NEXT:    s_waitcnt lgkmcnt(0)34; GFX6-NEXT:    v_mov_b32_e32 v0, s835; GFX6-NEXT:    buffer_store_dword v0, off, s[4:7], 036; GFX6-NEXT:    s_endpgm37;38; GFX7-LABEL: global_nontemporal_load_0:39; GFX7:       ; %bb.0: ; %entry40; GFX7-NEXT:    s_mov_b32 flat_scratch_lo, s1341; GFX7-NEXT:    s_add_i32 s12, s12, s1742; GFX7-NEXT:    s_lshr_b32 flat_scratch_hi, s12, 843; GFX7-NEXT:    s_load_dwordx2 s[4:5], s[8:9], 0x044; GFX7-NEXT:    s_load_dwordx2 s[6:7], s[8:9], 0x245; GFX7-NEXT:    s_waitcnt lgkmcnt(0)46; GFX7-NEXT:    s_load_dword s4, s[4:5], 0x047; GFX7-NEXT:    v_mov_b32_e32 v0, s648; GFX7-NEXT:    v_mov_b32_e32 v1, s749; GFX7-NEXT:    s_waitcnt lgkmcnt(0)50; GFX7-NEXT:    v_mov_b32_e32 v2, s451; GFX7-NEXT:    flat_store_dword v[0:1], v252; GFX7-NEXT:    s_endpgm53;54; GFX10-WGP-LABEL: global_nontemporal_load_0:55; GFX10-WGP:       ; %bb.0: ; %entry56; GFX10-WGP-NEXT:    s_load_dwordx2 s[6:7], s[8:9], 0x057; GFX10-WGP-NEXT:    s_load_dwordx2 s[4:5], s[8:9], 0x858; GFX10-WGP-NEXT:    v_mov_b32_e32 v0, 059; GFX10-WGP-NEXT:    s_waitcnt lgkmcnt(0)60; GFX10-WGP-NEXT:    s_load_dword s6, s[6:7], 0x061; GFX10-WGP-NEXT:    s_waitcnt lgkmcnt(0)62; GFX10-WGP-NEXT:    v_mov_b32_e32 v1, s663; GFX10-WGP-NEXT:    global_store_dword v0, v1, s[4:5]64; GFX10-WGP-NEXT:    s_endpgm65;66; GFX10-CU-LABEL: global_nontemporal_load_0:67; GFX10-CU:       ; %bb.0: ; %entry68; GFX10-CU-NEXT:    s_load_dwordx2 s[6:7], s[8:9], 0x069; GFX10-CU-NEXT:    s_load_dwordx2 s[4:5], s[8:9], 0x870; GFX10-CU-NEXT:    v_mov_b32_e32 v0, 071; GFX10-CU-NEXT:    s_waitcnt lgkmcnt(0)72; GFX10-CU-NEXT:    s_load_dword s6, s[6:7], 0x073; GFX10-CU-NEXT:    s_waitcnt lgkmcnt(0)74; GFX10-CU-NEXT:    v_mov_b32_e32 v1, s675; GFX10-CU-NEXT:    global_store_dword v0, v1, s[4:5]76; GFX10-CU-NEXT:    s_endpgm77;78; SKIP-CACHE-INV-LABEL: global_nontemporal_load_0:79; SKIP-CACHE-INV:       ; %bb.0: ; %entry80; SKIP-CACHE-INV-NEXT:    s_mov_b64 s[0:1], s[4:5]81; SKIP-CACHE-INV-NEXT:    s_load_dwordx2 s[4:5], s[0:1], 0x082; SKIP-CACHE-INV-NEXT:    s_load_dwordx2 s[0:1], s[0:1], 0x283; SKIP-CACHE-INV-NEXT:    s_waitcnt lgkmcnt(0)84; SKIP-CACHE-INV-NEXT:    s_mov_b32 s8, s185; SKIP-CACHE-INV-NEXT:    ; kill: def $sgpr0 killed $sgpr0 killed $sgpr0_sgpr186; SKIP-CACHE-INV-NEXT:    s_mov_b32 s6, 0xf00087; SKIP-CACHE-INV-NEXT:    s_mov_b32 s7, -188; SKIP-CACHE-INV-NEXT:    ; kill: def $sgpr0 killed $sgpr0 def $sgpr0_sgpr1_sgpr2_sgpr389; SKIP-CACHE-INV-NEXT:    s_mov_b32 s1, s890; SKIP-CACHE-INV-NEXT:    s_mov_b32 s2, s791; SKIP-CACHE-INV-NEXT:    s_mov_b32 s3, s692; SKIP-CACHE-INV-NEXT:    s_load_dword s4, s[4:5], 0x093; SKIP-CACHE-INV-NEXT:    s_waitcnt lgkmcnt(0)94; SKIP-CACHE-INV-NEXT:    v_mov_b32_e32 v0, s495; SKIP-CACHE-INV-NEXT:    buffer_store_dword v0, off, s[0:3], 096; SKIP-CACHE-INV-NEXT:    s_endpgm97;98; GFX90A-NOTTGSPLIT-LABEL: global_nontemporal_load_0:99; GFX90A-NOTTGSPLIT:       ; %bb.0: ; %entry100; GFX90A-NOTTGSPLIT-NEXT:    s_load_dwordx2 s[6:7], s[8:9], 0x0101; GFX90A-NOTTGSPLIT-NEXT:    s_load_dwordx2 s[4:5], s[8:9], 0x8102; GFX90A-NOTTGSPLIT-NEXT:    v_mov_b32_e32 v0, 0103; GFX90A-NOTTGSPLIT-NEXT:    s_waitcnt lgkmcnt(0)104; GFX90A-NOTTGSPLIT-NEXT:    s_load_dword s6, s[6:7], 0x0105; GFX90A-NOTTGSPLIT-NEXT:    s_waitcnt lgkmcnt(0)106; GFX90A-NOTTGSPLIT-NEXT:    v_mov_b32_e32 v1, s6107; GFX90A-NOTTGSPLIT-NEXT:    global_store_dword v0, v1, s[4:5]108; GFX90A-NOTTGSPLIT-NEXT:    s_endpgm109;110; GFX90A-TGSPLIT-LABEL: global_nontemporal_load_0:111; GFX90A-TGSPLIT:       ; %bb.0: ; %entry112; GFX90A-TGSPLIT-NEXT:    s_load_dwordx2 s[6:7], s[8:9], 0x0113; GFX90A-TGSPLIT-NEXT:    s_load_dwordx2 s[4:5], s[8:9], 0x8114; GFX90A-TGSPLIT-NEXT:    v_mov_b32_e32 v0, 0115; GFX90A-TGSPLIT-NEXT:    s_waitcnt lgkmcnt(0)116; GFX90A-TGSPLIT-NEXT:    s_load_dword s6, s[6:7], 0x0117; GFX90A-TGSPLIT-NEXT:    s_waitcnt lgkmcnt(0)118; GFX90A-TGSPLIT-NEXT:    v_mov_b32_e32 v1, s6119; GFX90A-TGSPLIT-NEXT:    global_store_dword v0, v1, s[4:5]120; GFX90A-TGSPLIT-NEXT:    s_endpgm121;122; GFX942-NOTTGSPLIT-LABEL: global_nontemporal_load_0:123; GFX942-NOTTGSPLIT:       ; %bb.0: ; %entry124; GFX942-NOTTGSPLIT-NEXT:    s_load_dwordx2 s[2:3], s[4:5], 0x0125; GFX942-NOTTGSPLIT-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x8126; GFX942-NOTTGSPLIT-NEXT:    v_mov_b32_e32 v0, 0127; GFX942-NOTTGSPLIT-NEXT:    s_waitcnt lgkmcnt(0)128; GFX942-NOTTGSPLIT-NEXT:    s_load_dword s2, s[2:3], 0x0129; GFX942-NOTTGSPLIT-NEXT:    s_waitcnt lgkmcnt(0)130; GFX942-NOTTGSPLIT-NEXT:    v_mov_b32_e32 v1, s2131; GFX942-NOTTGSPLIT-NEXT:    global_store_dword v0, v1, s[0:1]132; GFX942-NOTTGSPLIT-NEXT:    s_endpgm133;134; GFX942-TGSPLIT-LABEL: global_nontemporal_load_0:135; GFX942-TGSPLIT:       ; %bb.0: ; %entry136; GFX942-TGSPLIT-NEXT:    s_load_dwordx2 s[2:3], s[4:5], 0x0137; GFX942-TGSPLIT-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x8138; GFX942-TGSPLIT-NEXT:    v_mov_b32_e32 v0, 0139; GFX942-TGSPLIT-NEXT:    s_waitcnt lgkmcnt(0)140; GFX942-TGSPLIT-NEXT:    s_load_dword s2, s[2:3], 0x0141; GFX942-TGSPLIT-NEXT:    s_waitcnt lgkmcnt(0)142; GFX942-TGSPLIT-NEXT:    v_mov_b32_e32 v1, s2143; GFX942-TGSPLIT-NEXT:    global_store_dword v0, v1, s[0:1]144; GFX942-TGSPLIT-NEXT:    s_endpgm145;146; GFX11-WGP-LABEL: global_nontemporal_load_0:147; GFX11-WGP:       ; %bb.0: ; %entry148; GFX11-WGP-NEXT:    s_load_b64 s[2:3], s[4:5], 0x0149; GFX11-WGP-NEXT:    s_load_b64 s[0:1], s[4:5], 0x8150; GFX11-WGP-NEXT:    v_mov_b32_e32 v0, 0151; GFX11-WGP-NEXT:    s_waitcnt lgkmcnt(0)152; GFX11-WGP-NEXT:    s_load_b32 s2, s[2:3], 0x0153; GFX11-WGP-NEXT:    s_waitcnt lgkmcnt(0)154; GFX11-WGP-NEXT:    v_mov_b32_e32 v1, s2155; GFX11-WGP-NEXT:    global_store_b32 v0, v1, s[0:1]156; GFX11-WGP-NEXT:    s_endpgm157;158; GFX11-CU-LABEL: global_nontemporal_load_0:159; GFX11-CU:       ; %bb.0: ; %entry160; GFX11-CU-NEXT:    s_load_b64 s[2:3], s[4:5], 0x0161; GFX11-CU-NEXT:    s_load_b64 s[0:1], s[4:5], 0x8162; GFX11-CU-NEXT:    v_mov_b32_e32 v0, 0163; GFX11-CU-NEXT:    s_waitcnt lgkmcnt(0)164; GFX11-CU-NEXT:    s_load_b32 s2, s[2:3], 0x0165; GFX11-CU-NEXT:    s_waitcnt lgkmcnt(0)166; GFX11-CU-NEXT:    v_mov_b32_e32 v1, s2167; GFX11-CU-NEXT:    global_store_b32 v0, v1, s[0:1]168; GFX11-CU-NEXT:    s_endpgm169;170; GFX12-WGP-LABEL: global_nontemporal_load_0:171; GFX12-WGP:       ; %bb.0: ; %entry172; GFX12-WGP-NEXT:    s_load_b64 s[2:3], s[4:5], 0x0173; GFX12-WGP-NEXT:    s_load_b64 s[0:1], s[4:5], 0x8174; GFX12-WGP-NEXT:    v_mov_b32_e32 v0, 0175; GFX12-WGP-NEXT:    s_wait_kmcnt 0x0176; GFX12-WGP-NEXT:    s_load_b32 s2, s[2:3], 0x0177; GFX12-WGP-NEXT:    s_wait_kmcnt 0x0178; GFX12-WGP-NEXT:    v_mov_b32_e32 v1, s2179; GFX12-WGP-NEXT:    global_store_b32 v0, v1, s[0:1]180; GFX12-WGP-NEXT:    s_endpgm181;182; GFX12-CU-LABEL: global_nontemporal_load_0:183; GFX12-CU:       ; %bb.0: ; %entry184; GFX12-CU-NEXT:    s_load_b64 s[2:3], s[4:5], 0x0185; GFX12-CU-NEXT:    s_load_b64 s[0:1], s[4:5], 0x8186; GFX12-CU-NEXT:    v_mov_b32_e32 v0, 0187; GFX12-CU-NEXT:    s_wait_kmcnt 0x0188; GFX12-CU-NEXT:    s_load_b32 s2, s[2:3], 0x0189; GFX12-CU-NEXT:    s_wait_kmcnt 0x0190; GFX12-CU-NEXT:    v_mov_b32_e32 v1, s2191; GFX12-CU-NEXT:    global_store_b32 v0, v1, s[0:1]192; GFX12-CU-NEXT:    s_endpgm193;194; GFX1250-LABEL: global_nontemporal_load_0:195; GFX1250:       ; %bb.0: ; %entry196; GFX1250-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_WAVE_MODE, 25, 1), 1197; GFX1250-NEXT:    s_load_b64 s[2:3], s[4:5], 0x0198; GFX1250-NEXT:    s_load_b64 s[0:1], s[4:5], 0x8199; GFX1250-NEXT:    v_mov_b32_e32 v0, 0200; GFX1250-NEXT:    s_wait_kmcnt 0x0201; GFX1250-NEXT:    s_load_b32 s2, s[2:3], 0x0202; GFX1250-NEXT:    s_wait_kmcnt 0x0203; GFX1250-NEXT:    v_mov_b32_e32 v1, s2204; GFX1250-NEXT:    global_store_b32 v0, v1, s[0:1]205; GFX1250-NEXT:    s_endpgm206    ptr addrspace(1) %in, ptr addrspace(1) %out) {207entry:208  %val = load i32, ptr addrspace(1) %in, align 4, !nontemporal !0209  store i32 %val, ptr addrspace(1) %out210  ret void211}212 213define amdgpu_kernel void @global_nontemporal_load_1(214; GFX6-LABEL: global_nontemporal_load_1:215; GFX6:       ; %bb.0: ; %entry216; GFX6-NEXT:    s_mov_b64 s[4:5], s[8:9]217; GFX6-NEXT:    s_load_dwordx2 s[8:9], s[4:5], 0x0218; GFX6-NEXT:    s_load_dwordx2 s[4:5], s[4:5], 0x2219; GFX6-NEXT:    s_waitcnt lgkmcnt(0)220; GFX6-NEXT:    s_mov_b32 s12, s5221; GFX6-NEXT:    ; kill: def $sgpr4 killed $sgpr4 killed $sgpr4_sgpr5222; GFX6-NEXT:    s_mov_b32 s10, 0x100f000223; GFX6-NEXT:    s_mov_b32 s11, -1224; GFX6-NEXT:    ; kill: def $sgpr4 killed $sgpr4 def $sgpr4_sgpr5_sgpr6_sgpr7225; GFX6-NEXT:    s_mov_b32 s5, s12226; GFX6-NEXT:    s_mov_b32 s6, s11227; GFX6-NEXT:    s_mov_b32 s7, s10228; GFX6-NEXT:    s_mov_b32 s12, 0229; GFX6-NEXT:    ; kill: def $sgpr12 killed $sgpr12 def $sgpr12_sgpr13230; GFX6-NEXT:    s_mov_b32 s13, s10231; GFX6-NEXT:    ; kill: def $sgpr8_sgpr9 killed $sgpr8_sgpr9 def $sgpr8_sgpr9_sgpr10_sgpr11232; GFX6-NEXT:    s_mov_b64 s[10:11], s[12:13]233; GFX6-NEXT:    s_mov_b32 s12, 2234; GFX6-NEXT:    v_lshlrev_b32_e64 v0, s12, v0235; GFX6-NEXT:    v_mov_b32_e32 v2, 0236; GFX6-NEXT:    ; kill: def $vgpr0 killed $vgpr0 def $vgpr0_vgpr1 killed $exec237; GFX6-NEXT:    v_mov_b32_e32 v1, v2238; GFX6-NEXT:    buffer_load_dword v0, v[0:1], s[8:11], 0 addr64 glc slc239; GFX6-NEXT:    s_waitcnt vmcnt(0)240; GFX6-NEXT:    buffer_store_dword v0, off, s[4:7], 0241; GFX6-NEXT:    s_endpgm242;243; GFX7-LABEL: global_nontemporal_load_1:244; GFX7:       ; %bb.0: ; %entry245; GFX7-NEXT:    s_mov_b32 flat_scratch_lo, s13246; GFX7-NEXT:    s_add_i32 s12, s12, s17247; GFX7-NEXT:    s_lshr_b32 flat_scratch_hi, s12, 8248; GFX7-NEXT:    s_mov_b64 s[4:5], s[8:9]249; GFX7-NEXT:    s_load_dwordx2 s[8:9], s[4:5], 0x0250; GFX7-NEXT:    s_load_dwordx2 s[4:5], s[4:5], 0x2251; GFX7-NEXT:    s_mov_b32 s6, 2252; GFX7-NEXT:    v_lshlrev_b32_e64 v1, s6, v0253; GFX7-NEXT:    v_mov_b32_e32 v0, 0254; GFX7-NEXT:    ; kill: def $vgpr1 killed $vgpr1 def $vgpr1_vgpr2 killed $exec255; GFX7-NEXT:    v_mov_b32_e32 v2, v0256; GFX7-NEXT:    s_waitcnt lgkmcnt(0)257; GFX7-NEXT:    s_mov_b32 s6, s8258; GFX7-NEXT:    v_mov_b32_e32 v0, v1259; GFX7-NEXT:    s_mov_b32 s8, s9260; GFX7-NEXT:    ; kill: def $vgpr2 killed $vgpr2 killed $vgpr1_vgpr2 killed $exec261; GFX7-NEXT:    v_add_i32_e64 v0, s[6:7], s6, v0262; GFX7-NEXT:    v_mov_b32_e32 v1, s8263; GFX7-NEXT:    v_addc_u32_e64 v2, s[6:7], v1, v2, s[6:7]264; GFX7-NEXT:    ; kill: def $vgpr0 killed $vgpr0 def $vgpr0_vgpr1 killed $exec265; GFX7-NEXT:    v_mov_b32_e32 v1, v2266; GFX7-NEXT:    flat_load_dword v2, v[0:1] glc slc267; GFX7-NEXT:    v_mov_b32_e32 v0, s4268; GFX7-NEXT:    v_mov_b32_e32 v1, s5269; GFX7-NEXT:    s_waitcnt vmcnt(0)270; GFX7-NEXT:    flat_store_dword v[0:1], v2271; GFX7-NEXT:    s_endpgm272;273; GFX10-WGP-LABEL: global_nontemporal_load_1:274; GFX10-WGP:       ; %bb.0: ; %entry275; GFX10-WGP-NEXT:    v_mov_b32_e32 v1, v0276; GFX10-WGP-NEXT:    s_load_dwordx2 s[6:7], s[8:9], 0x0277; GFX10-WGP-NEXT:    s_load_dwordx2 s[4:5], s[8:9], 0x8278; GFX10-WGP-NEXT:    v_mov_b32_e32 v0, 0279; GFX10-WGP-NEXT:    s_mov_b32 s8, 2280; GFX10-WGP-NEXT:    v_lshlrev_b32_e64 v1, s8, v1281; GFX10-WGP-NEXT:    s_waitcnt lgkmcnt(0)282; GFX10-WGP-NEXT:    global_load_dword v1, v1, s[6:7] slc283; GFX10-WGP-NEXT:    s_waitcnt vmcnt(0)284; GFX10-WGP-NEXT:    global_store_dword v0, v1, s[4:5]285; GFX10-WGP-NEXT:    s_endpgm286;287; GFX10-CU-LABEL: global_nontemporal_load_1:288; GFX10-CU:       ; %bb.0: ; %entry289; GFX10-CU-NEXT:    v_mov_b32_e32 v1, v0290; GFX10-CU-NEXT:    s_load_dwordx2 s[6:7], s[8:9], 0x0291; GFX10-CU-NEXT:    s_load_dwordx2 s[4:5], s[8:9], 0x8292; GFX10-CU-NEXT:    v_mov_b32_e32 v0, 0293; GFX10-CU-NEXT:    s_mov_b32 s8, 2294; GFX10-CU-NEXT:    v_lshlrev_b32_e64 v1, s8, v1295; GFX10-CU-NEXT:    s_waitcnt lgkmcnt(0)296; GFX10-CU-NEXT:    global_load_dword v1, v1, s[6:7] slc297; GFX10-CU-NEXT:    s_waitcnt vmcnt(0)298; GFX10-CU-NEXT:    global_store_dword v0, v1, s[4:5]299; GFX10-CU-NEXT:    s_endpgm300;301; SKIP-CACHE-INV-LABEL: global_nontemporal_load_1:302; SKIP-CACHE-INV:       ; %bb.0: ; %entry303; SKIP-CACHE-INV-NEXT:    s_mov_b64 s[0:1], s[4:5]304; SKIP-CACHE-INV-NEXT:    s_load_dwordx2 s[4:5], s[0:1], 0x0305; SKIP-CACHE-INV-NEXT:    s_load_dwordx2 s[0:1], s[0:1], 0x2306; SKIP-CACHE-INV-NEXT:    s_waitcnt lgkmcnt(0)307; SKIP-CACHE-INV-NEXT:    s_mov_b32 s8, s1308; SKIP-CACHE-INV-NEXT:    ; kill: def $sgpr0 killed $sgpr0 killed $sgpr0_sgpr1309; SKIP-CACHE-INV-NEXT:    s_mov_b32 s6, 0xf000310; SKIP-CACHE-INV-NEXT:    s_mov_b32 s7, -1311; SKIP-CACHE-INV-NEXT:    ; kill: def $sgpr0 killed $sgpr0 def $sgpr0_sgpr1_sgpr2_sgpr3312; SKIP-CACHE-INV-NEXT:    s_mov_b32 s1, s8313; SKIP-CACHE-INV-NEXT:    s_mov_b32 s2, s7314; SKIP-CACHE-INV-NEXT:    s_mov_b32 s3, s6315; SKIP-CACHE-INV-NEXT:    s_mov_b32 s8, 0316; SKIP-CACHE-INV-NEXT:    ; kill: def $sgpr8 killed $sgpr8 def $sgpr8_sgpr9317; SKIP-CACHE-INV-NEXT:    s_mov_b32 s9, s6318; SKIP-CACHE-INV-NEXT:    ; kill: def $sgpr4_sgpr5 killed $sgpr4_sgpr5 def $sgpr4_sgpr5_sgpr6_sgpr7319; SKIP-CACHE-INV-NEXT:    s_mov_b64 s[6:7], s[8:9]320; SKIP-CACHE-INV-NEXT:    s_mov_b32 s8, 2321; SKIP-CACHE-INV-NEXT:    v_lshlrev_b32_e64 v0, s8, v0322; SKIP-CACHE-INV-NEXT:    v_mov_b32_e32 v2, 0323; SKIP-CACHE-INV-NEXT:    ; kill: def $vgpr0 killed $vgpr0 def $vgpr0_vgpr1 killed $exec324; SKIP-CACHE-INV-NEXT:    v_mov_b32_e32 v1, v2325; SKIP-CACHE-INV-NEXT:    buffer_load_dword v0, v[0:1], s[4:7], 0 addr64 glc slc326; SKIP-CACHE-INV-NEXT:    s_waitcnt vmcnt(0)327; SKIP-CACHE-INV-NEXT:    buffer_store_dword v0, off, s[0:3], 0328; SKIP-CACHE-INV-NEXT:    s_endpgm329;330; GFX90A-NOTTGSPLIT-LABEL: global_nontemporal_load_1:331; GFX90A-NOTTGSPLIT:       ; %bb.0: ; %entry332; GFX90A-NOTTGSPLIT-NEXT:    v_mov_b32_e32 v1, v0333; GFX90A-NOTTGSPLIT-NEXT:    s_load_dwordx2 s[6:7], s[8:9], 0x0334; GFX90A-NOTTGSPLIT-NEXT:    s_load_dwordx2 s[4:5], s[8:9], 0x8335; GFX90A-NOTTGSPLIT-NEXT:    v_mov_b32_e32 v0, 0336; GFX90A-NOTTGSPLIT-NEXT:    s_mov_b32 s8, 0x3ff337; GFX90A-NOTTGSPLIT-NEXT:    v_and_b32_e64 v1, v1, s8338; GFX90A-NOTTGSPLIT-NEXT:    s_mov_b32 s8, 2339; GFX90A-NOTTGSPLIT-NEXT:    v_lshlrev_b32_e64 v1, s8, v1340; GFX90A-NOTTGSPLIT-NEXT:    s_waitcnt lgkmcnt(0)341; GFX90A-NOTTGSPLIT-NEXT:    global_load_dword v1, v1, s[6:7] glc slc342; GFX90A-NOTTGSPLIT-NEXT:    s_waitcnt vmcnt(0)343; GFX90A-NOTTGSPLIT-NEXT:    global_store_dword v0, v1, s[4:5]344; GFX90A-NOTTGSPLIT-NEXT:    s_endpgm345;346; GFX90A-TGSPLIT-LABEL: global_nontemporal_load_1:347; GFX90A-TGSPLIT:       ; %bb.0: ; %entry348; GFX90A-TGSPLIT-NEXT:    v_mov_b32_e32 v1, v0349; GFX90A-TGSPLIT-NEXT:    s_load_dwordx2 s[6:7], 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 s8, 0x3ff353; GFX90A-TGSPLIT-NEXT:    v_and_b32_e64 v1, v1, s8354; GFX90A-TGSPLIT-NEXT:    s_mov_b32 s8, 2355; GFX90A-TGSPLIT-NEXT:    v_lshlrev_b32_e64 v1, s8, v1356; GFX90A-TGSPLIT-NEXT:    s_waitcnt lgkmcnt(0)357; GFX90A-TGSPLIT-NEXT:    global_load_dword v1, v1, s[6:7] glc slc358; GFX90A-TGSPLIT-NEXT:    s_waitcnt vmcnt(0)359; GFX90A-TGSPLIT-NEXT:    global_store_dword v0, v1, s[4:5]360; GFX90A-TGSPLIT-NEXT:    s_endpgm361;362; GFX942-NOTTGSPLIT-LABEL: global_nontemporal_load_1:363; GFX942-NOTTGSPLIT:       ; %bb.0: ; %entry364; GFX942-NOTTGSPLIT-NEXT:    v_mov_b32_e32 v1, v0365; GFX942-NOTTGSPLIT-NEXT:    s_load_dwordx2 s[2:3], s[4:5], 0x0366; GFX942-NOTTGSPLIT-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x8367; GFX942-NOTTGSPLIT-NEXT:    v_mov_b32_e32 v0, 0368; GFX942-NOTTGSPLIT-NEXT:    s_mov_b32 s4, 0x3ff369; GFX942-NOTTGSPLIT-NEXT:    v_and_b32_e64 v1, v1, s4370; GFX942-NOTTGSPLIT-NEXT:    s_mov_b32 s4, 2371; GFX942-NOTTGSPLIT-NEXT:    v_lshlrev_b32_e64 v1, s4, v1372; GFX942-NOTTGSPLIT-NEXT:    s_waitcnt lgkmcnt(0)373; GFX942-NOTTGSPLIT-NEXT:    global_load_dword v1, v1, s[2:3] nt374; GFX942-NOTTGSPLIT-NEXT:    s_waitcnt vmcnt(0)375; GFX942-NOTTGSPLIT-NEXT:    global_store_dword v0, v1, s[0:1]376; GFX942-NOTTGSPLIT-NEXT:    s_endpgm377;378; GFX942-TGSPLIT-LABEL: global_nontemporal_load_1:379; GFX942-TGSPLIT:       ; %bb.0: ; %entry380; GFX942-TGSPLIT-NEXT:    v_mov_b32_e32 v1, v0381; GFX942-TGSPLIT-NEXT:    s_load_dwordx2 s[2:3], s[4:5], 0x0382; GFX942-TGSPLIT-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x8383; GFX942-TGSPLIT-NEXT:    v_mov_b32_e32 v0, 0384; GFX942-TGSPLIT-NEXT:    s_mov_b32 s4, 0x3ff385; GFX942-TGSPLIT-NEXT:    v_and_b32_e64 v1, v1, s4386; GFX942-TGSPLIT-NEXT:    s_mov_b32 s4, 2387; GFX942-TGSPLIT-NEXT:    v_lshlrev_b32_e64 v1, s4, v1388; GFX942-TGSPLIT-NEXT:    s_waitcnt lgkmcnt(0)389; GFX942-TGSPLIT-NEXT:    global_load_dword v1, v1, s[2:3] nt390; GFX942-TGSPLIT-NEXT:    s_waitcnt vmcnt(0)391; GFX942-TGSPLIT-NEXT:    global_store_dword v0, v1, s[0:1]392; GFX942-TGSPLIT-NEXT:    s_endpgm393;394; GFX11-WGP-LABEL: global_nontemporal_load_1:395; GFX11-WGP:       ; %bb.0: ; %entry396; GFX11-WGP-NEXT:    v_mov_b32_e32 v1, v0397; GFX11-WGP-NEXT:    s_load_b64 s[2:3], s[4:5], 0x0398; GFX11-WGP-NEXT:    s_load_b64 s[0:1], s[4:5], 0x8399; GFX11-WGP-NEXT:    v_mov_b32_e32 v0, 0400; GFX11-WGP-NEXT:    s_mov_b32 s4, 0x3ff401; GFX11-WGP-NEXT:    v_and_b32_e64 v1, v1, s4402; GFX11-WGP-NEXT:    s_mov_b32 s4, 2403; GFX11-WGP-NEXT:    v_lshlrev_b32_e64 v1, s4, v1404; GFX11-WGP-NEXT:    s_waitcnt lgkmcnt(0)405; GFX11-WGP-NEXT:    global_load_b32 v1, v1, s[2:3] slc dlc406; GFX11-WGP-NEXT:    s_waitcnt vmcnt(0)407; GFX11-WGP-NEXT:    global_store_b32 v0, v1, s[0:1]408; GFX11-WGP-NEXT:    s_endpgm409;410; GFX11-CU-LABEL: global_nontemporal_load_1:411; GFX11-CU:       ; %bb.0: ; %entry412; GFX11-CU-NEXT:    v_mov_b32_e32 v1, v0413; GFX11-CU-NEXT:    s_load_b64 s[2:3], s[4:5], 0x0414; GFX11-CU-NEXT:    s_load_b64 s[0:1], s[4:5], 0x8415; GFX11-CU-NEXT:    v_mov_b32_e32 v0, 0416; GFX11-CU-NEXT:    s_mov_b32 s4, 0x3ff417; GFX11-CU-NEXT:    v_and_b32_e64 v1, v1, s4418; GFX11-CU-NEXT:    s_mov_b32 s4, 2419; GFX11-CU-NEXT:    v_lshlrev_b32_e64 v1, s4, v1420; GFX11-CU-NEXT:    s_waitcnt lgkmcnt(0)421; GFX11-CU-NEXT:    global_load_b32 v1, v1, s[2:3] slc dlc422; GFX11-CU-NEXT:    s_waitcnt vmcnt(0)423; GFX11-CU-NEXT:    global_store_b32 v0, v1, s[0:1]424; GFX11-CU-NEXT:    s_endpgm425;426; GFX12-WGP-LABEL: global_nontemporal_load_1:427; GFX12-WGP:       ; %bb.0: ; %entry428; GFX12-WGP-NEXT:    v_mov_b32_e32 v1, v0429; GFX12-WGP-NEXT:    s_load_b64 s[2:3], s[4:5], 0x0430; GFX12-WGP-NEXT:    s_load_b64 s[0:1], s[4:5], 0x8431; GFX12-WGP-NEXT:    v_mov_b32_e32 v0, 0432; GFX12-WGP-NEXT:    s_mov_b32 s4, 0x3ff433; GFX12-WGP-NEXT:    v_and_b32_e64 v1, v1, s4434; GFX12-WGP-NEXT:    s_mov_b32 s4, 2435; GFX12-WGP-NEXT:    s_wait_alu depctr_sa_sdst(0)436; GFX12-WGP-NEXT:    v_lshlrev_b32_e64 v1, s4, v1437; GFX12-WGP-NEXT:    s_wait_kmcnt 0x0438; GFX12-WGP-NEXT:    global_load_b32 v1, v1, s[2:3] th:TH_LOAD_NT439; GFX12-WGP-NEXT:    s_wait_loadcnt 0x0440; GFX12-WGP-NEXT:    global_store_b32 v0, v1, s[0:1]441; GFX12-WGP-NEXT:    s_endpgm442;443; GFX12-CU-LABEL: global_nontemporal_load_1:444; GFX12-CU:       ; %bb.0: ; %entry445; GFX12-CU-NEXT:    v_mov_b32_e32 v1, v0446; GFX12-CU-NEXT:    s_load_b64 s[2:3], s[4:5], 0x0447; GFX12-CU-NEXT:    s_load_b64 s[0:1], s[4:5], 0x8448; GFX12-CU-NEXT:    v_mov_b32_e32 v0, 0449; GFX12-CU-NEXT:    s_mov_b32 s4, 0x3ff450; GFX12-CU-NEXT:    v_and_b32_e64 v1, v1, s4451; GFX12-CU-NEXT:    s_mov_b32 s4, 2452; GFX12-CU-NEXT:    s_wait_alu depctr_sa_sdst(0)453; GFX12-CU-NEXT:    v_lshlrev_b32_e64 v1, s4, v1454; GFX12-CU-NEXT:    s_wait_kmcnt 0x0455; GFX12-CU-NEXT:    global_load_b32 v1, v1, s[2:3] th:TH_LOAD_NT456; GFX12-CU-NEXT:    s_wait_loadcnt 0x0457; GFX12-CU-NEXT:    global_store_b32 v0, v1, s[0:1]458; GFX12-CU-NEXT:    s_endpgm459;460; GFX1250-LABEL: global_nontemporal_load_1:461; GFX1250:       ; %bb.0: ; %entry462; GFX1250-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_WAVE_MODE, 25, 1), 1463; GFX1250-NEXT:    v_mov_b32_e32 v1, v0464; GFX1250-NEXT:    s_load_b64 s[2:3], s[4:5], 0x0465; GFX1250-NEXT:    s_load_b64 s[0:1], s[4:5], 0x8466; GFX1250-NEXT:    v_mov_b32_e32 v0, 0467; GFX1250-NEXT:    s_wait_xcnt 0x0468; GFX1250-NEXT:    s_mov_b32 s4, 0x3ff469; GFX1250-NEXT:    v_and_b32_e64 v1, v1, s4470; GFX1250-NEXT:    s_wait_kmcnt 0x0471; GFX1250-NEXT:    global_load_b32 v1, v1, s[2:3] scale_offset th:TH_LOAD_NT472; GFX1250-NEXT:    s_wait_loadcnt 0x0473; GFX1250-NEXT:    global_store_b32 v0, v1, s[0:1]474; GFX1250-NEXT:    s_endpgm475    ptr addrspace(1) %in, ptr addrspace(1) %out) {476entry:477  %tid = call i32 @llvm.amdgcn.workitem.id.x()478  %val.gep = getelementptr inbounds i32, ptr addrspace(1) %in, i32 %tid479  %val = load i32, ptr addrspace(1) %val.gep, align 4, !nontemporal !0480  store i32 %val, ptr addrspace(1) %out481  ret void482}483 484define amdgpu_kernel void @global_nontemporal_store_0(485; GFX6-LABEL: global_nontemporal_store_0:486; GFX6:       ; %bb.0: ; %entry487; GFX6-NEXT:    s_mov_b64 s[4:5], s[8:9]488; GFX6-NEXT:    s_load_dwordx2 s[8:9], s[4:5], 0x0489; GFX6-NEXT:    s_load_dwordx2 s[4:5], s[4:5], 0x2490; GFX6-NEXT:    s_waitcnt lgkmcnt(0)491; GFX6-NEXT:    s_mov_b32 s12, s5492; GFX6-NEXT:    ; kill: def $sgpr4 killed $sgpr4 killed $sgpr4_sgpr5493; GFX6-NEXT:    s_mov_b32 s10, 0x100f000494; GFX6-NEXT:    s_mov_b32 s11, -1495; GFX6-NEXT:    ; kill: def $sgpr4 killed $sgpr4 def $sgpr4_sgpr5_sgpr6_sgpr7496; GFX6-NEXT:    s_mov_b32 s5, s12497; GFX6-NEXT:    s_mov_b32 s6, s11498; GFX6-NEXT:    s_mov_b32 s7, s10499; GFX6-NEXT:    s_load_dword s8, s[8:9], 0x0500; GFX6-NEXT:    s_waitcnt lgkmcnt(0)501; GFX6-NEXT:    v_mov_b32_e32 v0, s8502; GFX6-NEXT:    buffer_store_dword v0, off, s[4:7], 0 glc slc503; GFX6-NEXT:    s_endpgm504;505; GFX7-LABEL: global_nontemporal_store_0:506; GFX7:       ; %bb.0: ; %entry507; GFX7-NEXT:    s_mov_b32 flat_scratch_lo, s13508; GFX7-NEXT:    s_add_i32 s12, s12, s17509; GFX7-NEXT:    s_lshr_b32 flat_scratch_hi, s12, 8510; GFX7-NEXT:    s_load_dwordx2 s[4:5], s[8:9], 0x0511; GFX7-NEXT:    s_load_dwordx2 s[6:7], s[8:9], 0x2512; GFX7-NEXT:    s_waitcnt lgkmcnt(0)513; GFX7-NEXT:    s_load_dword s4, s[4:5], 0x0514; GFX7-NEXT:    v_mov_b32_e32 v0, s6515; GFX7-NEXT:    v_mov_b32_e32 v1, s7516; GFX7-NEXT:    s_waitcnt lgkmcnt(0)517; GFX7-NEXT:    v_mov_b32_e32 v2, s4518; GFX7-NEXT:    flat_store_dword v[0:1], v2 glc slc519; GFX7-NEXT:    s_endpgm520;521; GFX10-WGP-LABEL: global_nontemporal_store_0:522; GFX10-WGP:       ; %bb.0: ; %entry523; GFX10-WGP-NEXT:    s_load_dwordx2 s[6:7], s[8:9], 0x0524; GFX10-WGP-NEXT:    s_load_dwordx2 s[4:5], s[8:9], 0x8525; GFX10-WGP-NEXT:    v_mov_b32_e32 v0, 0526; GFX10-WGP-NEXT:    s_waitcnt lgkmcnt(0)527; GFX10-WGP-NEXT:    s_load_dword s6, s[6:7], 0x0528; GFX10-WGP-NEXT:    s_waitcnt lgkmcnt(0)529; GFX10-WGP-NEXT:    v_mov_b32_e32 v1, s6530; GFX10-WGP-NEXT:    global_store_dword v0, v1, s[4:5] glc slc531; GFX10-WGP-NEXT:    s_endpgm532;533; GFX10-CU-LABEL: global_nontemporal_store_0:534; GFX10-CU:       ; %bb.0: ; %entry535; GFX10-CU-NEXT:    s_load_dwordx2 s[6:7], s[8:9], 0x0536; GFX10-CU-NEXT:    s_load_dwordx2 s[4:5], s[8:9], 0x8537; GFX10-CU-NEXT:    v_mov_b32_e32 v0, 0538; GFX10-CU-NEXT:    s_waitcnt lgkmcnt(0)539; GFX10-CU-NEXT:    s_load_dword s6, s[6:7], 0x0540; GFX10-CU-NEXT:    s_waitcnt lgkmcnt(0)541; GFX10-CU-NEXT:    v_mov_b32_e32 v1, s6542; GFX10-CU-NEXT:    global_store_dword v0, v1, s[4:5] glc slc543; GFX10-CU-NEXT:    s_endpgm544;545; SKIP-CACHE-INV-LABEL: global_nontemporal_store_0:546; SKIP-CACHE-INV:       ; %bb.0: ; %entry547; SKIP-CACHE-INV-NEXT:    s_mov_b64 s[0:1], s[4:5]548; SKIP-CACHE-INV-NEXT:    s_load_dwordx2 s[4:5], s[0:1], 0x0549; SKIP-CACHE-INV-NEXT:    s_load_dwordx2 s[0:1], s[0:1], 0x2550; SKIP-CACHE-INV-NEXT:    s_waitcnt lgkmcnt(0)551; SKIP-CACHE-INV-NEXT:    s_mov_b32 s8, s1552; SKIP-CACHE-INV-NEXT:    ; kill: def $sgpr0 killed $sgpr0 killed $sgpr0_sgpr1553; SKIP-CACHE-INV-NEXT:    s_mov_b32 s6, 0xf000554; SKIP-CACHE-INV-NEXT:    s_mov_b32 s7, -1555; SKIP-CACHE-INV-NEXT:    ; kill: def $sgpr0 killed $sgpr0 def $sgpr0_sgpr1_sgpr2_sgpr3556; SKIP-CACHE-INV-NEXT:    s_mov_b32 s1, s8557; SKIP-CACHE-INV-NEXT:    s_mov_b32 s2, s7558; SKIP-CACHE-INV-NEXT:    s_mov_b32 s3, s6559; SKIP-CACHE-INV-NEXT:    s_load_dword s4, s[4:5], 0x0560; SKIP-CACHE-INV-NEXT:    s_waitcnt lgkmcnt(0)561; SKIP-CACHE-INV-NEXT:    v_mov_b32_e32 v0, s4562; SKIP-CACHE-INV-NEXT:    buffer_store_dword v0, off, s[0:3], 0 glc slc563; SKIP-CACHE-INV-NEXT:    s_endpgm564;565; GFX90A-NOTTGSPLIT-LABEL: global_nontemporal_store_0:566; GFX90A-NOTTGSPLIT:       ; %bb.0: ; %entry567; GFX90A-NOTTGSPLIT-NEXT:    s_load_dwordx2 s[6:7], s[8:9], 0x0568; GFX90A-NOTTGSPLIT-NEXT:    s_load_dwordx2 s[4:5], s[8:9], 0x8569; GFX90A-NOTTGSPLIT-NEXT:    v_mov_b32_e32 v0, 0570; GFX90A-NOTTGSPLIT-NEXT:    s_waitcnt lgkmcnt(0)571; GFX90A-NOTTGSPLIT-NEXT:    s_load_dword s6, s[6:7], 0x0572; GFX90A-NOTTGSPLIT-NEXT:    s_waitcnt lgkmcnt(0)573; GFX90A-NOTTGSPLIT-NEXT:    v_mov_b32_e32 v1, s6574; GFX90A-NOTTGSPLIT-NEXT:    global_store_dword v0, v1, s[4:5] glc slc575; GFX90A-NOTTGSPLIT-NEXT:    s_endpgm576;577; GFX90A-TGSPLIT-LABEL: global_nontemporal_store_0:578; GFX90A-TGSPLIT:       ; %bb.0: ; %entry579; GFX90A-TGSPLIT-NEXT:    s_load_dwordx2 s[6:7], s[8:9], 0x0580; GFX90A-TGSPLIT-NEXT:    s_load_dwordx2 s[4:5], s[8:9], 0x8581; GFX90A-TGSPLIT-NEXT:    v_mov_b32_e32 v0, 0582; GFX90A-TGSPLIT-NEXT:    s_waitcnt lgkmcnt(0)583; GFX90A-TGSPLIT-NEXT:    s_load_dword s6, s[6:7], 0x0584; GFX90A-TGSPLIT-NEXT:    s_waitcnt lgkmcnt(0)585; GFX90A-TGSPLIT-NEXT:    v_mov_b32_e32 v1, s6586; GFX90A-TGSPLIT-NEXT:    global_store_dword v0, v1, s[4:5] glc slc587; GFX90A-TGSPLIT-NEXT:    s_endpgm588;589; GFX942-NOTTGSPLIT-LABEL: global_nontemporal_store_0:590; GFX942-NOTTGSPLIT:       ; %bb.0: ; %entry591; GFX942-NOTTGSPLIT-NEXT:    s_load_dwordx2 s[2:3], s[4:5], 0x0592; GFX942-NOTTGSPLIT-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x8593; GFX942-NOTTGSPLIT-NEXT:    v_mov_b32_e32 v0, 0594; GFX942-NOTTGSPLIT-NEXT:    s_waitcnt lgkmcnt(0)595; GFX942-NOTTGSPLIT-NEXT:    s_load_dword s2, s[2:3], 0x0596; GFX942-NOTTGSPLIT-NEXT:    s_waitcnt lgkmcnt(0)597; GFX942-NOTTGSPLIT-NEXT:    v_mov_b32_e32 v1, s2598; GFX942-NOTTGSPLIT-NEXT:    global_store_dword v0, v1, s[0:1] nt599; GFX942-NOTTGSPLIT-NEXT:    s_endpgm600;601; GFX942-TGSPLIT-LABEL: global_nontemporal_store_0:602; GFX942-TGSPLIT:       ; %bb.0: ; %entry603; GFX942-TGSPLIT-NEXT:    s_load_dwordx2 s[2:3], s[4:5], 0x0604; GFX942-TGSPLIT-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x8605; GFX942-TGSPLIT-NEXT:    v_mov_b32_e32 v0, 0606; GFX942-TGSPLIT-NEXT:    s_waitcnt lgkmcnt(0)607; GFX942-TGSPLIT-NEXT:    s_load_dword s2, s[2:3], 0x0608; GFX942-TGSPLIT-NEXT:    s_waitcnt lgkmcnt(0)609; GFX942-TGSPLIT-NEXT:    v_mov_b32_e32 v1, s2610; GFX942-TGSPLIT-NEXT:    global_store_dword v0, v1, s[0:1] nt611; GFX942-TGSPLIT-NEXT:    s_endpgm612;613; GFX11-WGP-LABEL: global_nontemporal_store_0:614; GFX11-WGP:       ; %bb.0: ; %entry615; GFX11-WGP-NEXT:    s_load_b64 s[2:3], s[4:5], 0x0616; GFX11-WGP-NEXT:    s_load_b64 s[0:1], s[4:5], 0x8617; GFX11-WGP-NEXT:    v_mov_b32_e32 v0, 0618; GFX11-WGP-NEXT:    s_waitcnt lgkmcnt(0)619; GFX11-WGP-NEXT:    s_load_b32 s2, s[2:3], 0x0620; GFX11-WGP-NEXT:    s_waitcnt lgkmcnt(0)621; GFX11-WGP-NEXT:    v_mov_b32_e32 v1, s2622; GFX11-WGP-NEXT:    global_store_b32 v0, v1, s[0:1] glc slc dlc623; GFX11-WGP-NEXT:    s_endpgm624;625; GFX11-CU-LABEL: global_nontemporal_store_0:626; GFX11-CU:       ; %bb.0: ; %entry627; GFX11-CU-NEXT:    s_load_b64 s[2:3], s[4:5], 0x0628; GFX11-CU-NEXT:    s_load_b64 s[0:1], s[4:5], 0x8629; GFX11-CU-NEXT:    v_mov_b32_e32 v0, 0630; GFX11-CU-NEXT:    s_waitcnt lgkmcnt(0)631; GFX11-CU-NEXT:    s_load_b32 s2, s[2:3], 0x0632; GFX11-CU-NEXT:    s_waitcnt lgkmcnt(0)633; GFX11-CU-NEXT:    v_mov_b32_e32 v1, s2634; GFX11-CU-NEXT:    global_store_b32 v0, v1, s[0:1] glc slc dlc635; GFX11-CU-NEXT:    s_endpgm636;637; GFX12-WGP-LABEL: global_nontemporal_store_0:638; GFX12-WGP:       ; %bb.0: ; %entry639; GFX12-WGP-NEXT:    s_load_b64 s[2:3], s[4:5], 0x0640; GFX12-WGP-NEXT:    s_load_b64 s[0:1], s[4:5], 0x8641; GFX12-WGP-NEXT:    v_mov_b32_e32 v0, 0642; GFX12-WGP-NEXT:    s_wait_kmcnt 0x0643; GFX12-WGP-NEXT:    s_load_b32 s2, s[2:3], 0x0644; GFX12-WGP-NEXT:    s_wait_kmcnt 0x0645; GFX12-WGP-NEXT:    v_mov_b32_e32 v1, s2646; GFX12-WGP-NEXT:    global_store_b32 v0, v1, s[0:1] th:TH_STORE_NT647; GFX12-WGP-NEXT:    s_endpgm648;649; GFX12-CU-LABEL: global_nontemporal_store_0:650; GFX12-CU:       ; %bb.0: ; %entry651; GFX12-CU-NEXT:    s_load_b64 s[2:3], s[4:5], 0x0652; GFX12-CU-NEXT:    s_load_b64 s[0:1], s[4:5], 0x8653; GFX12-CU-NEXT:    v_mov_b32_e32 v0, 0654; GFX12-CU-NEXT:    s_wait_kmcnt 0x0655; GFX12-CU-NEXT:    s_load_b32 s2, s[2:3], 0x0656; GFX12-CU-NEXT:    s_wait_kmcnt 0x0657; GFX12-CU-NEXT:    v_mov_b32_e32 v1, s2658; GFX12-CU-NEXT:    global_store_b32 v0, v1, s[0:1] th:TH_STORE_NT659; GFX12-CU-NEXT:    s_endpgm660;661; GFX1250-LABEL: global_nontemporal_store_0:662; GFX1250:       ; %bb.0: ; %entry663; GFX1250-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_WAVE_MODE, 25, 1), 1664; GFX1250-NEXT:    s_load_b64 s[2:3], s[4:5], 0x0665; GFX1250-NEXT:    s_load_b64 s[0:1], s[4:5], 0x8666; GFX1250-NEXT:    v_mov_b32_e32 v0, 0667; GFX1250-NEXT:    s_wait_kmcnt 0x0668; GFX1250-NEXT:    s_load_b32 s2, s[2:3], 0x0669; GFX1250-NEXT:    s_wait_kmcnt 0x0670; GFX1250-NEXT:    v_mov_b32_e32 v1, s2671; GFX1250-NEXT:    global_store_b32 v0, v1, s[0:1] th:TH_STORE_NT672; GFX1250-NEXT:    s_endpgm673    ptr addrspace(1) %in, ptr addrspace(1) %out) {674entry:675  %val = load i32, ptr addrspace(1) %in, align 4676  store i32 %val, ptr addrspace(1) %out, !nontemporal !0677  ret void678}679 680define amdgpu_kernel void @global_nontemporal_store_1(681; GFX6-LABEL: global_nontemporal_store_1:682; GFX6:       ; %bb.0: ; %entry683; GFX6-NEXT:    s_load_dwordx2 s[6:7], s[8:9], 0x0684; GFX6-NEXT:    s_load_dwordx2 s[4:5], s[8:9], 0x2685; GFX6-NEXT:    s_waitcnt lgkmcnt(0)686; GFX6-NEXT:    s_load_dword s8, s[6:7], 0x0687; GFX6-NEXT:    s_mov_b32 s6, 0x100f000688; GFX6-NEXT:    s_mov_b32 s10, 0689; GFX6-NEXT:    ; kill: def $sgpr10 killed $sgpr10 def $sgpr10_sgpr11690; GFX6-NEXT:    s_mov_b32 s11, s6691; GFX6-NEXT:    ; kill: def $sgpr4_sgpr5 killed $sgpr4_sgpr5 def $sgpr4_sgpr5_sgpr6_sgpr7692; GFX6-NEXT:    s_mov_b64 s[6:7], s[10:11]693; GFX6-NEXT:    s_mov_b32 s9, 2694; GFX6-NEXT:    v_lshlrev_b32_e64 v1, s9, v0695; GFX6-NEXT:    v_mov_b32_e32 v0, 0696; GFX6-NEXT:    ; kill: def $vgpr1 killed $vgpr1 def $vgpr1_vgpr2 killed $exec697; GFX6-NEXT:    v_mov_b32_e32 v2, v0698; GFX6-NEXT:    s_waitcnt lgkmcnt(0)699; GFX6-NEXT:    v_mov_b32_e32 v0, s8700; GFX6-NEXT:    buffer_store_dword v0, v[1:2], s[4:7], 0 addr64 glc slc701; GFX6-NEXT:    s_endpgm702;703; GFX7-LABEL: global_nontemporal_store_1:704; GFX7:       ; %bb.0: ; %entry705; GFX7-NEXT:    s_mov_b32 flat_scratch_lo, s13706; GFX7-NEXT:    s_add_i32 s12, s12, s17707; GFX7-NEXT:    s_lshr_b32 flat_scratch_hi, s12, 8708; GFX7-NEXT:    s_load_dwordx2 s[4:5], s[8:9], 0x0709; GFX7-NEXT:    s_load_dwordx2 s[8:9], s[8:9], 0x2710; GFX7-NEXT:    s_waitcnt lgkmcnt(0)711; GFX7-NEXT:    s_load_dword s4, s[4:5], 0x0712; GFX7-NEXT:    s_mov_b32 s5, 2713; GFX7-NEXT:    v_lshlrev_b32_e64 v1, s5, v0714; GFX7-NEXT:    v_mov_b32_e32 v0, 0715; GFX7-NEXT:    ; kill: def $vgpr1 killed $vgpr1 def $vgpr1_vgpr2 killed $exec716; GFX7-NEXT:    v_mov_b32_e32 v2, v0717; GFX7-NEXT:    s_mov_b32 s6, s8718; GFX7-NEXT:    v_mov_b32_e32 v0, v1719; GFX7-NEXT:    s_mov_b32 s5, s9720; GFX7-NEXT:    ; kill: def $vgpr2 killed $vgpr2 killed $vgpr1_vgpr2 killed $exec721; GFX7-NEXT:    v_add_i32_e64 v0, s[6:7], s6, v0722; GFX7-NEXT:    v_mov_b32_e32 v1, s5723; GFX7-NEXT:    v_addc_u32_e64 v2, s[6:7], v1, v2, s[6:7]724; GFX7-NEXT:    ; kill: def $vgpr0 killed $vgpr0 def $vgpr0_vgpr1 killed $exec725; GFX7-NEXT:    v_mov_b32_e32 v1, v2726; GFX7-NEXT:    s_waitcnt lgkmcnt(0)727; GFX7-NEXT:    v_mov_b32_e32 v2, s4728; GFX7-NEXT:    flat_store_dword v[0:1], v2 glc slc729; GFX7-NEXT:    s_endpgm730;731; GFX10-WGP-LABEL: global_nontemporal_store_1:732; GFX10-WGP:       ; %bb.0: ; %entry733; GFX10-WGP-NEXT:    s_load_dwordx2 s[6:7], s[8:9], 0x0734; GFX10-WGP-NEXT:    s_load_dwordx2 s[4:5], s[8:9], 0x8735; GFX10-WGP-NEXT:    s_waitcnt lgkmcnt(0)736; GFX10-WGP-NEXT:    s_load_dword s6, s[6:7], 0x0737; GFX10-WGP-NEXT:    s_mov_b32 s7, 2738; GFX10-WGP-NEXT:    v_lshlrev_b32_e64 v0, s7, v0739; GFX10-WGP-NEXT:    s_waitcnt lgkmcnt(0)740; GFX10-WGP-NEXT:    v_mov_b32_e32 v1, s6741; GFX10-WGP-NEXT:    global_store_dword v0, v1, s[4:5] glc slc742; GFX10-WGP-NEXT:    s_endpgm743;744; GFX10-CU-LABEL: global_nontemporal_store_1:745; GFX10-CU:       ; %bb.0: ; %entry746; GFX10-CU-NEXT:    s_load_dwordx2 s[6:7], s[8:9], 0x0747; GFX10-CU-NEXT:    s_load_dwordx2 s[4:5], s[8:9], 0x8748; GFX10-CU-NEXT:    s_waitcnt lgkmcnt(0)749; GFX10-CU-NEXT:    s_load_dword s6, s[6:7], 0x0750; GFX10-CU-NEXT:    s_mov_b32 s7, 2751; GFX10-CU-NEXT:    v_lshlrev_b32_e64 v0, s7, v0752; GFX10-CU-NEXT:    s_waitcnt lgkmcnt(0)753; GFX10-CU-NEXT:    v_mov_b32_e32 v1, s6754; GFX10-CU-NEXT:    global_store_dword v0, v1, s[4:5] glc slc755; GFX10-CU-NEXT:    s_endpgm756;757; SKIP-CACHE-INV-LABEL: global_nontemporal_store_1:758; SKIP-CACHE-INV:       ; %bb.0: ; %entry759; SKIP-CACHE-INV-NEXT:    s_load_dwordx2 s[2:3], s[4:5], 0x0760; SKIP-CACHE-INV-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x2761; SKIP-CACHE-INV-NEXT:    s_waitcnt lgkmcnt(0)762; SKIP-CACHE-INV-NEXT:    s_load_dword s4, s[2:3], 0x0763; SKIP-CACHE-INV-NEXT:    s_mov_b32 s2, 0xf000764; SKIP-CACHE-INV-NEXT:    s_mov_b32 s6, 0765; SKIP-CACHE-INV-NEXT:    ; kill: def $sgpr6 killed $sgpr6 def $sgpr6_sgpr7766; SKIP-CACHE-INV-NEXT:    s_mov_b32 s7, s2767; SKIP-CACHE-INV-NEXT:    ; kill: def $sgpr0_sgpr1 killed $sgpr0_sgpr1 def $sgpr0_sgpr1_sgpr2_sgpr3768; SKIP-CACHE-INV-NEXT:    s_mov_b64 s[2:3], s[6:7]769; SKIP-CACHE-INV-NEXT:    s_mov_b32 s5, 2770; SKIP-CACHE-INV-NEXT:    v_lshlrev_b32_e64 v1, s5, v0771; SKIP-CACHE-INV-NEXT:    v_mov_b32_e32 v0, 0772; SKIP-CACHE-INV-NEXT:    ; kill: def $vgpr1 killed $vgpr1 def $vgpr1_vgpr2 killed $exec773; SKIP-CACHE-INV-NEXT:    v_mov_b32_e32 v2, v0774; SKIP-CACHE-INV-NEXT:    s_waitcnt lgkmcnt(0)775; SKIP-CACHE-INV-NEXT:    v_mov_b32_e32 v0, s4776; SKIP-CACHE-INV-NEXT:    buffer_store_dword v0, v[1:2], s[0:3], 0 addr64 glc slc777; SKIP-CACHE-INV-NEXT:    s_endpgm778;779; GFX90A-NOTTGSPLIT-LABEL: global_nontemporal_store_1:780; GFX90A-NOTTGSPLIT:       ; %bb.0: ; %entry781; GFX90A-NOTTGSPLIT-NEXT:    s_load_dwordx2 s[6:7], s[8:9], 0x0782; GFX90A-NOTTGSPLIT-NEXT:    s_load_dwordx2 s[4:5], s[8:9], 0x8783; GFX90A-NOTTGSPLIT-NEXT:    s_waitcnt lgkmcnt(0)784; GFX90A-NOTTGSPLIT-NEXT:    s_load_dword s6, s[6:7], 0x0785; GFX90A-NOTTGSPLIT-NEXT:    s_mov_b32 s7, 0x3ff786; GFX90A-NOTTGSPLIT-NEXT:    v_and_b32_e64 v0, v0, s7787; GFX90A-NOTTGSPLIT-NEXT:    s_mov_b32 s7, 2788; GFX90A-NOTTGSPLIT-NEXT:    v_lshlrev_b32_e64 v0, s7, v0789; GFX90A-NOTTGSPLIT-NEXT:    s_waitcnt lgkmcnt(0)790; GFX90A-NOTTGSPLIT-NEXT:    v_mov_b32_e32 v1, s6791; GFX90A-NOTTGSPLIT-NEXT:    global_store_dword v0, v1, s[4:5] glc slc792; GFX90A-NOTTGSPLIT-NEXT:    s_endpgm793;794; GFX90A-TGSPLIT-LABEL: global_nontemporal_store_1:795; GFX90A-TGSPLIT:       ; %bb.0: ; %entry796; GFX90A-TGSPLIT-NEXT:    s_load_dwordx2 s[6:7], s[8:9], 0x0797; GFX90A-TGSPLIT-NEXT:    s_load_dwordx2 s[4:5], s[8:9], 0x8798; GFX90A-TGSPLIT-NEXT:    s_waitcnt lgkmcnt(0)799; GFX90A-TGSPLIT-NEXT:    s_load_dword s6, s[6:7], 0x0800; GFX90A-TGSPLIT-NEXT:    s_mov_b32 s7, 0x3ff801; GFX90A-TGSPLIT-NEXT:    v_and_b32_e64 v0, v0, s7802; GFX90A-TGSPLIT-NEXT:    s_mov_b32 s7, 2803; GFX90A-TGSPLIT-NEXT:    v_lshlrev_b32_e64 v0, s7, v0804; GFX90A-TGSPLIT-NEXT:    s_waitcnt lgkmcnt(0)805; GFX90A-TGSPLIT-NEXT:    v_mov_b32_e32 v1, s6806; GFX90A-TGSPLIT-NEXT:    global_store_dword v0, v1, s[4:5] glc slc807; GFX90A-TGSPLIT-NEXT:    s_endpgm808;809; GFX942-NOTTGSPLIT-LABEL: global_nontemporal_store_1:810; GFX942-NOTTGSPLIT:       ; %bb.0: ; %entry811; GFX942-NOTTGSPLIT-NEXT:    s_load_dwordx2 s[2:3], s[4:5], 0x0812; GFX942-NOTTGSPLIT-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x8813; GFX942-NOTTGSPLIT-NEXT:    s_waitcnt lgkmcnt(0)814; GFX942-NOTTGSPLIT-NEXT:    s_load_dword s2, s[2:3], 0x0815; GFX942-NOTTGSPLIT-NEXT:    s_mov_b32 s3, 0x3ff816; GFX942-NOTTGSPLIT-NEXT:    v_and_b32_e64 v0, v0, s3817; GFX942-NOTTGSPLIT-NEXT:    s_mov_b32 s3, 2818; GFX942-NOTTGSPLIT-NEXT:    v_lshlrev_b32_e64 v0, s3, v0819; GFX942-NOTTGSPLIT-NEXT:    s_waitcnt lgkmcnt(0)820; GFX942-NOTTGSPLIT-NEXT:    v_mov_b32_e32 v1, s2821; GFX942-NOTTGSPLIT-NEXT:    global_store_dword v0, v1, s[0:1] nt822; GFX942-NOTTGSPLIT-NEXT:    s_endpgm823;824; GFX942-TGSPLIT-LABEL: global_nontemporal_store_1:825; GFX942-TGSPLIT:       ; %bb.0: ; %entry826; GFX942-TGSPLIT-NEXT:    s_load_dwordx2 s[2:3], s[4:5], 0x0827; GFX942-TGSPLIT-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x8828; GFX942-TGSPLIT-NEXT:    s_waitcnt lgkmcnt(0)829; GFX942-TGSPLIT-NEXT:    s_load_dword s2, s[2:3], 0x0830; GFX942-TGSPLIT-NEXT:    s_mov_b32 s3, 0x3ff831; GFX942-TGSPLIT-NEXT:    v_and_b32_e64 v0, v0, s3832; GFX942-TGSPLIT-NEXT:    s_mov_b32 s3, 2833; GFX942-TGSPLIT-NEXT:    v_lshlrev_b32_e64 v0, s3, v0834; GFX942-TGSPLIT-NEXT:    s_waitcnt lgkmcnt(0)835; GFX942-TGSPLIT-NEXT:    v_mov_b32_e32 v1, s2836; GFX942-TGSPLIT-NEXT:    global_store_dword v0, v1, s[0:1] nt837; GFX942-TGSPLIT-NEXT:    s_endpgm838;839; GFX11-WGP-LABEL: global_nontemporal_store_1:840; GFX11-WGP:       ; %bb.0: ; %entry841; GFX11-WGP-NEXT:    s_load_b64 s[2:3], s[4:5], 0x0842; GFX11-WGP-NEXT:    s_load_b64 s[0:1], s[4:5], 0x8843; GFX11-WGP-NEXT:    s_waitcnt lgkmcnt(0)844; GFX11-WGP-NEXT:    s_load_b32 s2, s[2:3], 0x0845; GFX11-WGP-NEXT:    s_mov_b32 s3, 0x3ff846; GFX11-WGP-NEXT:    v_and_b32_e64 v0, v0, s3847; GFX11-WGP-NEXT:    s_mov_b32 s3, 2848; GFX11-WGP-NEXT:    v_lshlrev_b32_e64 v0, s3, v0849; GFX11-WGP-NEXT:    s_waitcnt lgkmcnt(0)850; GFX11-WGP-NEXT:    v_mov_b32_e32 v1, s2851; GFX11-WGP-NEXT:    global_store_b32 v0, v1, s[0:1] glc slc dlc852; GFX11-WGP-NEXT:    s_endpgm853;854; GFX11-CU-LABEL: global_nontemporal_store_1:855; GFX11-CU:       ; %bb.0: ; %entry856; GFX11-CU-NEXT:    s_load_b64 s[2:3], s[4:5], 0x0857; GFX11-CU-NEXT:    s_load_b64 s[0:1], s[4:5], 0x8858; GFX11-CU-NEXT:    s_waitcnt lgkmcnt(0)859; GFX11-CU-NEXT:    s_load_b32 s2, s[2:3], 0x0860; GFX11-CU-NEXT:    s_mov_b32 s3, 0x3ff861; GFX11-CU-NEXT:    v_and_b32_e64 v0, v0, s3862; GFX11-CU-NEXT:    s_mov_b32 s3, 2863; GFX11-CU-NEXT:    v_lshlrev_b32_e64 v0, s3, v0864; GFX11-CU-NEXT:    s_waitcnt lgkmcnt(0)865; GFX11-CU-NEXT:    v_mov_b32_e32 v1, s2866; GFX11-CU-NEXT:    global_store_b32 v0, v1, s[0:1] glc slc dlc867; GFX11-CU-NEXT:    s_endpgm868;869; GFX12-WGP-LABEL: global_nontemporal_store_1:870; GFX12-WGP:       ; %bb.0: ; %entry871; GFX12-WGP-NEXT:    s_load_b64 s[2:3], s[4:5], 0x0872; GFX12-WGP-NEXT:    s_load_b64 s[0:1], s[4:5], 0x8873; GFX12-WGP-NEXT:    s_wait_kmcnt 0x0874; GFX12-WGP-NEXT:    s_load_b32 s2, s[2:3], 0x0875; GFX12-WGP-NEXT:    s_mov_b32 s3, 0x3ff876; GFX12-WGP-NEXT:    v_and_b32_e64 v0, v0, s3877; GFX12-WGP-NEXT:    s_mov_b32 s3, 2878; GFX12-WGP-NEXT:    s_wait_alu depctr_sa_sdst(0)879; GFX12-WGP-NEXT:    v_lshlrev_b32_e64 v0, s3, v0880; GFX12-WGP-NEXT:    s_wait_kmcnt 0x0881; GFX12-WGP-NEXT:    v_mov_b32_e32 v1, s2882; GFX12-WGP-NEXT:    global_store_b32 v0, v1, s[0:1] th:TH_STORE_NT883; GFX12-WGP-NEXT:    s_endpgm884;885; GFX12-CU-LABEL: global_nontemporal_store_1:886; GFX12-CU:       ; %bb.0: ; %entry887; GFX12-CU-NEXT:    s_load_b64 s[2:3], s[4:5], 0x0888; GFX12-CU-NEXT:    s_load_b64 s[0:1], s[4:5], 0x8889; GFX12-CU-NEXT:    s_wait_kmcnt 0x0890; GFX12-CU-NEXT:    s_load_b32 s2, s[2:3], 0x0891; GFX12-CU-NEXT:    s_mov_b32 s3, 0x3ff892; GFX12-CU-NEXT:    v_and_b32_e64 v0, v0, s3893; GFX12-CU-NEXT:    s_mov_b32 s3, 2894; GFX12-CU-NEXT:    s_wait_alu depctr_sa_sdst(0)895; GFX12-CU-NEXT:    v_lshlrev_b32_e64 v0, s3, v0896; GFX12-CU-NEXT:    s_wait_kmcnt 0x0897; GFX12-CU-NEXT:    v_mov_b32_e32 v1, s2898; GFX12-CU-NEXT:    global_store_b32 v0, v1, s[0:1] th:TH_STORE_NT899; GFX12-CU-NEXT:    s_endpgm900;901; GFX1250-LABEL: global_nontemporal_store_1:902; GFX1250:       ; %bb.0: ; %entry903; GFX1250-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_WAVE_MODE, 25, 1), 1904; GFX1250-NEXT:    s_load_b64 s[2:3], s[4:5], 0x0905; GFX1250-NEXT:    s_load_b64 s[0:1], s[4:5], 0x8906; GFX1250-NEXT:    s_wait_kmcnt 0x0907; GFX1250-NEXT:    s_load_b32 s2, s[2:3], 0x0908; GFX1250-NEXT:    s_wait_xcnt 0x0909; GFX1250-NEXT:    s_mov_b32 s3, 0x3ff910; GFX1250-NEXT:    v_and_b32_e64 v0, v0, s3911; GFX1250-NEXT:    s_wait_kmcnt 0x0912; GFX1250-NEXT:    v_mov_b32_e32 v1, s2913; GFX1250-NEXT:    global_store_b32 v0, v1, s[0:1] scale_offset th:TH_STORE_NT914; GFX1250-NEXT:    s_endpgm915    ptr addrspace(1) %in, ptr addrspace(1) %out) {916entry:917  %tid = call i32 @llvm.amdgcn.workitem.id.x()918  %val = load i32, ptr addrspace(1) %in, align 4919  %out.gep = getelementptr inbounds i32, ptr addrspace(1) %out, i32 %tid920  store i32 %val, ptr addrspace(1) %out.gep, !nontemporal !0921  ret void922}923 924define amdgpu_kernel void @global_nontemporal_volatile_load(925; GFX6-LABEL: global_nontemporal_volatile_load:926; GFX6:       ; %bb.0: ; %entry927; GFX6-NEXT:    s_mov_b64 s[4:5], s[8:9]928; GFX6-NEXT:    s_load_dwordx2 s[8:9], s[4:5], 0x0929; GFX6-NEXT:    s_load_dwordx2 s[4:5], s[4:5], 0x2930; GFX6-NEXT:    s_waitcnt lgkmcnt(0)931; GFX6-NEXT:    s_mov_b32 s6, s9932; GFX6-NEXT:    ; kill: def $sgpr8 killed $sgpr8 killed $sgpr8_sgpr9933; GFX6-NEXT:    s_mov_b32 s12, 0x100f000934; GFX6-NEXT:    s_mov_b32 s13, -1935; GFX6-NEXT:    ; kill: def $sgpr8 killed $sgpr8 def $sgpr8_sgpr9_sgpr10_sgpr11936; GFX6-NEXT:    s_mov_b32 s9, s6937; GFX6-NEXT:    s_mov_b32 s10, s13938; GFX6-NEXT:    s_mov_b32 s11, s12939; GFX6-NEXT:    s_mov_b32 s14, s5940; GFX6-NEXT:    ; kill: def $sgpr4 killed $sgpr4 killed $sgpr4_sgpr5941; GFX6-NEXT:    ; kill: def $sgpr4 killed $sgpr4 def $sgpr4_sgpr5_sgpr6_sgpr7942; GFX6-NEXT:    s_mov_b32 s5, s14943; GFX6-NEXT:    s_mov_b32 s6, s13944; GFX6-NEXT:    s_mov_b32 s7, s12945; GFX6-NEXT:    buffer_load_dword v0, off, s[8:11], 0 glc946; GFX6-NEXT:    s_waitcnt vmcnt(0)947; GFX6-NEXT:    buffer_store_dword v0, off, s[4:7], 0948; GFX6-NEXT:    s_endpgm949;950; GFX7-LABEL: global_nontemporal_volatile_load:951; GFX7:       ; %bb.0: ; %entry952; GFX7-NEXT:    s_mov_b32 flat_scratch_lo, s13953; GFX7-NEXT:    s_add_i32 s12, s12, s17954; GFX7-NEXT:    s_lshr_b32 flat_scratch_hi, s12, 8955; GFX7-NEXT:    s_load_dwordx2 s[6:7], s[8:9], 0x0956; GFX7-NEXT:    s_load_dwordx2 s[4:5], s[8:9], 0x2957; GFX7-NEXT:    s_waitcnt lgkmcnt(0)958; GFX7-NEXT:    v_mov_b32_e32 v0, s6959; GFX7-NEXT:    v_mov_b32_e32 v1, s7960; GFX7-NEXT:    flat_load_dword v2, v[0:1] glc961; GFX7-NEXT:    s_waitcnt vmcnt(0)962; GFX7-NEXT:    v_mov_b32_e32 v0, s4963; GFX7-NEXT:    v_mov_b32_e32 v1, s5964; GFX7-NEXT:    flat_store_dword v[0:1], v2965; GFX7-NEXT:    s_endpgm966;967; GFX10-WGP-LABEL: global_nontemporal_volatile_load:968; GFX10-WGP:       ; %bb.0: ; %entry969; GFX10-WGP-NEXT:    v_mov_b32_e32 v0, 0970; GFX10-WGP-NEXT:    s_load_dwordx2 s[6:7], s[8:9], 0x0971; GFX10-WGP-NEXT:    s_load_dwordx2 s[4:5], s[8:9], 0x8972; GFX10-WGP-NEXT:    s_waitcnt lgkmcnt(0)973; GFX10-WGP-NEXT:    global_load_dword v1, v0, s[6:7] glc dlc974; GFX10-WGP-NEXT:    s_waitcnt vmcnt(0)975; GFX10-WGP-NEXT:    global_store_dword v0, v1, s[4:5]976; GFX10-WGP-NEXT:    s_endpgm977;978; GFX10-CU-LABEL: global_nontemporal_volatile_load:979; GFX10-CU:       ; %bb.0: ; %entry980; GFX10-CU-NEXT:    v_mov_b32_e32 v0, 0981; GFX10-CU-NEXT:    s_load_dwordx2 s[6:7], s[8:9], 0x0982; GFX10-CU-NEXT:    s_load_dwordx2 s[4:5], s[8:9], 0x8983; GFX10-CU-NEXT:    s_waitcnt lgkmcnt(0)984; GFX10-CU-NEXT:    global_load_dword v1, v0, s[6:7] glc dlc985; GFX10-CU-NEXT:    s_waitcnt vmcnt(0)986; GFX10-CU-NEXT:    global_store_dword v0, v1, s[4:5]987; GFX10-CU-NEXT:    s_endpgm988;989; SKIP-CACHE-INV-LABEL: global_nontemporal_volatile_load:990; SKIP-CACHE-INV:       ; %bb.0: ; %entry991; SKIP-CACHE-INV-NEXT:    s_mov_b64 s[0:1], s[4:5]992; SKIP-CACHE-INV-NEXT:    s_load_dwordx2 s[4:5], s[0:1], 0x0993; SKIP-CACHE-INV-NEXT:    s_load_dwordx2 s[0:1], s[0:1], 0x2994; SKIP-CACHE-INV-NEXT:    s_waitcnt lgkmcnt(0)995; SKIP-CACHE-INV-NEXT:    s_mov_b32 s2, s5996; SKIP-CACHE-INV-NEXT:    ; kill: def $sgpr4 killed $sgpr4 killed $sgpr4_sgpr5997; SKIP-CACHE-INV-NEXT:    s_mov_b32 s8, 0xf000998; SKIP-CACHE-INV-NEXT:    s_mov_b32 s9, -1999; SKIP-CACHE-INV-NEXT:    ; kill: def $sgpr4 killed $sgpr4 def $sgpr4_sgpr5_sgpr6_sgpr71000; SKIP-CACHE-INV-NEXT:    s_mov_b32 s5, s21001; SKIP-CACHE-INV-NEXT:    s_mov_b32 s6, s91002; SKIP-CACHE-INV-NEXT:    s_mov_b32 s7, s81003; SKIP-CACHE-INV-NEXT:    s_mov_b32 s10, s11004; SKIP-CACHE-INV-NEXT:    ; kill: def $sgpr0 killed $sgpr0 killed $sgpr0_sgpr11005; SKIP-CACHE-INV-NEXT:    ; kill: def $sgpr0 killed $sgpr0 def $sgpr0_sgpr1_sgpr2_sgpr31006; SKIP-CACHE-INV-NEXT:    s_mov_b32 s1, s101007; SKIP-CACHE-INV-NEXT:    s_mov_b32 s2, s91008; SKIP-CACHE-INV-NEXT:    s_mov_b32 s3, s81009; SKIP-CACHE-INV-NEXT:    buffer_load_dword v0, off, s[4:7], 0 glc1010; SKIP-CACHE-INV-NEXT:    s_waitcnt vmcnt(0)1011; SKIP-CACHE-INV-NEXT:    buffer_store_dword v0, off, s[0:3], 01012; SKIP-CACHE-INV-NEXT:    s_endpgm1013;1014; GFX90A-NOTTGSPLIT-LABEL: global_nontemporal_volatile_load:1015; GFX90A-NOTTGSPLIT:       ; %bb.0: ; %entry1016; GFX90A-NOTTGSPLIT-NEXT:    v_mov_b32_e32 v0, 01017; GFX90A-NOTTGSPLIT-NEXT:    s_load_dwordx2 s[6:7], s[8:9], 0x01018; GFX90A-NOTTGSPLIT-NEXT:    s_load_dwordx2 s[4:5], s[8:9], 0x81019; GFX90A-NOTTGSPLIT-NEXT:    s_waitcnt lgkmcnt(0)1020; GFX90A-NOTTGSPLIT-NEXT:    global_load_dword v1, v0, s[6:7] glc1021; GFX90A-NOTTGSPLIT-NEXT:    s_waitcnt vmcnt(0)1022; GFX90A-NOTTGSPLIT-NEXT:    global_store_dword v0, v1, s[4:5]1023; GFX90A-NOTTGSPLIT-NEXT:    s_endpgm1024;1025; GFX90A-TGSPLIT-LABEL: global_nontemporal_volatile_load:1026; GFX90A-TGSPLIT:       ; %bb.0: ; %entry1027; GFX90A-TGSPLIT-NEXT:    v_mov_b32_e32 v0, 01028; GFX90A-TGSPLIT-NEXT:    s_load_dwordx2 s[6:7], s[8:9], 0x01029; GFX90A-TGSPLIT-NEXT:    s_load_dwordx2 s[4:5], s[8:9], 0x81030; GFX90A-TGSPLIT-NEXT:    s_waitcnt lgkmcnt(0)1031; GFX90A-TGSPLIT-NEXT:    global_load_dword v1, v0, s[6:7] glc1032; GFX90A-TGSPLIT-NEXT:    s_waitcnt vmcnt(0)1033; GFX90A-TGSPLIT-NEXT:    global_store_dword v0, v1, s[4:5]1034; GFX90A-TGSPLIT-NEXT:    s_endpgm1035;1036; GFX942-NOTTGSPLIT-LABEL: global_nontemporal_volatile_load:1037; GFX942-NOTTGSPLIT:       ; %bb.0: ; %entry1038; GFX942-NOTTGSPLIT-NEXT:    v_mov_b32_e32 v0, 01039; GFX942-NOTTGSPLIT-NEXT:    s_load_dwordx2 s[2:3], s[4:5], 0x01040; GFX942-NOTTGSPLIT-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x81041; GFX942-NOTTGSPLIT-NEXT:    s_waitcnt lgkmcnt(0)1042; GFX942-NOTTGSPLIT-NEXT:    global_load_dword v1, v0, s[2:3] sc0 sc11043; GFX942-NOTTGSPLIT-NEXT:    s_waitcnt vmcnt(0)1044; GFX942-NOTTGSPLIT-NEXT:    global_store_dword v0, v1, s[0:1]1045; GFX942-NOTTGSPLIT-NEXT:    s_endpgm1046;1047; GFX942-TGSPLIT-LABEL: global_nontemporal_volatile_load:1048; GFX942-TGSPLIT:       ; %bb.0: ; %entry1049; GFX942-TGSPLIT-NEXT:    v_mov_b32_e32 v0, 01050; GFX942-TGSPLIT-NEXT:    s_load_dwordx2 s[2:3], s[4:5], 0x01051; GFX942-TGSPLIT-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x81052; GFX942-TGSPLIT-NEXT:    s_waitcnt lgkmcnt(0)1053; GFX942-TGSPLIT-NEXT:    global_load_dword v1, v0, s[2:3] sc0 sc11054; GFX942-TGSPLIT-NEXT:    s_waitcnt vmcnt(0)1055; GFX942-TGSPLIT-NEXT:    global_store_dword v0, v1, s[0:1]1056; GFX942-TGSPLIT-NEXT:    s_endpgm1057;1058; GFX11-WGP-LABEL: global_nontemporal_volatile_load:1059; GFX11-WGP:       ; %bb.0: ; %entry1060; GFX11-WGP-NEXT:    v_mov_b32_e32 v0, 01061; GFX11-WGP-NEXT:    s_load_b64 s[2:3], s[4:5], 0x01062; GFX11-WGP-NEXT:    s_load_b64 s[0:1], s[4:5], 0x81063; GFX11-WGP-NEXT:    s_waitcnt lgkmcnt(0)1064; GFX11-WGP-NEXT:    global_load_b32 v1, v0, s[2:3] glc dlc1065; GFX11-WGP-NEXT:    s_waitcnt vmcnt(0)1066; GFX11-WGP-NEXT:    global_store_b32 v0, v1, s[0:1]1067; GFX11-WGP-NEXT:    s_endpgm1068;1069; GFX11-CU-LABEL: global_nontemporal_volatile_load:1070; GFX11-CU:       ; %bb.0: ; %entry1071; GFX11-CU-NEXT:    v_mov_b32_e32 v0, 01072; GFX11-CU-NEXT:    s_load_b64 s[2:3], s[4:5], 0x01073; GFX11-CU-NEXT:    s_load_b64 s[0:1], s[4:5], 0x81074; GFX11-CU-NEXT:    s_waitcnt lgkmcnt(0)1075; GFX11-CU-NEXT:    global_load_b32 v1, v0, s[2:3] glc dlc1076; GFX11-CU-NEXT:    s_waitcnt vmcnt(0)1077; GFX11-CU-NEXT:    global_store_b32 v0, v1, s[0:1]1078; GFX11-CU-NEXT:    s_endpgm1079;1080; GFX12-WGP-LABEL: global_nontemporal_volatile_load:1081; GFX12-WGP:       ; %bb.0: ; %entry1082; GFX12-WGP-NEXT:    v_mov_b32_e32 v0, 01083; GFX12-WGP-NEXT:    s_load_b64 s[2:3], s[4:5], 0x01084; GFX12-WGP-NEXT:    s_load_b64 s[0:1], s[4:5], 0x81085; GFX12-WGP-NEXT:    s_wait_kmcnt 0x01086; GFX12-WGP-NEXT:    global_load_b32 v1, v0, s[2:3] th:TH_LOAD_NT scope:SCOPE_SYS1087; GFX12-WGP-NEXT:    s_wait_bvhcnt 0x01088; GFX12-WGP-NEXT:    s_wait_samplecnt 0x01089; GFX12-WGP-NEXT:    s_wait_loadcnt 0x01090; GFX12-WGP-NEXT:    global_store_b32 v0, v1, s[0:1]1091; GFX12-WGP-NEXT:    s_endpgm1092;1093; GFX12-CU-LABEL: global_nontemporal_volatile_load:1094; GFX12-CU:       ; %bb.0: ; %entry1095; GFX12-CU-NEXT:    v_mov_b32_e32 v0, 01096; GFX12-CU-NEXT:    s_load_b64 s[2:3], s[4:5], 0x01097; GFX12-CU-NEXT:    s_load_b64 s[0:1], s[4:5], 0x81098; GFX12-CU-NEXT:    s_wait_kmcnt 0x01099; GFX12-CU-NEXT:    global_load_b32 v1, v0, s[2:3] th:TH_LOAD_NT scope:SCOPE_SYS1100; GFX12-CU-NEXT:    s_wait_bvhcnt 0x01101; GFX12-CU-NEXT:    s_wait_samplecnt 0x01102; GFX12-CU-NEXT:    s_wait_loadcnt 0x01103; GFX12-CU-NEXT:    global_store_b32 v0, v1, s[0:1]1104; GFX12-CU-NEXT:    s_endpgm1105;1106; GFX1250-LABEL: global_nontemporal_volatile_load:1107; GFX1250:       ; %bb.0: ; %entry1108; GFX1250-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_WAVE_MODE, 25, 1), 11109; GFX1250-NEXT:    v_mov_b32_e32 v0, 01110; GFX1250-NEXT:    s_load_b64 s[2:3], s[4:5], 0x01111; GFX1250-NEXT:    s_load_b64 s[0:1], s[4:5], 0x81112; GFX1250-NEXT:    s_wait_xcnt 0x01113; GFX1250-NEXT:    s_wait_kmcnt 0x01114; GFX1250-NEXT:    global_load_b32 v1, v0, s[2:3] th:TH_LOAD_NT scope:SCOPE_SYS1115; GFX1250-NEXT:    s_wait_loadcnt 0x01116; GFX1250-NEXT:    global_store_b32 v0, v1, s[0:1]1117; GFX1250-NEXT:    s_endpgm1118    ptr addrspace(1) %in, ptr addrspace(1) %out) {1119entry:1120  %val = load volatile i32, ptr addrspace(1) %in, align 4, !nontemporal !01121  store i32 %val, ptr addrspace(1) %out1122  ret void1123}1124 1125!0 = !{i32 1}1126declare i32 @llvm.amdgcn.workitem.id.x()1127