1147 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 52;RUN: llc < %s -mtriple=amdgcn -mcpu=verde | FileCheck -check-prefix=VERDE %s3;RUN: llc < %s -mtriple=amdgcn -mcpu=tonga | FileCheck %s4 5define amdgpu_ps void @buffer_store(ptr addrspace(8) inreg, <4 x float>, <4 x float>, <4 x float>) {6; VERDE-LABEL: buffer_store:7; VERDE: ; %bb.0: ; %main_body8; VERDE-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 09; VERDE-NEXT: buffer_store_dwordx4 v[4:7], off, s[0:3], 0 glc10; VERDE-NEXT: buffer_store_dwordx4 v[8:11], off, s[0:3], 0 slc11; VERDE-NEXT: s_endpgm12;13; CHECK-LABEL: buffer_store:14; CHECK: ; %bb.0: ; %main_body15; CHECK-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 016; CHECK-NEXT: buffer_store_dwordx4 v[4:7], off, s[0:3], 0 glc17; CHECK-NEXT: buffer_store_dwordx4 v[8:11], off, s[0:3], 0 slc18; CHECK-NEXT: s_endpgm19main_body:20 call void @llvm.amdgcn.raw.ptr.buffer.store.v4f32(<4 x float> %1, ptr addrspace(8) %0, i32 0, i32 0, i32 0)21 call void @llvm.amdgcn.raw.ptr.buffer.store.v4f32(<4 x float> %2, ptr addrspace(8) %0, i32 0, i32 0, i32 1)22 call void @llvm.amdgcn.raw.ptr.buffer.store.v4f32(<4 x float> %3, ptr addrspace(8) %0, i32 0, i32 0, i32 2)23 ret void24}25 26define amdgpu_ps void @buffer_store_immoffs(ptr addrspace(8) inreg, <4 x float>) {27; VERDE-LABEL: buffer_store_immoffs:28; VERDE: ; %bb.0: ; %main_body29; VERDE-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:4230; VERDE-NEXT: s_endpgm31;32; CHECK-LABEL: buffer_store_immoffs:33; CHECK: ; %bb.0: ; %main_body34; CHECK-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:4235; CHECK-NEXT: s_endpgm36main_body:37 call void @llvm.amdgcn.raw.ptr.buffer.store.v4f32(<4 x float> %1, ptr addrspace(8) %0, i32 42, i32 0, i32 0)38 ret void39}40 41define amdgpu_ps void @buffer_store_ofs(ptr addrspace(8) inreg, <4 x float>, i32) {42; VERDE-LABEL: buffer_store_ofs:43; VERDE: ; %bb.0: ; %main_body44; VERDE-NEXT: buffer_store_dwordx4 v[0:3], v4, s[0:3], 0 offen45; VERDE-NEXT: s_endpgm46;47; CHECK-LABEL: buffer_store_ofs:48; CHECK: ; %bb.0: ; %main_body49; CHECK-NEXT: buffer_store_dwordx4 v[0:3], v4, s[0:3], 0 offen50; CHECK-NEXT: s_endpgm51main_body:52 call void @llvm.amdgcn.raw.ptr.buffer.store.v4f32(<4 x float> %1, ptr addrspace(8) %0, i32 %2, i32 0, i32 0)53 ret void54}55 56; Ideally, the register allocator would avoid the wait here57define amdgpu_ps void @buffer_store_wait(ptr addrspace(8) inreg, <4 x float>, i32, i32, i32) {58; VERDE-LABEL: buffer_store_wait:59; VERDE: ; %bb.0: ; %main_body60; VERDE-NEXT: buffer_store_dwordx4 v[0:3], v4, s[0:3], 0 offen61; VERDE-NEXT: s_waitcnt expcnt(0)62; VERDE-NEXT: buffer_load_dwordx4 v[0:3], v5, s[0:3], 0 offen63; VERDE-NEXT: s_waitcnt vmcnt(0)64; VERDE-NEXT: buffer_store_dwordx4 v[0:3], v6, s[0:3], 0 offen65; VERDE-NEXT: s_endpgm66;67; CHECK-LABEL: buffer_store_wait:68; CHECK: ; %bb.0: ; %main_body69; CHECK-NEXT: buffer_store_dwordx4 v[0:3], v4, s[0:3], 0 offen70; CHECK-NEXT: buffer_load_dwordx4 v[0:3], v5, s[0:3], 0 offen71; CHECK-NEXT: s_waitcnt vmcnt(0)72; CHECK-NEXT: buffer_store_dwordx4 v[0:3], v6, s[0:3], 0 offen73; CHECK-NEXT: s_endpgm74main_body:75 call void @llvm.amdgcn.raw.ptr.buffer.store.v4f32(<4 x float> %1, ptr addrspace(8) %0, i32 %2, i32 0, i32 0)76 %data = call <4 x float> @llvm.amdgcn.raw.ptr.buffer.load.v4f32(ptr addrspace(8) %0, i32 %3, i32 0, i32 0)77 call void @llvm.amdgcn.raw.ptr.buffer.store.v4f32(<4 x float> %data, ptr addrspace(8) %0, i32 %4, i32 0, i32 0)78 ret void79}80 81define amdgpu_ps void @buffer_store_x1(ptr addrspace(8) inreg %rsrc, float %data, i32 %offset) {82; VERDE-LABEL: buffer_store_x1:83; VERDE: ; %bb.0: ; %main_body84; VERDE-NEXT: buffer_store_dword v0, v1, s[0:3], 0 offen85; VERDE-NEXT: s_endpgm86;87; CHECK-LABEL: buffer_store_x1:88; CHECK: ; %bb.0: ; %main_body89; CHECK-NEXT: buffer_store_dword v0, v1, s[0:3], 0 offen90; CHECK-NEXT: s_endpgm91main_body:92 call void @llvm.amdgcn.raw.ptr.buffer.store.f32(float %data, ptr addrspace(8) %rsrc, i32 %offset, i32 0, i32 0)93 ret void94}95 96define amdgpu_ps void @buffer_store_x2(ptr addrspace(8) inreg %rsrc, <2 x float> %data, i32 %offset) #0 {97; VERDE-LABEL: buffer_store_x2:98; VERDE: ; %bb.0: ; %main_body99; VERDE-NEXT: buffer_store_dwordx2 v[0:1], v2, s[0:3], 0 offen100; VERDE-NEXT: s_endpgm101;102; CHECK-LABEL: buffer_store_x2:103; CHECK: ; %bb.0: ; %main_body104; CHECK-NEXT: buffer_store_dwordx2 v[0:1], v2, s[0:3], 0 offen105; CHECK-NEXT: s_endpgm106main_body:107 call void @llvm.amdgcn.raw.ptr.buffer.store.v2f32(<2 x float> %data, ptr addrspace(8) %rsrc, i32 %offset, i32 0, i32 0)108 ret void109}110 111define amdgpu_ps void @buffer_store_x1_offen_merged_and(ptr addrspace(8) inreg %rsrc, i32 %a, float %v1, float %v2, float %v3, float %v4, float %v5, float %v6) {112; VERDE-LABEL: buffer_store_x1_offen_merged_and:113; VERDE: ; %bb.0:114; VERDE-NEXT: buffer_store_dwordx4 v[1:4], v0, s[0:3], 0 offen offset:4115; VERDE-NEXT: buffer_store_dwordx2 v[5:6], v0, s[0:3], 0 offen offset:28116; VERDE-NEXT: s_endpgm117;118; CHECK-LABEL: buffer_store_x1_offen_merged_and:119; CHECK: ; %bb.0:120; CHECK-NEXT: buffer_store_dwordx4 v[1:4], v0, s[0:3], 0 offen offset:4121; CHECK-NEXT: buffer_store_dwordx2 v[5:6], v0, s[0:3], 0 offen offset:28122; CHECK-NEXT: s_endpgm123 %a1 = add i32 %a, 4124 %a2 = add i32 %a, 8125 %a3 = add i32 %a, 12126 %a4 = add i32 %a, 16127 %a5 = add i32 %a, 28128 %a6 = add i32 %a, 32129 call void @llvm.amdgcn.raw.ptr.buffer.store.f32(float %v1, ptr addrspace(8) %rsrc, i32 %a1, i32 0, i32 0)130 call void @llvm.amdgcn.raw.ptr.buffer.store.f32(float %v2, ptr addrspace(8) %rsrc, i32 %a2, i32 0, i32 0)131 call void @llvm.amdgcn.raw.ptr.buffer.store.f32(float %v3, ptr addrspace(8) %rsrc, i32 %a3, i32 0, i32 0)132 call void @llvm.amdgcn.raw.ptr.buffer.store.f32(float %v4, ptr addrspace(8) %rsrc, i32 %a4, i32 0, i32 0)133 call void @llvm.amdgcn.raw.ptr.buffer.store.f32(float %v5, ptr addrspace(8) %rsrc, i32 %a5, i32 0, i32 0)134 call void @llvm.amdgcn.raw.ptr.buffer.store.f32(float %v6, ptr addrspace(8) %rsrc, i32 %a6, i32 0, i32 0)135 ret void136}137 138define amdgpu_ps void @buffer_store_x1_offen_merged_or(ptr addrspace(8) inreg %rsrc, i32 %inp, float %v1, float %v2, float %v3, float %v4, float %v5, float %v6) {139; VERDE-LABEL: buffer_store_x1_offen_merged_or:140; VERDE: ; %bb.0:141; VERDE-NEXT: v_lshlrev_b32_e32 v0, 6, v0142; VERDE-NEXT: buffer_store_dwordx4 v[1:4], v0, s[0:3], 0 offen offset:4143; VERDE-NEXT: buffer_store_dwordx2 v[5:6], v0, s[0:3], 0 offen offset:28144; VERDE-NEXT: s_endpgm145;146; CHECK-LABEL: buffer_store_x1_offen_merged_or:147; CHECK: ; %bb.0:148; CHECK-NEXT: v_lshlrev_b32_e32 v0, 6, v0149; CHECK-NEXT: buffer_store_dwordx4 v[1:4], v0, s[0:3], 0 offen offset:4150; CHECK-NEXT: buffer_store_dwordx2 v[5:6], v0, s[0:3], 0 offen offset:28151; CHECK-NEXT: s_endpgm152 %a = shl i32 %inp, 6153 %a1 = add i32 %a, 4154 %a2 = add i32 %a, 8155 %a3 = add i32 %a, 12156 %a4 = add i32 %a, 16157 %a5 = add i32 %a, 28158 %a6 = add i32 %a, 32159 call void @llvm.amdgcn.raw.ptr.buffer.store.f32(float %v1, ptr addrspace(8) %rsrc, i32 %a1, i32 0, i32 0)160 call void @llvm.amdgcn.raw.ptr.buffer.store.f32(float %v2, ptr addrspace(8) %rsrc, i32 %a2, i32 0, i32 0)161 call void @llvm.amdgcn.raw.ptr.buffer.store.f32(float %v3, ptr addrspace(8) %rsrc, i32 %a3, i32 0, i32 0)162 call void @llvm.amdgcn.raw.ptr.buffer.store.f32(float %v4, ptr addrspace(8) %rsrc, i32 %a4, i32 0, i32 0)163 call void @llvm.amdgcn.raw.ptr.buffer.store.f32(float %v5, ptr addrspace(8) %rsrc, i32 %a5, i32 0, i32 0)164 call void @llvm.amdgcn.raw.ptr.buffer.store.f32(float %v6, ptr addrspace(8) %rsrc, i32 %a6, i32 0, i32 0)165 ret void166}167 168 169define amdgpu_ps void @buffer_store_x1_offen_merged_glc_slc(ptr addrspace(8) inreg %rsrc, i32 %a, float %v1, float %v2, float %v3, float %v4, float %v5, float %v6) {170; VERDE-LABEL: buffer_store_x1_offen_merged_glc_slc:171; VERDE: ; %bb.0:172; VERDE-NEXT: buffer_store_dwordx2 v[1:2], v0, s[0:3], 0 offen offset:4173; VERDE-NEXT: buffer_store_dwordx2 v[3:4], v0, s[0:3], 0 offen offset:12 glc174; VERDE-NEXT: buffer_store_dwordx2 v[5:6], v0, s[0:3], 0 offen offset:28 glc slc175; VERDE-NEXT: s_endpgm176;177; CHECK-LABEL: buffer_store_x1_offen_merged_glc_slc:178; CHECK: ; %bb.0:179; CHECK-NEXT: buffer_store_dwordx2 v[1:2], v0, s[0:3], 0 offen offset:4180; CHECK-NEXT: buffer_store_dwordx2 v[3:4], v0, s[0:3], 0 offen offset:12 glc181; CHECK-NEXT: buffer_store_dwordx2 v[5:6], v0, s[0:3], 0 offen offset:28 glc slc182; CHECK-NEXT: s_endpgm183 %a1 = add i32 %a, 4184 %a2 = add i32 %a, 8185 %a3 = add i32 %a, 12186 %a4 = add i32 %a, 16187 %a5 = add i32 %a, 28188 %a6 = add i32 %a, 32189 call void @llvm.amdgcn.raw.ptr.buffer.store.f32(float %v1, ptr addrspace(8) %rsrc, i32 %a1, i32 0, i32 0)190 call void @llvm.amdgcn.raw.ptr.buffer.store.f32(float %v2, ptr addrspace(8) %rsrc, i32 %a2, i32 0, i32 0)191 call void @llvm.amdgcn.raw.ptr.buffer.store.f32(float %v3, ptr addrspace(8) %rsrc, i32 %a3, i32 0, i32 1)192 call void @llvm.amdgcn.raw.ptr.buffer.store.f32(float %v4, ptr addrspace(8) %rsrc, i32 %a4, i32 0, i32 1)193 call void @llvm.amdgcn.raw.ptr.buffer.store.f32(float %v5, ptr addrspace(8) %rsrc, i32 %a5, i32 0, i32 3)194 call void @llvm.amdgcn.raw.ptr.buffer.store.f32(float %v6, ptr addrspace(8) %rsrc, i32 %a6, i32 0, i32 3)195 ret void196}197 198define amdgpu_ps void @buffer_store_x2_offen_merged_and(ptr addrspace(8) inreg %rsrc, i32 %a, <2 x float> %v1, <2 x float> %v2) {199; VERDE-LABEL: buffer_store_x2_offen_merged_and:200; VERDE: ; %bb.0:201; VERDE-NEXT: buffer_store_dwordx4 v[1:4], v0, s[0:3], 0 offen offset:4202; VERDE-NEXT: s_endpgm203;204; CHECK-LABEL: buffer_store_x2_offen_merged_and:205; CHECK: ; %bb.0:206; CHECK-NEXT: buffer_store_dwordx4 v[1:4], v0, s[0:3], 0 offen offset:4207; CHECK-NEXT: s_endpgm208 %a1 = add i32 %a, 4209 %a2 = add i32 %a, 12210 call void @llvm.amdgcn.raw.ptr.buffer.store.v2f32(<2 x float> %v1, ptr addrspace(8) %rsrc, i32 %a1, i32 0, i32 0)211 call void @llvm.amdgcn.raw.ptr.buffer.store.v2f32(<2 x float> %v2, ptr addrspace(8) %rsrc, i32 %a2, i32 0, i32 0)212 ret void213}214 215define amdgpu_ps void @buffer_store_x2_offen_merged_or(ptr addrspace(8) inreg %rsrc, i32 %inp, <2 x float> %v1, <2 x float> %v2) {216; VERDE-LABEL: buffer_store_x2_offen_merged_or:217; VERDE: ; %bb.0:218; VERDE-NEXT: v_lshlrev_b32_e32 v0, 4, v0219; VERDE-NEXT: buffer_store_dwordx4 v[1:4], v0, s[0:3], 0 offen offset:4220; VERDE-NEXT: s_endpgm221;222; CHECK-LABEL: buffer_store_x2_offen_merged_or:223; CHECK: ; %bb.0:224; CHECK-NEXT: v_lshlrev_b32_e32 v0, 4, v0225; CHECK-NEXT: buffer_store_dwordx4 v[1:4], v0, s[0:3], 0 offen offset:4226; CHECK-NEXT: s_endpgm227 %a = shl i32 %inp, 4228 %a1 = add i32 %a, 4229 %a2 = add i32 %a, 12230 call void @llvm.amdgcn.raw.ptr.buffer.store.v2f32(<2 x float> %v1, ptr addrspace(8) %rsrc, i32 %a1, i32 0, i32 0)231 call void @llvm.amdgcn.raw.ptr.buffer.store.v2f32(<2 x float> %v2, ptr addrspace(8) %rsrc, i32 %a2, i32 0, i32 0)232 ret void233}234 235define amdgpu_ps void @buffer_store_x1_offset_merged(ptr addrspace(8) inreg %rsrc, float %v1, float %v2, float %v3, float %v4, float %v5, float %v6) {236; VERDE-LABEL: buffer_store_x1_offset_merged:237; VERDE: ; %bb.0:238; VERDE-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:4239; VERDE-NEXT: buffer_store_dwordx2 v[4:5], off, s[0:3], 0 offset:28240; VERDE-NEXT: s_endpgm241;242; CHECK-LABEL: buffer_store_x1_offset_merged:243; CHECK: ; %bb.0:244; CHECK-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:4245; CHECK-NEXT: buffer_store_dwordx2 v[4:5], off, s[0:3], 0 offset:28246; CHECK-NEXT: s_endpgm247 call void @llvm.amdgcn.raw.ptr.buffer.store.f32(float %v1, ptr addrspace(8) %rsrc, i32 4, i32 0, i32 0)248 call void @llvm.amdgcn.raw.ptr.buffer.store.f32(float %v2, ptr addrspace(8) %rsrc, i32 8, i32 0, i32 0)249 call void @llvm.amdgcn.raw.ptr.buffer.store.f32(float %v3, ptr addrspace(8) %rsrc, i32 12, i32 0, i32 0)250 call void @llvm.amdgcn.raw.ptr.buffer.store.f32(float %v4, ptr addrspace(8) %rsrc, i32 16, i32 0, i32 0)251 call void @llvm.amdgcn.raw.ptr.buffer.store.f32(float %v5, ptr addrspace(8) %rsrc, i32 28, i32 0, i32 0)252 call void @llvm.amdgcn.raw.ptr.buffer.store.f32(float %v6, ptr addrspace(8) %rsrc, i32 32, i32 0, i32 0)253 ret void254}255 256define amdgpu_ps void @buffer_store_x2_offset_merged(ptr addrspace(8) inreg %rsrc, <2 x float> %v1,<2 x float> %v2) {257; VERDE-LABEL: buffer_store_x2_offset_merged:258; VERDE: ; %bb.0:259; VERDE-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:4260; VERDE-NEXT: s_endpgm261;262; CHECK-LABEL: buffer_store_x2_offset_merged:263; CHECK: ; %bb.0:264; CHECK-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:4265; CHECK-NEXT: s_endpgm266 call void @llvm.amdgcn.raw.ptr.buffer.store.v2f32(<2 x float> %v1, ptr addrspace(8) %rsrc, i32 4, i32 0, i32 0)267 call void @llvm.amdgcn.raw.ptr.buffer.store.v2f32(<2 x float> %v2, ptr addrspace(8) %rsrc, i32 12, i32 0, i32 0)268 ret void269}270 271define amdgpu_ps void @buffer_store_int(ptr addrspace(8) inreg, <4 x i32>, <2 x i32>, i32) {272; VERDE-LABEL: buffer_store_int:273; VERDE: ; %bb.0: ; %main_body274; VERDE-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0275; VERDE-NEXT: buffer_store_dwordx2 v[4:5], off, s[0:3], 0 glc276; VERDE-NEXT: buffer_store_dword v6, off, s[0:3], 0 slc277; VERDE-NEXT: s_endpgm278;279; CHECK-LABEL: buffer_store_int:280; CHECK: ; %bb.0: ; %main_body281; CHECK-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0282; CHECK-NEXT: buffer_store_dwordx2 v[4:5], off, s[0:3], 0 glc283; CHECK-NEXT: buffer_store_dword v6, off, s[0:3], 0 slc284; CHECK-NEXT: s_endpgm285main_body:286 call void @llvm.amdgcn.raw.ptr.buffer.store.v4i32(<4 x i32> %1, ptr addrspace(8) %0, i32 0, i32 0, i32 0)287 call void @llvm.amdgcn.raw.ptr.buffer.store.v2i32(<2 x i32> %2, ptr addrspace(8) %0, i32 0, i32 0, i32 1)288 call void @llvm.amdgcn.raw.ptr.buffer.store.i32(i32 %3, ptr addrspace(8) %0, i32 0, i32 0, i32 2)289 ret void290}291 292define amdgpu_ps void @raw_ptr_buffer_store_byte(ptr addrspace(8) inreg %rsrc, float %v1) {293; VERDE-LABEL: raw_ptr_buffer_store_byte:294; VERDE: ; %bb.0: ; %main_body295; VERDE-NEXT: v_cvt_u32_f32_e32 v0, v0296; VERDE-NEXT: buffer_store_byte v0, off, s[0:3], 0297; VERDE-NEXT: s_endpgm298;299; CHECK-LABEL: raw_ptr_buffer_store_byte:300; CHECK: ; %bb.0: ; %main_body301; CHECK-NEXT: v_cvt_u32_f32_e32 v0, v0302; CHECK-NEXT: buffer_store_byte v0, off, s[0:3], 0303; CHECK-NEXT: s_endpgm304main_body:305 %v2 = fptoui float %v1 to i32306 %v3 = trunc i32 %v2 to i8307 call void @llvm.amdgcn.raw.ptr.buffer.store.i8(i8 %v3, ptr addrspace(8) %rsrc, i32 0, i32 0, i32 0)308 ret void309}310 311define amdgpu_ps void @raw_ptr_buffer_store_short(ptr addrspace(8) inreg %rsrc, float %v1) {312; VERDE-LABEL: raw_ptr_buffer_store_short:313; VERDE: ; %bb.0: ; %main_body314; VERDE-NEXT: v_cvt_u32_f32_e32 v0, v0315; VERDE-NEXT: buffer_store_short v0, off, s[0:3], 0316; VERDE-NEXT: s_endpgm317;318; CHECK-LABEL: raw_ptr_buffer_store_short:319; CHECK: ; %bb.0: ; %main_body320; CHECK-NEXT: v_cvt_u32_f32_e32 v0, v0321; CHECK-NEXT: buffer_store_short v0, off, s[0:3], 0322; CHECK-NEXT: s_endpgm323main_body:324 %v2 = fptoui float %v1 to i32325 %v3 = trunc i32 %v2 to i16326 call void @llvm.amdgcn.raw.ptr.buffer.store.i16(i16 %v3, ptr addrspace(8) %rsrc, i32 0, i32 0, i32 0)327 ret void328}329 330define amdgpu_ps void @raw_ptr_buffer_store_f16(ptr addrspace(8) inreg %rsrc, i32 %v1) {331; VERDE-LABEL: raw_ptr_buffer_store_f16:332; VERDE: ; %bb.0: ; %main_body333; VERDE-NEXT: buffer_store_short v0, off, s[0:3], 0334; VERDE-NEXT: s_endpgm335;336; CHECK-LABEL: raw_ptr_buffer_store_f16:337; CHECK: ; %bb.0: ; %main_body338; CHECK-NEXT: buffer_store_short v0, off, s[0:3], 0339; CHECK-NEXT: s_endpgm340main_body:341 %trunc = trunc i32 %v1 to i16342 %cast = bitcast i16 %trunc to half343 call void @llvm.amdgcn.raw.ptr.buffer.store.f16(half %cast, ptr addrspace(8) %rsrc, i32 0, i32 0, i32 0)344 ret void345}346 347define amdgpu_ps void @buffer_store_v2f16(ptr addrspace(8) inreg %rsrc, <2 x half> %data, i32 %offset) {348; VERDE-LABEL: buffer_store_v2f16:349; VERDE: ; %bb.0: ; %main_body350; VERDE-NEXT: v_cvt_f16_f32_e32 v1, v1351; VERDE-NEXT: v_cvt_f16_f32_e32 v0, v0352; VERDE-NEXT: v_lshlrev_b32_e32 v1, 16, v1353; VERDE-NEXT: v_or_b32_e32 v0, v0, v1354; VERDE-NEXT: buffer_store_dword v0, v2, s[0:3], 0 offen355; VERDE-NEXT: s_endpgm356;357; CHECK-LABEL: buffer_store_v2f16:358; CHECK: ; %bb.0: ; %main_body359; CHECK-NEXT: buffer_store_dword v0, v1, s[0:3], 0 offen360; CHECK-NEXT: s_endpgm361main_body:362 call void @llvm.amdgcn.raw.ptr.buffer.store.v2f16(<2 x half> %data, ptr addrspace(8) %rsrc, i32 %offset, i32 0, i32 0)363 ret void364}365 366define amdgpu_ps void @buffer_store_v4f16(ptr addrspace(8) inreg %rsrc, <4 x half> %data, i32 %offset) #0 {367; VERDE-LABEL: buffer_store_v4f16:368; VERDE: ; %bb.0: ; %main_body369; VERDE-NEXT: v_cvt_f16_f32_e32 v3, v3370; VERDE-NEXT: v_cvt_f16_f32_e32 v2, v2371; VERDE-NEXT: v_cvt_f16_f32_e32 v5, v1372; VERDE-NEXT: v_cvt_f16_f32_e32 v0, v0373; VERDE-NEXT: v_lshlrev_b32_e32 v1, 16, v3374; VERDE-NEXT: v_or_b32_e32 v1, v2, v1375; VERDE-NEXT: v_lshlrev_b32_e32 v2, 16, v5376; VERDE-NEXT: v_or_b32_e32 v0, v0, v2377; VERDE-NEXT: buffer_store_dwordx2 v[0:1], v4, s[0:3], 0 offen378; VERDE-NEXT: s_endpgm379;380; CHECK-LABEL: buffer_store_v4f16:381; CHECK: ; %bb.0: ; %main_body382; CHECK-NEXT: buffer_store_dwordx2 v[0:1], v2, s[0:3], 0 offen383; CHECK-NEXT: s_endpgm384main_body:385 call void @llvm.amdgcn.raw.ptr.buffer.store.v4f16(<4 x half> %data, ptr addrspace(8) %rsrc, i32 %offset, i32 0, i32 0)386 ret void387}388 389define amdgpu_ps void @buffer_store_v8f16(ptr addrspace(8) inreg %rsrc, <8 x half> %data, i32 %offset) #0 {390; VERDE-LABEL: buffer_store_v8f16:391; VERDE: ; %bb.0: ; %main_body392; VERDE-NEXT: v_cvt_f16_f32_e32 v7, v7393; VERDE-NEXT: v_cvt_f16_f32_e32 v6, v6394; VERDE-NEXT: v_cvt_f16_f32_e32 v9, v5395; VERDE-NEXT: v_cvt_f16_f32_e32 v3, v3396; VERDE-NEXT: v_cvt_f16_f32_e32 v1, v1397; VERDE-NEXT: v_cvt_f16_f32_e32 v4, v4398; VERDE-NEXT: v_cvt_f16_f32_e32 v2, v2399; VERDE-NEXT: v_cvt_f16_f32_e32 v0, v0400; VERDE-NEXT: v_lshlrev_b32_e32 v5, 16, v7401; VERDE-NEXT: v_or_b32_e32 v5, v6, v5402; VERDE-NEXT: v_lshlrev_b32_e32 v6, 16, v9403; VERDE-NEXT: v_lshlrev_b32_e32 v3, 16, v3404; VERDE-NEXT: v_lshlrev_b32_e32 v1, 16, v1405; VERDE-NEXT: v_or_b32_e32 v4, v4, v6406; VERDE-NEXT: v_or_b32_e32 v3, v2, v3407; VERDE-NEXT: v_or_b32_e32 v2, v0, v1408; VERDE-NEXT: buffer_store_dwordx4 v[2:5], v8, s[0:3], 0 offen409; VERDE-NEXT: s_endpgm410;411; CHECK-LABEL: buffer_store_v8f16:412; CHECK: ; %bb.0: ; %main_body413; CHECK-NEXT: buffer_store_dwordx4 v[0:3], v4, s[0:3], 0 offen414; CHECK-NEXT: s_endpgm415main_body:416 call void @llvm.amdgcn.raw.ptr.buffer.store.v8f16(<8 x half> %data, ptr addrspace(8) %rsrc, i32 %offset, i32 0, i32 0)417 ret void418}419 420define amdgpu_ps void @buffer_store_v2bf16(ptr addrspace(8) inreg %rsrc, <2 x bfloat> %data, i32 %offset) {421; VERDE-LABEL: buffer_store_v2bf16:422; VERDE: ; %bb.0:423; VERDE-NEXT: v_mul_f32_e32 v1, 1.0, v1424; VERDE-NEXT: v_lshrrev_b32_e32 v1, 16, v1425; VERDE-NEXT: v_mul_f32_e32 v0, 1.0, v0426; VERDE-NEXT: v_alignbit_b32 v0, v1, v0, 16427; VERDE-NEXT: buffer_store_dword v0, v2, s[0:3], 0 offen428; VERDE-NEXT: s_endpgm429;430; CHECK-LABEL: buffer_store_v2bf16:431; CHECK: ; %bb.0:432; CHECK-NEXT: buffer_store_dword v0, v1, s[0:3], 0 offen433; CHECK-NEXT: s_endpgm434 call void @llvm.amdgcn.raw.ptr.buffer.store.v2bf16(<2 x bfloat> %data, ptr addrspace(8) %rsrc, i32 %offset, i32 0, i32 0)435 ret void436}437 438define amdgpu_ps void @buffer_store_v4bf16(ptr addrspace(8) inreg %rsrc, <4 x bfloat> %data, i32 %offset) #0 {439; VERDE-LABEL: buffer_store_v4bf16:440; VERDE: ; %bb.0:441; VERDE-NEXT: v_mul_f32_e32 v3, 1.0, v3442; VERDE-NEXT: v_mul_f32_e32 v1, 1.0, v1443; VERDE-NEXT: v_lshrrev_b32_e32 v3, 16, v3444; VERDE-NEXT: v_mul_f32_e32 v2, 1.0, v2445; VERDE-NEXT: v_lshrrev_b32_e32 v1, 16, v1446; VERDE-NEXT: v_mul_f32_e32 v0, 1.0, v0447; VERDE-NEXT: v_alignbit_b32 v2, v3, v2, 16448; VERDE-NEXT: v_alignbit_b32 v1, v1, v0, 16449; VERDE-NEXT: buffer_store_dwordx2 v[1:2], v4, s[0:3], 0 offen450; VERDE-NEXT: s_endpgm451;452; CHECK-LABEL: buffer_store_v4bf16:453; CHECK: ; %bb.0:454; CHECK-NEXT: buffer_store_dwordx2 v[0:1], v2, s[0:3], 0 offen455; CHECK-NEXT: s_endpgm456 call void @llvm.amdgcn.raw.ptr.buffer.store.v4bf16(<4 x bfloat> %data, ptr addrspace(8) %rsrc, i32 %offset, i32 0, i32 0)457 ret void458}459 460define amdgpu_ps void @raw_ptr_buffer_store_i16(ptr addrspace(8) inreg %rsrc, i32 %v1) {461; VERDE-LABEL: raw_ptr_buffer_store_i16:462; VERDE: ; %bb.0: ; %main_body463; VERDE-NEXT: buffer_store_short v0, off, s[0:3], 0464; VERDE-NEXT: s_endpgm465;466; CHECK-LABEL: raw_ptr_buffer_store_i16:467; CHECK: ; %bb.0: ; %main_body468; CHECK-NEXT: buffer_store_short v0, off, s[0:3], 0469; CHECK-NEXT: s_endpgm470main_body:471 %trunc = trunc i32 %v1 to i16472 call void @llvm.amdgcn.raw.ptr.buffer.store.i16(i16 %trunc, ptr addrspace(8) %rsrc, i32 0, i32 0, i32 0)473 ret void474}475 476define amdgpu_ps void @buffer_store_v2i16(ptr addrspace(8) inreg %rsrc, <2 x i16> %data, i32 %offset) {477; VERDE-LABEL: buffer_store_v2i16:478; VERDE: ; %bb.0: ; %main_body479; VERDE-NEXT: v_lshlrev_b32_e32 v1, 16, v1480; VERDE-NEXT: v_and_b32_e32 v0, 0xffff, v0481; VERDE-NEXT: v_or_b32_e32 v0, v0, v1482; VERDE-NEXT: buffer_store_dword v0, v2, s[0:3], 0 offen483; VERDE-NEXT: s_endpgm484;485; CHECK-LABEL: buffer_store_v2i16:486; CHECK: ; %bb.0: ; %main_body487; CHECK-NEXT: buffer_store_dword v0, v1, s[0:3], 0 offen488; CHECK-NEXT: s_endpgm489main_body:490 call void @llvm.amdgcn.raw.ptr.buffer.store.v2i16(<2 x i16> %data, ptr addrspace(8) %rsrc, i32 %offset, i32 0, i32 0)491 ret void492}493 494define amdgpu_ps void @buffer_store_v4i16(ptr addrspace(8) inreg %rsrc, <4 x i16> %data, i32 %offset) #0 {495; VERDE-LABEL: buffer_store_v4i16:496; VERDE: ; %bb.0: ; %main_body497; VERDE-NEXT: v_lshlrev_b32_e32 v3, 16, v3498; VERDE-NEXT: v_and_b32_e32 v2, 0xffff, v2499; VERDE-NEXT: v_lshlrev_b32_e32 v1, 16, v1500; VERDE-NEXT: v_and_b32_e32 v0, 0xffff, v0501; VERDE-NEXT: v_or_b32_e32 v2, v2, v3502; VERDE-NEXT: v_or_b32_e32 v1, v0, v1503; VERDE-NEXT: buffer_store_dwordx2 v[1:2], v4, s[0:3], 0 offen504; VERDE-NEXT: s_endpgm505;506; CHECK-LABEL: buffer_store_v4i16:507; CHECK: ; %bb.0: ; %main_body508; CHECK-NEXT: buffer_store_dwordx2 v[0:1], v2, s[0:3], 0 offen509; CHECK-NEXT: s_endpgm510main_body:511 call void @llvm.amdgcn.raw.ptr.buffer.store.v4i16(<4 x i16> %data, ptr addrspace(8) %rsrc, i32 %offset, i32 0, i32 0)512 ret void513}514 515; FIXME:516; define amdgpu_ps void @buffer_store_v6i16(ptr addrspace(8) inreg %rsrc, <6 x i16> %data, i32 %offset) #0 {517; main_body:518; call void @llvm.amdgcn.raw.ptr.buffer.store.v6i16(<6 x i16> %data, ptr addrspace(8) %rsrc, i32 %offset, i32 0, i32 0)519; ret void520; }521define amdgpu_ps void @buffer_store_v8i16(ptr addrspace(8) inreg %rsrc, <8 x i16> %data, i32 %offset) #0 {522; VERDE-LABEL: buffer_store_v8i16:523; VERDE: ; %bb.0: ; %main_body524; VERDE-NEXT: v_lshlrev_b32_e32 v7, 16, v7525; VERDE-NEXT: v_and_b32_e32 v6, 0xffff, v6526; VERDE-NEXT: v_lshlrev_b32_e32 v5, 16, v5527; VERDE-NEXT: v_and_b32_e32 v4, 0xffff, v4528; VERDE-NEXT: v_lshlrev_b32_e32 v3, 16, v3529; VERDE-NEXT: v_and_b32_e32 v2, 0xffff, v2530; VERDE-NEXT: v_lshlrev_b32_e32 v1, 16, v1531; VERDE-NEXT: v_and_b32_e32 v0, 0xffff, v0532; VERDE-NEXT: v_or_b32_e32 v6, v6, v7533; VERDE-NEXT: v_or_b32_e32 v5, v4, v5534; VERDE-NEXT: v_or_b32_e32 v4, v2, v3535; VERDE-NEXT: v_or_b32_e32 v3, v0, v1536; VERDE-NEXT: buffer_store_dwordx4 v[3:6], v8, s[0:3], 0 offen537; VERDE-NEXT: s_endpgm538;539; CHECK-LABEL: buffer_store_v8i16:540; CHECK: ; %bb.0: ; %main_body541; CHECK-NEXT: buffer_store_dwordx4 v[0:3], v4, s[0:3], 0 offen542; CHECK-NEXT: s_endpgm543main_body:544 call void @llvm.amdgcn.raw.ptr.buffer.store.v8i16(<8 x i16> %data, ptr addrspace(8) %rsrc, i32 %offset, i32 0, i32 0)545 ret void546}547 548define amdgpu_ps void @raw_ptr_buffer_store_x1_offset_merged(ptr addrspace(8) inreg %rsrc, float %v1, float %v2, float %v3, float %v4, float %v5, float %v6) {549; VERDE-LABEL: raw_ptr_buffer_store_x1_offset_merged:550; VERDE: ; %bb.0:551; VERDE-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:4552; VERDE-NEXT: buffer_store_dwordx2 v[4:5], off, s[0:3], 0 offset:28553; VERDE-NEXT: s_endpgm554;555; CHECK-LABEL: raw_ptr_buffer_store_x1_offset_merged:556; CHECK: ; %bb.0:557; CHECK-NEXT: buffer_store_dwordx4 v[0:3], off, s[0:3], 0 offset:4558; CHECK-NEXT: buffer_store_dwordx2 v[4:5], off, s[0:3], 0 offset:28559; CHECK-NEXT: s_endpgm560 call void @llvm.amdgcn.raw.ptr.buffer.store.f32(float %v1, ptr addrspace(8) %rsrc, i32 4, i32 0, i32 0)561 call void @llvm.amdgcn.raw.ptr.buffer.store.f32(float %v2, ptr addrspace(8) %rsrc, i32 8, i32 0, i32 0)562 call void @llvm.amdgcn.raw.ptr.buffer.store.f32(float %v3, ptr addrspace(8) %rsrc, i32 12, i32 0, i32 0)563 call void @llvm.amdgcn.raw.ptr.buffer.store.f32(float %v4, ptr addrspace(8) %rsrc, i32 16, i32 0, i32 0)564 call void @llvm.amdgcn.raw.ptr.buffer.store.f32(float %v5, ptr addrspace(8) %rsrc, i32 28, i32 0, i32 0)565 call void @llvm.amdgcn.raw.ptr.buffer.store.f32(float %v6, ptr addrspace(8) %rsrc, i32 32, i32 0, i32 0)566 ret void567}568 569define amdgpu_ps void @raw_ptr_buffer_store_x1_offset_swizzled_not_merged(ptr addrspace(8) inreg %rsrc, float %v1, float %v2, float %v3, float %v4, float %v5, float %v6) {570; VERDE-LABEL: raw_ptr_buffer_store_x1_offset_swizzled_not_merged:571; VERDE: ; %bb.0:572; VERDE-NEXT: buffer_store_dword v0, off, s[0:3], 0 offset:4573; VERDE-NEXT: buffer_store_dword v1, off, s[0:3], 0 offset:8574; VERDE-NEXT: buffer_store_dword v2, off, s[0:3], 0 offset:12575; VERDE-NEXT: buffer_store_dword v3, off, s[0:3], 0 offset:16576; VERDE-NEXT: buffer_store_dword v4, off, s[0:3], 0 offset:28577; VERDE-NEXT: buffer_store_dword v5, off, s[0:3], 0 offset:32578; VERDE-NEXT: s_endpgm579;580; CHECK-LABEL: raw_ptr_buffer_store_x1_offset_swizzled_not_merged:581; CHECK: ; %bb.0:582; CHECK-NEXT: buffer_store_dword v0, off, s[0:3], 0 offset:4583; CHECK-NEXT: buffer_store_dword v1, off, s[0:3], 0 offset:8584; CHECK-NEXT: buffer_store_dword v2, off, s[0:3], 0 offset:12585; CHECK-NEXT: buffer_store_dword v3, off, s[0:3], 0 offset:16586; CHECK-NEXT: buffer_store_dword v4, off, s[0:3], 0 offset:28587; CHECK-NEXT: buffer_store_dword v5, off, s[0:3], 0 offset:32588; CHECK-NEXT: s_endpgm589 call void @llvm.amdgcn.raw.ptr.buffer.store.f32(float %v1, ptr addrspace(8) %rsrc, i32 4, i32 0, i32 8)590 call void @llvm.amdgcn.raw.ptr.buffer.store.f32(float %v2, ptr addrspace(8) %rsrc, i32 8, i32 0, i32 8)591 call void @llvm.amdgcn.raw.ptr.buffer.store.f32(float %v3, ptr addrspace(8) %rsrc, i32 12, i32 0, i32 8)592 call void @llvm.amdgcn.raw.ptr.buffer.store.f32(float %v4, ptr addrspace(8) %rsrc, i32 16, i32 0, i32 8)593 call void @llvm.amdgcn.raw.ptr.buffer.store.f32(float %v5, ptr addrspace(8) %rsrc, i32 28, i32 0, i32 8)594 call void @llvm.amdgcn.raw.ptr.buffer.store.f32(float %v6, ptr addrspace(8) %rsrc, i32 32, i32 0, i32 8)595 ret void596}597 598define void @buffer_store_f64__voffset_add(ptr addrspace(8) inreg %rsrc, double %data, i32 %voffset) #0 {599; VERDE-LABEL: buffer_store_f64__voffset_add:600; VERDE: ; %bb.0:601; VERDE-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)602; VERDE-NEXT: buffer_store_dwordx2 v[0:1], v2, s[16:19], 0 offen offset:60603; VERDE-NEXT: s_waitcnt vmcnt(0) expcnt(0)604; VERDE-NEXT: s_setpc_b64 s[30:31]605;606; CHECK-LABEL: buffer_store_f64__voffset_add:607; CHECK: ; %bb.0:608; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)609; CHECK-NEXT: buffer_store_dwordx2 v[0:1], v2, s[16:19], 0 offen offset:60610; CHECK-NEXT: s_waitcnt vmcnt(0)611; CHECK-NEXT: s_setpc_b64 s[30:31]612 %voffset.add = add i32 %voffset, 60613 call void @llvm.amdgcn.raw.ptr.buffer.store.f64(double %data, ptr addrspace(8) %rsrc, i32 %voffset.add, i32 0, i32 0)614 ret void615}616 617define void @buffer_store_v2f64__voffset_add(ptr addrspace(8) inreg %rsrc, <2 x double> %data, i32 %voffset) #0 {618; VERDE-LABEL: buffer_store_v2f64__voffset_add:619; VERDE: ; %bb.0:620; VERDE-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)621; VERDE-NEXT: buffer_store_dwordx4 v[0:3], v4, s[16:19], 0 offen offset:60622; VERDE-NEXT: s_waitcnt vmcnt(0) expcnt(0)623; VERDE-NEXT: s_setpc_b64 s[30:31]624;625; CHECK-LABEL: buffer_store_v2f64__voffset_add:626; CHECK: ; %bb.0:627; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)628; CHECK-NEXT: buffer_store_dwordx4 v[0:3], v4, s[16:19], 0 offen offset:60629; CHECK-NEXT: s_waitcnt vmcnt(0)630; CHECK-NEXT: s_setpc_b64 s[30:31]631 %voffset.add = add i32 %voffset, 60632 call void @llvm.amdgcn.raw.ptr.buffer.store.v2f64(<2 x double> %data, ptr addrspace(8) %rsrc, i32 %voffset.add, i32 0, i32 0)633 ret void634}635 636define void @buffer_store_i64__voffset_add(ptr addrspace(8) inreg %rsrc, i64 %data, i32 %voffset) #0 {637; VERDE-LABEL: buffer_store_i64__voffset_add:638; VERDE: ; %bb.0:639; VERDE-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)640; VERDE-NEXT: buffer_store_dwordx2 v[0:1], v2, s[16:19], 0 offen offset:60641; VERDE-NEXT: s_waitcnt vmcnt(0) expcnt(0)642; VERDE-NEXT: s_setpc_b64 s[30:31]643;644; CHECK-LABEL: buffer_store_i64__voffset_add:645; CHECK: ; %bb.0:646; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)647; CHECK-NEXT: buffer_store_dwordx2 v[0:1], v2, s[16:19], 0 offen offset:60648; CHECK-NEXT: s_waitcnt vmcnt(0)649; CHECK-NEXT: s_setpc_b64 s[30:31]650 %voffset.add = add i32 %voffset, 60651 call void @llvm.amdgcn.raw.ptr.buffer.store.i64(i64 %data, ptr addrspace(8) %rsrc, i32 %voffset.add, i32 0, i32 0)652 ret void653}654 655define void @buffer_store_v2i64__voffset_add(ptr addrspace(8) inreg %rsrc, <2 x i64> %data, i32 %voffset) #0 {656; VERDE-LABEL: buffer_store_v2i64__voffset_add:657; VERDE: ; %bb.0:658; VERDE-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)659; VERDE-NEXT: buffer_store_dwordx4 v[0:3], v4, s[16:19], 0 offen offset:60660; VERDE-NEXT: s_waitcnt vmcnt(0) expcnt(0)661; VERDE-NEXT: s_setpc_b64 s[30:31]662;663; CHECK-LABEL: buffer_store_v2i64__voffset_add:664; CHECK: ; %bb.0:665; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)666; CHECK-NEXT: buffer_store_dwordx4 v[0:3], v4, s[16:19], 0 offen offset:60667; CHECK-NEXT: s_waitcnt vmcnt(0)668; CHECK-NEXT: s_setpc_b64 s[30:31]669 %voffset.add = add i32 %voffset, 60670 call void @llvm.amdgcn.raw.ptr.buffer.store.v2i64(<2 x i64> %data, ptr addrspace(8) %rsrc, i32 %voffset.add, i32 0, i32 0)671 ret void672}673 674define void @buffer_store_p0__voffset_add(ptr addrspace(8) inreg %rsrc, ptr %data, i32 %voffset) #0 {675; VERDE-LABEL: buffer_store_p0__voffset_add:676; VERDE: ; %bb.0:677; VERDE-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)678; VERDE-NEXT: buffer_store_dwordx2 v[0:1], v2, s[16:19], 0 offen offset:60679; VERDE-NEXT: s_waitcnt vmcnt(0) expcnt(0)680; VERDE-NEXT: s_setpc_b64 s[30:31]681;682; CHECK-LABEL: buffer_store_p0__voffset_add:683; CHECK: ; %bb.0:684; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)685; CHECK-NEXT: buffer_store_dwordx2 v[0:1], v2, s[16:19], 0 offen offset:60686; CHECK-NEXT: s_waitcnt vmcnt(0)687; CHECK-NEXT: s_setpc_b64 s[30:31]688 %voffset.add = add i32 %voffset, 60689 call void @llvm.amdgcn.raw.ptr.buffer.store.p0(ptr %data, ptr addrspace(8) %rsrc, i32 %voffset.add, i32 0, i32 0)690 ret void691}692 693define void @buffer_store_v2p0__voffset_add(ptr addrspace(8) inreg %rsrc, <2 x ptr> %data, i32 %voffset) #0 {694; VERDE-LABEL: buffer_store_v2p0__voffset_add:695; VERDE: ; %bb.0:696; VERDE-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)697; VERDE-NEXT: buffer_store_dwordx4 v[0:3], v4, s[16:19], 0 offen offset:60698; VERDE-NEXT: s_waitcnt vmcnt(0) expcnt(0)699; VERDE-NEXT: s_setpc_b64 s[30:31]700;701; CHECK-LABEL: buffer_store_v2p0__voffset_add:702; CHECK: ; %bb.0:703; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)704; CHECK-NEXT: buffer_store_dwordx4 v[0:3], v4, s[16:19], 0 offen offset:60705; CHECK-NEXT: s_waitcnt vmcnt(0)706; CHECK-NEXT: s_setpc_b64 s[30:31]707 %voffset.add = add i32 %voffset, 60708 call void @llvm.amdgcn.raw.ptr.buffer.store.v2p0(<2 x ptr> %data, ptr addrspace(8) %rsrc, i32 %voffset.add, i32 0, i32 0)709 ret void710}711 712define void @buffer_store_p1__voffset_add(ptr addrspace(8) inreg %rsrc, ptr addrspace(1) %data, i32 %voffset) #0 {713; VERDE-LABEL: buffer_store_p1__voffset_add:714; VERDE: ; %bb.0:715; VERDE-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)716; VERDE-NEXT: buffer_store_dwordx2 v[0:1], v2, s[16:19], 0 offen offset:60717; VERDE-NEXT: s_waitcnt vmcnt(0) expcnt(0)718; VERDE-NEXT: s_setpc_b64 s[30:31]719;720; CHECK-LABEL: buffer_store_p1__voffset_add:721; CHECK: ; %bb.0:722; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)723; CHECK-NEXT: buffer_store_dwordx2 v[0:1], v2, s[16:19], 0 offen offset:60724; CHECK-NEXT: s_waitcnt vmcnt(0)725; CHECK-NEXT: s_setpc_b64 s[30:31]726 %voffset.add = add i32 %voffset, 60727 call void @llvm.amdgcn.raw.ptr.buffer.store.p1(ptr addrspace(1) %data, ptr addrspace(8) %rsrc, i32 %voffset.add, i32 0, i32 0)728 ret void729}730 731define void @buffer_store_v2p1__voffset_add(ptr addrspace(8) inreg %rsrc, <2 x ptr addrspace(1)> %data, i32 %voffset) #0 {732; VERDE-LABEL: buffer_store_v2p1__voffset_add:733; VERDE: ; %bb.0:734; VERDE-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)735; VERDE-NEXT: buffer_store_dwordx4 v[0:3], v4, s[16:19], 0 offen offset:60736; VERDE-NEXT: s_waitcnt vmcnt(0) expcnt(0)737; VERDE-NEXT: s_setpc_b64 s[30:31]738;739; CHECK-LABEL: buffer_store_v2p1__voffset_add:740; CHECK: ; %bb.0:741; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)742; CHECK-NEXT: buffer_store_dwordx4 v[0:3], v4, s[16:19], 0 offen offset:60743; CHECK-NEXT: s_waitcnt vmcnt(0)744; CHECK-NEXT: s_setpc_b64 s[30:31]745 %voffset.add = add i32 %voffset, 60746 call void @llvm.amdgcn.raw.ptr.buffer.store.v2p1(<2 x ptr addrspace(1)> %data, ptr addrspace(8) %rsrc, i32 %voffset.add, i32 0, i32 0)747 ret void748}749 750define void @buffer_store_p4__voffset_add(ptr addrspace(8) inreg %rsrc, ptr addrspace(4) %data, i32 %voffset) #0 {751; VERDE-LABEL: buffer_store_p4__voffset_add:752; VERDE: ; %bb.0:753; VERDE-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)754; VERDE-NEXT: buffer_store_dwordx2 v[0:1], v2, s[16:19], 0 offen offset:60755; VERDE-NEXT: s_waitcnt vmcnt(0) expcnt(0)756; VERDE-NEXT: s_setpc_b64 s[30:31]757;758; CHECK-LABEL: buffer_store_p4__voffset_add:759; CHECK: ; %bb.0:760; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)761; CHECK-NEXT: buffer_store_dwordx2 v[0:1], v2, s[16:19], 0 offen offset:60762; CHECK-NEXT: s_waitcnt vmcnt(0)763; CHECK-NEXT: s_setpc_b64 s[30:31]764 %voffset.add = add i32 %voffset, 60765 call void @llvm.amdgcn.raw.ptr.buffer.store.p4(ptr addrspace(4) %data, ptr addrspace(8) %rsrc, i32 %voffset.add, i32 0, i32 0)766 ret void767}768 769define void @buffer_store_v2p4__voffset_add(ptr addrspace(8) inreg %rsrc, <2 x ptr addrspace(4)> %data, i32 %voffset) #0 {770; VERDE-LABEL: buffer_store_v2p4__voffset_add:771; VERDE: ; %bb.0:772; VERDE-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)773; VERDE-NEXT: buffer_store_dwordx4 v[0:3], v4, s[16:19], 0 offen offset:60774; VERDE-NEXT: s_waitcnt vmcnt(0) expcnt(0)775; VERDE-NEXT: s_setpc_b64 s[30:31]776;777; CHECK-LABEL: buffer_store_v2p4__voffset_add:778; CHECK: ; %bb.0:779; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)780; CHECK-NEXT: buffer_store_dwordx4 v[0:3], v4, s[16:19], 0 offen offset:60781; CHECK-NEXT: s_waitcnt vmcnt(0)782; CHECK-NEXT: s_setpc_b64 s[30:31]783 %voffset.add = add i32 %voffset, 60784 call void @llvm.amdgcn.raw.ptr.buffer.store.v2p4(<2 x ptr addrspace(4)> %data, ptr addrspace(8) %rsrc, i32 %voffset.add, i32 0, i32 0)785 ret void786}787 788define void @buffer_store_p999__voffset_add(ptr addrspace(8) inreg %rsrc, ptr addrspace(999) %data, i32 %voffset) #0 {789; VERDE-LABEL: buffer_store_p999__voffset_add:790; VERDE: ; %bb.0:791; VERDE-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)792; VERDE-NEXT: buffer_store_dwordx2 v[0:1], v2, s[16:19], 0 offen offset:60793; VERDE-NEXT: s_waitcnt vmcnt(0) expcnt(0)794; VERDE-NEXT: s_setpc_b64 s[30:31]795;796; CHECK-LABEL: buffer_store_p999__voffset_add:797; CHECK: ; %bb.0:798; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)799; CHECK-NEXT: buffer_store_dwordx2 v[0:1], v2, s[16:19], 0 offen offset:60800; CHECK-NEXT: s_waitcnt vmcnt(0)801; CHECK-NEXT: s_setpc_b64 s[30:31]802 %voffset.add = add i32 %voffset, 60803 call void @llvm.amdgcn.raw.ptr.buffer.store.p999(ptr addrspace(999) %data, ptr addrspace(8) %rsrc, i32 %voffset.add, i32 0, i32 0)804 ret void805}806 807define void @buffer_store_v2p999__voffset_add(ptr addrspace(8) inreg %rsrc, <2 x ptr addrspace(999)> %data, i32 %voffset) #0 {808; VERDE-LABEL: buffer_store_v2p999__voffset_add:809; VERDE: ; %bb.0:810; VERDE-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)811; VERDE-NEXT: buffer_store_dwordx4 v[0:3], v4, s[16:19], 0 offen offset:60812; VERDE-NEXT: s_waitcnt vmcnt(0) expcnt(0)813; VERDE-NEXT: s_setpc_b64 s[30:31]814;815; CHECK-LABEL: buffer_store_v2p999__voffset_add:816; CHECK: ; %bb.0:817; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)818; CHECK-NEXT: buffer_store_dwordx4 v[0:3], v4, s[16:19], 0 offen offset:60819; CHECK-NEXT: s_waitcnt vmcnt(0)820; CHECK-NEXT: s_setpc_b64 s[30:31]821 %voffset.add = add i32 %voffset, 60822 call void @llvm.amdgcn.raw.ptr.buffer.store.v2p999(<2 x ptr addrspace(999)> %data, ptr addrspace(8) %rsrc, i32 %voffset.add, i32 0, i32 0)823 ret void824}825 826define void @buffer_store_p2__voffset_add(ptr addrspace(8) inreg %rsrc, ptr addrspace(2) %data, i32 %voffset) #0 {827; VERDE-LABEL: buffer_store_p2__voffset_add:828; VERDE: ; %bb.0:829; VERDE-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)830; VERDE-NEXT: buffer_store_dword v0, v1, s[16:19], 0 offen offset:60831; VERDE-NEXT: s_waitcnt vmcnt(0) expcnt(0)832; VERDE-NEXT: s_setpc_b64 s[30:31]833;834; CHECK-LABEL: buffer_store_p2__voffset_add:835; CHECK: ; %bb.0:836; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)837; CHECK-NEXT: buffer_store_dword v0, v1, s[16:19], 0 offen offset:60838; CHECK-NEXT: s_waitcnt vmcnt(0)839; CHECK-NEXT: s_setpc_b64 s[30:31]840 %voffset.add = add i32 %voffset, 60841 call void @llvm.amdgcn.raw.ptr.buffer.store.p2(ptr addrspace(2) %data, ptr addrspace(8) %rsrc, i32 %voffset.add, i32 0, i32 0)842 ret void843}844 845define void @buffer_store_v2p2__voffset_add(ptr addrspace(8) inreg %rsrc, <2 x ptr addrspace(2)> %data, i32 %voffset) #0 {846; VERDE-LABEL: buffer_store_v2p2__voffset_add:847; VERDE: ; %bb.0:848; VERDE-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)849; VERDE-NEXT: buffer_store_dwordx2 v[0:1], v2, s[16:19], 0 offen offset:60850; VERDE-NEXT: s_waitcnt vmcnt(0) expcnt(0)851; VERDE-NEXT: s_setpc_b64 s[30:31]852;853; CHECK-LABEL: buffer_store_v2p2__voffset_add:854; CHECK: ; %bb.0:855; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)856; CHECK-NEXT: buffer_store_dwordx2 v[0:1], v2, s[16:19], 0 offen offset:60857; CHECK-NEXT: s_waitcnt vmcnt(0)858; CHECK-NEXT: s_setpc_b64 s[30:31]859 %voffset.add = add i32 %voffset, 60860 call void @llvm.amdgcn.raw.ptr.buffer.store.v2p2(<2 x ptr addrspace(2)> %data, ptr addrspace(8) %rsrc, i32 %voffset.add, i32 0, i32 0)861 ret void862}863 864define void @buffer_store_v3p2__voffset_add(ptr addrspace(8) inreg %rsrc, <3 x ptr addrspace(2)> %data, i32 %voffset) #0 {865; VERDE-LABEL: buffer_store_v3p2__voffset_add:866; VERDE: ; %bb.0:867; VERDE-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)868; VERDE-NEXT: buffer_store_dwordx3 v[0:2], v3, s[16:19], 0 offen offset:60869; VERDE-NEXT: s_waitcnt vmcnt(0) expcnt(0)870; VERDE-NEXT: s_setpc_b64 s[30:31]871;872; CHECK-LABEL: buffer_store_v3p2__voffset_add:873; CHECK: ; %bb.0:874; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)875; CHECK-NEXT: buffer_store_dwordx3 v[0:2], v3, s[16:19], 0 offen offset:60876; CHECK-NEXT: s_waitcnt vmcnt(0)877; CHECK-NEXT: s_setpc_b64 s[30:31]878 %voffset.add = add i32 %voffset, 60879 call void @llvm.amdgcn.raw.ptr.buffer.store.v3p2(<3 x ptr addrspace(2)> %data, ptr addrspace(8) %rsrc, i32 %voffset.add, i32 0, i32 0)880 ret void881}882 883define void @buffer_store_v4p2__voffset_add(ptr addrspace(8) inreg %rsrc, <4 x ptr addrspace(2)> %data, i32 %voffset) #0 {884; VERDE-LABEL: buffer_store_v4p2__voffset_add:885; VERDE: ; %bb.0:886; VERDE-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)887; VERDE-NEXT: buffer_store_dwordx4 v[0:3], v4, s[16:19], 0 offen offset:60888; VERDE-NEXT: s_waitcnt vmcnt(0) expcnt(0)889; VERDE-NEXT: s_setpc_b64 s[30:31]890;891; CHECK-LABEL: buffer_store_v4p2__voffset_add:892; CHECK: ; %bb.0:893; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)894; CHECK-NEXT: buffer_store_dwordx4 v[0:3], v4, s[16:19], 0 offen offset:60895; CHECK-NEXT: s_waitcnt vmcnt(0)896; CHECK-NEXT: s_setpc_b64 s[30:31]897 %voffset.add = add i32 %voffset, 60898 call void @llvm.amdgcn.raw.ptr.buffer.store.v4p2(<4 x ptr addrspace(2)> %data, ptr addrspace(8) %rsrc, i32 %voffset.add, i32 0, i32 0)899 ret void900}901 902define void @buffer_store_p3__voffset_add(ptr addrspace(8) inreg %rsrc, ptr addrspace(3) %data, i32 %voffset) #0 {903; VERDE-LABEL: buffer_store_p3__voffset_add:904; VERDE: ; %bb.0:905; VERDE-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)906; VERDE-NEXT: buffer_store_dword v0, v1, s[16:19], 0 offen offset:60907; VERDE-NEXT: s_waitcnt vmcnt(0) expcnt(0)908; VERDE-NEXT: s_setpc_b64 s[30:31]909;910; CHECK-LABEL: buffer_store_p3__voffset_add:911; CHECK: ; %bb.0:912; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)913; CHECK-NEXT: buffer_store_dword v0, v1, s[16:19], 0 offen offset:60914; CHECK-NEXT: s_waitcnt vmcnt(0)915; CHECK-NEXT: s_setpc_b64 s[30:31]916 %voffset.add = add i32 %voffset, 60917 call void @llvm.amdgcn.raw.ptr.buffer.store.p3(ptr addrspace(3) %data, ptr addrspace(8) %rsrc, i32 %voffset.add, i32 0, i32 0)918 ret void919}920 921define void @buffer_store_v2p3__voffset_add(ptr addrspace(8) inreg %rsrc, <2 x ptr addrspace(3)> %data, i32 %voffset) #0 {922; VERDE-LABEL: buffer_store_v2p3__voffset_add:923; VERDE: ; %bb.0:924; VERDE-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)925; VERDE-NEXT: buffer_store_dwordx2 v[0:1], v2, s[16:19], 0 offen offset:60926; VERDE-NEXT: s_waitcnt vmcnt(0) expcnt(0)927; VERDE-NEXT: s_setpc_b64 s[30:31]928;929; CHECK-LABEL: buffer_store_v2p3__voffset_add:930; CHECK: ; %bb.0:931; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)932; CHECK-NEXT: buffer_store_dwordx2 v[0:1], v2, s[16:19], 0 offen offset:60933; CHECK-NEXT: s_waitcnt vmcnt(0)934; CHECK-NEXT: s_setpc_b64 s[30:31]935 %voffset.add = add i32 %voffset, 60936 call void @llvm.amdgcn.raw.ptr.buffer.store.v2p3(<2 x ptr addrspace(3)> %data, ptr addrspace(8) %rsrc, i32 %voffset.add, i32 0, i32 0)937 ret void938}939 940define void @buffer_store_v3p3__voffset_add(ptr addrspace(8) inreg %rsrc, <3 x ptr addrspace(3)> %data, i32 %voffset) #0 {941; VERDE-LABEL: buffer_store_v3p3__voffset_add:942; VERDE: ; %bb.0:943; VERDE-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)944; VERDE-NEXT: buffer_store_dwordx3 v[0:2], v3, s[16:19], 0 offen offset:60945; VERDE-NEXT: s_waitcnt vmcnt(0) expcnt(0)946; VERDE-NEXT: s_setpc_b64 s[30:31]947;948; CHECK-LABEL: buffer_store_v3p3__voffset_add:949; CHECK: ; %bb.0:950; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)951; CHECK-NEXT: buffer_store_dwordx3 v[0:2], v3, s[16:19], 0 offen offset:60952; CHECK-NEXT: s_waitcnt vmcnt(0)953; CHECK-NEXT: s_setpc_b64 s[30:31]954 %voffset.add = add i32 %voffset, 60955 call void @llvm.amdgcn.raw.ptr.buffer.store.v3p3(<3 x ptr addrspace(3)> %data, ptr addrspace(8) %rsrc, i32 %voffset.add, i32 0, i32 0)956 ret void957}958 959define void @buffer_store_v4p3__voffset_add(ptr addrspace(8) inreg %rsrc, <4 x ptr addrspace(3)> %data, i32 %voffset) #0 {960; VERDE-LABEL: buffer_store_v4p3__voffset_add:961; VERDE: ; %bb.0:962; VERDE-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)963; VERDE-NEXT: buffer_store_dwordx4 v[0:3], v4, s[16:19], 0 offen offset:60964; VERDE-NEXT: s_waitcnt vmcnt(0) expcnt(0)965; VERDE-NEXT: s_setpc_b64 s[30:31]966;967; CHECK-LABEL: buffer_store_v4p3__voffset_add:968; CHECK: ; %bb.0:969; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)970; CHECK-NEXT: buffer_store_dwordx4 v[0:3], v4, s[16:19], 0 offen offset:60971; CHECK-NEXT: s_waitcnt vmcnt(0)972; CHECK-NEXT: s_setpc_b64 s[30:31]973 %voffset.add = add i32 %voffset, 60974 call void @llvm.amdgcn.raw.ptr.buffer.store.v4p3(<4 x ptr addrspace(3)> %data, ptr addrspace(8) %rsrc, i32 %voffset.add, i32 0, i32 0)975 ret void976}977 978define void @buffer_store_p5__voffset_add(ptr addrspace(8) inreg %rsrc, ptr addrspace(5) %data, i32 %voffset) #0 {979; VERDE-LABEL: buffer_store_p5__voffset_add:980; VERDE: ; %bb.0:981; VERDE-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)982; VERDE-NEXT: buffer_store_dword v0, v1, s[16:19], 0 offen offset:60983; VERDE-NEXT: s_waitcnt vmcnt(0) expcnt(0)984; VERDE-NEXT: s_setpc_b64 s[30:31]985;986; CHECK-LABEL: buffer_store_p5__voffset_add:987; CHECK: ; %bb.0:988; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)989; CHECK-NEXT: buffer_store_dword v0, v1, s[16:19], 0 offen offset:60990; CHECK-NEXT: s_waitcnt vmcnt(0)991; CHECK-NEXT: s_setpc_b64 s[30:31]992 %voffset.add = add i32 %voffset, 60993 call void @llvm.amdgcn.raw.ptr.buffer.store.p5(ptr addrspace(5) %data, ptr addrspace(8) %rsrc, i32 %voffset.add, i32 0, i32 0)994 ret void995}996 997define void @buffer_store_v2p5__voffset_add(ptr addrspace(8) inreg %rsrc, <2 x ptr addrspace(5)> %data, i32 %voffset) #0 {998; VERDE-LABEL: buffer_store_v2p5__voffset_add:999; VERDE: ; %bb.0:1000; VERDE-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1001; VERDE-NEXT: buffer_store_dwordx2 v[0:1], v2, s[16:19], 0 offen offset:601002; VERDE-NEXT: s_waitcnt vmcnt(0) expcnt(0)1003; VERDE-NEXT: s_setpc_b64 s[30:31]1004;1005; CHECK-LABEL: buffer_store_v2p5__voffset_add:1006; CHECK: ; %bb.0:1007; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1008; CHECK-NEXT: buffer_store_dwordx2 v[0:1], v2, s[16:19], 0 offen offset:601009; CHECK-NEXT: s_waitcnt vmcnt(0)1010; CHECK-NEXT: s_setpc_b64 s[30:31]1011 %voffset.add = add i32 %voffset, 601012 call void @llvm.amdgcn.raw.ptr.buffer.store.v2p5(<2 x ptr addrspace(5)> %data, ptr addrspace(8) %rsrc, i32 %voffset.add, i32 0, i32 0)1013 ret void1014}1015 1016define void @buffer_store_v3p5__voffset_add(ptr addrspace(8) inreg %rsrc, <3 x ptr addrspace(5)> %data, i32 %voffset) #0 {1017; VERDE-LABEL: buffer_store_v3p5__voffset_add:1018; VERDE: ; %bb.0:1019; VERDE-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1020; VERDE-NEXT: buffer_store_dwordx3 v[0:2], v3, s[16:19], 0 offen offset:601021; VERDE-NEXT: s_waitcnt vmcnt(0) expcnt(0)1022; VERDE-NEXT: s_setpc_b64 s[30:31]1023;1024; CHECK-LABEL: buffer_store_v3p5__voffset_add:1025; CHECK: ; %bb.0:1026; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1027; CHECK-NEXT: buffer_store_dwordx3 v[0:2], v3, s[16:19], 0 offen offset:601028; CHECK-NEXT: s_waitcnt vmcnt(0)1029; CHECK-NEXT: s_setpc_b64 s[30:31]1030 %voffset.add = add i32 %voffset, 601031 call void @llvm.amdgcn.raw.ptr.buffer.store.v3p5(<3 x ptr addrspace(5)> %data, ptr addrspace(8) %rsrc, i32 %voffset.add, i32 0, i32 0)1032 ret void1033}1034 1035define void @buffer_store_v4p5__voffset_add(ptr addrspace(8) inreg %rsrc, <4 x ptr addrspace(5)> %data, i32 %voffset) #0 {1036; VERDE-LABEL: buffer_store_v4p5__voffset_add:1037; VERDE: ; %bb.0:1038; VERDE-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1039; VERDE-NEXT: buffer_store_dwordx4 v[0:3], v4, s[16:19], 0 offen offset:601040; VERDE-NEXT: s_waitcnt vmcnt(0) expcnt(0)1041; VERDE-NEXT: s_setpc_b64 s[30:31]1042;1043; CHECK-LABEL: buffer_store_v4p5__voffset_add:1044; CHECK: ; %bb.0:1045; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1046; CHECK-NEXT: buffer_store_dwordx4 v[0:3], v4, s[16:19], 0 offen offset:601047; CHECK-NEXT: s_waitcnt vmcnt(0)1048; CHECK-NEXT: s_setpc_b64 s[30:31]1049 %voffset.add = add i32 %voffset, 601050 call void @llvm.amdgcn.raw.ptr.buffer.store.v4p5(<4 x ptr addrspace(5)> %data, ptr addrspace(8) %rsrc, i32 %voffset.add, i32 0, i32 0)1051 ret void1052}1053 1054define void @buffer_store_p6__voffset_add(ptr addrspace(8) inreg %rsrc, ptr addrspace(6) %data, i32 %voffset) #0 {1055; VERDE-LABEL: buffer_store_p6__voffset_add:1056; VERDE: ; %bb.0:1057; VERDE-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1058; VERDE-NEXT: buffer_store_dword v0, v1, s[16:19], 0 offen offset:601059; VERDE-NEXT: s_waitcnt vmcnt(0) expcnt(0)1060; VERDE-NEXT: s_setpc_b64 s[30:31]1061;1062; CHECK-LABEL: buffer_store_p6__voffset_add:1063; CHECK: ; %bb.0:1064; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1065; CHECK-NEXT: buffer_store_dword v0, v1, s[16:19], 0 offen offset:601066; CHECK-NEXT: s_waitcnt vmcnt(0)1067; CHECK-NEXT: s_setpc_b64 s[30:31]1068 %voffset.add = add i32 %voffset, 601069 call void @llvm.amdgcn.raw.ptr.buffer.store.p6(ptr addrspace(6) %data, ptr addrspace(8) %rsrc, i32 %voffset.add, i32 0, i32 0)1070 ret void1071}1072 1073define void @buffer_store_v2p6__voffset_add(ptr addrspace(8) inreg %rsrc, <2 x ptr addrspace(6)> %data, i32 %voffset) #0 {1074; VERDE-LABEL: buffer_store_v2p6__voffset_add:1075; VERDE: ; %bb.0:1076; VERDE-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1077; VERDE-NEXT: buffer_store_dwordx2 v[0:1], v2, s[16:19], 0 offen offset:601078; VERDE-NEXT: s_waitcnt vmcnt(0) expcnt(0)1079; VERDE-NEXT: s_setpc_b64 s[30:31]1080;1081; CHECK-LABEL: buffer_store_v2p6__voffset_add:1082; CHECK: ; %bb.0:1083; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1084; CHECK-NEXT: buffer_store_dwordx2 v[0:1], v2, s[16:19], 0 offen offset:601085; CHECK-NEXT: s_waitcnt vmcnt(0)1086; CHECK-NEXT: s_setpc_b64 s[30:31]1087 %voffset.add = add i32 %voffset, 601088 call void @llvm.amdgcn.raw.ptr.buffer.store.v2p6(<2 x ptr addrspace(6)> %data, ptr addrspace(8) %rsrc, i32 %voffset.add, i32 0, i32 0)1089 ret void1090}1091 1092define void @buffer_store_v3p6__voffset_add(ptr addrspace(8) inreg %rsrc, <3 x ptr addrspace(6)> %data, i32 %voffset) #0 {1093; VERDE-LABEL: buffer_store_v3p6__voffset_add:1094; VERDE: ; %bb.0:1095; VERDE-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1096; VERDE-NEXT: buffer_store_dwordx3 v[0:2], v3, s[16:19], 0 offen offset:601097; VERDE-NEXT: s_waitcnt vmcnt(0) expcnt(0)1098; VERDE-NEXT: s_setpc_b64 s[30:31]1099;1100; CHECK-LABEL: buffer_store_v3p6__voffset_add:1101; CHECK: ; %bb.0:1102; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1103; CHECK-NEXT: buffer_store_dwordx3 v[0:2], v3, s[16:19], 0 offen offset:601104; CHECK-NEXT: s_waitcnt vmcnt(0)1105; CHECK-NEXT: s_setpc_b64 s[30:31]1106 %voffset.add = add i32 %voffset, 601107 call void @llvm.amdgcn.raw.ptr.buffer.store.v3p6(<3 x ptr addrspace(6)> %data, ptr addrspace(8) %rsrc, i32 %voffset.add, i32 0, i32 0)1108 ret void1109}1110 1111define void @buffer_store_v4p6__voffset_add(ptr addrspace(8) inreg %rsrc, <4 x ptr addrspace(6)> %data, i32 %voffset) #0 {1112; VERDE-LABEL: buffer_store_v4p6__voffset_add:1113; VERDE: ; %bb.0:1114; VERDE-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1115; VERDE-NEXT: buffer_store_dwordx4 v[0:3], v4, s[16:19], 0 offen offset:601116; VERDE-NEXT: s_waitcnt vmcnt(0) expcnt(0)1117; VERDE-NEXT: s_setpc_b64 s[30:31]1118;1119; CHECK-LABEL: buffer_store_v4p6__voffset_add:1120; CHECK: ; %bb.0:1121; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1122; CHECK-NEXT: buffer_store_dwordx4 v[0:3], v4, s[16:19], 0 offen offset:601123; CHECK-NEXT: s_waitcnt vmcnt(0)1124; CHECK-NEXT: s_setpc_b64 s[30:31]1125 %voffset.add = add i32 %voffset, 601126 call void @llvm.amdgcn.raw.ptr.buffer.store.v4p6(<4 x ptr addrspace(6)> %data, ptr addrspace(8) %rsrc, i32 %voffset.add, i32 0, i32 0)1127 ret void1128}1129 1130declare void @llvm.amdgcn.raw.ptr.buffer.store.f32(float, ptr addrspace(8), i32, i32, i32) #01131declare void @llvm.amdgcn.raw.ptr.buffer.store.v2f32(<2 x float>, ptr addrspace(8), i32, i32, i32) #01132declare void @llvm.amdgcn.raw.ptr.buffer.store.v4f32(<4 x float>, ptr addrspace(8), i32, i32, i32) #01133declare void @llvm.amdgcn.raw.ptr.buffer.store.i32(i32, ptr addrspace(8), i32, i32, i32) #01134declare void @llvm.amdgcn.raw.ptr.buffer.store.v2i32(<2 x i32>, ptr addrspace(8), i32, i32, i32) #01135declare void @llvm.amdgcn.raw.ptr.buffer.store.v4i32(<4 x i32>, ptr addrspace(8), i32, i32, i32) #01136declare <4 x float> @llvm.amdgcn.raw.ptr.buffer.load.v4f32(ptr addrspace(8), i32, i32, i32) #11137declare void @llvm.amdgcn.raw.ptr.buffer.store.i8(i8, ptr addrspace(8), i32, i32, i32) #01138declare void @llvm.amdgcn.raw.ptr.buffer.store.f16(half, ptr addrspace(8), i32, i32, i32) #01139declare void @llvm.amdgcn.raw.ptr.buffer.store.v2f16(<2 x half>, ptr addrspace(8), i32, i32, i32) #01140declare void @llvm.amdgcn.raw.ptr.buffer.store.v4f16(<4 x half>, ptr addrspace(8), i32, i32, i32) #01141declare void @llvm.amdgcn.raw.ptr.buffer.store.i16(i16, ptr addrspace(8), i32, i32, i32) #01142declare void @llvm.amdgcn.raw.ptr.buffer.store.v2i16(<2 x i16>, ptr addrspace(8), i32, i32, i32) #01143declare void @llvm.amdgcn.raw.ptr.buffer.store.v4i16(<4 x i16>, ptr addrspace(8), i32, i32, i32) #01144 1145attributes #0 = { nounwind }1146attributes #1 = { nounwind readonly }1147