@@ -354,4 +354,68 @@ define float @upgrade_amdgcn_global_atomic_fadd_f32_p1_f32(ptr addrspace(1) %ptr
354354 ret float %result
355355}
356356
357+ declare float @llvm.amdgcn.flat.atomic.fmin.f32.p0.f32 (ptr nocapture , float ) #0
358+
359+ define float @upgrade_amdgcn_flat_atomic_fmin_f32_p0_f32 (ptr %ptr , float %data ) {
360+ ; CHECK: %{{.+}} = atomicrmw fmin ptr %ptr, float %data syncscope("agent") seq_cst, align 4, !amdgpu.no.fine.grained.memory !{{[0-9]+$}}
361+ %result = call float @llvm.amdgcn.flat.atomic.fmin.f32.p0.f32 (ptr %ptr , float %data )
362+ ret float %result
363+ }
364+
365+ declare float @llvm.amdgcn.global.atomic.fmin.f32.p1.f32 (ptr addrspace (1 ) nocapture , float ) #0
366+
367+ define float @upgrade_amdgcn_global_atomic_fmin_f32_p1_f32 (ptr addrspace (1 ) %ptr , float %data ) {
368+ ; CHECK: %{{.+}} = atomicrmw fmin ptr addrspace(1) %ptr, float %data syncscope("agent") seq_cst, align 4, !amdgpu.no.fine.grained.memory !{{[0-9]+$}}
369+ %result = call float @llvm.amdgcn.global.atomic.fmin.f32.p1.f32 (ptr addrspace (1 ) %ptr , float %data )
370+ ret float %result
371+ }
372+
373+ declare double @llvm.amdgcn.flat.atomic.fmin.f64.p0.f64 (ptr nocapture , double ) #0
374+
375+ define double @upgrade_amdgcn_flat_atomic_fmin_f64_p0_f64 (ptr %ptr , double %data ) {
376+ ; CHECK: %{{.+}} = atomicrmw fmin ptr %ptr, double %data syncscope("agent") seq_cst, align 8, !amdgpu.no.fine.grained.memory !{{[0-9]+$}}
377+ %result = call double @llvm.amdgcn.flat.atomic.fmin.f64.p0.f64 (ptr %ptr , double %data )
378+ ret double %result
379+ }
380+
381+ declare double @llvm.amdgcn.global.atomic.fmin.f64.p1.f64 (ptr addrspace (1 ) nocapture , double ) #0
382+
383+ define double @upgrade_amdgcn_global_atomic_fmin_f64_p1_f64 (ptr addrspace (1 ) %ptr , double %data ) {
384+ ; CHECK: %{{.+}} = atomicrmw fmin ptr addrspace(1) %ptr, double %data syncscope("agent") seq_cst, align 8, !amdgpu.no.fine.grained.memory !{{[0-9]+$}}
385+ %result = call double @llvm.amdgcn.global.atomic.fmin.f64.p1.f64 (ptr addrspace (1 ) %ptr , double %data )
386+ ret double %result
387+ }
388+
389+ declare float @llvm.amdgcn.flat.atomic.fmax.f32.p0.f32 (ptr nocapture , float ) #0
390+
391+ define float @upgrade_amdgcn_flat_atomic_fmax_f32_p0_f32 (ptr %ptr , float %data ) {
392+ ; CHECK: %{{.+}} = atomicrmw fmax ptr %ptr, float %data syncscope("agent") seq_cst, align 4, !amdgpu.no.fine.grained.memory !{{[0-9]+$}}
393+ %result = call float @llvm.amdgcn.flat.atomic.fmax.f32.p0.f32 (ptr %ptr , float %data )
394+ ret float %result
395+ }
396+
397+ declare float @llvm.amdgcn.global.atomic.fmax.f32.p1.f32 (ptr addrspace (1 ) nocapture , float ) #0
398+
399+ define float @upgrade_amdgcn_global_atomic_fmax_f32_p1_f32 (ptr addrspace (1 ) %ptr , float %data ) {
400+ ; CHECK: %{{.+}} = atomicrmw fmax ptr addrspace(1) %ptr, float %data syncscope("agent") seq_cst, align 4, !amdgpu.no.fine.grained.memory !{{[0-9]+$}}
401+ %result = call float @llvm.amdgcn.global.atomic.fmax.f32.p1.f32 (ptr addrspace (1 ) %ptr , float %data )
402+ ret float %result
403+ }
404+
405+ declare double @llvm.amdgcn.flat.atomic.fmax.f64.p0.f64 (ptr nocapture , double ) #0
406+
407+ define double @upgrade_amdgcn_flat_atomic_fmax_f64_p0_f64 (ptr %ptr , double %data ) {
408+ ; CHECK: %{{.+}} = atomicrmw fmax ptr %ptr, double %data syncscope("agent") seq_cst, align 8, !amdgpu.no.fine.grained.memory !{{[0-9]+$}}
409+ %result = call double @llvm.amdgcn.flat.atomic.fmax.f64.p0.f64 (ptr %ptr , double %data )
410+ ret double %result
411+ }
412+
413+ declare double @llvm.amdgcn.global.atomic.fmax.f64.p1.f64 (ptr addrspace (1 ) nocapture , double ) #0
414+
415+ define double @upgrade_amdgcn_global_atomic_fmax_f64_p1_f64 (ptr addrspace (1 ) %ptr , double %data ) {
416+ ; CHECK: %{{.+}} = atomicrmw fmax ptr addrspace(1) %ptr, double %data syncscope("agent") seq_cst, align 8, !amdgpu.no.fine.grained.memory !{{[0-9]+$}}
417+ %result = call double @llvm.amdgcn.global.atomic.fmax.f64.p1.f64 (ptr addrspace (1 ) %ptr , double %data )
418+ ret double %result
419+ }
420+
357421attributes #0 = { argmemonly nounwind willreturn }
0 commit comments