749 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=amdgcn -mcpu=verde | FileCheck %s -check-prefix=SI3; RUN: llc < %s -mtriple=amdgcn -mcpu=hawaii | FileCheck %s -check-prefix=GFX74; RUN: llc < %s -mtriple=amdgcn -mcpu=gfx1010 | FileCheck %s -check-prefix=GFX105; RUN: llc < %s -mtriple=amdgcn -mcpu=gfx1030 | FileCheck %s -check-prefix=GFX10306; RUN: llc < %s -mtriple=amdgcn -mcpu=gfx1100 | FileCheck %s -check-prefix=GFX11007; RUN: llc < %s -mtriple=amdgcn -mcpu=gfx1200 | FileCheck %s -check-prefix=GFX128 9; RUN: llc < %s -global-isel -mtriple=amdgcn -mcpu=verde | FileCheck %s -check-prefix=G_SI10; RUN: llc < %s -global-isel -mtriple=amdgcn -mcpu=hawaii | FileCheck %s -check-prefix=G_GFX711; RUN: llc < %s -global-isel -mtriple=amdgcn -mcpu=gfx1010 | FileCheck %s -check-prefix=G_GFX1012; RUN: llc < %s -global-isel -mtriple=amdgcn -mcpu=gfx1030 | FileCheck %s -check-prefix=G_GFX103013; RUN: llc < %s -global-isel -mtriple=amdgcn -mcpu=gfx1100 | FileCheck %s -check-prefix=G_GFX110014; RUN: llc < %s -global-isel -mtriple=amdgcn -mcpu=gfx1200 | FileCheck %s -check-prefix=GFX1215 16declare float @llvm.amdgcn.raw.buffer.atomic.fmin.f32(float, <4 x i32>, i32, i32, i32 immarg)17declare float @llvm.amdgcn.raw.buffer.atomic.fmax.f32(float, <4 x i32>, i32, i32, i32 immarg)18 19 20define amdgpu_kernel void @raw_buffer_atomic_min_noret_f32(<4 x i32> inreg %rsrc, float %data, i32 %vindex) {21; SI-LABEL: raw_buffer_atomic_min_noret_f32:22; SI: ; %bb.0: ; %main_body23; SI-NEXT: s_load_dwordx2 s[6:7], s[4:5], 0xd24; SI-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x925; SI-NEXT: s_waitcnt lgkmcnt(0)26; SI-NEXT: v_mov_b32_e32 v0, s627; SI-NEXT: v_mov_b32_e32 v1, s728; SI-NEXT: buffer_atomic_fmin v0, v1, s[0:3], 0 offen29; SI-NEXT: s_endpgm30;31; GFX7-LABEL: raw_buffer_atomic_min_noret_f32:32; GFX7: ; %bb.0: ; %main_body33; GFX7-NEXT: s_load_dwordx2 s[6:7], s[4:5], 0xd34; GFX7-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x935; GFX7-NEXT: s_waitcnt lgkmcnt(0)36; GFX7-NEXT: v_mov_b32_e32 v0, s637; GFX7-NEXT: v_mov_b32_e32 v1, s738; GFX7-NEXT: buffer_atomic_fmin v0, v1, s[0:3], 0 offen39; GFX7-NEXT: s_endpgm40;41; GFX10-LABEL: raw_buffer_atomic_min_noret_f32:42; GFX10: ; %bb.0: ; %main_body43; GFX10-NEXT: s_clause 0x144; GFX10-NEXT: s_load_dwordx2 s[6:7], s[4:5], 0x3445; GFX10-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x2446; GFX10-NEXT: s_waitcnt lgkmcnt(0)47; GFX10-NEXT: v_mov_b32_e32 v0, s648; GFX10-NEXT: v_mov_b32_e32 v1, s749; GFX10-NEXT: buffer_atomic_fmin v0, v1, s[0:3], 0 offen50; GFX10-NEXT: s_endpgm51;52; GFX1030-LABEL: raw_buffer_atomic_min_noret_f32:53; GFX1030: ; %bb.0: ; %main_body54; GFX1030-NEXT: s_clause 0x155; GFX1030-NEXT: s_load_dwordx2 s[6:7], s[4:5], 0x3456; GFX1030-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x2457; GFX1030-NEXT: s_waitcnt lgkmcnt(0)58; GFX1030-NEXT: v_mov_b32_e32 v0, s659; GFX1030-NEXT: v_mov_b32_e32 v1, s760; GFX1030-NEXT: buffer_atomic_fmin v0, v1, s[0:3], 0 offen61; GFX1030-NEXT: s_endpgm62;63; GFX1100-LABEL: raw_buffer_atomic_min_noret_f32:64; GFX1100: ; %bb.0: ; %main_body65; GFX1100-NEXT: s_clause 0x166; GFX1100-NEXT: s_load_b64 s[6:7], s[4:5], 0x3467; GFX1100-NEXT: s_load_b128 s[0:3], s[4:5], 0x2468; GFX1100-NEXT: s_waitcnt lgkmcnt(0)69; GFX1100-NEXT: v_dual_mov_b32 v0, s6 :: v_dual_mov_b32 v1, s770; GFX1100-NEXT: buffer_atomic_min_f32 v0, v1, s[0:3], 0 offen71; GFX1100-NEXT: s_endpgm72;73; GFX12-LABEL: raw_buffer_atomic_min_noret_f32:74; GFX12: ; %bb.0: ; %main_body75; GFX12-NEXT: s_clause 0x176; GFX12-NEXT: s_load_b64 s[6:7], s[4:5], 0x3477; GFX12-NEXT: s_load_b128 s[0:3], s[4:5], 0x2478; GFX12-NEXT: s_wait_kmcnt 0x079; GFX12-NEXT: v_dual_mov_b32 v0, s6 :: v_dual_mov_b32 v1, s780; GFX12-NEXT: buffer_atomic_min_num_f32 v0, v1, s[0:3], null offen81; GFX12-NEXT: s_endpgm82;83; G_SI-LABEL: raw_buffer_atomic_min_noret_f32:84; G_SI: ; %bb.0: ; %main_body85; G_SI-NEXT: s_load_dwordx2 s[6:7], s[4:5], 0xd86; G_SI-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x987; G_SI-NEXT: s_waitcnt lgkmcnt(0)88; G_SI-NEXT: v_mov_b32_e32 v0, s689; G_SI-NEXT: v_mov_b32_e32 v1, s790; G_SI-NEXT: buffer_atomic_fmin v0, v1, s[0:3], 0 offen91; G_SI-NEXT: s_endpgm92;93; G_GFX7-LABEL: raw_buffer_atomic_min_noret_f32:94; G_GFX7: ; %bb.0: ; %main_body95; G_GFX7-NEXT: s_load_dwordx2 s[6:7], s[4:5], 0xd96; G_GFX7-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x997; G_GFX7-NEXT: s_waitcnt lgkmcnt(0)98; G_GFX7-NEXT: v_mov_b32_e32 v0, s699; G_GFX7-NEXT: v_mov_b32_e32 v1, s7100; G_GFX7-NEXT: buffer_atomic_fmin v0, v1, s[0:3], 0 offen101; G_GFX7-NEXT: s_endpgm102;103; G_GFX10-LABEL: raw_buffer_atomic_min_noret_f32:104; G_GFX10: ; %bb.0: ; %main_body105; G_GFX10-NEXT: s_clause 0x1106; G_GFX10-NEXT: s_load_dwordx2 s[6:7], s[4:5], 0x34107; G_GFX10-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x24108; G_GFX10-NEXT: s_waitcnt lgkmcnt(0)109; G_GFX10-NEXT: v_mov_b32_e32 v0, s6110; G_GFX10-NEXT: v_mov_b32_e32 v1, s7111; G_GFX10-NEXT: buffer_atomic_fmin v0, v1, s[0:3], 0 offen112; G_GFX10-NEXT: s_endpgm113;114; G_GFX1030-LABEL: raw_buffer_atomic_min_noret_f32:115; G_GFX1030: ; %bb.0: ; %main_body116; G_GFX1030-NEXT: s_clause 0x1117; G_GFX1030-NEXT: s_load_dwordx2 s[6:7], s[4:5], 0x34118; G_GFX1030-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x24119; G_GFX1030-NEXT: s_waitcnt lgkmcnt(0)120; G_GFX1030-NEXT: v_mov_b32_e32 v0, s6121; G_GFX1030-NEXT: v_mov_b32_e32 v1, s7122; G_GFX1030-NEXT: buffer_atomic_fmin v0, v1, s[0:3], 0 offen123; G_GFX1030-NEXT: s_endpgm124;125; G_GFX1100-LABEL: raw_buffer_atomic_min_noret_f32:126; G_GFX1100: ; %bb.0: ; %main_body127; G_GFX1100-NEXT: s_clause 0x1128; G_GFX1100-NEXT: s_load_b64 s[6:7], s[4:5], 0x34129; G_GFX1100-NEXT: s_load_b128 s[0:3], s[4:5], 0x24130; G_GFX1100-NEXT: s_waitcnt lgkmcnt(0)131; G_GFX1100-NEXT: v_dual_mov_b32 v0, s6 :: v_dual_mov_b32 v1, s7132; G_GFX1100-NEXT: buffer_atomic_min_f32 v0, v1, s[0:3], 0 offen133; G_GFX1100-NEXT: s_endpgm134main_body:135 %ret = call float @llvm.amdgcn.raw.buffer.atomic.fmin.f32(float %data, <4 x i32> %rsrc, i32 %vindex, i32 0, i32 0)136 ret void137}138 139define amdgpu_ps void @raw_buffer_atomic_min_rtn_f32(<4 x i32> inreg %rsrc, float %data, i32 %vindex) {140; SI-LABEL: raw_buffer_atomic_min_rtn_f32:141; SI: ; %bb.0: ; %main_body142; SI-NEXT: buffer_atomic_fmin v0, v1, s[0:3], 0 offen glc143; SI-NEXT: s_mov_b32 s3, 0xf000144; SI-NEXT: s_mov_b32 s2, -1145; SI-NEXT: s_waitcnt vmcnt(0)146; SI-NEXT: buffer_store_dword v0, off, s[0:3], 0147; SI-NEXT: s_endpgm148;149; GFX7-LABEL: raw_buffer_atomic_min_rtn_f32:150; GFX7: ; %bb.0: ; %main_body151; GFX7-NEXT: buffer_atomic_fmin v0, v1, s[0:3], 0 offen glc152; GFX7-NEXT: s_mov_b32 s3, 0xf000153; GFX7-NEXT: s_mov_b32 s2, -1154; GFX7-NEXT: s_waitcnt vmcnt(0)155; GFX7-NEXT: buffer_store_dword v0, off, s[0:3], 0156; GFX7-NEXT: s_endpgm157;158; GFX10-LABEL: raw_buffer_atomic_min_rtn_f32:159; GFX10: ; %bb.0: ; %main_body160; GFX10-NEXT: buffer_atomic_fmin v0, v1, s[0:3], 0 offen glc161; GFX10-NEXT: s_waitcnt vmcnt(0)162; GFX10-NEXT: global_store_dword v[0:1], v0, off163; GFX10-NEXT: s_endpgm164;165; GFX1030-LABEL: raw_buffer_atomic_min_rtn_f32:166; GFX1030: ; %bb.0: ; %main_body167; GFX1030-NEXT: buffer_atomic_fmin v0, v1, s[0:3], 0 offen glc168; GFX1030-NEXT: s_waitcnt vmcnt(0)169; GFX1030-NEXT: global_store_dword v[0:1], v0, off170; GFX1030-NEXT: s_endpgm171;172; GFX1100-LABEL: raw_buffer_atomic_min_rtn_f32:173; GFX1100: ; %bb.0: ; %main_body174; GFX1100-NEXT: buffer_atomic_min_f32 v0, v1, s[0:3], 0 offen glc175; GFX1100-NEXT: s_waitcnt vmcnt(0)176; GFX1100-NEXT: global_store_b32 v[0:1], v0, off177; GFX1100-NEXT: s_endpgm178;179; GFX12-LABEL: raw_buffer_atomic_min_rtn_f32:180; GFX12: ; %bb.0: ; %main_body181; GFX12-NEXT: buffer_atomic_min_num_f32 v0, v1, s[0:3], null offen th:TH_ATOMIC_RETURN182; GFX12-NEXT: s_wait_loadcnt 0x0183; GFX12-NEXT: global_store_b32 v[0:1], v0, off184; GFX12-NEXT: s_endpgm185;186; G_SI-LABEL: raw_buffer_atomic_min_rtn_f32:187; G_SI: ; %bb.0: ; %main_body188; G_SI-NEXT: buffer_atomic_fmin v0, v1, s[0:3], 0 offen glc189; G_SI-NEXT: s_mov_b32 s2, -1190; G_SI-NEXT: s_mov_b32 s3, 0xf000191; G_SI-NEXT: s_waitcnt vmcnt(0)192; G_SI-NEXT: buffer_store_dword v0, off, s[0:3], 0193; G_SI-NEXT: s_endpgm194;195; G_GFX7-LABEL: raw_buffer_atomic_min_rtn_f32:196; G_GFX7: ; %bb.0: ; %main_body197; G_GFX7-NEXT: buffer_atomic_fmin v0, v1, s[0:3], 0 offen glc198; G_GFX7-NEXT: s_mov_b32 s2, -1199; G_GFX7-NEXT: s_mov_b32 s3, 0xf000200; G_GFX7-NEXT: s_waitcnt vmcnt(0)201; G_GFX7-NEXT: buffer_store_dword v0, off, s[0:3], 0202; G_GFX7-NEXT: s_endpgm203;204; G_GFX10-LABEL: raw_buffer_atomic_min_rtn_f32:205; G_GFX10: ; %bb.0: ; %main_body206; G_GFX10-NEXT: buffer_atomic_fmin v0, v1, s[0:3], 0 offen glc207; G_GFX10-NEXT: s_waitcnt vmcnt(0)208; G_GFX10-NEXT: global_store_dword v[0:1], v0, off209; G_GFX10-NEXT: s_endpgm210;211; G_GFX1030-LABEL: raw_buffer_atomic_min_rtn_f32:212; G_GFX1030: ; %bb.0: ; %main_body213; G_GFX1030-NEXT: buffer_atomic_fmin v0, v1, s[0:3], 0 offen glc214; G_GFX1030-NEXT: s_waitcnt vmcnt(0)215; G_GFX1030-NEXT: global_store_dword v[0:1], v0, off216; G_GFX1030-NEXT: s_endpgm217;218; G_GFX1100-LABEL: raw_buffer_atomic_min_rtn_f32:219; G_GFX1100: ; %bb.0: ; %main_body220; G_GFX1100-NEXT: buffer_atomic_min_f32 v0, v1, s[0:3], 0 offen glc221; G_GFX1100-NEXT: s_waitcnt vmcnt(0)222; G_GFX1100-NEXT: global_store_b32 v[0:1], v0, off223; G_GFX1100-NEXT: s_endpgm224main_body:225 %ret = call float @llvm.amdgcn.raw.buffer.atomic.fmin.f32(float %data, <4 x i32> %rsrc, i32 %vindex, i32 0, i32 0)226 store float %ret, ptr addrspace(1) poison227 ret void228}229 230define amdgpu_kernel void @raw_buffer_atomic_min_rtn_f32_off4_slc(<4 x i32> inreg %rsrc, float %data, i32 %vindex, ptr addrspace(3) %out) {231; SI-LABEL: raw_buffer_atomic_min_rtn_f32_off4_slc:232; SI: ; %bb.0: ; %main_body233; SI-NEXT: s_load_dwordx2 s[6:7], s[4:5], 0xd234; SI-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x9235; SI-NEXT: s_mov_b32 m0, -1236; SI-NEXT: s_waitcnt lgkmcnt(0)237; SI-NEXT: v_mov_b32_e32 v0, s6238; SI-NEXT: v_mov_b32_e32 v1, s7239; SI-NEXT: buffer_atomic_fmin v0, v1, s[0:3], 4 offen glc slc240; SI-NEXT: s_load_dword s0, s[4:5], 0xf241; SI-NEXT: s_waitcnt lgkmcnt(0)242; SI-NEXT: v_mov_b32_e32 v1, s0243; SI-NEXT: s_waitcnt vmcnt(0)244; SI-NEXT: ds_write_b32 v1, v0245; SI-NEXT: s_endpgm246;247; GFX7-LABEL: raw_buffer_atomic_min_rtn_f32_off4_slc:248; GFX7: ; %bb.0: ; %main_body249; GFX7-NEXT: s_load_dwordx8 s[0:7], s[4:5], 0x9250; GFX7-NEXT: s_mov_b32 m0, -1251; GFX7-NEXT: s_waitcnt lgkmcnt(0)252; GFX7-NEXT: v_mov_b32_e32 v0, s4253; GFX7-NEXT: v_mov_b32_e32 v1, s5254; GFX7-NEXT: buffer_atomic_fmin v0, v1, s[0:3], 4 offen glc slc255; GFX7-NEXT: v_mov_b32_e32 v1, s6256; GFX7-NEXT: s_waitcnt vmcnt(0)257; GFX7-NEXT: ds_write_b32 v1, v0258; GFX7-NEXT: s_endpgm259;260; GFX10-LABEL: raw_buffer_atomic_min_rtn_f32_off4_slc:261; GFX10: ; %bb.0: ; %main_body262; GFX10-NEXT: s_load_dwordx8 s[8:15], s[4:5], 0x24263; GFX10-NEXT: s_waitcnt lgkmcnt(0)264; GFX10-NEXT: v_mov_b32_e32 v0, s12265; GFX10-NEXT: v_mov_b32_e32 v1, s13266; GFX10-NEXT: buffer_atomic_fmin v0, v1, s[8:11], 4 offen glc slc267; GFX10-NEXT: v_mov_b32_e32 v1, s14268; GFX10-NEXT: s_waitcnt vmcnt(0)269; GFX10-NEXT: ds_write_b32 v1, v0270; GFX10-NEXT: s_endpgm271;272; GFX1030-LABEL: raw_buffer_atomic_min_rtn_f32_off4_slc:273; GFX1030: ; %bb.0: ; %main_body274; GFX1030-NEXT: s_load_dwordx8 s[0:7], s[4:5], 0x24275; GFX1030-NEXT: s_waitcnt lgkmcnt(0)276; GFX1030-NEXT: v_mov_b32_e32 v0, s4277; GFX1030-NEXT: v_mov_b32_e32 v1, s5278; GFX1030-NEXT: buffer_atomic_fmin v0, v1, s[0:3], 4 offen glc slc279; GFX1030-NEXT: v_mov_b32_e32 v1, s6280; GFX1030-NEXT: s_waitcnt vmcnt(0)281; GFX1030-NEXT: ds_write_b32 v1, v0282; GFX1030-NEXT: s_endpgm283;284; GFX1100-LABEL: raw_buffer_atomic_min_rtn_f32_off4_slc:285; GFX1100: ; %bb.0: ; %main_body286; GFX1100-NEXT: s_load_b256 s[0:7], s[4:5], 0x24287; GFX1100-NEXT: s_waitcnt lgkmcnt(0)288; GFX1100-NEXT: v_dual_mov_b32 v0, s4 :: v_dual_mov_b32 v1, s5289; GFX1100-NEXT: buffer_atomic_min_f32 v0, v1, s[0:3], 4 offen glc slc290; GFX1100-NEXT: v_mov_b32_e32 v1, s6291; GFX1100-NEXT: s_waitcnt vmcnt(0)292; GFX1100-NEXT: ds_store_b32 v1, v0293; GFX1100-NEXT: s_endpgm294;295; GFX12-LABEL: raw_buffer_atomic_min_rtn_f32_off4_slc:296; GFX12: ; %bb.0: ; %main_body297; GFX12-NEXT: s_clause 0x1298; GFX12-NEXT: s_load_b96 s[8:10], s[4:5], 0x34299; GFX12-NEXT: s_load_b128 s[0:3], s[4:5], 0x24300; GFX12-NEXT: s_mov_b32 s4, 4301; GFX12-NEXT: s_wait_kmcnt 0x0302; GFX12-NEXT: v_dual_mov_b32 v0, s8 :: v_dual_mov_b32 v1, s9303; GFX12-NEXT: buffer_atomic_min_num_f32 v0, v1, s[0:3], s4 offen th:TH_ATOMIC_NT_RETURN304; GFX12-NEXT: v_mov_b32_e32 v1, s10305; GFX12-NEXT: s_wait_loadcnt 0x0306; GFX12-NEXT: ds_store_b32 v1, v0307; GFX12-NEXT: s_endpgm308;309; G_SI-LABEL: raw_buffer_atomic_min_rtn_f32_off4_slc:310; G_SI: ; %bb.0: ; %main_body311; G_SI-NEXT: s_load_dwordx2 s[6:7], s[4:5], 0xd312; G_SI-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x9313; G_SI-NEXT: s_mov_b32 m0, -1314; G_SI-NEXT: s_waitcnt lgkmcnt(0)315; G_SI-NEXT: v_mov_b32_e32 v0, s6316; G_SI-NEXT: v_mov_b32_e32 v1, s7317; G_SI-NEXT: buffer_atomic_fmin v0, v1, s[0:3], 4 offen glc slc318; G_SI-NEXT: s_load_dword s0, s[4:5], 0xf319; G_SI-NEXT: s_waitcnt lgkmcnt(0)320; G_SI-NEXT: v_mov_b32_e32 v1, s0321; G_SI-NEXT: s_waitcnt vmcnt(0)322; G_SI-NEXT: ds_write_b32 v1, v0323; G_SI-NEXT: s_endpgm324;325; G_GFX7-LABEL: raw_buffer_atomic_min_rtn_f32_off4_slc:326; G_GFX7: ; %bb.0: ; %main_body327; G_GFX7-NEXT: s_load_dwordx2 s[6:7], s[4:5], 0xd328; G_GFX7-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x9329; G_GFX7-NEXT: s_mov_b32 m0, -1330; G_GFX7-NEXT: s_waitcnt lgkmcnt(0)331; G_GFX7-NEXT: v_mov_b32_e32 v0, s6332; G_GFX7-NEXT: v_mov_b32_e32 v1, s7333; G_GFX7-NEXT: buffer_atomic_fmin v0, v1, s[0:3], 4 offen glc slc334; G_GFX7-NEXT: s_load_dword s0, s[4:5], 0xf335; G_GFX7-NEXT: s_waitcnt lgkmcnt(0)336; G_GFX7-NEXT: v_mov_b32_e32 v1, s0337; G_GFX7-NEXT: s_waitcnt vmcnt(0)338; G_GFX7-NEXT: ds_write_b32 v1, v0339; G_GFX7-NEXT: s_endpgm340;341; G_GFX10-LABEL: raw_buffer_atomic_min_rtn_f32_off4_slc:342; G_GFX10: ; %bb.0: ; %main_body343; G_GFX10-NEXT: s_clause 0x1344; G_GFX10-NEXT: s_load_dwordx2 s[6:7], s[4:5], 0x34345; G_GFX10-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x24346; G_GFX10-NEXT: s_waitcnt lgkmcnt(0)347; G_GFX10-NEXT: v_mov_b32_e32 v0, s6348; G_GFX10-NEXT: v_mov_b32_e32 v1, s7349; G_GFX10-NEXT: buffer_atomic_fmin v0, v1, s[0:3], 4 offen glc slc350; G_GFX10-NEXT: s_waitcnt_depctr depctr_vm_vsrc(0)351; G_GFX10-NEXT: s_load_dword s0, s[4:5], 0x3c352; G_GFX10-NEXT: s_waitcnt lgkmcnt(0)353; G_GFX10-NEXT: v_mov_b32_e32 v1, s0354; G_GFX10-NEXT: s_waitcnt vmcnt(0)355; G_GFX10-NEXT: ds_write_b32 v1, v0356; G_GFX10-NEXT: s_endpgm357;358; G_GFX1030-LABEL: raw_buffer_atomic_min_rtn_f32_off4_slc:359; G_GFX1030: ; %bb.0: ; %main_body360; G_GFX1030-NEXT: s_clause 0x1361; G_GFX1030-NEXT: s_load_dwordx2 s[6:7], s[4:5], 0x34362; G_GFX1030-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x24363; G_GFX1030-NEXT: s_waitcnt lgkmcnt(0)364; G_GFX1030-NEXT: v_mov_b32_e32 v0, s6365; G_GFX1030-NEXT: v_mov_b32_e32 v1, s7366; G_GFX1030-NEXT: buffer_atomic_fmin v0, v1, s[0:3], 4 offen glc slc367; G_GFX1030-NEXT: s_load_dword s0, s[4:5], 0x3c368; G_GFX1030-NEXT: s_waitcnt lgkmcnt(0)369; G_GFX1030-NEXT: v_mov_b32_e32 v1, s0370; G_GFX1030-NEXT: s_waitcnt vmcnt(0)371; G_GFX1030-NEXT: ds_write_b32 v1, v0372; G_GFX1030-NEXT: s_endpgm373;374; G_GFX1100-LABEL: raw_buffer_atomic_min_rtn_f32_off4_slc:375; G_GFX1100: ; %bb.0: ; %main_body376; G_GFX1100-NEXT: s_clause 0x1377; G_GFX1100-NEXT: s_load_b64 s[6:7], s[4:5], 0x34378; G_GFX1100-NEXT: s_load_b128 s[0:3], s[4:5], 0x24379; G_GFX1100-NEXT: s_waitcnt lgkmcnt(0)380; G_GFX1100-NEXT: v_dual_mov_b32 v0, s6 :: v_dual_mov_b32 v1, s7381; G_GFX1100-NEXT: buffer_atomic_min_f32 v0, v1, s[0:3], 4 offen glc slc382; G_GFX1100-NEXT: s_load_b32 s0, s[4:5], 0x3c383; G_GFX1100-NEXT: s_waitcnt lgkmcnt(0)384; G_GFX1100-NEXT: v_mov_b32_e32 v1, s0385; G_GFX1100-NEXT: s_waitcnt vmcnt(0)386; G_GFX1100-NEXT: ds_store_b32 v1, v0387; G_GFX1100-NEXT: s_endpgm388main_body:389 %ret = call float @llvm.amdgcn.raw.buffer.atomic.fmin.f32(float %data, <4 x i32> %rsrc, i32 %vindex, i32 4, i32 2)390 store float %ret, ptr addrspace(3) %out, align 8391 ret void392}393 394define amdgpu_kernel void @raw_buffer_atomic_max_noret_f32(<4 x i32> inreg %rsrc, float %data, i32 %vindex) {395; SI-LABEL: raw_buffer_atomic_max_noret_f32:396; SI: ; %bb.0: ; %main_body397; SI-NEXT: s_load_dwordx2 s[6:7], s[4:5], 0xd398; SI-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x9399; SI-NEXT: s_waitcnt lgkmcnt(0)400; SI-NEXT: v_mov_b32_e32 v0, s6401; SI-NEXT: v_mov_b32_e32 v1, s7402; SI-NEXT: buffer_atomic_fmax v0, v1, s[0:3], 0 offen403; SI-NEXT: s_endpgm404;405; GFX7-LABEL: raw_buffer_atomic_max_noret_f32:406; GFX7: ; %bb.0: ; %main_body407; GFX7-NEXT: s_load_dwordx2 s[6:7], s[4:5], 0xd408; GFX7-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x9409; GFX7-NEXT: s_waitcnt lgkmcnt(0)410; GFX7-NEXT: v_mov_b32_e32 v0, s6411; GFX7-NEXT: v_mov_b32_e32 v1, s7412; GFX7-NEXT: buffer_atomic_fmax v0, v1, s[0:3], 0 offen413; GFX7-NEXT: s_endpgm414;415; GFX10-LABEL: raw_buffer_atomic_max_noret_f32:416; GFX10: ; %bb.0: ; %main_body417; GFX10-NEXT: s_clause 0x1418; GFX10-NEXT: s_load_dwordx2 s[6:7], s[4:5], 0x34419; GFX10-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x24420; GFX10-NEXT: s_waitcnt lgkmcnt(0)421; GFX10-NEXT: v_mov_b32_e32 v0, s6422; GFX10-NEXT: v_mov_b32_e32 v1, s7423; GFX10-NEXT: buffer_atomic_fmax v0, v1, s[0:3], 0 offen424; GFX10-NEXT: s_endpgm425;426; GFX1030-LABEL: raw_buffer_atomic_max_noret_f32:427; GFX1030: ; %bb.0: ; %main_body428; GFX1030-NEXT: s_clause 0x1429; GFX1030-NEXT: s_load_dwordx2 s[6:7], s[4:5], 0x34430; GFX1030-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x24431; GFX1030-NEXT: s_waitcnt lgkmcnt(0)432; GFX1030-NEXT: v_mov_b32_e32 v0, s6433; GFX1030-NEXT: v_mov_b32_e32 v1, s7434; GFX1030-NEXT: buffer_atomic_fmax v0, v1, s[0:3], 0 offen435; GFX1030-NEXT: s_endpgm436;437; GFX1100-LABEL: raw_buffer_atomic_max_noret_f32:438; GFX1100: ; %bb.0: ; %main_body439; GFX1100-NEXT: s_clause 0x1440; GFX1100-NEXT: s_load_b64 s[6:7], s[4:5], 0x34441; GFX1100-NEXT: s_load_b128 s[0:3], s[4:5], 0x24442; GFX1100-NEXT: s_waitcnt lgkmcnt(0)443; GFX1100-NEXT: v_dual_mov_b32 v0, s6 :: v_dual_mov_b32 v1, s7444; GFX1100-NEXT: buffer_atomic_max_f32 v0, v1, s[0:3], 0 offen445; GFX1100-NEXT: s_endpgm446;447; GFX12-LABEL: raw_buffer_atomic_max_noret_f32:448; GFX12: ; %bb.0: ; %main_body449; GFX12-NEXT: s_clause 0x1450; GFX12-NEXT: s_load_b64 s[6:7], s[4:5], 0x34451; GFX12-NEXT: s_load_b128 s[0:3], s[4:5], 0x24452; GFX12-NEXT: s_wait_kmcnt 0x0453; GFX12-NEXT: v_dual_mov_b32 v0, s6 :: v_dual_mov_b32 v1, s7454; GFX12-NEXT: buffer_atomic_max_num_f32 v0, v1, s[0:3], null offen455; GFX12-NEXT: s_endpgm456;457; G_SI-LABEL: raw_buffer_atomic_max_noret_f32:458; G_SI: ; %bb.0: ; %main_body459; G_SI-NEXT: s_load_dwordx2 s[6:7], s[4:5], 0xd460; G_SI-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x9461; G_SI-NEXT: s_waitcnt lgkmcnt(0)462; G_SI-NEXT: v_mov_b32_e32 v0, s6463; G_SI-NEXT: v_mov_b32_e32 v1, s7464; G_SI-NEXT: buffer_atomic_fmax v0, v1, s[0:3], 0 offen465; G_SI-NEXT: s_endpgm466;467; G_GFX7-LABEL: raw_buffer_atomic_max_noret_f32:468; G_GFX7: ; %bb.0: ; %main_body469; G_GFX7-NEXT: s_load_dwordx2 s[6:7], s[4:5], 0xd470; G_GFX7-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x9471; G_GFX7-NEXT: s_waitcnt lgkmcnt(0)472; G_GFX7-NEXT: v_mov_b32_e32 v0, s6473; G_GFX7-NEXT: v_mov_b32_e32 v1, s7474; G_GFX7-NEXT: buffer_atomic_fmax v0, v1, s[0:3], 0 offen475; G_GFX7-NEXT: s_endpgm476;477; G_GFX10-LABEL: raw_buffer_atomic_max_noret_f32:478; G_GFX10: ; %bb.0: ; %main_body479; G_GFX10-NEXT: s_clause 0x1480; G_GFX10-NEXT: s_load_dwordx2 s[6:7], s[4:5], 0x34481; G_GFX10-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x24482; G_GFX10-NEXT: s_waitcnt lgkmcnt(0)483; G_GFX10-NEXT: v_mov_b32_e32 v0, s6484; G_GFX10-NEXT: v_mov_b32_e32 v1, s7485; G_GFX10-NEXT: buffer_atomic_fmax v0, v1, s[0:3], 0 offen486; G_GFX10-NEXT: s_endpgm487;488; G_GFX1030-LABEL: raw_buffer_atomic_max_noret_f32:489; G_GFX1030: ; %bb.0: ; %main_body490; G_GFX1030-NEXT: s_clause 0x1491; G_GFX1030-NEXT: s_load_dwordx2 s[6:7], s[4:5], 0x34492; G_GFX1030-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x24493; G_GFX1030-NEXT: s_waitcnt lgkmcnt(0)494; G_GFX1030-NEXT: v_mov_b32_e32 v0, s6495; G_GFX1030-NEXT: v_mov_b32_e32 v1, s7496; G_GFX1030-NEXT: buffer_atomic_fmax v0, v1, s[0:3], 0 offen497; G_GFX1030-NEXT: s_endpgm498;499; G_GFX1100-LABEL: raw_buffer_atomic_max_noret_f32:500; G_GFX1100: ; %bb.0: ; %main_body501; G_GFX1100-NEXT: s_clause 0x1502; G_GFX1100-NEXT: s_load_b64 s[6:7], s[4:5], 0x34503; G_GFX1100-NEXT: s_load_b128 s[0:3], s[4:5], 0x24504; G_GFX1100-NEXT: s_waitcnt lgkmcnt(0)505; G_GFX1100-NEXT: v_dual_mov_b32 v0, s6 :: v_dual_mov_b32 v1, s7506; G_GFX1100-NEXT: buffer_atomic_max_f32 v0, v1, s[0:3], 0 offen507; G_GFX1100-NEXT: s_endpgm508main_body:509 %ret = call float @llvm.amdgcn.raw.buffer.atomic.fmax.f32(float %data, <4 x i32> %rsrc, i32 %vindex, i32 0, i32 0)510 ret void511}512 513define amdgpu_ps void @raw_buffer_atomic_max_rtn_f32(<4 x i32> inreg %rsrc, float %data, i32 %vindex) {514; SI-LABEL: raw_buffer_atomic_max_rtn_f32:515; SI: ; %bb.0: ; %main_body516; SI-NEXT: buffer_atomic_fmax v0, v1, s[0:3], 0 offen glc517; SI-NEXT: s_mov_b32 s3, 0xf000518; SI-NEXT: s_mov_b32 s2, -1519; SI-NEXT: s_waitcnt vmcnt(0)520; SI-NEXT: buffer_store_dword v0, off, s[0:3], 0521; SI-NEXT: s_endpgm522;523; GFX7-LABEL: raw_buffer_atomic_max_rtn_f32:524; GFX7: ; %bb.0: ; %main_body525; GFX7-NEXT: buffer_atomic_fmax v0, v1, s[0:3], 0 offen glc526; GFX7-NEXT: s_mov_b32 s3, 0xf000527; GFX7-NEXT: s_mov_b32 s2, -1528; GFX7-NEXT: s_waitcnt vmcnt(0)529; GFX7-NEXT: buffer_store_dword v0, off, s[0:3], 0530; GFX7-NEXT: s_endpgm531;532; GFX10-LABEL: raw_buffer_atomic_max_rtn_f32:533; GFX10: ; %bb.0: ; %main_body534; GFX10-NEXT: buffer_atomic_fmax v0, v1, s[0:3], 0 offen glc535; GFX10-NEXT: s_waitcnt vmcnt(0)536; GFX10-NEXT: global_store_dword v[0:1], v0, off537; GFX10-NEXT: s_endpgm538;539; GFX1030-LABEL: raw_buffer_atomic_max_rtn_f32:540; GFX1030: ; %bb.0: ; %main_body541; GFX1030-NEXT: buffer_atomic_fmax v0, v1, s[0:3], 0 offen glc542; GFX1030-NEXT: s_waitcnt vmcnt(0)543; GFX1030-NEXT: global_store_dword v[0:1], v0, off544; GFX1030-NEXT: s_endpgm545;546; GFX1100-LABEL: raw_buffer_atomic_max_rtn_f32:547; GFX1100: ; %bb.0: ; %main_body548; GFX1100-NEXT: buffer_atomic_max_f32 v0, v1, s[0:3], 0 offen glc549; GFX1100-NEXT: s_waitcnt vmcnt(0)550; GFX1100-NEXT: global_store_b32 v[0:1], v0, off551; GFX1100-NEXT: s_endpgm552;553; GFX12-LABEL: raw_buffer_atomic_max_rtn_f32:554; GFX12: ; %bb.0: ; %main_body555; GFX12-NEXT: buffer_atomic_max_num_f32 v0, v1, s[0:3], null offen th:TH_ATOMIC_RETURN556; GFX12-NEXT: s_wait_loadcnt 0x0557; GFX12-NEXT: global_store_b32 v[0:1], v0, off558; GFX12-NEXT: s_endpgm559;560; G_SI-LABEL: raw_buffer_atomic_max_rtn_f32:561; G_SI: ; %bb.0: ; %main_body562; G_SI-NEXT: buffer_atomic_fmax v0, v1, s[0:3], 0 offen glc563; G_SI-NEXT: s_mov_b32 s2, -1564; G_SI-NEXT: s_mov_b32 s3, 0xf000565; G_SI-NEXT: s_waitcnt vmcnt(0)566; G_SI-NEXT: buffer_store_dword v0, off, s[0:3], 0567; G_SI-NEXT: s_endpgm568;569; G_GFX7-LABEL: raw_buffer_atomic_max_rtn_f32:570; G_GFX7: ; %bb.0: ; %main_body571; G_GFX7-NEXT: buffer_atomic_fmax v0, v1, s[0:3], 0 offen glc572; G_GFX7-NEXT: s_mov_b32 s2, -1573; G_GFX7-NEXT: s_mov_b32 s3, 0xf000574; G_GFX7-NEXT: s_waitcnt vmcnt(0)575; G_GFX7-NEXT: buffer_store_dword v0, off, s[0:3], 0576; G_GFX7-NEXT: s_endpgm577;578; G_GFX10-LABEL: raw_buffer_atomic_max_rtn_f32:579; G_GFX10: ; %bb.0: ; %main_body580; G_GFX10-NEXT: buffer_atomic_fmax v0, v1, s[0:3], 0 offen glc581; G_GFX10-NEXT: s_waitcnt vmcnt(0)582; G_GFX10-NEXT: global_store_dword v[0:1], v0, off583; G_GFX10-NEXT: s_endpgm584;585; G_GFX1030-LABEL: raw_buffer_atomic_max_rtn_f32:586; G_GFX1030: ; %bb.0: ; %main_body587; G_GFX1030-NEXT: buffer_atomic_fmax v0, v1, s[0:3], 0 offen glc588; G_GFX1030-NEXT: s_waitcnt vmcnt(0)589; G_GFX1030-NEXT: global_store_dword v[0:1], v0, off590; G_GFX1030-NEXT: s_endpgm591;592; G_GFX1100-LABEL: raw_buffer_atomic_max_rtn_f32:593; G_GFX1100: ; %bb.0: ; %main_body594; G_GFX1100-NEXT: buffer_atomic_max_f32 v0, v1, s[0:3], 0 offen glc595; G_GFX1100-NEXT: s_waitcnt vmcnt(0)596; G_GFX1100-NEXT: global_store_b32 v[0:1], v0, off597; G_GFX1100-NEXT: s_endpgm598main_body:599 %ret = call float @llvm.amdgcn.raw.buffer.atomic.fmax.f32(float %data, <4 x i32> %rsrc, i32 %vindex, i32 0, i32 0)600 store float %ret, ptr addrspace(1) poison601 ret void602}603 604define amdgpu_kernel void @raw_buffer_atomic_max_rtn_f32_off4_slc(<4 x i32> inreg %rsrc, float %data, i32 %vindex, ptr addrspace(1) %out) {605; SI-LABEL: raw_buffer_atomic_max_rtn_f32_off4_slc:606; SI: ; %bb.0: ; %main_body607; SI-NEXT: s_load_dwordx8 s[0:7], s[4:5], 0x9608; SI-NEXT: s_waitcnt lgkmcnt(0)609; SI-NEXT: v_mov_b32_e32 v0, s4610; SI-NEXT: v_mov_b32_e32 v1, s5611; SI-NEXT: buffer_atomic_fmax v0, v1, s[0:3], 4 offen glc slc612; SI-NEXT: s_mov_b32 s3, 0xf000613; SI-NEXT: s_mov_b32 s2, -1614; SI-NEXT: s_mov_b32 s0, s6615; SI-NEXT: s_mov_b32 s1, s7616; SI-NEXT: s_waitcnt vmcnt(0)617; SI-NEXT: buffer_store_dword v0, off, s[0:3], 0618; SI-NEXT: s_endpgm619;620; GFX7-LABEL: raw_buffer_atomic_max_rtn_f32_off4_slc:621; GFX7: ; %bb.0: ; %main_body622; GFX7-NEXT: s_load_dwordx8 s[0:7], s[4:5], 0x9623; GFX7-NEXT: s_waitcnt lgkmcnt(0)624; GFX7-NEXT: v_mov_b32_e32 v0, s4625; GFX7-NEXT: v_mov_b32_e32 v1, s5626; GFX7-NEXT: buffer_atomic_fmax v0, v1, s[0:3], 4 offen glc slc627; GFX7-NEXT: s_mov_b32 s3, 0xf000628; GFX7-NEXT: s_mov_b32 s2, -1629; GFX7-NEXT: s_mov_b32 s0, s6630; GFX7-NEXT: s_mov_b32 s1, s7631; GFX7-NEXT: s_waitcnt vmcnt(0)632; GFX7-NEXT: buffer_store_dword v0, off, s[0:3], 0633; GFX7-NEXT: s_endpgm634;635; GFX10-LABEL: raw_buffer_atomic_max_rtn_f32_off4_slc:636; GFX10: ; %bb.0: ; %main_body637; GFX10-NEXT: s_load_dwordx8 s[8:15], s[4:5], 0x24638; GFX10-NEXT: s_waitcnt lgkmcnt(0)639; GFX10-NEXT: v_mov_b32_e32 v0, s12640; GFX10-NEXT: v_mov_b32_e32 v1, s13641; GFX10-NEXT: buffer_atomic_fmax v0, v1, s[8:11], 4 offen glc slc642; GFX10-NEXT: v_mov_b32_e32 v1, 0643; GFX10-NEXT: s_waitcnt vmcnt(0)644; GFX10-NEXT: global_store_dword v1, v0, s[14:15]645; GFX10-NEXT: s_endpgm646;647; GFX1030-LABEL: raw_buffer_atomic_max_rtn_f32_off4_slc:648; GFX1030: ; %bb.0: ; %main_body649; GFX1030-NEXT: s_load_dwordx8 s[0:7], s[4:5], 0x24650; GFX1030-NEXT: s_waitcnt lgkmcnt(0)651; GFX1030-NEXT: v_mov_b32_e32 v0, s4652; GFX1030-NEXT: v_mov_b32_e32 v1, s5653; GFX1030-NEXT: buffer_atomic_fmax v0, v1, s[0:3], 4 offen glc slc654; GFX1030-NEXT: v_mov_b32_e32 v1, 0655; GFX1030-NEXT: s_waitcnt vmcnt(0)656; GFX1030-NEXT: global_store_dword v1, v0, s[6:7]657; GFX1030-NEXT: s_endpgm658;659; GFX1100-LABEL: raw_buffer_atomic_max_rtn_f32_off4_slc:660; GFX1100: ; %bb.0: ; %main_body661; GFX1100-NEXT: s_load_b256 s[0:7], s[4:5], 0x24662; GFX1100-NEXT: s_waitcnt lgkmcnt(0)663; GFX1100-NEXT: v_dual_mov_b32 v0, s4 :: v_dual_mov_b32 v1, s5664; GFX1100-NEXT: buffer_atomic_max_f32 v0, v1, s[0:3], 4 offen glc slc665; GFX1100-NEXT: v_mov_b32_e32 v1, 0666; GFX1100-NEXT: s_waitcnt vmcnt(0)667; GFX1100-NEXT: global_store_b32 v1, v0, s[6:7]668; GFX1100-NEXT: s_endpgm669;670; GFX12-LABEL: raw_buffer_atomic_max_rtn_f32_off4_slc:671; GFX12: ; %bb.0: ; %main_body672; GFX12-NEXT: s_load_b256 s[0:7], s[4:5], 0x24673; GFX12-NEXT: s_wait_kmcnt 0x0674; GFX12-NEXT: v_dual_mov_b32 v0, s4 :: v_dual_mov_b32 v1, s5675; GFX12-NEXT: s_mov_b32 s4, 4676; GFX12-NEXT: buffer_atomic_max_num_f32 v0, v1, s[0:3], s4 offen th:TH_ATOMIC_NT_RETURN677; GFX12-NEXT: v_mov_b32_e32 v1, 0678; GFX12-NEXT: s_wait_loadcnt 0x0679; GFX12-NEXT: global_store_b32 v1, v0, s[6:7]680; GFX12-NEXT: s_endpgm681;682; G_SI-LABEL: raw_buffer_atomic_max_rtn_f32_off4_slc:683; G_SI: ; %bb.0: ; %main_body684; G_SI-NEXT: s_load_dwordx8 s[0:7], s[4:5], 0x9685; G_SI-NEXT: s_waitcnt lgkmcnt(0)686; G_SI-NEXT: v_mov_b32_e32 v0, s4687; G_SI-NEXT: v_mov_b32_e32 v1, s5688; G_SI-NEXT: buffer_atomic_fmax v0, v1, s[0:3], 4 offen glc slc689; G_SI-NEXT: s_mov_b32 s2, -1690; G_SI-NEXT: s_mov_b32 s3, 0xf000691; G_SI-NEXT: s_mov_b64 s[0:1], s[6:7]692; G_SI-NEXT: s_waitcnt vmcnt(0)693; G_SI-NEXT: buffer_store_dword v0, off, s[0:3], 0694; G_SI-NEXT: s_endpgm695;696; G_GFX7-LABEL: raw_buffer_atomic_max_rtn_f32_off4_slc:697; G_GFX7: ; %bb.0: ; %main_body698; G_GFX7-NEXT: s_load_dwordx8 s[0:7], s[4:5], 0x9699; G_GFX7-NEXT: s_waitcnt lgkmcnt(0)700; G_GFX7-NEXT: v_mov_b32_e32 v0, s4701; G_GFX7-NEXT: v_mov_b32_e32 v1, s5702; G_GFX7-NEXT: buffer_atomic_fmax v0, v1, s[0:3], 4 offen glc slc703; G_GFX7-NEXT: s_mov_b32 s2, -1704; G_GFX7-NEXT: s_mov_b32 s3, 0xf000705; G_GFX7-NEXT: s_mov_b64 s[0:1], s[6:7]706; G_GFX7-NEXT: s_waitcnt vmcnt(0)707; G_GFX7-NEXT: buffer_store_dword v0, off, s[0:3], 0708; G_GFX7-NEXT: s_endpgm709;710; G_GFX10-LABEL: raw_buffer_atomic_max_rtn_f32_off4_slc:711; G_GFX10: ; %bb.0: ; %main_body712; G_GFX10-NEXT: s_load_dwordx8 s[8:15], s[4:5], 0x24713; G_GFX10-NEXT: s_waitcnt lgkmcnt(0)714; G_GFX10-NEXT: v_mov_b32_e32 v0, s12715; G_GFX10-NEXT: v_mov_b32_e32 v1, s13716; G_GFX10-NEXT: buffer_atomic_fmax v0, v1, s[8:11], 4 offen glc slc717; G_GFX10-NEXT: v_mov_b32_e32 v1, 0718; G_GFX10-NEXT: s_waitcnt vmcnt(0)719; G_GFX10-NEXT: global_store_dword v1, v0, s[14:15]720; G_GFX10-NEXT: s_endpgm721;722; G_GFX1030-LABEL: raw_buffer_atomic_max_rtn_f32_off4_slc:723; G_GFX1030: ; %bb.0: ; %main_body724; G_GFX1030-NEXT: s_load_dwordx8 s[0:7], s[4:5], 0x24725; G_GFX1030-NEXT: s_waitcnt lgkmcnt(0)726; G_GFX1030-NEXT: v_mov_b32_e32 v0, s4727; G_GFX1030-NEXT: v_mov_b32_e32 v1, s5728; G_GFX1030-NEXT: buffer_atomic_fmax v0, v1, s[0:3], 4 offen glc slc729; G_GFX1030-NEXT: v_mov_b32_e32 v1, 0730; G_GFX1030-NEXT: s_waitcnt vmcnt(0)731; G_GFX1030-NEXT: global_store_dword v1, v0, s[6:7]732; G_GFX1030-NEXT: s_endpgm733;734; G_GFX1100-LABEL: raw_buffer_atomic_max_rtn_f32_off4_slc:735; G_GFX1100: ; %bb.0: ; %main_body736; G_GFX1100-NEXT: s_load_b256 s[0:7], s[4:5], 0x24737; G_GFX1100-NEXT: s_waitcnt lgkmcnt(0)738; G_GFX1100-NEXT: v_dual_mov_b32 v0, s4 :: v_dual_mov_b32 v1, s5739; G_GFX1100-NEXT: buffer_atomic_max_f32 v0, v1, s[0:3], 4 offen glc slc740; G_GFX1100-NEXT: v_mov_b32_e32 v1, 0741; G_GFX1100-NEXT: s_waitcnt vmcnt(0)742; G_GFX1100-NEXT: global_store_b32 v1, v0, s[6:7]743; G_GFX1100-NEXT: s_endpgm744main_body:745 %ret = call float @llvm.amdgcn.raw.buffer.atomic.fmax.f32(float %data, <4 x i32> %rsrc, i32 %vindex, i32 4, i32 2)746 store float %ret, ptr addrspace(1) %out, align 8747 ret void748}749