148968c47SPetar Avramovic; NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py 29e9907f1SFangrui Song; RUN: llc -global-isel -mtriple=amdgcn -mcpu=gfx90a -verify-machineinstrs -stop-after=instruction-select < %s | FileCheck -check-prefix=GFX90A_GFX940 %s 39e9907f1SFangrui Song; RUN: llc -global-isel -mtriple=amdgcn -mcpu=gfx940 -verify-machineinstrs -stop-after=instruction-select < %s | FileCheck -check-prefix=GFX90A_GFX940 %s 49e9907f1SFangrui Song; RUN: llc -global-isel -mtriple=amdgcn -mcpu=gfx1100 -verify-machineinstrs -stop-after=instruction-select < %s | FileCheck -check-prefix=GFX11 %s 59e9907f1SFangrui Song; RUN: llc -global-isel -mtriple=amdgcn -mcpu=gfx1200 -verify-machineinstrs -stop-after=instruction-select < %s | FileCheck -check-prefix=GFX12 %s 648968c47SPetar Avramovic 748968c47SPetar Avramovicdefine amdgpu_ps float @buffer_atomic_fadd_f32_offset_rtn(float %val, <4 x i32> inreg %rsrc, i32 inreg %soffset) { 848968c47SPetar Avramovic ; GFX90A_GFX940-LABEL: name: buffer_atomic_fadd_f32_offset_rtn 948968c47SPetar Avramovic ; GFX90A_GFX940: bb.1 (%ir-block.0): 1048968c47SPetar Avramovic ; GFX90A_GFX940-NEXT: liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $sgpr4, $vgpr0 1148968c47SPetar Avramovic ; GFX90A_GFX940-NEXT: {{ $}} 1248968c47SPetar Avramovic ; GFX90A_GFX940-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 1348968c47SPetar Avramovic ; GFX90A_GFX940-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr0 1448968c47SPetar Avramovic ; GFX90A_GFX940-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $sgpr1 1548968c47SPetar Avramovic ; GFX90A_GFX940-NEXT: [[COPY3:%[0-9]+]]:sreg_32 = COPY $sgpr2 1648968c47SPetar Avramovic ; GFX90A_GFX940-NEXT: [[COPY4:%[0-9]+]]:sreg_32 = COPY $sgpr3 1748968c47SPetar Avramovic ; GFX90A_GFX940-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY1]], %subreg.sub0, [[COPY2]], %subreg.sub1, [[COPY3]], %subreg.sub2, [[COPY4]], %subreg.sub3 1848968c47SPetar Avramovic ; GFX90A_GFX940-NEXT: [[COPY5:%[0-9]+]]:sreg_32 = COPY $sgpr4 19f0415f2aSKrzysztof Drewniak ; GFX90A_GFX940-NEXT: [[BUFFER_ATOMIC_ADD_F32_OFFSET_RTN:%[0-9]+]]:vgpr_32 = BUFFER_ATOMIC_ADD_F32_OFFSET_RTN [[COPY]], [[REG_SEQUENCE]], [[COPY5]], 0, 1, implicit $exec :: (volatile dereferenceable load store (s32), align 1, addrspace 8) 2048968c47SPetar Avramovic ; GFX90A_GFX940-NEXT: $vgpr0 = COPY [[BUFFER_ATOMIC_ADD_F32_OFFSET_RTN]] 2148968c47SPetar Avramovic ; GFX90A_GFX940-NEXT: SI_RETURN_TO_EPILOG implicit $vgpr0 22*e7900e69SMatt Arsenault ; 2348968c47SPetar Avramovic ; GFX11-LABEL: name: buffer_atomic_fadd_f32_offset_rtn 2448968c47SPetar Avramovic ; GFX11: bb.1 (%ir-block.0): 2548968c47SPetar Avramovic ; GFX11-NEXT: liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $sgpr4, $vgpr0 2648968c47SPetar Avramovic ; GFX11-NEXT: {{ $}} 2748968c47SPetar Avramovic ; GFX11-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 2848968c47SPetar Avramovic ; GFX11-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr0 2948968c47SPetar Avramovic ; GFX11-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $sgpr1 3048968c47SPetar Avramovic ; GFX11-NEXT: [[COPY3:%[0-9]+]]:sreg_32 = COPY $sgpr2 3148968c47SPetar Avramovic ; GFX11-NEXT: [[COPY4:%[0-9]+]]:sreg_32 = COPY $sgpr3 3248968c47SPetar Avramovic ; GFX11-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY1]], %subreg.sub0, [[COPY2]], %subreg.sub1, [[COPY3]], %subreg.sub2, [[COPY4]], %subreg.sub3 3348968c47SPetar Avramovic ; GFX11-NEXT: [[COPY5:%[0-9]+]]:sreg_32 = COPY $sgpr4 34f0415f2aSKrzysztof Drewniak ; GFX11-NEXT: [[BUFFER_ATOMIC_ADD_F32_OFFSET_RTN:%[0-9]+]]:vgpr_32 = BUFFER_ATOMIC_ADD_F32_OFFSET_RTN [[COPY]], [[REG_SEQUENCE]], [[COPY5]], 0, 1, implicit $exec :: (volatile dereferenceable load store (s32), align 1, addrspace 8) 3548968c47SPetar Avramovic ; GFX11-NEXT: $vgpr0 = COPY [[BUFFER_ATOMIC_ADD_F32_OFFSET_RTN]] 3648968c47SPetar Avramovic ; GFX11-NEXT: SI_RETURN_TO_EPILOG implicit $vgpr0 37*e7900e69SMatt Arsenault ; 385879162fSMirko Brkušanin ; GFX12-LABEL: name: buffer_atomic_fadd_f32_offset_rtn 395879162fSMirko Brkušanin ; GFX12: bb.1 (%ir-block.0): 405879162fSMirko Brkušanin ; GFX12-NEXT: liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $sgpr4, $vgpr0 415879162fSMirko Brkušanin ; GFX12-NEXT: {{ $}} 425879162fSMirko Brkušanin ; GFX12-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 435879162fSMirko Brkušanin ; GFX12-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr0 445879162fSMirko Brkušanin ; GFX12-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $sgpr1 455879162fSMirko Brkušanin ; GFX12-NEXT: [[COPY3:%[0-9]+]]:sreg_32 = COPY $sgpr2 465879162fSMirko Brkušanin ; GFX12-NEXT: [[COPY4:%[0-9]+]]:sreg_32 = COPY $sgpr3 475879162fSMirko Brkušanin ; GFX12-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY1]], %subreg.sub0, [[COPY2]], %subreg.sub1, [[COPY3]], %subreg.sub2, [[COPY4]], %subreg.sub3 485879162fSMirko Brkušanin ; GFX12-NEXT: [[COPY5:%[0-9]+]]:sreg_32 = COPY $sgpr4 495879162fSMirko Brkušanin ; GFX12-NEXT: [[BUFFER_ATOMIC_ADD_F32_VBUFFER_OFFSET_RTN:%[0-9]+]]:vgpr_32 = BUFFER_ATOMIC_ADD_F32_VBUFFER_OFFSET_RTN [[COPY]], [[REG_SEQUENCE]], [[COPY5]], 0, 1, implicit $exec :: (volatile dereferenceable load store (s32), align 1, addrspace 8) 505879162fSMirko Brkušanin ; GFX12-NEXT: $vgpr0 = COPY [[BUFFER_ATOMIC_ADD_F32_VBUFFER_OFFSET_RTN]] 515879162fSMirko Brkušanin ; GFX12-NEXT: SI_RETURN_TO_EPILOG implicit $vgpr0 5248968c47SPetar Avramovic %ret = call float @llvm.amdgcn.raw.buffer.atomic.fadd.f32(float %val, <4 x i32> %rsrc, i32 0, i32 %soffset, i32 0) 5348968c47SPetar Avramovic ret float %ret 5448968c47SPetar Avramovic} 5548968c47SPetar Avramovic 5648968c47SPetar Avramovicdefine amdgpu_ps float @buffer_atomic_fadd_f32_offen_rtn(float %val, <4 x i32> inreg %rsrc, i32 %voffset, i32 inreg %soffset) { 5748968c47SPetar Avramovic ; GFX90A_GFX940-LABEL: name: buffer_atomic_fadd_f32_offen_rtn 5848968c47SPetar Avramovic ; GFX90A_GFX940: bb.1 (%ir-block.0): 5948968c47SPetar Avramovic ; GFX90A_GFX940-NEXT: liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $sgpr4, $vgpr0, $vgpr1 6048968c47SPetar Avramovic ; GFX90A_GFX940-NEXT: {{ $}} 6148968c47SPetar Avramovic ; GFX90A_GFX940-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 6248968c47SPetar Avramovic ; GFX90A_GFX940-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr0 6348968c47SPetar Avramovic ; GFX90A_GFX940-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $sgpr1 6448968c47SPetar Avramovic ; GFX90A_GFX940-NEXT: [[COPY3:%[0-9]+]]:sreg_32 = COPY $sgpr2 6548968c47SPetar Avramovic ; GFX90A_GFX940-NEXT: [[COPY4:%[0-9]+]]:sreg_32 = COPY $sgpr3 6648968c47SPetar Avramovic ; GFX90A_GFX940-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY1]], %subreg.sub0, [[COPY2]], %subreg.sub1, [[COPY3]], %subreg.sub2, [[COPY4]], %subreg.sub3 6748968c47SPetar Avramovic ; GFX90A_GFX940-NEXT: [[COPY5:%[0-9]+]]:vgpr_32 = COPY $vgpr1 6848968c47SPetar Avramovic ; GFX90A_GFX940-NEXT: [[COPY6:%[0-9]+]]:sreg_32 = COPY $sgpr4 69f0415f2aSKrzysztof Drewniak ; GFX90A_GFX940-NEXT: [[BUFFER_ATOMIC_ADD_F32_OFFEN_RTN:%[0-9]+]]:vgpr_32 = BUFFER_ATOMIC_ADD_F32_OFFEN_RTN [[COPY]], [[COPY5]], [[REG_SEQUENCE]], [[COPY6]], 0, 1, implicit $exec :: (volatile dereferenceable load store (s32), align 1, addrspace 8) 7048968c47SPetar Avramovic ; GFX90A_GFX940-NEXT: $vgpr0 = COPY [[BUFFER_ATOMIC_ADD_F32_OFFEN_RTN]] 7148968c47SPetar Avramovic ; GFX90A_GFX940-NEXT: SI_RETURN_TO_EPILOG implicit $vgpr0 72*e7900e69SMatt Arsenault ; 7348968c47SPetar Avramovic ; GFX11-LABEL: name: buffer_atomic_fadd_f32_offen_rtn 7448968c47SPetar Avramovic ; GFX11: bb.1 (%ir-block.0): 7548968c47SPetar Avramovic ; GFX11-NEXT: liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $sgpr4, $vgpr0, $vgpr1 7648968c47SPetar Avramovic ; GFX11-NEXT: {{ $}} 7748968c47SPetar Avramovic ; GFX11-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 7848968c47SPetar Avramovic ; GFX11-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr0 7948968c47SPetar Avramovic ; GFX11-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $sgpr1 8048968c47SPetar Avramovic ; GFX11-NEXT: [[COPY3:%[0-9]+]]:sreg_32 = COPY $sgpr2 8148968c47SPetar Avramovic ; GFX11-NEXT: [[COPY4:%[0-9]+]]:sreg_32 = COPY $sgpr3 8248968c47SPetar Avramovic ; GFX11-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY1]], %subreg.sub0, [[COPY2]], %subreg.sub1, [[COPY3]], %subreg.sub2, [[COPY4]], %subreg.sub3 8348968c47SPetar Avramovic ; GFX11-NEXT: [[COPY5:%[0-9]+]]:vgpr_32 = COPY $vgpr1 8448968c47SPetar Avramovic ; GFX11-NEXT: [[COPY6:%[0-9]+]]:sreg_32 = COPY $sgpr4 85f0415f2aSKrzysztof Drewniak ; GFX11-NEXT: [[BUFFER_ATOMIC_ADD_F32_OFFEN_RTN:%[0-9]+]]:vgpr_32 = BUFFER_ATOMIC_ADD_F32_OFFEN_RTN [[COPY]], [[COPY5]], [[REG_SEQUENCE]], [[COPY6]], 0, 1, implicit $exec :: (volatile dereferenceable load store (s32), align 1, addrspace 8) 8648968c47SPetar Avramovic ; GFX11-NEXT: $vgpr0 = COPY [[BUFFER_ATOMIC_ADD_F32_OFFEN_RTN]] 8748968c47SPetar Avramovic ; GFX11-NEXT: SI_RETURN_TO_EPILOG implicit $vgpr0 88*e7900e69SMatt Arsenault ; 895879162fSMirko Brkušanin ; GFX12-LABEL: name: buffer_atomic_fadd_f32_offen_rtn 905879162fSMirko Brkušanin ; GFX12: bb.1 (%ir-block.0): 915879162fSMirko Brkušanin ; GFX12-NEXT: liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $sgpr4, $vgpr0, $vgpr1 925879162fSMirko Brkušanin ; GFX12-NEXT: {{ $}} 935879162fSMirko Brkušanin ; GFX12-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 945879162fSMirko Brkušanin ; GFX12-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr0 955879162fSMirko Brkušanin ; GFX12-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $sgpr1 965879162fSMirko Brkušanin ; GFX12-NEXT: [[COPY3:%[0-9]+]]:sreg_32 = COPY $sgpr2 975879162fSMirko Brkušanin ; GFX12-NEXT: [[COPY4:%[0-9]+]]:sreg_32 = COPY $sgpr3 985879162fSMirko Brkušanin ; GFX12-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY1]], %subreg.sub0, [[COPY2]], %subreg.sub1, [[COPY3]], %subreg.sub2, [[COPY4]], %subreg.sub3 995879162fSMirko Brkušanin ; GFX12-NEXT: [[COPY5:%[0-9]+]]:vgpr_32 = COPY $vgpr1 1005879162fSMirko Brkušanin ; GFX12-NEXT: [[COPY6:%[0-9]+]]:sreg_32 = COPY $sgpr4 1015879162fSMirko Brkušanin ; GFX12-NEXT: [[BUFFER_ATOMIC_ADD_F32_VBUFFER_OFFEN_RTN:%[0-9]+]]:vgpr_32 = BUFFER_ATOMIC_ADD_F32_VBUFFER_OFFEN_RTN [[COPY]], [[COPY5]], [[REG_SEQUENCE]], [[COPY6]], 0, 1, implicit $exec :: (volatile dereferenceable load store (s32), align 1, addrspace 8) 1025879162fSMirko Brkušanin ; GFX12-NEXT: $vgpr0 = COPY [[BUFFER_ATOMIC_ADD_F32_VBUFFER_OFFEN_RTN]] 1035879162fSMirko Brkušanin ; GFX12-NEXT: SI_RETURN_TO_EPILOG implicit $vgpr0 10448968c47SPetar Avramovic %ret = call float @llvm.amdgcn.raw.buffer.atomic.fadd.f32(float %val, <4 x i32> %rsrc, i32 %voffset, i32 %soffset, i32 0) 10548968c47SPetar Avramovic ret float %ret 10648968c47SPetar Avramovic} 10748968c47SPetar Avramovic 10848968c47SPetar Avramovicdefine amdgpu_ps float @buffer_atomic_fadd_f32_idxen_rtn(float %val, <4 x i32> inreg %rsrc, i32 %vindex, i32 inreg %soffset) { 10948968c47SPetar Avramovic ; GFX90A_GFX940-LABEL: name: buffer_atomic_fadd_f32_idxen_rtn 11048968c47SPetar Avramovic ; GFX90A_GFX940: bb.1 (%ir-block.0): 11148968c47SPetar Avramovic ; GFX90A_GFX940-NEXT: liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $sgpr4, $vgpr0, $vgpr1 11248968c47SPetar Avramovic ; GFX90A_GFX940-NEXT: {{ $}} 11348968c47SPetar Avramovic ; GFX90A_GFX940-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 11448968c47SPetar Avramovic ; GFX90A_GFX940-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr0 11548968c47SPetar Avramovic ; GFX90A_GFX940-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $sgpr1 11648968c47SPetar Avramovic ; GFX90A_GFX940-NEXT: [[COPY3:%[0-9]+]]:sreg_32 = COPY $sgpr2 11748968c47SPetar Avramovic ; GFX90A_GFX940-NEXT: [[COPY4:%[0-9]+]]:sreg_32 = COPY $sgpr3 11848968c47SPetar Avramovic ; GFX90A_GFX940-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY1]], %subreg.sub0, [[COPY2]], %subreg.sub1, [[COPY3]], %subreg.sub2, [[COPY4]], %subreg.sub3 11948968c47SPetar Avramovic ; GFX90A_GFX940-NEXT: [[COPY5:%[0-9]+]]:vgpr_32 = COPY $vgpr1 12048968c47SPetar Avramovic ; GFX90A_GFX940-NEXT: [[COPY6:%[0-9]+]]:sreg_32 = COPY $sgpr4 121f0415f2aSKrzysztof Drewniak ; GFX90A_GFX940-NEXT: [[BUFFER_ATOMIC_ADD_F32_IDXEN_RTN:%[0-9]+]]:vgpr_32 = BUFFER_ATOMIC_ADD_F32_IDXEN_RTN [[COPY]], [[COPY5]], [[REG_SEQUENCE]], [[COPY6]], 0, 1, implicit $exec :: (volatile dereferenceable load store (s32), align 1, addrspace 8) 12248968c47SPetar Avramovic ; GFX90A_GFX940-NEXT: $vgpr0 = COPY [[BUFFER_ATOMIC_ADD_F32_IDXEN_RTN]] 12348968c47SPetar Avramovic ; GFX90A_GFX940-NEXT: SI_RETURN_TO_EPILOG implicit $vgpr0 124*e7900e69SMatt Arsenault ; 12548968c47SPetar Avramovic ; GFX11-LABEL: name: buffer_atomic_fadd_f32_idxen_rtn 12648968c47SPetar Avramovic ; GFX11: bb.1 (%ir-block.0): 12748968c47SPetar Avramovic ; GFX11-NEXT: liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $sgpr4, $vgpr0, $vgpr1 12848968c47SPetar Avramovic ; GFX11-NEXT: {{ $}} 12948968c47SPetar Avramovic ; GFX11-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 13048968c47SPetar Avramovic ; GFX11-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr0 13148968c47SPetar Avramovic ; GFX11-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $sgpr1 13248968c47SPetar Avramovic ; GFX11-NEXT: [[COPY3:%[0-9]+]]:sreg_32 = COPY $sgpr2 13348968c47SPetar Avramovic ; GFX11-NEXT: [[COPY4:%[0-9]+]]:sreg_32 = COPY $sgpr3 13448968c47SPetar Avramovic ; GFX11-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY1]], %subreg.sub0, [[COPY2]], %subreg.sub1, [[COPY3]], %subreg.sub2, [[COPY4]], %subreg.sub3 13548968c47SPetar Avramovic ; GFX11-NEXT: [[COPY5:%[0-9]+]]:vgpr_32 = COPY $vgpr1 13648968c47SPetar Avramovic ; GFX11-NEXT: [[COPY6:%[0-9]+]]:sreg_32 = COPY $sgpr4 137f0415f2aSKrzysztof Drewniak ; GFX11-NEXT: [[BUFFER_ATOMIC_ADD_F32_IDXEN_RTN:%[0-9]+]]:vgpr_32 = BUFFER_ATOMIC_ADD_F32_IDXEN_RTN [[COPY]], [[COPY5]], [[REG_SEQUENCE]], [[COPY6]], 0, 1, implicit $exec :: (volatile dereferenceable load store (s32), align 1, addrspace 8) 13848968c47SPetar Avramovic ; GFX11-NEXT: $vgpr0 = COPY [[BUFFER_ATOMIC_ADD_F32_IDXEN_RTN]] 13948968c47SPetar Avramovic ; GFX11-NEXT: SI_RETURN_TO_EPILOG implicit $vgpr0 140*e7900e69SMatt Arsenault ; 1415879162fSMirko Brkušanin ; GFX12-LABEL: name: buffer_atomic_fadd_f32_idxen_rtn 1425879162fSMirko Brkušanin ; GFX12: bb.1 (%ir-block.0): 1435879162fSMirko Brkušanin ; GFX12-NEXT: liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $sgpr4, $vgpr0, $vgpr1 1445879162fSMirko Brkušanin ; GFX12-NEXT: {{ $}} 1455879162fSMirko Brkušanin ; GFX12-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 1465879162fSMirko Brkušanin ; GFX12-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr0 1475879162fSMirko Brkušanin ; GFX12-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $sgpr1 1485879162fSMirko Brkušanin ; GFX12-NEXT: [[COPY3:%[0-9]+]]:sreg_32 = COPY $sgpr2 1495879162fSMirko Brkušanin ; GFX12-NEXT: [[COPY4:%[0-9]+]]:sreg_32 = COPY $sgpr3 1505879162fSMirko Brkušanin ; GFX12-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY1]], %subreg.sub0, [[COPY2]], %subreg.sub1, [[COPY3]], %subreg.sub2, [[COPY4]], %subreg.sub3 1515879162fSMirko Brkušanin ; GFX12-NEXT: [[COPY5:%[0-9]+]]:vgpr_32 = COPY $vgpr1 1525879162fSMirko Brkušanin ; GFX12-NEXT: [[COPY6:%[0-9]+]]:sreg_32 = COPY $sgpr4 1535879162fSMirko Brkušanin ; GFX12-NEXT: [[BUFFER_ATOMIC_ADD_F32_VBUFFER_IDXEN_RTN:%[0-9]+]]:vgpr_32 = BUFFER_ATOMIC_ADD_F32_VBUFFER_IDXEN_RTN [[COPY]], [[COPY5]], [[REG_SEQUENCE]], [[COPY6]], 0, 1, implicit $exec :: (volatile dereferenceable load store (s32), align 1, addrspace 8) 1545879162fSMirko Brkušanin ; GFX12-NEXT: $vgpr0 = COPY [[BUFFER_ATOMIC_ADD_F32_VBUFFER_IDXEN_RTN]] 1555879162fSMirko Brkušanin ; GFX12-NEXT: SI_RETURN_TO_EPILOG implicit $vgpr0 15648968c47SPetar Avramovic %ret = call float @llvm.amdgcn.struct.buffer.atomic.fadd.f32(float %val, <4 x i32> %rsrc, i32 %vindex, i32 0, i32 %soffset, i32 0) 15748968c47SPetar Avramovic ret float %ret 15848968c47SPetar Avramovic} 15948968c47SPetar Avramovic 16048968c47SPetar Avramovicdefine amdgpu_ps float @buffer_atomic_fadd_f32_bothen_rtn(float %val, <4 x i32> inreg %rsrc, i32 %vindex, i32 %voffset, i32 inreg %soffset) { 16148968c47SPetar Avramovic ; GFX90A_GFX940-LABEL: name: buffer_atomic_fadd_f32_bothen_rtn 16248968c47SPetar Avramovic ; GFX90A_GFX940: bb.1 (%ir-block.0): 16348968c47SPetar Avramovic ; GFX90A_GFX940-NEXT: liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $sgpr4, $vgpr0, $vgpr1, $vgpr2 16448968c47SPetar Avramovic ; GFX90A_GFX940-NEXT: {{ $}} 16548968c47SPetar Avramovic ; GFX90A_GFX940-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 16648968c47SPetar Avramovic ; GFX90A_GFX940-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr0 16748968c47SPetar Avramovic ; GFX90A_GFX940-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $sgpr1 16848968c47SPetar Avramovic ; GFX90A_GFX940-NEXT: [[COPY3:%[0-9]+]]:sreg_32 = COPY $sgpr2 16948968c47SPetar Avramovic ; GFX90A_GFX940-NEXT: [[COPY4:%[0-9]+]]:sreg_32 = COPY $sgpr3 17048968c47SPetar Avramovic ; GFX90A_GFX940-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY1]], %subreg.sub0, [[COPY2]], %subreg.sub1, [[COPY3]], %subreg.sub2, [[COPY4]], %subreg.sub3 17148968c47SPetar Avramovic ; GFX90A_GFX940-NEXT: [[COPY5:%[0-9]+]]:vgpr_32 = COPY $vgpr1 17248968c47SPetar Avramovic ; GFX90A_GFX940-NEXT: [[COPY6:%[0-9]+]]:vgpr_32 = COPY $vgpr2 17348968c47SPetar Avramovic ; GFX90A_GFX940-NEXT: [[COPY7:%[0-9]+]]:sreg_32 = COPY $sgpr4 17448968c47SPetar Avramovic ; GFX90A_GFX940-NEXT: [[REG_SEQUENCE1:%[0-9]+]]:vreg_64_align2 = REG_SEQUENCE [[COPY5]], %subreg.sub0, [[COPY6]], %subreg.sub1 175f0415f2aSKrzysztof Drewniak ; GFX90A_GFX940-NEXT: [[BUFFER_ATOMIC_ADD_F32_BOTHEN_RTN:%[0-9]+]]:vgpr_32 = BUFFER_ATOMIC_ADD_F32_BOTHEN_RTN [[COPY]], [[REG_SEQUENCE1]], [[REG_SEQUENCE]], [[COPY7]], 0, 1, implicit $exec :: (volatile dereferenceable load store (s32), align 1, addrspace 8) 17648968c47SPetar Avramovic ; GFX90A_GFX940-NEXT: $vgpr0 = COPY [[BUFFER_ATOMIC_ADD_F32_BOTHEN_RTN]] 17748968c47SPetar Avramovic ; GFX90A_GFX940-NEXT: SI_RETURN_TO_EPILOG implicit $vgpr0 178*e7900e69SMatt Arsenault ; 17948968c47SPetar Avramovic ; GFX11-LABEL: name: buffer_atomic_fadd_f32_bothen_rtn 18048968c47SPetar Avramovic ; GFX11: bb.1 (%ir-block.0): 18148968c47SPetar Avramovic ; GFX11-NEXT: liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $sgpr4, $vgpr0, $vgpr1, $vgpr2 18248968c47SPetar Avramovic ; GFX11-NEXT: {{ $}} 18348968c47SPetar Avramovic ; GFX11-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 18448968c47SPetar Avramovic ; GFX11-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr0 18548968c47SPetar Avramovic ; GFX11-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $sgpr1 18648968c47SPetar Avramovic ; GFX11-NEXT: [[COPY3:%[0-9]+]]:sreg_32 = COPY $sgpr2 18748968c47SPetar Avramovic ; GFX11-NEXT: [[COPY4:%[0-9]+]]:sreg_32 = COPY $sgpr3 18848968c47SPetar Avramovic ; GFX11-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY1]], %subreg.sub0, [[COPY2]], %subreg.sub1, [[COPY3]], %subreg.sub2, [[COPY4]], %subreg.sub3 18948968c47SPetar Avramovic ; GFX11-NEXT: [[COPY5:%[0-9]+]]:vgpr_32 = COPY $vgpr1 19048968c47SPetar Avramovic ; GFX11-NEXT: [[COPY6:%[0-9]+]]:vgpr_32 = COPY $vgpr2 19148968c47SPetar Avramovic ; GFX11-NEXT: [[COPY7:%[0-9]+]]:sreg_32 = COPY $sgpr4 19248968c47SPetar Avramovic ; GFX11-NEXT: [[REG_SEQUENCE1:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[COPY5]], %subreg.sub0, [[COPY6]], %subreg.sub1 193f0415f2aSKrzysztof Drewniak ; GFX11-NEXT: [[BUFFER_ATOMIC_ADD_F32_BOTHEN_RTN:%[0-9]+]]:vgpr_32 = BUFFER_ATOMIC_ADD_F32_BOTHEN_RTN [[COPY]], [[REG_SEQUENCE1]], [[REG_SEQUENCE]], [[COPY7]], 0, 1, implicit $exec :: (volatile dereferenceable load store (s32), align 1, addrspace 8) 19448968c47SPetar Avramovic ; GFX11-NEXT: $vgpr0 = COPY [[BUFFER_ATOMIC_ADD_F32_BOTHEN_RTN]] 19548968c47SPetar Avramovic ; GFX11-NEXT: SI_RETURN_TO_EPILOG implicit $vgpr0 196*e7900e69SMatt Arsenault ; 1975879162fSMirko Brkušanin ; GFX12-LABEL: name: buffer_atomic_fadd_f32_bothen_rtn 1985879162fSMirko Brkušanin ; GFX12: bb.1 (%ir-block.0): 1995879162fSMirko Brkušanin ; GFX12-NEXT: liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $sgpr4, $vgpr0, $vgpr1, $vgpr2 2005879162fSMirko Brkušanin ; GFX12-NEXT: {{ $}} 2015879162fSMirko Brkušanin ; GFX12-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 2025879162fSMirko Brkušanin ; GFX12-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr0 2035879162fSMirko Brkušanin ; GFX12-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $sgpr1 2045879162fSMirko Brkušanin ; GFX12-NEXT: [[COPY3:%[0-9]+]]:sreg_32 = COPY $sgpr2 2055879162fSMirko Brkušanin ; GFX12-NEXT: [[COPY4:%[0-9]+]]:sreg_32 = COPY $sgpr3 2065879162fSMirko Brkušanin ; GFX12-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY1]], %subreg.sub0, [[COPY2]], %subreg.sub1, [[COPY3]], %subreg.sub2, [[COPY4]], %subreg.sub3 2075879162fSMirko Brkušanin ; GFX12-NEXT: [[COPY5:%[0-9]+]]:vgpr_32 = COPY $vgpr1 2085879162fSMirko Brkušanin ; GFX12-NEXT: [[COPY6:%[0-9]+]]:vgpr_32 = COPY $vgpr2 2095879162fSMirko Brkušanin ; GFX12-NEXT: [[COPY7:%[0-9]+]]:sreg_32 = COPY $sgpr4 2105879162fSMirko Brkušanin ; GFX12-NEXT: [[REG_SEQUENCE1:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[COPY5]], %subreg.sub0, [[COPY6]], %subreg.sub1 2115879162fSMirko Brkušanin ; GFX12-NEXT: [[BUFFER_ATOMIC_ADD_F32_VBUFFER_BOTHEN_RTN:%[0-9]+]]:vgpr_32 = BUFFER_ATOMIC_ADD_F32_VBUFFER_BOTHEN_RTN [[COPY]], [[REG_SEQUENCE1]], [[REG_SEQUENCE]], [[COPY7]], 0, 1, implicit $exec :: (volatile dereferenceable load store (s32), align 1, addrspace 8) 2125879162fSMirko Brkušanin ; GFX12-NEXT: $vgpr0 = COPY [[BUFFER_ATOMIC_ADD_F32_VBUFFER_BOTHEN_RTN]] 2135879162fSMirko Brkušanin ; GFX12-NEXT: SI_RETURN_TO_EPILOG implicit $vgpr0 21448968c47SPetar Avramovic %ret = call float @llvm.amdgcn.struct.buffer.atomic.fadd.f32(float %val, <4 x i32> %rsrc, i32 %vindex, i32 %voffset, i32 %soffset, i32 0) 21548968c47SPetar Avramovic ret float %ret 21648968c47SPetar Avramovic} 21748968c47SPetar Avramovic 218faa2c678SKrzysztof Drewniakdefine amdgpu_ps float @buffer_ptr_atomic_fadd_f32_offset_rtn(float %val, ptr addrspace(8) inreg %rsrc, i32 inreg %soffset) { 219faa2c678SKrzysztof Drewniak ; GFX90A_GFX940-LABEL: name: buffer_ptr_atomic_fadd_f32_offset_rtn 220faa2c678SKrzysztof Drewniak ; GFX90A_GFX940: bb.1 (%ir-block.0): 221faa2c678SKrzysztof Drewniak ; GFX90A_GFX940-NEXT: liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $sgpr4, $vgpr0 222faa2c678SKrzysztof Drewniak ; GFX90A_GFX940-NEXT: {{ $}} 223faa2c678SKrzysztof Drewniak ; GFX90A_GFX940-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 224faa2c678SKrzysztof Drewniak ; GFX90A_GFX940-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr0 225faa2c678SKrzysztof Drewniak ; GFX90A_GFX940-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $sgpr1 226faa2c678SKrzysztof Drewniak ; GFX90A_GFX940-NEXT: [[COPY3:%[0-9]+]]:sreg_32 = COPY $sgpr2 227faa2c678SKrzysztof Drewniak ; GFX90A_GFX940-NEXT: [[COPY4:%[0-9]+]]:sreg_32 = COPY $sgpr3 228faa2c678SKrzysztof Drewniak ; GFX90A_GFX940-NEXT: [[COPY5:%[0-9]+]]:sreg_32 = COPY $sgpr4 229faa2c678SKrzysztof Drewniak ; GFX90A_GFX940-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY1]], %subreg.sub0, [[COPY2]], %subreg.sub1, [[COPY3]], %subreg.sub2, [[COPY4]], %subreg.sub3 230ab379378SKrzysztof Drewniak ; GFX90A_GFX940-NEXT: [[BUFFER_ATOMIC_ADD_F32_OFFSET_RTN:%[0-9]+]]:vgpr_32 = BUFFER_ATOMIC_ADD_F32_OFFSET_RTN [[COPY]], [[REG_SEQUENCE]], [[COPY5]], 0, 1, implicit $exec :: (volatile dereferenceable load store (s32) on %ir.rsrc, align 1, addrspace 8) 231faa2c678SKrzysztof Drewniak ; GFX90A_GFX940-NEXT: $vgpr0 = COPY [[BUFFER_ATOMIC_ADD_F32_OFFSET_RTN]] 232faa2c678SKrzysztof Drewniak ; GFX90A_GFX940-NEXT: SI_RETURN_TO_EPILOG implicit $vgpr0 233*e7900e69SMatt Arsenault ; 234faa2c678SKrzysztof Drewniak ; GFX11-LABEL: name: buffer_ptr_atomic_fadd_f32_offset_rtn 235faa2c678SKrzysztof Drewniak ; GFX11: bb.1 (%ir-block.0): 236faa2c678SKrzysztof Drewniak ; GFX11-NEXT: liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $sgpr4, $vgpr0 237faa2c678SKrzysztof Drewniak ; GFX11-NEXT: {{ $}} 238faa2c678SKrzysztof Drewniak ; GFX11-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 239faa2c678SKrzysztof Drewniak ; GFX11-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr0 240faa2c678SKrzysztof Drewniak ; GFX11-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $sgpr1 241faa2c678SKrzysztof Drewniak ; GFX11-NEXT: [[COPY3:%[0-9]+]]:sreg_32 = COPY $sgpr2 242faa2c678SKrzysztof Drewniak ; GFX11-NEXT: [[COPY4:%[0-9]+]]:sreg_32 = COPY $sgpr3 243faa2c678SKrzysztof Drewniak ; GFX11-NEXT: [[COPY5:%[0-9]+]]:sreg_32 = COPY $sgpr4 244faa2c678SKrzysztof Drewniak ; GFX11-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY1]], %subreg.sub0, [[COPY2]], %subreg.sub1, [[COPY3]], %subreg.sub2, [[COPY4]], %subreg.sub3 245ab379378SKrzysztof Drewniak ; GFX11-NEXT: [[BUFFER_ATOMIC_ADD_F32_OFFSET_RTN:%[0-9]+]]:vgpr_32 = BUFFER_ATOMIC_ADD_F32_OFFSET_RTN [[COPY]], [[REG_SEQUENCE]], [[COPY5]], 0, 1, implicit $exec :: (volatile dereferenceable load store (s32) on %ir.rsrc, align 1, addrspace 8) 246faa2c678SKrzysztof Drewniak ; GFX11-NEXT: $vgpr0 = COPY [[BUFFER_ATOMIC_ADD_F32_OFFSET_RTN]] 247faa2c678SKrzysztof Drewniak ; GFX11-NEXT: SI_RETURN_TO_EPILOG implicit $vgpr0 248*e7900e69SMatt Arsenault ; 249*e7900e69SMatt Arsenault ; GFX12-LABEL: name: buffer_ptr_atomic_fadd_f32_offset_rtn 250*e7900e69SMatt Arsenault ; GFX12: bb.1 (%ir-block.0): 251*e7900e69SMatt Arsenault ; GFX12-NEXT: liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $sgpr4, $vgpr0 252*e7900e69SMatt Arsenault ; GFX12-NEXT: {{ $}} 253*e7900e69SMatt Arsenault ; GFX12-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 254*e7900e69SMatt Arsenault ; GFX12-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr0 255*e7900e69SMatt Arsenault ; GFX12-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $sgpr1 256*e7900e69SMatt Arsenault ; GFX12-NEXT: [[COPY3:%[0-9]+]]:sreg_32 = COPY $sgpr2 257*e7900e69SMatt Arsenault ; GFX12-NEXT: [[COPY4:%[0-9]+]]:sreg_32 = COPY $sgpr3 258*e7900e69SMatt Arsenault ; GFX12-NEXT: [[COPY5:%[0-9]+]]:sreg_32 = COPY $sgpr4 259*e7900e69SMatt Arsenault ; GFX12-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY1]], %subreg.sub0, [[COPY2]], %subreg.sub1, [[COPY3]], %subreg.sub2, [[COPY4]], %subreg.sub3 260*e7900e69SMatt Arsenault ; GFX12-NEXT: [[BUFFER_ATOMIC_ADD_F32_VBUFFER_OFFSET_RTN:%[0-9]+]]:vgpr_32 = BUFFER_ATOMIC_ADD_F32_VBUFFER_OFFSET_RTN [[COPY]], [[REG_SEQUENCE]], [[COPY5]], 0, 1, implicit $exec :: (volatile dereferenceable load store (s32) on %ir.rsrc, align 1, addrspace 8) 261*e7900e69SMatt Arsenault ; GFX12-NEXT: $vgpr0 = COPY [[BUFFER_ATOMIC_ADD_F32_VBUFFER_OFFSET_RTN]] 262*e7900e69SMatt Arsenault ; GFX12-NEXT: SI_RETURN_TO_EPILOG implicit $vgpr0 263faa2c678SKrzysztof Drewniak %ret = call float @llvm.amdgcn.raw.ptr.buffer.atomic.fadd.f32(float %val, ptr addrspace(8) %rsrc, i32 0, i32 %soffset, i32 0) 264faa2c678SKrzysztof Drewniak ret float %ret 265faa2c678SKrzysztof Drewniak} 266faa2c678SKrzysztof Drewniak 267faa2c678SKrzysztof Drewniakdefine amdgpu_ps float @buffer_ptr_atomic_fadd_f32_offen_rtn(float %val, ptr addrspace(8) inreg %rsrc, i32 %voffset, i32 inreg %soffset) { 268faa2c678SKrzysztof Drewniak ; GFX90A_GFX940-LABEL: name: buffer_ptr_atomic_fadd_f32_offen_rtn 269faa2c678SKrzysztof Drewniak ; GFX90A_GFX940: bb.1 (%ir-block.0): 270faa2c678SKrzysztof Drewniak ; GFX90A_GFX940-NEXT: liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $sgpr4, $vgpr0, $vgpr1 271faa2c678SKrzysztof Drewniak ; GFX90A_GFX940-NEXT: {{ $}} 272faa2c678SKrzysztof Drewniak ; GFX90A_GFX940-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 273faa2c678SKrzysztof Drewniak ; GFX90A_GFX940-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr0 274faa2c678SKrzysztof Drewniak ; GFX90A_GFX940-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $sgpr1 275faa2c678SKrzysztof Drewniak ; GFX90A_GFX940-NEXT: [[COPY3:%[0-9]+]]:sreg_32 = COPY $sgpr2 276faa2c678SKrzysztof Drewniak ; GFX90A_GFX940-NEXT: [[COPY4:%[0-9]+]]:sreg_32 = COPY $sgpr3 277faa2c678SKrzysztof Drewniak ; GFX90A_GFX940-NEXT: [[COPY5:%[0-9]+]]:vgpr_32 = COPY $vgpr1 278faa2c678SKrzysztof Drewniak ; GFX90A_GFX940-NEXT: [[COPY6:%[0-9]+]]:sreg_32 = COPY $sgpr4 279faa2c678SKrzysztof Drewniak ; GFX90A_GFX940-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY1]], %subreg.sub0, [[COPY2]], %subreg.sub1, [[COPY3]], %subreg.sub2, [[COPY4]], %subreg.sub3 280ab379378SKrzysztof Drewniak ; GFX90A_GFX940-NEXT: [[BUFFER_ATOMIC_ADD_F32_OFFEN_RTN:%[0-9]+]]:vgpr_32 = BUFFER_ATOMIC_ADD_F32_OFFEN_RTN [[COPY]], [[COPY5]], [[REG_SEQUENCE]], [[COPY6]], 0, 1, implicit $exec :: (volatile dereferenceable load store (s32) on %ir.rsrc, align 1, addrspace 8) 281faa2c678SKrzysztof Drewniak ; GFX90A_GFX940-NEXT: $vgpr0 = COPY [[BUFFER_ATOMIC_ADD_F32_OFFEN_RTN]] 282faa2c678SKrzysztof Drewniak ; GFX90A_GFX940-NEXT: SI_RETURN_TO_EPILOG implicit $vgpr0 283*e7900e69SMatt Arsenault ; 284faa2c678SKrzysztof Drewniak ; GFX11-LABEL: name: buffer_ptr_atomic_fadd_f32_offen_rtn 285faa2c678SKrzysztof Drewniak ; GFX11: bb.1 (%ir-block.0): 286faa2c678SKrzysztof Drewniak ; GFX11-NEXT: liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $sgpr4, $vgpr0, $vgpr1 287faa2c678SKrzysztof Drewniak ; GFX11-NEXT: {{ $}} 288faa2c678SKrzysztof Drewniak ; GFX11-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 289faa2c678SKrzysztof Drewniak ; GFX11-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr0 290faa2c678SKrzysztof Drewniak ; GFX11-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $sgpr1 291faa2c678SKrzysztof Drewniak ; GFX11-NEXT: [[COPY3:%[0-9]+]]:sreg_32 = COPY $sgpr2 292faa2c678SKrzysztof Drewniak ; GFX11-NEXT: [[COPY4:%[0-9]+]]:sreg_32 = COPY $sgpr3 293faa2c678SKrzysztof Drewniak ; GFX11-NEXT: [[COPY5:%[0-9]+]]:vgpr_32 = COPY $vgpr1 294faa2c678SKrzysztof Drewniak ; GFX11-NEXT: [[COPY6:%[0-9]+]]:sreg_32 = COPY $sgpr4 295faa2c678SKrzysztof Drewniak ; GFX11-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY1]], %subreg.sub0, [[COPY2]], %subreg.sub1, [[COPY3]], %subreg.sub2, [[COPY4]], %subreg.sub3 296ab379378SKrzysztof Drewniak ; GFX11-NEXT: [[BUFFER_ATOMIC_ADD_F32_OFFEN_RTN:%[0-9]+]]:vgpr_32 = BUFFER_ATOMIC_ADD_F32_OFFEN_RTN [[COPY]], [[COPY5]], [[REG_SEQUENCE]], [[COPY6]], 0, 1, implicit $exec :: (volatile dereferenceable load store (s32) on %ir.rsrc, align 1, addrspace 8) 297faa2c678SKrzysztof Drewniak ; GFX11-NEXT: $vgpr0 = COPY [[BUFFER_ATOMIC_ADD_F32_OFFEN_RTN]] 298faa2c678SKrzysztof Drewniak ; GFX11-NEXT: SI_RETURN_TO_EPILOG implicit $vgpr0 299*e7900e69SMatt Arsenault ; 300*e7900e69SMatt Arsenault ; GFX12-LABEL: name: buffer_ptr_atomic_fadd_f32_offen_rtn 301*e7900e69SMatt Arsenault ; GFX12: bb.1 (%ir-block.0): 302*e7900e69SMatt Arsenault ; GFX12-NEXT: liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $sgpr4, $vgpr0, $vgpr1 303*e7900e69SMatt Arsenault ; GFX12-NEXT: {{ $}} 304*e7900e69SMatt Arsenault ; GFX12-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 305*e7900e69SMatt Arsenault ; GFX12-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr0 306*e7900e69SMatt Arsenault ; GFX12-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $sgpr1 307*e7900e69SMatt Arsenault ; GFX12-NEXT: [[COPY3:%[0-9]+]]:sreg_32 = COPY $sgpr2 308*e7900e69SMatt Arsenault ; GFX12-NEXT: [[COPY4:%[0-9]+]]:sreg_32 = COPY $sgpr3 309*e7900e69SMatt Arsenault ; GFX12-NEXT: [[COPY5:%[0-9]+]]:vgpr_32 = COPY $vgpr1 310*e7900e69SMatt Arsenault ; GFX12-NEXT: [[COPY6:%[0-9]+]]:sreg_32 = COPY $sgpr4 311*e7900e69SMatt Arsenault ; GFX12-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY1]], %subreg.sub0, [[COPY2]], %subreg.sub1, [[COPY3]], %subreg.sub2, [[COPY4]], %subreg.sub3 312*e7900e69SMatt Arsenault ; GFX12-NEXT: [[BUFFER_ATOMIC_ADD_F32_VBUFFER_OFFEN_RTN:%[0-9]+]]:vgpr_32 = BUFFER_ATOMIC_ADD_F32_VBUFFER_OFFEN_RTN [[COPY]], [[COPY5]], [[REG_SEQUENCE]], [[COPY6]], 0, 1, implicit $exec :: (volatile dereferenceable load store (s32) on %ir.rsrc, align 1, addrspace 8) 313*e7900e69SMatt Arsenault ; GFX12-NEXT: $vgpr0 = COPY [[BUFFER_ATOMIC_ADD_F32_VBUFFER_OFFEN_RTN]] 314*e7900e69SMatt Arsenault ; GFX12-NEXT: SI_RETURN_TO_EPILOG implicit $vgpr0 315faa2c678SKrzysztof Drewniak %ret = call float @llvm.amdgcn.raw.ptr.buffer.atomic.fadd.f32(float %val, ptr addrspace(8) %rsrc, i32 %voffset, i32 %soffset, i32 0) 316faa2c678SKrzysztof Drewniak ret float %ret 317faa2c678SKrzysztof Drewniak} 318faa2c678SKrzysztof Drewniak 319faa2c678SKrzysztof Drewniakdefine amdgpu_ps float @buffer_ptr_atomic_fadd_f32_idxen_rtn(float %val, ptr addrspace(8) inreg %rsrc, i32 %vindex, i32 inreg %soffset) { 320faa2c678SKrzysztof Drewniak ; GFX90A_GFX940-LABEL: name: buffer_ptr_atomic_fadd_f32_idxen_rtn 321faa2c678SKrzysztof Drewniak ; GFX90A_GFX940: bb.1 (%ir-block.0): 322faa2c678SKrzysztof Drewniak ; GFX90A_GFX940-NEXT: liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $sgpr4, $vgpr0, $vgpr1 323faa2c678SKrzysztof Drewniak ; GFX90A_GFX940-NEXT: {{ $}} 324faa2c678SKrzysztof Drewniak ; GFX90A_GFX940-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 325faa2c678SKrzysztof Drewniak ; GFX90A_GFX940-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr0 326faa2c678SKrzysztof Drewniak ; GFX90A_GFX940-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $sgpr1 327faa2c678SKrzysztof Drewniak ; GFX90A_GFX940-NEXT: [[COPY3:%[0-9]+]]:sreg_32 = COPY $sgpr2 328faa2c678SKrzysztof Drewniak ; GFX90A_GFX940-NEXT: [[COPY4:%[0-9]+]]:sreg_32 = COPY $sgpr3 329faa2c678SKrzysztof Drewniak ; GFX90A_GFX940-NEXT: [[COPY5:%[0-9]+]]:vgpr_32 = COPY $vgpr1 330faa2c678SKrzysztof Drewniak ; GFX90A_GFX940-NEXT: [[COPY6:%[0-9]+]]:sreg_32 = COPY $sgpr4 331faa2c678SKrzysztof Drewniak ; GFX90A_GFX940-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY1]], %subreg.sub0, [[COPY2]], %subreg.sub1, [[COPY3]], %subreg.sub2, [[COPY4]], %subreg.sub3 332ab379378SKrzysztof Drewniak ; GFX90A_GFX940-NEXT: [[BUFFER_ATOMIC_ADD_F32_IDXEN_RTN:%[0-9]+]]:vgpr_32 = BUFFER_ATOMIC_ADD_F32_IDXEN_RTN [[COPY]], [[COPY5]], [[REG_SEQUENCE]], [[COPY6]], 0, 1, implicit $exec :: (volatile dereferenceable load store (s32) on %ir.rsrc, align 1, addrspace 8) 333faa2c678SKrzysztof Drewniak ; GFX90A_GFX940-NEXT: $vgpr0 = COPY [[BUFFER_ATOMIC_ADD_F32_IDXEN_RTN]] 334faa2c678SKrzysztof Drewniak ; GFX90A_GFX940-NEXT: SI_RETURN_TO_EPILOG implicit $vgpr0 335*e7900e69SMatt Arsenault ; 336faa2c678SKrzysztof Drewniak ; GFX11-LABEL: name: buffer_ptr_atomic_fadd_f32_idxen_rtn 337faa2c678SKrzysztof Drewniak ; GFX11: bb.1 (%ir-block.0): 338faa2c678SKrzysztof Drewniak ; GFX11-NEXT: liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $sgpr4, $vgpr0, $vgpr1 339faa2c678SKrzysztof Drewniak ; GFX11-NEXT: {{ $}} 340faa2c678SKrzysztof Drewniak ; GFX11-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 341faa2c678SKrzysztof Drewniak ; GFX11-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr0 342faa2c678SKrzysztof Drewniak ; GFX11-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $sgpr1 343faa2c678SKrzysztof Drewniak ; GFX11-NEXT: [[COPY3:%[0-9]+]]:sreg_32 = COPY $sgpr2 344faa2c678SKrzysztof Drewniak ; GFX11-NEXT: [[COPY4:%[0-9]+]]:sreg_32 = COPY $sgpr3 345faa2c678SKrzysztof Drewniak ; GFX11-NEXT: [[COPY5:%[0-9]+]]:vgpr_32 = COPY $vgpr1 346faa2c678SKrzysztof Drewniak ; GFX11-NEXT: [[COPY6:%[0-9]+]]:sreg_32 = COPY $sgpr4 347faa2c678SKrzysztof Drewniak ; GFX11-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY1]], %subreg.sub0, [[COPY2]], %subreg.sub1, [[COPY3]], %subreg.sub2, [[COPY4]], %subreg.sub3 348ab379378SKrzysztof Drewniak ; GFX11-NEXT: [[BUFFER_ATOMIC_ADD_F32_IDXEN_RTN:%[0-9]+]]:vgpr_32 = BUFFER_ATOMIC_ADD_F32_IDXEN_RTN [[COPY]], [[COPY5]], [[REG_SEQUENCE]], [[COPY6]], 0, 1, implicit $exec :: (volatile dereferenceable load store (s32) on %ir.rsrc, align 1, addrspace 8) 349faa2c678SKrzysztof Drewniak ; GFX11-NEXT: $vgpr0 = COPY [[BUFFER_ATOMIC_ADD_F32_IDXEN_RTN]] 350faa2c678SKrzysztof Drewniak ; GFX11-NEXT: SI_RETURN_TO_EPILOG implicit $vgpr0 351*e7900e69SMatt Arsenault ; 352*e7900e69SMatt Arsenault ; GFX12-LABEL: name: buffer_ptr_atomic_fadd_f32_idxen_rtn 353*e7900e69SMatt Arsenault ; GFX12: bb.1 (%ir-block.0): 354*e7900e69SMatt Arsenault ; GFX12-NEXT: liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $sgpr4, $vgpr0, $vgpr1 355*e7900e69SMatt Arsenault ; GFX12-NEXT: {{ $}} 356*e7900e69SMatt Arsenault ; GFX12-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 357*e7900e69SMatt Arsenault ; GFX12-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr0 358*e7900e69SMatt Arsenault ; GFX12-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $sgpr1 359*e7900e69SMatt Arsenault ; GFX12-NEXT: [[COPY3:%[0-9]+]]:sreg_32 = COPY $sgpr2 360*e7900e69SMatt Arsenault ; GFX12-NEXT: [[COPY4:%[0-9]+]]:sreg_32 = COPY $sgpr3 361*e7900e69SMatt Arsenault ; GFX12-NEXT: [[COPY5:%[0-9]+]]:vgpr_32 = COPY $vgpr1 362*e7900e69SMatt Arsenault ; GFX12-NEXT: [[COPY6:%[0-9]+]]:sreg_32 = COPY $sgpr4 363*e7900e69SMatt Arsenault ; GFX12-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY1]], %subreg.sub0, [[COPY2]], %subreg.sub1, [[COPY3]], %subreg.sub2, [[COPY4]], %subreg.sub3 364*e7900e69SMatt Arsenault ; GFX12-NEXT: [[BUFFER_ATOMIC_ADD_F32_VBUFFER_IDXEN_RTN:%[0-9]+]]:vgpr_32 = BUFFER_ATOMIC_ADD_F32_VBUFFER_IDXEN_RTN [[COPY]], [[COPY5]], [[REG_SEQUENCE]], [[COPY6]], 0, 1, implicit $exec :: (volatile dereferenceable load store (s32) on %ir.rsrc, align 1, addrspace 8) 365*e7900e69SMatt Arsenault ; GFX12-NEXT: $vgpr0 = COPY [[BUFFER_ATOMIC_ADD_F32_VBUFFER_IDXEN_RTN]] 366*e7900e69SMatt Arsenault ; GFX12-NEXT: SI_RETURN_TO_EPILOG implicit $vgpr0 367faa2c678SKrzysztof Drewniak %ret = call float @llvm.amdgcn.struct.ptr.buffer.atomic.fadd.f32(float %val, ptr addrspace(8) %rsrc, i32 %vindex, i32 0, i32 %soffset, i32 0) 368faa2c678SKrzysztof Drewniak ret float %ret 369faa2c678SKrzysztof Drewniak} 370faa2c678SKrzysztof Drewniak 371faa2c678SKrzysztof Drewniakdefine amdgpu_ps float @buffer_ptr_atomic_fadd_f32_bothen_rtn(float %val, ptr addrspace(8) inreg %rsrc, i32 %vindex, i32 %voffset, i32 inreg %soffset) { 372faa2c678SKrzysztof Drewniak ; GFX90A_GFX940-LABEL: name: buffer_ptr_atomic_fadd_f32_bothen_rtn 373faa2c678SKrzysztof Drewniak ; GFX90A_GFX940: bb.1 (%ir-block.0): 374faa2c678SKrzysztof Drewniak ; GFX90A_GFX940-NEXT: liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $sgpr4, $vgpr0, $vgpr1, $vgpr2 375faa2c678SKrzysztof Drewniak ; GFX90A_GFX940-NEXT: {{ $}} 376faa2c678SKrzysztof Drewniak ; GFX90A_GFX940-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 377faa2c678SKrzysztof Drewniak ; GFX90A_GFX940-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr0 378faa2c678SKrzysztof Drewniak ; GFX90A_GFX940-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $sgpr1 379faa2c678SKrzysztof Drewniak ; GFX90A_GFX940-NEXT: [[COPY3:%[0-9]+]]:sreg_32 = COPY $sgpr2 380faa2c678SKrzysztof Drewniak ; GFX90A_GFX940-NEXT: [[COPY4:%[0-9]+]]:sreg_32 = COPY $sgpr3 381faa2c678SKrzysztof Drewniak ; GFX90A_GFX940-NEXT: [[COPY5:%[0-9]+]]:vgpr_32 = COPY $vgpr1 382faa2c678SKrzysztof Drewniak ; GFX90A_GFX940-NEXT: [[COPY6:%[0-9]+]]:vgpr_32 = COPY $vgpr2 383faa2c678SKrzysztof Drewniak ; GFX90A_GFX940-NEXT: [[COPY7:%[0-9]+]]:sreg_32 = COPY $sgpr4 384faa2c678SKrzysztof Drewniak ; GFX90A_GFX940-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY1]], %subreg.sub0, [[COPY2]], %subreg.sub1, [[COPY3]], %subreg.sub2, [[COPY4]], %subreg.sub3 385faa2c678SKrzysztof Drewniak ; GFX90A_GFX940-NEXT: [[REG_SEQUENCE1:%[0-9]+]]:vreg_64_align2 = REG_SEQUENCE [[COPY5]], %subreg.sub0, [[COPY6]], %subreg.sub1 386ab379378SKrzysztof Drewniak ; GFX90A_GFX940-NEXT: [[BUFFER_ATOMIC_ADD_F32_BOTHEN_RTN:%[0-9]+]]:vgpr_32 = BUFFER_ATOMIC_ADD_F32_BOTHEN_RTN [[COPY]], [[REG_SEQUENCE1]], [[REG_SEQUENCE]], [[COPY7]], 0, 1, implicit $exec :: (volatile dereferenceable load store (s32) on %ir.rsrc, align 1, addrspace 8) 387faa2c678SKrzysztof Drewniak ; GFX90A_GFX940-NEXT: $vgpr0 = COPY [[BUFFER_ATOMIC_ADD_F32_BOTHEN_RTN]] 388faa2c678SKrzysztof Drewniak ; GFX90A_GFX940-NEXT: SI_RETURN_TO_EPILOG implicit $vgpr0 389*e7900e69SMatt Arsenault ; 390faa2c678SKrzysztof Drewniak ; GFX11-LABEL: name: buffer_ptr_atomic_fadd_f32_bothen_rtn 391faa2c678SKrzysztof Drewniak ; GFX11: bb.1 (%ir-block.0): 392faa2c678SKrzysztof Drewniak ; GFX11-NEXT: liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $sgpr4, $vgpr0, $vgpr1, $vgpr2 393faa2c678SKrzysztof Drewniak ; GFX11-NEXT: {{ $}} 394faa2c678SKrzysztof Drewniak ; GFX11-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 395faa2c678SKrzysztof Drewniak ; GFX11-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr0 396faa2c678SKrzysztof Drewniak ; GFX11-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $sgpr1 397faa2c678SKrzysztof Drewniak ; GFX11-NEXT: [[COPY3:%[0-9]+]]:sreg_32 = COPY $sgpr2 398faa2c678SKrzysztof Drewniak ; GFX11-NEXT: [[COPY4:%[0-9]+]]:sreg_32 = COPY $sgpr3 399faa2c678SKrzysztof Drewniak ; GFX11-NEXT: [[COPY5:%[0-9]+]]:vgpr_32 = COPY $vgpr1 400faa2c678SKrzysztof Drewniak ; GFX11-NEXT: [[COPY6:%[0-9]+]]:vgpr_32 = COPY $vgpr2 401faa2c678SKrzysztof Drewniak ; GFX11-NEXT: [[COPY7:%[0-9]+]]:sreg_32 = COPY $sgpr4 402faa2c678SKrzysztof Drewniak ; GFX11-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY1]], %subreg.sub0, [[COPY2]], %subreg.sub1, [[COPY3]], %subreg.sub2, [[COPY4]], %subreg.sub3 403faa2c678SKrzysztof Drewniak ; GFX11-NEXT: [[REG_SEQUENCE1:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[COPY5]], %subreg.sub0, [[COPY6]], %subreg.sub1 404ab379378SKrzysztof Drewniak ; GFX11-NEXT: [[BUFFER_ATOMIC_ADD_F32_BOTHEN_RTN:%[0-9]+]]:vgpr_32 = BUFFER_ATOMIC_ADD_F32_BOTHEN_RTN [[COPY]], [[REG_SEQUENCE1]], [[REG_SEQUENCE]], [[COPY7]], 0, 1, implicit $exec :: (volatile dereferenceable load store (s32) on %ir.rsrc, align 1, addrspace 8) 405faa2c678SKrzysztof Drewniak ; GFX11-NEXT: $vgpr0 = COPY [[BUFFER_ATOMIC_ADD_F32_BOTHEN_RTN]] 406faa2c678SKrzysztof Drewniak ; GFX11-NEXT: SI_RETURN_TO_EPILOG implicit $vgpr0 407*e7900e69SMatt Arsenault ; 408*e7900e69SMatt Arsenault ; GFX12-LABEL: name: buffer_ptr_atomic_fadd_f32_bothen_rtn 409*e7900e69SMatt Arsenault ; GFX12: bb.1 (%ir-block.0): 410*e7900e69SMatt Arsenault ; GFX12-NEXT: liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $sgpr4, $vgpr0, $vgpr1, $vgpr2 411*e7900e69SMatt Arsenault ; GFX12-NEXT: {{ $}} 412*e7900e69SMatt Arsenault ; GFX12-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 413*e7900e69SMatt Arsenault ; GFX12-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr0 414*e7900e69SMatt Arsenault ; GFX12-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $sgpr1 415*e7900e69SMatt Arsenault ; GFX12-NEXT: [[COPY3:%[0-9]+]]:sreg_32 = COPY $sgpr2 416*e7900e69SMatt Arsenault ; GFX12-NEXT: [[COPY4:%[0-9]+]]:sreg_32 = COPY $sgpr3 417*e7900e69SMatt Arsenault ; GFX12-NEXT: [[COPY5:%[0-9]+]]:vgpr_32 = COPY $vgpr1 418*e7900e69SMatt Arsenault ; GFX12-NEXT: [[COPY6:%[0-9]+]]:vgpr_32 = COPY $vgpr2 419*e7900e69SMatt Arsenault ; GFX12-NEXT: [[COPY7:%[0-9]+]]:sreg_32 = COPY $sgpr4 420*e7900e69SMatt Arsenault ; GFX12-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY1]], %subreg.sub0, [[COPY2]], %subreg.sub1, [[COPY3]], %subreg.sub2, [[COPY4]], %subreg.sub3 421*e7900e69SMatt Arsenault ; GFX12-NEXT: [[REG_SEQUENCE1:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[COPY5]], %subreg.sub0, [[COPY6]], %subreg.sub1 422*e7900e69SMatt Arsenault ; GFX12-NEXT: [[BUFFER_ATOMIC_ADD_F32_VBUFFER_BOTHEN_RTN:%[0-9]+]]:vgpr_32 = BUFFER_ATOMIC_ADD_F32_VBUFFER_BOTHEN_RTN [[COPY]], [[REG_SEQUENCE1]], [[REG_SEQUENCE]], [[COPY7]], 0, 1, implicit $exec :: (volatile dereferenceable load store (s32) on %ir.rsrc, align 1, addrspace 8) 423*e7900e69SMatt Arsenault ; GFX12-NEXT: $vgpr0 = COPY [[BUFFER_ATOMIC_ADD_F32_VBUFFER_BOTHEN_RTN]] 424*e7900e69SMatt Arsenault ; GFX12-NEXT: SI_RETURN_TO_EPILOG implicit $vgpr0 425faa2c678SKrzysztof Drewniak %ret = call float @llvm.amdgcn.struct.ptr.buffer.atomic.fadd.f32(float %val, ptr addrspace(8) %rsrc, i32 %vindex, i32 %voffset, i32 %soffset, i32 0) 426faa2c678SKrzysztof Drewniak ret float %ret 427faa2c678SKrzysztof Drewniak} 428faa2c678SKrzysztof Drewniak 42948968c47SPetar Avramovicdeclare float @llvm.amdgcn.raw.buffer.atomic.fadd.f32(float, <4 x i32>, i32, i32, i32 immarg) 43048968c47SPetar Avramovicdeclare float @llvm.amdgcn.struct.buffer.atomic.fadd.f32(float, <4 x i32>, i32, i32, i32, i32 immarg) 431faa2c678SKrzysztof Drewniak 432faa2c678SKrzysztof Drewniakdeclare float @llvm.amdgcn.raw.ptr.buffer.atomic.fadd.f32(float, ptr addrspace(8), i32, i32, i32 immarg) 433faa2c678SKrzysztof Drewniakdeclare float @llvm.amdgcn.struct.ptr.buffer.atomic.fadd.f32(float, ptr addrspace(8), i32, i32, i32, i32 immarg) 434