[AMDGPU][NFC] Replace gfx940 and gfx941 with gfx942 in llvm/test gfx940 and gfx941 are no longer supported. This is one of a series of PRs to remove them from the code base. This PR uses gfx942 instead of gfx940 and gfx941 in the test RUN-lines (unless there is already a RUN-line for gfx942). The only notable difference in the test output is that gfx942 does not force the use of sc0 and sc1 on stores while gfx940 and gfx941 do (cf. https://reviews.llvm.org/D149986). For SWDEV-512631
128 lines
7.7 KiB
LLVM
128 lines
7.7 KiB
LLVM
; NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
|
|
; RUN: llc -mtriple=amdgcn -mcpu=gfx942 -verify-machineinstrs -stop-after=amdgpu-isel < %s | FileCheck -check-prefix=GFX942 %s
|
|
; RUN: llc -mtriple=amdgcn -mcpu=gfx1100 -verify-machineinstrs -stop-after=amdgpu-isel < %s | FileCheck -check-prefix=GFX11 %s
|
|
; RUN: llc -mtriple=amdgcn -mcpu=gfx942 -enable-new-pm -stop-after=amdgpu-isel < %s | FileCheck -check-prefix=GFX942 %s
|
|
; RUN: llc -mtriple=amdgcn -mcpu=gfx1100 -enable-new-pm -stop-after=amdgpu-isel < %s | FileCheck -check-prefix=GFX11 %s
|
|
|
|
define amdgpu_ps void @flat_atomic_fadd_f32_no_rtn_intrinsic(ptr %ptr, float %data) {
|
|
; GFX942-LABEL: name: flat_atomic_fadd_f32_no_rtn_intrinsic
|
|
; GFX942: bb.0 (%ir-block.0):
|
|
; GFX942-NEXT: liveins: $vgpr0, $vgpr1, $vgpr2
|
|
; GFX942-NEXT: {{ $}}
|
|
; GFX942-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr2
|
|
; GFX942-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
|
|
; GFX942-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX942-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sreg_64 = REG_SEQUENCE [[COPY2]], %subreg.sub0, [[COPY1]], %subreg.sub1
|
|
; GFX942-NEXT: [[COPY3:%[0-9]+]]:vreg_64_align2 = COPY [[REG_SEQUENCE]]
|
|
; GFX942-NEXT: FLAT_ATOMIC_ADD_F32 killed [[COPY3]], [[COPY]], 0, 0, implicit $exec, implicit $flat_scr :: (load store syncscope("agent") seq_cst (s32) on %ir.ptr)
|
|
; GFX942-NEXT: S_ENDPGM 0
|
|
;
|
|
; GFX11-LABEL: name: flat_atomic_fadd_f32_no_rtn_intrinsic
|
|
; GFX11: bb.0 (%ir-block.0):
|
|
; GFX11-NEXT: liveins: $vgpr0, $vgpr1, $vgpr2
|
|
; GFX11-NEXT: {{ $}}
|
|
; GFX11-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr2
|
|
; GFX11-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
|
|
; GFX11-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX11-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sreg_64 = REG_SEQUENCE [[COPY2]], %subreg.sub0, [[COPY1]], %subreg.sub1
|
|
; GFX11-NEXT: [[COPY3:%[0-9]+]]:vreg_64 = COPY [[REG_SEQUENCE]]
|
|
; GFX11-NEXT: FLAT_ATOMIC_ADD_F32 killed [[COPY3]], [[COPY]], 0, 0, implicit $exec, implicit $flat_scr :: (load store syncscope("agent") seq_cst (s32) on %ir.ptr)
|
|
; GFX11-NEXT: S_ENDPGM 0
|
|
%ret = call float @llvm.amdgcn.flat.atomic.fadd.f32.p1.f32(ptr %ptr, float %data)
|
|
ret void
|
|
}
|
|
|
|
define amdgpu_ps float @flat_atomic_fadd_f32_rtn_intrinsic(ptr %ptr, float %data) {
|
|
; GFX942-LABEL: name: flat_atomic_fadd_f32_rtn_intrinsic
|
|
; GFX942: bb.0 (%ir-block.0):
|
|
; GFX942-NEXT: liveins: $vgpr0, $vgpr1, $vgpr2
|
|
; GFX942-NEXT: {{ $}}
|
|
; GFX942-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr2
|
|
; GFX942-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
|
|
; GFX942-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX942-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sreg_64 = REG_SEQUENCE [[COPY2]], %subreg.sub0, [[COPY1]], %subreg.sub1
|
|
; GFX942-NEXT: [[COPY3:%[0-9]+]]:vreg_64_align2 = COPY [[REG_SEQUENCE]]
|
|
; GFX942-NEXT: [[FLAT_ATOMIC_ADD_F32_RTN:%[0-9]+]]:vgpr_32 = FLAT_ATOMIC_ADD_F32_RTN killed [[COPY3]], [[COPY]], 0, 1, implicit $exec, implicit $flat_scr :: (load store syncscope("agent") seq_cst (s32) on %ir.ptr)
|
|
; GFX942-NEXT: $vgpr0 = COPY [[FLAT_ATOMIC_ADD_F32_RTN]]
|
|
; GFX942-NEXT: SI_RETURN_TO_EPILOG $vgpr0
|
|
;
|
|
; GFX11-LABEL: name: flat_atomic_fadd_f32_rtn_intrinsic
|
|
; GFX11: bb.0 (%ir-block.0):
|
|
; GFX11-NEXT: liveins: $vgpr0, $vgpr1, $vgpr2
|
|
; GFX11-NEXT: {{ $}}
|
|
; GFX11-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr2
|
|
; GFX11-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
|
|
; GFX11-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX11-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sreg_64 = REG_SEQUENCE [[COPY2]], %subreg.sub0, [[COPY1]], %subreg.sub1
|
|
; GFX11-NEXT: [[COPY3:%[0-9]+]]:vreg_64 = COPY [[REG_SEQUENCE]]
|
|
; GFX11-NEXT: [[FLAT_ATOMIC_ADD_F32_RTN:%[0-9]+]]:vgpr_32 = FLAT_ATOMIC_ADD_F32_RTN killed [[COPY3]], [[COPY]], 0, 1, implicit $exec, implicit $flat_scr :: (load store syncscope("agent") seq_cst (s32) on %ir.ptr)
|
|
; GFX11-NEXT: $vgpr0 = COPY [[FLAT_ATOMIC_ADD_F32_RTN]]
|
|
; GFX11-NEXT: SI_RETURN_TO_EPILOG $vgpr0
|
|
%ret = call float @llvm.amdgcn.flat.atomic.fadd.f32.p1.f32(ptr %ptr, float %data)
|
|
ret float %ret
|
|
}
|
|
|
|
define amdgpu_ps void @flat_atomic_fadd_f32_no_rtn_atomicrmw(ptr %ptr, float %data) #0 {
|
|
; GFX942-LABEL: name: flat_atomic_fadd_f32_no_rtn_atomicrmw
|
|
; GFX942: bb.0 (%ir-block.0):
|
|
; GFX942-NEXT: liveins: $vgpr0, $vgpr1, $vgpr2
|
|
; GFX942-NEXT: {{ $}}
|
|
; GFX942-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr2
|
|
; GFX942-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
|
|
; GFX942-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX942-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sreg_64 = REG_SEQUENCE [[COPY2]], %subreg.sub0, [[COPY1]], %subreg.sub1
|
|
; GFX942-NEXT: [[COPY3:%[0-9]+]]:vreg_64_align2 = COPY [[REG_SEQUENCE]]
|
|
; GFX942-NEXT: FLAT_ATOMIC_ADD_F32 killed [[COPY3]], [[COPY]], 0, 0, implicit $exec, implicit $flat_scr :: (load store syncscope("wavefront") monotonic (s32) on %ir.ptr)
|
|
; GFX942-NEXT: S_ENDPGM 0
|
|
;
|
|
; GFX11-LABEL: name: flat_atomic_fadd_f32_no_rtn_atomicrmw
|
|
; GFX11: bb.0 (%ir-block.0):
|
|
; GFX11-NEXT: liveins: $vgpr0, $vgpr1, $vgpr2
|
|
; GFX11-NEXT: {{ $}}
|
|
; GFX11-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr2
|
|
; GFX11-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
|
|
; GFX11-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX11-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sreg_64 = REG_SEQUENCE [[COPY2]], %subreg.sub0, [[COPY1]], %subreg.sub1
|
|
; GFX11-NEXT: [[COPY3:%[0-9]+]]:vreg_64 = COPY [[REG_SEQUENCE]]
|
|
; GFX11-NEXT: FLAT_ATOMIC_ADD_F32 killed [[COPY3]], [[COPY]], 0, 0, implicit $exec, implicit $flat_scr :: (load store syncscope("wavefront") monotonic (s32) on %ir.ptr)
|
|
; GFX11-NEXT: S_ENDPGM 0
|
|
%ret = atomicrmw fadd ptr %ptr, float %data syncscope("wavefront") monotonic, !amdgpu.no.fine.grained.memory !0
|
|
ret void
|
|
}
|
|
|
|
define amdgpu_ps float @flat_atomic_fadd_f32_rtn_atomicrmw(ptr %ptr, float %data) #0 {
|
|
; GFX942-LABEL: name: flat_atomic_fadd_f32_rtn_atomicrmw
|
|
; GFX942: bb.0 (%ir-block.0):
|
|
; GFX942-NEXT: liveins: $vgpr0, $vgpr1, $vgpr2
|
|
; GFX942-NEXT: {{ $}}
|
|
; GFX942-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr2
|
|
; GFX942-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
|
|
; GFX942-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX942-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sreg_64 = REG_SEQUENCE [[COPY2]], %subreg.sub0, [[COPY1]], %subreg.sub1
|
|
; GFX942-NEXT: [[COPY3:%[0-9]+]]:vreg_64_align2 = COPY [[REG_SEQUENCE]]
|
|
; GFX942-NEXT: [[FLAT_ATOMIC_ADD_F32_RTN:%[0-9]+]]:vgpr_32 = FLAT_ATOMIC_ADD_F32_RTN killed [[COPY3]], [[COPY]], 0, 1, implicit $exec, implicit $flat_scr :: (load store syncscope("wavefront") monotonic (s32) on %ir.ptr)
|
|
; GFX942-NEXT: $vgpr0 = COPY [[FLAT_ATOMIC_ADD_F32_RTN]]
|
|
; GFX942-NEXT: SI_RETURN_TO_EPILOG $vgpr0
|
|
;
|
|
; GFX11-LABEL: name: flat_atomic_fadd_f32_rtn_atomicrmw
|
|
; GFX11: bb.0 (%ir-block.0):
|
|
; GFX11-NEXT: liveins: $vgpr0, $vgpr1, $vgpr2
|
|
; GFX11-NEXT: {{ $}}
|
|
; GFX11-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr2
|
|
; GFX11-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
|
|
; GFX11-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr0
|
|
; GFX11-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sreg_64 = REG_SEQUENCE [[COPY2]], %subreg.sub0, [[COPY1]], %subreg.sub1
|
|
; GFX11-NEXT: [[COPY3:%[0-9]+]]:vreg_64 = COPY [[REG_SEQUENCE]]
|
|
; GFX11-NEXT: [[FLAT_ATOMIC_ADD_F32_RTN:%[0-9]+]]:vgpr_32 = FLAT_ATOMIC_ADD_F32_RTN killed [[COPY3]], [[COPY]], 0, 1, implicit $exec, implicit $flat_scr :: (load store syncscope("wavefront") monotonic (s32) on %ir.ptr)
|
|
; GFX11-NEXT: $vgpr0 = COPY [[FLAT_ATOMIC_ADD_F32_RTN]]
|
|
; GFX11-NEXT: SI_RETURN_TO_EPILOG $vgpr0
|
|
%ret = atomicrmw fadd ptr %ptr, float %data syncscope("wavefront") monotonic, !amdgpu.no.fine.grained.memory !0
|
|
ret float %ret
|
|
}
|
|
|
|
declare float @llvm.amdgcn.flat.atomic.fadd.f32.p1.f32(ptr, float)
|
|
|
|
attributes #0 = { nounwind }
|
|
|
|
!0 = !{}
|