781 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 52; RUN: llc -amdgpu-scalarize-global-loads=false -mtriple=amdgcn < %s | FileCheck --check-prefixes=GCN-NOHSA,FUNC,SI-NOHSA %s3; RUN: llc -amdgpu-scalarize-global-loads=false -mtriple=amdgcn-amdhsa -mcpu=kaveri < %s | FileCheck --check-prefixes=GCN-HSA,FUNC,GCNX3-HSA %s4; RUN: llc -amdgpu-scalarize-global-loads=false -mtriple=amdgcn -mcpu=tonga -mattr=-flat-for-global < %s | FileCheck --check-prefixes=GCN-NOHSA,FUNC,GCNX3-NOHSA %s5 6; RUN: llc -amdgpu-scalarize-global-loads=false -mtriple=r600 -mcpu=redwood < %s | FileCheck --check-prefixes=R600,FUNC %s7; RUN: llc -amdgpu-scalarize-global-loads=false -mtriple=r600 -mcpu=cayman < %s | FileCheck --check-prefixes=R600,FUNC %s8 9define amdgpu_kernel void @global_load_f32(ptr addrspace(1) %out, ptr addrspace(1) %in) #0 {10; SI-NOHSA-LABEL: global_load_f32:11; SI-NOHSA: ; %bb.0: ; %entry12; SI-NOHSA-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x913; SI-NOHSA-NEXT: s_mov_b32 s7, 0xf00014; SI-NOHSA-NEXT: s_mov_b32 s6, -115; SI-NOHSA-NEXT: s_mov_b32 s10, s616; SI-NOHSA-NEXT: s_mov_b32 s11, s717; SI-NOHSA-NEXT: s_waitcnt lgkmcnt(0)18; SI-NOHSA-NEXT: s_mov_b32 s8, s219; SI-NOHSA-NEXT: s_mov_b32 s9, s320; SI-NOHSA-NEXT: buffer_load_dword v0, off, s[8:11], 021; SI-NOHSA-NEXT: s_mov_b32 s4, s022; SI-NOHSA-NEXT: s_mov_b32 s5, s123; SI-NOHSA-NEXT: s_waitcnt vmcnt(0)24; SI-NOHSA-NEXT: buffer_store_dword v0, off, s[4:7], 025; SI-NOHSA-NEXT: s_endpgm26;27; GCN-HSA-LABEL: global_load_f32:28; GCN-HSA: ; %bb.0: ; %entry29; GCN-HSA-NEXT: s_load_dwordx4 s[0:3], s[8:9], 0x030; GCN-HSA-NEXT: s_add_i32 s12, s12, s1731; GCN-HSA-NEXT: s_mov_b32 flat_scratch_lo, s1332; GCN-HSA-NEXT: s_lshr_b32 flat_scratch_hi, s12, 833; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0)34; GCN-HSA-NEXT: v_mov_b32_e32 v0, s235; GCN-HSA-NEXT: v_mov_b32_e32 v1, s336; GCN-HSA-NEXT: flat_load_dword v2, v[0:1]37; GCN-HSA-NEXT: v_mov_b32_e32 v0, s038; GCN-HSA-NEXT: v_mov_b32_e32 v1, s139; GCN-HSA-NEXT: s_waitcnt vmcnt(0)40; GCN-HSA-NEXT: flat_store_dword v[0:1], v241; GCN-HSA-NEXT: s_endpgm42;43; GCNX3-NOHSA-LABEL: global_load_f32:44; GCNX3-NOHSA: ; %bb.0: ; %entry45; GCNX3-NOHSA-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x2446; GCNX3-NOHSA-NEXT: s_mov_b32 s7, 0xf00047; GCNX3-NOHSA-NEXT: s_mov_b32 s6, -148; GCNX3-NOHSA-NEXT: s_mov_b32 s10, s649; GCNX3-NOHSA-NEXT: s_mov_b32 s11, s750; GCNX3-NOHSA-NEXT: s_waitcnt lgkmcnt(0)51; GCNX3-NOHSA-NEXT: s_mov_b32 s8, s252; GCNX3-NOHSA-NEXT: s_mov_b32 s9, s353; GCNX3-NOHSA-NEXT: buffer_load_dword v0, off, s[8:11], 054; GCNX3-NOHSA-NEXT: s_mov_b32 s4, s055; GCNX3-NOHSA-NEXT: s_mov_b32 s5, s156; GCNX3-NOHSA-NEXT: s_waitcnt vmcnt(0)57; GCNX3-NOHSA-NEXT: buffer_store_dword v0, off, s[4:7], 058; GCNX3-NOHSA-NEXT: s_endpgm59entry:60 %tmp0 = load float, ptr addrspace(1) %in61 store float %tmp0, ptr addrspace(1) %out62 ret void63}64 65define amdgpu_kernel void @global_load_v2f32(ptr addrspace(1) %out, ptr addrspace(1) %in) #0 {66; SI-NOHSA-LABEL: global_load_v2f32:67; SI-NOHSA: ; %bb.0: ; %entry68; SI-NOHSA-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x969; SI-NOHSA-NEXT: s_mov_b32 s7, 0xf00070; SI-NOHSA-NEXT: s_mov_b32 s6, -171; SI-NOHSA-NEXT: s_mov_b32 s10, s672; SI-NOHSA-NEXT: s_mov_b32 s11, s773; SI-NOHSA-NEXT: s_waitcnt lgkmcnt(0)74; SI-NOHSA-NEXT: s_mov_b32 s8, s275; SI-NOHSA-NEXT: s_mov_b32 s9, s376; SI-NOHSA-NEXT: buffer_load_dwordx2 v[0:1], off, s[8:11], 077; SI-NOHSA-NEXT: s_mov_b32 s4, s078; SI-NOHSA-NEXT: s_mov_b32 s5, s179; SI-NOHSA-NEXT: s_waitcnt vmcnt(0)80; SI-NOHSA-NEXT: buffer_store_dwordx2 v[0:1], off, s[4:7], 081; SI-NOHSA-NEXT: s_endpgm82;83; GCN-HSA-LABEL: global_load_v2f32:84; GCN-HSA: ; %bb.0: ; %entry85; GCN-HSA-NEXT: s_load_dwordx4 s[0:3], s[8:9], 0x086; GCN-HSA-NEXT: s_add_i32 s12, s12, s1787; GCN-HSA-NEXT: s_mov_b32 flat_scratch_lo, s1388; GCN-HSA-NEXT: s_lshr_b32 flat_scratch_hi, s12, 889; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0)90; GCN-HSA-NEXT: v_mov_b32_e32 v0, s291; GCN-HSA-NEXT: v_mov_b32_e32 v1, s392; GCN-HSA-NEXT: flat_load_dwordx2 v[0:1], v[0:1]93; GCN-HSA-NEXT: v_mov_b32_e32 v2, s094; GCN-HSA-NEXT: v_mov_b32_e32 v3, s195; GCN-HSA-NEXT: s_waitcnt vmcnt(0)96; GCN-HSA-NEXT: flat_store_dwordx2 v[2:3], v[0:1]97; GCN-HSA-NEXT: s_endpgm98;99; GCNX3-NOHSA-LABEL: global_load_v2f32:100; GCNX3-NOHSA: ; %bb.0: ; %entry101; GCNX3-NOHSA-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x24102; GCNX3-NOHSA-NEXT: s_mov_b32 s7, 0xf000103; GCNX3-NOHSA-NEXT: s_mov_b32 s6, -1104; GCNX3-NOHSA-NEXT: s_mov_b32 s10, s6105; GCNX3-NOHSA-NEXT: s_mov_b32 s11, s7106; GCNX3-NOHSA-NEXT: s_waitcnt lgkmcnt(0)107; GCNX3-NOHSA-NEXT: s_mov_b32 s8, s2108; GCNX3-NOHSA-NEXT: s_mov_b32 s9, s3109; GCNX3-NOHSA-NEXT: buffer_load_dwordx2 v[0:1], off, s[8:11], 0110; GCNX3-NOHSA-NEXT: s_mov_b32 s4, s0111; GCNX3-NOHSA-NEXT: s_mov_b32 s5, s1112; GCNX3-NOHSA-NEXT: s_waitcnt vmcnt(0)113; GCNX3-NOHSA-NEXT: buffer_store_dwordx2 v[0:1], off, s[4:7], 0114; GCNX3-NOHSA-NEXT: s_endpgm115entry:116 %tmp0 = load <2 x float>, ptr addrspace(1) %in117 store <2 x float> %tmp0, ptr addrspace(1) %out118 ret void119}120 121define amdgpu_kernel void @global_load_v3f32(ptr addrspace(1) %out, ptr addrspace(1) %in) #0 {122; SI-NOHSA-LABEL: global_load_v3f32:123; SI-NOHSA: ; %bb.0: ; %entry124; SI-NOHSA-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x9125; SI-NOHSA-NEXT: s_mov_b32 s7, 0xf000126; SI-NOHSA-NEXT: s_mov_b32 s6, -1127; SI-NOHSA-NEXT: s_mov_b32 s10, s6128; SI-NOHSA-NEXT: s_mov_b32 s11, s7129; SI-NOHSA-NEXT: s_waitcnt lgkmcnt(0)130; SI-NOHSA-NEXT: s_mov_b32 s8, s2131; SI-NOHSA-NEXT: s_mov_b32 s9, s3132; SI-NOHSA-NEXT: buffer_load_dwordx4 v[0:3], off, s[8:11], 0133; SI-NOHSA-NEXT: s_mov_b32 s4, s0134; SI-NOHSA-NEXT: s_mov_b32 s5, s1135; SI-NOHSA-NEXT: s_waitcnt vmcnt(0)136; SI-NOHSA-NEXT: buffer_store_dword v2, off, s[4:7], 0 offset:8137; SI-NOHSA-NEXT: buffer_store_dwordx2 v[0:1], off, s[4:7], 0138; SI-NOHSA-NEXT: s_endpgm139;140; GCN-HSA-LABEL: global_load_v3f32:141; GCN-HSA: ; %bb.0: ; %entry142; GCN-HSA-NEXT: s_load_dwordx4 s[0:3], s[8:9], 0x0143; GCN-HSA-NEXT: s_add_i32 s12, s12, s17144; GCN-HSA-NEXT: s_mov_b32 flat_scratch_lo, s13145; GCN-HSA-NEXT: s_lshr_b32 flat_scratch_hi, s12, 8146; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0)147; GCN-HSA-NEXT: v_mov_b32_e32 v0, s2148; GCN-HSA-NEXT: v_mov_b32_e32 v1, s3149; GCN-HSA-NEXT: flat_load_dwordx3 v[0:2], v[0:1]150; GCN-HSA-NEXT: v_mov_b32_e32 v3, s0151; GCN-HSA-NEXT: v_mov_b32_e32 v4, s1152; GCN-HSA-NEXT: s_waitcnt vmcnt(0)153; GCN-HSA-NEXT: flat_store_dwordx3 v[3:4], v[0:2]154; GCN-HSA-NEXT: s_endpgm155;156; GCNX3-NOHSA-LABEL: global_load_v3f32:157; GCNX3-NOHSA: ; %bb.0: ; %entry158; GCNX3-NOHSA-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x24159; GCNX3-NOHSA-NEXT: s_mov_b32 s7, 0xf000160; GCNX3-NOHSA-NEXT: s_mov_b32 s6, -1161; GCNX3-NOHSA-NEXT: s_mov_b32 s10, s6162; GCNX3-NOHSA-NEXT: s_mov_b32 s11, s7163; GCNX3-NOHSA-NEXT: s_waitcnt lgkmcnt(0)164; GCNX3-NOHSA-NEXT: s_mov_b32 s8, s2165; GCNX3-NOHSA-NEXT: s_mov_b32 s9, s3166; GCNX3-NOHSA-NEXT: buffer_load_dwordx3 v[0:2], off, s[8:11], 0167; GCNX3-NOHSA-NEXT: s_mov_b32 s4, s0168; GCNX3-NOHSA-NEXT: s_mov_b32 s5, s1169; GCNX3-NOHSA-NEXT: s_waitcnt vmcnt(0)170; GCNX3-NOHSA-NEXT: buffer_store_dwordx3 v[0:2], off, s[4:7], 0171; GCNX3-NOHSA-NEXT: s_endpgm172entry:173 %tmp0 = load <3 x float>, ptr addrspace(1) %in174 store <3 x float> %tmp0, ptr addrspace(1) %out175 ret void176}177 178define amdgpu_kernel void @global_load_v4f32(ptr addrspace(1) %out, ptr addrspace(1) %in) #0 {179; SI-NOHSA-LABEL: global_load_v4f32:180; SI-NOHSA: ; %bb.0: ; %entry181; SI-NOHSA-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x9182; SI-NOHSA-NEXT: s_mov_b32 s7, 0xf000183; SI-NOHSA-NEXT: s_mov_b32 s6, -1184; SI-NOHSA-NEXT: s_mov_b32 s10, s6185; SI-NOHSA-NEXT: s_mov_b32 s11, s7186; SI-NOHSA-NEXT: s_waitcnt lgkmcnt(0)187; SI-NOHSA-NEXT: s_mov_b32 s8, s2188; SI-NOHSA-NEXT: s_mov_b32 s9, s3189; SI-NOHSA-NEXT: buffer_load_dwordx4 v[0:3], off, s[8:11], 0190; SI-NOHSA-NEXT: s_mov_b32 s4, s0191; SI-NOHSA-NEXT: s_mov_b32 s5, s1192; SI-NOHSA-NEXT: s_waitcnt vmcnt(0)193; SI-NOHSA-NEXT: buffer_store_dwordx4 v[0:3], off, s[4:7], 0194; SI-NOHSA-NEXT: s_endpgm195;196; GCN-HSA-LABEL: global_load_v4f32:197; GCN-HSA: ; %bb.0: ; %entry198; GCN-HSA-NEXT: s_load_dwordx4 s[0:3], s[8:9], 0x0199; GCN-HSA-NEXT: s_add_i32 s12, s12, s17200; GCN-HSA-NEXT: s_mov_b32 flat_scratch_lo, s13201; GCN-HSA-NEXT: s_lshr_b32 flat_scratch_hi, s12, 8202; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0)203; GCN-HSA-NEXT: v_mov_b32_e32 v0, s2204; GCN-HSA-NEXT: v_mov_b32_e32 v1, s3205; GCN-HSA-NEXT: flat_load_dwordx4 v[0:3], v[0:1]206; GCN-HSA-NEXT: v_mov_b32_e32 v4, s0207; GCN-HSA-NEXT: v_mov_b32_e32 v5, s1208; GCN-HSA-NEXT: s_waitcnt vmcnt(0)209; GCN-HSA-NEXT: flat_store_dwordx4 v[4:5], v[0:3]210; GCN-HSA-NEXT: s_endpgm211;212; GCNX3-NOHSA-LABEL: global_load_v4f32:213; GCNX3-NOHSA: ; %bb.0: ; %entry214; GCNX3-NOHSA-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x24215; GCNX3-NOHSA-NEXT: s_mov_b32 s7, 0xf000216; GCNX3-NOHSA-NEXT: s_mov_b32 s6, -1217; GCNX3-NOHSA-NEXT: s_mov_b32 s10, s6218; GCNX3-NOHSA-NEXT: s_mov_b32 s11, s7219; GCNX3-NOHSA-NEXT: s_waitcnt lgkmcnt(0)220; GCNX3-NOHSA-NEXT: s_mov_b32 s8, s2221; GCNX3-NOHSA-NEXT: s_mov_b32 s9, s3222; GCNX3-NOHSA-NEXT: buffer_load_dwordx4 v[0:3], off, s[8:11], 0223; GCNX3-NOHSA-NEXT: s_mov_b32 s4, s0224; GCNX3-NOHSA-NEXT: s_mov_b32 s5, s1225; GCNX3-NOHSA-NEXT: s_waitcnt vmcnt(0)226; GCNX3-NOHSA-NEXT: buffer_store_dwordx4 v[0:3], off, s[4:7], 0227; GCNX3-NOHSA-NEXT: s_endpgm228entry:229 %tmp0 = load <4 x float>, ptr addrspace(1) %in230 store <4 x float> %tmp0, ptr addrspace(1) %out231 ret void232}233 234define amdgpu_kernel void @global_load_v8f32(ptr addrspace(1) %out, ptr addrspace(1) %in) #0 {235; SI-NOHSA-LABEL: global_load_v8f32:236; SI-NOHSA: ; %bb.0: ; %entry237; SI-NOHSA-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x9238; SI-NOHSA-NEXT: s_mov_b32 s7, 0xf000239; SI-NOHSA-NEXT: s_mov_b32 s6, -1240; SI-NOHSA-NEXT: s_mov_b32 s10, s6241; SI-NOHSA-NEXT: s_mov_b32 s11, s7242; SI-NOHSA-NEXT: s_waitcnt lgkmcnt(0)243; SI-NOHSA-NEXT: s_mov_b32 s8, s2244; SI-NOHSA-NEXT: s_mov_b32 s9, s3245; SI-NOHSA-NEXT: buffer_load_dwordx4 v[0:3], off, s[8:11], 0 offset:16246; SI-NOHSA-NEXT: buffer_load_dwordx4 v[4:7], off, s[8:11], 0247; SI-NOHSA-NEXT: s_mov_b32 s4, s0248; SI-NOHSA-NEXT: s_mov_b32 s5, s1249; SI-NOHSA-NEXT: s_waitcnt vmcnt(1)250; SI-NOHSA-NEXT: buffer_store_dwordx4 v[0:3], off, s[4:7], 0 offset:16251; SI-NOHSA-NEXT: s_waitcnt vmcnt(1)252; SI-NOHSA-NEXT: buffer_store_dwordx4 v[4:7], off, s[4:7], 0253; SI-NOHSA-NEXT: s_endpgm254;255; GCN-HSA-LABEL: global_load_v8f32:256; GCN-HSA: ; %bb.0: ; %entry257; GCN-HSA-NEXT: s_load_dwordx4 s[0:3], s[8:9], 0x0258; GCN-HSA-NEXT: s_add_i32 s12, s12, s17259; GCN-HSA-NEXT: s_lshr_b32 flat_scratch_hi, s12, 8260; GCN-HSA-NEXT: s_mov_b32 flat_scratch_lo, s13261; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0)262; GCN-HSA-NEXT: s_add_u32 s4, s2, 16263; GCN-HSA-NEXT: v_mov_b32_e32 v0, s2264; GCN-HSA-NEXT: s_addc_u32 s5, s3, 0265; GCN-HSA-NEXT: v_mov_b32_e32 v4, s4266; GCN-HSA-NEXT: v_mov_b32_e32 v1, s3267; GCN-HSA-NEXT: v_mov_b32_e32 v5, s5268; GCN-HSA-NEXT: flat_load_dwordx4 v[0:3], v[0:1]269; GCN-HSA-NEXT: flat_load_dwordx4 v[4:7], v[4:5]270; GCN-HSA-NEXT: v_mov_b32_e32 v9, s1271; GCN-HSA-NEXT: v_mov_b32_e32 v8, s0272; GCN-HSA-NEXT: s_add_u32 s0, s0, 16273; GCN-HSA-NEXT: s_addc_u32 s1, s1, 0274; GCN-HSA-NEXT: v_mov_b32_e32 v11, s1275; GCN-HSA-NEXT: v_mov_b32_e32 v10, s0276; GCN-HSA-NEXT: s_waitcnt vmcnt(1)277; GCN-HSA-NEXT: flat_store_dwordx4 v[8:9], v[0:3]278; GCN-HSA-NEXT: s_waitcnt vmcnt(1)279; GCN-HSA-NEXT: flat_store_dwordx4 v[10:11], v[4:7]280; GCN-HSA-NEXT: s_endpgm281;282; GCNX3-NOHSA-LABEL: global_load_v8f32:283; GCNX3-NOHSA: ; %bb.0: ; %entry284; GCNX3-NOHSA-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x24285; GCNX3-NOHSA-NEXT: s_mov_b32 s7, 0xf000286; GCNX3-NOHSA-NEXT: s_mov_b32 s6, -1287; GCNX3-NOHSA-NEXT: s_mov_b32 s10, s6288; GCNX3-NOHSA-NEXT: s_mov_b32 s11, s7289; GCNX3-NOHSA-NEXT: s_waitcnt lgkmcnt(0)290; GCNX3-NOHSA-NEXT: s_mov_b32 s8, s2291; GCNX3-NOHSA-NEXT: s_mov_b32 s9, s3292; GCNX3-NOHSA-NEXT: buffer_load_dwordx4 v[0:3], off, s[8:11], 0 offset:16293; GCNX3-NOHSA-NEXT: buffer_load_dwordx4 v[4:7], off, s[8:11], 0294; GCNX3-NOHSA-NEXT: s_mov_b32 s4, s0295; GCNX3-NOHSA-NEXT: s_mov_b32 s5, s1296; GCNX3-NOHSA-NEXT: s_waitcnt vmcnt(1)297; GCNX3-NOHSA-NEXT: buffer_store_dwordx4 v[0:3], off, s[4:7], 0 offset:16298; GCNX3-NOHSA-NEXT: s_waitcnt vmcnt(1)299; GCNX3-NOHSA-NEXT: buffer_store_dwordx4 v[4:7], off, s[4:7], 0300; GCNX3-NOHSA-NEXT: s_endpgm301entry:302 %tmp0 = load <8 x float>, ptr addrspace(1) %in303 store <8 x float> %tmp0, ptr addrspace(1) %out304 ret void305}306 307define amdgpu_kernel void @global_load_v9f32(ptr addrspace(1) %out, ptr addrspace(1) %in) #0 {308; SI-NOHSA-LABEL: global_load_v9f32:309; SI-NOHSA: ; %bb.0: ; %entry310; SI-NOHSA-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x9311; SI-NOHSA-NEXT: s_mov_b32 s7, 0xf000312; SI-NOHSA-NEXT: s_mov_b32 s6, -1313; SI-NOHSA-NEXT: s_mov_b32 s10, s6314; SI-NOHSA-NEXT: s_mov_b32 s11, s7315; SI-NOHSA-NEXT: s_waitcnt lgkmcnt(0)316; SI-NOHSA-NEXT: s_mov_b32 s8, s2317; SI-NOHSA-NEXT: s_mov_b32 s9, s3318; SI-NOHSA-NEXT: buffer_load_dword v8, off, s[8:11], 0 offset:32319; SI-NOHSA-NEXT: buffer_load_dwordx4 v[0:3], off, s[8:11], 0320; SI-NOHSA-NEXT: buffer_load_dwordx4 v[4:7], off, s[8:11], 0 offset:16321; SI-NOHSA-NEXT: s_mov_b32 s4, s0322; SI-NOHSA-NEXT: s_mov_b32 s5, s1323; SI-NOHSA-NEXT: s_waitcnt vmcnt(2)324; SI-NOHSA-NEXT: buffer_store_dword v8, off, s[4:7], 0 offset:32325; SI-NOHSA-NEXT: s_waitcnt vmcnt(2)326; SI-NOHSA-NEXT: buffer_store_dwordx4 v[0:3], off, s[4:7], 0327; SI-NOHSA-NEXT: s_waitcnt vmcnt(2)328; SI-NOHSA-NEXT: buffer_store_dwordx4 v[4:7], off, s[4:7], 0 offset:16329; SI-NOHSA-NEXT: s_endpgm330;331; GCN-HSA-LABEL: global_load_v9f32:332; GCN-HSA: ; %bb.0: ; %entry333; GCN-HSA-NEXT: s_load_dwordx4 s[0:3], s[8:9], 0x0334; GCN-HSA-NEXT: s_add_i32 s12, s12, s17335; GCN-HSA-NEXT: s_lshr_b32 flat_scratch_hi, s12, 8336; GCN-HSA-NEXT: s_mov_b32 flat_scratch_lo, s13337; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0)338; GCN-HSA-NEXT: s_add_u32 s4, s2, 16339; GCN-HSA-NEXT: v_mov_b32_e32 v0, s2340; GCN-HSA-NEXT: s_addc_u32 s5, s3, 0341; GCN-HSA-NEXT: v_mov_b32_e32 v1, s3342; GCN-HSA-NEXT: s_add_u32 s2, s2, 32343; GCN-HSA-NEXT: s_addc_u32 s3, s3, 0344; GCN-HSA-NEXT: v_mov_b32_e32 v4, s4345; GCN-HSA-NEXT: v_mov_b32_e32 v7, s3346; GCN-HSA-NEXT: v_mov_b32_e32 v5, s5347; GCN-HSA-NEXT: v_mov_b32_e32 v6, s2348; GCN-HSA-NEXT: flat_load_dwordx4 v[0:3], v[0:1]349; GCN-HSA-NEXT: flat_load_dword v14, v[6:7]350; GCN-HSA-NEXT: flat_load_dwordx4 v[4:7], v[4:5]351; GCN-HSA-NEXT: s_add_u32 s2, s0, 32352; GCN-HSA-NEXT: v_mov_b32_e32 v9, s1353; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0354; GCN-HSA-NEXT: v_mov_b32_e32 v8, s0355; GCN-HSA-NEXT: s_add_u32 s0, s0, 16356; GCN-HSA-NEXT: s_addc_u32 s1, s1, 0357; GCN-HSA-NEXT: v_mov_b32_e32 v11, s3358; GCN-HSA-NEXT: v_mov_b32_e32 v13, s1359; GCN-HSA-NEXT: v_mov_b32_e32 v10, s2360; GCN-HSA-NEXT: v_mov_b32_e32 v12, s0361; GCN-HSA-NEXT: s_waitcnt vmcnt(2)362; GCN-HSA-NEXT: flat_store_dwordx4 v[8:9], v[0:3]363; GCN-HSA-NEXT: s_waitcnt vmcnt(2)364; GCN-HSA-NEXT: flat_store_dword v[10:11], v14365; GCN-HSA-NEXT: s_waitcnt vmcnt(2)366; GCN-HSA-NEXT: flat_store_dwordx4 v[12:13], v[4:7]367; GCN-HSA-NEXT: s_endpgm368;369; GCNX3-NOHSA-LABEL: global_load_v9f32:370; GCNX3-NOHSA: ; %bb.0: ; %entry371; GCNX3-NOHSA-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x24372; GCNX3-NOHSA-NEXT: s_mov_b32 s7, 0xf000373; GCNX3-NOHSA-NEXT: s_mov_b32 s6, -1374; GCNX3-NOHSA-NEXT: s_mov_b32 s10, s6375; GCNX3-NOHSA-NEXT: s_mov_b32 s11, s7376; GCNX3-NOHSA-NEXT: s_waitcnt lgkmcnt(0)377; GCNX3-NOHSA-NEXT: s_mov_b32 s8, s2378; GCNX3-NOHSA-NEXT: s_mov_b32 s9, s3379; GCNX3-NOHSA-NEXT: buffer_load_dword v8, off, s[8:11], 0 offset:32380; GCNX3-NOHSA-NEXT: buffer_load_dwordx4 v[0:3], off, s[8:11], 0381; GCNX3-NOHSA-NEXT: buffer_load_dwordx4 v[4:7], off, s[8:11], 0 offset:16382; GCNX3-NOHSA-NEXT: s_mov_b32 s4, s0383; GCNX3-NOHSA-NEXT: s_mov_b32 s5, s1384; GCNX3-NOHSA-NEXT: s_waitcnt vmcnt(2)385; GCNX3-NOHSA-NEXT: buffer_store_dword v8, off, s[4:7], 0 offset:32386; GCNX3-NOHSA-NEXT: s_waitcnt vmcnt(2)387; GCNX3-NOHSA-NEXT: buffer_store_dwordx4 v[0:3], off, s[4:7], 0388; GCNX3-NOHSA-NEXT: s_waitcnt vmcnt(2)389; GCNX3-NOHSA-NEXT: buffer_store_dwordx4 v[4:7], off, s[4:7], 0 offset:16390; GCNX3-NOHSA-NEXT: s_endpgm391entry:392 %tmp0 = load <9 x float>, ptr addrspace(1) %in393 store <9 x float> %tmp0, ptr addrspace(1) %out394 ret void395}396 397define amdgpu_kernel void @global_load_v10f32(ptr addrspace(1) %out, ptr addrspace(1) %in) #0 {398; SI-NOHSA-LABEL: global_load_v10f32:399; SI-NOHSA: ; %bb.0: ; %entry400; SI-NOHSA-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x9401; SI-NOHSA-NEXT: s_mov_b32 s7, 0xf000402; SI-NOHSA-NEXT: s_mov_b32 s6, -1403; SI-NOHSA-NEXT: s_mov_b32 s10, s6404; SI-NOHSA-NEXT: s_mov_b32 s11, s7405; SI-NOHSA-NEXT: s_waitcnt lgkmcnt(0)406; SI-NOHSA-NEXT: s_mov_b32 s8, s2407; SI-NOHSA-NEXT: s_mov_b32 s9, s3408; SI-NOHSA-NEXT: buffer_load_dwordx4 v[0:3], off, s[8:11], 0409; SI-NOHSA-NEXT: buffer_load_dwordx4 v[4:7], off, s[8:11], 0 offset:16410; SI-NOHSA-NEXT: buffer_load_dwordx2 v[8:9], off, s[8:11], 0 offset:32411; SI-NOHSA-NEXT: s_mov_b32 s4, s0412; SI-NOHSA-NEXT: s_mov_b32 s5, s1413; SI-NOHSA-NEXT: s_waitcnt vmcnt(2)414; SI-NOHSA-NEXT: buffer_store_dwordx4 v[0:3], off, s[4:7], 0415; SI-NOHSA-NEXT: s_waitcnt vmcnt(2)416; SI-NOHSA-NEXT: buffer_store_dwordx4 v[4:7], off, s[4:7], 0 offset:16417; SI-NOHSA-NEXT: s_waitcnt vmcnt(2)418; SI-NOHSA-NEXT: buffer_store_dwordx2 v[8:9], off, s[4:7], 0 offset:32419; SI-NOHSA-NEXT: s_endpgm420;421; GCN-HSA-LABEL: global_load_v10f32:422; GCN-HSA: ; %bb.0: ; %entry423; GCN-HSA-NEXT: s_load_dwordx4 s[0:3], s[8:9], 0x0424; GCN-HSA-NEXT: s_add_i32 s12, s12, s17425; GCN-HSA-NEXT: s_lshr_b32 flat_scratch_hi, s12, 8426; GCN-HSA-NEXT: s_mov_b32 flat_scratch_lo, s13427; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0)428; GCN-HSA-NEXT: s_add_u32 s4, s2, 32429; GCN-HSA-NEXT: v_mov_b32_e32 v0, s2430; GCN-HSA-NEXT: s_addc_u32 s5, s3, 0431; GCN-HSA-NEXT: v_mov_b32_e32 v1, s3432; GCN-HSA-NEXT: s_add_u32 s2, s2, 16433; GCN-HSA-NEXT: s_addc_u32 s3, s3, 0434; GCN-HSA-NEXT: v_mov_b32_e32 v9, s5435; GCN-HSA-NEXT: v_mov_b32_e32 v5, s3436; GCN-HSA-NEXT: v_mov_b32_e32 v8, s4437; GCN-HSA-NEXT: v_mov_b32_e32 v4, s2438; GCN-HSA-NEXT: flat_load_dwordx4 v[0:3], v[0:1]439; GCN-HSA-NEXT: flat_load_dwordx4 v[4:7], v[4:5]440; GCN-HSA-NEXT: flat_load_dwordx2 v[8:9], v[8:9]441; GCN-HSA-NEXT: s_add_u32 s2, s0, 16442; GCN-HSA-NEXT: v_mov_b32_e32 v11, s1443; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0444; GCN-HSA-NEXT: v_mov_b32_e32 v10, s0445; GCN-HSA-NEXT: s_add_u32 s0, s0, 32446; GCN-HSA-NEXT: s_addc_u32 s1, s1, 0447; GCN-HSA-NEXT: v_mov_b32_e32 v13, s3448; GCN-HSA-NEXT: v_mov_b32_e32 v15, s1449; GCN-HSA-NEXT: v_mov_b32_e32 v12, s2450; GCN-HSA-NEXT: v_mov_b32_e32 v14, s0451; GCN-HSA-NEXT: s_waitcnt vmcnt(2)452; GCN-HSA-NEXT: flat_store_dwordx4 v[10:11], v[0:3]453; GCN-HSA-NEXT: s_waitcnt vmcnt(2)454; GCN-HSA-NEXT: flat_store_dwordx4 v[12:13], v[4:7]455; GCN-HSA-NEXT: s_waitcnt vmcnt(2)456; GCN-HSA-NEXT: flat_store_dwordx2 v[14:15], v[8:9]457; GCN-HSA-NEXT: s_endpgm458;459; GCNX3-NOHSA-LABEL: global_load_v10f32:460; GCNX3-NOHSA: ; %bb.0: ; %entry461; GCNX3-NOHSA-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x24462; GCNX3-NOHSA-NEXT: s_mov_b32 s7, 0xf000463; GCNX3-NOHSA-NEXT: s_mov_b32 s6, -1464; GCNX3-NOHSA-NEXT: s_mov_b32 s10, s6465; GCNX3-NOHSA-NEXT: s_mov_b32 s11, s7466; GCNX3-NOHSA-NEXT: s_waitcnt lgkmcnt(0)467; GCNX3-NOHSA-NEXT: s_mov_b32 s8, s2468; GCNX3-NOHSA-NEXT: s_mov_b32 s9, s3469; GCNX3-NOHSA-NEXT: buffer_load_dwordx4 v[0:3], off, s[8:11], 0470; GCNX3-NOHSA-NEXT: buffer_load_dwordx4 v[4:7], off, s[8:11], 0 offset:16471; GCNX3-NOHSA-NEXT: buffer_load_dwordx2 v[8:9], off, s[8:11], 0 offset:32472; GCNX3-NOHSA-NEXT: s_mov_b32 s4, s0473; GCNX3-NOHSA-NEXT: s_mov_b32 s5, s1474; GCNX3-NOHSA-NEXT: s_waitcnt vmcnt(2)475; GCNX3-NOHSA-NEXT: buffer_store_dwordx4 v[0:3], off, s[4:7], 0476; GCNX3-NOHSA-NEXT: s_waitcnt vmcnt(2)477; GCNX3-NOHSA-NEXT: buffer_store_dwordx4 v[4:7], off, s[4:7], 0 offset:16478; GCNX3-NOHSA-NEXT: s_waitcnt vmcnt(2)479; GCNX3-NOHSA-NEXT: buffer_store_dwordx2 v[8:9], off, s[4:7], 0 offset:32480; GCNX3-NOHSA-NEXT: s_endpgm481entry:482 %tmp0 = load <10 x float>, ptr addrspace(1) %in483 store <10 x float> %tmp0, ptr addrspace(1) %out484 ret void485}486 487define amdgpu_kernel void @global_load_v11f32(ptr addrspace(1) %out, ptr addrspace(1) %in) #0 {488; SI-NOHSA-LABEL: global_load_v11f32:489; SI-NOHSA: ; %bb.0: ; %entry490; SI-NOHSA-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x9491; SI-NOHSA-NEXT: s_mov_b32 s7, 0xf000492; SI-NOHSA-NEXT: s_mov_b32 s6, -1493; SI-NOHSA-NEXT: s_mov_b32 s10, s6494; SI-NOHSA-NEXT: s_mov_b32 s11, s7495; SI-NOHSA-NEXT: s_waitcnt lgkmcnt(0)496; SI-NOHSA-NEXT: s_mov_b32 s8, s2497; SI-NOHSA-NEXT: s_mov_b32 s9, s3498; SI-NOHSA-NEXT: buffer_load_dwordx4 v[0:3], off, s[8:11], 0 offset:32499; SI-NOHSA-NEXT: s_mov_b32 s4, s0500; SI-NOHSA-NEXT: s_mov_b32 s5, s1501; SI-NOHSA-NEXT: s_waitcnt vmcnt(0)502; SI-NOHSA-NEXT: buffer_load_dwordx4 v[3:6], off, s[8:11], 0503; SI-NOHSA-NEXT: buffer_load_dwordx4 v[7:10], off, s[8:11], 0 offset:16504; SI-NOHSA-NEXT: buffer_store_dword v2, off, s[4:7], 0 offset:40505; SI-NOHSA-NEXT: buffer_store_dwordx2 v[0:1], off, s[4:7], 0 offset:32506; SI-NOHSA-NEXT: s_waitcnt vmcnt(3)507; SI-NOHSA-NEXT: buffer_store_dwordx4 v[3:6], off, s[4:7], 0508; SI-NOHSA-NEXT: s_waitcnt vmcnt(3)509; SI-NOHSA-NEXT: buffer_store_dwordx4 v[7:10], off, s[4:7], 0 offset:16510; SI-NOHSA-NEXT: s_endpgm511;512; GCN-HSA-LABEL: global_load_v11f32:513; GCN-HSA: ; %bb.0: ; %entry514; GCN-HSA-NEXT: s_load_dwordx4 s[0:3], s[8:9], 0x0515; GCN-HSA-NEXT: s_add_i32 s12, s12, s17516; GCN-HSA-NEXT: s_lshr_b32 flat_scratch_hi, s12, 8517; GCN-HSA-NEXT: s_mov_b32 flat_scratch_lo, s13518; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0)519; GCN-HSA-NEXT: s_add_u32 s4, s2, 32520; GCN-HSA-NEXT: v_mov_b32_e32 v0, s2521; GCN-HSA-NEXT: s_addc_u32 s5, s3, 0522; GCN-HSA-NEXT: v_mov_b32_e32 v1, s3523; GCN-HSA-NEXT: s_add_u32 s2, s2, 16524; GCN-HSA-NEXT: s_addc_u32 s3, s3, 0525; GCN-HSA-NEXT: v_mov_b32_e32 v9, s5526; GCN-HSA-NEXT: v_mov_b32_e32 v5, s3527; GCN-HSA-NEXT: v_mov_b32_e32 v8, s4528; GCN-HSA-NEXT: v_mov_b32_e32 v4, s2529; GCN-HSA-NEXT: flat_load_dwordx4 v[0:3], v[0:1]530; GCN-HSA-NEXT: flat_load_dwordx4 v[4:7], v[4:5]531; GCN-HSA-NEXT: flat_load_dwordx3 v[8:10], v[8:9]532; GCN-HSA-NEXT: s_add_u32 s2, s0, 16533; GCN-HSA-NEXT: v_mov_b32_e32 v12, s1534; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0535; GCN-HSA-NEXT: v_mov_b32_e32 v11, s0536; GCN-HSA-NEXT: s_add_u32 s0, s0, 32537; GCN-HSA-NEXT: s_addc_u32 s1, s1, 0538; GCN-HSA-NEXT: v_mov_b32_e32 v14, s3539; GCN-HSA-NEXT: v_mov_b32_e32 v16, s1540; GCN-HSA-NEXT: v_mov_b32_e32 v13, s2541; GCN-HSA-NEXT: v_mov_b32_e32 v15, s0542; GCN-HSA-NEXT: s_waitcnt vmcnt(2)543; GCN-HSA-NEXT: flat_store_dwordx4 v[11:12], v[0:3]544; GCN-HSA-NEXT: s_waitcnt vmcnt(2)545; GCN-HSA-NEXT: flat_store_dwordx4 v[13:14], v[4:7]546; GCN-HSA-NEXT: s_waitcnt vmcnt(2)547; GCN-HSA-NEXT: flat_store_dwordx3 v[15:16], v[8:10]548; GCN-HSA-NEXT: s_endpgm549;550; GCNX3-NOHSA-LABEL: global_load_v11f32:551; GCNX3-NOHSA: ; %bb.0: ; %entry552; GCNX3-NOHSA-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x24553; GCNX3-NOHSA-NEXT: s_mov_b32 s7, 0xf000554; GCNX3-NOHSA-NEXT: s_mov_b32 s6, -1555; GCNX3-NOHSA-NEXT: s_mov_b32 s10, s6556; GCNX3-NOHSA-NEXT: s_mov_b32 s11, s7557; GCNX3-NOHSA-NEXT: s_waitcnt lgkmcnt(0)558; GCNX3-NOHSA-NEXT: s_mov_b32 s8, s2559; GCNX3-NOHSA-NEXT: s_mov_b32 s9, s3560; GCNX3-NOHSA-NEXT: buffer_load_dwordx4 v[0:3], off, s[8:11], 0561; GCNX3-NOHSA-NEXT: buffer_load_dwordx4 v[4:7], off, s[8:11], 0 offset:16562; GCNX3-NOHSA-NEXT: buffer_load_dwordx3 v[8:10], off, s[8:11], 0 offset:32563; GCNX3-NOHSA-NEXT: s_mov_b32 s4, s0564; GCNX3-NOHSA-NEXT: s_mov_b32 s5, s1565; GCNX3-NOHSA-NEXT: s_waitcnt vmcnt(2)566; GCNX3-NOHSA-NEXT: buffer_store_dwordx4 v[0:3], off, s[4:7], 0567; GCNX3-NOHSA-NEXT: s_waitcnt vmcnt(2)568; GCNX3-NOHSA-NEXT: buffer_store_dwordx4 v[4:7], off, s[4:7], 0 offset:16569; GCNX3-NOHSA-NEXT: s_waitcnt vmcnt(2)570; GCNX3-NOHSA-NEXT: buffer_store_dwordx3 v[8:10], off, s[4:7], 0 offset:32571; GCNX3-NOHSA-NEXT: s_endpgm572entry:573 %tmp0 = load <11 x float>, ptr addrspace(1) %in574 store <11 x float> %tmp0, ptr addrspace(1) %out575 ret void576}577 578define amdgpu_kernel void @global_load_v12f32(ptr addrspace(1) %out, ptr addrspace(1) %in) #0 {579; SI-NOHSA-LABEL: global_load_v12f32:580; SI-NOHSA: ; %bb.0: ; %entry581; SI-NOHSA-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x9582; SI-NOHSA-NEXT: s_mov_b32 s7, 0xf000583; SI-NOHSA-NEXT: s_mov_b32 s6, -1584; SI-NOHSA-NEXT: s_mov_b32 s10, s6585; SI-NOHSA-NEXT: s_mov_b32 s11, s7586; SI-NOHSA-NEXT: s_waitcnt lgkmcnt(0)587; SI-NOHSA-NEXT: s_mov_b32 s8, s2588; SI-NOHSA-NEXT: s_mov_b32 s9, s3589; SI-NOHSA-NEXT: buffer_load_dwordx4 v[0:3], off, s[8:11], 0590; SI-NOHSA-NEXT: buffer_load_dwordx4 v[4:7], off, s[8:11], 0 offset:16591; SI-NOHSA-NEXT: buffer_load_dwordx4 v[8:11], off, s[8:11], 0 offset:32592; SI-NOHSA-NEXT: s_mov_b32 s4, s0593; SI-NOHSA-NEXT: s_mov_b32 s5, s1594; SI-NOHSA-NEXT: s_waitcnt vmcnt(2)595; SI-NOHSA-NEXT: buffer_store_dwordx4 v[0:3], off, s[4:7], 0596; SI-NOHSA-NEXT: s_waitcnt vmcnt(2)597; SI-NOHSA-NEXT: buffer_store_dwordx4 v[4:7], off, s[4:7], 0 offset:16598; SI-NOHSA-NEXT: s_waitcnt vmcnt(2)599; SI-NOHSA-NEXT: buffer_store_dwordx4 v[8:11], off, s[4:7], 0 offset:32600; SI-NOHSA-NEXT: s_endpgm601;602; GCN-HSA-LABEL: global_load_v12f32:603; GCN-HSA: ; %bb.0: ; %entry604; GCN-HSA-NEXT: s_load_dwordx4 s[0:3], s[8:9], 0x0605; GCN-HSA-NEXT: s_add_i32 s12, s12, s17606; GCN-HSA-NEXT: s_lshr_b32 flat_scratch_hi, s12, 8607; GCN-HSA-NEXT: s_mov_b32 flat_scratch_lo, s13608; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0)609; GCN-HSA-NEXT: s_add_u32 s4, s2, 32610; GCN-HSA-NEXT: v_mov_b32_e32 v0, s2611; GCN-HSA-NEXT: s_addc_u32 s5, s3, 0612; GCN-HSA-NEXT: v_mov_b32_e32 v1, s3613; GCN-HSA-NEXT: s_add_u32 s2, s2, 16614; GCN-HSA-NEXT: s_addc_u32 s3, s3, 0615; GCN-HSA-NEXT: v_mov_b32_e32 v9, s5616; GCN-HSA-NEXT: v_mov_b32_e32 v5, s3617; GCN-HSA-NEXT: v_mov_b32_e32 v8, s4618; GCN-HSA-NEXT: v_mov_b32_e32 v4, s2619; GCN-HSA-NEXT: flat_load_dwordx4 v[0:3], v[0:1]620; GCN-HSA-NEXT: flat_load_dwordx4 v[4:7], v[4:5]621; GCN-HSA-NEXT: flat_load_dwordx4 v[8:11], v[8:9]622; GCN-HSA-NEXT: s_add_u32 s2, s0, 16623; GCN-HSA-NEXT: v_mov_b32_e32 v13, s1624; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0625; GCN-HSA-NEXT: v_mov_b32_e32 v12, s0626; GCN-HSA-NEXT: s_add_u32 s0, s0, 32627; GCN-HSA-NEXT: s_addc_u32 s1, s1, 0628; GCN-HSA-NEXT: v_mov_b32_e32 v15, s3629; GCN-HSA-NEXT: v_mov_b32_e32 v17, s1630; GCN-HSA-NEXT: v_mov_b32_e32 v14, s2631; GCN-HSA-NEXT: v_mov_b32_e32 v16, s0632; GCN-HSA-NEXT: s_waitcnt vmcnt(2)633; GCN-HSA-NEXT: flat_store_dwordx4 v[12:13], v[0:3]634; GCN-HSA-NEXT: s_waitcnt vmcnt(2)635; GCN-HSA-NEXT: flat_store_dwordx4 v[14:15], v[4:7]636; GCN-HSA-NEXT: s_waitcnt vmcnt(2)637; GCN-HSA-NEXT: flat_store_dwordx4 v[16:17], v[8:11]638; GCN-HSA-NEXT: s_endpgm639;640; GCNX3-NOHSA-LABEL: global_load_v12f32:641; GCNX3-NOHSA: ; %bb.0: ; %entry642; GCNX3-NOHSA-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x24643; GCNX3-NOHSA-NEXT: s_mov_b32 s7, 0xf000644; GCNX3-NOHSA-NEXT: s_mov_b32 s6, -1645; GCNX3-NOHSA-NEXT: s_mov_b32 s10, s6646; GCNX3-NOHSA-NEXT: s_mov_b32 s11, s7647; GCNX3-NOHSA-NEXT: s_waitcnt lgkmcnt(0)648; GCNX3-NOHSA-NEXT: s_mov_b32 s8, s2649; GCNX3-NOHSA-NEXT: s_mov_b32 s9, s3650; GCNX3-NOHSA-NEXT: buffer_load_dwordx4 v[0:3], off, s[8:11], 0651; GCNX3-NOHSA-NEXT: buffer_load_dwordx4 v[4:7], off, s[8:11], 0 offset:16652; GCNX3-NOHSA-NEXT: buffer_load_dwordx4 v[8:11], off, s[8:11], 0 offset:32653; GCNX3-NOHSA-NEXT: s_mov_b32 s4, s0654; GCNX3-NOHSA-NEXT: s_mov_b32 s5, s1655; GCNX3-NOHSA-NEXT: s_waitcnt vmcnt(2)656; GCNX3-NOHSA-NEXT: buffer_store_dwordx4 v[0:3], off, s[4:7], 0657; GCNX3-NOHSA-NEXT: s_waitcnt vmcnt(2)658; GCNX3-NOHSA-NEXT: buffer_store_dwordx4 v[4:7], off, s[4:7], 0 offset:16659; GCNX3-NOHSA-NEXT: s_waitcnt vmcnt(2)660; GCNX3-NOHSA-NEXT: buffer_store_dwordx4 v[8:11], off, s[4:7], 0 offset:32661; GCNX3-NOHSA-NEXT: s_endpgm662entry:663 %tmp0 = load <12 x float>, ptr addrspace(1) %in664 store <12 x float> %tmp0, ptr addrspace(1) %out665 ret void666}667 668define amdgpu_kernel void @global_load_v16f32(ptr addrspace(1) %out, ptr addrspace(1) %in) #0 {669; SI-NOHSA-LABEL: global_load_v16f32:670; SI-NOHSA: ; %bb.0: ; %entry671; SI-NOHSA-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x9672; SI-NOHSA-NEXT: s_mov_b32 s7, 0xf000673; SI-NOHSA-NEXT: s_mov_b32 s6, -1674; SI-NOHSA-NEXT: s_mov_b32 s10, s6675; SI-NOHSA-NEXT: s_mov_b32 s11, s7676; SI-NOHSA-NEXT: s_waitcnt lgkmcnt(0)677; SI-NOHSA-NEXT: s_mov_b32 s4, s0678; SI-NOHSA-NEXT: s_mov_b32 s5, s1679; SI-NOHSA-NEXT: s_mov_b32 s8, s2680; SI-NOHSA-NEXT: s_mov_b32 s9, s3681; SI-NOHSA-NEXT: buffer_load_dwordx4 v[0:3], off, s[8:11], 0 offset:32682; SI-NOHSA-NEXT: buffer_load_dwordx4 v[4:7], off, s[8:11], 0 offset:48683; SI-NOHSA-NEXT: buffer_load_dwordx4 v[8:11], off, s[8:11], 0684; SI-NOHSA-NEXT: buffer_load_dwordx4 v[12:15], off, s[8:11], 0 offset:16685; SI-NOHSA-NEXT: s_waitcnt vmcnt(3)686; SI-NOHSA-NEXT: buffer_store_dwordx4 v[0:3], off, s[4:7], 0 offset:32687; SI-NOHSA-NEXT: s_waitcnt vmcnt(3)688; SI-NOHSA-NEXT: buffer_store_dwordx4 v[4:7], off, s[4:7], 0 offset:48689; SI-NOHSA-NEXT: s_waitcnt vmcnt(3)690; SI-NOHSA-NEXT: buffer_store_dwordx4 v[8:11], off, s[4:7], 0691; SI-NOHSA-NEXT: s_waitcnt vmcnt(3)692; SI-NOHSA-NEXT: buffer_store_dwordx4 v[12:15], off, s[4:7], 0 offset:16693; SI-NOHSA-NEXT: s_endpgm694;695; GCN-HSA-LABEL: global_load_v16f32:696; GCN-HSA: ; %bb.0: ; %entry697; GCN-HSA-NEXT: s_load_dwordx4 s[0:3], s[8:9], 0x0698; GCN-HSA-NEXT: s_add_i32 s12, s12, s17699; GCN-HSA-NEXT: s_lshr_b32 flat_scratch_hi, s12, 8700; GCN-HSA-NEXT: s_mov_b32 flat_scratch_lo, s13701; GCN-HSA-NEXT: s_waitcnt lgkmcnt(0)702; GCN-HSA-NEXT: s_add_u32 s4, s2, 16703; GCN-HSA-NEXT: s_addc_u32 s5, s3, 0704; GCN-HSA-NEXT: s_add_u32 s6, s2, 48705; GCN-HSA-NEXT: v_mov_b32_e32 v9, s3706; GCN-HSA-NEXT: s_addc_u32 s7, s3, 0707; GCN-HSA-NEXT: v_mov_b32_e32 v8, s2708; GCN-HSA-NEXT: s_add_u32 s2, s2, 32709; GCN-HSA-NEXT: v_mov_b32_e32 v0, s6710; GCN-HSA-NEXT: s_addc_u32 s3, s3, 0711; GCN-HSA-NEXT: v_mov_b32_e32 v1, s7712; GCN-HSA-NEXT: v_mov_b32_e32 v5, s3713; GCN-HSA-NEXT: flat_load_dwordx4 v[0:3], v[0:1]714; GCN-HSA-NEXT: v_mov_b32_e32 v4, s2715; GCN-HSA-NEXT: flat_load_dwordx4 v[4:7], v[4:5]716; GCN-HSA-NEXT: flat_load_dwordx4 v[8:11], v[8:9]717; GCN-HSA-NEXT: v_mov_b32_e32 v13, s5718; GCN-HSA-NEXT: v_mov_b32_e32 v12, s4719; GCN-HSA-NEXT: flat_load_dwordx4 v[12:15], v[12:13]720; GCN-HSA-NEXT: s_add_u32 s2, s0, 32721; GCN-HSA-NEXT: s_addc_u32 s3, s1, 0722; GCN-HSA-NEXT: s_add_u32 s4, s0, 48723; GCN-HSA-NEXT: v_mov_b32_e32 v17, s1724; GCN-HSA-NEXT: s_addc_u32 s5, s1, 0725; GCN-HSA-NEXT: v_mov_b32_e32 v16, s0726; GCN-HSA-NEXT: v_mov_b32_e32 v19, s5727; GCN-HSA-NEXT: s_add_u32 s0, s0, 16728; GCN-HSA-NEXT: v_mov_b32_e32 v18, s4729; GCN-HSA-NEXT: s_addc_u32 s1, s1, 0730; GCN-HSA-NEXT: s_waitcnt vmcnt(3)731; GCN-HSA-NEXT: flat_store_dwordx4 v[18:19], v[0:3]732; GCN-HSA-NEXT: s_nop 0733; GCN-HSA-NEXT: v_mov_b32_e32 v0, s2734; GCN-HSA-NEXT: v_mov_b32_e32 v3, s1735; GCN-HSA-NEXT: v_mov_b32_e32 v1, s3736; GCN-HSA-NEXT: v_mov_b32_e32 v2, s0737; GCN-HSA-NEXT: s_waitcnt vmcnt(2)738; GCN-HSA-NEXT: flat_store_dwordx4 v[16:17], v[8:11]739; GCN-HSA-NEXT: flat_store_dwordx4 v[0:1], v[4:7]740; GCN-HSA-NEXT: s_waitcnt vmcnt(3)741; GCN-HSA-NEXT: flat_store_dwordx4 v[2:3], v[12:15]742; GCN-HSA-NEXT: s_endpgm743;744; GCNX3-NOHSA-LABEL: global_load_v16f32:745; GCNX3-NOHSA: ; %bb.0: ; %entry746; GCNX3-NOHSA-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x24747; GCNX3-NOHSA-NEXT: s_mov_b32 s7, 0xf000748; GCNX3-NOHSA-NEXT: s_mov_b32 s6, -1749; GCNX3-NOHSA-NEXT: s_mov_b32 s10, s6750; GCNX3-NOHSA-NEXT: s_mov_b32 s11, s7751; GCNX3-NOHSA-NEXT: s_waitcnt lgkmcnt(0)752; GCNX3-NOHSA-NEXT: s_mov_b32 s8, s2753; GCNX3-NOHSA-NEXT: s_mov_b32 s9, s3754; GCNX3-NOHSA-NEXT: buffer_load_dwordx4 v[0:3], off, s[8:11], 0 offset:32755; GCNX3-NOHSA-NEXT: buffer_load_dwordx4 v[4:7], off, s[8:11], 0 offset:48756; GCNX3-NOHSA-NEXT: buffer_load_dwordx4 v[8:11], off, s[8:11], 0757; GCNX3-NOHSA-NEXT: buffer_load_dwordx4 v[12:15], off, s[8:11], 0 offset:16758; GCNX3-NOHSA-NEXT: s_mov_b32 s4, s0759; GCNX3-NOHSA-NEXT: s_mov_b32 s5, s1760; GCNX3-NOHSA-NEXT: s_waitcnt vmcnt(3)761; GCNX3-NOHSA-NEXT: buffer_store_dwordx4 v[0:3], off, s[4:7], 0 offset:32762; GCNX3-NOHSA-NEXT: s_waitcnt vmcnt(3)763; GCNX3-NOHSA-NEXT: buffer_store_dwordx4 v[4:7], off, s[4:7], 0 offset:48764; GCNX3-NOHSA-NEXT: s_waitcnt vmcnt(3)765; GCNX3-NOHSA-NEXT: buffer_store_dwordx4 v[8:11], off, s[4:7], 0766; GCNX3-NOHSA-NEXT: s_waitcnt vmcnt(3)767; GCNX3-NOHSA-NEXT: buffer_store_dwordx4 v[12:15], off, s[4:7], 0 offset:16768; GCNX3-NOHSA-NEXT: s_endpgm769entry:770 %tmp0 = load <16 x float>, ptr addrspace(1) %in771 store <16 x float> %tmp0, ptr addrspace(1) %out772 ret void773}774 775attributes #0 = { nounwind }776;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:777; FUNC: {{.*}}778; GCN-NOHSA: {{.*}}779; GCNX3-HSA: {{.*}}780; R600: {{.*}}781