|  | ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5 | 
|  | ; RUN: llc -global-isel=0 -mtriple=amdgcn-amd-amdhsa -mcpu=gfx700 < %s | FileCheck -check-prefixes=GFX7,GFX7-SDAG %s | 
|  | ; RUN: llc -global-isel -mtriple=amdgcn-amd-amdhsa -mcpu=gfx700 < %s | FileCheck -check-prefixes=GFX7,GFX7-GISEL %s | 
|  |  | 
|  | ; RUN: llc -global-isel=0 -mtriple=amdgcn-amd-amdhsa -mcpu=gfx803 < %s | FileCheck -check-prefixes=GFX8,GFX8-SDAG %s | 
|  | ; RUN: llc -global-isel -mtriple=amdgcn-amd-amdhsa -mcpu=gfx803 < %s | FileCheck -check-prefixes=GFX8,GFX8-GISEL %s | 
|  |  | 
|  | ; RUN: llc -global-isel=0 -mtriple=amdgcn-amd-amdhsa -mcpu=gfx900 < %s | FileCheck -check-prefixes=GFX9,GFX900,GFX9-SDAG,GFX900-SDAG %s | 
|  | ; RUN: llc -global-isel -mtriple=amdgcn-amd-amdhsa -mcpu=gfx900 < %s | FileCheck -check-prefixes=GFX9,GFX900,GFX9-GISEL,GFX900-GISEL %s | 
|  |  | 
|  | ; RUN: llc -global-isel=0 -mtriple=amdgcn-amd-amdhsa -mcpu=gfx950 < %s | FileCheck -check-prefixes=GFX9,GFX950,GFX9-SDAG,GFX950-SDAG %s | 
|  | ; RUN: llc -global-isel -mtriple=amdgcn-amd-amdhsa -mcpu=gfx950 < %s | FileCheck -check-prefixes=GFX9,GFX950,GFX9-GISEL,GFX950-GISEL %s | 
|  |  | 
|  | ; RUN: llc -global-isel=0 -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1030 < %s | FileCheck -check-prefixes=GFX10,GFX10-SDAG %s | 
|  | ; RUN: llc -global-isel -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1030 < %s | FileCheck -check-prefixes=GFX10,GFX10-GISEL %s | 
|  |  | 
|  | ; RUN: llc -global-isel=0 -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1100 -mattr=+real-true16 < %s | FileCheck -check-prefixes=GFX11,GFX11-TRUE16,GFX11-SDAG,GFX11-TRUE16-SDAG %s | 
|  | ; RUN: llc -global-isel -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1100 -mattr=+real-true16 < %s | FileCheck -check-prefixes=GFX11,GFX11-TRUE16,GFX11-GISEL,GFX11-TRUE16-GISEL %s | 
|  |  | 
|  | ; RUN: llc -global-isel=0 -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1100 -mattr=-real-true16 < %s | FileCheck -check-prefixes=GFX11,GFX11-FAKE16,GFX11-SDAG,GFX11-FAKE16-SDAG %s | 
|  | ; RUN: llc -global-isel -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1100 -mattr=-real-true16 < %s | FileCheck -check-prefixes=GFX11,GFX11-FAKE16,GFX11-GISEL,GFX11-FAKE16-GISEL %s | 
|  |  | 
|  | ; RUN: llc -global-isel=0 -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1200 -mattr=+real-true16 < %s | FileCheck -check-prefixes=GFX12,GFX12-TRUE16,GFX12-SDAG,GFX12-TRUE16-SDAG %s | 
|  | ; RUN: llc -global-isel -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1200 -mattr=+real-true16 < %s | FileCheck -check-prefixes=GFX12,GFX12-TRUE16,GFX12-GISEL,GFX12-TRUE16-GISEL %s | 
|  |  | 
|  | ; RUN: llc -global-isel=0 -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1200 -mattr=-real-true16 < %s | FileCheck -check-prefixes=GFX12,GFX12-FAKE16,GFX12-SDAG,GFX12-FAKE16-SDAG %s | 
|  | ; RUN: llc -global-isel -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1200 -mattr=-real-true16 < %s | FileCheck -check-prefixes=GFX12,GFX12-FAKE16,GFX12-GISEL,GFX12-FAKE16-GISEL %s | 
|  |  | 
|  | define half @v_minimumnum_f16(half %x, half %y) { | 
|  | ; GFX7-SDAG-LABEL: v_minimumnum_f16: | 
|  | ; GFX7-SDAG:       ; %bb.0: | 
|  | ; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v0, v0 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v1, v1 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v0, v0 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v1, v1 | 
|  | ; GFX7-SDAG-NEXT:    v_min_f32_e32 v0, v0, v1 | 
|  | ; GFX7-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX7-GISEL-LABEL: v_minimumnum_f16: | 
|  | ; GFX7-GISEL:       ; %bb.0: | 
|  | ; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v0, v0 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v1, v1 | 
|  | ; GFX7-GISEL-NEXT:    v_min_f32_e32 v0, v0, v1 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f16_f32_e32 v0, v0 | 
|  | ; GFX7-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX8-SDAG-LABEL: v_minimumnum_f16: | 
|  | ; GFX8-SDAG:       ; %bb.0: | 
|  | ; GFX8-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_e32 v1, v1, v1 | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_e32 v0, v0, v0 | 
|  | ; GFX8-SDAG-NEXT:    v_min_f16_e32 v0, v0, v1 | 
|  | ; GFX8-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX8-GISEL-LABEL: v_minimumnum_f16: | 
|  | ; GFX8-GISEL:       ; %bb.0: | 
|  | ; GFX8-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_e32 v0, v0, v0 | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_e32 v1, v1, v1 | 
|  | ; GFX8-GISEL-NEXT:    v_min_f16_e32 v0, v0, v1 | 
|  | ; GFX8-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX9-SDAG-LABEL: v_minimumnum_f16: | 
|  | ; GFX9-SDAG:       ; %bb.0: | 
|  | ; GFX9-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX9-SDAG-NEXT:    v_max_f16_e32 v1, v1, v1 | 
|  | ; GFX9-SDAG-NEXT:    v_max_f16_e32 v0, v0, v0 | 
|  | ; GFX9-SDAG-NEXT:    v_min_f16_e32 v0, v0, v1 | 
|  | ; GFX9-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX9-GISEL-LABEL: v_minimumnum_f16: | 
|  | ; GFX9-GISEL:       ; %bb.0: | 
|  | ; GFX9-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX9-GISEL-NEXT:    v_max_f16_e32 v0, v0, v0 | 
|  | ; GFX9-GISEL-NEXT:    v_max_f16_e32 v1, v1, v1 | 
|  | ; GFX9-GISEL-NEXT:    v_min_f16_e32 v0, v0, v1 | 
|  | ; GFX9-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX10-SDAG-LABEL: v_minimumnum_f16: | 
|  | ; GFX10-SDAG:       ; %bb.0: | 
|  | ; GFX10-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX10-SDAG-NEXT:    v_max_f16_e32 v1, v1, v1 | 
|  | ; GFX10-SDAG-NEXT:    v_max_f16_e32 v0, v0, v0 | 
|  | ; GFX10-SDAG-NEXT:    v_min_f16_e32 v0, v0, v1 | 
|  | ; GFX10-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX10-GISEL-LABEL: v_minimumnum_f16: | 
|  | ; GFX10-GISEL:       ; %bb.0: | 
|  | ; GFX10-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX10-GISEL-NEXT:    v_max_f16_e32 v0, v0, v0 | 
|  | ; GFX10-GISEL-NEXT:    v_max_f16_e32 v1, v1, v1 | 
|  | ; GFX10-GISEL-NEXT:    v_min_f16_e32 v0, v0, v1 | 
|  | ; GFX10-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX11-TRUE16-SDAG-LABEL: v_minimumnum_f16: | 
|  | ; GFX11-TRUE16-SDAG:       ; %bb.0: | 
|  | ; GFX11-TRUE16-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX11-TRUE16-SDAG-NEXT:    v_max_f16_e32 v0.h, v1.l, v1.l | 
|  | ; GFX11-TRUE16-SDAG-NEXT:    v_max_f16_e32 v0.l, v0.l, v0.l | 
|  | ; GFX11-TRUE16-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX11-TRUE16-SDAG-NEXT:    v_min_f16_e32 v0.l, v0.l, v0.h | 
|  | ; GFX11-TRUE16-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX11-TRUE16-GISEL-LABEL: v_minimumnum_f16: | 
|  | ; GFX11-TRUE16-GISEL:       ; %bb.0: | 
|  | ; GFX11-TRUE16-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX11-TRUE16-GISEL-NEXT:    v_max_f16_e32 v0.l, v0.l, v0.l | 
|  | ; GFX11-TRUE16-GISEL-NEXT:    v_max_f16_e32 v0.h, v1.l, v1.l | 
|  | ; GFX11-TRUE16-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX11-TRUE16-GISEL-NEXT:    v_min_f16_e32 v0.l, v0.l, v0.h | 
|  | ; GFX11-TRUE16-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX11-FAKE16-SDAG-LABEL: v_minimumnum_f16: | 
|  | ; GFX11-FAKE16-SDAG:       ; %bb.0: | 
|  | ; GFX11-FAKE16-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX11-FAKE16-SDAG-NEXT:    v_max_f16_e32 v1, v1, v1 | 
|  | ; GFX11-FAKE16-SDAG-NEXT:    v_max_f16_e32 v0, v0, v0 | 
|  | ; GFX11-FAKE16-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX11-FAKE16-SDAG-NEXT:    v_min_f16_e32 v0, v0, v1 | 
|  | ; GFX11-FAKE16-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX11-FAKE16-GISEL-LABEL: v_minimumnum_f16: | 
|  | ; GFX11-FAKE16-GISEL:       ; %bb.0: | 
|  | ; GFX11-FAKE16-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX11-FAKE16-GISEL-NEXT:    v_max_f16_e32 v0, v0, v0 | 
|  | ; GFX11-FAKE16-GISEL-NEXT:    v_max_f16_e32 v1, v1, v1 | 
|  | ; GFX11-FAKE16-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX11-FAKE16-GISEL-NEXT:    v_min_f16_e32 v0, v0, v1 | 
|  | ; GFX11-FAKE16-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX12-TRUE16-SDAG-LABEL: v_minimumnum_f16: | 
|  | ; GFX12-TRUE16-SDAG:       ; %bb.0: | 
|  | ; GFX12-TRUE16-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0 | 
|  | ; GFX12-TRUE16-SDAG-NEXT:    s_wait_expcnt 0x0 | 
|  | ; GFX12-TRUE16-SDAG-NEXT:    s_wait_samplecnt 0x0 | 
|  | ; GFX12-TRUE16-SDAG-NEXT:    s_wait_bvhcnt 0x0 | 
|  | ; GFX12-TRUE16-SDAG-NEXT:    s_wait_kmcnt 0x0 | 
|  | ; GFX12-TRUE16-SDAG-NEXT:    v_max_num_f16_e32 v0.h, v1.l, v1.l | 
|  | ; GFX12-TRUE16-SDAG-NEXT:    v_max_num_f16_e32 v0.l, v0.l, v0.l | 
|  | ; GFX12-TRUE16-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX12-TRUE16-SDAG-NEXT:    v_min_num_f16_e32 v0.l, v0.l, v0.h | 
|  | ; GFX12-TRUE16-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX12-TRUE16-GISEL-LABEL: v_minimumnum_f16: | 
|  | ; GFX12-TRUE16-GISEL:       ; %bb.0: | 
|  | ; GFX12-TRUE16-GISEL-NEXT:    s_wait_loadcnt_dscnt 0x0 | 
|  | ; GFX12-TRUE16-GISEL-NEXT:    s_wait_expcnt 0x0 | 
|  | ; GFX12-TRUE16-GISEL-NEXT:    s_wait_samplecnt 0x0 | 
|  | ; GFX12-TRUE16-GISEL-NEXT:    s_wait_bvhcnt 0x0 | 
|  | ; GFX12-TRUE16-GISEL-NEXT:    s_wait_kmcnt 0x0 | 
|  | ; GFX12-TRUE16-GISEL-NEXT:    v_max_num_f16_e32 v0.l, v0.l, v0.l | 
|  | ; GFX12-TRUE16-GISEL-NEXT:    v_max_num_f16_e32 v0.h, v1.l, v1.l | 
|  | ; GFX12-TRUE16-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX12-TRUE16-GISEL-NEXT:    v_min_num_f16_e32 v0.l, v0.l, v0.h | 
|  | ; GFX12-TRUE16-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX12-FAKE16-SDAG-LABEL: v_minimumnum_f16: | 
|  | ; GFX12-FAKE16-SDAG:       ; %bb.0: | 
|  | ; GFX12-FAKE16-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0 | 
|  | ; GFX12-FAKE16-SDAG-NEXT:    s_wait_expcnt 0x0 | 
|  | ; GFX12-FAKE16-SDAG-NEXT:    s_wait_samplecnt 0x0 | 
|  | ; GFX12-FAKE16-SDAG-NEXT:    s_wait_bvhcnt 0x0 | 
|  | ; GFX12-FAKE16-SDAG-NEXT:    s_wait_kmcnt 0x0 | 
|  | ; GFX12-FAKE16-SDAG-NEXT:    v_max_num_f16_e32 v1, v1, v1 | 
|  | ; GFX12-FAKE16-SDAG-NEXT:    v_max_num_f16_e32 v0, v0, v0 | 
|  | ; GFX12-FAKE16-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX12-FAKE16-SDAG-NEXT:    v_min_num_f16_e32 v0, v0, v1 | 
|  | ; GFX12-FAKE16-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX12-FAKE16-GISEL-LABEL: v_minimumnum_f16: | 
|  | ; GFX12-FAKE16-GISEL:       ; %bb.0: | 
|  | ; GFX12-FAKE16-GISEL-NEXT:    s_wait_loadcnt_dscnt 0x0 | 
|  | ; GFX12-FAKE16-GISEL-NEXT:    s_wait_expcnt 0x0 | 
|  | ; GFX12-FAKE16-GISEL-NEXT:    s_wait_samplecnt 0x0 | 
|  | ; GFX12-FAKE16-GISEL-NEXT:    s_wait_bvhcnt 0x0 | 
|  | ; GFX12-FAKE16-GISEL-NEXT:    s_wait_kmcnt 0x0 | 
|  | ; GFX12-FAKE16-GISEL-NEXT:    v_max_num_f16_e32 v0, v0, v0 | 
|  | ; GFX12-FAKE16-GISEL-NEXT:    v_max_num_f16_e32 v1, v1, v1 | 
|  | ; GFX12-FAKE16-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX12-FAKE16-GISEL-NEXT:    v_min_num_f16_e32 v0, v0, v1 | 
|  | ; GFX12-FAKE16-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | %result = call half @llvm.minimumnum.f16(half %x, half %y) | 
|  | ret half %result | 
|  | } | 
|  |  | 
|  | define half @v_minimumnum_f16_nnan(half %x, half %y) { | 
|  | ; GFX7-SDAG-LABEL: v_minimumnum_f16_nnan: | 
|  | ; GFX7-SDAG:       ; %bb.0: | 
|  | ; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v1, v1 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v0, v0 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v1, v1 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v0, v0 | 
|  | ; GFX7-SDAG-NEXT:    v_min_f32_e32 v0, v0, v1 | 
|  | ; GFX7-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX7-GISEL-LABEL: v_minimumnum_f16_nnan: | 
|  | ; GFX7-GISEL:       ; %bb.0: | 
|  | ; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v0, v0 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v1, v1 | 
|  | ; GFX7-GISEL-NEXT:    v_min_f32_e32 v0, v0, v1 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f16_f32_e32 v0, v0 | 
|  | ; GFX7-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX8-LABEL: v_minimumnum_f16_nnan: | 
|  | ; GFX8:       ; %bb.0: | 
|  | ; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX8-NEXT:    v_min_f16_e32 v0, v0, v1 | 
|  | ; GFX8-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX9-LABEL: v_minimumnum_f16_nnan: | 
|  | ; GFX9:       ; %bb.0: | 
|  | ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX9-NEXT:    v_min_f16_e32 v0, v0, v1 | 
|  | ; GFX9-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX10-LABEL: v_minimumnum_f16_nnan: | 
|  | ; GFX10:       ; %bb.0: | 
|  | ; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX10-NEXT:    v_min_f16_e32 v0, v0, v1 | 
|  | ; GFX10-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX11-TRUE16-LABEL: v_minimumnum_f16_nnan: | 
|  | ; GFX11-TRUE16:       ; %bb.0: | 
|  | ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX11-TRUE16-NEXT:    v_min_f16_e32 v0.l, v0.l, v1.l | 
|  | ; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX11-FAKE16-LABEL: v_minimumnum_f16_nnan: | 
|  | ; GFX11-FAKE16:       ; %bb.0: | 
|  | ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX11-FAKE16-NEXT:    v_min_f16_e32 v0, v0, v1 | 
|  | ; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX12-TRUE16-LABEL: v_minimumnum_f16_nnan: | 
|  | ; GFX12-TRUE16:       ; %bb.0: | 
|  | ; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x0 | 
|  | ; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x0 | 
|  | ; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x0 | 
|  | ; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x0 | 
|  | ; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x0 | 
|  | ; GFX12-TRUE16-NEXT:    v_min_num_f16_e32 v0.l, v0.l, v1.l | 
|  | ; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX12-FAKE16-LABEL: v_minimumnum_f16_nnan: | 
|  | ; GFX12-FAKE16:       ; %bb.0: | 
|  | ; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x0 | 
|  | ; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x0 | 
|  | ; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x0 | 
|  | ; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x0 | 
|  | ; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x0 | 
|  | ; GFX12-FAKE16-NEXT:    v_min_num_f16_e32 v0, v0, v1 | 
|  | ; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31] | 
|  | %result = call nnan half @llvm.minimumnum.f16(half %x, half %y) | 
|  | ret half %result | 
|  | } | 
|  |  | 
|  | define half @v_minimumnum_f16_1.0(half %x) { | 
|  | ; GFX7-SDAG-LABEL: v_minimumnum_f16_1.0: | 
|  | ; GFX7-SDAG:       ; %bb.0: | 
|  | ; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v0, v0 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v0, v0 | 
|  | ; GFX7-SDAG-NEXT:    v_min_f32_e32 v0, 1.0, v0 | 
|  | ; GFX7-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX7-GISEL-LABEL: v_minimumnum_f16_1.0: | 
|  | ; GFX7-GISEL:       ; %bb.0: | 
|  | ; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v0, v0 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v1, 1.0 | 
|  | ; GFX7-GISEL-NEXT:    v_min_f32_e32 v0, v0, v1 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f16_f32_e32 v0, v0 | 
|  | ; GFX7-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX8-LABEL: v_minimumnum_f16_1.0: | 
|  | ; GFX8:       ; %bb.0: | 
|  | ; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX8-NEXT:    v_max_f16_e32 v0, v0, v0 | 
|  | ; GFX8-NEXT:    v_min_f16_e32 v0, 1.0, v0 | 
|  | ; GFX8-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX9-LABEL: v_minimumnum_f16_1.0: | 
|  | ; GFX9:       ; %bb.0: | 
|  | ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX9-NEXT:    v_max_f16_e32 v0, v0, v0 | 
|  | ; GFX9-NEXT:    v_min_f16_e32 v0, 1.0, v0 | 
|  | ; GFX9-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX10-LABEL: v_minimumnum_f16_1.0: | 
|  | ; GFX10:       ; %bb.0: | 
|  | ; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX10-NEXT:    v_max_f16_e32 v0, v0, v0 | 
|  | ; GFX10-NEXT:    v_min_f16_e32 v0, 1.0, v0 | 
|  | ; GFX10-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX11-TRUE16-LABEL: v_minimumnum_f16_1.0: | 
|  | ; GFX11-TRUE16:       ; %bb.0: | 
|  | ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX11-TRUE16-NEXT:    v_max_f16_e32 v0.l, v0.l, v0.l | 
|  | ; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX11-TRUE16-NEXT:    v_min_f16_e32 v0.l, 1.0, v0.l | 
|  | ; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX11-FAKE16-LABEL: v_minimumnum_f16_1.0: | 
|  | ; GFX11-FAKE16:       ; %bb.0: | 
|  | ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX11-FAKE16-NEXT:    v_max_f16_e32 v0, v0, v0 | 
|  | ; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX11-FAKE16-NEXT:    v_min_f16_e32 v0, 1.0, v0 | 
|  | ; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX12-TRUE16-LABEL: v_minimumnum_f16_1.0: | 
|  | ; GFX12-TRUE16:       ; %bb.0: | 
|  | ; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x0 | 
|  | ; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x0 | 
|  | ; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x0 | 
|  | ; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x0 | 
|  | ; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x0 | 
|  | ; GFX12-TRUE16-NEXT:    v_max_num_f16_e32 v0.l, v0.l, v0.l | 
|  | ; GFX12-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX12-TRUE16-NEXT:    v_min_num_f16_e32 v0.l, 1.0, v0.l | 
|  | ; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX12-FAKE16-LABEL: v_minimumnum_f16_1.0: | 
|  | ; GFX12-FAKE16:       ; %bb.0: | 
|  | ; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x0 | 
|  | ; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x0 | 
|  | ; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x0 | 
|  | ; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x0 | 
|  | ; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x0 | 
|  | ; GFX12-FAKE16-NEXT:    v_max_num_f16_e32 v0, v0, v0 | 
|  | ; GFX12-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX12-FAKE16-NEXT:    v_min_num_f16_e32 v0, 1.0, v0 | 
|  | ; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31] | 
|  | %result = call half @llvm.minimumnum.f16(half %x, half 1.0) | 
|  | ret half %result | 
|  | } | 
|  |  | 
|  | define float @v_minimumnum_f32(float %x, float %y) { | 
|  | ; GFX7-SDAG-LABEL: v_minimumnum_f32: | 
|  | ; GFX7-SDAG:       ; %bb.0: | 
|  | ; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX7-SDAG-NEXT:    v_mul_f32_e32 v1, 1.0, v1 | 
|  | ; GFX7-SDAG-NEXT:    v_mul_f32_e32 v0, 1.0, v0 | 
|  | ; GFX7-SDAG-NEXT:    v_min_f32_e32 v0, v0, v1 | 
|  | ; GFX7-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX7-GISEL-LABEL: v_minimumnum_f32: | 
|  | ; GFX7-GISEL:       ; %bb.0: | 
|  | ; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX7-GISEL-NEXT:    v_mul_f32_e32 v0, 1.0, v0 | 
|  | ; GFX7-GISEL-NEXT:    v_mul_f32_e32 v1, 1.0, v1 | 
|  | ; GFX7-GISEL-NEXT:    v_min_f32_e32 v0, v0, v1 | 
|  | ; GFX7-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX8-SDAG-LABEL: v_minimumnum_f32: | 
|  | ; GFX8-SDAG:       ; %bb.0: | 
|  | ; GFX8-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX8-SDAG-NEXT:    v_mul_f32_e32 v1, 1.0, v1 | 
|  | ; GFX8-SDAG-NEXT:    v_mul_f32_e32 v0, 1.0, v0 | 
|  | ; GFX8-SDAG-NEXT:    v_min_f32_e32 v0, v0, v1 | 
|  | ; GFX8-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX8-GISEL-LABEL: v_minimumnum_f32: | 
|  | ; GFX8-GISEL:       ; %bb.0: | 
|  | ; GFX8-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX8-GISEL-NEXT:    v_mul_f32_e32 v0, 1.0, v0 | 
|  | ; GFX8-GISEL-NEXT:    v_mul_f32_e32 v1, 1.0, v1 | 
|  | ; GFX8-GISEL-NEXT:    v_min_f32_e32 v0, v0, v1 | 
|  | ; GFX8-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX9-SDAG-LABEL: v_minimumnum_f32: | 
|  | ; GFX9-SDAG:       ; %bb.0: | 
|  | ; GFX9-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX9-SDAG-NEXT:    v_max_f32_e32 v1, v1, v1 | 
|  | ; GFX9-SDAG-NEXT:    v_max_f32_e32 v0, v0, v0 | 
|  | ; GFX9-SDAG-NEXT:    v_min_f32_e32 v0, v0, v1 | 
|  | ; GFX9-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX9-GISEL-LABEL: v_minimumnum_f32: | 
|  | ; GFX9-GISEL:       ; %bb.0: | 
|  | ; GFX9-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX9-GISEL-NEXT:    v_max_f32_e32 v0, v0, v0 | 
|  | ; GFX9-GISEL-NEXT:    v_max_f32_e32 v1, v1, v1 | 
|  | ; GFX9-GISEL-NEXT:    v_min_f32_e32 v0, v0, v1 | 
|  | ; GFX9-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX10-SDAG-LABEL: v_minimumnum_f32: | 
|  | ; GFX10-SDAG:       ; %bb.0: | 
|  | ; GFX10-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX10-SDAG-NEXT:    v_max_f32_e32 v1, v1, v1 | 
|  | ; GFX10-SDAG-NEXT:    v_max_f32_e32 v0, v0, v0 | 
|  | ; GFX10-SDAG-NEXT:    v_min_f32_e32 v0, v0, v1 | 
|  | ; GFX10-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX10-GISEL-LABEL: v_minimumnum_f32: | 
|  | ; GFX10-GISEL:       ; %bb.0: | 
|  | ; GFX10-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX10-GISEL-NEXT:    v_max_f32_e32 v0, v0, v0 | 
|  | ; GFX10-GISEL-NEXT:    v_max_f32_e32 v1, v1, v1 | 
|  | ; GFX10-GISEL-NEXT:    v_min_f32_e32 v0, v0, v1 | 
|  | ; GFX10-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX11-SDAG-LABEL: v_minimumnum_f32: | 
|  | ; GFX11-SDAG:       ; %bb.0: | 
|  | ; GFX11-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX11-SDAG-NEXT:    v_dual_max_f32 v1, v1, v1 :: v_dual_max_f32 v0, v0, v0 | 
|  | ; GFX11-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX11-SDAG-NEXT:    v_min_f32_e32 v0, v0, v1 | 
|  | ; GFX11-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX11-GISEL-LABEL: v_minimumnum_f32: | 
|  | ; GFX11-GISEL:       ; %bb.0: | 
|  | ; GFX11-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX11-GISEL-NEXT:    v_dual_max_f32 v0, v0, v0 :: v_dual_max_f32 v1, v1, v1 | 
|  | ; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX11-GISEL-NEXT:    v_min_f32_e32 v0, v0, v1 | 
|  | ; GFX11-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX12-SDAG-LABEL: v_minimumnum_f32: | 
|  | ; GFX12-SDAG:       ; %bb.0: | 
|  | ; GFX12-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    s_wait_expcnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    s_wait_samplecnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    s_wait_bvhcnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    s_wait_kmcnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    v_dual_max_num_f32 v1, v1, v1 :: v_dual_max_num_f32 v0, v0, v0 | 
|  | ; GFX12-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX12-SDAG-NEXT:    v_min_num_f32_e32 v0, v0, v1 | 
|  | ; GFX12-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX12-GISEL-LABEL: v_minimumnum_f32: | 
|  | ; GFX12-GISEL:       ; %bb.0: | 
|  | ; GFX12-GISEL-NEXT:    s_wait_loadcnt_dscnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    s_wait_expcnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    s_wait_samplecnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    s_wait_bvhcnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    s_wait_kmcnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    v_dual_max_num_f32 v0, v0, v0 :: v_dual_max_num_f32 v1, v1, v1 | 
|  | ; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX12-GISEL-NEXT:    v_min_num_f32_e32 v0, v0, v1 | 
|  | ; GFX12-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | %result = call float @llvm.minimumnum.f32(float %x, float %y) | 
|  | ret float %result | 
|  | } | 
|  |  | 
|  | define float @v_minimumnum_f32_nnan(float %x, float %y) { | 
|  | ; GFX7-LABEL: v_minimumnum_f32_nnan: | 
|  | ; GFX7:       ; %bb.0: | 
|  | ; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX7-NEXT:    v_min_f32_e32 v0, v0, v1 | 
|  | ; GFX7-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX8-LABEL: v_minimumnum_f32_nnan: | 
|  | ; GFX8:       ; %bb.0: | 
|  | ; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX8-NEXT:    v_min_f32_e32 v0, v0, v1 | 
|  | ; GFX8-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX9-LABEL: v_minimumnum_f32_nnan: | 
|  | ; GFX9:       ; %bb.0: | 
|  | ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX9-NEXT:    v_min_f32_e32 v0, v0, v1 | 
|  | ; GFX9-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX10-LABEL: v_minimumnum_f32_nnan: | 
|  | ; GFX10:       ; %bb.0: | 
|  | ; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX10-NEXT:    v_min_f32_e32 v0, v0, v1 | 
|  | ; GFX10-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX11-LABEL: v_minimumnum_f32_nnan: | 
|  | ; GFX11:       ; %bb.0: | 
|  | ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX11-NEXT:    v_min_f32_e32 v0, v0, v1 | 
|  | ; GFX11-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX12-LABEL: v_minimumnum_f32_nnan: | 
|  | ; GFX12:       ; %bb.0: | 
|  | ; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0 | 
|  | ; GFX12-NEXT:    s_wait_expcnt 0x0 | 
|  | ; GFX12-NEXT:    s_wait_samplecnt 0x0 | 
|  | ; GFX12-NEXT:    s_wait_bvhcnt 0x0 | 
|  | ; GFX12-NEXT:    s_wait_kmcnt 0x0 | 
|  | ; GFX12-NEXT:    v_min_num_f32_e32 v0, v0, v1 | 
|  | ; GFX12-NEXT:    s_setpc_b64 s[30:31] | 
|  | %result = call nnan float @llvm.minimumnum.f32(float %x, float %y) | 
|  | ret float %result | 
|  | } | 
|  |  | 
|  | define double @v_minimumnum_f64(double %x, double %y) { | 
|  | ; GFX7-SDAG-LABEL: v_minimumnum_f64: | 
|  | ; GFX7-SDAG:       ; %bb.0: | 
|  | ; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX7-SDAG-NEXT:    v_max_f64 v[2:3], v[2:3], v[2:3] | 
|  | ; GFX7-SDAG-NEXT:    v_max_f64 v[0:1], v[0:1], v[0:1] | 
|  | ; GFX7-SDAG-NEXT:    v_min_f64 v[0:1], v[0:1], v[2:3] | 
|  | ; GFX7-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX7-GISEL-LABEL: v_minimumnum_f64: | 
|  | ; GFX7-GISEL:       ; %bb.0: | 
|  | ; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX7-GISEL-NEXT:    v_max_f64 v[0:1], v[0:1], v[0:1] | 
|  | ; GFX7-GISEL-NEXT:    v_max_f64 v[2:3], v[2:3], v[2:3] | 
|  | ; GFX7-GISEL-NEXT:    v_min_f64 v[0:1], v[0:1], v[2:3] | 
|  | ; GFX7-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX8-SDAG-LABEL: v_minimumnum_f64: | 
|  | ; GFX8-SDAG:       ; %bb.0: | 
|  | ; GFX8-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX8-SDAG-NEXT:    v_max_f64 v[2:3], v[2:3], v[2:3] | 
|  | ; GFX8-SDAG-NEXT:    v_max_f64 v[0:1], v[0:1], v[0:1] | 
|  | ; GFX8-SDAG-NEXT:    v_min_f64 v[0:1], v[0:1], v[2:3] | 
|  | ; GFX8-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX8-GISEL-LABEL: v_minimumnum_f64: | 
|  | ; GFX8-GISEL:       ; %bb.0: | 
|  | ; GFX8-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX8-GISEL-NEXT:    v_max_f64 v[0:1], v[0:1], v[0:1] | 
|  | ; GFX8-GISEL-NEXT:    v_max_f64 v[2:3], v[2:3], v[2:3] | 
|  | ; GFX8-GISEL-NEXT:    v_min_f64 v[0:1], v[0:1], v[2:3] | 
|  | ; GFX8-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX9-SDAG-LABEL: v_minimumnum_f64: | 
|  | ; GFX9-SDAG:       ; %bb.0: | 
|  | ; GFX9-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX9-SDAG-NEXT:    v_max_f64 v[2:3], v[2:3], v[2:3] | 
|  | ; GFX9-SDAG-NEXT:    v_max_f64 v[0:1], v[0:1], v[0:1] | 
|  | ; GFX9-SDAG-NEXT:    v_min_f64 v[0:1], v[0:1], v[2:3] | 
|  | ; GFX9-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX9-GISEL-LABEL: v_minimumnum_f64: | 
|  | ; GFX9-GISEL:       ; %bb.0: | 
|  | ; GFX9-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX9-GISEL-NEXT:    v_max_f64 v[0:1], v[0:1], v[0:1] | 
|  | ; GFX9-GISEL-NEXT:    v_max_f64 v[2:3], v[2:3], v[2:3] | 
|  | ; GFX9-GISEL-NEXT:    v_min_f64 v[0:1], v[0:1], v[2:3] | 
|  | ; GFX9-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX10-SDAG-LABEL: v_minimumnum_f64: | 
|  | ; GFX10-SDAG:       ; %bb.0: | 
|  | ; GFX10-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX10-SDAG-NEXT:    v_max_f64 v[2:3], v[2:3], v[2:3] | 
|  | ; GFX10-SDAG-NEXT:    v_max_f64 v[0:1], v[0:1], v[0:1] | 
|  | ; GFX10-SDAG-NEXT:    v_min_f64 v[0:1], v[0:1], v[2:3] | 
|  | ; GFX10-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX10-GISEL-LABEL: v_minimumnum_f64: | 
|  | ; GFX10-GISEL:       ; %bb.0: | 
|  | ; GFX10-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX10-GISEL-NEXT:    v_max_f64 v[0:1], v[0:1], v[0:1] | 
|  | ; GFX10-GISEL-NEXT:    v_max_f64 v[2:3], v[2:3], v[2:3] | 
|  | ; GFX10-GISEL-NEXT:    v_min_f64 v[0:1], v[0:1], v[2:3] | 
|  | ; GFX10-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX11-SDAG-LABEL: v_minimumnum_f64: | 
|  | ; GFX11-SDAG:       ; %bb.0: | 
|  | ; GFX11-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX11-SDAG-NEXT:    v_max_f64 v[2:3], v[2:3], v[2:3] | 
|  | ; GFX11-SDAG-NEXT:    v_max_f64 v[0:1], v[0:1], v[0:1] | 
|  | ; GFX11-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX11-SDAG-NEXT:    v_min_f64 v[0:1], v[0:1], v[2:3] | 
|  | ; GFX11-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX11-GISEL-LABEL: v_minimumnum_f64: | 
|  | ; GFX11-GISEL:       ; %bb.0: | 
|  | ; GFX11-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX11-GISEL-NEXT:    v_max_f64 v[0:1], v[0:1], v[0:1] | 
|  | ; GFX11-GISEL-NEXT:    v_max_f64 v[2:3], v[2:3], v[2:3] | 
|  | ; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX11-GISEL-NEXT:    v_min_f64 v[0:1], v[0:1], v[2:3] | 
|  | ; GFX11-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX12-SDAG-LABEL: v_minimumnum_f64: | 
|  | ; GFX12-SDAG:       ; %bb.0: | 
|  | ; GFX12-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    s_wait_expcnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    s_wait_samplecnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    s_wait_bvhcnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    s_wait_kmcnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    v_max_num_f64_e32 v[2:3], v[2:3], v[2:3] | 
|  | ; GFX12-SDAG-NEXT:    v_max_num_f64_e32 v[0:1], v[0:1], v[0:1] | 
|  | ; GFX12-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX12-SDAG-NEXT:    v_min_num_f64_e32 v[0:1], v[0:1], v[2:3] | 
|  | ; GFX12-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX12-GISEL-LABEL: v_minimumnum_f64: | 
|  | ; GFX12-GISEL:       ; %bb.0: | 
|  | ; GFX12-GISEL-NEXT:    s_wait_loadcnt_dscnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    s_wait_expcnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    s_wait_samplecnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    s_wait_bvhcnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    s_wait_kmcnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    v_max_num_f64_e32 v[0:1], v[0:1], v[0:1] | 
|  | ; GFX12-GISEL-NEXT:    v_max_num_f64_e32 v[2:3], v[2:3], v[2:3] | 
|  | ; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX12-GISEL-NEXT:    v_min_num_f64_e32 v[0:1], v[0:1], v[2:3] | 
|  | ; GFX12-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | %result = call double @llvm.minimumnum.f64(double %x, double %y) | 
|  | ret double %result | 
|  | } | 
|  |  | 
|  | define double @v_minimumnum_f64_nnan(double %x, double %y) { | 
|  | ; GFX7-LABEL: v_minimumnum_f64_nnan: | 
|  | ; GFX7:       ; %bb.0: | 
|  | ; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX7-NEXT:    v_min_f64 v[0:1], v[0:1], v[2:3] | 
|  | ; GFX7-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX8-LABEL: v_minimumnum_f64_nnan: | 
|  | ; GFX8:       ; %bb.0: | 
|  | ; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX8-NEXT:    v_min_f64 v[0:1], v[0:1], v[2:3] | 
|  | ; GFX8-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX9-LABEL: v_minimumnum_f64_nnan: | 
|  | ; GFX9:       ; %bb.0: | 
|  | ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX9-NEXT:    v_min_f64 v[0:1], v[0:1], v[2:3] | 
|  | ; GFX9-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX10-LABEL: v_minimumnum_f64_nnan: | 
|  | ; GFX10:       ; %bb.0: | 
|  | ; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX10-NEXT:    v_min_f64 v[0:1], v[0:1], v[2:3] | 
|  | ; GFX10-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX11-LABEL: v_minimumnum_f64_nnan: | 
|  | ; GFX11:       ; %bb.0: | 
|  | ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX11-NEXT:    v_min_f64 v[0:1], v[0:1], v[2:3] | 
|  | ; GFX11-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX12-LABEL: v_minimumnum_f64_nnan: | 
|  | ; GFX12:       ; %bb.0: | 
|  | ; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0 | 
|  | ; GFX12-NEXT:    s_wait_expcnt 0x0 | 
|  | ; GFX12-NEXT:    s_wait_samplecnt 0x0 | 
|  | ; GFX12-NEXT:    s_wait_bvhcnt 0x0 | 
|  | ; GFX12-NEXT:    s_wait_kmcnt 0x0 | 
|  | ; GFX12-NEXT:    v_min_num_f64_e32 v[0:1], v[0:1], v[2:3] | 
|  | ; GFX12-NEXT:    s_setpc_b64 s[30:31] | 
|  | %result = call nnan double @llvm.minimumnum.f64(double %x, double %y) | 
|  | ret double %result | 
|  | } | 
|  |  | 
|  | define float @v_minimumnum_f32_1.0(float %x) { | 
|  | ; GFX7-LABEL: v_minimumnum_f32_1.0: | 
|  | ; GFX7:       ; %bb.0: | 
|  | ; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX7-NEXT:    v_mul_f32_e32 v0, 1.0, v0 | 
|  | ; GFX7-NEXT:    v_min_f32_e32 v0, 1.0, v0 | 
|  | ; GFX7-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX8-LABEL: v_minimumnum_f32_1.0: | 
|  | ; GFX8:       ; %bb.0: | 
|  | ; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX8-NEXT:    v_mul_f32_e32 v0, 1.0, v0 | 
|  | ; GFX8-NEXT:    v_min_f32_e32 v0, 1.0, v0 | 
|  | ; GFX8-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX9-LABEL: v_minimumnum_f32_1.0: | 
|  | ; GFX9:       ; %bb.0: | 
|  | ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX9-NEXT:    v_max_f32_e32 v0, v0, v0 | 
|  | ; GFX9-NEXT:    v_min_f32_e32 v0, 1.0, v0 | 
|  | ; GFX9-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX10-LABEL: v_minimumnum_f32_1.0: | 
|  | ; GFX10:       ; %bb.0: | 
|  | ; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX10-NEXT:    v_max_f32_e32 v0, v0, v0 | 
|  | ; GFX10-NEXT:    v_min_f32_e32 v0, 1.0, v0 | 
|  | ; GFX10-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX11-LABEL: v_minimumnum_f32_1.0: | 
|  | ; GFX11:       ; %bb.0: | 
|  | ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX11-NEXT:    v_max_f32_e32 v0, v0, v0 | 
|  | ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX11-NEXT:    v_min_f32_e32 v0, 1.0, v0 | 
|  | ; GFX11-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX12-LABEL: v_minimumnum_f32_1.0: | 
|  | ; GFX12:       ; %bb.0: | 
|  | ; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0 | 
|  | ; GFX12-NEXT:    s_wait_expcnt 0x0 | 
|  | ; GFX12-NEXT:    s_wait_samplecnt 0x0 | 
|  | ; GFX12-NEXT:    s_wait_bvhcnt 0x0 | 
|  | ; GFX12-NEXT:    s_wait_kmcnt 0x0 | 
|  | ; GFX12-NEXT:    v_max_num_f32_e32 v0, v0, v0 | 
|  | ; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX12-NEXT:    v_min_num_f32_e32 v0, 1.0, v0 | 
|  | ; GFX12-NEXT:    s_setpc_b64 s[30:31] | 
|  | %result = call float @llvm.minimumnum.f32(float %x, float 1.0) | 
|  | ret float %result | 
|  | } | 
|  |  | 
|  | define float @v_minimumnum_f32_rhs_not_snan(float %x, float %y) { | 
|  | ; GFX7-LABEL: v_minimumnum_f32_rhs_not_snan: | 
|  | ; GFX7:       ; %bb.0: | 
|  | ; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX7-NEXT:    v_mul_f32_e32 v1, 1.0, v1 | 
|  | ; GFX7-NEXT:    v_mul_f32_e32 v0, 1.0, v0 | 
|  | ; GFX7-NEXT:    v_min_f32_e32 v0, v0, v1 | 
|  | ; GFX7-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX8-LABEL: v_minimumnum_f32_rhs_not_snan: | 
|  | ; GFX8:       ; %bb.0: | 
|  | ; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX8-NEXT:    v_mul_f32_e32 v1, 1.0, v1 | 
|  | ; GFX8-NEXT:    v_mul_f32_e32 v0, 1.0, v0 | 
|  | ; GFX8-NEXT:    v_min_f32_e32 v0, v0, v1 | 
|  | ; GFX8-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX9-LABEL: v_minimumnum_f32_rhs_not_snan: | 
|  | ; GFX9:       ; %bb.0: | 
|  | ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX9-NEXT:    v_max_f32_e32 v1, v1, v1 | 
|  | ; GFX9-NEXT:    v_max_f32_e32 v0, v0, v0 | 
|  | ; GFX9-NEXT:    v_min_f32_e32 v0, v0, v1 | 
|  | ; GFX9-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX10-LABEL: v_minimumnum_f32_rhs_not_snan: | 
|  | ; GFX10:       ; %bb.0: | 
|  | ; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX10-NEXT:    v_max_f32_e32 v1, v1, v1 | 
|  | ; GFX10-NEXT:    v_max_f32_e32 v0, v0, v0 | 
|  | ; GFX10-NEXT:    v_min_f32_e32 v0, v0, v1 | 
|  | ; GFX10-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX11-LABEL: v_minimumnum_f32_rhs_not_snan: | 
|  | ; GFX11:       ; %bb.0: | 
|  | ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX11-NEXT:    v_dual_max_f32 v1, v1, v1 :: v_dual_max_f32 v0, v0, v0 | 
|  | ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX11-NEXT:    v_min_f32_e32 v0, v0, v1 | 
|  | ; GFX11-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX12-LABEL: v_minimumnum_f32_rhs_not_snan: | 
|  | ; GFX12:       ; %bb.0: | 
|  | ; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0 | 
|  | ; GFX12-NEXT:    s_wait_expcnt 0x0 | 
|  | ; GFX12-NEXT:    s_wait_samplecnt 0x0 | 
|  | ; GFX12-NEXT:    s_wait_bvhcnt 0x0 | 
|  | ; GFX12-NEXT:    s_wait_kmcnt 0x0 | 
|  | ; GFX12-NEXT:    v_dual_max_num_f32 v1, v1, v1 :: v_dual_max_num_f32 v0, v0, v0 | 
|  | ; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX12-NEXT:    v_min_num_f32_e32 v0, v0, v1 | 
|  | ; GFX12-NEXT:    s_setpc_b64 s[30:31] | 
|  | %canon.y = call float @llvm.canonicalize.f32(float %y) | 
|  | %result = call float @llvm.minimumnum.f32(float %x, float %canon.y) | 
|  | ret float %result | 
|  | } | 
|  |  | 
|  | define float @v_minimumnum_f32_lhs_not_snan(float %x, float %y) { | 
|  | ; GFX7-LABEL: v_minimumnum_f32_lhs_not_snan: | 
|  | ; GFX7:       ; %bb.0: | 
|  | ; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX7-NEXT:    v_mul_f32_e32 v0, 1.0, v0 | 
|  | ; GFX7-NEXT:    v_mul_f32_e32 v1, 1.0, v1 | 
|  | ; GFX7-NEXT:    v_min_f32_e32 v0, v0, v1 | 
|  | ; GFX7-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX8-LABEL: v_minimumnum_f32_lhs_not_snan: | 
|  | ; GFX8:       ; %bb.0: | 
|  | ; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX8-NEXT:    v_mul_f32_e32 v0, 1.0, v0 | 
|  | ; GFX8-NEXT:    v_mul_f32_e32 v1, 1.0, v1 | 
|  | ; GFX8-NEXT:    v_min_f32_e32 v0, v0, v1 | 
|  | ; GFX8-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX9-LABEL: v_minimumnum_f32_lhs_not_snan: | 
|  | ; GFX9:       ; %bb.0: | 
|  | ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX9-NEXT:    v_max_f32_e32 v0, v0, v0 | 
|  | ; GFX9-NEXT:    v_max_f32_e32 v1, v1, v1 | 
|  | ; GFX9-NEXT:    v_min_f32_e32 v0, v0, v1 | 
|  | ; GFX9-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX10-LABEL: v_minimumnum_f32_lhs_not_snan: | 
|  | ; GFX10:       ; %bb.0: | 
|  | ; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX10-NEXT:    v_max_f32_e32 v0, v0, v0 | 
|  | ; GFX10-NEXT:    v_max_f32_e32 v1, v1, v1 | 
|  | ; GFX10-NEXT:    v_min_f32_e32 v0, v0, v1 | 
|  | ; GFX10-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX11-LABEL: v_minimumnum_f32_lhs_not_snan: | 
|  | ; GFX11:       ; %bb.0: | 
|  | ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX11-NEXT:    v_dual_max_f32 v0, v0, v0 :: v_dual_max_f32 v1, v1, v1 | 
|  | ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX11-NEXT:    v_min_f32_e32 v0, v0, v1 | 
|  | ; GFX11-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX12-LABEL: v_minimumnum_f32_lhs_not_snan: | 
|  | ; GFX12:       ; %bb.0: | 
|  | ; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0 | 
|  | ; GFX12-NEXT:    s_wait_expcnt 0x0 | 
|  | ; GFX12-NEXT:    s_wait_samplecnt 0x0 | 
|  | ; GFX12-NEXT:    s_wait_bvhcnt 0x0 | 
|  | ; GFX12-NEXT:    s_wait_kmcnt 0x0 | 
|  | ; GFX12-NEXT:    v_dual_max_num_f32 v0, v0, v0 :: v_dual_max_num_f32 v1, v1, v1 | 
|  | ; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX12-NEXT:    v_min_num_f32_e32 v0, v0, v1 | 
|  | ; GFX12-NEXT:    s_setpc_b64 s[30:31] | 
|  | %canon.x = call float @llvm.canonicalize.f32(float %x) | 
|  | %result = call float @llvm.minimumnum.f32(float %canon.x, float %y) | 
|  | ret float %result | 
|  | } | 
|  |  | 
|  | define float @v_minimumnum_f32_both_operands_not_snan(float %x, float %y) { | 
|  | ; GFX7-LABEL: v_minimumnum_f32_both_operands_not_snan: | 
|  | ; GFX7:       ; %bb.0: | 
|  | ; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX7-NEXT:    v_mul_f32_e32 v0, 1.0, v0 | 
|  | ; GFX7-NEXT:    v_mul_f32_e32 v1, 1.0, v1 | 
|  | ; GFX7-NEXT:    v_min_f32_e32 v0, v0, v1 | 
|  | ; GFX7-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX8-LABEL: v_minimumnum_f32_both_operands_not_snan: | 
|  | ; GFX8:       ; %bb.0: | 
|  | ; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX8-NEXT:    v_mul_f32_e32 v0, 1.0, v0 | 
|  | ; GFX8-NEXT:    v_mul_f32_e32 v1, 1.0, v1 | 
|  | ; GFX8-NEXT:    v_min_f32_e32 v0, v0, v1 | 
|  | ; GFX8-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX9-LABEL: v_minimumnum_f32_both_operands_not_snan: | 
|  | ; GFX9:       ; %bb.0: | 
|  | ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX9-NEXT:    v_max_f32_e32 v0, v0, v0 | 
|  | ; GFX9-NEXT:    v_max_f32_e32 v1, v1, v1 | 
|  | ; GFX9-NEXT:    v_min_f32_e32 v0, v0, v1 | 
|  | ; GFX9-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX10-LABEL: v_minimumnum_f32_both_operands_not_snan: | 
|  | ; GFX10:       ; %bb.0: | 
|  | ; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX10-NEXT:    v_max_f32_e32 v0, v0, v0 | 
|  | ; GFX10-NEXT:    v_max_f32_e32 v1, v1, v1 | 
|  | ; GFX10-NEXT:    v_min_f32_e32 v0, v0, v1 | 
|  | ; GFX10-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX11-LABEL: v_minimumnum_f32_both_operands_not_snan: | 
|  | ; GFX11:       ; %bb.0: | 
|  | ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX11-NEXT:    v_dual_max_f32 v0, v0, v0 :: v_dual_max_f32 v1, v1, v1 | 
|  | ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX11-NEXT:    v_min_f32_e32 v0, v0, v1 | 
|  | ; GFX11-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX12-LABEL: v_minimumnum_f32_both_operands_not_snan: | 
|  | ; GFX12:       ; %bb.0: | 
|  | ; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0 | 
|  | ; GFX12-NEXT:    s_wait_expcnt 0x0 | 
|  | ; GFX12-NEXT:    s_wait_samplecnt 0x0 | 
|  | ; GFX12-NEXT:    s_wait_bvhcnt 0x0 | 
|  | ; GFX12-NEXT:    s_wait_kmcnt 0x0 | 
|  | ; GFX12-NEXT:    v_dual_max_num_f32 v0, v0, v0 :: v_dual_max_num_f32 v1, v1, v1 | 
|  | ; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX12-NEXT:    v_min_num_f32_e32 v0, v0, v1 | 
|  | ; GFX12-NEXT:    s_setpc_b64 s[30:31] | 
|  | %canon.x = call float @llvm.canonicalize.f32(float %x) | 
|  | %canon.y = call float @llvm.canonicalize.f32(float %y) | 
|  | %result = call float @llvm.minimumnum.f32(float %canon.x, float %canon.y) | 
|  | ret float %result | 
|  | } | 
|  |  | 
|  | define double @v_minimumnum_f64_1.0(double %x) { | 
|  | ; GFX7-LABEL: v_minimumnum_f64_1.0: | 
|  | ; GFX7:       ; %bb.0: | 
|  | ; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX7-NEXT:    v_max_f64 v[0:1], v[0:1], v[0:1] | 
|  | ; GFX7-NEXT:    v_min_f64 v[0:1], v[0:1], 1.0 | 
|  | ; GFX7-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX8-LABEL: v_minimumnum_f64_1.0: | 
|  | ; GFX8:       ; %bb.0: | 
|  | ; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX8-NEXT:    v_max_f64 v[0:1], v[0:1], v[0:1] | 
|  | ; GFX8-NEXT:    v_min_f64 v[0:1], v[0:1], 1.0 | 
|  | ; GFX8-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX9-LABEL: v_minimumnum_f64_1.0: | 
|  | ; GFX9:       ; %bb.0: | 
|  | ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX9-NEXT:    v_max_f64 v[0:1], v[0:1], v[0:1] | 
|  | ; GFX9-NEXT:    v_min_f64 v[0:1], v[0:1], 1.0 | 
|  | ; GFX9-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX10-LABEL: v_minimumnum_f64_1.0: | 
|  | ; GFX10:       ; %bb.0: | 
|  | ; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX10-NEXT:    v_max_f64 v[0:1], v[0:1], v[0:1] | 
|  | ; GFX10-NEXT:    v_min_f64 v[0:1], v[0:1], 1.0 | 
|  | ; GFX10-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX11-LABEL: v_minimumnum_f64_1.0: | 
|  | ; GFX11:       ; %bb.0: | 
|  | ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX11-NEXT:    v_max_f64 v[0:1], v[0:1], v[0:1] | 
|  | ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX11-NEXT:    v_min_f64 v[0:1], v[0:1], 1.0 | 
|  | ; GFX11-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX12-LABEL: v_minimumnum_f64_1.0: | 
|  | ; GFX12:       ; %bb.0: | 
|  | ; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0 | 
|  | ; GFX12-NEXT:    s_wait_expcnt 0x0 | 
|  | ; GFX12-NEXT:    s_wait_samplecnt 0x0 | 
|  | ; GFX12-NEXT:    s_wait_bvhcnt 0x0 | 
|  | ; GFX12-NEXT:    s_wait_kmcnt 0x0 | 
|  | ; GFX12-NEXT:    v_max_num_f64_e32 v[0:1], v[0:1], v[0:1] | 
|  | ; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX12-NEXT:    v_min_num_f64_e32 v[0:1], 1.0, v[0:1] | 
|  | ; GFX12-NEXT:    s_setpc_b64 s[30:31] | 
|  | %result = call double @llvm.minimumnum.f64(double %x, double 1.0) | 
|  | ret double %result | 
|  | } | 
|  |  | 
|  | define half @v_minimumnum_f16_v_s(half %x, half inreg %y) { | 
|  | ; GFX7-SDAG-LABEL: v_minimumnum_f16_v_s: | 
|  | ; GFX7-SDAG:       ; %bb.0: | 
|  | ; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v0, v0 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v1, s16 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v0, v0 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v1, v1 | 
|  | ; GFX7-SDAG-NEXT:    v_min_f32_e32 v0, v0, v1 | 
|  | ; GFX7-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX7-GISEL-LABEL: v_minimumnum_f16_v_s: | 
|  | ; GFX7-GISEL:       ; %bb.0: | 
|  | ; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v0, v0 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v1, s16 | 
|  | ; GFX7-GISEL-NEXT:    v_min_f32_e32 v0, v0, v1 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f16_f32_e32 v0, v0 | 
|  | ; GFX7-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX8-SDAG-LABEL: v_minimumnum_f16_v_s: | 
|  | ; GFX8-SDAG:       ; %bb.0: | 
|  | ; GFX8-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_e64 v1, s16, s16 | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_e32 v0, v0, v0 | 
|  | ; GFX8-SDAG-NEXT:    v_min_f16_e32 v0, v0, v1 | 
|  | ; GFX8-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX8-GISEL-LABEL: v_minimumnum_f16_v_s: | 
|  | ; GFX8-GISEL:       ; %bb.0: | 
|  | ; GFX8-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_e32 v0, v0, v0 | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_e64 v1, s16, s16 | 
|  | ; GFX8-GISEL-NEXT:    v_min_f16_e32 v0, v0, v1 | 
|  | ; GFX8-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX900-SDAG-LABEL: v_minimumnum_f16_v_s: | 
|  | ; GFX900-SDAG:       ; %bb.0: | 
|  | ; GFX900-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX900-SDAG-NEXT:    v_max_f16_e64 v1, s16, s16 | 
|  | ; GFX900-SDAG-NEXT:    v_max_f16_e32 v0, v0, v0 | 
|  | ; GFX900-SDAG-NEXT:    v_min_f16_e32 v0, v0, v1 | 
|  | ; GFX900-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX900-GISEL-LABEL: v_minimumnum_f16_v_s: | 
|  | ; GFX900-GISEL:       ; %bb.0: | 
|  | ; GFX900-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX900-GISEL-NEXT:    v_max_f16_e32 v0, v0, v0 | 
|  | ; GFX900-GISEL-NEXT:    v_max_f16_e64 v1, s16, s16 | 
|  | ; GFX900-GISEL-NEXT:    v_min_f16_e32 v0, v0, v1 | 
|  | ; GFX900-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX950-SDAG-LABEL: v_minimumnum_f16_v_s: | 
|  | ; GFX950-SDAG:       ; %bb.0: | 
|  | ; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX950-SDAG-NEXT:    v_max_f16_e64 v1, s0, s0 | 
|  | ; GFX950-SDAG-NEXT:    v_max_f16_e32 v0, v0, v0 | 
|  | ; GFX950-SDAG-NEXT:    v_min_f16_e32 v0, v0, v1 | 
|  | ; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX950-GISEL-LABEL: v_minimumnum_f16_v_s: | 
|  | ; GFX950-GISEL:       ; %bb.0: | 
|  | ; GFX950-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX950-GISEL-NEXT:    v_max_f16_e32 v0, v0, v0 | 
|  | ; GFX950-GISEL-NEXT:    v_max_f16_e64 v1, s0, s0 | 
|  | ; GFX950-GISEL-NEXT:    v_min_f16_e32 v0, v0, v1 | 
|  | ; GFX950-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX10-SDAG-LABEL: v_minimumnum_f16_v_s: | 
|  | ; GFX10-SDAG:       ; %bb.0: | 
|  | ; GFX10-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX10-SDAG-NEXT:    v_max_f16_e64 v1, s16, s16 | 
|  | ; GFX10-SDAG-NEXT:    v_max_f16_e32 v0, v0, v0 | 
|  | ; GFX10-SDAG-NEXT:    v_min_f16_e32 v0, v0, v1 | 
|  | ; GFX10-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX10-GISEL-LABEL: v_minimumnum_f16_v_s: | 
|  | ; GFX10-GISEL:       ; %bb.0: | 
|  | ; GFX10-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX10-GISEL-NEXT:    v_max_f16_e32 v0, v0, v0 | 
|  | ; GFX10-GISEL-NEXT:    v_max_f16_e64 v1, s16, s16 | 
|  | ; GFX10-GISEL-NEXT:    v_min_f16_e32 v0, v0, v1 | 
|  | ; GFX10-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX11-TRUE16-SDAG-LABEL: v_minimumnum_f16_v_s: | 
|  | ; GFX11-TRUE16-SDAG:       ; %bb.0: | 
|  | ; GFX11-TRUE16-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX11-TRUE16-SDAG-NEXT:    v_max_f16_e64 v0.h, s0, s0 | 
|  | ; GFX11-TRUE16-SDAG-NEXT:    v_max_f16_e32 v0.l, v0.l, v0.l | 
|  | ; GFX11-TRUE16-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX11-TRUE16-SDAG-NEXT:    v_min_f16_e32 v0.l, v0.l, v0.h | 
|  | ; GFX11-TRUE16-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX11-TRUE16-GISEL-LABEL: v_minimumnum_f16_v_s: | 
|  | ; GFX11-TRUE16-GISEL:       ; %bb.0: | 
|  | ; GFX11-TRUE16-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX11-TRUE16-GISEL-NEXT:    v_max_f16_e32 v0.l, v0.l, v0.l | 
|  | ; GFX11-TRUE16-GISEL-NEXT:    v_max_f16_e64 v0.h, s0, s0 | 
|  | ; GFX11-TRUE16-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX11-TRUE16-GISEL-NEXT:    v_min_f16_e32 v0.l, v0.l, v0.h | 
|  | ; GFX11-TRUE16-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX11-FAKE16-SDAG-LABEL: v_minimumnum_f16_v_s: | 
|  | ; GFX11-FAKE16-SDAG:       ; %bb.0: | 
|  | ; GFX11-FAKE16-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX11-FAKE16-SDAG-NEXT:    v_max_f16_e64 v1, s0, s0 | 
|  | ; GFX11-FAKE16-SDAG-NEXT:    v_max_f16_e32 v0, v0, v0 | 
|  | ; GFX11-FAKE16-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX11-FAKE16-SDAG-NEXT:    v_min_f16_e32 v0, v0, v1 | 
|  | ; GFX11-FAKE16-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX11-FAKE16-GISEL-LABEL: v_minimumnum_f16_v_s: | 
|  | ; GFX11-FAKE16-GISEL:       ; %bb.0: | 
|  | ; GFX11-FAKE16-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX11-FAKE16-GISEL-NEXT:    v_max_f16_e32 v0, v0, v0 | 
|  | ; GFX11-FAKE16-GISEL-NEXT:    v_max_f16_e64 v1, s0, s0 | 
|  | ; GFX11-FAKE16-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX11-FAKE16-GISEL-NEXT:    v_min_f16_e32 v0, v0, v1 | 
|  | ; GFX11-FAKE16-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX12-TRUE16-SDAG-LABEL: v_minimumnum_f16_v_s: | 
|  | ; GFX12-TRUE16-SDAG:       ; %bb.0: | 
|  | ; GFX12-TRUE16-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0 | 
|  | ; GFX12-TRUE16-SDAG-NEXT:    s_wait_expcnt 0x0 | 
|  | ; GFX12-TRUE16-SDAG-NEXT:    s_wait_samplecnt 0x0 | 
|  | ; GFX12-TRUE16-SDAG-NEXT:    s_wait_bvhcnt 0x0 | 
|  | ; GFX12-TRUE16-SDAG-NEXT:    s_wait_kmcnt 0x0 | 
|  | ; GFX12-TRUE16-SDAG-NEXT:    v_max_num_f16_e64 v0.h, s0, s0 | 
|  | ; GFX12-TRUE16-SDAG-NEXT:    v_max_num_f16_e32 v0.l, v0.l, v0.l | 
|  | ; GFX12-TRUE16-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX12-TRUE16-SDAG-NEXT:    v_min_num_f16_e32 v0.l, v0.l, v0.h | 
|  | ; GFX12-TRUE16-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX12-TRUE16-GISEL-LABEL: v_minimumnum_f16_v_s: | 
|  | ; GFX12-TRUE16-GISEL:       ; %bb.0: | 
|  | ; GFX12-TRUE16-GISEL-NEXT:    s_wait_loadcnt_dscnt 0x0 | 
|  | ; GFX12-TRUE16-GISEL-NEXT:    s_wait_expcnt 0x0 | 
|  | ; GFX12-TRUE16-GISEL-NEXT:    s_wait_samplecnt 0x0 | 
|  | ; GFX12-TRUE16-GISEL-NEXT:    s_wait_bvhcnt 0x0 | 
|  | ; GFX12-TRUE16-GISEL-NEXT:    s_wait_kmcnt 0x0 | 
|  | ; GFX12-TRUE16-GISEL-NEXT:    v_max_num_f16_e32 v0.l, v0.l, v0.l | 
|  | ; GFX12-TRUE16-GISEL-NEXT:    v_max_num_f16_e64 v0.h, s0, s0 | 
|  | ; GFX12-TRUE16-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX12-TRUE16-GISEL-NEXT:    v_min_num_f16_e32 v0.l, v0.l, v0.h | 
|  | ; GFX12-TRUE16-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX12-FAKE16-SDAG-LABEL: v_minimumnum_f16_v_s: | 
|  | ; GFX12-FAKE16-SDAG:       ; %bb.0: | 
|  | ; GFX12-FAKE16-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0 | 
|  | ; GFX12-FAKE16-SDAG-NEXT:    s_wait_expcnt 0x0 | 
|  | ; GFX12-FAKE16-SDAG-NEXT:    s_wait_samplecnt 0x0 | 
|  | ; GFX12-FAKE16-SDAG-NEXT:    s_wait_bvhcnt 0x0 | 
|  | ; GFX12-FAKE16-SDAG-NEXT:    s_wait_kmcnt 0x0 | 
|  | ; GFX12-FAKE16-SDAG-NEXT:    v_max_num_f16_e64 v1, s0, s0 | 
|  | ; GFX12-FAKE16-SDAG-NEXT:    v_max_num_f16_e32 v0, v0, v0 | 
|  | ; GFX12-FAKE16-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX12-FAKE16-SDAG-NEXT:    v_min_num_f16_e32 v0, v0, v1 | 
|  | ; GFX12-FAKE16-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX12-FAKE16-GISEL-LABEL: v_minimumnum_f16_v_s: | 
|  | ; GFX12-FAKE16-GISEL:       ; %bb.0: | 
|  | ; GFX12-FAKE16-GISEL-NEXT:    s_wait_loadcnt_dscnt 0x0 | 
|  | ; GFX12-FAKE16-GISEL-NEXT:    s_wait_expcnt 0x0 | 
|  | ; GFX12-FAKE16-GISEL-NEXT:    s_wait_samplecnt 0x0 | 
|  | ; GFX12-FAKE16-GISEL-NEXT:    s_wait_bvhcnt 0x0 | 
|  | ; GFX12-FAKE16-GISEL-NEXT:    s_wait_kmcnt 0x0 | 
|  | ; GFX12-FAKE16-GISEL-NEXT:    v_max_num_f16_e32 v0, v0, v0 | 
|  | ; GFX12-FAKE16-GISEL-NEXT:    v_max_num_f16_e64 v1, s0, s0 | 
|  | ; GFX12-FAKE16-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX12-FAKE16-GISEL-NEXT:    v_min_num_f16_e32 v0, v0, v1 | 
|  | ; GFX12-FAKE16-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | %result = call half @llvm.minimumnum.f16(half %x, half %y) | 
|  | ret half %result | 
|  | } | 
|  |  | 
|  | define half @v_minimumnum_f16_s_s(half inreg %x, half inreg %y) { | 
|  | ; GFX7-SDAG-LABEL: v_minimumnum_f16_s_s: | 
|  | ; GFX7-SDAG:       ; %bb.0: | 
|  | ; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v0, s16 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v1, s17 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v0, v0 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v1, v1 | 
|  | ; GFX7-SDAG-NEXT:    v_min_f32_e32 v0, v0, v1 | 
|  | ; GFX7-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX7-GISEL-LABEL: v_minimumnum_f16_s_s: | 
|  | ; GFX7-GISEL:       ; %bb.0: | 
|  | ; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v0, s16 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v1, s17 | 
|  | ; GFX7-GISEL-NEXT:    v_min_f32_e32 v0, v0, v1 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f16_f32_e32 v0, v0 | 
|  | ; GFX7-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX8-SDAG-LABEL: v_minimumnum_f16_s_s: | 
|  | ; GFX8-SDAG:       ; %bb.0: | 
|  | ; GFX8-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_e64 v0, s17, s17 | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_e64 v1, s16, s16 | 
|  | ; GFX8-SDAG-NEXT:    v_min_f16_e32 v0, v1, v0 | 
|  | ; GFX8-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX8-GISEL-LABEL: v_minimumnum_f16_s_s: | 
|  | ; GFX8-GISEL:       ; %bb.0: | 
|  | ; GFX8-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_e64 v0, s16, s16 | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_e64 v1, s17, s17 | 
|  | ; GFX8-GISEL-NEXT:    v_min_f16_e32 v0, v0, v1 | 
|  | ; GFX8-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX900-SDAG-LABEL: v_minimumnum_f16_s_s: | 
|  | ; GFX900-SDAG:       ; %bb.0: | 
|  | ; GFX900-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX900-SDAG-NEXT:    v_max_f16_e64 v0, s17, s17 | 
|  | ; GFX900-SDAG-NEXT:    v_max_f16_e64 v1, s16, s16 | 
|  | ; GFX900-SDAG-NEXT:    v_min_f16_e32 v0, v1, v0 | 
|  | ; GFX900-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX900-GISEL-LABEL: v_minimumnum_f16_s_s: | 
|  | ; GFX900-GISEL:       ; %bb.0: | 
|  | ; GFX900-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX900-GISEL-NEXT:    v_max_f16_e64 v0, s16, s16 | 
|  | ; GFX900-GISEL-NEXT:    v_max_f16_e64 v1, s17, s17 | 
|  | ; GFX900-GISEL-NEXT:    v_min_f16_e32 v0, v0, v1 | 
|  | ; GFX900-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX950-SDAG-LABEL: v_minimumnum_f16_s_s: | 
|  | ; GFX950-SDAG:       ; %bb.0: | 
|  | ; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX950-SDAG-NEXT:    v_max_f16_e64 v0, s1, s1 | 
|  | ; GFX950-SDAG-NEXT:    v_max_f16_e64 v1, s0, s0 | 
|  | ; GFX950-SDAG-NEXT:    v_min_f16_e32 v0, v1, v0 | 
|  | ; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX950-GISEL-LABEL: v_minimumnum_f16_s_s: | 
|  | ; GFX950-GISEL:       ; %bb.0: | 
|  | ; GFX950-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX950-GISEL-NEXT:    v_max_f16_e64 v0, s0, s0 | 
|  | ; GFX950-GISEL-NEXT:    v_max_f16_e64 v1, s1, s1 | 
|  | ; GFX950-GISEL-NEXT:    v_min_f16_e32 v0, v0, v1 | 
|  | ; GFX950-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX10-SDAG-LABEL: v_minimumnum_f16_s_s: | 
|  | ; GFX10-SDAG:       ; %bb.0: | 
|  | ; GFX10-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX10-SDAG-NEXT:    v_max_f16_e64 v0, s17, s17 | 
|  | ; GFX10-SDAG-NEXT:    v_max_f16_e64 v1, s16, s16 | 
|  | ; GFX10-SDAG-NEXT:    v_min_f16_e32 v0, v1, v0 | 
|  | ; GFX10-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX10-GISEL-LABEL: v_minimumnum_f16_s_s: | 
|  | ; GFX10-GISEL:       ; %bb.0: | 
|  | ; GFX10-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX10-GISEL-NEXT:    v_max_f16_e64 v0, s16, s16 | 
|  | ; GFX10-GISEL-NEXT:    v_max_f16_e64 v1, s17, s17 | 
|  | ; GFX10-GISEL-NEXT:    v_min_f16_e32 v0, v0, v1 | 
|  | ; GFX10-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX11-TRUE16-SDAG-LABEL: v_minimumnum_f16_s_s: | 
|  | ; GFX11-TRUE16-SDAG:       ; %bb.0: | 
|  | ; GFX11-TRUE16-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX11-TRUE16-SDAG-NEXT:    v_max_f16_e64 v0.l, s1, s1 | 
|  | ; GFX11-TRUE16-SDAG-NEXT:    v_max_f16_e64 v0.h, s0, s0 | 
|  | ; GFX11-TRUE16-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX11-TRUE16-SDAG-NEXT:    v_min_f16_e32 v0.l, v0.h, v0.l | 
|  | ; GFX11-TRUE16-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX11-TRUE16-GISEL-LABEL: v_minimumnum_f16_s_s: | 
|  | ; GFX11-TRUE16-GISEL:       ; %bb.0: | 
|  | ; GFX11-TRUE16-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX11-TRUE16-GISEL-NEXT:    v_max_f16_e64 v0.l, s0, s0 | 
|  | ; GFX11-TRUE16-GISEL-NEXT:    v_max_f16_e64 v0.h, s1, s1 | 
|  | ; GFX11-TRUE16-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX11-TRUE16-GISEL-NEXT:    v_min_f16_e32 v0.l, v0.l, v0.h | 
|  | ; GFX11-TRUE16-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX11-FAKE16-SDAG-LABEL: v_minimumnum_f16_s_s: | 
|  | ; GFX11-FAKE16-SDAG:       ; %bb.0: | 
|  | ; GFX11-FAKE16-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX11-FAKE16-SDAG-NEXT:    v_max_f16_e64 v0, s1, s1 | 
|  | ; GFX11-FAKE16-SDAG-NEXT:    v_max_f16_e64 v1, s0, s0 | 
|  | ; GFX11-FAKE16-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX11-FAKE16-SDAG-NEXT:    v_min_f16_e32 v0, v1, v0 | 
|  | ; GFX11-FAKE16-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX11-FAKE16-GISEL-LABEL: v_minimumnum_f16_s_s: | 
|  | ; GFX11-FAKE16-GISEL:       ; %bb.0: | 
|  | ; GFX11-FAKE16-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX11-FAKE16-GISEL-NEXT:    v_max_f16_e64 v0, s0, s0 | 
|  | ; GFX11-FAKE16-GISEL-NEXT:    v_max_f16_e64 v1, s1, s1 | 
|  | ; GFX11-FAKE16-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX11-FAKE16-GISEL-NEXT:    v_min_f16_e32 v0, v0, v1 | 
|  | ; GFX11-FAKE16-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX12-TRUE16-SDAG-LABEL: v_minimumnum_f16_s_s: | 
|  | ; GFX12-TRUE16-SDAG:       ; %bb.0: | 
|  | ; GFX12-TRUE16-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0 | 
|  | ; GFX12-TRUE16-SDAG-NEXT:    s_wait_expcnt 0x0 | 
|  | ; GFX12-TRUE16-SDAG-NEXT:    s_wait_samplecnt 0x0 | 
|  | ; GFX12-TRUE16-SDAG-NEXT:    s_wait_bvhcnt 0x0 | 
|  | ; GFX12-TRUE16-SDAG-NEXT:    s_wait_kmcnt 0x0 | 
|  | ; GFX12-TRUE16-SDAG-NEXT:    v_max_num_f16_e64 v0.l, s1, s1 | 
|  | ; GFX12-TRUE16-SDAG-NEXT:    v_max_num_f16_e64 v0.h, s0, s0 | 
|  | ; GFX12-TRUE16-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX12-TRUE16-SDAG-NEXT:    v_min_num_f16_e32 v0.l, v0.h, v0.l | 
|  | ; GFX12-TRUE16-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX12-TRUE16-GISEL-LABEL: v_minimumnum_f16_s_s: | 
|  | ; GFX12-TRUE16-GISEL:       ; %bb.0: | 
|  | ; GFX12-TRUE16-GISEL-NEXT:    s_wait_loadcnt_dscnt 0x0 | 
|  | ; GFX12-TRUE16-GISEL-NEXT:    s_wait_expcnt 0x0 | 
|  | ; GFX12-TRUE16-GISEL-NEXT:    s_wait_samplecnt 0x0 | 
|  | ; GFX12-TRUE16-GISEL-NEXT:    s_wait_bvhcnt 0x0 | 
|  | ; GFX12-TRUE16-GISEL-NEXT:    s_wait_kmcnt 0x0 | 
|  | ; GFX12-TRUE16-GISEL-NEXT:    v_max_num_f16_e64 v0.l, s0, s0 | 
|  | ; GFX12-TRUE16-GISEL-NEXT:    v_max_num_f16_e64 v0.h, s1, s1 | 
|  | ; GFX12-TRUE16-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX12-TRUE16-GISEL-NEXT:    v_min_num_f16_e32 v0.l, v0.l, v0.h | 
|  | ; GFX12-TRUE16-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX12-FAKE16-SDAG-LABEL: v_minimumnum_f16_s_s: | 
|  | ; GFX12-FAKE16-SDAG:       ; %bb.0: | 
|  | ; GFX12-FAKE16-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0 | 
|  | ; GFX12-FAKE16-SDAG-NEXT:    s_wait_expcnt 0x0 | 
|  | ; GFX12-FAKE16-SDAG-NEXT:    s_wait_samplecnt 0x0 | 
|  | ; GFX12-FAKE16-SDAG-NEXT:    s_wait_bvhcnt 0x0 | 
|  | ; GFX12-FAKE16-SDAG-NEXT:    s_wait_kmcnt 0x0 | 
|  | ; GFX12-FAKE16-SDAG-NEXT:    v_max_num_f16_e64 v0, s1, s1 | 
|  | ; GFX12-FAKE16-SDAG-NEXT:    v_max_num_f16_e64 v1, s0, s0 | 
|  | ; GFX12-FAKE16-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX12-FAKE16-SDAG-NEXT:    v_min_num_f16_e32 v0, v1, v0 | 
|  | ; GFX12-FAKE16-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX12-FAKE16-GISEL-LABEL: v_minimumnum_f16_s_s: | 
|  | ; GFX12-FAKE16-GISEL:       ; %bb.0: | 
|  | ; GFX12-FAKE16-GISEL-NEXT:    s_wait_loadcnt_dscnt 0x0 | 
|  | ; GFX12-FAKE16-GISEL-NEXT:    s_wait_expcnt 0x0 | 
|  | ; GFX12-FAKE16-GISEL-NEXT:    s_wait_samplecnt 0x0 | 
|  | ; GFX12-FAKE16-GISEL-NEXT:    s_wait_bvhcnt 0x0 | 
|  | ; GFX12-FAKE16-GISEL-NEXT:    s_wait_kmcnt 0x0 | 
|  | ; GFX12-FAKE16-GISEL-NEXT:    v_max_num_f16_e64 v0, s0, s0 | 
|  | ; GFX12-FAKE16-GISEL-NEXT:    v_max_num_f16_e64 v1, s1, s1 | 
|  | ; GFX12-FAKE16-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX12-FAKE16-GISEL-NEXT:    v_min_num_f16_e32 v0, v0, v1 | 
|  | ; GFX12-FAKE16-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | %result = call half @llvm.minimumnum.f16(half %x, half %y) | 
|  | ret half %result | 
|  | } | 
|  |  | 
|  | define float @v_minimumnum_f32_s_v(float inreg %x, float %y) { | 
|  | ; GFX7-SDAG-LABEL: v_minimumnum_f32_s_v: | 
|  | ; GFX7-SDAG:       ; %bb.0: | 
|  | ; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX7-SDAG-NEXT:    v_mul_f32_e32 v0, 1.0, v0 | 
|  | ; GFX7-SDAG-NEXT:    v_mul_f32_e64 v1, 1.0, s16 | 
|  | ; GFX7-SDAG-NEXT:    v_min_f32_e32 v0, v1, v0 | 
|  | ; GFX7-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX7-GISEL-LABEL: v_minimumnum_f32_s_v: | 
|  | ; GFX7-GISEL:       ; %bb.0: | 
|  | ; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX7-GISEL-NEXT:    v_mul_f32_e64 v1, 1.0, s16 | 
|  | ; GFX7-GISEL-NEXT:    v_mul_f32_e32 v0, 1.0, v0 | 
|  | ; GFX7-GISEL-NEXT:    v_min_f32_e32 v0, v1, v0 | 
|  | ; GFX7-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX8-SDAG-LABEL: v_minimumnum_f32_s_v: | 
|  | ; GFX8-SDAG:       ; %bb.0: | 
|  | ; GFX8-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX8-SDAG-NEXT:    v_mul_f32_e32 v0, 1.0, v0 | 
|  | ; GFX8-SDAG-NEXT:    v_mul_f32_e64 v1, 1.0, s16 | 
|  | ; GFX8-SDAG-NEXT:    v_min_f32_e32 v0, v1, v0 | 
|  | ; GFX8-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX8-GISEL-LABEL: v_minimumnum_f32_s_v: | 
|  | ; GFX8-GISEL:       ; %bb.0: | 
|  | ; GFX8-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX8-GISEL-NEXT:    v_mul_f32_e64 v1, 1.0, s16 | 
|  | ; GFX8-GISEL-NEXT:    v_mul_f32_e32 v0, 1.0, v0 | 
|  | ; GFX8-GISEL-NEXT:    v_min_f32_e32 v0, v1, v0 | 
|  | ; GFX8-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX900-SDAG-LABEL: v_minimumnum_f32_s_v: | 
|  | ; GFX900-SDAG:       ; %bb.0: | 
|  | ; GFX900-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX900-SDAG-NEXT:    v_max_f32_e32 v0, v0, v0 | 
|  | ; GFX900-SDAG-NEXT:    v_max_f32_e64 v1, s16, s16 | 
|  | ; GFX900-SDAG-NEXT:    v_min_f32_e32 v0, v1, v0 | 
|  | ; GFX900-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX900-GISEL-LABEL: v_minimumnum_f32_s_v: | 
|  | ; GFX900-GISEL:       ; %bb.0: | 
|  | ; GFX900-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX900-GISEL-NEXT:    v_max_f32_e64 v1, s16, s16 | 
|  | ; GFX900-GISEL-NEXT:    v_max_f32_e32 v0, v0, v0 | 
|  | ; GFX900-GISEL-NEXT:    v_min_f32_e32 v0, v1, v0 | 
|  | ; GFX900-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX950-SDAG-LABEL: v_minimumnum_f32_s_v: | 
|  | ; GFX950-SDAG:       ; %bb.0: | 
|  | ; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX950-SDAG-NEXT:    v_max_f32_e32 v0, v0, v0 | 
|  | ; GFX950-SDAG-NEXT:    v_max_f32_e64 v1, s0, s0 | 
|  | ; GFX950-SDAG-NEXT:    v_min_f32_e32 v0, v1, v0 | 
|  | ; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX950-GISEL-LABEL: v_minimumnum_f32_s_v: | 
|  | ; GFX950-GISEL:       ; %bb.0: | 
|  | ; GFX950-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX950-GISEL-NEXT:    v_max_f32_e64 v1, s0, s0 | 
|  | ; GFX950-GISEL-NEXT:    v_max_f32_e32 v0, v0, v0 | 
|  | ; GFX950-GISEL-NEXT:    v_min_f32_e32 v0, v1, v0 | 
|  | ; GFX950-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX10-SDAG-LABEL: v_minimumnum_f32_s_v: | 
|  | ; GFX10-SDAG:       ; %bb.0: | 
|  | ; GFX10-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX10-SDAG-NEXT:    v_max_f32_e32 v0, v0, v0 | 
|  | ; GFX10-SDAG-NEXT:    v_max_f32_e64 v1, s16, s16 | 
|  | ; GFX10-SDAG-NEXT:    v_min_f32_e32 v0, v1, v0 | 
|  | ; GFX10-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX10-GISEL-LABEL: v_minimumnum_f32_s_v: | 
|  | ; GFX10-GISEL:       ; %bb.0: | 
|  | ; GFX10-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX10-GISEL-NEXT:    v_max_f32_e64 v1, s16, s16 | 
|  | ; GFX10-GISEL-NEXT:    v_max_f32_e32 v0, v0, v0 | 
|  | ; GFX10-GISEL-NEXT:    v_min_f32_e32 v0, v1, v0 | 
|  | ; GFX10-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX11-SDAG-LABEL: v_minimumnum_f32_s_v: | 
|  | ; GFX11-SDAG:       ; %bb.0: | 
|  | ; GFX11-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX11-SDAG-NEXT:    v_max_f32_e32 v0, v0, v0 | 
|  | ; GFX11-SDAG-NEXT:    v_max_f32_e64 v1, s0, s0 | 
|  | ; GFX11-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX11-SDAG-NEXT:    v_min_f32_e32 v0, v1, v0 | 
|  | ; GFX11-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX11-GISEL-LABEL: v_minimumnum_f32_s_v: | 
|  | ; GFX11-GISEL:       ; %bb.0: | 
|  | ; GFX11-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX11-GISEL-NEXT:    v_max_f32_e64 v1, s0, s0 | 
|  | ; GFX11-GISEL-NEXT:    v_max_f32_e32 v0, v0, v0 | 
|  | ; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX11-GISEL-NEXT:    v_min_f32_e32 v0, v1, v0 | 
|  | ; GFX11-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX12-SDAG-LABEL: v_minimumnum_f32_s_v: | 
|  | ; GFX12-SDAG:       ; %bb.0: | 
|  | ; GFX12-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    s_wait_expcnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    s_wait_samplecnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    s_wait_bvhcnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    s_wait_kmcnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    v_max_num_f32_e32 v0, v0, v0 | 
|  | ; GFX12-SDAG-NEXT:    v_max_num_f32_e64 v1, s0, s0 | 
|  | ; GFX12-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX12-SDAG-NEXT:    v_min_num_f32_e32 v0, v1, v0 | 
|  | ; GFX12-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX12-GISEL-LABEL: v_minimumnum_f32_s_v: | 
|  | ; GFX12-GISEL:       ; %bb.0: | 
|  | ; GFX12-GISEL-NEXT:    s_wait_loadcnt_dscnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    s_wait_expcnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    s_wait_samplecnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    s_wait_bvhcnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    s_wait_kmcnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    v_max_num_f32_e64 v1, s0, s0 | 
|  | ; GFX12-GISEL-NEXT:    v_max_num_f32_e32 v0, v0, v0 | 
|  | ; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX12-GISEL-NEXT:    v_min_num_f32_e32 v0, v1, v0 | 
|  | ; GFX12-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | %result = call float @llvm.minimumnum.f32(float %x, float %y) | 
|  | ret float %result | 
|  | } | 
|  |  | 
|  | define float @v_minimumnum_f32_v_s(float %x, float inreg %y) { | 
|  | ; GFX7-SDAG-LABEL: v_minimumnum_f32_v_s: | 
|  | ; GFX7-SDAG:       ; %bb.0: | 
|  | ; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX7-SDAG-NEXT:    v_mul_f32_e64 v1, 1.0, s16 | 
|  | ; GFX7-SDAG-NEXT:    v_mul_f32_e32 v0, 1.0, v0 | 
|  | ; GFX7-SDAG-NEXT:    v_min_f32_e32 v0, v0, v1 | 
|  | ; GFX7-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX7-GISEL-LABEL: v_minimumnum_f32_v_s: | 
|  | ; GFX7-GISEL:       ; %bb.0: | 
|  | ; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX7-GISEL-NEXT:    v_mul_f32_e32 v0, 1.0, v0 | 
|  | ; GFX7-GISEL-NEXT:    v_mul_f32_e64 v1, 1.0, s16 | 
|  | ; GFX7-GISEL-NEXT:    v_min_f32_e32 v0, v0, v1 | 
|  | ; GFX7-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX8-SDAG-LABEL: v_minimumnum_f32_v_s: | 
|  | ; GFX8-SDAG:       ; %bb.0: | 
|  | ; GFX8-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX8-SDAG-NEXT:    v_mul_f32_e64 v1, 1.0, s16 | 
|  | ; GFX8-SDAG-NEXT:    v_mul_f32_e32 v0, 1.0, v0 | 
|  | ; GFX8-SDAG-NEXT:    v_min_f32_e32 v0, v0, v1 | 
|  | ; GFX8-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX8-GISEL-LABEL: v_minimumnum_f32_v_s: | 
|  | ; GFX8-GISEL:       ; %bb.0: | 
|  | ; GFX8-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX8-GISEL-NEXT:    v_mul_f32_e32 v0, 1.0, v0 | 
|  | ; GFX8-GISEL-NEXT:    v_mul_f32_e64 v1, 1.0, s16 | 
|  | ; GFX8-GISEL-NEXT:    v_min_f32_e32 v0, v0, v1 | 
|  | ; GFX8-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX900-SDAG-LABEL: v_minimumnum_f32_v_s: | 
|  | ; GFX900-SDAG:       ; %bb.0: | 
|  | ; GFX900-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX900-SDAG-NEXT:    v_max_f32_e64 v1, s16, s16 | 
|  | ; GFX900-SDAG-NEXT:    v_max_f32_e32 v0, v0, v0 | 
|  | ; GFX900-SDAG-NEXT:    v_min_f32_e32 v0, v0, v1 | 
|  | ; GFX900-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX900-GISEL-LABEL: v_minimumnum_f32_v_s: | 
|  | ; GFX900-GISEL:       ; %bb.0: | 
|  | ; GFX900-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX900-GISEL-NEXT:    v_max_f32_e32 v0, v0, v0 | 
|  | ; GFX900-GISEL-NEXT:    v_max_f32_e64 v1, s16, s16 | 
|  | ; GFX900-GISEL-NEXT:    v_min_f32_e32 v0, v0, v1 | 
|  | ; GFX900-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX950-SDAG-LABEL: v_minimumnum_f32_v_s: | 
|  | ; GFX950-SDAG:       ; %bb.0: | 
|  | ; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX950-SDAG-NEXT:    v_max_f32_e64 v1, s0, s0 | 
|  | ; GFX950-SDAG-NEXT:    v_max_f32_e32 v0, v0, v0 | 
|  | ; GFX950-SDAG-NEXT:    v_min_f32_e32 v0, v0, v1 | 
|  | ; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX950-GISEL-LABEL: v_minimumnum_f32_v_s: | 
|  | ; GFX950-GISEL:       ; %bb.0: | 
|  | ; GFX950-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX950-GISEL-NEXT:    v_max_f32_e32 v0, v0, v0 | 
|  | ; GFX950-GISEL-NEXT:    v_max_f32_e64 v1, s0, s0 | 
|  | ; GFX950-GISEL-NEXT:    v_min_f32_e32 v0, v0, v1 | 
|  | ; GFX950-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX10-SDAG-LABEL: v_minimumnum_f32_v_s: | 
|  | ; GFX10-SDAG:       ; %bb.0: | 
|  | ; GFX10-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX10-SDAG-NEXT:    v_max_f32_e64 v1, s16, s16 | 
|  | ; GFX10-SDAG-NEXT:    v_max_f32_e32 v0, v0, v0 | 
|  | ; GFX10-SDAG-NEXT:    v_min_f32_e32 v0, v0, v1 | 
|  | ; GFX10-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX10-GISEL-LABEL: v_minimumnum_f32_v_s: | 
|  | ; GFX10-GISEL:       ; %bb.0: | 
|  | ; GFX10-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX10-GISEL-NEXT:    v_max_f32_e32 v0, v0, v0 | 
|  | ; GFX10-GISEL-NEXT:    v_max_f32_e64 v1, s16, s16 | 
|  | ; GFX10-GISEL-NEXT:    v_min_f32_e32 v0, v0, v1 | 
|  | ; GFX10-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX11-SDAG-LABEL: v_minimumnum_f32_v_s: | 
|  | ; GFX11-SDAG:       ; %bb.0: | 
|  | ; GFX11-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX11-SDAG-NEXT:    v_max_f32_e64 v1, s0, s0 | 
|  | ; GFX11-SDAG-NEXT:    v_max_f32_e32 v0, v0, v0 | 
|  | ; GFX11-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX11-SDAG-NEXT:    v_min_f32_e32 v0, v0, v1 | 
|  | ; GFX11-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX11-GISEL-LABEL: v_minimumnum_f32_v_s: | 
|  | ; GFX11-GISEL:       ; %bb.0: | 
|  | ; GFX11-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX11-GISEL-NEXT:    v_max_f32_e32 v0, v0, v0 | 
|  | ; GFX11-GISEL-NEXT:    v_max_f32_e64 v1, s0, s0 | 
|  | ; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX11-GISEL-NEXT:    v_min_f32_e32 v0, v0, v1 | 
|  | ; GFX11-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX12-SDAG-LABEL: v_minimumnum_f32_v_s: | 
|  | ; GFX12-SDAG:       ; %bb.0: | 
|  | ; GFX12-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    s_wait_expcnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    s_wait_samplecnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    s_wait_bvhcnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    s_wait_kmcnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    v_max_num_f32_e64 v1, s0, s0 | 
|  | ; GFX12-SDAG-NEXT:    v_max_num_f32_e32 v0, v0, v0 | 
|  | ; GFX12-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX12-SDAG-NEXT:    v_min_num_f32_e32 v0, v0, v1 | 
|  | ; GFX12-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX12-GISEL-LABEL: v_minimumnum_f32_v_s: | 
|  | ; GFX12-GISEL:       ; %bb.0: | 
|  | ; GFX12-GISEL-NEXT:    s_wait_loadcnt_dscnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    s_wait_expcnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    s_wait_samplecnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    s_wait_bvhcnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    s_wait_kmcnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    v_max_num_f32_e32 v0, v0, v0 | 
|  | ; GFX12-GISEL-NEXT:    v_max_num_f32_e64 v1, s0, s0 | 
|  | ; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX12-GISEL-NEXT:    v_min_num_f32_e32 v0, v0, v1 | 
|  | ; GFX12-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | %result = call float @llvm.minimumnum.f32(float %x, float %y) | 
|  | ret float %result | 
|  | } | 
|  |  | 
|  | define float @v_minimumnum_f32_s_s(float inreg %x, float inreg %y) { | 
|  | ; GFX7-SDAG-LABEL: v_minimumnum_f32_s_s: | 
|  | ; GFX7-SDAG:       ; %bb.0: | 
|  | ; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX7-SDAG-NEXT:    v_mul_f32_e64 v0, 1.0, s17 | 
|  | ; GFX7-SDAG-NEXT:    v_mul_f32_e64 v1, 1.0, s16 | 
|  | ; GFX7-SDAG-NEXT:    v_min_f32_e32 v0, v1, v0 | 
|  | ; GFX7-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX7-GISEL-LABEL: v_minimumnum_f32_s_s: | 
|  | ; GFX7-GISEL:       ; %bb.0: | 
|  | ; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX7-GISEL-NEXT:    v_mul_f32_e64 v0, 1.0, s16 | 
|  | ; GFX7-GISEL-NEXT:    v_mul_f32_e64 v1, 1.0, s17 | 
|  | ; GFX7-GISEL-NEXT:    v_min_f32_e32 v0, v0, v1 | 
|  | ; GFX7-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX8-SDAG-LABEL: v_minimumnum_f32_s_s: | 
|  | ; GFX8-SDAG:       ; %bb.0: | 
|  | ; GFX8-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX8-SDAG-NEXT:    v_mul_f32_e64 v0, 1.0, s17 | 
|  | ; GFX8-SDAG-NEXT:    v_mul_f32_e64 v1, 1.0, s16 | 
|  | ; GFX8-SDAG-NEXT:    v_min_f32_e32 v0, v1, v0 | 
|  | ; GFX8-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX8-GISEL-LABEL: v_minimumnum_f32_s_s: | 
|  | ; GFX8-GISEL:       ; %bb.0: | 
|  | ; GFX8-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX8-GISEL-NEXT:    v_mul_f32_e64 v0, 1.0, s16 | 
|  | ; GFX8-GISEL-NEXT:    v_mul_f32_e64 v1, 1.0, s17 | 
|  | ; GFX8-GISEL-NEXT:    v_min_f32_e32 v0, v0, v1 | 
|  | ; GFX8-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX900-SDAG-LABEL: v_minimumnum_f32_s_s: | 
|  | ; GFX900-SDAG:       ; %bb.0: | 
|  | ; GFX900-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX900-SDAG-NEXT:    v_max_f32_e64 v0, s17, s17 | 
|  | ; GFX900-SDAG-NEXT:    v_max_f32_e64 v1, s16, s16 | 
|  | ; GFX900-SDAG-NEXT:    v_min_f32_e32 v0, v1, v0 | 
|  | ; GFX900-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX900-GISEL-LABEL: v_minimumnum_f32_s_s: | 
|  | ; GFX900-GISEL:       ; %bb.0: | 
|  | ; GFX900-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX900-GISEL-NEXT:    v_max_f32_e64 v0, s16, s16 | 
|  | ; GFX900-GISEL-NEXT:    v_max_f32_e64 v1, s17, s17 | 
|  | ; GFX900-GISEL-NEXT:    v_min_f32_e32 v0, v0, v1 | 
|  | ; GFX900-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX950-SDAG-LABEL: v_minimumnum_f32_s_s: | 
|  | ; GFX950-SDAG:       ; %bb.0: | 
|  | ; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX950-SDAG-NEXT:    v_max_f32_e64 v0, s1, s1 | 
|  | ; GFX950-SDAG-NEXT:    v_max_f32_e64 v1, s0, s0 | 
|  | ; GFX950-SDAG-NEXT:    v_min_f32_e32 v0, v1, v0 | 
|  | ; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX950-GISEL-LABEL: v_minimumnum_f32_s_s: | 
|  | ; GFX950-GISEL:       ; %bb.0: | 
|  | ; GFX950-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX950-GISEL-NEXT:    v_max_f32_e64 v0, s0, s0 | 
|  | ; GFX950-GISEL-NEXT:    v_max_f32_e64 v1, s1, s1 | 
|  | ; GFX950-GISEL-NEXT:    v_min_f32_e32 v0, v0, v1 | 
|  | ; GFX950-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX10-SDAG-LABEL: v_minimumnum_f32_s_s: | 
|  | ; GFX10-SDAG:       ; %bb.0: | 
|  | ; GFX10-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX10-SDAG-NEXT:    v_max_f32_e64 v0, s17, s17 | 
|  | ; GFX10-SDAG-NEXT:    v_max_f32_e64 v1, s16, s16 | 
|  | ; GFX10-SDAG-NEXT:    v_min_f32_e32 v0, v1, v0 | 
|  | ; GFX10-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX10-GISEL-LABEL: v_minimumnum_f32_s_s: | 
|  | ; GFX10-GISEL:       ; %bb.0: | 
|  | ; GFX10-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX10-GISEL-NEXT:    v_max_f32_e64 v0, s16, s16 | 
|  | ; GFX10-GISEL-NEXT:    v_max_f32_e64 v1, s17, s17 | 
|  | ; GFX10-GISEL-NEXT:    v_min_f32_e32 v0, v0, v1 | 
|  | ; GFX10-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX11-SDAG-LABEL: v_minimumnum_f32_s_s: | 
|  | ; GFX11-SDAG:       ; %bb.0: | 
|  | ; GFX11-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX11-SDAG-NEXT:    v_max_f32_e64 v0, s1, s1 | 
|  | ; GFX11-SDAG-NEXT:    v_max_f32_e64 v1, s0, s0 | 
|  | ; GFX11-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX11-SDAG-NEXT:    v_min_f32_e32 v0, v1, v0 | 
|  | ; GFX11-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX11-GISEL-LABEL: v_minimumnum_f32_s_s: | 
|  | ; GFX11-GISEL:       ; %bb.0: | 
|  | ; GFX11-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX11-GISEL-NEXT:    v_max_f32_e64 v0, s0, s0 | 
|  | ; GFX11-GISEL-NEXT:    v_max_f32_e64 v1, s1, s1 | 
|  | ; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX11-GISEL-NEXT:    v_min_f32_e32 v0, v0, v1 | 
|  | ; GFX11-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX12-SDAG-LABEL: v_minimumnum_f32_s_s: | 
|  | ; GFX12-SDAG:       ; %bb.0: | 
|  | ; GFX12-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    s_wait_expcnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    s_wait_samplecnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    s_wait_bvhcnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    s_wait_kmcnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    v_max_num_f32_e64 v0, s1, s1 | 
|  | ; GFX12-SDAG-NEXT:    v_max_num_f32_e64 v1, s0, s0 | 
|  | ; GFX12-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX12-SDAG-NEXT:    v_min_num_f32_e32 v0, v1, v0 | 
|  | ; GFX12-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX12-GISEL-LABEL: v_minimumnum_f32_s_s: | 
|  | ; GFX12-GISEL:       ; %bb.0: | 
|  | ; GFX12-GISEL-NEXT:    s_wait_loadcnt_dscnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    s_wait_expcnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    s_wait_samplecnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    s_wait_bvhcnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    s_wait_kmcnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    v_max_num_f32_e64 v0, s0, s0 | 
|  | ; GFX12-GISEL-NEXT:    v_max_num_f32_e64 v1, s1, s1 | 
|  | ; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX12-GISEL-NEXT:    v_min_num_f32_e32 v0, v0, v1 | 
|  | ; GFX12-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | %result = call float @llvm.minimumnum.f32(float %x, float %y) | 
|  | ret float %result | 
|  | } | 
|  |  | 
|  | define double @v_minimumnum_f64_s_v(double inreg %x, double %y) { | 
|  | ; GFX7-SDAG-LABEL: v_minimumnum_f64_s_v: | 
|  | ; GFX7-SDAG:       ; %bb.0: | 
|  | ; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX7-SDAG-NEXT:    v_max_f64 v[0:1], v[0:1], v[0:1] | 
|  | ; GFX7-SDAG-NEXT:    v_max_f64 v[2:3], s[16:17], s[16:17] | 
|  | ; GFX7-SDAG-NEXT:    v_min_f64 v[0:1], v[2:3], v[0:1] | 
|  | ; GFX7-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX7-GISEL-LABEL: v_minimumnum_f64_s_v: | 
|  | ; GFX7-GISEL:       ; %bb.0: | 
|  | ; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX7-GISEL-NEXT:    v_max_f64 v[2:3], s[16:17], s[16:17] | 
|  | ; GFX7-GISEL-NEXT:    v_max_f64 v[0:1], v[0:1], v[0:1] | 
|  | ; GFX7-GISEL-NEXT:    v_min_f64 v[0:1], v[2:3], v[0:1] | 
|  | ; GFX7-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX8-SDAG-LABEL: v_minimumnum_f64_s_v: | 
|  | ; GFX8-SDAG:       ; %bb.0: | 
|  | ; GFX8-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX8-SDAG-NEXT:    v_max_f64 v[0:1], v[0:1], v[0:1] | 
|  | ; GFX8-SDAG-NEXT:    v_max_f64 v[2:3], s[16:17], s[16:17] | 
|  | ; GFX8-SDAG-NEXT:    v_min_f64 v[0:1], v[2:3], v[0:1] | 
|  | ; GFX8-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX8-GISEL-LABEL: v_minimumnum_f64_s_v: | 
|  | ; GFX8-GISEL:       ; %bb.0: | 
|  | ; GFX8-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX8-GISEL-NEXT:    v_max_f64 v[2:3], s[16:17], s[16:17] | 
|  | ; GFX8-GISEL-NEXT:    v_max_f64 v[0:1], v[0:1], v[0:1] | 
|  | ; GFX8-GISEL-NEXT:    v_min_f64 v[0:1], v[2:3], v[0:1] | 
|  | ; GFX8-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX900-SDAG-LABEL: v_minimumnum_f64_s_v: | 
|  | ; GFX900-SDAG:       ; %bb.0: | 
|  | ; GFX900-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX900-SDAG-NEXT:    v_max_f64 v[0:1], v[0:1], v[0:1] | 
|  | ; GFX900-SDAG-NEXT:    v_max_f64 v[2:3], s[16:17], s[16:17] | 
|  | ; GFX900-SDAG-NEXT:    v_min_f64 v[0:1], v[2:3], v[0:1] | 
|  | ; GFX900-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX900-GISEL-LABEL: v_minimumnum_f64_s_v: | 
|  | ; GFX900-GISEL:       ; %bb.0: | 
|  | ; GFX900-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX900-GISEL-NEXT:    v_max_f64 v[2:3], s[16:17], s[16:17] | 
|  | ; GFX900-GISEL-NEXT:    v_max_f64 v[0:1], v[0:1], v[0:1] | 
|  | ; GFX900-GISEL-NEXT:    v_min_f64 v[0:1], v[2:3], v[0:1] | 
|  | ; GFX900-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX950-SDAG-LABEL: v_minimumnum_f64_s_v: | 
|  | ; GFX950-SDAG:       ; %bb.0: | 
|  | ; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX950-SDAG-NEXT:    v_max_f64 v[0:1], v[0:1], v[0:1] | 
|  | ; GFX950-SDAG-NEXT:    v_max_f64 v[2:3], s[0:1], s[0:1] | 
|  | ; GFX950-SDAG-NEXT:    v_min_f64 v[0:1], v[2:3], v[0:1] | 
|  | ; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX950-GISEL-LABEL: v_minimumnum_f64_s_v: | 
|  | ; GFX950-GISEL:       ; %bb.0: | 
|  | ; GFX950-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX950-GISEL-NEXT:    v_max_f64 v[2:3], s[0:1], s[0:1] | 
|  | ; GFX950-GISEL-NEXT:    v_max_f64 v[0:1], v[0:1], v[0:1] | 
|  | ; GFX950-GISEL-NEXT:    v_min_f64 v[0:1], v[2:3], v[0:1] | 
|  | ; GFX950-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX10-LABEL: v_minimumnum_f64_s_v: | 
|  | ; GFX10:       ; %bb.0: | 
|  | ; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX10-NEXT:    v_max_f64 v[2:3], s[16:17], s[16:17] | 
|  | ; GFX10-NEXT:    v_max_f64 v[0:1], v[0:1], v[0:1] | 
|  | ; GFX10-NEXT:    v_min_f64 v[0:1], v[2:3], v[0:1] | 
|  | ; GFX10-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX11-LABEL: v_minimumnum_f64_s_v: | 
|  | ; GFX11:       ; %bb.0: | 
|  | ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX11-NEXT:    v_max_f64 v[2:3], s[0:1], s[0:1] | 
|  | ; GFX11-NEXT:    v_max_f64 v[0:1], v[0:1], v[0:1] | 
|  | ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX11-NEXT:    v_min_f64 v[0:1], v[2:3], v[0:1] | 
|  | ; GFX11-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX12-LABEL: v_minimumnum_f64_s_v: | 
|  | ; GFX12:       ; %bb.0: | 
|  | ; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0 | 
|  | ; GFX12-NEXT:    s_wait_expcnt 0x0 | 
|  | ; GFX12-NEXT:    s_wait_samplecnt 0x0 | 
|  | ; GFX12-NEXT:    s_wait_bvhcnt 0x0 | 
|  | ; GFX12-NEXT:    s_wait_kmcnt 0x0 | 
|  | ; GFX12-NEXT:    v_max_num_f64_e64 v[2:3], s[0:1], s[0:1] | 
|  | ; GFX12-NEXT:    v_max_num_f64_e32 v[0:1], v[0:1], v[0:1] | 
|  | ; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX12-NEXT:    v_min_num_f64_e32 v[0:1], v[2:3], v[0:1] | 
|  | ; GFX12-NEXT:    s_setpc_b64 s[30:31] | 
|  | %result = call double @llvm.minimumnum.f64(double %x, double %y) | 
|  | ret double %result | 
|  | } | 
|  |  | 
|  | define double @v_minimumnum_f64_v_s(double %x, double inreg %y) { | 
|  | ; GFX7-SDAG-LABEL: v_minimumnum_f64_v_s: | 
|  | ; GFX7-SDAG:       ; %bb.0: | 
|  | ; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX7-SDAG-NEXT:    v_max_f64 v[2:3], s[16:17], s[16:17] | 
|  | ; GFX7-SDAG-NEXT:    v_max_f64 v[0:1], v[0:1], v[0:1] | 
|  | ; GFX7-SDAG-NEXT:    v_min_f64 v[0:1], v[0:1], v[2:3] | 
|  | ; GFX7-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX7-GISEL-LABEL: v_minimumnum_f64_v_s: | 
|  | ; GFX7-GISEL:       ; %bb.0: | 
|  | ; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX7-GISEL-NEXT:    v_max_f64 v[0:1], v[0:1], v[0:1] | 
|  | ; GFX7-GISEL-NEXT:    v_max_f64 v[2:3], s[16:17], s[16:17] | 
|  | ; GFX7-GISEL-NEXT:    v_min_f64 v[0:1], v[0:1], v[2:3] | 
|  | ; GFX7-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX8-SDAG-LABEL: v_minimumnum_f64_v_s: | 
|  | ; GFX8-SDAG:       ; %bb.0: | 
|  | ; GFX8-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX8-SDAG-NEXT:    v_max_f64 v[2:3], s[16:17], s[16:17] | 
|  | ; GFX8-SDAG-NEXT:    v_max_f64 v[0:1], v[0:1], v[0:1] | 
|  | ; GFX8-SDAG-NEXT:    v_min_f64 v[0:1], v[0:1], v[2:3] | 
|  | ; GFX8-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX8-GISEL-LABEL: v_minimumnum_f64_v_s: | 
|  | ; GFX8-GISEL:       ; %bb.0: | 
|  | ; GFX8-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX8-GISEL-NEXT:    v_max_f64 v[0:1], v[0:1], v[0:1] | 
|  | ; GFX8-GISEL-NEXT:    v_max_f64 v[2:3], s[16:17], s[16:17] | 
|  | ; GFX8-GISEL-NEXT:    v_min_f64 v[0:1], v[0:1], v[2:3] | 
|  | ; GFX8-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX900-SDAG-LABEL: v_minimumnum_f64_v_s: | 
|  | ; GFX900-SDAG:       ; %bb.0: | 
|  | ; GFX900-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX900-SDAG-NEXT:    v_max_f64 v[2:3], s[16:17], s[16:17] | 
|  | ; GFX900-SDAG-NEXT:    v_max_f64 v[0:1], v[0:1], v[0:1] | 
|  | ; GFX900-SDAG-NEXT:    v_min_f64 v[0:1], v[0:1], v[2:3] | 
|  | ; GFX900-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX900-GISEL-LABEL: v_minimumnum_f64_v_s: | 
|  | ; GFX900-GISEL:       ; %bb.0: | 
|  | ; GFX900-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX900-GISEL-NEXT:    v_max_f64 v[0:1], v[0:1], v[0:1] | 
|  | ; GFX900-GISEL-NEXT:    v_max_f64 v[2:3], s[16:17], s[16:17] | 
|  | ; GFX900-GISEL-NEXT:    v_min_f64 v[0:1], v[0:1], v[2:3] | 
|  | ; GFX900-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX950-SDAG-LABEL: v_minimumnum_f64_v_s: | 
|  | ; GFX950-SDAG:       ; %bb.0: | 
|  | ; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX950-SDAG-NEXT:    v_max_f64 v[2:3], s[0:1], s[0:1] | 
|  | ; GFX950-SDAG-NEXT:    v_max_f64 v[0:1], v[0:1], v[0:1] | 
|  | ; GFX950-SDAG-NEXT:    v_min_f64 v[0:1], v[0:1], v[2:3] | 
|  | ; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX950-GISEL-LABEL: v_minimumnum_f64_v_s: | 
|  | ; GFX950-GISEL:       ; %bb.0: | 
|  | ; GFX950-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX950-GISEL-NEXT:    v_max_f64 v[0:1], v[0:1], v[0:1] | 
|  | ; GFX950-GISEL-NEXT:    v_max_f64 v[2:3], s[0:1], s[0:1] | 
|  | ; GFX950-GISEL-NEXT:    v_min_f64 v[0:1], v[0:1], v[2:3] | 
|  | ; GFX950-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX10-LABEL: v_minimumnum_f64_v_s: | 
|  | ; GFX10:       ; %bb.0: | 
|  | ; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX10-NEXT:    v_max_f64 v[2:3], s[16:17], s[16:17] | 
|  | ; GFX10-NEXT:    v_max_f64 v[0:1], v[0:1], v[0:1] | 
|  | ; GFX10-NEXT:    v_min_f64 v[0:1], v[0:1], v[2:3] | 
|  | ; GFX10-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX11-LABEL: v_minimumnum_f64_v_s: | 
|  | ; GFX11:       ; %bb.0: | 
|  | ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX11-NEXT:    v_max_f64 v[2:3], s[0:1], s[0:1] | 
|  | ; GFX11-NEXT:    v_max_f64 v[0:1], v[0:1], v[0:1] | 
|  | ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX11-NEXT:    v_min_f64 v[0:1], v[0:1], v[2:3] | 
|  | ; GFX11-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX12-LABEL: v_minimumnum_f64_v_s: | 
|  | ; GFX12:       ; %bb.0: | 
|  | ; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0 | 
|  | ; GFX12-NEXT:    s_wait_expcnt 0x0 | 
|  | ; GFX12-NEXT:    s_wait_samplecnt 0x0 | 
|  | ; GFX12-NEXT:    s_wait_bvhcnt 0x0 | 
|  | ; GFX12-NEXT:    s_wait_kmcnt 0x0 | 
|  | ; GFX12-NEXT:    v_max_num_f64_e64 v[2:3], s[0:1], s[0:1] | 
|  | ; GFX12-NEXT:    v_max_num_f64_e32 v[0:1], v[0:1], v[0:1] | 
|  | ; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX12-NEXT:    v_min_num_f64_e32 v[0:1], v[0:1], v[2:3] | 
|  | ; GFX12-NEXT:    s_setpc_b64 s[30:31] | 
|  | %result = call double @llvm.minimumnum.f64(double %x, double %y) | 
|  | ret double %result | 
|  | } | 
|  |  | 
|  | define double @v_minimumnum_f64_s_s(double inreg %x, double inreg %y) { | 
|  | ; GFX7-SDAG-LABEL: v_minimumnum_f64_s_s: | 
|  | ; GFX7-SDAG:       ; %bb.0: | 
|  | ; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX7-SDAG-NEXT:    v_max_f64 v[0:1], s[18:19], s[18:19] | 
|  | ; GFX7-SDAG-NEXT:    v_max_f64 v[2:3], s[16:17], s[16:17] | 
|  | ; GFX7-SDAG-NEXT:    v_min_f64 v[0:1], v[2:3], v[0:1] | 
|  | ; GFX7-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX7-GISEL-LABEL: v_minimumnum_f64_s_s: | 
|  | ; GFX7-GISEL:       ; %bb.0: | 
|  | ; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX7-GISEL-NEXT:    v_max_f64 v[0:1], s[16:17], s[16:17] | 
|  | ; GFX7-GISEL-NEXT:    v_max_f64 v[2:3], s[18:19], s[18:19] | 
|  | ; GFX7-GISEL-NEXT:    v_min_f64 v[0:1], v[0:1], v[2:3] | 
|  | ; GFX7-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX8-SDAG-LABEL: v_minimumnum_f64_s_s: | 
|  | ; GFX8-SDAG:       ; %bb.0: | 
|  | ; GFX8-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX8-SDAG-NEXT:    v_max_f64 v[0:1], s[18:19], s[18:19] | 
|  | ; GFX8-SDAG-NEXT:    v_max_f64 v[2:3], s[16:17], s[16:17] | 
|  | ; GFX8-SDAG-NEXT:    v_min_f64 v[0:1], v[2:3], v[0:1] | 
|  | ; GFX8-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX8-GISEL-LABEL: v_minimumnum_f64_s_s: | 
|  | ; GFX8-GISEL:       ; %bb.0: | 
|  | ; GFX8-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX8-GISEL-NEXT:    v_max_f64 v[0:1], s[16:17], s[16:17] | 
|  | ; GFX8-GISEL-NEXT:    v_max_f64 v[2:3], s[18:19], s[18:19] | 
|  | ; GFX8-GISEL-NEXT:    v_min_f64 v[0:1], v[0:1], v[2:3] | 
|  | ; GFX8-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX900-SDAG-LABEL: v_minimumnum_f64_s_s: | 
|  | ; GFX900-SDAG:       ; %bb.0: | 
|  | ; GFX900-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX900-SDAG-NEXT:    v_max_f64 v[0:1], s[18:19], s[18:19] | 
|  | ; GFX900-SDAG-NEXT:    v_max_f64 v[2:3], s[16:17], s[16:17] | 
|  | ; GFX900-SDAG-NEXT:    v_min_f64 v[0:1], v[2:3], v[0:1] | 
|  | ; GFX900-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX900-GISEL-LABEL: v_minimumnum_f64_s_s: | 
|  | ; GFX900-GISEL:       ; %bb.0: | 
|  | ; GFX900-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX900-GISEL-NEXT:    v_max_f64 v[0:1], s[16:17], s[16:17] | 
|  | ; GFX900-GISEL-NEXT:    v_max_f64 v[2:3], s[18:19], s[18:19] | 
|  | ; GFX900-GISEL-NEXT:    v_min_f64 v[0:1], v[0:1], v[2:3] | 
|  | ; GFX900-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX950-SDAG-LABEL: v_minimumnum_f64_s_s: | 
|  | ; GFX950-SDAG:       ; %bb.0: | 
|  | ; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX950-SDAG-NEXT:    v_max_f64 v[0:1], s[2:3], s[2:3] | 
|  | ; GFX950-SDAG-NEXT:    v_max_f64 v[2:3], s[0:1], s[0:1] | 
|  | ; GFX950-SDAG-NEXT:    v_min_f64 v[0:1], v[2:3], v[0:1] | 
|  | ; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX950-GISEL-LABEL: v_minimumnum_f64_s_s: | 
|  | ; GFX950-GISEL:       ; %bb.0: | 
|  | ; GFX950-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX950-GISEL-NEXT:    v_max_f64 v[0:1], s[0:1], s[0:1] | 
|  | ; GFX950-GISEL-NEXT:    v_max_f64 v[2:3], s[2:3], s[2:3] | 
|  | ; GFX950-GISEL-NEXT:    v_min_f64 v[0:1], v[0:1], v[2:3] | 
|  | ; GFX950-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX10-SDAG-LABEL: v_minimumnum_f64_s_s: | 
|  | ; GFX10-SDAG:       ; %bb.0: | 
|  | ; GFX10-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX10-SDAG-NEXT:    v_max_f64 v[0:1], s[18:19], s[18:19] | 
|  | ; GFX10-SDAG-NEXT:    v_max_f64 v[2:3], s[16:17], s[16:17] | 
|  | ; GFX10-SDAG-NEXT:    v_min_f64 v[0:1], v[2:3], v[0:1] | 
|  | ; GFX10-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX10-GISEL-LABEL: v_minimumnum_f64_s_s: | 
|  | ; GFX10-GISEL:       ; %bb.0: | 
|  | ; GFX10-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX10-GISEL-NEXT:    v_max_f64 v[0:1], s[16:17], s[16:17] | 
|  | ; GFX10-GISEL-NEXT:    v_max_f64 v[2:3], s[18:19], s[18:19] | 
|  | ; GFX10-GISEL-NEXT:    v_min_f64 v[0:1], v[0:1], v[2:3] | 
|  | ; GFX10-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX11-SDAG-LABEL: v_minimumnum_f64_s_s: | 
|  | ; GFX11-SDAG:       ; %bb.0: | 
|  | ; GFX11-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX11-SDAG-NEXT:    v_max_f64 v[0:1], s[2:3], s[2:3] | 
|  | ; GFX11-SDAG-NEXT:    v_max_f64 v[2:3], s[0:1], s[0:1] | 
|  | ; GFX11-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX11-SDAG-NEXT:    v_min_f64 v[0:1], v[2:3], v[0:1] | 
|  | ; GFX11-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX11-GISEL-LABEL: v_minimumnum_f64_s_s: | 
|  | ; GFX11-GISEL:       ; %bb.0: | 
|  | ; GFX11-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX11-GISEL-NEXT:    v_max_f64 v[0:1], s[0:1], s[0:1] | 
|  | ; GFX11-GISEL-NEXT:    v_max_f64 v[2:3], s[2:3], s[2:3] | 
|  | ; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX11-GISEL-NEXT:    v_min_f64 v[0:1], v[0:1], v[2:3] | 
|  | ; GFX11-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX12-SDAG-LABEL: v_minimumnum_f64_s_s: | 
|  | ; GFX12-SDAG:       ; %bb.0: | 
|  | ; GFX12-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    s_wait_expcnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    s_wait_samplecnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    s_wait_bvhcnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    s_wait_kmcnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    v_max_num_f64_e64 v[0:1], s[2:3], s[2:3] | 
|  | ; GFX12-SDAG-NEXT:    v_max_num_f64_e64 v[2:3], s[0:1], s[0:1] | 
|  | ; GFX12-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX12-SDAG-NEXT:    v_min_num_f64_e32 v[0:1], v[2:3], v[0:1] | 
|  | ; GFX12-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX12-GISEL-LABEL: v_minimumnum_f64_s_s: | 
|  | ; GFX12-GISEL:       ; %bb.0: | 
|  | ; GFX12-GISEL-NEXT:    s_wait_loadcnt_dscnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    s_wait_expcnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    s_wait_samplecnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    s_wait_bvhcnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    s_wait_kmcnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    v_max_num_f64_e64 v[0:1], s[0:1], s[0:1] | 
|  | ; GFX12-GISEL-NEXT:    v_max_num_f64_e64 v[2:3], s[2:3], s[2:3] | 
|  | ; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX12-GISEL-NEXT:    v_min_num_f64_e32 v[0:1], v[0:1], v[2:3] | 
|  | ; GFX12-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | %result = call double @llvm.minimumnum.f64(double %x, double %y) | 
|  | ret double %result | 
|  | } | 
|  |  | 
|  | define float @v_minimumnum_f32_fabs_rhs(float %x, float %y) { | 
|  | ; GFX7-SDAG-LABEL: v_minimumnum_f32_fabs_rhs: | 
|  | ; GFX7-SDAG:       ; %bb.0: | 
|  | ; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX7-SDAG-NEXT:    v_mul_f32_e64 v1, 1.0, |v1| | 
|  | ; GFX7-SDAG-NEXT:    v_mul_f32_e32 v0, 1.0, v0 | 
|  | ; GFX7-SDAG-NEXT:    v_min_f32_e32 v0, v0, v1 | 
|  | ; GFX7-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX7-GISEL-LABEL: v_minimumnum_f32_fabs_rhs: | 
|  | ; GFX7-GISEL:       ; %bb.0: | 
|  | ; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX7-GISEL-NEXT:    v_mul_f32_e32 v0, 1.0, v0 | 
|  | ; GFX7-GISEL-NEXT:    v_mul_f32_e64 v1, 1.0, |v1| | 
|  | ; GFX7-GISEL-NEXT:    v_min_f32_e32 v0, v0, v1 | 
|  | ; GFX7-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX8-SDAG-LABEL: v_minimumnum_f32_fabs_rhs: | 
|  | ; GFX8-SDAG:       ; %bb.0: | 
|  | ; GFX8-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX8-SDAG-NEXT:    v_mul_f32_e64 v1, 1.0, |v1| | 
|  | ; GFX8-SDAG-NEXT:    v_mul_f32_e32 v0, 1.0, v0 | 
|  | ; GFX8-SDAG-NEXT:    v_min_f32_e32 v0, v0, v1 | 
|  | ; GFX8-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX8-GISEL-LABEL: v_minimumnum_f32_fabs_rhs: | 
|  | ; GFX8-GISEL:       ; %bb.0: | 
|  | ; GFX8-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX8-GISEL-NEXT:    v_mul_f32_e32 v0, 1.0, v0 | 
|  | ; GFX8-GISEL-NEXT:    v_mul_f32_e64 v1, 1.0, |v1| | 
|  | ; GFX8-GISEL-NEXT:    v_min_f32_e32 v0, v0, v1 | 
|  | ; GFX8-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX9-SDAG-LABEL: v_minimumnum_f32_fabs_rhs: | 
|  | ; GFX9-SDAG:       ; %bb.0: | 
|  | ; GFX9-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX9-SDAG-NEXT:    v_max_f32_e64 v1, |v1|, |v1| | 
|  | ; GFX9-SDAG-NEXT:    v_max_f32_e32 v0, v0, v0 | 
|  | ; GFX9-SDAG-NEXT:    v_min_f32_e32 v0, v0, v1 | 
|  | ; GFX9-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX9-GISEL-LABEL: v_minimumnum_f32_fabs_rhs: | 
|  | ; GFX9-GISEL:       ; %bb.0: | 
|  | ; GFX9-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX9-GISEL-NEXT:    v_max_f32_e32 v0, v0, v0 | 
|  | ; GFX9-GISEL-NEXT:    v_max_f32_e64 v1, |v1|, |v1| | 
|  | ; GFX9-GISEL-NEXT:    v_min_f32_e32 v0, v0, v1 | 
|  | ; GFX9-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX10-SDAG-LABEL: v_minimumnum_f32_fabs_rhs: | 
|  | ; GFX10-SDAG:       ; %bb.0: | 
|  | ; GFX10-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX10-SDAG-NEXT:    v_max_f32_e64 v1, |v1|, |v1| | 
|  | ; GFX10-SDAG-NEXT:    v_max_f32_e32 v0, v0, v0 | 
|  | ; GFX10-SDAG-NEXT:    v_min_f32_e32 v0, v0, v1 | 
|  | ; GFX10-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX10-GISEL-LABEL: v_minimumnum_f32_fabs_rhs: | 
|  | ; GFX10-GISEL:       ; %bb.0: | 
|  | ; GFX10-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX10-GISEL-NEXT:    v_max_f32_e32 v0, v0, v0 | 
|  | ; GFX10-GISEL-NEXT:    v_max_f32_e64 v1, |v1|, |v1| | 
|  | ; GFX10-GISEL-NEXT:    v_min_f32_e32 v0, v0, v1 | 
|  | ; GFX10-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX11-SDAG-LABEL: v_minimumnum_f32_fabs_rhs: | 
|  | ; GFX11-SDAG:       ; %bb.0: | 
|  | ; GFX11-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX11-SDAG-NEXT:    v_max_f32_e64 v1, |v1|, |v1| | 
|  | ; GFX11-SDAG-NEXT:    v_max_f32_e32 v0, v0, v0 | 
|  | ; GFX11-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX11-SDAG-NEXT:    v_min_f32_e32 v0, v0, v1 | 
|  | ; GFX11-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX11-GISEL-LABEL: v_minimumnum_f32_fabs_rhs: | 
|  | ; GFX11-GISEL:       ; %bb.0: | 
|  | ; GFX11-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX11-GISEL-NEXT:    v_max_f32_e32 v0, v0, v0 | 
|  | ; GFX11-GISEL-NEXT:    v_max_f32_e64 v1, |v1|, |v1| | 
|  | ; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX11-GISEL-NEXT:    v_min_f32_e32 v0, v0, v1 | 
|  | ; GFX11-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX12-SDAG-LABEL: v_minimumnum_f32_fabs_rhs: | 
|  | ; GFX12-SDAG:       ; %bb.0: | 
|  | ; GFX12-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    s_wait_expcnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    s_wait_samplecnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    s_wait_bvhcnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    s_wait_kmcnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    v_max_num_f32_e64 v1, |v1|, |v1| | 
|  | ; GFX12-SDAG-NEXT:    v_max_num_f32_e32 v0, v0, v0 | 
|  | ; GFX12-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX12-SDAG-NEXT:    v_min_num_f32_e32 v0, v0, v1 | 
|  | ; GFX12-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX12-GISEL-LABEL: v_minimumnum_f32_fabs_rhs: | 
|  | ; GFX12-GISEL:       ; %bb.0: | 
|  | ; GFX12-GISEL-NEXT:    s_wait_loadcnt_dscnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    s_wait_expcnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    s_wait_samplecnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    s_wait_bvhcnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    s_wait_kmcnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    v_max_num_f32_e32 v0, v0, v0 | 
|  | ; GFX12-GISEL-NEXT:    v_max_num_f32_e64 v1, |v1|, |v1| | 
|  | ; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX12-GISEL-NEXT:    v_min_num_f32_e32 v0, v0, v1 | 
|  | ; GFX12-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | %fabs.y = call float @llvm.fabs.f32(float %y) | 
|  | %result = call float @llvm.minimumnum.f32(float %x, float %fabs.y) | 
|  | ret float %result | 
|  | } | 
|  |  | 
|  | define float @v_minimumnum_f32_fneg_fabs_rhs(float %x, float %y) { | 
|  | ; GFX7-SDAG-LABEL: v_minimumnum_f32_fneg_fabs_rhs: | 
|  | ; GFX7-SDAG:       ; %bb.0: | 
|  | ; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX7-SDAG-NEXT:    v_mul_f32_e64 v1, -1.0, |v1| | 
|  | ; GFX7-SDAG-NEXT:    v_mul_f32_e32 v0, 1.0, v0 | 
|  | ; GFX7-SDAG-NEXT:    v_min_f32_e32 v0, v0, v1 | 
|  | ; GFX7-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX7-GISEL-LABEL: v_minimumnum_f32_fneg_fabs_rhs: | 
|  | ; GFX7-GISEL:       ; %bb.0: | 
|  | ; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX7-GISEL-NEXT:    v_mul_f32_e32 v0, 1.0, v0 | 
|  | ; GFX7-GISEL-NEXT:    v_mul_f32_e64 v1, -1.0, |v1| | 
|  | ; GFX7-GISEL-NEXT:    v_min_f32_e32 v0, v0, v1 | 
|  | ; GFX7-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX8-SDAG-LABEL: v_minimumnum_f32_fneg_fabs_rhs: | 
|  | ; GFX8-SDAG:       ; %bb.0: | 
|  | ; GFX8-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX8-SDAG-NEXT:    v_mul_f32_e64 v1, -1.0, |v1| | 
|  | ; GFX8-SDAG-NEXT:    v_mul_f32_e32 v0, 1.0, v0 | 
|  | ; GFX8-SDAG-NEXT:    v_min_f32_e32 v0, v0, v1 | 
|  | ; GFX8-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX8-GISEL-LABEL: v_minimumnum_f32_fneg_fabs_rhs: | 
|  | ; GFX8-GISEL:       ; %bb.0: | 
|  | ; GFX8-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX8-GISEL-NEXT:    v_mul_f32_e32 v0, 1.0, v0 | 
|  | ; GFX8-GISEL-NEXT:    v_mul_f32_e64 v1, -1.0, |v1| | 
|  | ; GFX8-GISEL-NEXT:    v_min_f32_e32 v0, v0, v1 | 
|  | ; GFX8-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX9-SDAG-LABEL: v_minimumnum_f32_fneg_fabs_rhs: | 
|  | ; GFX9-SDAG:       ; %bb.0: | 
|  | ; GFX9-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX9-SDAG-NEXT:    v_max_f32_e64 v1, -|v1|, -|v1| | 
|  | ; GFX9-SDAG-NEXT:    v_max_f32_e32 v0, v0, v0 | 
|  | ; GFX9-SDAG-NEXT:    v_min_f32_e32 v0, v0, v1 | 
|  | ; GFX9-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX9-GISEL-LABEL: v_minimumnum_f32_fneg_fabs_rhs: | 
|  | ; GFX9-GISEL:       ; %bb.0: | 
|  | ; GFX9-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX9-GISEL-NEXT:    v_max_f32_e32 v0, v0, v0 | 
|  | ; GFX9-GISEL-NEXT:    v_max_f32_e64 v1, -|v1|, -|v1| | 
|  | ; GFX9-GISEL-NEXT:    v_min_f32_e32 v0, v0, v1 | 
|  | ; GFX9-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX10-SDAG-LABEL: v_minimumnum_f32_fneg_fabs_rhs: | 
|  | ; GFX10-SDAG:       ; %bb.0: | 
|  | ; GFX10-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX10-SDAG-NEXT:    v_max_f32_e64 v1, -|v1|, -|v1| | 
|  | ; GFX10-SDAG-NEXT:    v_max_f32_e32 v0, v0, v0 | 
|  | ; GFX10-SDAG-NEXT:    v_min_f32_e32 v0, v0, v1 | 
|  | ; GFX10-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX10-GISEL-LABEL: v_minimumnum_f32_fneg_fabs_rhs: | 
|  | ; GFX10-GISEL:       ; %bb.0: | 
|  | ; GFX10-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX10-GISEL-NEXT:    v_max_f32_e32 v0, v0, v0 | 
|  | ; GFX10-GISEL-NEXT:    v_max_f32_e64 v1, -|v1|, -|v1| | 
|  | ; GFX10-GISEL-NEXT:    v_min_f32_e32 v0, v0, v1 | 
|  | ; GFX10-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX11-SDAG-LABEL: v_minimumnum_f32_fneg_fabs_rhs: | 
|  | ; GFX11-SDAG:       ; %bb.0: | 
|  | ; GFX11-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX11-SDAG-NEXT:    v_max_f32_e64 v1, -|v1|, -|v1| | 
|  | ; GFX11-SDAG-NEXT:    v_max_f32_e32 v0, v0, v0 | 
|  | ; GFX11-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX11-SDAG-NEXT:    v_min_f32_e32 v0, v0, v1 | 
|  | ; GFX11-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX11-GISEL-LABEL: v_minimumnum_f32_fneg_fabs_rhs: | 
|  | ; GFX11-GISEL:       ; %bb.0: | 
|  | ; GFX11-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX11-GISEL-NEXT:    v_max_f32_e32 v0, v0, v0 | 
|  | ; GFX11-GISEL-NEXT:    v_max_f32_e64 v1, -|v1|, -|v1| | 
|  | ; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX11-GISEL-NEXT:    v_min_f32_e32 v0, v0, v1 | 
|  | ; GFX11-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX12-SDAG-LABEL: v_minimumnum_f32_fneg_fabs_rhs: | 
|  | ; GFX12-SDAG:       ; %bb.0: | 
|  | ; GFX12-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    s_wait_expcnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    s_wait_samplecnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    s_wait_bvhcnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    s_wait_kmcnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    v_max_num_f32_e64 v1, -|v1|, -|v1| | 
|  | ; GFX12-SDAG-NEXT:    v_max_num_f32_e32 v0, v0, v0 | 
|  | ; GFX12-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX12-SDAG-NEXT:    v_min_num_f32_e32 v0, v0, v1 | 
|  | ; GFX12-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX12-GISEL-LABEL: v_minimumnum_f32_fneg_fabs_rhs: | 
|  | ; GFX12-GISEL:       ; %bb.0: | 
|  | ; GFX12-GISEL-NEXT:    s_wait_loadcnt_dscnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    s_wait_expcnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    s_wait_samplecnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    s_wait_bvhcnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    s_wait_kmcnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    v_max_num_f32_e32 v0, v0, v0 | 
|  | ; GFX12-GISEL-NEXT:    v_max_num_f32_e64 v1, -|v1|, -|v1| | 
|  | ; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX12-GISEL-NEXT:    v_min_num_f32_e32 v0, v0, v1 | 
|  | ; GFX12-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | %fabs.y = call float @llvm.fabs.f32(float %y) | 
|  | %fneg.fabs.y = fneg float %fabs.y | 
|  | %result = call float @llvm.minimumnum.f32(float %x, float %fneg.fabs.y) | 
|  | ret float %result | 
|  | } | 
|  |  | 
|  | define float @v_minimumnum_f32_fabs(float %x, float %y) { | 
|  | ; GFX7-SDAG-LABEL: v_minimumnum_f32_fabs: | 
|  | ; GFX7-SDAG:       ; %bb.0: | 
|  | ; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX7-SDAG-NEXT:    v_mul_f32_e64 v1, 1.0, |v1| | 
|  | ; GFX7-SDAG-NEXT:    v_mul_f32_e64 v0, 1.0, |v0| | 
|  | ; GFX7-SDAG-NEXT:    v_min_f32_e32 v0, v0, v1 | 
|  | ; GFX7-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX7-GISEL-LABEL: v_minimumnum_f32_fabs: | 
|  | ; GFX7-GISEL:       ; %bb.0: | 
|  | ; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX7-GISEL-NEXT:    v_mul_f32_e64 v0, 1.0, |v0| | 
|  | ; GFX7-GISEL-NEXT:    v_mul_f32_e64 v1, 1.0, |v1| | 
|  | ; GFX7-GISEL-NEXT:    v_min_f32_e32 v0, v0, v1 | 
|  | ; GFX7-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX8-SDAG-LABEL: v_minimumnum_f32_fabs: | 
|  | ; GFX8-SDAG:       ; %bb.0: | 
|  | ; GFX8-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX8-SDAG-NEXT:    v_mul_f32_e64 v1, 1.0, |v1| | 
|  | ; GFX8-SDAG-NEXT:    v_mul_f32_e64 v0, 1.0, |v0| | 
|  | ; GFX8-SDAG-NEXT:    v_min_f32_e32 v0, v0, v1 | 
|  | ; GFX8-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX8-GISEL-LABEL: v_minimumnum_f32_fabs: | 
|  | ; GFX8-GISEL:       ; %bb.0: | 
|  | ; GFX8-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX8-GISEL-NEXT:    v_mul_f32_e64 v0, 1.0, |v0| | 
|  | ; GFX8-GISEL-NEXT:    v_mul_f32_e64 v1, 1.0, |v1| | 
|  | ; GFX8-GISEL-NEXT:    v_min_f32_e32 v0, v0, v1 | 
|  | ; GFX8-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX9-SDAG-LABEL: v_minimumnum_f32_fabs: | 
|  | ; GFX9-SDAG:       ; %bb.0: | 
|  | ; GFX9-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX9-SDAG-NEXT:    v_max_f32_e64 v1, |v1|, |v1| | 
|  | ; GFX9-SDAG-NEXT:    v_max_f32_e64 v0, |v0|, |v0| | 
|  | ; GFX9-SDAG-NEXT:    v_min_f32_e32 v0, v0, v1 | 
|  | ; GFX9-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX9-GISEL-LABEL: v_minimumnum_f32_fabs: | 
|  | ; GFX9-GISEL:       ; %bb.0: | 
|  | ; GFX9-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX9-GISEL-NEXT:    v_max_f32_e64 v0, |v0|, |v0| | 
|  | ; GFX9-GISEL-NEXT:    v_max_f32_e64 v1, |v1|, |v1| | 
|  | ; GFX9-GISEL-NEXT:    v_min_f32_e32 v0, v0, v1 | 
|  | ; GFX9-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX10-SDAG-LABEL: v_minimumnum_f32_fabs: | 
|  | ; GFX10-SDAG:       ; %bb.0: | 
|  | ; GFX10-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX10-SDAG-NEXT:    v_max_f32_e64 v1, |v1|, |v1| | 
|  | ; GFX10-SDAG-NEXT:    v_max_f32_e64 v0, |v0|, |v0| | 
|  | ; GFX10-SDAG-NEXT:    v_min_f32_e32 v0, v0, v1 | 
|  | ; GFX10-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX10-GISEL-LABEL: v_minimumnum_f32_fabs: | 
|  | ; GFX10-GISEL:       ; %bb.0: | 
|  | ; GFX10-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX10-GISEL-NEXT:    v_max_f32_e64 v0, |v0|, |v0| | 
|  | ; GFX10-GISEL-NEXT:    v_max_f32_e64 v1, |v1|, |v1| | 
|  | ; GFX10-GISEL-NEXT:    v_min_f32_e32 v0, v0, v1 | 
|  | ; GFX10-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX11-SDAG-LABEL: v_minimumnum_f32_fabs: | 
|  | ; GFX11-SDAG:       ; %bb.0: | 
|  | ; GFX11-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX11-SDAG-NEXT:    v_max_f32_e64 v1, |v1|, |v1| | 
|  | ; GFX11-SDAG-NEXT:    v_max_f32_e64 v0, |v0|, |v0| | 
|  | ; GFX11-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX11-SDAG-NEXT:    v_min_f32_e32 v0, v0, v1 | 
|  | ; GFX11-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX11-GISEL-LABEL: v_minimumnum_f32_fabs: | 
|  | ; GFX11-GISEL:       ; %bb.0: | 
|  | ; GFX11-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX11-GISEL-NEXT:    v_max_f32_e64 v0, |v0|, |v0| | 
|  | ; GFX11-GISEL-NEXT:    v_max_f32_e64 v1, |v1|, |v1| | 
|  | ; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX11-GISEL-NEXT:    v_min_f32_e32 v0, v0, v1 | 
|  | ; GFX11-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX12-SDAG-LABEL: v_minimumnum_f32_fabs: | 
|  | ; GFX12-SDAG:       ; %bb.0: | 
|  | ; GFX12-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    s_wait_expcnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    s_wait_samplecnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    s_wait_bvhcnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    s_wait_kmcnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    v_max_num_f32_e64 v1, |v1|, |v1| | 
|  | ; GFX12-SDAG-NEXT:    v_max_num_f32_e64 v0, |v0|, |v0| | 
|  | ; GFX12-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX12-SDAG-NEXT:    v_min_num_f32_e32 v0, v0, v1 | 
|  | ; GFX12-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX12-GISEL-LABEL: v_minimumnum_f32_fabs: | 
|  | ; GFX12-GISEL:       ; %bb.0: | 
|  | ; GFX12-GISEL-NEXT:    s_wait_loadcnt_dscnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    s_wait_expcnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    s_wait_samplecnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    s_wait_bvhcnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    s_wait_kmcnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    v_max_num_f32_e64 v0, |v0|, |v0| | 
|  | ; GFX12-GISEL-NEXT:    v_max_num_f32_e64 v1, |v1|, |v1| | 
|  | ; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX12-GISEL-NEXT:    v_min_num_f32_e32 v0, v0, v1 | 
|  | ; GFX12-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | %fabs.x = call float @llvm.fabs.f32(float %x) | 
|  | %fabs.y = call float @llvm.fabs.f32(float %y) | 
|  | %result = call float @llvm.minimumnum.f32(float %fabs.x, float %fabs.y) | 
|  | ret float %result | 
|  | } | 
|  |  | 
|  | define float @v_minimumnum_f32_fneg(float %x, float %y) { | 
|  | ; GFX7-SDAG-LABEL: v_minimumnum_f32_fneg: | 
|  | ; GFX7-SDAG:       ; %bb.0: | 
|  | ; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX7-SDAG-NEXT:    v_mul_f32_e32 v1, -1.0, v1 | 
|  | ; GFX7-SDAG-NEXT:    v_mul_f32_e32 v0, -1.0, v0 | 
|  | ; GFX7-SDAG-NEXT:    v_min_f32_e32 v0, v0, v1 | 
|  | ; GFX7-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX7-GISEL-LABEL: v_minimumnum_f32_fneg: | 
|  | ; GFX7-GISEL:       ; %bb.0: | 
|  | ; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX7-GISEL-NEXT:    v_mul_f32_e32 v0, -1.0, v0 | 
|  | ; GFX7-GISEL-NEXT:    v_mul_f32_e32 v1, -1.0, v1 | 
|  | ; GFX7-GISEL-NEXT:    v_min_f32_e32 v0, v0, v1 | 
|  | ; GFX7-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX8-SDAG-LABEL: v_minimumnum_f32_fneg: | 
|  | ; GFX8-SDAG:       ; %bb.0: | 
|  | ; GFX8-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX8-SDAG-NEXT:    v_mul_f32_e32 v1, -1.0, v1 | 
|  | ; GFX8-SDAG-NEXT:    v_mul_f32_e32 v0, -1.0, v0 | 
|  | ; GFX8-SDAG-NEXT:    v_min_f32_e32 v0, v0, v1 | 
|  | ; GFX8-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX8-GISEL-LABEL: v_minimumnum_f32_fneg: | 
|  | ; GFX8-GISEL:       ; %bb.0: | 
|  | ; GFX8-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX8-GISEL-NEXT:    v_mul_f32_e32 v0, -1.0, v0 | 
|  | ; GFX8-GISEL-NEXT:    v_mul_f32_e32 v1, -1.0, v1 | 
|  | ; GFX8-GISEL-NEXT:    v_min_f32_e32 v0, v0, v1 | 
|  | ; GFX8-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX9-SDAG-LABEL: v_minimumnum_f32_fneg: | 
|  | ; GFX9-SDAG:       ; %bb.0: | 
|  | ; GFX9-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX9-SDAG-NEXT:    v_max_f32_e64 v1, -v1, -v1 | 
|  | ; GFX9-SDAG-NEXT:    v_max_f32_e64 v0, -v0, -v0 | 
|  | ; GFX9-SDAG-NEXT:    v_min_f32_e32 v0, v0, v1 | 
|  | ; GFX9-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX9-GISEL-LABEL: v_minimumnum_f32_fneg: | 
|  | ; GFX9-GISEL:       ; %bb.0: | 
|  | ; GFX9-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX9-GISEL-NEXT:    v_max_f32_e64 v0, -v0, -v0 | 
|  | ; GFX9-GISEL-NEXT:    v_max_f32_e64 v1, -v1, -v1 | 
|  | ; GFX9-GISEL-NEXT:    v_min_f32_e32 v0, v0, v1 | 
|  | ; GFX9-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX10-SDAG-LABEL: v_minimumnum_f32_fneg: | 
|  | ; GFX10-SDAG:       ; %bb.0: | 
|  | ; GFX10-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX10-SDAG-NEXT:    v_max_f32_e64 v1, -v1, -v1 | 
|  | ; GFX10-SDAG-NEXT:    v_max_f32_e64 v0, -v0, -v0 | 
|  | ; GFX10-SDAG-NEXT:    v_min_f32_e32 v0, v0, v1 | 
|  | ; GFX10-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX10-GISEL-LABEL: v_minimumnum_f32_fneg: | 
|  | ; GFX10-GISEL:       ; %bb.0: | 
|  | ; GFX10-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX10-GISEL-NEXT:    v_max_f32_e64 v0, -v0, -v0 | 
|  | ; GFX10-GISEL-NEXT:    v_max_f32_e64 v1, -v1, -v1 | 
|  | ; GFX10-GISEL-NEXT:    v_min_f32_e32 v0, v0, v1 | 
|  | ; GFX10-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX11-SDAG-LABEL: v_minimumnum_f32_fneg: | 
|  | ; GFX11-SDAG:       ; %bb.0: | 
|  | ; GFX11-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX11-SDAG-NEXT:    v_max_f32_e64 v1, -v1, -v1 | 
|  | ; GFX11-SDAG-NEXT:    v_max_f32_e64 v0, -v0, -v0 | 
|  | ; GFX11-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX11-SDAG-NEXT:    v_min_f32_e32 v0, v0, v1 | 
|  | ; GFX11-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX11-GISEL-LABEL: v_minimumnum_f32_fneg: | 
|  | ; GFX11-GISEL:       ; %bb.0: | 
|  | ; GFX11-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX11-GISEL-NEXT:    v_max_f32_e64 v0, -v0, -v0 | 
|  | ; GFX11-GISEL-NEXT:    v_max_f32_e64 v1, -v1, -v1 | 
|  | ; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX11-GISEL-NEXT:    v_min_f32_e32 v0, v0, v1 | 
|  | ; GFX11-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX12-SDAG-LABEL: v_minimumnum_f32_fneg: | 
|  | ; GFX12-SDAG:       ; %bb.0: | 
|  | ; GFX12-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    s_wait_expcnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    s_wait_samplecnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    s_wait_bvhcnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    s_wait_kmcnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    v_max_num_f32_e64 v1, -v1, -v1 | 
|  | ; GFX12-SDAG-NEXT:    v_max_num_f32_e64 v0, -v0, -v0 | 
|  | ; GFX12-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX12-SDAG-NEXT:    v_min_num_f32_e32 v0, v0, v1 | 
|  | ; GFX12-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX12-GISEL-LABEL: v_minimumnum_f32_fneg: | 
|  | ; GFX12-GISEL:       ; %bb.0: | 
|  | ; GFX12-GISEL-NEXT:    s_wait_loadcnt_dscnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    s_wait_expcnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    s_wait_samplecnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    s_wait_bvhcnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    s_wait_kmcnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    v_max_num_f32_e64 v0, -v0, -v0 | 
|  | ; GFX12-GISEL-NEXT:    v_max_num_f32_e64 v1, -v1, -v1 | 
|  | ; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX12-GISEL-NEXT:    v_min_num_f32_e32 v0, v0, v1 | 
|  | ; GFX12-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | %fneg.x = fneg float %x | 
|  | %fneg.y = fneg float %y | 
|  | %result = call float @llvm.minimumnum.f32(float %fneg.x, float %fneg.y) | 
|  | ret float %result | 
|  | } | 
|  |  | 
|  | define half @v_minimumnum_f16_fabs_rhs(half %x, half %y) { | 
|  | ; GFX7-SDAG-LABEL: v_minimumnum_f16_fabs_rhs: | 
|  | ; GFX7-SDAG:       ; %bb.0: | 
|  | ; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v0, v0 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v1, v1 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v0, v0 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e64 v1, |v1| | 
|  | ; GFX7-SDAG-NEXT:    v_min_f32_e32 v0, v0, v1 | 
|  | ; GFX7-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX7-GISEL-LABEL: v_minimumnum_f16_fabs_rhs: | 
|  | ; GFX7-GISEL:       ; %bb.0: | 
|  | ; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v0, v0 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e64 v1, |v1| | 
|  | ; GFX7-GISEL-NEXT:    v_min_f32_e32 v0, v0, v1 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f16_f32_e32 v0, v0 | 
|  | ; GFX7-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX8-SDAG-LABEL: v_minimumnum_f16_fabs_rhs: | 
|  | ; GFX8-SDAG:       ; %bb.0: | 
|  | ; GFX8-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_e64 v1, |v1|, |v1| | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_e32 v0, v0, v0 | 
|  | ; GFX8-SDAG-NEXT:    v_min_f16_e32 v0, v0, v1 | 
|  | ; GFX8-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX8-GISEL-LABEL: v_minimumnum_f16_fabs_rhs: | 
|  | ; GFX8-GISEL:       ; %bb.0: | 
|  | ; GFX8-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_e32 v0, v0, v0 | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_e64 v1, |v1|, |v1| | 
|  | ; GFX8-GISEL-NEXT:    v_min_f16_e32 v0, v0, v1 | 
|  | ; GFX8-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX9-SDAG-LABEL: v_minimumnum_f16_fabs_rhs: | 
|  | ; GFX9-SDAG:       ; %bb.0: | 
|  | ; GFX9-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX9-SDAG-NEXT:    v_max_f16_e64 v1, |v1|, |v1| | 
|  | ; GFX9-SDAG-NEXT:    v_max_f16_e32 v0, v0, v0 | 
|  | ; GFX9-SDAG-NEXT:    v_min_f16_e32 v0, v0, v1 | 
|  | ; GFX9-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX9-GISEL-LABEL: v_minimumnum_f16_fabs_rhs: | 
|  | ; GFX9-GISEL:       ; %bb.0: | 
|  | ; GFX9-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX9-GISEL-NEXT:    v_max_f16_e32 v0, v0, v0 | 
|  | ; GFX9-GISEL-NEXT:    v_max_f16_e64 v1, |v1|, |v1| | 
|  | ; GFX9-GISEL-NEXT:    v_min_f16_e32 v0, v0, v1 | 
|  | ; GFX9-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX10-SDAG-LABEL: v_minimumnum_f16_fabs_rhs: | 
|  | ; GFX10-SDAG:       ; %bb.0: | 
|  | ; GFX10-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX10-SDAG-NEXT:    v_max_f16_e64 v1, |v1|, |v1| | 
|  | ; GFX10-SDAG-NEXT:    v_max_f16_e32 v0, v0, v0 | 
|  | ; GFX10-SDAG-NEXT:    v_min_f16_e32 v0, v0, v1 | 
|  | ; GFX10-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX10-GISEL-LABEL: v_minimumnum_f16_fabs_rhs: | 
|  | ; GFX10-GISEL:       ; %bb.0: | 
|  | ; GFX10-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX10-GISEL-NEXT:    v_max_f16_e32 v0, v0, v0 | 
|  | ; GFX10-GISEL-NEXT:    v_max_f16_e64 v1, |v1|, |v1| | 
|  | ; GFX10-GISEL-NEXT:    v_min_f16_e32 v0, v0, v1 | 
|  | ; GFX10-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX11-TRUE16-SDAG-LABEL: v_minimumnum_f16_fabs_rhs: | 
|  | ; GFX11-TRUE16-SDAG:       ; %bb.0: | 
|  | ; GFX11-TRUE16-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX11-TRUE16-SDAG-NEXT:    v_max_f16_e64 v0.h, |v1.l|, |v1.l| | 
|  | ; GFX11-TRUE16-SDAG-NEXT:    v_max_f16_e32 v0.l, v0.l, v0.l | 
|  | ; GFX11-TRUE16-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX11-TRUE16-SDAG-NEXT:    v_min_f16_e32 v0.l, v0.l, v0.h | 
|  | ; GFX11-TRUE16-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX11-TRUE16-GISEL-LABEL: v_minimumnum_f16_fabs_rhs: | 
|  | ; GFX11-TRUE16-GISEL:       ; %bb.0: | 
|  | ; GFX11-TRUE16-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX11-TRUE16-GISEL-NEXT:    v_max_f16_e32 v0.l, v0.l, v0.l | 
|  | ; GFX11-TRUE16-GISEL-NEXT:    v_max_f16_e64 v0.h, |v1.l|, |v1.l| | 
|  | ; GFX11-TRUE16-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX11-TRUE16-GISEL-NEXT:    v_min_f16_e32 v0.l, v0.l, v0.h | 
|  | ; GFX11-TRUE16-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX11-FAKE16-SDAG-LABEL: v_minimumnum_f16_fabs_rhs: | 
|  | ; GFX11-FAKE16-SDAG:       ; %bb.0: | 
|  | ; GFX11-FAKE16-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX11-FAKE16-SDAG-NEXT:    v_max_f16_e64 v1, |v1|, |v1| | 
|  | ; GFX11-FAKE16-SDAG-NEXT:    v_max_f16_e32 v0, v0, v0 | 
|  | ; GFX11-FAKE16-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX11-FAKE16-SDAG-NEXT:    v_min_f16_e32 v0, v0, v1 | 
|  | ; GFX11-FAKE16-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX11-FAKE16-GISEL-LABEL: v_minimumnum_f16_fabs_rhs: | 
|  | ; GFX11-FAKE16-GISEL:       ; %bb.0: | 
|  | ; GFX11-FAKE16-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX11-FAKE16-GISEL-NEXT:    v_max_f16_e32 v0, v0, v0 | 
|  | ; GFX11-FAKE16-GISEL-NEXT:    v_max_f16_e64 v1, |v1|, |v1| | 
|  | ; GFX11-FAKE16-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX11-FAKE16-GISEL-NEXT:    v_min_f16_e32 v0, v0, v1 | 
|  | ; GFX11-FAKE16-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX12-TRUE16-SDAG-LABEL: v_minimumnum_f16_fabs_rhs: | 
|  | ; GFX12-TRUE16-SDAG:       ; %bb.0: | 
|  | ; GFX12-TRUE16-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0 | 
|  | ; GFX12-TRUE16-SDAG-NEXT:    s_wait_expcnt 0x0 | 
|  | ; GFX12-TRUE16-SDAG-NEXT:    s_wait_samplecnt 0x0 | 
|  | ; GFX12-TRUE16-SDAG-NEXT:    s_wait_bvhcnt 0x0 | 
|  | ; GFX12-TRUE16-SDAG-NEXT:    s_wait_kmcnt 0x0 | 
|  | ; GFX12-TRUE16-SDAG-NEXT:    v_max_num_f16_e64 v0.h, |v1.l|, |v1.l| | 
|  | ; GFX12-TRUE16-SDAG-NEXT:    v_max_num_f16_e32 v0.l, v0.l, v0.l | 
|  | ; GFX12-TRUE16-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX12-TRUE16-SDAG-NEXT:    v_min_num_f16_e32 v0.l, v0.l, v0.h | 
|  | ; GFX12-TRUE16-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX12-TRUE16-GISEL-LABEL: v_minimumnum_f16_fabs_rhs: | 
|  | ; GFX12-TRUE16-GISEL:       ; %bb.0: | 
|  | ; GFX12-TRUE16-GISEL-NEXT:    s_wait_loadcnt_dscnt 0x0 | 
|  | ; GFX12-TRUE16-GISEL-NEXT:    s_wait_expcnt 0x0 | 
|  | ; GFX12-TRUE16-GISEL-NEXT:    s_wait_samplecnt 0x0 | 
|  | ; GFX12-TRUE16-GISEL-NEXT:    s_wait_bvhcnt 0x0 | 
|  | ; GFX12-TRUE16-GISEL-NEXT:    s_wait_kmcnt 0x0 | 
|  | ; GFX12-TRUE16-GISEL-NEXT:    v_max_num_f16_e32 v0.l, v0.l, v0.l | 
|  | ; GFX12-TRUE16-GISEL-NEXT:    v_max_num_f16_e64 v0.h, |v1.l|, |v1.l| | 
|  | ; GFX12-TRUE16-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX12-TRUE16-GISEL-NEXT:    v_min_num_f16_e32 v0.l, v0.l, v0.h | 
|  | ; GFX12-TRUE16-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX12-FAKE16-SDAG-LABEL: v_minimumnum_f16_fabs_rhs: | 
|  | ; GFX12-FAKE16-SDAG:       ; %bb.0: | 
|  | ; GFX12-FAKE16-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0 | 
|  | ; GFX12-FAKE16-SDAG-NEXT:    s_wait_expcnt 0x0 | 
|  | ; GFX12-FAKE16-SDAG-NEXT:    s_wait_samplecnt 0x0 | 
|  | ; GFX12-FAKE16-SDAG-NEXT:    s_wait_bvhcnt 0x0 | 
|  | ; GFX12-FAKE16-SDAG-NEXT:    s_wait_kmcnt 0x0 | 
|  | ; GFX12-FAKE16-SDAG-NEXT:    v_max_num_f16_e64 v1, |v1|, |v1| | 
|  | ; GFX12-FAKE16-SDAG-NEXT:    v_max_num_f16_e32 v0, v0, v0 | 
|  | ; GFX12-FAKE16-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX12-FAKE16-SDAG-NEXT:    v_min_num_f16_e32 v0, v0, v1 | 
|  | ; GFX12-FAKE16-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX12-FAKE16-GISEL-LABEL: v_minimumnum_f16_fabs_rhs: | 
|  | ; GFX12-FAKE16-GISEL:       ; %bb.0: | 
|  | ; GFX12-FAKE16-GISEL-NEXT:    s_wait_loadcnt_dscnt 0x0 | 
|  | ; GFX12-FAKE16-GISEL-NEXT:    s_wait_expcnt 0x0 | 
|  | ; GFX12-FAKE16-GISEL-NEXT:    s_wait_samplecnt 0x0 | 
|  | ; GFX12-FAKE16-GISEL-NEXT:    s_wait_bvhcnt 0x0 | 
|  | ; GFX12-FAKE16-GISEL-NEXT:    s_wait_kmcnt 0x0 | 
|  | ; GFX12-FAKE16-GISEL-NEXT:    v_max_num_f16_e32 v0, v0, v0 | 
|  | ; GFX12-FAKE16-GISEL-NEXT:    v_max_num_f16_e64 v1, |v1|, |v1| | 
|  | ; GFX12-FAKE16-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX12-FAKE16-GISEL-NEXT:    v_min_num_f16_e32 v0, v0, v1 | 
|  | ; GFX12-FAKE16-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | %fabs.y = call half @llvm.fabs.f16(half %y) | 
|  | %result = call half @llvm.minimumnum.f16(half %x, half %fabs.y) | 
|  | ret half %result | 
|  | } | 
|  |  | 
|  | define half @v_minimumnum_f16_fneg_fabs_rhs(half %x, half %y) { | 
|  | ; GFX7-SDAG-LABEL: v_minimumnum_f16_fneg_fabs_rhs: | 
|  | ; GFX7-SDAG:       ; %bb.0: | 
|  | ; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v0, v0 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v1, v1 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v0, v0 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e64 v1, -|v1| | 
|  | ; GFX7-SDAG-NEXT:    v_min_f32_e32 v0, v0, v1 | 
|  | ; GFX7-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX7-GISEL-LABEL: v_minimumnum_f16_fneg_fabs_rhs: | 
|  | ; GFX7-GISEL:       ; %bb.0: | 
|  | ; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v0, v0 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e64 v1, -|v1| | 
|  | ; GFX7-GISEL-NEXT:    v_min_f32_e32 v0, v0, v1 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f16_f32_e32 v0, v0 | 
|  | ; GFX7-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX8-SDAG-LABEL: v_minimumnum_f16_fneg_fabs_rhs: | 
|  | ; GFX8-SDAG:       ; %bb.0: | 
|  | ; GFX8-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_e64 v1, -|v1|, -|v1| | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_e32 v0, v0, v0 | 
|  | ; GFX8-SDAG-NEXT:    v_min_f16_e32 v0, v0, v1 | 
|  | ; GFX8-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX8-GISEL-LABEL: v_minimumnum_f16_fneg_fabs_rhs: | 
|  | ; GFX8-GISEL:       ; %bb.0: | 
|  | ; GFX8-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_e32 v0, v0, v0 | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_e64 v1, -|v1|, -|v1| | 
|  | ; GFX8-GISEL-NEXT:    v_min_f16_e32 v0, v0, v1 | 
|  | ; GFX8-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX9-SDAG-LABEL: v_minimumnum_f16_fneg_fabs_rhs: | 
|  | ; GFX9-SDAG:       ; %bb.0: | 
|  | ; GFX9-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX9-SDAG-NEXT:    v_max_f16_e64 v1, -|v1|, -|v1| | 
|  | ; GFX9-SDAG-NEXT:    v_max_f16_e32 v0, v0, v0 | 
|  | ; GFX9-SDAG-NEXT:    v_min_f16_e32 v0, v0, v1 | 
|  | ; GFX9-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX9-GISEL-LABEL: v_minimumnum_f16_fneg_fabs_rhs: | 
|  | ; GFX9-GISEL:       ; %bb.0: | 
|  | ; GFX9-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX9-GISEL-NEXT:    v_max_f16_e32 v0, v0, v0 | 
|  | ; GFX9-GISEL-NEXT:    v_max_f16_e64 v1, -|v1|, -|v1| | 
|  | ; GFX9-GISEL-NEXT:    v_min_f16_e32 v0, v0, v1 | 
|  | ; GFX9-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX10-SDAG-LABEL: v_minimumnum_f16_fneg_fabs_rhs: | 
|  | ; GFX10-SDAG:       ; %bb.0: | 
|  | ; GFX10-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX10-SDAG-NEXT:    v_max_f16_e64 v1, -|v1|, -|v1| | 
|  | ; GFX10-SDAG-NEXT:    v_max_f16_e32 v0, v0, v0 | 
|  | ; GFX10-SDAG-NEXT:    v_min_f16_e32 v0, v0, v1 | 
|  | ; GFX10-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX10-GISEL-LABEL: v_minimumnum_f16_fneg_fabs_rhs: | 
|  | ; GFX10-GISEL:       ; %bb.0: | 
|  | ; GFX10-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX10-GISEL-NEXT:    v_max_f16_e32 v0, v0, v0 | 
|  | ; GFX10-GISEL-NEXT:    v_max_f16_e64 v1, -|v1|, -|v1| | 
|  | ; GFX10-GISEL-NEXT:    v_min_f16_e32 v0, v0, v1 | 
|  | ; GFX10-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX11-TRUE16-SDAG-LABEL: v_minimumnum_f16_fneg_fabs_rhs: | 
|  | ; GFX11-TRUE16-SDAG:       ; %bb.0: | 
|  | ; GFX11-TRUE16-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX11-TRUE16-SDAG-NEXT:    v_max_f16_e64 v0.h, -|v1.l|, -|v1.l| | 
|  | ; GFX11-TRUE16-SDAG-NEXT:    v_max_f16_e32 v0.l, v0.l, v0.l | 
|  | ; GFX11-TRUE16-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX11-TRUE16-SDAG-NEXT:    v_min_f16_e32 v0.l, v0.l, v0.h | 
|  | ; GFX11-TRUE16-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX11-TRUE16-GISEL-LABEL: v_minimumnum_f16_fneg_fabs_rhs: | 
|  | ; GFX11-TRUE16-GISEL:       ; %bb.0: | 
|  | ; GFX11-TRUE16-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX11-TRUE16-GISEL-NEXT:    v_max_f16_e32 v0.l, v0.l, v0.l | 
|  | ; GFX11-TRUE16-GISEL-NEXT:    v_max_f16_e64 v0.h, -|v1.l|, -|v1.l| | 
|  | ; GFX11-TRUE16-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX11-TRUE16-GISEL-NEXT:    v_min_f16_e32 v0.l, v0.l, v0.h | 
|  | ; GFX11-TRUE16-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX11-FAKE16-SDAG-LABEL: v_minimumnum_f16_fneg_fabs_rhs: | 
|  | ; GFX11-FAKE16-SDAG:       ; %bb.0: | 
|  | ; GFX11-FAKE16-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX11-FAKE16-SDAG-NEXT:    v_max_f16_e64 v1, -|v1|, -|v1| | 
|  | ; GFX11-FAKE16-SDAG-NEXT:    v_max_f16_e32 v0, v0, v0 | 
|  | ; GFX11-FAKE16-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX11-FAKE16-SDAG-NEXT:    v_min_f16_e32 v0, v0, v1 | 
|  | ; GFX11-FAKE16-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX11-FAKE16-GISEL-LABEL: v_minimumnum_f16_fneg_fabs_rhs: | 
|  | ; GFX11-FAKE16-GISEL:       ; %bb.0: | 
|  | ; GFX11-FAKE16-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX11-FAKE16-GISEL-NEXT:    v_max_f16_e32 v0, v0, v0 | 
|  | ; GFX11-FAKE16-GISEL-NEXT:    v_max_f16_e64 v1, -|v1|, -|v1| | 
|  | ; GFX11-FAKE16-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX11-FAKE16-GISEL-NEXT:    v_min_f16_e32 v0, v0, v1 | 
|  | ; GFX11-FAKE16-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX12-TRUE16-SDAG-LABEL: v_minimumnum_f16_fneg_fabs_rhs: | 
|  | ; GFX12-TRUE16-SDAG:       ; %bb.0: | 
|  | ; GFX12-TRUE16-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0 | 
|  | ; GFX12-TRUE16-SDAG-NEXT:    s_wait_expcnt 0x0 | 
|  | ; GFX12-TRUE16-SDAG-NEXT:    s_wait_samplecnt 0x0 | 
|  | ; GFX12-TRUE16-SDAG-NEXT:    s_wait_bvhcnt 0x0 | 
|  | ; GFX12-TRUE16-SDAG-NEXT:    s_wait_kmcnt 0x0 | 
|  | ; GFX12-TRUE16-SDAG-NEXT:    v_max_num_f16_e64 v0.h, -|v1.l|, -|v1.l| | 
|  | ; GFX12-TRUE16-SDAG-NEXT:    v_max_num_f16_e32 v0.l, v0.l, v0.l | 
|  | ; GFX12-TRUE16-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX12-TRUE16-SDAG-NEXT:    v_min_num_f16_e32 v0.l, v0.l, v0.h | 
|  | ; GFX12-TRUE16-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX12-TRUE16-GISEL-LABEL: v_minimumnum_f16_fneg_fabs_rhs: | 
|  | ; GFX12-TRUE16-GISEL:       ; %bb.0: | 
|  | ; GFX12-TRUE16-GISEL-NEXT:    s_wait_loadcnt_dscnt 0x0 | 
|  | ; GFX12-TRUE16-GISEL-NEXT:    s_wait_expcnt 0x0 | 
|  | ; GFX12-TRUE16-GISEL-NEXT:    s_wait_samplecnt 0x0 | 
|  | ; GFX12-TRUE16-GISEL-NEXT:    s_wait_bvhcnt 0x0 | 
|  | ; GFX12-TRUE16-GISEL-NEXT:    s_wait_kmcnt 0x0 | 
|  | ; GFX12-TRUE16-GISEL-NEXT:    v_max_num_f16_e32 v0.l, v0.l, v0.l | 
|  | ; GFX12-TRUE16-GISEL-NEXT:    v_max_num_f16_e64 v0.h, -|v1.l|, -|v1.l| | 
|  | ; GFX12-TRUE16-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX12-TRUE16-GISEL-NEXT:    v_min_num_f16_e32 v0.l, v0.l, v0.h | 
|  | ; GFX12-TRUE16-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX12-FAKE16-SDAG-LABEL: v_minimumnum_f16_fneg_fabs_rhs: | 
|  | ; GFX12-FAKE16-SDAG:       ; %bb.0: | 
|  | ; GFX12-FAKE16-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0 | 
|  | ; GFX12-FAKE16-SDAG-NEXT:    s_wait_expcnt 0x0 | 
|  | ; GFX12-FAKE16-SDAG-NEXT:    s_wait_samplecnt 0x0 | 
|  | ; GFX12-FAKE16-SDAG-NEXT:    s_wait_bvhcnt 0x0 | 
|  | ; GFX12-FAKE16-SDAG-NEXT:    s_wait_kmcnt 0x0 | 
|  | ; GFX12-FAKE16-SDAG-NEXT:    v_max_num_f16_e64 v1, -|v1|, -|v1| | 
|  | ; GFX12-FAKE16-SDAG-NEXT:    v_max_num_f16_e32 v0, v0, v0 | 
|  | ; GFX12-FAKE16-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX12-FAKE16-SDAG-NEXT:    v_min_num_f16_e32 v0, v0, v1 | 
|  | ; GFX12-FAKE16-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX12-FAKE16-GISEL-LABEL: v_minimumnum_f16_fneg_fabs_rhs: | 
|  | ; GFX12-FAKE16-GISEL:       ; %bb.0: | 
|  | ; GFX12-FAKE16-GISEL-NEXT:    s_wait_loadcnt_dscnt 0x0 | 
|  | ; GFX12-FAKE16-GISEL-NEXT:    s_wait_expcnt 0x0 | 
|  | ; GFX12-FAKE16-GISEL-NEXT:    s_wait_samplecnt 0x0 | 
|  | ; GFX12-FAKE16-GISEL-NEXT:    s_wait_bvhcnt 0x0 | 
|  | ; GFX12-FAKE16-GISEL-NEXT:    s_wait_kmcnt 0x0 | 
|  | ; GFX12-FAKE16-GISEL-NEXT:    v_max_num_f16_e32 v0, v0, v0 | 
|  | ; GFX12-FAKE16-GISEL-NEXT:    v_max_num_f16_e64 v1, -|v1|, -|v1| | 
|  | ; GFX12-FAKE16-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX12-FAKE16-GISEL-NEXT:    v_min_num_f16_e32 v0, v0, v1 | 
|  | ; GFX12-FAKE16-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | %fabs.y = call half @llvm.fabs.f16(half %y) | 
|  | %fneg.fabs.y = fneg half %fabs.y | 
|  | %result = call half @llvm.minimumnum.f16(half %x, half %fneg.fabs.y) | 
|  | ret half %result | 
|  | } | 
|  |  | 
|  | define half @v_minimumnum_f16_fabs(half %x, half %y) { | 
|  | ; GFX7-SDAG-LABEL: v_minimumnum_f16_fabs: | 
|  | ; GFX7-SDAG:       ; %bb.0: | 
|  | ; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v0, v0 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v1, v1 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e64 v0, |v0| | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e64 v1, |v1| | 
|  | ; GFX7-SDAG-NEXT:    v_min_f32_e32 v0, v0, v1 | 
|  | ; GFX7-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX7-GISEL-LABEL: v_minimumnum_f16_fabs: | 
|  | ; GFX7-GISEL:       ; %bb.0: | 
|  | ; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e64 v0, |v0| | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e64 v1, |v1| | 
|  | ; GFX7-GISEL-NEXT:    v_min_f32_e32 v0, v0, v1 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f16_f32_e32 v0, v0 | 
|  | ; GFX7-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX8-SDAG-LABEL: v_minimumnum_f16_fabs: | 
|  | ; GFX8-SDAG:       ; %bb.0: | 
|  | ; GFX8-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_e64 v1, |v1|, |v1| | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_e64 v0, |v0|, |v0| | 
|  | ; GFX8-SDAG-NEXT:    v_min_f16_e32 v0, v0, v1 | 
|  | ; GFX8-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX8-GISEL-LABEL: v_minimumnum_f16_fabs: | 
|  | ; GFX8-GISEL:       ; %bb.0: | 
|  | ; GFX8-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_e64 v0, |v0|, |v0| | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_e64 v1, |v1|, |v1| | 
|  | ; GFX8-GISEL-NEXT:    v_min_f16_e32 v0, v0, v1 | 
|  | ; GFX8-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX9-SDAG-LABEL: v_minimumnum_f16_fabs: | 
|  | ; GFX9-SDAG:       ; %bb.0: | 
|  | ; GFX9-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX9-SDAG-NEXT:    v_max_f16_e64 v1, |v1|, |v1| | 
|  | ; GFX9-SDAG-NEXT:    v_max_f16_e64 v0, |v0|, |v0| | 
|  | ; GFX9-SDAG-NEXT:    v_min_f16_e32 v0, v0, v1 | 
|  | ; GFX9-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX9-GISEL-LABEL: v_minimumnum_f16_fabs: | 
|  | ; GFX9-GISEL:       ; %bb.0: | 
|  | ; GFX9-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX9-GISEL-NEXT:    v_max_f16_e64 v0, |v0|, |v0| | 
|  | ; GFX9-GISEL-NEXT:    v_max_f16_e64 v1, |v1|, |v1| | 
|  | ; GFX9-GISEL-NEXT:    v_min_f16_e32 v0, v0, v1 | 
|  | ; GFX9-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX10-SDAG-LABEL: v_minimumnum_f16_fabs: | 
|  | ; GFX10-SDAG:       ; %bb.0: | 
|  | ; GFX10-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX10-SDAG-NEXT:    v_max_f16_e64 v1, |v1|, |v1| | 
|  | ; GFX10-SDAG-NEXT:    v_max_f16_e64 v0, |v0|, |v0| | 
|  | ; GFX10-SDAG-NEXT:    v_min_f16_e32 v0, v0, v1 | 
|  | ; GFX10-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX10-GISEL-LABEL: v_minimumnum_f16_fabs: | 
|  | ; GFX10-GISEL:       ; %bb.0: | 
|  | ; GFX10-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX10-GISEL-NEXT:    v_max_f16_e64 v0, |v0|, |v0| | 
|  | ; GFX10-GISEL-NEXT:    v_max_f16_e64 v1, |v1|, |v1| | 
|  | ; GFX10-GISEL-NEXT:    v_min_f16_e32 v0, v0, v1 | 
|  | ; GFX10-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX11-TRUE16-SDAG-LABEL: v_minimumnum_f16_fabs: | 
|  | ; GFX11-TRUE16-SDAG:       ; %bb.0: | 
|  | ; GFX11-TRUE16-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX11-TRUE16-SDAG-NEXT:    v_max_f16_e64 v0.h, |v1.l|, |v1.l| | 
|  | ; GFX11-TRUE16-SDAG-NEXT:    v_max_f16_e64 v0.l, |v0.l|, |v0.l| | 
|  | ; GFX11-TRUE16-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX11-TRUE16-SDAG-NEXT:    v_min_f16_e32 v0.l, v0.l, v0.h | 
|  | ; GFX11-TRUE16-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX11-TRUE16-GISEL-LABEL: v_minimumnum_f16_fabs: | 
|  | ; GFX11-TRUE16-GISEL:       ; %bb.0: | 
|  | ; GFX11-TRUE16-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX11-TRUE16-GISEL-NEXT:    v_max_f16_e64 v0.l, |v0.l|, |v0.l| | 
|  | ; GFX11-TRUE16-GISEL-NEXT:    v_max_f16_e64 v0.h, |v1.l|, |v1.l| | 
|  | ; GFX11-TRUE16-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX11-TRUE16-GISEL-NEXT:    v_min_f16_e32 v0.l, v0.l, v0.h | 
|  | ; GFX11-TRUE16-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX11-FAKE16-SDAG-LABEL: v_minimumnum_f16_fabs: | 
|  | ; GFX11-FAKE16-SDAG:       ; %bb.0: | 
|  | ; GFX11-FAKE16-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX11-FAKE16-SDAG-NEXT:    v_max_f16_e64 v1, |v1|, |v1| | 
|  | ; GFX11-FAKE16-SDAG-NEXT:    v_max_f16_e64 v0, |v0|, |v0| | 
|  | ; GFX11-FAKE16-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX11-FAKE16-SDAG-NEXT:    v_min_f16_e32 v0, v0, v1 | 
|  | ; GFX11-FAKE16-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX11-FAKE16-GISEL-LABEL: v_minimumnum_f16_fabs: | 
|  | ; GFX11-FAKE16-GISEL:       ; %bb.0: | 
|  | ; GFX11-FAKE16-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX11-FAKE16-GISEL-NEXT:    v_max_f16_e64 v0, |v0|, |v0| | 
|  | ; GFX11-FAKE16-GISEL-NEXT:    v_max_f16_e64 v1, |v1|, |v1| | 
|  | ; GFX11-FAKE16-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX11-FAKE16-GISEL-NEXT:    v_min_f16_e32 v0, v0, v1 | 
|  | ; GFX11-FAKE16-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX12-TRUE16-SDAG-LABEL: v_minimumnum_f16_fabs: | 
|  | ; GFX12-TRUE16-SDAG:       ; %bb.0: | 
|  | ; GFX12-TRUE16-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0 | 
|  | ; GFX12-TRUE16-SDAG-NEXT:    s_wait_expcnt 0x0 | 
|  | ; GFX12-TRUE16-SDAG-NEXT:    s_wait_samplecnt 0x0 | 
|  | ; GFX12-TRUE16-SDAG-NEXT:    s_wait_bvhcnt 0x0 | 
|  | ; GFX12-TRUE16-SDAG-NEXT:    s_wait_kmcnt 0x0 | 
|  | ; GFX12-TRUE16-SDAG-NEXT:    v_max_num_f16_e64 v0.h, |v1.l|, |v1.l| | 
|  | ; GFX12-TRUE16-SDAG-NEXT:    v_max_num_f16_e64 v0.l, |v0.l|, |v0.l| | 
|  | ; GFX12-TRUE16-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX12-TRUE16-SDAG-NEXT:    v_min_num_f16_e32 v0.l, v0.l, v0.h | 
|  | ; GFX12-TRUE16-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX12-TRUE16-GISEL-LABEL: v_minimumnum_f16_fabs: | 
|  | ; GFX12-TRUE16-GISEL:       ; %bb.0: | 
|  | ; GFX12-TRUE16-GISEL-NEXT:    s_wait_loadcnt_dscnt 0x0 | 
|  | ; GFX12-TRUE16-GISEL-NEXT:    s_wait_expcnt 0x0 | 
|  | ; GFX12-TRUE16-GISEL-NEXT:    s_wait_samplecnt 0x0 | 
|  | ; GFX12-TRUE16-GISEL-NEXT:    s_wait_bvhcnt 0x0 | 
|  | ; GFX12-TRUE16-GISEL-NEXT:    s_wait_kmcnt 0x0 | 
|  | ; GFX12-TRUE16-GISEL-NEXT:    v_max_num_f16_e64 v0.l, |v0.l|, |v0.l| | 
|  | ; GFX12-TRUE16-GISEL-NEXT:    v_max_num_f16_e64 v0.h, |v1.l|, |v1.l| | 
|  | ; GFX12-TRUE16-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX12-TRUE16-GISEL-NEXT:    v_min_num_f16_e32 v0.l, v0.l, v0.h | 
|  | ; GFX12-TRUE16-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX12-FAKE16-SDAG-LABEL: v_minimumnum_f16_fabs: | 
|  | ; GFX12-FAKE16-SDAG:       ; %bb.0: | 
|  | ; GFX12-FAKE16-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0 | 
|  | ; GFX12-FAKE16-SDAG-NEXT:    s_wait_expcnt 0x0 | 
|  | ; GFX12-FAKE16-SDAG-NEXT:    s_wait_samplecnt 0x0 | 
|  | ; GFX12-FAKE16-SDAG-NEXT:    s_wait_bvhcnt 0x0 | 
|  | ; GFX12-FAKE16-SDAG-NEXT:    s_wait_kmcnt 0x0 | 
|  | ; GFX12-FAKE16-SDAG-NEXT:    v_max_num_f16_e64 v1, |v1|, |v1| | 
|  | ; GFX12-FAKE16-SDAG-NEXT:    v_max_num_f16_e64 v0, |v0|, |v0| | 
|  | ; GFX12-FAKE16-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX12-FAKE16-SDAG-NEXT:    v_min_num_f16_e32 v0, v0, v1 | 
|  | ; GFX12-FAKE16-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX12-FAKE16-GISEL-LABEL: v_minimumnum_f16_fabs: | 
|  | ; GFX12-FAKE16-GISEL:       ; %bb.0: | 
|  | ; GFX12-FAKE16-GISEL-NEXT:    s_wait_loadcnt_dscnt 0x0 | 
|  | ; GFX12-FAKE16-GISEL-NEXT:    s_wait_expcnt 0x0 | 
|  | ; GFX12-FAKE16-GISEL-NEXT:    s_wait_samplecnt 0x0 | 
|  | ; GFX12-FAKE16-GISEL-NEXT:    s_wait_bvhcnt 0x0 | 
|  | ; GFX12-FAKE16-GISEL-NEXT:    s_wait_kmcnt 0x0 | 
|  | ; GFX12-FAKE16-GISEL-NEXT:    v_max_num_f16_e64 v0, |v0|, |v0| | 
|  | ; GFX12-FAKE16-GISEL-NEXT:    v_max_num_f16_e64 v1, |v1|, |v1| | 
|  | ; GFX12-FAKE16-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX12-FAKE16-GISEL-NEXT:    v_min_num_f16_e32 v0, v0, v1 | 
|  | ; GFX12-FAKE16-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | %fabs.x = call half @llvm.fabs.f16(half %x) | 
|  | %fabs.y = call half @llvm.fabs.f16(half %y) | 
|  | %result = call half @llvm.minimumnum.f16(half %fabs.x, half %fabs.y) | 
|  | ret half %result | 
|  | } | 
|  |  | 
|  | define half @v_minimumnum_f16_fneg(half %x, half %y) { | 
|  | ; GFX7-SDAG-LABEL: v_minimumnum_f16_fneg: | 
|  | ; GFX7-SDAG:       ; %bb.0: | 
|  | ; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e64 v0, -v0 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e64 v1, -v1 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v0, v0 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v1, v1 | 
|  | ; GFX7-SDAG-NEXT:    v_min_f32_e32 v0, v0, v1 | 
|  | ; GFX7-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX7-GISEL-LABEL: v_minimumnum_f16_fneg: | 
|  | ; GFX7-GISEL:       ; %bb.0: | 
|  | ; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e64 v0, -v0 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e64 v1, -v1 | 
|  | ; GFX7-GISEL-NEXT:    v_min_f32_e32 v0, v0, v1 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f16_f32_e32 v0, v0 | 
|  | ; GFX7-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX8-SDAG-LABEL: v_minimumnum_f16_fneg: | 
|  | ; GFX8-SDAG:       ; %bb.0: | 
|  | ; GFX8-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_e64 v1, -v1, -v1 | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_e64 v0, -v0, -v0 | 
|  | ; GFX8-SDAG-NEXT:    v_min_f16_e32 v0, v0, v1 | 
|  | ; GFX8-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX8-GISEL-LABEL: v_minimumnum_f16_fneg: | 
|  | ; GFX8-GISEL:       ; %bb.0: | 
|  | ; GFX8-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_e64 v0, -v0, -v0 | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_e64 v1, -v1, -v1 | 
|  | ; GFX8-GISEL-NEXT:    v_min_f16_e32 v0, v0, v1 | 
|  | ; GFX8-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX9-SDAG-LABEL: v_minimumnum_f16_fneg: | 
|  | ; GFX9-SDAG:       ; %bb.0: | 
|  | ; GFX9-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX9-SDAG-NEXT:    v_max_f16_e64 v1, -v1, -v1 | 
|  | ; GFX9-SDAG-NEXT:    v_max_f16_e64 v0, -v0, -v0 | 
|  | ; GFX9-SDAG-NEXT:    v_min_f16_e32 v0, v0, v1 | 
|  | ; GFX9-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX9-GISEL-LABEL: v_minimumnum_f16_fneg: | 
|  | ; GFX9-GISEL:       ; %bb.0: | 
|  | ; GFX9-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX9-GISEL-NEXT:    v_max_f16_e64 v0, -v0, -v0 | 
|  | ; GFX9-GISEL-NEXT:    v_max_f16_e64 v1, -v1, -v1 | 
|  | ; GFX9-GISEL-NEXT:    v_min_f16_e32 v0, v0, v1 | 
|  | ; GFX9-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX10-SDAG-LABEL: v_minimumnum_f16_fneg: | 
|  | ; GFX10-SDAG:       ; %bb.0: | 
|  | ; GFX10-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX10-SDAG-NEXT:    v_max_f16_e64 v1, -v1, -v1 | 
|  | ; GFX10-SDAG-NEXT:    v_max_f16_e64 v0, -v0, -v0 | 
|  | ; GFX10-SDAG-NEXT:    v_min_f16_e32 v0, v0, v1 | 
|  | ; GFX10-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX10-GISEL-LABEL: v_minimumnum_f16_fneg: | 
|  | ; GFX10-GISEL:       ; %bb.0: | 
|  | ; GFX10-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX10-GISEL-NEXT:    v_max_f16_e64 v0, -v0, -v0 | 
|  | ; GFX10-GISEL-NEXT:    v_max_f16_e64 v1, -v1, -v1 | 
|  | ; GFX10-GISEL-NEXT:    v_min_f16_e32 v0, v0, v1 | 
|  | ; GFX10-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX11-TRUE16-SDAG-LABEL: v_minimumnum_f16_fneg: | 
|  | ; GFX11-TRUE16-SDAG:       ; %bb.0: | 
|  | ; GFX11-TRUE16-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX11-TRUE16-SDAG-NEXT:    v_max_f16_e64 v0.h, -v1.l, -v1.l | 
|  | ; GFX11-TRUE16-SDAG-NEXT:    v_max_f16_e64 v0.l, -v0.l, -v0.l | 
|  | ; GFX11-TRUE16-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX11-TRUE16-SDAG-NEXT:    v_min_f16_e32 v0.l, v0.l, v0.h | 
|  | ; GFX11-TRUE16-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX11-TRUE16-GISEL-LABEL: v_minimumnum_f16_fneg: | 
|  | ; GFX11-TRUE16-GISEL:       ; %bb.0: | 
|  | ; GFX11-TRUE16-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX11-TRUE16-GISEL-NEXT:    v_max_f16_e64 v0.l, -v0.l, -v0.l | 
|  | ; GFX11-TRUE16-GISEL-NEXT:    v_max_f16_e64 v0.h, -v1.l, -v1.l | 
|  | ; GFX11-TRUE16-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX11-TRUE16-GISEL-NEXT:    v_min_f16_e32 v0.l, v0.l, v0.h | 
|  | ; GFX11-TRUE16-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX11-FAKE16-SDAG-LABEL: v_minimumnum_f16_fneg: | 
|  | ; GFX11-FAKE16-SDAG:       ; %bb.0: | 
|  | ; GFX11-FAKE16-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX11-FAKE16-SDAG-NEXT:    v_max_f16_e64 v1, -v1, -v1 | 
|  | ; GFX11-FAKE16-SDAG-NEXT:    v_max_f16_e64 v0, -v0, -v0 | 
|  | ; GFX11-FAKE16-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX11-FAKE16-SDAG-NEXT:    v_min_f16_e32 v0, v0, v1 | 
|  | ; GFX11-FAKE16-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX11-FAKE16-GISEL-LABEL: v_minimumnum_f16_fneg: | 
|  | ; GFX11-FAKE16-GISEL:       ; %bb.0: | 
|  | ; GFX11-FAKE16-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX11-FAKE16-GISEL-NEXT:    v_max_f16_e64 v0, -v0, -v0 | 
|  | ; GFX11-FAKE16-GISEL-NEXT:    v_max_f16_e64 v1, -v1, -v1 | 
|  | ; GFX11-FAKE16-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX11-FAKE16-GISEL-NEXT:    v_min_f16_e32 v0, v0, v1 | 
|  | ; GFX11-FAKE16-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX12-TRUE16-SDAG-LABEL: v_minimumnum_f16_fneg: | 
|  | ; GFX12-TRUE16-SDAG:       ; %bb.0: | 
|  | ; GFX12-TRUE16-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0 | 
|  | ; GFX12-TRUE16-SDAG-NEXT:    s_wait_expcnt 0x0 | 
|  | ; GFX12-TRUE16-SDAG-NEXT:    s_wait_samplecnt 0x0 | 
|  | ; GFX12-TRUE16-SDAG-NEXT:    s_wait_bvhcnt 0x0 | 
|  | ; GFX12-TRUE16-SDAG-NEXT:    s_wait_kmcnt 0x0 | 
|  | ; GFX12-TRUE16-SDAG-NEXT:    v_max_num_f16_e64 v0.h, -v1.l, -v1.l | 
|  | ; GFX12-TRUE16-SDAG-NEXT:    v_max_num_f16_e64 v0.l, -v0.l, -v0.l | 
|  | ; GFX12-TRUE16-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX12-TRUE16-SDAG-NEXT:    v_min_num_f16_e32 v0.l, v0.l, v0.h | 
|  | ; GFX12-TRUE16-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX12-TRUE16-GISEL-LABEL: v_minimumnum_f16_fneg: | 
|  | ; GFX12-TRUE16-GISEL:       ; %bb.0: | 
|  | ; GFX12-TRUE16-GISEL-NEXT:    s_wait_loadcnt_dscnt 0x0 | 
|  | ; GFX12-TRUE16-GISEL-NEXT:    s_wait_expcnt 0x0 | 
|  | ; GFX12-TRUE16-GISEL-NEXT:    s_wait_samplecnt 0x0 | 
|  | ; GFX12-TRUE16-GISEL-NEXT:    s_wait_bvhcnt 0x0 | 
|  | ; GFX12-TRUE16-GISEL-NEXT:    s_wait_kmcnt 0x0 | 
|  | ; GFX12-TRUE16-GISEL-NEXT:    v_max_num_f16_e64 v0.l, -v0.l, -v0.l | 
|  | ; GFX12-TRUE16-GISEL-NEXT:    v_max_num_f16_e64 v0.h, -v1.l, -v1.l | 
|  | ; GFX12-TRUE16-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX12-TRUE16-GISEL-NEXT:    v_min_num_f16_e32 v0.l, v0.l, v0.h | 
|  | ; GFX12-TRUE16-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX12-FAKE16-SDAG-LABEL: v_minimumnum_f16_fneg: | 
|  | ; GFX12-FAKE16-SDAG:       ; %bb.0: | 
|  | ; GFX12-FAKE16-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0 | 
|  | ; GFX12-FAKE16-SDAG-NEXT:    s_wait_expcnt 0x0 | 
|  | ; GFX12-FAKE16-SDAG-NEXT:    s_wait_samplecnt 0x0 | 
|  | ; GFX12-FAKE16-SDAG-NEXT:    s_wait_bvhcnt 0x0 | 
|  | ; GFX12-FAKE16-SDAG-NEXT:    s_wait_kmcnt 0x0 | 
|  | ; GFX12-FAKE16-SDAG-NEXT:    v_max_num_f16_e64 v1, -v1, -v1 | 
|  | ; GFX12-FAKE16-SDAG-NEXT:    v_max_num_f16_e64 v0, -v0, -v0 | 
|  | ; GFX12-FAKE16-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX12-FAKE16-SDAG-NEXT:    v_min_num_f16_e32 v0, v0, v1 | 
|  | ; GFX12-FAKE16-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX12-FAKE16-GISEL-LABEL: v_minimumnum_f16_fneg: | 
|  | ; GFX12-FAKE16-GISEL:       ; %bb.0: | 
|  | ; GFX12-FAKE16-GISEL-NEXT:    s_wait_loadcnt_dscnt 0x0 | 
|  | ; GFX12-FAKE16-GISEL-NEXT:    s_wait_expcnt 0x0 | 
|  | ; GFX12-FAKE16-GISEL-NEXT:    s_wait_samplecnt 0x0 | 
|  | ; GFX12-FAKE16-GISEL-NEXT:    s_wait_bvhcnt 0x0 | 
|  | ; GFX12-FAKE16-GISEL-NEXT:    s_wait_kmcnt 0x0 | 
|  | ; GFX12-FAKE16-GISEL-NEXT:    v_max_num_f16_e64 v0, -v0, -v0 | 
|  | ; GFX12-FAKE16-GISEL-NEXT:    v_max_num_f16_e64 v1, -v1, -v1 | 
|  | ; GFX12-FAKE16-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX12-FAKE16-GISEL-NEXT:    v_min_num_f16_e32 v0, v0, v1 | 
|  | ; GFX12-FAKE16-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | %fneg.x = fneg half %x | 
|  | %fneg.y = fneg half %y | 
|  | %result = call half @llvm.minimumnum.f16(half %fneg.x, half %fneg.y) | 
|  | ret half %result | 
|  | } | 
|  |  | 
|  | define double @v_minimumnum_f64_fneg(double %x, double %y) { | 
|  | ; GFX7-SDAG-LABEL: v_minimumnum_f64_fneg: | 
|  | ; GFX7-SDAG:       ; %bb.0: | 
|  | ; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX7-SDAG-NEXT:    v_max_f64 v[2:3], -v[2:3], -v[2:3] | 
|  | ; GFX7-SDAG-NEXT:    v_max_f64 v[0:1], -v[0:1], -v[0:1] | 
|  | ; GFX7-SDAG-NEXT:    v_min_f64 v[0:1], v[0:1], v[2:3] | 
|  | ; GFX7-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX7-GISEL-LABEL: v_minimumnum_f64_fneg: | 
|  | ; GFX7-GISEL:       ; %bb.0: | 
|  | ; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX7-GISEL-NEXT:    v_max_f64 v[0:1], -v[0:1], -v[0:1] | 
|  | ; GFX7-GISEL-NEXT:    v_max_f64 v[2:3], -v[2:3], -v[2:3] | 
|  | ; GFX7-GISEL-NEXT:    v_min_f64 v[0:1], v[0:1], v[2:3] | 
|  | ; GFX7-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX8-SDAG-LABEL: v_minimumnum_f64_fneg: | 
|  | ; GFX8-SDAG:       ; %bb.0: | 
|  | ; GFX8-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX8-SDAG-NEXT:    v_max_f64 v[2:3], -v[2:3], -v[2:3] | 
|  | ; GFX8-SDAG-NEXT:    v_max_f64 v[0:1], -v[0:1], -v[0:1] | 
|  | ; GFX8-SDAG-NEXT:    v_min_f64 v[0:1], v[0:1], v[2:3] | 
|  | ; GFX8-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX8-GISEL-LABEL: v_minimumnum_f64_fneg: | 
|  | ; GFX8-GISEL:       ; %bb.0: | 
|  | ; GFX8-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX8-GISEL-NEXT:    v_max_f64 v[0:1], -v[0:1], -v[0:1] | 
|  | ; GFX8-GISEL-NEXT:    v_max_f64 v[2:3], -v[2:3], -v[2:3] | 
|  | ; GFX8-GISEL-NEXT:    v_min_f64 v[0:1], v[0:1], v[2:3] | 
|  | ; GFX8-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX9-SDAG-LABEL: v_minimumnum_f64_fneg: | 
|  | ; GFX9-SDAG:       ; %bb.0: | 
|  | ; GFX9-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX9-SDAG-NEXT:    v_max_f64 v[2:3], -v[2:3], -v[2:3] | 
|  | ; GFX9-SDAG-NEXT:    v_max_f64 v[0:1], -v[0:1], -v[0:1] | 
|  | ; GFX9-SDAG-NEXT:    v_min_f64 v[0:1], v[0:1], v[2:3] | 
|  | ; GFX9-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX9-GISEL-LABEL: v_minimumnum_f64_fneg: | 
|  | ; GFX9-GISEL:       ; %bb.0: | 
|  | ; GFX9-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX9-GISEL-NEXT:    v_max_f64 v[0:1], -v[0:1], -v[0:1] | 
|  | ; GFX9-GISEL-NEXT:    v_max_f64 v[2:3], -v[2:3], -v[2:3] | 
|  | ; GFX9-GISEL-NEXT:    v_min_f64 v[0:1], v[0:1], v[2:3] | 
|  | ; GFX9-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX10-SDAG-LABEL: v_minimumnum_f64_fneg: | 
|  | ; GFX10-SDAG:       ; %bb.0: | 
|  | ; GFX10-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX10-SDAG-NEXT:    v_max_f64 v[2:3], -v[2:3], -v[2:3] | 
|  | ; GFX10-SDAG-NEXT:    v_max_f64 v[0:1], -v[0:1], -v[0:1] | 
|  | ; GFX10-SDAG-NEXT:    v_min_f64 v[0:1], v[0:1], v[2:3] | 
|  | ; GFX10-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX10-GISEL-LABEL: v_minimumnum_f64_fneg: | 
|  | ; GFX10-GISEL:       ; %bb.0: | 
|  | ; GFX10-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX10-GISEL-NEXT:    v_max_f64 v[0:1], -v[0:1], -v[0:1] | 
|  | ; GFX10-GISEL-NEXT:    v_max_f64 v[2:3], -v[2:3], -v[2:3] | 
|  | ; GFX10-GISEL-NEXT:    v_min_f64 v[0:1], v[0:1], v[2:3] | 
|  | ; GFX10-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX11-SDAG-LABEL: v_minimumnum_f64_fneg: | 
|  | ; GFX11-SDAG:       ; %bb.0: | 
|  | ; GFX11-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX11-SDAG-NEXT:    v_max_f64 v[2:3], -v[2:3], -v[2:3] | 
|  | ; GFX11-SDAG-NEXT:    v_max_f64 v[0:1], -v[0:1], -v[0:1] | 
|  | ; GFX11-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX11-SDAG-NEXT:    v_min_f64 v[0:1], v[0:1], v[2:3] | 
|  | ; GFX11-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX11-GISEL-LABEL: v_minimumnum_f64_fneg: | 
|  | ; GFX11-GISEL:       ; %bb.0: | 
|  | ; GFX11-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX11-GISEL-NEXT:    v_max_f64 v[0:1], -v[0:1], -v[0:1] | 
|  | ; GFX11-GISEL-NEXT:    v_max_f64 v[2:3], -v[2:3], -v[2:3] | 
|  | ; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX11-GISEL-NEXT:    v_min_f64 v[0:1], v[0:1], v[2:3] | 
|  | ; GFX11-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX12-SDAG-LABEL: v_minimumnum_f64_fneg: | 
|  | ; GFX12-SDAG:       ; %bb.0: | 
|  | ; GFX12-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    s_wait_expcnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    s_wait_samplecnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    s_wait_bvhcnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    s_wait_kmcnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    v_max_num_f64_e64 v[2:3], -v[2:3], -v[2:3] | 
|  | ; GFX12-SDAG-NEXT:    v_max_num_f64_e64 v[0:1], -v[0:1], -v[0:1] | 
|  | ; GFX12-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX12-SDAG-NEXT:    v_min_num_f64_e32 v[0:1], v[0:1], v[2:3] | 
|  | ; GFX12-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX12-GISEL-LABEL: v_minimumnum_f64_fneg: | 
|  | ; GFX12-GISEL:       ; %bb.0: | 
|  | ; GFX12-GISEL-NEXT:    s_wait_loadcnt_dscnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    s_wait_expcnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    s_wait_samplecnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    s_wait_bvhcnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    s_wait_kmcnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    v_max_num_f64_e64 v[0:1], -v[0:1], -v[0:1] | 
|  | ; GFX12-GISEL-NEXT:    v_max_num_f64_e64 v[2:3], -v[2:3], -v[2:3] | 
|  | ; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX12-GISEL-NEXT:    v_min_num_f64_e32 v[0:1], v[0:1], v[2:3] | 
|  | ; GFX12-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | %fneg.x = fneg double %x | 
|  | %fneg.y = fneg double %y | 
|  | %result = call double @llvm.minimumnum.f64(double %fneg.x, double %fneg.y) | 
|  | ret double %result | 
|  | } | 
|  |  | 
|  | define <2 x half> @v_minimumnum_v2f16(<2 x half> %x, <2 x half> %y) { | 
|  | ; GFX7-SDAG-LABEL: v_minimumnum_v2f16: | 
|  | ; GFX7-SDAG:       ; %bb.0: | 
|  | ; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v1, v1 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v0, v0 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v2, v2 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v3, v3 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v1, v1 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v0, v0 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v2, v2 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v3, v3 | 
|  | ; GFX7-SDAG-NEXT:    v_min_f32_e32 v0, v0, v2 | 
|  | ; GFX7-SDAG-NEXT:    v_min_f32_e32 v1, v1, v3 | 
|  | ; GFX7-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX7-GISEL-LABEL: v_minimumnum_v2f16: | 
|  | ; GFX7-GISEL:       ; %bb.0: | 
|  | ; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v0, v0 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v2, v2 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v1, v1 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v3, v3 | 
|  | ; GFX7-GISEL-NEXT:    v_min_f32_e32 v0, v0, v2 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f16_f32_e32 v0, v0 | 
|  | ; GFX7-GISEL-NEXT:    v_min_f32_e32 v1, v1, v3 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f16_f32_e32 v1, v1 | 
|  | ; GFX7-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX8-SDAG-LABEL: v_minimumnum_v2f16: | 
|  | ; GFX8-SDAG:       ; %bb.0: | 
|  | ; GFX8-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_sdwa v2, v1, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_sdwa v3, v0, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_e32 v1, v1, v1 | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_e32 v0, v0, v0 | 
|  | ; GFX8-SDAG-NEXT:    v_min_f16_sdwa v2, v3, v2 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD | 
|  | ; GFX8-SDAG-NEXT:    v_min_f16_e32 v0, v0, v1 | 
|  | ; GFX8-SDAG-NEXT:    v_or_b32_e32 v0, v0, v2 | 
|  | ; GFX8-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX8-GISEL-LABEL: v_minimumnum_v2f16: | 
|  | ; GFX8-GISEL:       ; %bb.0: | 
|  | ; GFX8-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_e32 v2, v0, v0 | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_e32 v3, v1, v1 | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_sdwa v0, v0, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_sdwa v1, v1, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-GISEL-NEXT:    v_min_f16_e32 v2, v2, v3 | 
|  | ; GFX8-GISEL-NEXT:    v_min_f16_sdwa v0, v0, v1 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD | 
|  | ; GFX8-GISEL-NEXT:    v_or_b32_e32 v0, v2, v0 | 
|  | ; GFX8-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX900-SDAG-LABEL: v_minimumnum_v2f16: | 
|  | ; GFX900-SDAG:       ; %bb.0: | 
|  | ; GFX900-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX900-SDAG-NEXT:    v_pk_max_f16 v1, v1, v1 | 
|  | ; GFX900-SDAG-NEXT:    v_pk_max_f16 v0, v0, v0 | 
|  | ; GFX900-SDAG-NEXT:    v_pk_min_f16 v0, v0, v1 | 
|  | ; GFX900-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX900-GISEL-LABEL: v_minimumnum_v2f16: | 
|  | ; GFX900-GISEL:       ; %bb.0: | 
|  | ; GFX900-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX900-GISEL-NEXT:    v_pk_max_f16 v0, v0, v0 | 
|  | ; GFX900-GISEL-NEXT:    v_pk_max_f16 v1, v1, v1 | 
|  | ; GFX900-GISEL-NEXT:    v_pk_min_f16 v0, v0, v1 | 
|  | ; GFX900-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX950-SDAG-LABEL: v_minimumnum_v2f16: | 
|  | ; GFX950-SDAG:       ; %bb.0: | 
|  | ; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX950-SDAG-NEXT:    v_pk_max_f16 v1, v1, v1 | 
|  | ; GFX950-SDAG-NEXT:    v_pk_max_f16 v0, v0, v0 | 
|  | ; GFX950-SDAG-NEXT:    s_nop 0 | 
|  | ; GFX950-SDAG-NEXT:    v_pk_min_f16 v0, v0, v1 | 
|  | ; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX950-GISEL-LABEL: v_minimumnum_v2f16: | 
|  | ; GFX950-GISEL:       ; %bb.0: | 
|  | ; GFX950-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX950-GISEL-NEXT:    v_pk_max_f16 v0, v0, v0 | 
|  | ; GFX950-GISEL-NEXT:    v_pk_max_f16 v1, v1, v1 | 
|  | ; GFX950-GISEL-NEXT:    s_nop 0 | 
|  | ; GFX950-GISEL-NEXT:    v_pk_min_f16 v0, v0, v1 | 
|  | ; GFX950-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX10-SDAG-LABEL: v_minimumnum_v2f16: | 
|  | ; GFX10-SDAG:       ; %bb.0: | 
|  | ; GFX10-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX10-SDAG-NEXT:    v_pk_max_f16 v1, v1, v1 | 
|  | ; GFX10-SDAG-NEXT:    v_pk_max_f16 v0, v0, v0 | 
|  | ; GFX10-SDAG-NEXT:    v_pk_min_f16 v0, v0, v1 | 
|  | ; GFX10-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX10-GISEL-LABEL: v_minimumnum_v2f16: | 
|  | ; GFX10-GISEL:       ; %bb.0: | 
|  | ; GFX10-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX10-GISEL-NEXT:    v_pk_max_f16 v0, v0, v0 | 
|  | ; GFX10-GISEL-NEXT:    v_pk_max_f16 v1, v1, v1 | 
|  | ; GFX10-GISEL-NEXT:    v_pk_min_f16 v0, v0, v1 | 
|  | ; GFX10-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX11-SDAG-LABEL: v_minimumnum_v2f16: | 
|  | ; GFX11-SDAG:       ; %bb.0: | 
|  | ; GFX11-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX11-SDAG-NEXT:    v_pk_max_f16 v1, v1, v1 | 
|  | ; GFX11-SDAG-NEXT:    v_pk_max_f16 v0, v0, v0 | 
|  | ; GFX11-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX11-SDAG-NEXT:    v_pk_min_f16 v0, v0, v1 | 
|  | ; GFX11-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX11-GISEL-LABEL: v_minimumnum_v2f16: | 
|  | ; GFX11-GISEL:       ; %bb.0: | 
|  | ; GFX11-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX11-GISEL-NEXT:    v_pk_max_f16 v0, v0, v0 | 
|  | ; GFX11-GISEL-NEXT:    v_pk_max_f16 v1, v1, v1 | 
|  | ; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX11-GISEL-NEXT:    v_pk_min_f16 v0, v0, v1 | 
|  | ; GFX11-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX12-SDAG-LABEL: v_minimumnum_v2f16: | 
|  | ; GFX12-SDAG:       ; %bb.0: | 
|  | ; GFX12-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    s_wait_expcnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    s_wait_samplecnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    s_wait_bvhcnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    s_wait_kmcnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    v_pk_max_num_f16 v1, v1, v1 | 
|  | ; GFX12-SDAG-NEXT:    v_pk_max_num_f16 v0, v0, v0 | 
|  | ; GFX12-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX12-SDAG-NEXT:    v_pk_min_num_f16 v0, v0, v1 | 
|  | ; GFX12-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX12-GISEL-LABEL: v_minimumnum_v2f16: | 
|  | ; GFX12-GISEL:       ; %bb.0: | 
|  | ; GFX12-GISEL-NEXT:    s_wait_loadcnt_dscnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    s_wait_expcnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    s_wait_samplecnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    s_wait_bvhcnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    s_wait_kmcnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    v_pk_max_num_f16 v0, v0, v0 | 
|  | ; GFX12-GISEL-NEXT:    v_pk_max_num_f16 v1, v1, v1 | 
|  | ; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX12-GISEL-NEXT:    v_pk_min_num_f16 v0, v0, v1 | 
|  | ; GFX12-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | %result = call <2 x half> @llvm.minimumnum.v2f16(<2 x half> %x, <2 x half> %y) | 
|  | ret <2 x half> %result | 
|  | } | 
|  |  | 
|  | define <2 x half> @v_minimumnum_v2f16_nnan(<2 x half> %x, <2 x half> %y) { | 
|  | ; GFX7-SDAG-LABEL: v_minimumnum_v2f16_nnan: | 
|  | ; GFX7-SDAG:       ; %bb.0: | 
|  | ; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v3, v3 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v2, v2 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v0, v0 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v1, v1 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v3, v3 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v2, v2 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v0, v0 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v1, v1 | 
|  | ; GFX7-SDAG-NEXT:    v_min_f32_e32 v0, v0, v2 | 
|  | ; GFX7-SDAG-NEXT:    v_min_f32_e32 v1, v1, v3 | 
|  | ; GFX7-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX7-GISEL-LABEL: v_minimumnum_v2f16_nnan: | 
|  | ; GFX7-GISEL:       ; %bb.0: | 
|  | ; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v0, v0 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v2, v2 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v1, v1 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v3, v3 | 
|  | ; GFX7-GISEL-NEXT:    v_min_f32_e32 v0, v0, v2 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f16_f32_e32 v0, v0 | 
|  | ; GFX7-GISEL-NEXT:    v_min_f32_e32 v1, v1, v3 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f16_f32_e32 v1, v1 | 
|  | ; GFX7-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX8-SDAG-LABEL: v_minimumnum_v2f16_nnan: | 
|  | ; GFX8-SDAG:       ; %bb.0: | 
|  | ; GFX8-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX8-SDAG-NEXT:    v_min_f16_sdwa v2, v0, v1 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-SDAG-NEXT:    v_min_f16_e32 v0, v0, v1 | 
|  | ; GFX8-SDAG-NEXT:    v_or_b32_e32 v0, v0, v2 | 
|  | ; GFX8-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX8-GISEL-LABEL: v_minimumnum_v2f16_nnan: | 
|  | ; GFX8-GISEL:       ; %bb.0: | 
|  | ; GFX8-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX8-GISEL-NEXT:    v_min_f16_e32 v2, v0, v1 | 
|  | ; GFX8-GISEL-NEXT:    v_min_f16_sdwa v0, v0, v1 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-GISEL-NEXT:    v_or_b32_e32 v0, v2, v0 | 
|  | ; GFX8-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX9-LABEL: v_minimumnum_v2f16_nnan: | 
|  | ; GFX9:       ; %bb.0: | 
|  | ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX9-NEXT:    v_pk_min_f16 v0, v0, v1 | 
|  | ; GFX9-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX10-LABEL: v_minimumnum_v2f16_nnan: | 
|  | ; GFX10:       ; %bb.0: | 
|  | ; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX10-NEXT:    v_pk_min_f16 v0, v0, v1 | 
|  | ; GFX10-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX11-LABEL: v_minimumnum_v2f16_nnan: | 
|  | ; GFX11:       ; %bb.0: | 
|  | ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX11-NEXT:    v_pk_min_f16 v0, v0, v1 | 
|  | ; GFX11-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX12-LABEL: v_minimumnum_v2f16_nnan: | 
|  | ; GFX12:       ; %bb.0: | 
|  | ; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0 | 
|  | ; GFX12-NEXT:    s_wait_expcnt 0x0 | 
|  | ; GFX12-NEXT:    s_wait_samplecnt 0x0 | 
|  | ; GFX12-NEXT:    s_wait_bvhcnt 0x0 | 
|  | ; GFX12-NEXT:    s_wait_kmcnt 0x0 | 
|  | ; GFX12-NEXT:    v_pk_min_num_f16 v0, v0, v1 | 
|  | ; GFX12-NEXT:    s_setpc_b64 s[30:31] | 
|  | %result = call nnan <2 x half> @llvm.minimumnum.v2f16(<2 x half> %x, <2 x half> %y) | 
|  | ret <2 x half> %result | 
|  | } | 
|  |  | 
|  | define <3 x half> @v_minimumnum_v3f16(<3 x half> %x, <3 x half> %y) { | 
|  | ; GFX7-SDAG-LABEL: v_minimumnum_v3f16: | 
|  | ; GFX7-SDAG:       ; %bb.0: | 
|  | ; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v2, v2 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v5, v5 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v1, v1 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v0, v0 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v3, v3 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v4, v4 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v2, v2 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v1, v1 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v0, v0 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v3, v3 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v4, v4 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v5, v5 | 
|  | ; GFX7-SDAG-NEXT:    v_min_f32_e32 v0, v0, v3 | 
|  | ; GFX7-SDAG-NEXT:    v_min_f32_e32 v1, v1, v4 | 
|  | ; GFX7-SDAG-NEXT:    v_min_f32_e32 v2, v2, v5 | 
|  | ; GFX7-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX7-GISEL-LABEL: v_minimumnum_v3f16: | 
|  | ; GFX7-GISEL:       ; %bb.0: | 
|  | ; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v0, v0 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v3, v3 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v1, v1 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v2, v2 | 
|  | ; GFX7-GISEL-NEXT:    v_min_f32_e32 v0, v0, v3 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v3, v4 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v4, v5 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f16_f32_e32 v0, v0 | 
|  | ; GFX7-GISEL-NEXT:    v_min_f32_e32 v1, v1, v3 | 
|  | ; GFX7-GISEL-NEXT:    v_min_f32_e32 v2, v2, v4 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f16_f32_e32 v1, v1 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f16_f32_e32 v2, v2 | 
|  | ; GFX7-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX8-SDAG-LABEL: v_minimumnum_v3f16: | 
|  | ; GFX8-SDAG:       ; %bb.0: | 
|  | ; GFX8-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_sdwa v4, v2, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_sdwa v5, v0, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_e32 v2, v2, v2 | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_e32 v0, v0, v0 | 
|  | ; GFX8-SDAG-NEXT:    v_min_f16_sdwa v4, v5, v4 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_e32 v3, v3, v3 | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_e32 v1, v1, v1 | 
|  | ; GFX8-SDAG-NEXT:    v_min_f16_e32 v0, v0, v2 | 
|  | ; GFX8-SDAG-NEXT:    v_min_f16_e32 v1, v1, v3 | 
|  | ; GFX8-SDAG-NEXT:    v_or_b32_e32 v0, v0, v4 | 
|  | ; GFX8-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX8-GISEL-LABEL: v_minimumnum_v3f16: | 
|  | ; GFX8-GISEL:       ; %bb.0: | 
|  | ; GFX8-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_e32 v4, v0, v0 | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_e32 v5, v2, v2 | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_sdwa v0, v0, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_sdwa v2, v2, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-GISEL-NEXT:    v_min_f16_e32 v4, v4, v5 | 
|  | ; GFX8-GISEL-NEXT:    v_min_f16_sdwa v0, v0, v2 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_e32 v1, v1, v1 | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_e32 v2, v3, v3 | 
|  | ; GFX8-GISEL-NEXT:    v_min_f16_e32 v1, v1, v2 | 
|  | ; GFX8-GISEL-NEXT:    v_or_b32_e32 v0, v4, v0 | 
|  | ; GFX8-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX9-SDAG-LABEL: v_minimumnum_v3f16: | 
|  | ; GFX9-SDAG:       ; %bb.0: | 
|  | ; GFX9-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX9-SDAG-NEXT:    v_pk_max_f16 v3, v3, v3 | 
|  | ; GFX9-SDAG-NEXT:    v_pk_max_f16 v1, v1, v1 | 
|  | ; GFX9-SDAG-NEXT:    v_pk_max_f16 v2, v2, v2 | 
|  | ; GFX9-SDAG-NEXT:    v_pk_max_f16 v0, v0, v0 | 
|  | ; GFX9-SDAG-NEXT:    v_pk_min_f16 v1, v1, v3 | 
|  | ; GFX9-SDAG-NEXT:    v_pk_min_f16 v0, v0, v2 | 
|  | ; GFX9-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX900-GISEL-LABEL: v_minimumnum_v3f16: | 
|  | ; GFX900-GISEL:       ; %bb.0: | 
|  | ; GFX900-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX900-GISEL-NEXT:    v_pk_max_f16 v0, v0, v0 | 
|  | ; GFX900-GISEL-NEXT:    v_pk_max_f16 v2, v2, v2 | 
|  | ; GFX900-GISEL-NEXT:    v_pk_min_f16 v0, v0, v2 | 
|  | ; GFX900-GISEL-NEXT:    v_pk_max_f16 v1, v1, v1 | 
|  | ; GFX900-GISEL-NEXT:    v_pk_max_f16 v2, v3, v3 | 
|  | ; GFX900-GISEL-NEXT:    v_pk_min_f16 v1, v1, v2 | 
|  | ; GFX900-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX950-GISEL-LABEL: v_minimumnum_v3f16: | 
|  | ; GFX950-GISEL:       ; %bb.0: | 
|  | ; GFX950-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX950-GISEL-NEXT:    v_pk_max_f16 v0, v0, v0 | 
|  | ; GFX950-GISEL-NEXT:    v_pk_max_f16 v2, v2, v2 | 
|  | ; GFX950-GISEL-NEXT:    v_pk_max_f16 v1, v1, v1 | 
|  | ; GFX950-GISEL-NEXT:    v_pk_min_f16 v0, v0, v2 | 
|  | ; GFX950-GISEL-NEXT:    v_pk_max_f16 v2, v3, v3 | 
|  | ; GFX950-GISEL-NEXT:    s_nop 0 | 
|  | ; GFX950-GISEL-NEXT:    v_pk_min_f16 v1, v1, v2 | 
|  | ; GFX950-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX10-SDAG-LABEL: v_minimumnum_v3f16: | 
|  | ; GFX10-SDAG:       ; %bb.0: | 
|  | ; GFX10-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX10-SDAG-NEXT:    v_pk_max_f16 v3, v3, v3 | 
|  | ; GFX10-SDAG-NEXT:    v_pk_max_f16 v2, v2, v2 | 
|  | ; GFX10-SDAG-NEXT:    v_pk_max_f16 v0, v0, v0 | 
|  | ; GFX10-SDAG-NEXT:    v_pk_max_f16 v1, v1, v1 | 
|  | ; GFX10-SDAG-NEXT:    v_pk_min_f16 v0, v0, v2 | 
|  | ; GFX10-SDAG-NEXT:    v_pk_min_f16 v1, v1, v3 | 
|  | ; GFX10-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX10-GISEL-LABEL: v_minimumnum_v3f16: | 
|  | ; GFX10-GISEL:       ; %bb.0: | 
|  | ; GFX10-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX10-GISEL-NEXT:    v_pk_max_f16 v0, v0, v0 | 
|  | ; GFX10-GISEL-NEXT:    v_pk_max_f16 v2, v2, v2 | 
|  | ; GFX10-GISEL-NEXT:    v_pk_max_f16 v1, v1, v1 | 
|  | ; GFX10-GISEL-NEXT:    v_pk_max_f16 v3, v3, v3 | 
|  | ; GFX10-GISEL-NEXT:    v_pk_min_f16 v0, v0, v2 | 
|  | ; GFX10-GISEL-NEXT:    v_pk_min_f16 v1, v1, v3 | 
|  | ; GFX10-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX11-SDAG-LABEL: v_minimumnum_v3f16: | 
|  | ; GFX11-SDAG:       ; %bb.0: | 
|  | ; GFX11-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX11-SDAG-NEXT:    v_pk_max_f16 v3, v3, v3 | 
|  | ; GFX11-SDAG-NEXT:    v_pk_max_f16 v2, v2, v2 | 
|  | ; GFX11-SDAG-NEXT:    v_pk_max_f16 v0, v0, v0 | 
|  | ; GFX11-SDAG-NEXT:    v_pk_max_f16 v1, v1, v1 | 
|  | ; GFX11-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2) | 
|  | ; GFX11-SDAG-NEXT:    v_pk_min_f16 v0, v0, v2 | 
|  | ; GFX11-SDAG-NEXT:    v_pk_min_f16 v1, v1, v3 | 
|  | ; GFX11-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX11-GISEL-LABEL: v_minimumnum_v3f16: | 
|  | ; GFX11-GISEL:       ; %bb.0: | 
|  | ; GFX11-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX11-GISEL-NEXT:    v_pk_max_f16 v0, v0, v0 | 
|  | ; GFX11-GISEL-NEXT:    v_pk_max_f16 v2, v2, v2 | 
|  | ; GFX11-GISEL-NEXT:    v_pk_max_f16 v1, v1, v1 | 
|  | ; GFX11-GISEL-NEXT:    v_pk_max_f16 v3, v3, v3 | 
|  | ; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2) | 
|  | ; GFX11-GISEL-NEXT:    v_pk_min_f16 v0, v0, v2 | 
|  | ; GFX11-GISEL-NEXT:    v_pk_min_f16 v1, v1, v3 | 
|  | ; GFX11-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX12-SDAG-LABEL: v_minimumnum_v3f16: | 
|  | ; GFX12-SDAG:       ; %bb.0: | 
|  | ; GFX12-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    s_wait_expcnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    s_wait_samplecnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    s_wait_bvhcnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    s_wait_kmcnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    v_pk_max_num_f16 v3, v3, v3 | 
|  | ; GFX12-SDAG-NEXT:    v_pk_max_num_f16 v2, v2, v2 | 
|  | ; GFX12-SDAG-NEXT:    v_pk_max_num_f16 v0, v0, v0 | 
|  | ; GFX12-SDAG-NEXT:    v_pk_max_num_f16 v1, v1, v1 | 
|  | ; GFX12-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2) | 
|  | ; GFX12-SDAG-NEXT:    v_pk_min_num_f16 v0, v0, v2 | 
|  | ; GFX12-SDAG-NEXT:    v_pk_min_num_f16 v1, v1, v3 | 
|  | ; GFX12-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX12-GISEL-LABEL: v_minimumnum_v3f16: | 
|  | ; GFX12-GISEL:       ; %bb.0: | 
|  | ; GFX12-GISEL-NEXT:    s_wait_loadcnt_dscnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    s_wait_expcnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    s_wait_samplecnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    s_wait_bvhcnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    s_wait_kmcnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    v_pk_max_num_f16 v0, v0, v0 | 
|  | ; GFX12-GISEL-NEXT:    v_pk_max_num_f16 v2, v2, v2 | 
|  | ; GFX12-GISEL-NEXT:    v_pk_max_num_f16 v1, v1, v1 | 
|  | ; GFX12-GISEL-NEXT:    v_pk_max_num_f16 v3, v3, v3 | 
|  | ; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2) | 
|  | ; GFX12-GISEL-NEXT:    v_pk_min_num_f16 v0, v0, v2 | 
|  | ; GFX12-GISEL-NEXT:    v_pk_min_num_f16 v1, v1, v3 | 
|  | ; GFX12-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | %result = call <3 x half> @llvm.minimumnum.v3f16(<3 x half> %x, <3 x half> %y) | 
|  | ret <3 x half> %result | 
|  | } | 
|  |  | 
|  | define <3 x half> @v_minimumnum_v3f16_nnan(<3 x half> %x, <3 x half> %y) { | 
|  | ; GFX7-SDAG-LABEL: v_minimumnum_v3f16_nnan: | 
|  | ; GFX7-SDAG:       ; %bb.0: | 
|  | ; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v5, v5 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v2, v2 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v4, v4 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v3, v3 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v0, v0 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v1, v1 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v5, v5 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v4, v4 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v3, v3 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v0, v0 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v1, v1 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v2, v2 | 
|  | ; GFX7-SDAG-NEXT:    v_min_f32_e32 v0, v0, v3 | 
|  | ; GFX7-SDAG-NEXT:    v_min_f32_e32 v1, v1, v4 | 
|  | ; GFX7-SDAG-NEXT:    v_min_f32_e32 v2, v2, v5 | 
|  | ; GFX7-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX7-GISEL-LABEL: v_minimumnum_v3f16_nnan: | 
|  | ; GFX7-GISEL:       ; %bb.0: | 
|  | ; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v0, v0 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v3, v3 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v1, v1 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v2, v2 | 
|  | ; GFX7-GISEL-NEXT:    v_min_f32_e32 v0, v0, v3 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v3, v4 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v4, v5 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f16_f32_e32 v0, v0 | 
|  | ; GFX7-GISEL-NEXT:    v_min_f32_e32 v1, v1, v3 | 
|  | ; GFX7-GISEL-NEXT:    v_min_f32_e32 v2, v2, v4 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f16_f32_e32 v1, v1 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f16_f32_e32 v2, v2 | 
|  | ; GFX7-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX8-SDAG-LABEL: v_minimumnum_v3f16_nnan: | 
|  | ; GFX8-SDAG:       ; %bb.0: | 
|  | ; GFX8-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX8-SDAG-NEXT:    v_min_f16_sdwa v4, v0, v2 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-SDAG-NEXT:    v_min_f16_e32 v0, v0, v2 | 
|  | ; GFX8-SDAG-NEXT:    v_min_f16_e32 v1, v1, v3 | 
|  | ; GFX8-SDAG-NEXT:    v_or_b32_e32 v0, v0, v4 | 
|  | ; GFX8-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX8-GISEL-LABEL: v_minimumnum_v3f16_nnan: | 
|  | ; GFX8-GISEL:       ; %bb.0: | 
|  | ; GFX8-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX8-GISEL-NEXT:    v_min_f16_e32 v4, v0, v2 | 
|  | ; GFX8-GISEL-NEXT:    v_min_f16_sdwa v0, v0, v2 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-GISEL-NEXT:    v_min_f16_e32 v1, v1, v3 | 
|  | ; GFX8-GISEL-NEXT:    v_or_b32_e32 v0, v4, v0 | 
|  | ; GFX8-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX9-SDAG-LABEL: v_minimumnum_v3f16_nnan: | 
|  | ; GFX9-SDAG:       ; %bb.0: | 
|  | ; GFX9-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX9-SDAG-NEXT:    v_pk_min_f16 v1, v1, v3 | 
|  | ; GFX9-SDAG-NEXT:    v_pk_min_f16 v0, v0, v2 | 
|  | ; GFX9-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX9-GISEL-LABEL: v_minimumnum_v3f16_nnan: | 
|  | ; GFX9-GISEL:       ; %bb.0: | 
|  | ; GFX9-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX9-GISEL-NEXT:    v_pk_min_f16 v0, v0, v2 | 
|  | ; GFX9-GISEL-NEXT:    v_pk_min_f16 v1, v1, v3 | 
|  | ; GFX9-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX10-LABEL: v_minimumnum_v3f16_nnan: | 
|  | ; GFX10:       ; %bb.0: | 
|  | ; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX10-NEXT:    v_pk_min_f16 v0, v0, v2 | 
|  | ; GFX10-NEXT:    v_pk_min_f16 v1, v1, v3 | 
|  | ; GFX10-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX11-LABEL: v_minimumnum_v3f16_nnan: | 
|  | ; GFX11:       ; %bb.0: | 
|  | ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX11-NEXT:    v_pk_min_f16 v0, v0, v2 | 
|  | ; GFX11-NEXT:    v_pk_min_f16 v1, v1, v3 | 
|  | ; GFX11-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX12-LABEL: v_minimumnum_v3f16_nnan: | 
|  | ; GFX12:       ; %bb.0: | 
|  | ; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0 | 
|  | ; GFX12-NEXT:    s_wait_expcnt 0x0 | 
|  | ; GFX12-NEXT:    s_wait_samplecnt 0x0 | 
|  | ; GFX12-NEXT:    s_wait_bvhcnt 0x0 | 
|  | ; GFX12-NEXT:    s_wait_kmcnt 0x0 | 
|  | ; GFX12-NEXT:    v_pk_min_num_f16 v0, v0, v2 | 
|  | ; GFX12-NEXT:    v_pk_min_num_f16 v1, v1, v3 | 
|  | ; GFX12-NEXT:    s_setpc_b64 s[30:31] | 
|  | %result = call nnan <3 x half> @llvm.minimumnum.v3f16(<3 x half> %x, <3 x half> %y) | 
|  | ret <3 x half> %result | 
|  | } | 
|  |  | 
|  | define <4 x half> @v_minimumnum_v4f16(<4 x half> %x, <4 x half> %y) { | 
|  | ; GFX7-SDAG-LABEL: v_minimumnum_v4f16: | 
|  | ; GFX7-SDAG:       ; %bb.0: | 
|  | ; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v3, v3 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v2, v2 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v7, v7 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v6, v6 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v1, v1 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v0, v0 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v4, v4 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v5, v5 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v3, v3 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v2, v2 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v1, v1 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v0, v0 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v4, v4 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v5, v5 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v6, v6 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v7, v7 | 
|  | ; GFX7-SDAG-NEXT:    v_min_f32_e32 v0, v0, v4 | 
|  | ; GFX7-SDAG-NEXT:    v_min_f32_e32 v1, v1, v5 | 
|  | ; GFX7-SDAG-NEXT:    v_min_f32_e32 v2, v2, v6 | 
|  | ; GFX7-SDAG-NEXT:    v_min_f32_e32 v3, v3, v7 | 
|  | ; GFX7-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX7-GISEL-LABEL: v_minimumnum_v4f16: | 
|  | ; GFX7-GISEL:       ; %bb.0: | 
|  | ; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v0, v0 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v4, v4 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v1, v1 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v5, v5 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v2, v2 | 
|  | ; GFX7-GISEL-NEXT:    v_min_f32_e32 v0, v0, v4 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v4, v6 | 
|  | ; GFX7-GISEL-NEXT:    v_min_f32_e32 v1, v1, v5 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v3, v3 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v5, v7 | 
|  | ; GFX7-GISEL-NEXT:    v_min_f32_e32 v2, v2, v4 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f16_f32_e32 v0, v0 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f16_f32_e32 v1, v1 | 
|  | ; GFX7-GISEL-NEXT:    v_min_f32_e32 v3, v3, v5 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f16_f32_e32 v2, v2 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f16_f32_e32 v3, v3 | 
|  | ; GFX7-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX8-SDAG-LABEL: v_minimumnum_v4f16: | 
|  | ; GFX8-SDAG:       ; %bb.0: | 
|  | ; GFX8-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_sdwa v4, v3, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_sdwa v5, v1, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-SDAG-NEXT:    v_min_f16_sdwa v4, v5, v4 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_sdwa v5, v2, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_sdwa v6, v0, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_e32 v3, v3, v3 | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_e32 v1, v1, v1 | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_e32 v2, v2, v2 | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_e32 v0, v0, v0 | 
|  | ; GFX8-SDAG-NEXT:    v_min_f16_sdwa v5, v6, v5 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD | 
|  | ; GFX8-SDAG-NEXT:    v_min_f16_e32 v1, v1, v3 | 
|  | ; GFX8-SDAG-NEXT:    v_min_f16_e32 v0, v0, v2 | 
|  | ; GFX8-SDAG-NEXT:    v_or_b32_e32 v0, v0, v5 | 
|  | ; GFX8-SDAG-NEXT:    v_or_b32_e32 v1, v1, v4 | 
|  | ; GFX8-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX8-GISEL-LABEL: v_minimumnum_v4f16: | 
|  | ; GFX8-GISEL:       ; %bb.0: | 
|  | ; GFX8-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_e32 v4, v0, v0 | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_e32 v5, v2, v2 | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_sdwa v0, v0, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_sdwa v2, v2, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-GISEL-NEXT:    v_min_f16_e32 v4, v4, v5 | 
|  | ; GFX8-GISEL-NEXT:    v_min_f16_sdwa v0, v0, v2 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_e32 v2, v1, v1 | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_e32 v5, v3, v3 | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_sdwa v1, v1, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_sdwa v3, v3, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-GISEL-NEXT:    v_min_f16_e32 v2, v2, v5 | 
|  | ; GFX8-GISEL-NEXT:    v_min_f16_sdwa v1, v1, v3 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD | 
|  | ; GFX8-GISEL-NEXT:    v_or_b32_e32 v0, v4, v0 | 
|  | ; GFX8-GISEL-NEXT:    v_or_b32_e32 v1, v2, v1 | 
|  | ; GFX8-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX900-SDAG-LABEL: v_minimumnum_v4f16: | 
|  | ; GFX900-SDAG:       ; %bb.0: | 
|  | ; GFX900-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX900-SDAG-NEXT:    v_pk_max_f16 v2, v2, v2 | 
|  | ; GFX900-SDAG-NEXT:    v_pk_max_f16 v0, v0, v0 | 
|  | ; GFX900-SDAG-NEXT:    v_pk_min_f16 v0, v0, v2 | 
|  | ; GFX900-SDAG-NEXT:    v_pk_max_f16 v2, v3, v3 | 
|  | ; GFX900-SDAG-NEXT:    v_pk_max_f16 v1, v1, v1 | 
|  | ; GFX900-SDAG-NEXT:    v_pk_min_f16 v1, v1, v2 | 
|  | ; GFX900-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX900-GISEL-LABEL: v_minimumnum_v4f16: | 
|  | ; GFX900-GISEL:       ; %bb.0: | 
|  | ; GFX900-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX900-GISEL-NEXT:    v_pk_max_f16 v0, v0, v0 | 
|  | ; GFX900-GISEL-NEXT:    v_pk_max_f16 v2, v2, v2 | 
|  | ; GFX900-GISEL-NEXT:    v_pk_min_f16 v0, v0, v2 | 
|  | ; GFX900-GISEL-NEXT:    v_pk_max_f16 v1, v1, v1 | 
|  | ; GFX900-GISEL-NEXT:    v_pk_max_f16 v2, v3, v3 | 
|  | ; GFX900-GISEL-NEXT:    v_pk_min_f16 v1, v1, v2 | 
|  | ; GFX900-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX950-SDAG-LABEL: v_minimumnum_v4f16: | 
|  | ; GFX950-SDAG:       ; %bb.0: | 
|  | ; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX950-SDAG-NEXT:    v_pk_max_f16 v2, v2, v2 | 
|  | ; GFX950-SDAG-NEXT:    v_pk_max_f16 v0, v0, v0 | 
|  | ; GFX950-SDAG-NEXT:    v_pk_max_f16 v1, v1, v1 | 
|  | ; GFX950-SDAG-NEXT:    v_pk_min_f16 v0, v0, v2 | 
|  | ; GFX950-SDAG-NEXT:    v_pk_max_f16 v2, v3, v3 | 
|  | ; GFX950-SDAG-NEXT:    s_nop 0 | 
|  | ; GFX950-SDAG-NEXT:    v_pk_min_f16 v1, v1, v2 | 
|  | ; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX950-GISEL-LABEL: v_minimumnum_v4f16: | 
|  | ; GFX950-GISEL:       ; %bb.0: | 
|  | ; GFX950-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX950-GISEL-NEXT:    v_pk_max_f16 v0, v0, v0 | 
|  | ; GFX950-GISEL-NEXT:    v_pk_max_f16 v2, v2, v2 | 
|  | ; GFX950-GISEL-NEXT:    v_pk_max_f16 v1, v1, v1 | 
|  | ; GFX950-GISEL-NEXT:    v_pk_min_f16 v0, v0, v2 | 
|  | ; GFX950-GISEL-NEXT:    v_pk_max_f16 v2, v3, v3 | 
|  | ; GFX950-GISEL-NEXT:    s_nop 0 | 
|  | ; GFX950-GISEL-NEXT:    v_pk_min_f16 v1, v1, v2 | 
|  | ; GFX950-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX10-SDAG-LABEL: v_minimumnum_v4f16: | 
|  | ; GFX10-SDAG:       ; %bb.0: | 
|  | ; GFX10-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX10-SDAG-NEXT:    v_pk_max_f16 v2, v2, v2 | 
|  | ; GFX10-SDAG-NEXT:    v_pk_max_f16 v0, v0, v0 | 
|  | ; GFX10-SDAG-NEXT:    v_pk_max_f16 v3, v3, v3 | 
|  | ; GFX10-SDAG-NEXT:    v_pk_max_f16 v1, v1, v1 | 
|  | ; GFX10-SDAG-NEXT:    v_pk_min_f16 v0, v0, v2 | 
|  | ; GFX10-SDAG-NEXT:    v_pk_min_f16 v1, v1, v3 | 
|  | ; GFX10-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX10-GISEL-LABEL: v_minimumnum_v4f16: | 
|  | ; GFX10-GISEL:       ; %bb.0: | 
|  | ; GFX10-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX10-GISEL-NEXT:    v_pk_max_f16 v0, v0, v0 | 
|  | ; GFX10-GISEL-NEXT:    v_pk_max_f16 v2, v2, v2 | 
|  | ; GFX10-GISEL-NEXT:    v_pk_max_f16 v1, v1, v1 | 
|  | ; GFX10-GISEL-NEXT:    v_pk_max_f16 v3, v3, v3 | 
|  | ; GFX10-GISEL-NEXT:    v_pk_min_f16 v0, v0, v2 | 
|  | ; GFX10-GISEL-NEXT:    v_pk_min_f16 v1, v1, v3 | 
|  | ; GFX10-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX11-SDAG-LABEL: v_minimumnum_v4f16: | 
|  | ; GFX11-SDAG:       ; %bb.0: | 
|  | ; GFX11-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX11-SDAG-NEXT:    v_pk_max_f16 v2, v2, v2 | 
|  | ; GFX11-SDAG-NEXT:    v_pk_max_f16 v0, v0, v0 | 
|  | ; GFX11-SDAG-NEXT:    v_pk_max_f16 v3, v3, v3 | 
|  | ; GFX11-SDAG-NEXT:    v_pk_max_f16 v1, v1, v1 | 
|  | ; GFX11-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2) | 
|  | ; GFX11-SDAG-NEXT:    v_pk_min_f16 v0, v0, v2 | 
|  | ; GFX11-SDAG-NEXT:    v_pk_min_f16 v1, v1, v3 | 
|  | ; GFX11-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX11-GISEL-LABEL: v_minimumnum_v4f16: | 
|  | ; GFX11-GISEL:       ; %bb.0: | 
|  | ; GFX11-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX11-GISEL-NEXT:    v_pk_max_f16 v0, v0, v0 | 
|  | ; GFX11-GISEL-NEXT:    v_pk_max_f16 v2, v2, v2 | 
|  | ; GFX11-GISEL-NEXT:    v_pk_max_f16 v1, v1, v1 | 
|  | ; GFX11-GISEL-NEXT:    v_pk_max_f16 v3, v3, v3 | 
|  | ; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2) | 
|  | ; GFX11-GISEL-NEXT:    v_pk_min_f16 v0, v0, v2 | 
|  | ; GFX11-GISEL-NEXT:    v_pk_min_f16 v1, v1, v3 | 
|  | ; GFX11-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX12-SDAG-LABEL: v_minimumnum_v4f16: | 
|  | ; GFX12-SDAG:       ; %bb.0: | 
|  | ; GFX12-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    s_wait_expcnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    s_wait_samplecnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    s_wait_bvhcnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    s_wait_kmcnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    v_pk_max_num_f16 v2, v2, v2 | 
|  | ; GFX12-SDAG-NEXT:    v_pk_max_num_f16 v0, v0, v0 | 
|  | ; GFX12-SDAG-NEXT:    v_pk_max_num_f16 v3, v3, v3 | 
|  | ; GFX12-SDAG-NEXT:    v_pk_max_num_f16 v1, v1, v1 | 
|  | ; GFX12-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2) | 
|  | ; GFX12-SDAG-NEXT:    v_pk_min_num_f16 v0, v0, v2 | 
|  | ; GFX12-SDAG-NEXT:    v_pk_min_num_f16 v1, v1, v3 | 
|  | ; GFX12-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX12-GISEL-LABEL: v_minimumnum_v4f16: | 
|  | ; GFX12-GISEL:       ; %bb.0: | 
|  | ; GFX12-GISEL-NEXT:    s_wait_loadcnt_dscnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    s_wait_expcnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    s_wait_samplecnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    s_wait_bvhcnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    s_wait_kmcnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    v_pk_max_num_f16 v0, v0, v0 | 
|  | ; GFX12-GISEL-NEXT:    v_pk_max_num_f16 v2, v2, v2 | 
|  | ; GFX12-GISEL-NEXT:    v_pk_max_num_f16 v1, v1, v1 | 
|  | ; GFX12-GISEL-NEXT:    v_pk_max_num_f16 v3, v3, v3 | 
|  | ; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2) | 
|  | ; GFX12-GISEL-NEXT:    v_pk_min_num_f16 v0, v0, v2 | 
|  | ; GFX12-GISEL-NEXT:    v_pk_min_num_f16 v1, v1, v3 | 
|  | ; GFX12-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | %result = call <4 x half> @llvm.minimumnum.v4f16(<4 x half> %x, <4 x half> %y) | 
|  | ret <4 x half> %result | 
|  | } | 
|  |  | 
|  | define <4 x half> @v_minimumnum_v4f16_nnan(<4 x half> %x, <4 x half> %y) { | 
|  | ; GFX7-SDAG-LABEL: v_minimumnum_v4f16_nnan: | 
|  | ; GFX7-SDAG:       ; %bb.0: | 
|  | ; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v7, v7 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v6, v6 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v3, v3 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v2, v2 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v5, v5 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v4, v4 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v0, v0 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v1, v1 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v7, v7 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v6, v6 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v5, v5 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v4, v4 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v0, v0 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v1, v1 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v2, v2 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v3, v3 | 
|  | ; GFX7-SDAG-NEXT:    v_min_f32_e32 v0, v0, v4 | 
|  | ; GFX7-SDAG-NEXT:    v_min_f32_e32 v1, v1, v5 | 
|  | ; GFX7-SDAG-NEXT:    v_min_f32_e32 v2, v2, v6 | 
|  | ; GFX7-SDAG-NEXT:    v_min_f32_e32 v3, v3, v7 | 
|  | ; GFX7-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX7-GISEL-LABEL: v_minimumnum_v4f16_nnan: | 
|  | ; GFX7-GISEL:       ; %bb.0: | 
|  | ; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v0, v0 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v4, v4 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v1, v1 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v5, v5 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v2, v2 | 
|  | ; GFX7-GISEL-NEXT:    v_min_f32_e32 v0, v0, v4 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v4, v6 | 
|  | ; GFX7-GISEL-NEXT:    v_min_f32_e32 v1, v1, v5 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v3, v3 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v5, v7 | 
|  | ; GFX7-GISEL-NEXT:    v_min_f32_e32 v2, v2, v4 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f16_f32_e32 v0, v0 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f16_f32_e32 v1, v1 | 
|  | ; GFX7-GISEL-NEXT:    v_min_f32_e32 v3, v3, v5 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f16_f32_e32 v2, v2 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f16_f32_e32 v3, v3 | 
|  | ; GFX7-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX8-SDAG-LABEL: v_minimumnum_v4f16_nnan: | 
|  | ; GFX8-SDAG:       ; %bb.0: | 
|  | ; GFX8-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX8-SDAG-NEXT:    v_min_f16_sdwa v4, v1, v3 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-SDAG-NEXT:    v_min_f16_sdwa v5, v0, v2 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-SDAG-NEXT:    v_min_f16_e32 v1, v1, v3 | 
|  | ; GFX8-SDAG-NEXT:    v_min_f16_e32 v0, v0, v2 | 
|  | ; GFX8-SDAG-NEXT:    v_or_b32_e32 v0, v0, v5 | 
|  | ; GFX8-SDAG-NEXT:    v_or_b32_e32 v1, v1, v4 | 
|  | ; GFX8-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX8-GISEL-LABEL: v_minimumnum_v4f16_nnan: | 
|  | ; GFX8-GISEL:       ; %bb.0: | 
|  | ; GFX8-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX8-GISEL-NEXT:    v_min_f16_e32 v4, v0, v2 | 
|  | ; GFX8-GISEL-NEXT:    v_min_f16_sdwa v0, v0, v2 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-GISEL-NEXT:    v_min_f16_e32 v2, v1, v3 | 
|  | ; GFX8-GISEL-NEXT:    v_min_f16_sdwa v1, v1, v3 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-GISEL-NEXT:    v_or_b32_e32 v0, v4, v0 | 
|  | ; GFX8-GISEL-NEXT:    v_or_b32_e32 v1, v2, v1 | 
|  | ; GFX8-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX9-LABEL: v_minimumnum_v4f16_nnan: | 
|  | ; GFX9:       ; %bb.0: | 
|  | ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX9-NEXT:    v_pk_min_f16 v0, v0, v2 | 
|  | ; GFX9-NEXT:    v_pk_min_f16 v1, v1, v3 | 
|  | ; GFX9-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX10-LABEL: v_minimumnum_v4f16_nnan: | 
|  | ; GFX10:       ; %bb.0: | 
|  | ; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX10-NEXT:    v_pk_min_f16 v0, v0, v2 | 
|  | ; GFX10-NEXT:    v_pk_min_f16 v1, v1, v3 | 
|  | ; GFX10-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX11-LABEL: v_minimumnum_v4f16_nnan: | 
|  | ; GFX11:       ; %bb.0: | 
|  | ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX11-NEXT:    v_pk_min_f16 v0, v0, v2 | 
|  | ; GFX11-NEXT:    v_pk_min_f16 v1, v1, v3 | 
|  | ; GFX11-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX12-LABEL: v_minimumnum_v4f16_nnan: | 
|  | ; GFX12:       ; %bb.0: | 
|  | ; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0 | 
|  | ; GFX12-NEXT:    s_wait_expcnt 0x0 | 
|  | ; GFX12-NEXT:    s_wait_samplecnt 0x0 | 
|  | ; GFX12-NEXT:    s_wait_bvhcnt 0x0 | 
|  | ; GFX12-NEXT:    s_wait_kmcnt 0x0 | 
|  | ; GFX12-NEXT:    v_pk_min_num_f16 v0, v0, v2 | 
|  | ; GFX12-NEXT:    v_pk_min_num_f16 v1, v1, v3 | 
|  | ; GFX12-NEXT:    s_setpc_b64 s[30:31] | 
|  | %result = call nnan <4 x half> @llvm.minimumnum.v4f16(<4 x half> %x, <4 x half> %y) | 
|  | ret <4 x half> %result | 
|  | } | 
|  |  | 
|  | define <6 x half> @v_minimumnum_v6f16(<6 x half> %x, <6 x half> %y) { | 
|  | ; GFX7-SDAG-LABEL: v_minimumnum_v6f16: | 
|  | ; GFX7-SDAG:       ; %bb.0: | 
|  | ; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v5, v5 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v11, v11 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v4, v4 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v10, v10 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v3, v3 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v2, v2 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v9, v9 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v8, v8 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v1, v1 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v0, v0 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v6, v6 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v7, v7 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v5, v5 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v11, v11 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v4, v4 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v10, v10 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v3, v3 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v2, v2 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v1, v1 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v0, v0 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v6, v6 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v7, v7 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v8, v8 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v9, v9 | 
|  | ; GFX7-SDAG-NEXT:    v_min_f32_e32 v0, v0, v6 | 
|  | ; GFX7-SDAG-NEXT:    v_min_f32_e32 v1, v1, v7 | 
|  | ; GFX7-SDAG-NEXT:    v_min_f32_e32 v2, v2, v8 | 
|  | ; GFX7-SDAG-NEXT:    v_min_f32_e32 v3, v3, v9 | 
|  | ; GFX7-SDAG-NEXT:    v_min_f32_e32 v4, v4, v10 | 
|  | ; GFX7-SDAG-NEXT:    v_min_f32_e32 v5, v5, v11 | 
|  | ; GFX7-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX7-GISEL-LABEL: v_minimumnum_v6f16: | 
|  | ; GFX7-GISEL:       ; %bb.0: | 
|  | ; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v0, v0 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v6, v6 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v1, v1 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v7, v7 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v2, v2 | 
|  | ; GFX7-GISEL-NEXT:    v_min_f32_e32 v0, v0, v6 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v6, v8 | 
|  | ; GFX7-GISEL-NEXT:    v_min_f32_e32 v1, v1, v7 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v3, v3 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v7, v9 | 
|  | ; GFX7-GISEL-NEXT:    v_min_f32_e32 v2, v2, v6 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v4, v4 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v6, v10 | 
|  | ; GFX7-GISEL-NEXT:    v_min_f32_e32 v3, v3, v7 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v5, v5 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v7, v11 | 
|  | ; GFX7-GISEL-NEXT:    v_min_f32_e32 v4, v4, v6 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f16_f32_e32 v0, v0 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f16_f32_e32 v1, v1 | 
|  | ; GFX7-GISEL-NEXT:    v_min_f32_e32 v5, v5, v7 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f16_f32_e32 v2, v2 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f16_f32_e32 v3, v3 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f16_f32_e32 v4, v4 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f16_f32_e32 v5, v5 | 
|  | ; GFX7-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX8-SDAG-LABEL: v_minimumnum_v6f16: | 
|  | ; GFX8-SDAG:       ; %bb.0: | 
|  | ; GFX8-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_sdwa v6, v5, v5 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_sdwa v7, v2, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-SDAG-NEXT:    v_min_f16_sdwa v6, v7, v6 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_sdwa v7, v4, v4 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_sdwa v8, v1, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-SDAG-NEXT:    v_min_f16_sdwa v7, v8, v7 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_sdwa v8, v3, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_sdwa v9, v0, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_e32 v5, v5, v5 | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_e32 v2, v2, v2 | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_e32 v4, v4, v4 | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_e32 v1, v1, v1 | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_e32 v3, v3, v3 | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_e32 v0, v0, v0 | 
|  | ; GFX8-SDAG-NEXT:    v_min_f16_sdwa v8, v9, v8 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD | 
|  | ; GFX8-SDAG-NEXT:    v_min_f16_e32 v2, v2, v5 | 
|  | ; GFX8-SDAG-NEXT:    v_min_f16_e32 v1, v1, v4 | 
|  | ; GFX8-SDAG-NEXT:    v_min_f16_e32 v0, v0, v3 | 
|  | ; GFX8-SDAG-NEXT:    v_or_b32_e32 v0, v0, v8 | 
|  | ; GFX8-SDAG-NEXT:    v_or_b32_e32 v1, v1, v7 | 
|  | ; GFX8-SDAG-NEXT:    v_or_b32_e32 v2, v2, v6 | 
|  | ; GFX8-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX8-GISEL-LABEL: v_minimumnum_v6f16: | 
|  | ; GFX8-GISEL:       ; %bb.0: | 
|  | ; GFX8-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_e32 v6, v0, v0 | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_e32 v7, v3, v3 | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_sdwa v0, v0, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_sdwa v3, v3, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-GISEL-NEXT:    v_min_f16_e32 v6, v6, v7 | 
|  | ; GFX8-GISEL-NEXT:    v_min_f16_sdwa v0, v0, v3 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_e32 v3, v1, v1 | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_e32 v7, v4, v4 | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_sdwa v1, v1, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_sdwa v4, v4, v4 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-GISEL-NEXT:    v_min_f16_e32 v3, v3, v7 | 
|  | ; GFX8-GISEL-NEXT:    v_min_f16_sdwa v1, v1, v4 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_e32 v4, v2, v2 | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_e32 v7, v5, v5 | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_sdwa v2, v2, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_sdwa v5, v5, v5 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-GISEL-NEXT:    v_min_f16_e32 v4, v4, v7 | 
|  | ; GFX8-GISEL-NEXT:    v_min_f16_sdwa v2, v2, v5 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD | 
|  | ; GFX8-GISEL-NEXT:    v_or_b32_e32 v0, v6, v0 | 
|  | ; GFX8-GISEL-NEXT:    v_or_b32_e32 v1, v3, v1 | 
|  | ; GFX8-GISEL-NEXT:    v_or_b32_e32 v2, v4, v2 | 
|  | ; GFX8-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX900-SDAG-LABEL: v_minimumnum_v6f16: | 
|  | ; GFX900-SDAG:       ; %bb.0: | 
|  | ; GFX900-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX900-SDAG-NEXT:    v_pk_max_f16 v3, v3, v3 | 
|  | ; GFX900-SDAG-NEXT:    v_pk_max_f16 v0, v0, v0 | 
|  | ; GFX900-SDAG-NEXT:    v_pk_min_f16 v0, v0, v3 | 
|  | ; GFX900-SDAG-NEXT:    v_pk_max_f16 v3, v4, v4 | 
|  | ; GFX900-SDAG-NEXT:    v_pk_max_f16 v1, v1, v1 | 
|  | ; GFX900-SDAG-NEXT:    v_pk_min_f16 v1, v1, v3 | 
|  | ; GFX900-SDAG-NEXT:    v_pk_max_f16 v3, v5, v5 | 
|  | ; GFX900-SDAG-NEXT:    v_pk_max_f16 v2, v2, v2 | 
|  | ; GFX900-SDAG-NEXT:    v_pk_min_f16 v2, v2, v3 | 
|  | ; GFX900-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX900-GISEL-LABEL: v_minimumnum_v6f16: | 
|  | ; GFX900-GISEL:       ; %bb.0: | 
|  | ; GFX900-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX900-GISEL-NEXT:    v_pk_max_f16 v0, v0, v0 | 
|  | ; GFX900-GISEL-NEXT:    v_pk_max_f16 v3, v3, v3 | 
|  | ; GFX900-GISEL-NEXT:    v_pk_min_f16 v0, v0, v3 | 
|  | ; GFX900-GISEL-NEXT:    v_pk_max_f16 v1, v1, v1 | 
|  | ; GFX900-GISEL-NEXT:    v_pk_max_f16 v3, v4, v4 | 
|  | ; GFX900-GISEL-NEXT:    v_pk_min_f16 v1, v1, v3 | 
|  | ; GFX900-GISEL-NEXT:    v_pk_max_f16 v2, v2, v2 | 
|  | ; GFX900-GISEL-NEXT:    v_pk_max_f16 v3, v5, v5 | 
|  | ; GFX900-GISEL-NEXT:    v_pk_min_f16 v2, v2, v3 | 
|  | ; GFX900-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX950-SDAG-LABEL: v_minimumnum_v6f16: | 
|  | ; GFX950-SDAG:       ; %bb.0: | 
|  | ; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX950-SDAG-NEXT:    v_pk_max_f16 v3, v3, v3 | 
|  | ; GFX950-SDAG-NEXT:    v_pk_max_f16 v0, v0, v0 | 
|  | ; GFX950-SDAG-NEXT:    v_pk_max_f16 v1, v1, v1 | 
|  | ; GFX950-SDAG-NEXT:    v_pk_min_f16 v0, v0, v3 | 
|  | ; GFX950-SDAG-NEXT:    v_pk_max_f16 v3, v4, v4 | 
|  | ; GFX950-SDAG-NEXT:    v_pk_max_f16 v2, v2, v2 | 
|  | ; GFX950-SDAG-NEXT:    v_pk_min_f16 v1, v1, v3 | 
|  | ; GFX950-SDAG-NEXT:    v_pk_max_f16 v3, v5, v5 | 
|  | ; GFX950-SDAG-NEXT:    s_nop 0 | 
|  | ; GFX950-SDAG-NEXT:    v_pk_min_f16 v2, v2, v3 | 
|  | ; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX950-GISEL-LABEL: v_minimumnum_v6f16: | 
|  | ; GFX950-GISEL:       ; %bb.0: | 
|  | ; GFX950-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX950-GISEL-NEXT:    v_pk_max_f16 v0, v0, v0 | 
|  | ; GFX950-GISEL-NEXT:    v_pk_max_f16 v3, v3, v3 | 
|  | ; GFX950-GISEL-NEXT:    v_pk_max_f16 v1, v1, v1 | 
|  | ; GFX950-GISEL-NEXT:    v_pk_min_f16 v0, v0, v3 | 
|  | ; GFX950-GISEL-NEXT:    v_pk_max_f16 v3, v4, v4 | 
|  | ; GFX950-GISEL-NEXT:    v_pk_max_f16 v2, v2, v2 | 
|  | ; GFX950-GISEL-NEXT:    v_pk_min_f16 v1, v1, v3 | 
|  | ; GFX950-GISEL-NEXT:    v_pk_max_f16 v3, v5, v5 | 
|  | ; GFX950-GISEL-NEXT:    s_nop 0 | 
|  | ; GFX950-GISEL-NEXT:    v_pk_min_f16 v2, v2, v3 | 
|  | ; GFX950-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX10-SDAG-LABEL: v_minimumnum_v6f16: | 
|  | ; GFX10-SDAG:       ; %bb.0: | 
|  | ; GFX10-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX10-SDAG-NEXT:    v_pk_max_f16 v3, v3, v3 | 
|  | ; GFX10-SDAG-NEXT:    v_pk_max_f16 v0, v0, v0 | 
|  | ; GFX10-SDAG-NEXT:    v_pk_max_f16 v4, v4, v4 | 
|  | ; GFX10-SDAG-NEXT:    v_pk_max_f16 v1, v1, v1 | 
|  | ; GFX10-SDAG-NEXT:    v_pk_max_f16 v5, v5, v5 | 
|  | ; GFX10-SDAG-NEXT:    v_pk_max_f16 v2, v2, v2 | 
|  | ; GFX10-SDAG-NEXT:    v_pk_min_f16 v0, v0, v3 | 
|  | ; GFX10-SDAG-NEXT:    v_pk_min_f16 v1, v1, v4 | 
|  | ; GFX10-SDAG-NEXT:    v_pk_min_f16 v2, v2, v5 | 
|  | ; GFX10-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX10-GISEL-LABEL: v_minimumnum_v6f16: | 
|  | ; GFX10-GISEL:       ; %bb.0: | 
|  | ; GFX10-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX10-GISEL-NEXT:    v_pk_max_f16 v0, v0, v0 | 
|  | ; GFX10-GISEL-NEXT:    v_pk_max_f16 v3, v3, v3 | 
|  | ; GFX10-GISEL-NEXT:    v_pk_max_f16 v1, v1, v1 | 
|  | ; GFX10-GISEL-NEXT:    v_pk_max_f16 v4, v4, v4 | 
|  | ; GFX10-GISEL-NEXT:    v_pk_max_f16 v2, v2, v2 | 
|  | ; GFX10-GISEL-NEXT:    v_pk_max_f16 v5, v5, v5 | 
|  | ; GFX10-GISEL-NEXT:    v_pk_min_f16 v0, v0, v3 | 
|  | ; GFX10-GISEL-NEXT:    v_pk_min_f16 v1, v1, v4 | 
|  | ; GFX10-GISEL-NEXT:    v_pk_min_f16 v2, v2, v5 | 
|  | ; GFX10-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX11-SDAG-LABEL: v_minimumnum_v6f16: | 
|  | ; GFX11-SDAG:       ; %bb.0: | 
|  | ; GFX11-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX11-SDAG-NEXT:    v_pk_max_f16 v3, v3, v3 | 
|  | ; GFX11-SDAG-NEXT:    v_pk_max_f16 v0, v0, v0 | 
|  | ; GFX11-SDAG-NEXT:    v_pk_max_f16 v4, v4, v4 | 
|  | ; GFX11-SDAG-NEXT:    v_pk_max_f16 v1, v1, v1 | 
|  | ; GFX11-SDAG-NEXT:    v_pk_max_f16 v5, v5, v5 | 
|  | ; GFX11-SDAG-NEXT:    v_pk_max_f16 v2, v2, v2 | 
|  | ; GFX11-SDAG-NEXT:    v_pk_min_f16 v0, v0, v3 | 
|  | ; GFX11-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_3) | 
|  | ; GFX11-SDAG-NEXT:    v_pk_min_f16 v1, v1, v4 | 
|  | ; GFX11-SDAG-NEXT:    v_pk_min_f16 v2, v2, v5 | 
|  | ; GFX11-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX11-GISEL-LABEL: v_minimumnum_v6f16: | 
|  | ; GFX11-GISEL:       ; %bb.0: | 
|  | ; GFX11-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX11-GISEL-NEXT:    v_pk_max_f16 v0, v0, v0 | 
|  | ; GFX11-GISEL-NEXT:    v_pk_max_f16 v3, v3, v3 | 
|  | ; GFX11-GISEL-NEXT:    v_pk_max_f16 v1, v1, v1 | 
|  | ; GFX11-GISEL-NEXT:    v_pk_max_f16 v4, v4, v4 | 
|  | ; GFX11-GISEL-NEXT:    v_pk_max_f16 v2, v2, v2 | 
|  | ; GFX11-GISEL-NEXT:    v_pk_max_f16 v5, v5, v5 | 
|  | ; GFX11-GISEL-NEXT:    v_pk_min_f16 v0, v0, v3 | 
|  | ; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_3) | 
|  | ; GFX11-GISEL-NEXT:    v_pk_min_f16 v1, v1, v4 | 
|  | ; GFX11-GISEL-NEXT:    v_pk_min_f16 v2, v2, v5 | 
|  | ; GFX11-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX12-SDAG-LABEL: v_minimumnum_v6f16: | 
|  | ; GFX12-SDAG:       ; %bb.0: | 
|  | ; GFX12-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    s_wait_expcnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    s_wait_samplecnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    s_wait_bvhcnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    s_wait_kmcnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    v_pk_max_num_f16 v3, v3, v3 | 
|  | ; GFX12-SDAG-NEXT:    v_pk_max_num_f16 v0, v0, v0 | 
|  | ; GFX12-SDAG-NEXT:    v_pk_max_num_f16 v4, v4, v4 | 
|  | ; GFX12-SDAG-NEXT:    v_pk_max_num_f16 v1, v1, v1 | 
|  | ; GFX12-SDAG-NEXT:    v_pk_max_num_f16 v5, v5, v5 | 
|  | ; GFX12-SDAG-NEXT:    v_pk_max_num_f16 v2, v2, v2 | 
|  | ; GFX12-SDAG-NEXT:    v_pk_min_num_f16 v0, v0, v3 | 
|  | ; GFX12-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_3) | 
|  | ; GFX12-SDAG-NEXT:    v_pk_min_num_f16 v1, v1, v4 | 
|  | ; GFX12-SDAG-NEXT:    v_pk_min_num_f16 v2, v2, v5 | 
|  | ; GFX12-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX12-GISEL-LABEL: v_minimumnum_v6f16: | 
|  | ; GFX12-GISEL:       ; %bb.0: | 
|  | ; GFX12-GISEL-NEXT:    s_wait_loadcnt_dscnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    s_wait_expcnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    s_wait_samplecnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    s_wait_bvhcnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    s_wait_kmcnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    v_pk_max_num_f16 v0, v0, v0 | 
|  | ; GFX12-GISEL-NEXT:    v_pk_max_num_f16 v3, v3, v3 | 
|  | ; GFX12-GISEL-NEXT:    v_pk_max_num_f16 v1, v1, v1 | 
|  | ; GFX12-GISEL-NEXT:    v_pk_max_num_f16 v4, v4, v4 | 
|  | ; GFX12-GISEL-NEXT:    v_pk_max_num_f16 v2, v2, v2 | 
|  | ; GFX12-GISEL-NEXT:    v_pk_max_num_f16 v5, v5, v5 | 
|  | ; GFX12-GISEL-NEXT:    v_pk_min_num_f16 v0, v0, v3 | 
|  | ; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_3) | 
|  | ; GFX12-GISEL-NEXT:    v_pk_min_num_f16 v1, v1, v4 | 
|  | ; GFX12-GISEL-NEXT:    v_pk_min_num_f16 v2, v2, v5 | 
|  | ; GFX12-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | %result = call <6 x half> @llvm.minimumnum.v6f16(<6 x half> %x, <6 x half> %y) | 
|  | ret <6 x half> %result | 
|  | } | 
|  |  | 
|  | define <8 x half> @v_minimumnum_v8f16(<8 x half> %x, <8 x half> %y) { | 
|  | ; GFX7-SDAG-LABEL: v_minimumnum_v8f16: | 
|  | ; GFX7-SDAG:       ; %bb.0: | 
|  | ; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v7, v7 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v15, v15 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v6, v6 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v14, v14 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v5, v5 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v13, v13 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v4, v4 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v12, v12 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v3, v3 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v2, v2 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v11, v11 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v10, v10 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v1, v1 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v0, v0 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v8, v8 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v9, v9 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v7, v7 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v15, v15 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v6, v6 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v14, v14 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v5, v5 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v13, v13 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v4, v4 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v12, v12 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v3, v3 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v2, v2 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v1, v1 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v0, v0 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v8, v8 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v9, v9 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v10, v10 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v11, v11 | 
|  | ; GFX7-SDAG-NEXT:    v_min_f32_e32 v0, v0, v8 | 
|  | ; GFX7-SDAG-NEXT:    v_min_f32_e32 v1, v1, v9 | 
|  | ; GFX7-SDAG-NEXT:    v_min_f32_e32 v2, v2, v10 | 
|  | ; GFX7-SDAG-NEXT:    v_min_f32_e32 v3, v3, v11 | 
|  | ; GFX7-SDAG-NEXT:    v_min_f32_e32 v4, v4, v12 | 
|  | ; GFX7-SDAG-NEXT:    v_min_f32_e32 v5, v5, v13 | 
|  | ; GFX7-SDAG-NEXT:    v_min_f32_e32 v6, v6, v14 | 
|  | ; GFX7-SDAG-NEXT:    v_min_f32_e32 v7, v7, v15 | 
|  | ; GFX7-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX7-GISEL-LABEL: v_minimumnum_v8f16: | 
|  | ; GFX7-GISEL:       ; %bb.0: | 
|  | ; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v0, v0 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v8, v8 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v1, v1 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v9, v9 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v2, v2 | 
|  | ; GFX7-GISEL-NEXT:    v_min_f32_e32 v0, v0, v8 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v8, v10 | 
|  | ; GFX7-GISEL-NEXT:    v_min_f32_e32 v1, v1, v9 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v3, v3 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v9, v11 | 
|  | ; GFX7-GISEL-NEXT:    v_min_f32_e32 v2, v2, v8 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v4, v4 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v8, v12 | 
|  | ; GFX7-GISEL-NEXT:    v_min_f32_e32 v3, v3, v9 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v5, v5 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v9, v13 | 
|  | ; GFX7-GISEL-NEXT:    v_min_f32_e32 v4, v4, v8 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v6, v6 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v8, v14 | 
|  | ; GFX7-GISEL-NEXT:    v_min_f32_e32 v5, v5, v9 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v7, v7 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v9, v15 | 
|  | ; GFX7-GISEL-NEXT:    v_min_f32_e32 v6, v6, v8 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f16_f32_e32 v0, v0 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f16_f32_e32 v1, v1 | 
|  | ; GFX7-GISEL-NEXT:    v_min_f32_e32 v7, v7, v9 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f16_f32_e32 v2, v2 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f16_f32_e32 v3, v3 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f16_f32_e32 v4, v4 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f16_f32_e32 v5, v5 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f16_f32_e32 v6, v6 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f16_f32_e32 v7, v7 | 
|  | ; GFX7-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX8-SDAG-LABEL: v_minimumnum_v8f16: | 
|  | ; GFX8-SDAG:       ; %bb.0: | 
|  | ; GFX8-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_sdwa v8, v7, v7 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_sdwa v9, v3, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-SDAG-NEXT:    v_min_f16_sdwa v8, v9, v8 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_sdwa v9, v6, v6 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_sdwa v10, v2, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-SDAG-NEXT:    v_min_f16_sdwa v9, v10, v9 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_sdwa v10, v5, v5 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_sdwa v11, v1, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-SDAG-NEXT:    v_min_f16_sdwa v10, v11, v10 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_sdwa v11, v4, v4 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_sdwa v12, v0, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_e32 v7, v7, v7 | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_e32 v3, v3, v3 | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_e32 v6, v6, v6 | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_e32 v2, v2, v2 | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_e32 v5, v5, v5 | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_e32 v1, v1, v1 | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_e32 v4, v4, v4 | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_e32 v0, v0, v0 | 
|  | ; GFX8-SDAG-NEXT:    v_min_f16_sdwa v11, v12, v11 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD | 
|  | ; GFX8-SDAG-NEXT:    v_min_f16_e32 v3, v3, v7 | 
|  | ; GFX8-SDAG-NEXT:    v_min_f16_e32 v2, v2, v6 | 
|  | ; GFX8-SDAG-NEXT:    v_min_f16_e32 v1, v1, v5 | 
|  | ; GFX8-SDAG-NEXT:    v_min_f16_e32 v0, v0, v4 | 
|  | ; GFX8-SDAG-NEXT:    v_or_b32_e32 v0, v0, v11 | 
|  | ; GFX8-SDAG-NEXT:    v_or_b32_e32 v1, v1, v10 | 
|  | ; GFX8-SDAG-NEXT:    v_or_b32_e32 v2, v2, v9 | 
|  | ; GFX8-SDAG-NEXT:    v_or_b32_e32 v3, v3, v8 | 
|  | ; GFX8-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX8-GISEL-LABEL: v_minimumnum_v8f16: | 
|  | ; GFX8-GISEL:       ; %bb.0: | 
|  | ; GFX8-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_e32 v8, v0, v0 | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_e32 v9, v4, v4 | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_sdwa v0, v0, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_sdwa v4, v4, v4 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-GISEL-NEXT:    v_min_f16_e32 v8, v8, v9 | 
|  | ; GFX8-GISEL-NEXT:    v_min_f16_sdwa v0, v0, v4 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_e32 v4, v1, v1 | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_e32 v9, v5, v5 | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_sdwa v1, v1, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_sdwa v5, v5, v5 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-GISEL-NEXT:    v_min_f16_e32 v4, v4, v9 | 
|  | ; GFX8-GISEL-NEXT:    v_min_f16_sdwa v1, v1, v5 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_e32 v5, v2, v2 | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_e32 v9, v6, v6 | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_sdwa v2, v2, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_sdwa v6, v6, v6 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-GISEL-NEXT:    v_min_f16_e32 v5, v5, v9 | 
|  | ; GFX8-GISEL-NEXT:    v_min_f16_sdwa v2, v2, v6 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_e32 v6, v3, v3 | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_e32 v9, v7, v7 | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_sdwa v3, v3, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_sdwa v7, v7, v7 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-GISEL-NEXT:    v_min_f16_e32 v6, v6, v9 | 
|  | ; GFX8-GISEL-NEXT:    v_min_f16_sdwa v3, v3, v7 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD | 
|  | ; GFX8-GISEL-NEXT:    v_or_b32_e32 v0, v8, v0 | 
|  | ; GFX8-GISEL-NEXT:    v_or_b32_e32 v1, v4, v1 | 
|  | ; GFX8-GISEL-NEXT:    v_or_b32_e32 v2, v5, v2 | 
|  | ; GFX8-GISEL-NEXT:    v_or_b32_e32 v3, v6, v3 | 
|  | ; GFX8-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX900-SDAG-LABEL: v_minimumnum_v8f16: | 
|  | ; GFX900-SDAG:       ; %bb.0: | 
|  | ; GFX900-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX900-SDAG-NEXT:    v_pk_max_f16 v4, v4, v4 | 
|  | ; GFX900-SDAG-NEXT:    v_pk_max_f16 v0, v0, v0 | 
|  | ; GFX900-SDAG-NEXT:    v_pk_min_f16 v0, v0, v4 | 
|  | ; GFX900-SDAG-NEXT:    v_pk_max_f16 v4, v5, v5 | 
|  | ; GFX900-SDAG-NEXT:    v_pk_max_f16 v1, v1, v1 | 
|  | ; GFX900-SDAG-NEXT:    v_pk_min_f16 v1, v1, v4 | 
|  | ; GFX900-SDAG-NEXT:    v_pk_max_f16 v4, v6, v6 | 
|  | ; GFX900-SDAG-NEXT:    v_pk_max_f16 v2, v2, v2 | 
|  | ; GFX900-SDAG-NEXT:    v_pk_min_f16 v2, v2, v4 | 
|  | ; GFX900-SDAG-NEXT:    v_pk_max_f16 v4, v7, v7 | 
|  | ; GFX900-SDAG-NEXT:    v_pk_max_f16 v3, v3, v3 | 
|  | ; GFX900-SDAG-NEXT:    v_pk_min_f16 v3, v3, v4 | 
|  | ; GFX900-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX900-GISEL-LABEL: v_minimumnum_v8f16: | 
|  | ; GFX900-GISEL:       ; %bb.0: | 
|  | ; GFX900-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX900-GISEL-NEXT:    v_pk_max_f16 v0, v0, v0 | 
|  | ; GFX900-GISEL-NEXT:    v_pk_max_f16 v4, v4, v4 | 
|  | ; GFX900-GISEL-NEXT:    v_pk_min_f16 v0, v0, v4 | 
|  | ; GFX900-GISEL-NEXT:    v_pk_max_f16 v1, v1, v1 | 
|  | ; GFX900-GISEL-NEXT:    v_pk_max_f16 v4, v5, v5 | 
|  | ; GFX900-GISEL-NEXT:    v_pk_min_f16 v1, v1, v4 | 
|  | ; GFX900-GISEL-NEXT:    v_pk_max_f16 v2, v2, v2 | 
|  | ; GFX900-GISEL-NEXT:    v_pk_max_f16 v4, v6, v6 | 
|  | ; GFX900-GISEL-NEXT:    v_pk_min_f16 v2, v2, v4 | 
|  | ; GFX900-GISEL-NEXT:    v_pk_max_f16 v3, v3, v3 | 
|  | ; GFX900-GISEL-NEXT:    v_pk_max_f16 v4, v7, v7 | 
|  | ; GFX900-GISEL-NEXT:    v_pk_min_f16 v3, v3, v4 | 
|  | ; GFX900-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX950-SDAG-LABEL: v_minimumnum_v8f16: | 
|  | ; GFX950-SDAG:       ; %bb.0: | 
|  | ; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX950-SDAG-NEXT:    v_pk_max_f16 v4, v4, v4 | 
|  | ; GFX950-SDAG-NEXT:    v_pk_max_f16 v0, v0, v0 | 
|  | ; GFX950-SDAG-NEXT:    v_pk_max_f16 v1, v1, v1 | 
|  | ; GFX950-SDAG-NEXT:    v_pk_min_f16 v0, v0, v4 | 
|  | ; GFX950-SDAG-NEXT:    v_pk_max_f16 v4, v5, v5 | 
|  | ; GFX950-SDAG-NEXT:    v_pk_max_f16 v2, v2, v2 | 
|  | ; GFX950-SDAG-NEXT:    v_pk_min_f16 v1, v1, v4 | 
|  | ; GFX950-SDAG-NEXT:    v_pk_max_f16 v4, v6, v6 | 
|  | ; GFX950-SDAG-NEXT:    v_pk_max_f16 v3, v3, v3 | 
|  | ; GFX950-SDAG-NEXT:    v_pk_min_f16 v2, v2, v4 | 
|  | ; GFX950-SDAG-NEXT:    v_pk_max_f16 v4, v7, v7 | 
|  | ; GFX950-SDAG-NEXT:    s_nop 0 | 
|  | ; GFX950-SDAG-NEXT:    v_pk_min_f16 v3, v3, v4 | 
|  | ; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX950-GISEL-LABEL: v_minimumnum_v8f16: | 
|  | ; GFX950-GISEL:       ; %bb.0: | 
|  | ; GFX950-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX950-GISEL-NEXT:    v_pk_max_f16 v0, v0, v0 | 
|  | ; GFX950-GISEL-NEXT:    v_pk_max_f16 v4, v4, v4 | 
|  | ; GFX950-GISEL-NEXT:    v_pk_max_f16 v1, v1, v1 | 
|  | ; GFX950-GISEL-NEXT:    v_pk_min_f16 v0, v0, v4 | 
|  | ; GFX950-GISEL-NEXT:    v_pk_max_f16 v4, v5, v5 | 
|  | ; GFX950-GISEL-NEXT:    v_pk_max_f16 v2, v2, v2 | 
|  | ; GFX950-GISEL-NEXT:    v_pk_min_f16 v1, v1, v4 | 
|  | ; GFX950-GISEL-NEXT:    v_pk_max_f16 v4, v6, v6 | 
|  | ; GFX950-GISEL-NEXT:    v_pk_max_f16 v3, v3, v3 | 
|  | ; GFX950-GISEL-NEXT:    v_pk_min_f16 v2, v2, v4 | 
|  | ; GFX950-GISEL-NEXT:    v_pk_max_f16 v4, v7, v7 | 
|  | ; GFX950-GISEL-NEXT:    s_nop 0 | 
|  | ; GFX950-GISEL-NEXT:    v_pk_min_f16 v3, v3, v4 | 
|  | ; GFX950-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX10-SDAG-LABEL: v_minimumnum_v8f16: | 
|  | ; GFX10-SDAG:       ; %bb.0: | 
|  | ; GFX10-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX10-SDAG-NEXT:    v_pk_max_f16 v4, v4, v4 | 
|  | ; GFX10-SDAG-NEXT:    v_pk_max_f16 v0, v0, v0 | 
|  | ; GFX10-SDAG-NEXT:    v_pk_max_f16 v5, v5, v5 | 
|  | ; GFX10-SDAG-NEXT:    v_pk_max_f16 v1, v1, v1 | 
|  | ; GFX10-SDAG-NEXT:    v_pk_max_f16 v6, v6, v6 | 
|  | ; GFX10-SDAG-NEXT:    v_pk_max_f16 v2, v2, v2 | 
|  | ; GFX10-SDAG-NEXT:    v_pk_max_f16 v7, v7, v7 | 
|  | ; GFX10-SDAG-NEXT:    v_pk_max_f16 v3, v3, v3 | 
|  | ; GFX10-SDAG-NEXT:    v_pk_min_f16 v0, v0, v4 | 
|  | ; GFX10-SDAG-NEXT:    v_pk_min_f16 v1, v1, v5 | 
|  | ; GFX10-SDAG-NEXT:    v_pk_min_f16 v2, v2, v6 | 
|  | ; GFX10-SDAG-NEXT:    v_pk_min_f16 v3, v3, v7 | 
|  | ; GFX10-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX10-GISEL-LABEL: v_minimumnum_v8f16: | 
|  | ; GFX10-GISEL:       ; %bb.0: | 
|  | ; GFX10-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX10-GISEL-NEXT:    v_pk_max_f16 v0, v0, v0 | 
|  | ; GFX10-GISEL-NEXT:    v_pk_max_f16 v4, v4, v4 | 
|  | ; GFX10-GISEL-NEXT:    v_pk_max_f16 v1, v1, v1 | 
|  | ; GFX10-GISEL-NEXT:    v_pk_max_f16 v5, v5, v5 | 
|  | ; GFX10-GISEL-NEXT:    v_pk_max_f16 v2, v2, v2 | 
|  | ; GFX10-GISEL-NEXT:    v_pk_max_f16 v6, v6, v6 | 
|  | ; GFX10-GISEL-NEXT:    v_pk_max_f16 v3, v3, v3 | 
|  | ; GFX10-GISEL-NEXT:    v_pk_max_f16 v7, v7, v7 | 
|  | ; GFX10-GISEL-NEXT:    v_pk_min_f16 v0, v0, v4 | 
|  | ; GFX10-GISEL-NEXT:    v_pk_min_f16 v1, v1, v5 | 
|  | ; GFX10-GISEL-NEXT:    v_pk_min_f16 v2, v2, v6 | 
|  | ; GFX10-GISEL-NEXT:    v_pk_min_f16 v3, v3, v7 | 
|  | ; GFX10-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX11-SDAG-LABEL: v_minimumnum_v8f16: | 
|  | ; GFX11-SDAG:       ; %bb.0: | 
|  | ; GFX11-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX11-SDAG-NEXT:    v_pk_max_f16 v4, v4, v4 | 
|  | ; GFX11-SDAG-NEXT:    v_pk_max_f16 v0, v0, v0 | 
|  | ; GFX11-SDAG-NEXT:    v_pk_max_f16 v5, v5, v5 | 
|  | ; GFX11-SDAG-NEXT:    v_pk_max_f16 v1, v1, v1 | 
|  | ; GFX11-SDAG-NEXT:    v_pk_max_f16 v6, v6, v6 | 
|  | ; GFX11-SDAG-NEXT:    v_pk_max_f16 v2, v2, v2 | 
|  | ; GFX11-SDAG-NEXT:    v_pk_max_f16 v7, v7, v7 | 
|  | ; GFX11-SDAG-NEXT:    v_pk_max_f16 v3, v3, v3 | 
|  | ; GFX11-SDAG-NEXT:    v_pk_min_f16 v0, v0, v4 | 
|  | ; GFX11-SDAG-NEXT:    v_pk_min_f16 v1, v1, v5 | 
|  | ; GFX11-SDAG-NEXT:    v_pk_min_f16 v2, v2, v6 | 
|  | ; GFX11-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_4) | 
|  | ; GFX11-SDAG-NEXT:    v_pk_min_f16 v3, v3, v7 | 
|  | ; GFX11-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX11-GISEL-LABEL: v_minimumnum_v8f16: | 
|  | ; GFX11-GISEL:       ; %bb.0: | 
|  | ; GFX11-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX11-GISEL-NEXT:    v_pk_max_f16 v0, v0, v0 | 
|  | ; GFX11-GISEL-NEXT:    v_pk_max_f16 v4, v4, v4 | 
|  | ; GFX11-GISEL-NEXT:    v_pk_max_f16 v1, v1, v1 | 
|  | ; GFX11-GISEL-NEXT:    v_pk_max_f16 v5, v5, v5 | 
|  | ; GFX11-GISEL-NEXT:    v_pk_max_f16 v2, v2, v2 | 
|  | ; GFX11-GISEL-NEXT:    v_pk_max_f16 v6, v6, v6 | 
|  | ; GFX11-GISEL-NEXT:    v_pk_max_f16 v3, v3, v3 | 
|  | ; GFX11-GISEL-NEXT:    v_pk_max_f16 v7, v7, v7 | 
|  | ; GFX11-GISEL-NEXT:    v_pk_min_f16 v0, v0, v4 | 
|  | ; GFX11-GISEL-NEXT:    v_pk_min_f16 v1, v1, v5 | 
|  | ; GFX11-GISEL-NEXT:    v_pk_min_f16 v2, v2, v6 | 
|  | ; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_4) | 
|  | ; GFX11-GISEL-NEXT:    v_pk_min_f16 v3, v3, v7 | 
|  | ; GFX11-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX12-SDAG-LABEL: v_minimumnum_v8f16: | 
|  | ; GFX12-SDAG:       ; %bb.0: | 
|  | ; GFX12-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    s_wait_expcnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    s_wait_samplecnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    s_wait_bvhcnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    s_wait_kmcnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    v_pk_max_num_f16 v4, v4, v4 | 
|  | ; GFX12-SDAG-NEXT:    v_pk_max_num_f16 v0, v0, v0 | 
|  | ; GFX12-SDAG-NEXT:    v_pk_max_num_f16 v5, v5, v5 | 
|  | ; GFX12-SDAG-NEXT:    v_pk_max_num_f16 v1, v1, v1 | 
|  | ; GFX12-SDAG-NEXT:    v_pk_max_num_f16 v6, v6, v6 | 
|  | ; GFX12-SDAG-NEXT:    v_pk_max_num_f16 v2, v2, v2 | 
|  | ; GFX12-SDAG-NEXT:    v_pk_max_num_f16 v7, v7, v7 | 
|  | ; GFX12-SDAG-NEXT:    v_pk_max_num_f16 v3, v3, v3 | 
|  | ; GFX12-SDAG-NEXT:    v_pk_min_num_f16 v0, v0, v4 | 
|  | ; GFX12-SDAG-NEXT:    v_pk_min_num_f16 v1, v1, v5 | 
|  | ; GFX12-SDAG-NEXT:    v_pk_min_num_f16 v2, v2, v6 | 
|  | ; GFX12-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_4) | 
|  | ; GFX12-SDAG-NEXT:    v_pk_min_num_f16 v3, v3, v7 | 
|  | ; GFX12-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX12-GISEL-LABEL: v_minimumnum_v8f16: | 
|  | ; GFX12-GISEL:       ; %bb.0: | 
|  | ; GFX12-GISEL-NEXT:    s_wait_loadcnt_dscnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    s_wait_expcnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    s_wait_samplecnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    s_wait_bvhcnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    s_wait_kmcnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    v_pk_max_num_f16 v0, v0, v0 | 
|  | ; GFX12-GISEL-NEXT:    v_pk_max_num_f16 v4, v4, v4 | 
|  | ; GFX12-GISEL-NEXT:    v_pk_max_num_f16 v1, v1, v1 | 
|  | ; GFX12-GISEL-NEXT:    v_pk_max_num_f16 v5, v5, v5 | 
|  | ; GFX12-GISEL-NEXT:    v_pk_max_num_f16 v2, v2, v2 | 
|  | ; GFX12-GISEL-NEXT:    v_pk_max_num_f16 v6, v6, v6 | 
|  | ; GFX12-GISEL-NEXT:    v_pk_max_num_f16 v3, v3, v3 | 
|  | ; GFX12-GISEL-NEXT:    v_pk_max_num_f16 v7, v7, v7 | 
|  | ; GFX12-GISEL-NEXT:    v_pk_min_num_f16 v0, v0, v4 | 
|  | ; GFX12-GISEL-NEXT:    v_pk_min_num_f16 v1, v1, v5 | 
|  | ; GFX12-GISEL-NEXT:    v_pk_min_num_f16 v2, v2, v6 | 
|  | ; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_4) | 
|  | ; GFX12-GISEL-NEXT:    v_pk_min_num_f16 v3, v3, v7 | 
|  | ; GFX12-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | %result = call <8 x half> @llvm.minimumnum.v8f16(<8 x half> %x, <8 x half> %y) | 
|  | ret <8 x half> %result | 
|  | } | 
|  |  | 
|  | define <16 x half> @v_minimumnum_v16f16(<16 x half> %x, <16 x half> %y) { | 
|  | ; GFX7-SDAG-LABEL: v_minimumnum_v16f16: | 
|  | ; GFX7-SDAG:       ; %bb.0: | 
|  | ; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v0, v0 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v16, v16 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v1, v1 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v2, v2 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v0, v0 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v16, v16 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v1, v1 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v2, v2 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v3, v3 | 
|  | ; GFX7-SDAG-NEXT:    v_min_f32_e32 v0, v0, v16 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v16, v17 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v4, v4 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v3, v3 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v17, v20 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v16, v16 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v5, v5 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v6, v6 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v4, v4 | 
|  | ; GFX7-SDAG-NEXT:    v_min_f32_e32 v1, v1, v16 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v16, v18 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v18, v21 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v17, v17 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v5, v5 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v16, v16 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v18, v18 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v6, v6 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v7, v7 | 
|  | ; GFX7-SDAG-NEXT:    v_min_f32_e32 v2, v2, v16 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v16, v19 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v19, v22 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v20, v23 | 
|  | ; GFX7-SDAG-NEXT:    v_min_f32_e32 v4, v4, v17 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v16, v16 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v19, v19 | 
|  | ; GFX7-SDAG-NEXT:    v_min_f32_e32 v5, v5, v18 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v8, v8 | 
|  | ; GFX7-SDAG-NEXT:    v_min_f32_e32 v3, v3, v16 | 
|  | ; GFX7-SDAG-NEXT:    buffer_load_dword v16, off, s[0:3], s32 | 
|  | ; GFX7-SDAG-NEXT:    v_min_f32_e32 v6, v6, v19 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v17, v24 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v9, v9 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v18, v25 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v10, v10 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v19, v26 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v7, v7 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v20, v20 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v8, v8 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v17, v17 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v9, v9 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v18, v18 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v10, v10 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v19, v19 | 
|  | ; GFX7-SDAG-NEXT:    v_min_f32_e32 v7, v7, v20 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v11, v11 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v20, v27 | 
|  | ; GFX7-SDAG-NEXT:    v_min_f32_e32 v8, v8, v17 | 
|  | ; GFX7-SDAG-NEXT:    v_min_f32_e32 v9, v9, v18 | 
|  | ; GFX7-SDAG-NEXT:    v_min_f32_e32 v10, v10, v19 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v12, v12 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v17, v28 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v13, v13 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v18, v29 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v14, v14 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v19, v30 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v15, v15 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v11, v11 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v20, v20 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v12, v12 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v17, v17 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v13, v13 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v18, v18 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v14, v14 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v19, v19 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v15, v15 | 
|  | ; GFX7-SDAG-NEXT:    v_min_f32_e32 v11, v11, v20 | 
|  | ; GFX7-SDAG-NEXT:    v_min_f32_e32 v12, v12, v17 | 
|  | ; GFX7-SDAG-NEXT:    v_min_f32_e32 v13, v13, v18 | 
|  | ; GFX7-SDAG-NEXT:    v_min_f32_e32 v14, v14, v19 | 
|  | ; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0) | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v16, v16 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v16, v16 | 
|  | ; GFX7-SDAG-NEXT:    v_min_f32_e32 v15, v15, v16 | 
|  | ; GFX7-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX7-GISEL-LABEL: v_minimumnum_v16f16: | 
|  | ; GFX7-GISEL:       ; %bb.0: | 
|  | ; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v0, v0 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v16, v16 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v1, v1 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v2, v2 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v3, v3 | 
|  | ; GFX7-GISEL-NEXT:    v_min_f32_e32 v0, v0, v16 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v16, v17 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v4, v4 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v17, v20 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v5, v5 | 
|  | ; GFX7-GISEL-NEXT:    v_min_f32_e32 v1, v1, v16 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v16, v18 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v18, v21 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v6, v6 | 
|  | ; GFX7-GISEL-NEXT:    v_min_f32_e32 v4, v4, v17 | 
|  | ; GFX7-GISEL-NEXT:    v_min_f32_e32 v2, v2, v16 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v16, v19 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v19, v22 | 
|  | ; GFX7-GISEL-NEXT:    v_min_f32_e32 v5, v5, v18 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v7, v7 | 
|  | ; GFX7-GISEL-NEXT:    v_min_f32_e32 v3, v3, v16 | 
|  | ; GFX7-GISEL-NEXT:    buffer_load_dword v16, off, s[0:3], s32 | 
|  | ; GFX7-GISEL-NEXT:    v_min_f32_e32 v6, v6, v19 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v17, v23 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v8, v8 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v18, v24 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v9, v9 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v19, v25 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v10, v10 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v20, v26 | 
|  | ; GFX7-GISEL-NEXT:    v_min_f32_e32 v7, v7, v17 | 
|  | ; GFX7-GISEL-NEXT:    v_min_f32_e32 v8, v8, v18 | 
|  | ; GFX7-GISEL-NEXT:    v_min_f32_e32 v9, v9, v19 | 
|  | ; GFX7-GISEL-NEXT:    v_min_f32_e32 v10, v10, v20 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v11, v11 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v17, v27 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v12, v12 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v18, v28 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v13, v13 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v19, v29 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v14, v14 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v20, v30 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v15, v15 | 
|  | ; GFX7-GISEL-NEXT:    v_min_f32_e32 v11, v11, v17 | 
|  | ; GFX7-GISEL-NEXT:    v_min_f32_e32 v12, v12, v18 | 
|  | ; GFX7-GISEL-NEXT:    v_min_f32_e32 v13, v13, v19 | 
|  | ; GFX7-GISEL-NEXT:    v_min_f32_e32 v14, v14, v20 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f16_f32_e32 v0, v0 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f16_f32_e32 v1, v1 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f16_f32_e32 v2, v2 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f16_f32_e32 v3, v3 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f16_f32_e32 v4, v4 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f16_f32_e32 v5, v5 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f16_f32_e32 v6, v6 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f16_f32_e32 v7, v7 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f16_f32_e32 v8, v8 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f16_f32_e32 v9, v9 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f16_f32_e32 v10, v10 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f16_f32_e32 v11, v11 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f16_f32_e32 v12, v12 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f16_f32_e32 v13, v13 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f16_f32_e32 v14, v14 | 
|  | ; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0) | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v16, v16 | 
|  | ; GFX7-GISEL-NEXT:    v_min_f32_e32 v15, v15, v16 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f16_f32_e32 v15, v15 | 
|  | ; GFX7-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX8-SDAG-LABEL: v_minimumnum_v16f16: | 
|  | ; GFX8-SDAG:       ; %bb.0: | 
|  | ; GFX8-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_sdwa v16, v15, v15 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_sdwa v17, v7, v7 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-SDAG-NEXT:    v_min_f16_sdwa v16, v17, v16 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_sdwa v17, v14, v14 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_sdwa v18, v6, v6 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-SDAG-NEXT:    v_min_f16_sdwa v17, v18, v17 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_sdwa v18, v13, v13 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_sdwa v19, v5, v5 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-SDAG-NEXT:    v_min_f16_sdwa v18, v19, v18 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_sdwa v19, v12, v12 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_sdwa v20, v4, v4 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-SDAG-NEXT:    v_min_f16_sdwa v19, v20, v19 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_sdwa v20, v11, v11 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_sdwa v21, v3, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-SDAG-NEXT:    v_min_f16_sdwa v20, v21, v20 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_sdwa v21, v10, v10 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_sdwa v22, v2, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-SDAG-NEXT:    v_min_f16_sdwa v21, v22, v21 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_sdwa v22, v9, v9 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_sdwa v23, v1, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-SDAG-NEXT:    v_min_f16_sdwa v22, v23, v22 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_sdwa v23, v8, v8 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_sdwa v24, v0, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_e32 v15, v15, v15 | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_e32 v7, v7, v7 | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_e32 v14, v14, v14 | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_e32 v6, v6, v6 | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_e32 v13, v13, v13 | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_e32 v5, v5, v5 | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_e32 v12, v12, v12 | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_e32 v4, v4, v4 | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_e32 v11, v11, v11 | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_e32 v3, v3, v3 | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_e32 v10, v10, v10 | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_e32 v2, v2, v2 | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_e32 v9, v9, v9 | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_e32 v1, v1, v1 | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_e32 v8, v8, v8 | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_e32 v0, v0, v0 | 
|  | ; GFX8-SDAG-NEXT:    v_min_f16_sdwa v23, v24, v23 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD | 
|  | ; GFX8-SDAG-NEXT:    v_min_f16_e32 v7, v7, v15 | 
|  | ; GFX8-SDAG-NEXT:    v_min_f16_e32 v6, v6, v14 | 
|  | ; GFX8-SDAG-NEXT:    v_min_f16_e32 v5, v5, v13 | 
|  | ; GFX8-SDAG-NEXT:    v_min_f16_e32 v4, v4, v12 | 
|  | ; GFX8-SDAG-NEXT:    v_min_f16_e32 v3, v3, v11 | 
|  | ; GFX8-SDAG-NEXT:    v_min_f16_e32 v2, v2, v10 | 
|  | ; GFX8-SDAG-NEXT:    v_min_f16_e32 v1, v1, v9 | 
|  | ; GFX8-SDAG-NEXT:    v_min_f16_e32 v0, v0, v8 | 
|  | ; GFX8-SDAG-NEXT:    v_or_b32_e32 v0, v0, v23 | 
|  | ; GFX8-SDAG-NEXT:    v_or_b32_e32 v1, v1, v22 | 
|  | ; GFX8-SDAG-NEXT:    v_or_b32_e32 v2, v2, v21 | 
|  | ; GFX8-SDAG-NEXT:    v_or_b32_e32 v3, v3, v20 | 
|  | ; GFX8-SDAG-NEXT:    v_or_b32_e32 v4, v4, v19 | 
|  | ; GFX8-SDAG-NEXT:    v_or_b32_e32 v5, v5, v18 | 
|  | ; GFX8-SDAG-NEXT:    v_or_b32_e32 v6, v6, v17 | 
|  | ; GFX8-SDAG-NEXT:    v_or_b32_e32 v7, v7, v16 | 
|  | ; GFX8-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX8-GISEL-LABEL: v_minimumnum_v16f16: | 
|  | ; GFX8-GISEL:       ; %bb.0: | 
|  | ; GFX8-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_e32 v16, v0, v0 | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_e32 v17, v8, v8 | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_sdwa v0, v0, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_sdwa v8, v8, v8 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-GISEL-NEXT:    v_min_f16_e32 v16, v16, v17 | 
|  | ; GFX8-GISEL-NEXT:    v_min_f16_sdwa v0, v0, v8 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_e32 v8, v1, v1 | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_e32 v17, v9, v9 | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_sdwa v1, v1, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_sdwa v9, v9, v9 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-GISEL-NEXT:    v_min_f16_e32 v8, v8, v17 | 
|  | ; GFX8-GISEL-NEXT:    v_min_f16_sdwa v1, v1, v9 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_e32 v9, v2, v2 | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_e32 v17, v10, v10 | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_sdwa v2, v2, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_sdwa v10, v10, v10 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-GISEL-NEXT:    v_min_f16_e32 v9, v9, v17 | 
|  | ; GFX8-GISEL-NEXT:    v_min_f16_sdwa v2, v2, v10 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_e32 v10, v3, v3 | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_e32 v17, v11, v11 | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_sdwa v3, v3, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_sdwa v11, v11, v11 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-GISEL-NEXT:    v_min_f16_e32 v10, v10, v17 | 
|  | ; GFX8-GISEL-NEXT:    v_min_f16_sdwa v3, v3, v11 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_e32 v11, v4, v4 | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_e32 v17, v12, v12 | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_sdwa v4, v4, v4 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_sdwa v12, v12, v12 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-GISEL-NEXT:    v_min_f16_e32 v11, v11, v17 | 
|  | ; GFX8-GISEL-NEXT:    v_min_f16_sdwa v4, v4, v12 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_e32 v12, v5, v5 | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_e32 v17, v13, v13 | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_sdwa v5, v5, v5 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_sdwa v13, v13, v13 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-GISEL-NEXT:    v_min_f16_e32 v12, v12, v17 | 
|  | ; GFX8-GISEL-NEXT:    v_min_f16_sdwa v5, v5, v13 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_e32 v13, v6, v6 | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_e32 v17, v14, v14 | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_sdwa v6, v6, v6 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_sdwa v14, v14, v14 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-GISEL-NEXT:    v_min_f16_e32 v13, v13, v17 | 
|  | ; GFX8-GISEL-NEXT:    v_min_f16_sdwa v6, v6, v14 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_e32 v14, v7, v7 | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_e32 v17, v15, v15 | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_sdwa v7, v7, v7 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_sdwa v15, v15, v15 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-GISEL-NEXT:    v_min_f16_e32 v14, v14, v17 | 
|  | ; GFX8-GISEL-NEXT:    v_min_f16_sdwa v7, v7, v15 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD | 
|  | ; GFX8-GISEL-NEXT:    v_or_b32_e32 v0, v16, v0 | 
|  | ; GFX8-GISEL-NEXT:    v_or_b32_e32 v1, v8, v1 | 
|  | ; GFX8-GISEL-NEXT:    v_or_b32_e32 v2, v9, v2 | 
|  | ; GFX8-GISEL-NEXT:    v_or_b32_e32 v3, v10, v3 | 
|  | ; GFX8-GISEL-NEXT:    v_or_b32_e32 v4, v11, v4 | 
|  | ; GFX8-GISEL-NEXT:    v_or_b32_e32 v5, v12, v5 | 
|  | ; GFX8-GISEL-NEXT:    v_or_b32_e32 v6, v13, v6 | 
|  | ; GFX8-GISEL-NEXT:    v_or_b32_e32 v7, v14, v7 | 
|  | ; GFX8-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX900-SDAG-LABEL: v_minimumnum_v16f16: | 
|  | ; GFX900-SDAG:       ; %bb.0: | 
|  | ; GFX900-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX900-SDAG-NEXT:    v_pk_max_f16 v8, v8, v8 | 
|  | ; GFX900-SDAG-NEXT:    v_pk_max_f16 v0, v0, v0 | 
|  | ; GFX900-SDAG-NEXT:    v_pk_min_f16 v0, v0, v8 | 
|  | ; GFX900-SDAG-NEXT:    v_pk_max_f16 v8, v9, v9 | 
|  | ; GFX900-SDAG-NEXT:    v_pk_max_f16 v1, v1, v1 | 
|  | ; GFX900-SDAG-NEXT:    v_pk_min_f16 v1, v1, v8 | 
|  | ; GFX900-SDAG-NEXT:    v_pk_max_f16 v8, v10, v10 | 
|  | ; GFX900-SDAG-NEXT:    v_pk_max_f16 v2, v2, v2 | 
|  | ; GFX900-SDAG-NEXT:    v_pk_min_f16 v2, v2, v8 | 
|  | ; GFX900-SDAG-NEXT:    v_pk_max_f16 v8, v11, v11 | 
|  | ; GFX900-SDAG-NEXT:    v_pk_max_f16 v3, v3, v3 | 
|  | ; GFX900-SDAG-NEXT:    v_pk_min_f16 v3, v3, v8 | 
|  | ; GFX900-SDAG-NEXT:    v_pk_max_f16 v8, v12, v12 | 
|  | ; GFX900-SDAG-NEXT:    v_pk_max_f16 v4, v4, v4 | 
|  | ; GFX900-SDAG-NEXT:    v_pk_min_f16 v4, v4, v8 | 
|  | ; GFX900-SDAG-NEXT:    v_pk_max_f16 v8, v13, v13 | 
|  | ; GFX900-SDAG-NEXT:    v_pk_max_f16 v5, v5, v5 | 
|  | ; GFX900-SDAG-NEXT:    v_pk_min_f16 v5, v5, v8 | 
|  | ; GFX900-SDAG-NEXT:    v_pk_max_f16 v8, v14, v14 | 
|  | ; GFX900-SDAG-NEXT:    v_pk_max_f16 v6, v6, v6 | 
|  | ; GFX900-SDAG-NEXT:    v_pk_min_f16 v6, v6, v8 | 
|  | ; GFX900-SDAG-NEXT:    v_pk_max_f16 v8, v15, v15 | 
|  | ; GFX900-SDAG-NEXT:    v_pk_max_f16 v7, v7, v7 | 
|  | ; GFX900-SDAG-NEXT:    v_pk_min_f16 v7, v7, v8 | 
|  | ; GFX900-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX900-GISEL-LABEL: v_minimumnum_v16f16: | 
|  | ; GFX900-GISEL:       ; %bb.0: | 
|  | ; GFX900-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX900-GISEL-NEXT:    v_pk_max_f16 v0, v0, v0 | 
|  | ; GFX900-GISEL-NEXT:    v_pk_max_f16 v8, v8, v8 | 
|  | ; GFX900-GISEL-NEXT:    v_pk_min_f16 v0, v0, v8 | 
|  | ; GFX900-GISEL-NEXT:    v_pk_max_f16 v1, v1, v1 | 
|  | ; GFX900-GISEL-NEXT:    v_pk_max_f16 v8, v9, v9 | 
|  | ; GFX900-GISEL-NEXT:    v_pk_min_f16 v1, v1, v8 | 
|  | ; GFX900-GISEL-NEXT:    v_pk_max_f16 v2, v2, v2 | 
|  | ; GFX900-GISEL-NEXT:    v_pk_max_f16 v8, v10, v10 | 
|  | ; GFX900-GISEL-NEXT:    v_pk_min_f16 v2, v2, v8 | 
|  | ; GFX900-GISEL-NEXT:    v_pk_max_f16 v3, v3, v3 | 
|  | ; GFX900-GISEL-NEXT:    v_pk_max_f16 v8, v11, v11 | 
|  | ; GFX900-GISEL-NEXT:    v_pk_min_f16 v3, v3, v8 | 
|  | ; GFX900-GISEL-NEXT:    v_pk_max_f16 v4, v4, v4 | 
|  | ; GFX900-GISEL-NEXT:    v_pk_max_f16 v8, v12, v12 | 
|  | ; GFX900-GISEL-NEXT:    v_pk_min_f16 v4, v4, v8 | 
|  | ; GFX900-GISEL-NEXT:    v_pk_max_f16 v5, v5, v5 | 
|  | ; GFX900-GISEL-NEXT:    v_pk_max_f16 v8, v13, v13 | 
|  | ; GFX900-GISEL-NEXT:    v_pk_min_f16 v5, v5, v8 | 
|  | ; GFX900-GISEL-NEXT:    v_pk_max_f16 v6, v6, v6 | 
|  | ; GFX900-GISEL-NEXT:    v_pk_max_f16 v8, v14, v14 | 
|  | ; GFX900-GISEL-NEXT:    v_pk_min_f16 v6, v6, v8 | 
|  | ; GFX900-GISEL-NEXT:    v_pk_max_f16 v7, v7, v7 | 
|  | ; GFX900-GISEL-NEXT:    v_pk_max_f16 v8, v15, v15 | 
|  | ; GFX900-GISEL-NEXT:    v_pk_min_f16 v7, v7, v8 | 
|  | ; GFX900-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX950-SDAG-LABEL: v_minimumnum_v16f16: | 
|  | ; GFX950-SDAG:       ; %bb.0: | 
|  | ; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX950-SDAG-NEXT:    v_pk_max_f16 v8, v8, v8 | 
|  | ; GFX950-SDAG-NEXT:    v_pk_max_f16 v0, v0, v0 | 
|  | ; GFX950-SDAG-NEXT:    v_pk_max_f16 v1, v1, v1 | 
|  | ; GFX950-SDAG-NEXT:    v_pk_min_f16 v0, v0, v8 | 
|  | ; GFX950-SDAG-NEXT:    v_pk_max_f16 v8, v9, v9 | 
|  | ; GFX950-SDAG-NEXT:    v_pk_max_f16 v2, v2, v2 | 
|  | ; GFX950-SDAG-NEXT:    v_pk_min_f16 v1, v1, v8 | 
|  | ; GFX950-SDAG-NEXT:    v_pk_max_f16 v8, v10, v10 | 
|  | ; GFX950-SDAG-NEXT:    v_pk_max_f16 v3, v3, v3 | 
|  | ; GFX950-SDAG-NEXT:    v_pk_min_f16 v2, v2, v8 | 
|  | ; GFX950-SDAG-NEXT:    v_pk_max_f16 v8, v11, v11 | 
|  | ; GFX950-SDAG-NEXT:    v_pk_max_f16 v4, v4, v4 | 
|  | ; GFX950-SDAG-NEXT:    v_pk_min_f16 v3, v3, v8 | 
|  | ; GFX950-SDAG-NEXT:    v_pk_max_f16 v8, v12, v12 | 
|  | ; GFX950-SDAG-NEXT:    v_pk_max_f16 v5, v5, v5 | 
|  | ; GFX950-SDAG-NEXT:    v_pk_min_f16 v4, v4, v8 | 
|  | ; GFX950-SDAG-NEXT:    v_pk_max_f16 v8, v13, v13 | 
|  | ; GFX950-SDAG-NEXT:    v_pk_max_f16 v6, v6, v6 | 
|  | ; GFX950-SDAG-NEXT:    v_pk_min_f16 v5, v5, v8 | 
|  | ; GFX950-SDAG-NEXT:    v_pk_max_f16 v8, v14, v14 | 
|  | ; GFX950-SDAG-NEXT:    v_pk_max_f16 v7, v7, v7 | 
|  | ; GFX950-SDAG-NEXT:    v_pk_min_f16 v6, v6, v8 | 
|  | ; GFX950-SDAG-NEXT:    v_pk_max_f16 v8, v15, v15 | 
|  | ; GFX950-SDAG-NEXT:    s_nop 0 | 
|  | ; GFX950-SDAG-NEXT:    v_pk_min_f16 v7, v7, v8 | 
|  | ; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX950-GISEL-LABEL: v_minimumnum_v16f16: | 
|  | ; GFX950-GISEL:       ; %bb.0: | 
|  | ; GFX950-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX950-GISEL-NEXT:    v_pk_max_f16 v0, v0, v0 | 
|  | ; GFX950-GISEL-NEXT:    v_pk_max_f16 v8, v8, v8 | 
|  | ; GFX950-GISEL-NEXT:    v_pk_max_f16 v1, v1, v1 | 
|  | ; GFX950-GISEL-NEXT:    v_pk_min_f16 v0, v0, v8 | 
|  | ; GFX950-GISEL-NEXT:    v_pk_max_f16 v8, v9, v9 | 
|  | ; GFX950-GISEL-NEXT:    v_pk_max_f16 v2, v2, v2 | 
|  | ; GFX950-GISEL-NEXT:    v_pk_min_f16 v1, v1, v8 | 
|  | ; GFX950-GISEL-NEXT:    v_pk_max_f16 v8, v10, v10 | 
|  | ; GFX950-GISEL-NEXT:    v_pk_max_f16 v3, v3, v3 | 
|  | ; GFX950-GISEL-NEXT:    v_pk_min_f16 v2, v2, v8 | 
|  | ; GFX950-GISEL-NEXT:    v_pk_max_f16 v8, v11, v11 | 
|  | ; GFX950-GISEL-NEXT:    v_pk_max_f16 v4, v4, v4 | 
|  | ; GFX950-GISEL-NEXT:    v_pk_min_f16 v3, v3, v8 | 
|  | ; GFX950-GISEL-NEXT:    v_pk_max_f16 v8, v12, v12 | 
|  | ; GFX950-GISEL-NEXT:    v_pk_max_f16 v5, v5, v5 | 
|  | ; GFX950-GISEL-NEXT:    v_pk_min_f16 v4, v4, v8 | 
|  | ; GFX950-GISEL-NEXT:    v_pk_max_f16 v8, v13, v13 | 
|  | ; GFX950-GISEL-NEXT:    v_pk_max_f16 v6, v6, v6 | 
|  | ; GFX950-GISEL-NEXT:    v_pk_min_f16 v5, v5, v8 | 
|  | ; GFX950-GISEL-NEXT:    v_pk_max_f16 v8, v14, v14 | 
|  | ; GFX950-GISEL-NEXT:    v_pk_max_f16 v7, v7, v7 | 
|  | ; GFX950-GISEL-NEXT:    v_pk_min_f16 v6, v6, v8 | 
|  | ; GFX950-GISEL-NEXT:    v_pk_max_f16 v8, v15, v15 | 
|  | ; GFX950-GISEL-NEXT:    s_nop 0 | 
|  | ; GFX950-GISEL-NEXT:    v_pk_min_f16 v7, v7, v8 | 
|  | ; GFX950-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX10-SDAG-LABEL: v_minimumnum_v16f16: | 
|  | ; GFX10-SDAG:       ; %bb.0: | 
|  | ; GFX10-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX10-SDAG-NEXT:    v_pk_max_f16 v8, v8, v8 | 
|  | ; GFX10-SDAG-NEXT:    v_pk_max_f16 v0, v0, v0 | 
|  | ; GFX10-SDAG-NEXT:    v_pk_max_f16 v9, v9, v9 | 
|  | ; GFX10-SDAG-NEXT:    v_pk_max_f16 v1, v1, v1 | 
|  | ; GFX10-SDAG-NEXT:    v_pk_max_f16 v10, v10, v10 | 
|  | ; GFX10-SDAG-NEXT:    v_pk_max_f16 v2, v2, v2 | 
|  | ; GFX10-SDAG-NEXT:    v_pk_min_f16 v0, v0, v8 | 
|  | ; GFX10-SDAG-NEXT:    v_pk_max_f16 v8, v11, v11 | 
|  | ; GFX10-SDAG-NEXT:    v_pk_min_f16 v1, v1, v9 | 
|  | ; GFX10-SDAG-NEXT:    v_pk_max_f16 v3, v3, v3 | 
|  | ; GFX10-SDAG-NEXT:    v_pk_min_f16 v2, v2, v10 | 
|  | ; GFX10-SDAG-NEXT:    v_pk_max_f16 v9, v12, v12 | 
|  | ; GFX10-SDAG-NEXT:    v_pk_max_f16 v4, v4, v4 | 
|  | ; GFX10-SDAG-NEXT:    v_pk_max_f16 v10, v13, v13 | 
|  | ; GFX10-SDAG-NEXT:    v_pk_max_f16 v5, v5, v5 | 
|  | ; GFX10-SDAG-NEXT:    v_pk_max_f16 v11, v14, v14 | 
|  | ; GFX10-SDAG-NEXT:    v_pk_max_f16 v6, v6, v6 | 
|  | ; GFX10-SDAG-NEXT:    v_pk_max_f16 v12, v15, v15 | 
|  | ; GFX10-SDAG-NEXT:    v_pk_max_f16 v7, v7, v7 | 
|  | ; GFX10-SDAG-NEXT:    v_pk_min_f16 v3, v3, v8 | 
|  | ; GFX10-SDAG-NEXT:    v_pk_min_f16 v4, v4, v9 | 
|  | ; GFX10-SDAG-NEXT:    v_pk_min_f16 v5, v5, v10 | 
|  | ; GFX10-SDAG-NEXT:    v_pk_min_f16 v6, v6, v11 | 
|  | ; GFX10-SDAG-NEXT:    v_pk_min_f16 v7, v7, v12 | 
|  | ; GFX10-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX10-GISEL-LABEL: v_minimumnum_v16f16: | 
|  | ; GFX10-GISEL:       ; %bb.0: | 
|  | ; GFX10-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX10-GISEL-NEXT:    v_pk_max_f16 v0, v0, v0 | 
|  | ; GFX10-GISEL-NEXT:    v_pk_max_f16 v8, v8, v8 | 
|  | ; GFX10-GISEL-NEXT:    v_pk_max_f16 v1, v1, v1 | 
|  | ; GFX10-GISEL-NEXT:    v_pk_max_f16 v9, v9, v9 | 
|  | ; GFX10-GISEL-NEXT:    v_pk_max_f16 v2, v2, v2 | 
|  | ; GFX10-GISEL-NEXT:    v_pk_max_f16 v10, v10, v10 | 
|  | ; GFX10-GISEL-NEXT:    v_pk_min_f16 v0, v0, v8 | 
|  | ; GFX10-GISEL-NEXT:    v_pk_max_f16 v3, v3, v3 | 
|  | ; GFX10-GISEL-NEXT:    v_pk_min_f16 v1, v1, v9 | 
|  | ; GFX10-GISEL-NEXT:    v_pk_max_f16 v8, v11, v11 | 
|  | ; GFX10-GISEL-NEXT:    v_pk_min_f16 v2, v2, v10 | 
|  | ; GFX10-GISEL-NEXT:    v_pk_max_f16 v4, v4, v4 | 
|  | ; GFX10-GISEL-NEXT:    v_pk_max_f16 v9, v12, v12 | 
|  | ; GFX10-GISEL-NEXT:    v_pk_max_f16 v5, v5, v5 | 
|  | ; GFX10-GISEL-NEXT:    v_pk_max_f16 v10, v13, v13 | 
|  | ; GFX10-GISEL-NEXT:    v_pk_max_f16 v6, v6, v6 | 
|  | ; GFX10-GISEL-NEXT:    v_pk_max_f16 v11, v14, v14 | 
|  | ; GFX10-GISEL-NEXT:    v_pk_max_f16 v7, v7, v7 | 
|  | ; GFX10-GISEL-NEXT:    v_pk_max_f16 v12, v15, v15 | 
|  | ; GFX10-GISEL-NEXT:    v_pk_min_f16 v3, v3, v8 | 
|  | ; GFX10-GISEL-NEXT:    v_pk_min_f16 v4, v4, v9 | 
|  | ; GFX10-GISEL-NEXT:    v_pk_min_f16 v5, v5, v10 | 
|  | ; GFX10-GISEL-NEXT:    v_pk_min_f16 v6, v6, v11 | 
|  | ; GFX10-GISEL-NEXT:    v_pk_min_f16 v7, v7, v12 | 
|  | ; GFX10-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX11-SDAG-LABEL: v_minimumnum_v16f16: | 
|  | ; GFX11-SDAG:       ; %bb.0: | 
|  | ; GFX11-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX11-SDAG-NEXT:    v_pk_max_f16 v8, v8, v8 | 
|  | ; GFX11-SDAG-NEXT:    v_pk_max_f16 v0, v0, v0 | 
|  | ; GFX11-SDAG-NEXT:    v_pk_max_f16 v9, v9, v9 | 
|  | ; GFX11-SDAG-NEXT:    v_pk_max_f16 v1, v1, v1 | 
|  | ; GFX11-SDAG-NEXT:    v_pk_max_f16 v10, v10, v10 | 
|  | ; GFX11-SDAG-NEXT:    v_pk_max_f16 v2, v2, v2 | 
|  | ; GFX11-SDAG-NEXT:    v_pk_min_f16 v0, v0, v8 | 
|  | ; GFX11-SDAG-NEXT:    v_pk_max_f16 v8, v11, v11 | 
|  | ; GFX11-SDAG-NEXT:    v_pk_min_f16 v1, v1, v9 | 
|  | ; GFX11-SDAG-NEXT:    v_pk_max_f16 v3, v3, v3 | 
|  | ; GFX11-SDAG-NEXT:    v_pk_min_f16 v2, v2, v10 | 
|  | ; GFX11-SDAG-NEXT:    v_pk_max_f16 v9, v12, v12 | 
|  | ; GFX11-SDAG-NEXT:    v_pk_max_f16 v4, v4, v4 | 
|  | ; GFX11-SDAG-NEXT:    v_pk_max_f16 v10, v13, v13 | 
|  | ; GFX11-SDAG-NEXT:    v_pk_max_f16 v5, v5, v5 | 
|  | ; GFX11-SDAG-NEXT:    v_pk_max_f16 v11, v14, v14 | 
|  | ; GFX11-SDAG-NEXT:    v_pk_max_f16 v6, v6, v6 | 
|  | ; GFX11-SDAG-NEXT:    v_pk_max_f16 v12, v15, v15 | 
|  | ; GFX11-SDAG-NEXT:    v_pk_max_f16 v7, v7, v7 | 
|  | ; GFX11-SDAG-NEXT:    v_pk_min_f16 v3, v3, v8 | 
|  | ; GFX11-SDAG-NEXT:    v_pk_min_f16 v4, v4, v9 | 
|  | ; GFX11-SDAG-NEXT:    v_pk_min_f16 v5, v5, v10 | 
|  | ; GFX11-SDAG-NEXT:    v_pk_min_f16 v6, v6, v11 | 
|  | ; GFX11-SDAG-NEXT:    v_pk_min_f16 v7, v7, v12 | 
|  | ; GFX11-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX11-GISEL-LABEL: v_minimumnum_v16f16: | 
|  | ; GFX11-GISEL:       ; %bb.0: | 
|  | ; GFX11-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX11-GISEL-NEXT:    v_pk_max_f16 v0, v0, v0 | 
|  | ; GFX11-GISEL-NEXT:    v_pk_max_f16 v8, v8, v8 | 
|  | ; GFX11-GISEL-NEXT:    v_pk_max_f16 v1, v1, v1 | 
|  | ; GFX11-GISEL-NEXT:    v_pk_max_f16 v9, v9, v9 | 
|  | ; GFX11-GISEL-NEXT:    v_pk_max_f16 v2, v2, v2 | 
|  | ; GFX11-GISEL-NEXT:    v_pk_max_f16 v10, v10, v10 | 
|  | ; GFX11-GISEL-NEXT:    v_pk_min_f16 v0, v0, v8 | 
|  | ; GFX11-GISEL-NEXT:    v_pk_max_f16 v3, v3, v3 | 
|  | ; GFX11-GISEL-NEXT:    v_pk_min_f16 v1, v1, v9 | 
|  | ; GFX11-GISEL-NEXT:    v_pk_max_f16 v8, v11, v11 | 
|  | ; GFX11-GISEL-NEXT:    v_pk_min_f16 v2, v2, v10 | 
|  | ; GFX11-GISEL-NEXT:    v_pk_max_f16 v4, v4, v4 | 
|  | ; GFX11-GISEL-NEXT:    v_pk_max_f16 v9, v12, v12 | 
|  | ; GFX11-GISEL-NEXT:    v_pk_max_f16 v5, v5, v5 | 
|  | ; GFX11-GISEL-NEXT:    v_pk_max_f16 v10, v13, v13 | 
|  | ; GFX11-GISEL-NEXT:    v_pk_max_f16 v6, v6, v6 | 
|  | ; GFX11-GISEL-NEXT:    v_pk_max_f16 v11, v14, v14 | 
|  | ; GFX11-GISEL-NEXT:    v_pk_max_f16 v7, v7, v7 | 
|  | ; GFX11-GISEL-NEXT:    v_pk_max_f16 v12, v15, v15 | 
|  | ; GFX11-GISEL-NEXT:    v_pk_min_f16 v3, v3, v8 | 
|  | ; GFX11-GISEL-NEXT:    v_pk_min_f16 v4, v4, v9 | 
|  | ; GFX11-GISEL-NEXT:    v_pk_min_f16 v5, v5, v10 | 
|  | ; GFX11-GISEL-NEXT:    v_pk_min_f16 v6, v6, v11 | 
|  | ; GFX11-GISEL-NEXT:    v_pk_min_f16 v7, v7, v12 | 
|  | ; GFX11-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX12-SDAG-LABEL: v_minimumnum_v16f16: | 
|  | ; GFX12-SDAG:       ; %bb.0: | 
|  | ; GFX12-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    s_wait_expcnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    s_wait_samplecnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    s_wait_bvhcnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    s_wait_kmcnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    v_pk_max_num_f16 v8, v8, v8 | 
|  | ; GFX12-SDAG-NEXT:    v_pk_max_num_f16 v0, v0, v0 | 
|  | ; GFX12-SDAG-NEXT:    v_pk_max_num_f16 v9, v9, v9 | 
|  | ; GFX12-SDAG-NEXT:    v_pk_max_num_f16 v1, v1, v1 | 
|  | ; GFX12-SDAG-NEXT:    v_pk_max_num_f16 v10, v10, v10 | 
|  | ; GFX12-SDAG-NEXT:    v_pk_max_num_f16 v2, v2, v2 | 
|  | ; GFX12-SDAG-NEXT:    v_pk_min_num_f16 v0, v0, v8 | 
|  | ; GFX12-SDAG-NEXT:    v_pk_max_num_f16 v8, v11, v11 | 
|  | ; GFX12-SDAG-NEXT:    v_pk_min_num_f16 v1, v1, v9 | 
|  | ; GFX12-SDAG-NEXT:    v_pk_max_num_f16 v3, v3, v3 | 
|  | ; GFX12-SDAG-NEXT:    v_pk_min_num_f16 v2, v2, v10 | 
|  | ; GFX12-SDAG-NEXT:    v_pk_max_num_f16 v9, v12, v12 | 
|  | ; GFX12-SDAG-NEXT:    v_pk_max_num_f16 v4, v4, v4 | 
|  | ; GFX12-SDAG-NEXT:    v_pk_max_num_f16 v10, v13, v13 | 
|  | ; GFX12-SDAG-NEXT:    v_pk_max_num_f16 v5, v5, v5 | 
|  | ; GFX12-SDAG-NEXT:    v_pk_max_num_f16 v11, v14, v14 | 
|  | ; GFX12-SDAG-NEXT:    v_pk_max_num_f16 v6, v6, v6 | 
|  | ; GFX12-SDAG-NEXT:    v_pk_max_num_f16 v12, v15, v15 | 
|  | ; GFX12-SDAG-NEXT:    v_pk_max_num_f16 v7, v7, v7 | 
|  | ; GFX12-SDAG-NEXT:    v_pk_min_num_f16 v3, v3, v8 | 
|  | ; GFX12-SDAG-NEXT:    v_pk_min_num_f16 v4, v4, v9 | 
|  | ; GFX12-SDAG-NEXT:    v_pk_min_num_f16 v5, v5, v10 | 
|  | ; GFX12-SDAG-NEXT:    v_pk_min_num_f16 v6, v6, v11 | 
|  | ; GFX12-SDAG-NEXT:    v_pk_min_num_f16 v7, v7, v12 | 
|  | ; GFX12-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX12-GISEL-LABEL: v_minimumnum_v16f16: | 
|  | ; GFX12-GISEL:       ; %bb.0: | 
|  | ; GFX12-GISEL-NEXT:    s_wait_loadcnt_dscnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    s_wait_expcnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    s_wait_samplecnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    s_wait_bvhcnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    s_wait_kmcnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    v_pk_max_num_f16 v0, v0, v0 | 
|  | ; GFX12-GISEL-NEXT:    v_pk_max_num_f16 v8, v8, v8 | 
|  | ; GFX12-GISEL-NEXT:    v_pk_max_num_f16 v1, v1, v1 | 
|  | ; GFX12-GISEL-NEXT:    v_pk_max_num_f16 v9, v9, v9 | 
|  | ; GFX12-GISEL-NEXT:    v_pk_max_num_f16 v2, v2, v2 | 
|  | ; GFX12-GISEL-NEXT:    v_pk_max_num_f16 v10, v10, v10 | 
|  | ; GFX12-GISEL-NEXT:    v_pk_min_num_f16 v0, v0, v8 | 
|  | ; GFX12-GISEL-NEXT:    v_pk_max_num_f16 v3, v3, v3 | 
|  | ; GFX12-GISEL-NEXT:    v_pk_min_num_f16 v1, v1, v9 | 
|  | ; GFX12-GISEL-NEXT:    v_pk_max_num_f16 v8, v11, v11 | 
|  | ; GFX12-GISEL-NEXT:    v_pk_min_num_f16 v2, v2, v10 | 
|  | ; GFX12-GISEL-NEXT:    v_pk_max_num_f16 v4, v4, v4 | 
|  | ; GFX12-GISEL-NEXT:    v_pk_max_num_f16 v9, v12, v12 | 
|  | ; GFX12-GISEL-NEXT:    v_pk_max_num_f16 v5, v5, v5 | 
|  | ; GFX12-GISEL-NEXT:    v_pk_max_num_f16 v10, v13, v13 | 
|  | ; GFX12-GISEL-NEXT:    v_pk_max_num_f16 v6, v6, v6 | 
|  | ; GFX12-GISEL-NEXT:    v_pk_max_num_f16 v11, v14, v14 | 
|  | ; GFX12-GISEL-NEXT:    v_pk_max_num_f16 v7, v7, v7 | 
|  | ; GFX12-GISEL-NEXT:    v_pk_max_num_f16 v12, v15, v15 | 
|  | ; GFX12-GISEL-NEXT:    v_pk_min_num_f16 v3, v3, v8 | 
|  | ; GFX12-GISEL-NEXT:    v_pk_min_num_f16 v4, v4, v9 | 
|  | ; GFX12-GISEL-NEXT:    v_pk_min_num_f16 v5, v5, v10 | 
|  | ; GFX12-GISEL-NEXT:    v_pk_min_num_f16 v6, v6, v11 | 
|  | ; GFX12-GISEL-NEXT:    v_pk_min_num_f16 v7, v7, v12 | 
|  | ; GFX12-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | %result = call <16 x half> @llvm.minimumnum.v16f16(<16 x half> %x, <16 x half> %y) | 
|  | ret <16 x half> %result | 
|  | } | 
|  |  | 
|  | define <32 x half> @v_minimumnum_v32f16(<32 x half> %x, <32 x half> %y) { | 
|  | ; GFX7-SDAG-LABEL: v_minimumnum_v32f16: | 
|  | ; GFX7-SDAG:       ; %bb.0: | 
|  | ; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX7-SDAG-NEXT:    buffer_load_dword v31, off, s[0:3], s32 offset:4 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v0, v0 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v1, v1 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v2, v2 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v3, v3 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v0, v0 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v1, v1 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v2, v2 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v3, v3 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v4, v4 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v5, v5 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v6, v6 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v7, v7 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v4, v4 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v5, v5 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v6, v6 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v7, v7 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v8, v8 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v9, v9 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v10, v10 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v11, v11 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v8, v8 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v9, v9 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v10, v10 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v11, v11 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v12, v12 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v13, v13 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v14, v14 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v15, v15 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v12, v12 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v13, v13 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v14, v14 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v15, v15 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v16, v16 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v17, v17 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v18, v18 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v19, v19 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v16, v16 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v17, v17 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v18, v18 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v19, v19 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v20, v20 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v21, v21 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v22, v22 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v23, v23 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v20, v20 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v21, v21 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v22, v22 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v23, v23 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v24, v24 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v25, v25 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v26, v26 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v27, v27 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v24, v24 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v25, v25 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v26, v26 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v27, v27 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v28, v28 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v29, v29 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v30, v30 | 
|  | ; GFX7-SDAG-NEXT:    buffer_load_dword v32, off, s[0:3], s32 offset:128 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v28, v28 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v29, v29 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v30, v30 | 
|  | ; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(1) | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v31, v31 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v31, v31 | 
|  | ; GFX7-SDAG-NEXT:    v_min_f32_e32 v0, v0, v31 | 
|  | ; GFX7-SDAG-NEXT:    buffer_load_dword v31, off, s[0:3], s32 offset:8 | 
|  | ; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(1) | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v32, v32 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v32, v32 | 
|  | ; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0) | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v31, v31 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v31, v31 | 
|  | ; GFX7-SDAG-NEXT:    v_min_f32_e32 v1, v1, v31 | 
|  | ; GFX7-SDAG-NEXT:    buffer_load_dword v31, off, s[0:3], s32 offset:12 | 
|  | ; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0) | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v31, v31 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v31, v31 | 
|  | ; GFX7-SDAG-NEXT:    v_min_f32_e32 v2, v2, v31 | 
|  | ; GFX7-SDAG-NEXT:    buffer_load_dword v31, off, s[0:3], s32 offset:16 | 
|  | ; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0) | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v31, v31 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v31, v31 | 
|  | ; GFX7-SDAG-NEXT:    v_min_f32_e32 v3, v3, v31 | 
|  | ; GFX7-SDAG-NEXT:    buffer_load_dword v31, off, s[0:3], s32 offset:20 | 
|  | ; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0) | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v31, v31 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v31, v31 | 
|  | ; GFX7-SDAG-NEXT:    v_min_f32_e32 v4, v4, v31 | 
|  | ; GFX7-SDAG-NEXT:    buffer_load_dword v31, off, s[0:3], s32 offset:24 | 
|  | ; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0) | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v31, v31 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v31, v31 | 
|  | ; GFX7-SDAG-NEXT:    v_min_f32_e32 v5, v5, v31 | 
|  | ; GFX7-SDAG-NEXT:    buffer_load_dword v31, off, s[0:3], s32 offset:28 | 
|  | ; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0) | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v31, v31 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v31, v31 | 
|  | ; GFX7-SDAG-NEXT:    v_min_f32_e32 v6, v6, v31 | 
|  | ; GFX7-SDAG-NEXT:    buffer_load_dword v31, off, s[0:3], s32 offset:32 | 
|  | ; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0) | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v31, v31 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v31, v31 | 
|  | ; GFX7-SDAG-NEXT:    v_min_f32_e32 v7, v7, v31 | 
|  | ; GFX7-SDAG-NEXT:    buffer_load_dword v31, off, s[0:3], s32 offset:36 | 
|  | ; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0) | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v31, v31 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v31, v31 | 
|  | ; GFX7-SDAG-NEXT:    v_min_f32_e32 v8, v8, v31 | 
|  | ; GFX7-SDAG-NEXT:    buffer_load_dword v31, off, s[0:3], s32 offset:40 | 
|  | ; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0) | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v31, v31 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v31, v31 | 
|  | ; GFX7-SDAG-NEXT:    v_min_f32_e32 v9, v9, v31 | 
|  | ; GFX7-SDAG-NEXT:    buffer_load_dword v31, off, s[0:3], s32 offset:44 | 
|  | ; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0) | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v31, v31 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v31, v31 | 
|  | ; GFX7-SDAG-NEXT:    v_min_f32_e32 v10, v10, v31 | 
|  | ; GFX7-SDAG-NEXT:    buffer_load_dword v31, off, s[0:3], s32 offset:48 | 
|  | ; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0) | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v31, v31 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v31, v31 | 
|  | ; GFX7-SDAG-NEXT:    v_min_f32_e32 v11, v11, v31 | 
|  | ; GFX7-SDAG-NEXT:    buffer_load_dword v31, off, s[0:3], s32 offset:52 | 
|  | ; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0) | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v31, v31 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v31, v31 | 
|  | ; GFX7-SDAG-NEXT:    v_min_f32_e32 v12, v12, v31 | 
|  | ; GFX7-SDAG-NEXT:    buffer_load_dword v31, off, s[0:3], s32 offset:56 | 
|  | ; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0) | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v31, v31 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v31, v31 | 
|  | ; GFX7-SDAG-NEXT:    v_min_f32_e32 v13, v13, v31 | 
|  | ; GFX7-SDAG-NEXT:    buffer_load_dword v31, off, s[0:3], s32 offset:60 | 
|  | ; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0) | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v31, v31 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v31, v31 | 
|  | ; GFX7-SDAG-NEXT:    v_min_f32_e32 v14, v14, v31 | 
|  | ; GFX7-SDAG-NEXT:    buffer_load_dword v31, off, s[0:3], s32 offset:64 | 
|  | ; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0) | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v31, v31 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v31, v31 | 
|  | ; GFX7-SDAG-NEXT:    v_min_f32_e32 v15, v15, v31 | 
|  | ; GFX7-SDAG-NEXT:    buffer_load_dword v31, off, s[0:3], s32 offset:68 | 
|  | ; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0) | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v31, v31 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v31, v31 | 
|  | ; GFX7-SDAG-NEXT:    v_min_f32_e32 v16, v16, v31 | 
|  | ; GFX7-SDAG-NEXT:    buffer_load_dword v31, off, s[0:3], s32 offset:72 | 
|  | ; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0) | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v31, v31 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v31, v31 | 
|  | ; GFX7-SDAG-NEXT:    v_min_f32_e32 v17, v17, v31 | 
|  | ; GFX7-SDAG-NEXT:    buffer_load_dword v31, off, s[0:3], s32 offset:76 | 
|  | ; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0) | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v31, v31 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v31, v31 | 
|  | ; GFX7-SDAG-NEXT:    v_min_f32_e32 v18, v18, v31 | 
|  | ; GFX7-SDAG-NEXT:    buffer_load_dword v31, off, s[0:3], s32 offset:80 | 
|  | ; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0) | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v31, v31 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v31, v31 | 
|  | ; GFX7-SDAG-NEXT:    v_min_f32_e32 v19, v19, v31 | 
|  | ; GFX7-SDAG-NEXT:    buffer_load_dword v31, off, s[0:3], s32 offset:84 | 
|  | ; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0) | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v31, v31 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v31, v31 | 
|  | ; GFX7-SDAG-NEXT:    v_min_f32_e32 v20, v20, v31 | 
|  | ; GFX7-SDAG-NEXT:    buffer_load_dword v31, off, s[0:3], s32 offset:88 | 
|  | ; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0) | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v31, v31 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v31, v31 | 
|  | ; GFX7-SDAG-NEXT:    v_min_f32_e32 v21, v21, v31 | 
|  | ; GFX7-SDAG-NEXT:    buffer_load_dword v31, off, s[0:3], s32 offset:92 | 
|  | ; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0) | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v31, v31 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v31, v31 | 
|  | ; GFX7-SDAG-NEXT:    v_min_f32_e32 v22, v22, v31 | 
|  | ; GFX7-SDAG-NEXT:    buffer_load_dword v31, off, s[0:3], s32 offset:96 | 
|  | ; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0) | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v31, v31 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v31, v31 | 
|  | ; GFX7-SDAG-NEXT:    v_min_f32_e32 v23, v23, v31 | 
|  | ; GFX7-SDAG-NEXT:    buffer_load_dword v31, off, s[0:3], s32 offset:100 | 
|  | ; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0) | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v31, v31 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v31, v31 | 
|  | ; GFX7-SDAG-NEXT:    v_min_f32_e32 v24, v24, v31 | 
|  | ; GFX7-SDAG-NEXT:    buffer_load_dword v31, off, s[0:3], s32 offset:104 | 
|  | ; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0) | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v31, v31 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v31, v31 | 
|  | ; GFX7-SDAG-NEXT:    v_min_f32_e32 v25, v25, v31 | 
|  | ; GFX7-SDAG-NEXT:    buffer_load_dword v31, off, s[0:3], s32 offset:108 | 
|  | ; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0) | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v31, v31 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v31, v31 | 
|  | ; GFX7-SDAG-NEXT:    v_min_f32_e32 v26, v26, v31 | 
|  | ; GFX7-SDAG-NEXT:    buffer_load_dword v31, off, s[0:3], s32 offset:112 | 
|  | ; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0) | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v31, v31 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v31, v31 | 
|  | ; GFX7-SDAG-NEXT:    v_min_f32_e32 v27, v27, v31 | 
|  | ; GFX7-SDAG-NEXT:    buffer_load_dword v31, off, s[0:3], s32 offset:116 | 
|  | ; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0) | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v31, v31 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v31, v31 | 
|  | ; GFX7-SDAG-NEXT:    v_min_f32_e32 v28, v28, v31 | 
|  | ; GFX7-SDAG-NEXT:    buffer_load_dword v31, off, s[0:3], s32 offset:120 | 
|  | ; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0) | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v31, v31 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v31, v31 | 
|  | ; GFX7-SDAG-NEXT:    v_min_f32_e32 v29, v29, v31 | 
|  | ; GFX7-SDAG-NEXT:    buffer_load_dword v31, off, s[0:3], s32 offset:124 | 
|  | ; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0) | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v31, v31 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v31, v31 | 
|  | ; GFX7-SDAG-NEXT:    v_min_f32_e32 v30, v30, v31 | 
|  | ; GFX7-SDAG-NEXT:    buffer_load_dword v31, off, s[0:3], s32 | 
|  | ; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0) | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v31, v31 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v31, v31 | 
|  | ; GFX7-SDAG-NEXT:    v_min_f32_e32 v31, v31, v32 | 
|  | ; GFX7-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX7-GISEL-LABEL: v_minimumnum_v32f16: | 
|  | ; GFX7-GISEL:       ; %bb.0: | 
|  | ; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX7-GISEL-NEXT:    buffer_load_dword v31, off, s[0:3], s32 offset:4 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v0, v0 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v1, v1 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v2, v2 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v3, v3 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v4, v4 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v5, v5 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v6, v6 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v7, v7 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v8, v8 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v9, v9 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v10, v10 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v11, v11 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v12, v12 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v13, v13 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v14, v14 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v15, v15 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v16, v16 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v17, v17 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v18, v18 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v19, v19 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v20, v20 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v21, v21 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v22, v22 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v23, v23 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v24, v24 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v25, v25 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v26, v26 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v27, v27 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v28, v28 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v29, v29 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v30, v30 | 
|  | ; GFX7-GISEL-NEXT:    buffer_load_dword v32, off, s[0:3], s32 offset:128 | 
|  | ; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(1) | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v31, v31 | 
|  | ; GFX7-GISEL-NEXT:    v_min_f32_e32 v0, v0, v31 | 
|  | ; GFX7-GISEL-NEXT:    buffer_load_dword v31, off, s[0:3], s32 offset:8 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f16_f32_e32 v0, v0 | 
|  | ; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(1) | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v32, v32 | 
|  | ; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0) | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v31, v31 | 
|  | ; GFX7-GISEL-NEXT:    v_min_f32_e32 v1, v1, v31 | 
|  | ; GFX7-GISEL-NEXT:    buffer_load_dword v31, off, s[0:3], s32 offset:12 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f16_f32_e32 v1, v1 | 
|  | ; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0) | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v31, v31 | 
|  | ; GFX7-GISEL-NEXT:    v_min_f32_e32 v2, v2, v31 | 
|  | ; GFX7-GISEL-NEXT:    buffer_load_dword v31, off, s[0:3], s32 offset:16 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f16_f32_e32 v2, v2 | 
|  | ; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0) | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v31, v31 | 
|  | ; GFX7-GISEL-NEXT:    v_min_f32_e32 v3, v3, v31 | 
|  | ; GFX7-GISEL-NEXT:    buffer_load_dword v31, off, s[0:3], s32 offset:20 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f16_f32_e32 v3, v3 | 
|  | ; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0) | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v31, v31 | 
|  | ; GFX7-GISEL-NEXT:    v_min_f32_e32 v4, v4, v31 | 
|  | ; GFX7-GISEL-NEXT:    buffer_load_dword v31, off, s[0:3], s32 offset:24 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f16_f32_e32 v4, v4 | 
|  | ; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0) | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v31, v31 | 
|  | ; GFX7-GISEL-NEXT:    v_min_f32_e32 v5, v5, v31 | 
|  | ; GFX7-GISEL-NEXT:    buffer_load_dword v31, off, s[0:3], s32 offset:28 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f16_f32_e32 v5, v5 | 
|  | ; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0) | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v31, v31 | 
|  | ; GFX7-GISEL-NEXT:    v_min_f32_e32 v6, v6, v31 | 
|  | ; GFX7-GISEL-NEXT:    buffer_load_dword v31, off, s[0:3], s32 offset:32 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f16_f32_e32 v6, v6 | 
|  | ; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0) | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v31, v31 | 
|  | ; GFX7-GISEL-NEXT:    v_min_f32_e32 v7, v7, v31 | 
|  | ; GFX7-GISEL-NEXT:    buffer_load_dword v31, off, s[0:3], s32 offset:36 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f16_f32_e32 v7, v7 | 
|  | ; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0) | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v31, v31 | 
|  | ; GFX7-GISEL-NEXT:    v_min_f32_e32 v8, v8, v31 | 
|  | ; GFX7-GISEL-NEXT:    buffer_load_dword v31, off, s[0:3], s32 offset:40 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f16_f32_e32 v8, v8 | 
|  | ; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0) | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v31, v31 | 
|  | ; GFX7-GISEL-NEXT:    v_min_f32_e32 v9, v9, v31 | 
|  | ; GFX7-GISEL-NEXT:    buffer_load_dword v31, off, s[0:3], s32 offset:44 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f16_f32_e32 v9, v9 | 
|  | ; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0) | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v31, v31 | 
|  | ; GFX7-GISEL-NEXT:    v_min_f32_e32 v10, v10, v31 | 
|  | ; GFX7-GISEL-NEXT:    buffer_load_dword v31, off, s[0:3], s32 offset:48 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f16_f32_e32 v10, v10 | 
|  | ; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0) | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v31, v31 | 
|  | ; GFX7-GISEL-NEXT:    v_min_f32_e32 v11, v11, v31 | 
|  | ; GFX7-GISEL-NEXT:    buffer_load_dword v31, off, s[0:3], s32 offset:52 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f16_f32_e32 v11, v11 | 
|  | ; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0) | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v31, v31 | 
|  | ; GFX7-GISEL-NEXT:    v_min_f32_e32 v12, v12, v31 | 
|  | ; GFX7-GISEL-NEXT:    buffer_load_dword v31, off, s[0:3], s32 offset:56 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f16_f32_e32 v12, v12 | 
|  | ; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0) | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v31, v31 | 
|  | ; GFX7-GISEL-NEXT:    v_min_f32_e32 v13, v13, v31 | 
|  | ; GFX7-GISEL-NEXT:    buffer_load_dword v31, off, s[0:3], s32 offset:60 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f16_f32_e32 v13, v13 | 
|  | ; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0) | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v31, v31 | 
|  | ; GFX7-GISEL-NEXT:    v_min_f32_e32 v14, v14, v31 | 
|  | ; GFX7-GISEL-NEXT:    buffer_load_dword v31, off, s[0:3], s32 offset:64 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f16_f32_e32 v14, v14 | 
|  | ; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0) | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v31, v31 | 
|  | ; GFX7-GISEL-NEXT:    v_min_f32_e32 v15, v15, v31 | 
|  | ; GFX7-GISEL-NEXT:    buffer_load_dword v31, off, s[0:3], s32 offset:68 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f16_f32_e32 v15, v15 | 
|  | ; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0) | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v31, v31 | 
|  | ; GFX7-GISEL-NEXT:    v_min_f32_e32 v16, v16, v31 | 
|  | ; GFX7-GISEL-NEXT:    buffer_load_dword v31, off, s[0:3], s32 offset:72 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f16_f32_e32 v16, v16 | 
|  | ; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0) | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v31, v31 | 
|  | ; GFX7-GISEL-NEXT:    v_min_f32_e32 v17, v17, v31 | 
|  | ; GFX7-GISEL-NEXT:    buffer_load_dword v31, off, s[0:3], s32 offset:76 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f16_f32_e32 v17, v17 | 
|  | ; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0) | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v31, v31 | 
|  | ; GFX7-GISEL-NEXT:    v_min_f32_e32 v18, v18, v31 | 
|  | ; GFX7-GISEL-NEXT:    buffer_load_dword v31, off, s[0:3], s32 offset:80 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f16_f32_e32 v18, v18 | 
|  | ; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0) | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v31, v31 | 
|  | ; GFX7-GISEL-NEXT:    v_min_f32_e32 v19, v19, v31 | 
|  | ; GFX7-GISEL-NEXT:    buffer_load_dword v31, off, s[0:3], s32 offset:84 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f16_f32_e32 v19, v19 | 
|  | ; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0) | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v31, v31 | 
|  | ; GFX7-GISEL-NEXT:    v_min_f32_e32 v20, v20, v31 | 
|  | ; GFX7-GISEL-NEXT:    buffer_load_dword v31, off, s[0:3], s32 offset:88 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f16_f32_e32 v20, v20 | 
|  | ; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0) | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v31, v31 | 
|  | ; GFX7-GISEL-NEXT:    v_min_f32_e32 v21, v21, v31 | 
|  | ; GFX7-GISEL-NEXT:    buffer_load_dword v31, off, s[0:3], s32 offset:92 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f16_f32_e32 v21, v21 | 
|  | ; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0) | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v31, v31 | 
|  | ; GFX7-GISEL-NEXT:    v_min_f32_e32 v22, v22, v31 | 
|  | ; GFX7-GISEL-NEXT:    buffer_load_dword v31, off, s[0:3], s32 offset:96 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f16_f32_e32 v22, v22 | 
|  | ; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0) | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v31, v31 | 
|  | ; GFX7-GISEL-NEXT:    v_min_f32_e32 v23, v23, v31 | 
|  | ; GFX7-GISEL-NEXT:    buffer_load_dword v31, off, s[0:3], s32 offset:100 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f16_f32_e32 v23, v23 | 
|  | ; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0) | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v31, v31 | 
|  | ; GFX7-GISEL-NEXT:    v_min_f32_e32 v24, v24, v31 | 
|  | ; GFX7-GISEL-NEXT:    buffer_load_dword v31, off, s[0:3], s32 offset:104 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f16_f32_e32 v24, v24 | 
|  | ; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0) | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v31, v31 | 
|  | ; GFX7-GISEL-NEXT:    v_min_f32_e32 v25, v25, v31 | 
|  | ; GFX7-GISEL-NEXT:    buffer_load_dword v31, off, s[0:3], s32 offset:108 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f16_f32_e32 v25, v25 | 
|  | ; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0) | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v31, v31 | 
|  | ; GFX7-GISEL-NEXT:    v_min_f32_e32 v26, v26, v31 | 
|  | ; GFX7-GISEL-NEXT:    buffer_load_dword v31, off, s[0:3], s32 offset:112 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f16_f32_e32 v26, v26 | 
|  | ; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0) | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v31, v31 | 
|  | ; GFX7-GISEL-NEXT:    v_min_f32_e32 v27, v27, v31 | 
|  | ; GFX7-GISEL-NEXT:    buffer_load_dword v31, off, s[0:3], s32 offset:116 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f16_f32_e32 v27, v27 | 
|  | ; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0) | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v31, v31 | 
|  | ; GFX7-GISEL-NEXT:    v_min_f32_e32 v28, v28, v31 | 
|  | ; GFX7-GISEL-NEXT:    buffer_load_dword v31, off, s[0:3], s32 offset:120 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f16_f32_e32 v28, v28 | 
|  | ; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0) | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v31, v31 | 
|  | ; GFX7-GISEL-NEXT:    v_min_f32_e32 v29, v29, v31 | 
|  | ; GFX7-GISEL-NEXT:    buffer_load_dword v31, off, s[0:3], s32 offset:124 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f16_f32_e32 v29, v29 | 
|  | ; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0) | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v31, v31 | 
|  | ; GFX7-GISEL-NEXT:    v_min_f32_e32 v30, v30, v31 | 
|  | ; GFX7-GISEL-NEXT:    buffer_load_dword v31, off, s[0:3], s32 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f16_f32_e32 v30, v30 | 
|  | ; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0) | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v31, v31 | 
|  | ; GFX7-GISEL-NEXT:    v_min_f32_e32 v31, v31, v32 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f16_f32_e32 v31, v31 | 
|  | ; GFX7-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX8-SDAG-LABEL: v_minimumnum_v32f16: | 
|  | ; GFX8-SDAG:       ; %bb.0: | 
|  | ; GFX8-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX8-SDAG-NEXT:    buffer_store_dword v40, off, s[0:3], s32 offset:48 ; 4-byte Folded Spill | 
|  | ; GFX8-SDAG-NEXT:    buffer_store_dword v41, off, s[0:3], s32 offset:44 ; 4-byte Folded Spill | 
|  | ; GFX8-SDAG-NEXT:    buffer_store_dword v42, off, s[0:3], s32 offset:40 ; 4-byte Folded Spill | 
|  | ; GFX8-SDAG-NEXT:    buffer_store_dword v43, off, s[0:3], s32 offset:36 ; 4-byte Folded Spill | 
|  | ; GFX8-SDAG-NEXT:    buffer_store_dword v44, off, s[0:3], s32 offset:32 ; 4-byte Folded Spill | 
|  | ; GFX8-SDAG-NEXT:    buffer_store_dword v45, off, s[0:3], s32 offset:28 ; 4-byte Folded Spill | 
|  | ; GFX8-SDAG-NEXT:    buffer_store_dword v46, off, s[0:3], s32 offset:24 ; 4-byte Folded Spill | 
|  | ; GFX8-SDAG-NEXT:    buffer_store_dword v47, off, s[0:3], s32 offset:20 ; 4-byte Folded Spill | 
|  | ; GFX8-SDAG-NEXT:    buffer_store_dword v56, off, s[0:3], s32 offset:16 ; 4-byte Folded Spill | 
|  | ; GFX8-SDAG-NEXT:    buffer_store_dword v57, off, s[0:3], s32 offset:12 ; 4-byte Folded Spill | 
|  | ; GFX8-SDAG-NEXT:    buffer_store_dword v58, off, s[0:3], s32 offset:8 ; 4-byte Folded Spill | 
|  | ; GFX8-SDAG-NEXT:    buffer_store_dword v59, off, s[0:3], s32 offset:4 ; 4-byte Folded Spill | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_sdwa v38, v27, v27 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_sdwa v39, v11, v11 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_sdwa v48, v26, v26 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_sdwa v49, v10, v10 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_sdwa v50, v25, v25 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_sdwa v51, v9, v9 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_sdwa v40, v22, v22 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_sdwa v41, v6, v6 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_sdwa v58, v17, v17 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_sdwa v59, v1, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_e32 v17, v17, v17 | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_e32 v1, v1, v1 | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_sdwa v52, v24, v24 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_sdwa v53, v8, v8 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_sdwa v54, v23, v23 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_sdwa v55, v7, v7 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_sdwa v42, v21, v21 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_sdwa v43, v5, v5 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_sdwa v44, v20, v20 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_sdwa v45, v4, v4 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_sdwa v46, v19, v19 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_sdwa v47, v3, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_sdwa v56, v18, v18 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_sdwa v57, v2, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-SDAG-NEXT:    v_min_f16_sdwa v38, v39, v38 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD | 
|  | ; GFX8-SDAG-NEXT:    v_min_f16_sdwa v39, v49, v48 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD | 
|  | ; GFX8-SDAG-NEXT:    v_min_f16_sdwa v48, v51, v50 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD | 
|  | ; GFX8-SDAG-NEXT:    v_min_f16_sdwa v51, v41, v40 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD | 
|  | ; GFX8-SDAG-NEXT:    v_min_f16_sdwa v40, v59, v58 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD | 
|  | ; GFX8-SDAG-NEXT:    v_min_f16_e32 v1, v1, v17 | 
|  | ; GFX8-SDAG-NEXT:    v_min_f16_sdwa v49, v53, v52 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD | 
|  | ; GFX8-SDAG-NEXT:    v_min_f16_sdwa v50, v55, v54 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD | 
|  | ; GFX8-SDAG-NEXT:    v_min_f16_sdwa v52, v43, v42 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD | 
|  | ; GFX8-SDAG-NEXT:    v_min_f16_sdwa v53, v45, v44 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD | 
|  | ; GFX8-SDAG-NEXT:    v_min_f16_sdwa v54, v47, v46 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD | 
|  | ; GFX8-SDAG-NEXT:    v_min_f16_sdwa v55, v57, v56 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD | 
|  | ; GFX8-SDAG-NEXT:    v_or_b32_e32 v1, v1, v40 | 
|  | ; GFX8-SDAG-NEXT:    buffer_load_dword v59, off, s[0:3], s32 offset:4 ; 4-byte Folded Reload | 
|  | ; GFX8-SDAG-NEXT:    buffer_load_dword v58, off, s[0:3], s32 offset:8 ; 4-byte Folded Reload | 
|  | ; GFX8-SDAG-NEXT:    buffer_load_dword v57, off, s[0:3], s32 offset:12 ; 4-byte Folded Reload | 
|  | ; GFX8-SDAG-NEXT:    buffer_load_dword v56, off, s[0:3], s32 offset:16 ; 4-byte Folded Reload | 
|  | ; GFX8-SDAG-NEXT:    buffer_load_dword v47, off, s[0:3], s32 offset:20 ; 4-byte Folded Reload | 
|  | ; GFX8-SDAG-NEXT:    buffer_load_dword v46, off, s[0:3], s32 offset:24 ; 4-byte Folded Reload | 
|  | ; GFX8-SDAG-NEXT:    buffer_load_dword v45, off, s[0:3], s32 offset:28 ; 4-byte Folded Reload | 
|  | ; GFX8-SDAG-NEXT:    buffer_load_dword v44, off, s[0:3], s32 offset:32 ; 4-byte Folded Reload | 
|  | ; GFX8-SDAG-NEXT:    buffer_load_dword v43, off, s[0:3], s32 offset:36 ; 4-byte Folded Reload | 
|  | ; GFX8-SDAG-NEXT:    buffer_load_dword v42, off, s[0:3], s32 offset:40 ; 4-byte Folded Reload | 
|  | ; GFX8-SDAG-NEXT:    buffer_load_dword v41, off, s[0:3], s32 offset:44 ; 4-byte Folded Reload | 
|  | ; GFX8-SDAG-NEXT:    buffer_load_dword v40, off, s[0:3], s32 offset:48 ; 4-byte Folded Reload | 
|  | ; GFX8-SDAG-NEXT:    buffer_load_dword v31, off, s[0:3], s32 | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_sdwa v32, v30, v30 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_sdwa v33, v14, v14 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_sdwa v34, v29, v29 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_sdwa v35, v13, v13 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_sdwa v36, v28, v28 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_sdwa v37, v12, v12 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-SDAG-NEXT:    v_min_f16_sdwa v32, v33, v32 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_sdwa v33, v16, v16 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-SDAG-NEXT:    v_min_f16_sdwa v34, v35, v34 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_sdwa v35, v0, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-SDAG-NEXT:    v_min_f16_sdwa v36, v37, v36 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_sdwa v37, v15, v15 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_e32 v15, v15, v15 | 
|  | ; GFX8-SDAG-NEXT:    v_min_f16_sdwa v33, v35, v33 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_e32 v30, v30, v30 | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_e32 v14, v14, v14 | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_e32 v29, v29, v29 | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_e32 v13, v13, v13 | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_e32 v28, v28, v28 | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_e32 v12, v12, v12 | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_e32 v27, v27, v27 | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_e32 v11, v11, v11 | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_e32 v26, v26, v26 | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_e32 v10, v10, v10 | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_e32 v25, v25, v25 | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_e32 v9, v9, v9 | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_e32 v24, v24, v24 | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_e32 v8, v8, v8 | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_e32 v23, v23, v23 | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_e32 v7, v7, v7 | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_e32 v22, v22, v22 | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_e32 v6, v6, v6 | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_e32 v21, v21, v21 | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_e32 v5, v5, v5 | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_e32 v20, v20, v20 | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_e32 v4, v4, v4 | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_e32 v19, v19, v19 | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_e32 v3, v3, v3 | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_e32 v18, v18, v18 | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_e32 v2, v2, v2 | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_e32 v16, v16, v16 | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_e32 v0, v0, v0 | 
|  | ; GFX8-SDAG-NEXT:    v_min_f16_e32 v14, v14, v30 | 
|  | ; GFX8-SDAG-NEXT:    v_min_f16_e32 v13, v13, v29 | 
|  | ; GFX8-SDAG-NEXT:    v_min_f16_e32 v12, v12, v28 | 
|  | ; GFX8-SDAG-NEXT:    v_min_f16_e32 v11, v11, v27 | 
|  | ; GFX8-SDAG-NEXT:    v_min_f16_e32 v10, v10, v26 | 
|  | ; GFX8-SDAG-NEXT:    v_min_f16_e32 v9, v9, v25 | 
|  | ; GFX8-SDAG-NEXT:    v_min_f16_e32 v8, v8, v24 | 
|  | ; GFX8-SDAG-NEXT:    v_min_f16_e32 v7, v7, v23 | 
|  | ; GFX8-SDAG-NEXT:    v_min_f16_e32 v6, v6, v22 | 
|  | ; GFX8-SDAG-NEXT:    v_min_f16_e32 v5, v5, v21 | 
|  | ; GFX8-SDAG-NEXT:    v_min_f16_e32 v4, v4, v20 | 
|  | ; GFX8-SDAG-NEXT:    v_min_f16_e32 v3, v3, v19 | 
|  | ; GFX8-SDAG-NEXT:    v_min_f16_e32 v2, v2, v18 | 
|  | ; GFX8-SDAG-NEXT:    v_min_f16_e32 v0, v0, v16 | 
|  | ; GFX8-SDAG-NEXT:    v_or_b32_e32 v0, v0, v33 | 
|  | ; GFX8-SDAG-NEXT:    v_or_b32_e32 v2, v2, v55 | 
|  | ; GFX8-SDAG-NEXT:    v_or_b32_e32 v3, v3, v54 | 
|  | ; GFX8-SDAG-NEXT:    v_or_b32_e32 v4, v4, v53 | 
|  | ; GFX8-SDAG-NEXT:    v_or_b32_e32 v5, v5, v52 | 
|  | ; GFX8-SDAG-NEXT:    v_or_b32_e32 v6, v6, v51 | 
|  | ; GFX8-SDAG-NEXT:    v_or_b32_e32 v7, v7, v50 | 
|  | ; GFX8-SDAG-NEXT:    v_or_b32_e32 v8, v8, v49 | 
|  | ; GFX8-SDAG-NEXT:    v_or_b32_e32 v9, v9, v48 | 
|  | ; GFX8-SDAG-NEXT:    v_or_b32_e32 v10, v10, v39 | 
|  | ; GFX8-SDAG-NEXT:    v_or_b32_e32 v11, v11, v38 | 
|  | ; GFX8-SDAG-NEXT:    v_or_b32_e32 v12, v12, v36 | 
|  | ; GFX8-SDAG-NEXT:    v_or_b32_e32 v13, v13, v34 | 
|  | ; GFX8-SDAG-NEXT:    v_or_b32_e32 v14, v14, v32 | 
|  | ; GFX8-SDAG-NEXT:    s_waitcnt vmcnt(0) | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_sdwa v35, v31, v31 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-SDAG-NEXT:    v_max_f16_e32 v31, v31, v31 | 
|  | ; GFX8-SDAG-NEXT:    v_min_f16_sdwa v35, v37, v35 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD | 
|  | ; GFX8-SDAG-NEXT:    v_min_f16_e32 v15, v15, v31 | 
|  | ; GFX8-SDAG-NEXT:    v_or_b32_e32 v15, v15, v35 | 
|  | ; GFX8-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX8-GISEL-LABEL: v_minimumnum_v32f16: | 
|  | ; GFX8-GISEL:       ; %bb.0: | 
|  | ; GFX8-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_e32 v31, v0, v0 | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_e32 v32, v16, v16 | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_sdwa v0, v0, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_sdwa v16, v16, v16 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-GISEL-NEXT:    v_min_f16_e32 v31, v31, v32 | 
|  | ; GFX8-GISEL-NEXT:    v_min_f16_sdwa v0, v0, v16 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_e32 v16, v1, v1 | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_e32 v32, v17, v17 | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_sdwa v1, v1, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_sdwa v17, v17, v17 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-GISEL-NEXT:    v_min_f16_e32 v16, v16, v32 | 
|  | ; GFX8-GISEL-NEXT:    v_min_f16_sdwa v1, v1, v17 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_e32 v17, v2, v2 | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_e32 v32, v18, v18 | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_sdwa v2, v2, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_sdwa v18, v18, v18 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-GISEL-NEXT:    v_min_f16_e32 v17, v17, v32 | 
|  | ; GFX8-GISEL-NEXT:    v_min_f16_sdwa v2, v2, v18 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_e32 v18, v3, v3 | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_e32 v32, v19, v19 | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_sdwa v3, v3, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_sdwa v19, v19, v19 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-GISEL-NEXT:    v_min_f16_e32 v18, v18, v32 | 
|  | ; GFX8-GISEL-NEXT:    v_min_f16_sdwa v3, v3, v19 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_e32 v19, v4, v4 | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_e32 v32, v20, v20 | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_sdwa v4, v4, v4 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_sdwa v20, v20, v20 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-GISEL-NEXT:    v_min_f16_e32 v19, v19, v32 | 
|  | ; GFX8-GISEL-NEXT:    v_min_f16_sdwa v4, v4, v20 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_e32 v20, v5, v5 | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_e32 v32, v21, v21 | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_sdwa v5, v5, v5 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_sdwa v21, v21, v21 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-GISEL-NEXT:    v_min_f16_e32 v20, v20, v32 | 
|  | ; GFX8-GISEL-NEXT:    v_min_f16_sdwa v5, v5, v21 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_e32 v21, v6, v6 | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_e32 v32, v22, v22 | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_sdwa v6, v6, v6 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_sdwa v22, v22, v22 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-GISEL-NEXT:    v_min_f16_e32 v21, v21, v32 | 
|  | ; GFX8-GISEL-NEXT:    v_min_f16_sdwa v6, v6, v22 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_e32 v22, v7, v7 | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_e32 v32, v23, v23 | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_sdwa v7, v7, v7 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_sdwa v23, v23, v23 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-GISEL-NEXT:    v_min_f16_e32 v22, v22, v32 | 
|  | ; GFX8-GISEL-NEXT:    v_min_f16_sdwa v7, v7, v23 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_e32 v23, v8, v8 | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_e32 v32, v24, v24 | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_sdwa v8, v8, v8 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_sdwa v24, v24, v24 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-GISEL-NEXT:    v_min_f16_e32 v23, v23, v32 | 
|  | ; GFX8-GISEL-NEXT:    v_min_f16_sdwa v8, v8, v24 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_e32 v24, v9, v9 | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_e32 v32, v25, v25 | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_sdwa v9, v9, v9 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_sdwa v25, v25, v25 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-GISEL-NEXT:    v_min_f16_e32 v24, v24, v32 | 
|  | ; GFX8-GISEL-NEXT:    v_min_f16_sdwa v9, v9, v25 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_e32 v25, v10, v10 | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_e32 v32, v26, v26 | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_sdwa v10, v10, v10 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_sdwa v26, v26, v26 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-GISEL-NEXT:    v_min_f16_e32 v25, v25, v32 | 
|  | ; GFX8-GISEL-NEXT:    v_min_f16_sdwa v10, v10, v26 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_e32 v26, v11, v11 | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_e32 v32, v27, v27 | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_sdwa v11, v11, v11 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_sdwa v27, v27, v27 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-GISEL-NEXT:    v_min_f16_e32 v26, v26, v32 | 
|  | ; GFX8-GISEL-NEXT:    v_min_f16_sdwa v11, v11, v27 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_e32 v27, v12, v12 | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_e32 v32, v28, v28 | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_sdwa v12, v12, v12 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_sdwa v28, v28, v28 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-GISEL-NEXT:    v_min_f16_e32 v27, v27, v32 | 
|  | ; GFX8-GISEL-NEXT:    v_min_f16_sdwa v12, v12, v28 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_e32 v28, v13, v13 | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_e32 v32, v29, v29 | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_sdwa v13, v13, v13 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_sdwa v29, v29, v29 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-GISEL-NEXT:    v_min_f16_e32 v28, v28, v32 | 
|  | ; GFX8-GISEL-NEXT:    v_min_f16_sdwa v13, v13, v29 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_e32 v29, v14, v14 | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_e32 v32, v30, v30 | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_sdwa v14, v14, v14 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_sdwa v30, v30, v30 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-GISEL-NEXT:    v_min_f16_sdwa v14, v14, v30 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD | 
|  | ; GFX8-GISEL-NEXT:    buffer_load_dword v30, off, s[0:3], s32 | 
|  | ; GFX8-GISEL-NEXT:    v_min_f16_e32 v29, v29, v32 | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_e32 v32, v15, v15 | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_sdwa v15, v15, v15 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-GISEL-NEXT:    v_or_b32_e32 v0, v31, v0 | 
|  | ; GFX8-GISEL-NEXT:    v_or_b32_e32 v1, v16, v1 | 
|  | ; GFX8-GISEL-NEXT:    v_or_b32_e32 v2, v17, v2 | 
|  | ; GFX8-GISEL-NEXT:    v_or_b32_e32 v3, v18, v3 | 
|  | ; GFX8-GISEL-NEXT:    v_or_b32_e32 v4, v19, v4 | 
|  | ; GFX8-GISEL-NEXT:    v_or_b32_e32 v5, v20, v5 | 
|  | ; GFX8-GISEL-NEXT:    v_or_b32_e32 v6, v21, v6 | 
|  | ; GFX8-GISEL-NEXT:    v_or_b32_e32 v7, v22, v7 | 
|  | ; GFX8-GISEL-NEXT:    v_or_b32_e32 v8, v23, v8 | 
|  | ; GFX8-GISEL-NEXT:    v_or_b32_e32 v9, v24, v9 | 
|  | ; GFX8-GISEL-NEXT:    v_or_b32_e32 v10, v25, v10 | 
|  | ; GFX8-GISEL-NEXT:    v_or_b32_e32 v11, v26, v11 | 
|  | ; GFX8-GISEL-NEXT:    v_or_b32_e32 v12, v27, v12 | 
|  | ; GFX8-GISEL-NEXT:    v_or_b32_e32 v13, v28, v13 | 
|  | ; GFX8-GISEL-NEXT:    v_or_b32_e32 v14, v29, v14 | 
|  | ; GFX8-GISEL-NEXT:    s_waitcnt vmcnt(0) | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_e32 v33, v30, v30 | 
|  | ; GFX8-GISEL-NEXT:    v_max_f16_sdwa v30, v30, v30 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-GISEL-NEXT:    v_min_f16_e32 v32, v32, v33 | 
|  | ; GFX8-GISEL-NEXT:    v_min_f16_sdwa v15, v15, v30 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD | 
|  | ; GFX8-GISEL-NEXT:    v_or_b32_e32 v15, v32, v15 | 
|  | ; GFX8-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX900-SDAG-LABEL: v_minimumnum_v32f16: | 
|  | ; GFX900-SDAG:       ; %bb.0: | 
|  | ; GFX900-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX900-SDAG-NEXT:    v_pk_max_f16 v16, v16, v16 | 
|  | ; GFX900-SDAG-NEXT:    v_pk_max_f16 v0, v0, v0 | 
|  | ; GFX900-SDAG-NEXT:    v_pk_min_f16 v0, v0, v16 | 
|  | ; GFX900-SDAG-NEXT:    v_pk_max_f16 v16, v17, v17 | 
|  | ; GFX900-SDAG-NEXT:    v_pk_max_f16 v1, v1, v1 | 
|  | ; GFX900-SDAG-NEXT:    v_pk_min_f16 v1, v1, v16 | 
|  | ; GFX900-SDAG-NEXT:    v_pk_max_f16 v16, v18, v18 | 
|  | ; GFX900-SDAG-NEXT:    v_pk_max_f16 v2, v2, v2 | 
|  | ; GFX900-SDAG-NEXT:    v_pk_min_f16 v2, v2, v16 | 
|  | ; GFX900-SDAG-NEXT:    v_pk_max_f16 v16, v19, v19 | 
|  | ; GFX900-SDAG-NEXT:    v_pk_max_f16 v3, v3, v3 | 
|  | ; GFX900-SDAG-NEXT:    v_pk_min_f16 v3, v3, v16 | 
|  | ; GFX900-SDAG-NEXT:    buffer_load_dword v16, off, s[0:3], s32 | 
|  | ; GFX900-SDAG-NEXT:    v_pk_max_f16 v17, v20, v20 | 
|  | ; GFX900-SDAG-NEXT:    v_pk_max_f16 v4, v4, v4 | 
|  | ; GFX900-SDAG-NEXT:    v_pk_max_f16 v18, v21, v21 | 
|  | ; GFX900-SDAG-NEXT:    v_pk_max_f16 v5, v5, v5 | 
|  | ; GFX900-SDAG-NEXT:    v_pk_max_f16 v19, v22, v22 | 
|  | ; GFX900-SDAG-NEXT:    v_pk_max_f16 v6, v6, v6 | 
|  | ; GFX900-SDAG-NEXT:    v_pk_max_f16 v20, v23, v23 | 
|  | ; GFX900-SDAG-NEXT:    v_pk_max_f16 v7, v7, v7 | 
|  | ; GFX900-SDAG-NEXT:    v_pk_max_f16 v21, v24, v24 | 
|  | ; GFX900-SDAG-NEXT:    v_pk_max_f16 v8, v8, v8 | 
|  | ; GFX900-SDAG-NEXT:    v_pk_max_f16 v22, v25, v25 | 
|  | ; GFX900-SDAG-NEXT:    v_pk_max_f16 v9, v9, v9 | 
|  | ; GFX900-SDAG-NEXT:    v_pk_max_f16 v23, v26, v26 | 
|  | ; GFX900-SDAG-NEXT:    v_pk_max_f16 v10, v10, v10 | 
|  | ; GFX900-SDAG-NEXT:    v_pk_max_f16 v24, v27, v27 | 
|  | ; GFX900-SDAG-NEXT:    v_pk_max_f16 v11, v11, v11 | 
|  | ; GFX900-SDAG-NEXT:    v_pk_max_f16 v25, v28, v28 | 
|  | ; GFX900-SDAG-NEXT:    v_pk_max_f16 v12, v12, v12 | 
|  | ; GFX900-SDAG-NEXT:    v_pk_max_f16 v26, v29, v29 | 
|  | ; GFX900-SDAG-NEXT:    v_pk_max_f16 v13, v13, v13 | 
|  | ; GFX900-SDAG-NEXT:    v_pk_max_f16 v27, v30, v30 | 
|  | ; GFX900-SDAG-NEXT:    v_pk_max_f16 v14, v14, v14 | 
|  | ; GFX900-SDAG-NEXT:    v_pk_max_f16 v15, v15, v15 | 
|  | ; GFX900-SDAG-NEXT:    v_pk_min_f16 v4, v4, v17 | 
|  | ; GFX900-SDAG-NEXT:    v_pk_min_f16 v5, v5, v18 | 
|  | ; GFX900-SDAG-NEXT:    v_pk_min_f16 v6, v6, v19 | 
|  | ; GFX900-SDAG-NEXT:    v_pk_min_f16 v7, v7, v20 | 
|  | ; GFX900-SDAG-NEXT:    v_pk_min_f16 v8, v8, v21 | 
|  | ; GFX900-SDAG-NEXT:    v_pk_min_f16 v9, v9, v22 | 
|  | ; GFX900-SDAG-NEXT:    v_pk_min_f16 v10, v10, v23 | 
|  | ; GFX900-SDAG-NEXT:    v_pk_min_f16 v11, v11, v24 | 
|  | ; GFX900-SDAG-NEXT:    v_pk_min_f16 v12, v12, v25 | 
|  | ; GFX900-SDAG-NEXT:    v_pk_min_f16 v13, v13, v26 | 
|  | ; GFX900-SDAG-NEXT:    v_pk_min_f16 v14, v14, v27 | 
|  | ; GFX900-SDAG-NEXT:    s_waitcnt vmcnt(0) | 
|  | ; GFX900-SDAG-NEXT:    v_pk_max_f16 v16, v16, v16 | 
|  | ; GFX900-SDAG-NEXT:    v_pk_min_f16 v15, v15, v16 | 
|  | ; GFX900-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX900-GISEL-LABEL: v_minimumnum_v32f16: | 
|  | ; GFX900-GISEL:       ; %bb.0: | 
|  | ; GFX900-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX900-GISEL-NEXT:    v_pk_max_f16 v0, v0, v0 | 
|  | ; GFX900-GISEL-NEXT:    v_pk_max_f16 v16, v16, v16 | 
|  | ; GFX900-GISEL-NEXT:    v_pk_min_f16 v0, v0, v16 | 
|  | ; GFX900-GISEL-NEXT:    v_pk_max_f16 v1, v1, v1 | 
|  | ; GFX900-GISEL-NEXT:    v_pk_max_f16 v16, v17, v17 | 
|  | ; GFX900-GISEL-NEXT:    v_pk_min_f16 v1, v1, v16 | 
|  | ; GFX900-GISEL-NEXT:    v_pk_max_f16 v2, v2, v2 | 
|  | ; GFX900-GISEL-NEXT:    v_pk_max_f16 v16, v18, v18 | 
|  | ; GFX900-GISEL-NEXT:    v_pk_min_f16 v2, v2, v16 | 
|  | ; GFX900-GISEL-NEXT:    v_pk_max_f16 v3, v3, v3 | 
|  | ; GFX900-GISEL-NEXT:    v_pk_max_f16 v16, v19, v19 | 
|  | ; GFX900-GISEL-NEXT:    v_pk_min_f16 v3, v3, v16 | 
|  | ; GFX900-GISEL-NEXT:    buffer_load_dword v16, off, s[0:3], s32 | 
|  | ; GFX900-GISEL-NEXT:    v_pk_max_f16 v4, v4, v4 | 
|  | ; GFX900-GISEL-NEXT:    v_pk_max_f16 v17, v20, v20 | 
|  | ; GFX900-GISEL-NEXT:    v_pk_max_f16 v5, v5, v5 | 
|  | ; GFX900-GISEL-NEXT:    v_pk_max_f16 v18, v21, v21 | 
|  | ; GFX900-GISEL-NEXT:    v_pk_max_f16 v6, v6, v6 | 
|  | ; GFX900-GISEL-NEXT:    v_pk_max_f16 v19, v22, v22 | 
|  | ; GFX900-GISEL-NEXT:    v_pk_max_f16 v7, v7, v7 | 
|  | ; GFX900-GISEL-NEXT:    v_pk_max_f16 v20, v23, v23 | 
|  | ; GFX900-GISEL-NEXT:    v_pk_max_f16 v8, v8, v8 | 
|  | ; GFX900-GISEL-NEXT:    v_pk_max_f16 v21, v24, v24 | 
|  | ; GFX900-GISEL-NEXT:    v_pk_max_f16 v9, v9, v9 | 
|  | ; GFX900-GISEL-NEXT:    v_pk_max_f16 v22, v25, v25 | 
|  | ; GFX900-GISEL-NEXT:    v_pk_max_f16 v10, v10, v10 | 
|  | ; GFX900-GISEL-NEXT:    v_pk_max_f16 v23, v26, v26 | 
|  | ; GFX900-GISEL-NEXT:    v_pk_max_f16 v11, v11, v11 | 
|  | ; GFX900-GISEL-NEXT:    v_pk_max_f16 v24, v27, v27 | 
|  | ; GFX900-GISEL-NEXT:    v_pk_max_f16 v12, v12, v12 | 
|  | ; GFX900-GISEL-NEXT:    v_pk_max_f16 v25, v28, v28 | 
|  | ; GFX900-GISEL-NEXT:    v_pk_max_f16 v13, v13, v13 | 
|  | ; GFX900-GISEL-NEXT:    v_pk_max_f16 v26, v29, v29 | 
|  | ; GFX900-GISEL-NEXT:    v_pk_max_f16 v14, v14, v14 | 
|  | ; GFX900-GISEL-NEXT:    v_pk_max_f16 v27, v30, v30 | 
|  | ; GFX900-GISEL-NEXT:    v_pk_max_f16 v15, v15, v15 | 
|  | ; GFX900-GISEL-NEXT:    v_pk_min_f16 v4, v4, v17 | 
|  | ; GFX900-GISEL-NEXT:    v_pk_min_f16 v5, v5, v18 | 
|  | ; GFX900-GISEL-NEXT:    v_pk_min_f16 v6, v6, v19 | 
|  | ; GFX900-GISEL-NEXT:    v_pk_min_f16 v7, v7, v20 | 
|  | ; GFX900-GISEL-NEXT:    v_pk_min_f16 v8, v8, v21 | 
|  | ; GFX900-GISEL-NEXT:    v_pk_min_f16 v9, v9, v22 | 
|  | ; GFX900-GISEL-NEXT:    v_pk_min_f16 v10, v10, v23 | 
|  | ; GFX900-GISEL-NEXT:    v_pk_min_f16 v11, v11, v24 | 
|  | ; GFX900-GISEL-NEXT:    v_pk_min_f16 v12, v12, v25 | 
|  | ; GFX900-GISEL-NEXT:    v_pk_min_f16 v13, v13, v26 | 
|  | ; GFX900-GISEL-NEXT:    v_pk_min_f16 v14, v14, v27 | 
|  | ; GFX900-GISEL-NEXT:    s_waitcnt vmcnt(0) | 
|  | ; GFX900-GISEL-NEXT:    v_pk_max_f16 v16, v16, v16 | 
|  | ; GFX900-GISEL-NEXT:    v_pk_min_f16 v15, v15, v16 | 
|  | ; GFX900-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX950-SDAG-LABEL: v_minimumnum_v32f16: | 
|  | ; GFX950-SDAG:       ; %bb.0: | 
|  | ; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX950-SDAG-NEXT:    scratch_load_dword v31, off, s32 | 
|  | ; GFX950-SDAG-NEXT:    v_pk_max_f16 v16, v16, v16 | 
|  | ; GFX950-SDAG-NEXT:    v_pk_max_f16 v0, v0, v0 | 
|  | ; GFX950-SDAG-NEXT:    v_pk_max_f16 v17, v17, v17 | 
|  | ; GFX950-SDAG-NEXT:    v_pk_max_f16 v1, v1, v1 | 
|  | ; GFX950-SDAG-NEXT:    v_pk_max_f16 v18, v18, v18 | 
|  | ; GFX950-SDAG-NEXT:    v_pk_max_f16 v2, v2, v2 | 
|  | ; GFX950-SDAG-NEXT:    v_pk_max_f16 v19, v19, v19 | 
|  | ; GFX950-SDAG-NEXT:    v_pk_max_f16 v3, v3, v3 | 
|  | ; GFX950-SDAG-NEXT:    v_pk_max_f16 v20, v20, v20 | 
|  | ; GFX950-SDAG-NEXT:    v_pk_max_f16 v4, v4, v4 | 
|  | ; GFX950-SDAG-NEXT:    v_pk_max_f16 v21, v21, v21 | 
|  | ; GFX950-SDAG-NEXT:    v_pk_max_f16 v5, v5, v5 | 
|  | ; GFX950-SDAG-NEXT:    v_pk_max_f16 v22, v22, v22 | 
|  | ; GFX950-SDAG-NEXT:    v_pk_max_f16 v6, v6, v6 | 
|  | ; GFX950-SDAG-NEXT:    v_pk_max_f16 v23, v23, v23 | 
|  | ; GFX950-SDAG-NEXT:    v_pk_max_f16 v7, v7, v7 | 
|  | ; GFX950-SDAG-NEXT:    v_pk_max_f16 v24, v24, v24 | 
|  | ; GFX950-SDAG-NEXT:    v_pk_max_f16 v8, v8, v8 | 
|  | ; GFX950-SDAG-NEXT:    v_pk_max_f16 v25, v25, v25 | 
|  | ; GFX950-SDAG-NEXT:    v_pk_max_f16 v9, v9, v9 | 
|  | ; GFX950-SDAG-NEXT:    v_pk_max_f16 v26, v26, v26 | 
|  | ; GFX950-SDAG-NEXT:    v_pk_max_f16 v10, v10, v10 | 
|  | ; GFX950-SDAG-NEXT:    v_pk_max_f16 v27, v27, v27 | 
|  | ; GFX950-SDAG-NEXT:    v_pk_max_f16 v11, v11, v11 | 
|  | ; GFX950-SDAG-NEXT:    v_pk_max_f16 v28, v28, v28 | 
|  | ; GFX950-SDAG-NEXT:    v_pk_max_f16 v12, v12, v12 | 
|  | ; GFX950-SDAG-NEXT:    v_pk_max_f16 v29, v29, v29 | 
|  | ; GFX950-SDAG-NEXT:    v_pk_max_f16 v13, v13, v13 | 
|  | ; GFX950-SDAG-NEXT:    v_pk_max_f16 v30, v30, v30 | 
|  | ; GFX950-SDAG-NEXT:    v_pk_max_f16 v14, v14, v14 | 
|  | ; GFX950-SDAG-NEXT:    v_pk_max_f16 v15, v15, v15 | 
|  | ; GFX950-SDAG-NEXT:    v_pk_min_f16 v0, v0, v16 | 
|  | ; GFX950-SDAG-NEXT:    v_pk_min_f16 v1, v1, v17 | 
|  | ; GFX950-SDAG-NEXT:    v_pk_min_f16 v2, v2, v18 | 
|  | ; GFX950-SDAG-NEXT:    v_pk_min_f16 v3, v3, v19 | 
|  | ; GFX950-SDAG-NEXT:    v_pk_min_f16 v4, v4, v20 | 
|  | ; GFX950-SDAG-NEXT:    v_pk_min_f16 v5, v5, v21 | 
|  | ; GFX950-SDAG-NEXT:    v_pk_min_f16 v6, v6, v22 | 
|  | ; GFX950-SDAG-NEXT:    v_pk_min_f16 v7, v7, v23 | 
|  | ; GFX950-SDAG-NEXT:    v_pk_min_f16 v8, v8, v24 | 
|  | ; GFX950-SDAG-NEXT:    v_pk_min_f16 v9, v9, v25 | 
|  | ; GFX950-SDAG-NEXT:    v_pk_min_f16 v10, v10, v26 | 
|  | ; GFX950-SDAG-NEXT:    v_pk_min_f16 v11, v11, v27 | 
|  | ; GFX950-SDAG-NEXT:    v_pk_min_f16 v12, v12, v28 | 
|  | ; GFX950-SDAG-NEXT:    v_pk_min_f16 v13, v13, v29 | 
|  | ; GFX950-SDAG-NEXT:    v_pk_min_f16 v14, v14, v30 | 
|  | ; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) | 
|  | ; GFX950-SDAG-NEXT:    v_pk_max_f16 v16, v31, v31 | 
|  | ; GFX950-SDAG-NEXT:    s_nop 0 | 
|  | ; GFX950-SDAG-NEXT:    v_pk_min_f16 v15, v15, v16 | 
|  | ; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX950-GISEL-LABEL: v_minimumnum_v32f16: | 
|  | ; GFX950-GISEL:       ; %bb.0: | 
|  | ; GFX950-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX950-GISEL-NEXT:    scratch_load_dword v31, off, s32 | 
|  | ; GFX950-GISEL-NEXT:    v_pk_max_f16 v0, v0, v0 | 
|  | ; GFX950-GISEL-NEXT:    v_pk_max_f16 v16, v16, v16 | 
|  | ; GFX950-GISEL-NEXT:    v_pk_max_f16 v1, v1, v1 | 
|  | ; GFX950-GISEL-NEXT:    v_pk_max_f16 v17, v17, v17 | 
|  | ; GFX950-GISEL-NEXT:    v_pk_max_f16 v2, v2, v2 | 
|  | ; GFX950-GISEL-NEXT:    v_pk_max_f16 v18, v18, v18 | 
|  | ; GFX950-GISEL-NEXT:    v_pk_max_f16 v3, v3, v3 | 
|  | ; GFX950-GISEL-NEXT:    v_pk_max_f16 v19, v19, v19 | 
|  | ; GFX950-GISEL-NEXT:    v_pk_max_f16 v4, v4, v4 | 
|  | ; GFX950-GISEL-NEXT:    v_pk_max_f16 v20, v20, v20 | 
|  | ; GFX950-GISEL-NEXT:    v_pk_max_f16 v5, v5, v5 | 
|  | ; GFX950-GISEL-NEXT:    v_pk_max_f16 v21, v21, v21 | 
|  | ; GFX950-GISEL-NEXT:    v_pk_max_f16 v6, v6, v6 | 
|  | ; GFX950-GISEL-NEXT:    v_pk_max_f16 v22, v22, v22 | 
|  | ; GFX950-GISEL-NEXT:    v_pk_max_f16 v7, v7, v7 | 
|  | ; GFX950-GISEL-NEXT:    v_pk_max_f16 v23, v23, v23 | 
|  | ; GFX950-GISEL-NEXT:    v_pk_max_f16 v8, v8, v8 | 
|  | ; GFX950-GISEL-NEXT:    v_pk_max_f16 v24, v24, v24 | 
|  | ; GFX950-GISEL-NEXT:    v_pk_max_f16 v9, v9, v9 | 
|  | ; GFX950-GISEL-NEXT:    v_pk_max_f16 v25, v25, v25 | 
|  | ; GFX950-GISEL-NEXT:    v_pk_max_f16 v10, v10, v10 | 
|  | ; GFX950-GISEL-NEXT:    v_pk_max_f16 v26, v26, v26 | 
|  | ; GFX950-GISEL-NEXT:    v_pk_max_f16 v11, v11, v11 | 
|  | ; GFX950-GISEL-NEXT:    v_pk_max_f16 v27, v27, v27 | 
|  | ; GFX950-GISEL-NEXT:    v_pk_max_f16 v12, v12, v12 | 
|  | ; GFX950-GISEL-NEXT:    v_pk_max_f16 v28, v28, v28 | 
|  | ; GFX950-GISEL-NEXT:    v_pk_max_f16 v13, v13, v13 | 
|  | ; GFX950-GISEL-NEXT:    v_pk_max_f16 v29, v29, v29 | 
|  | ; GFX950-GISEL-NEXT:    v_pk_max_f16 v14, v14, v14 | 
|  | ; GFX950-GISEL-NEXT:    v_pk_max_f16 v30, v30, v30 | 
|  | ; GFX950-GISEL-NEXT:    v_pk_max_f16 v15, v15, v15 | 
|  | ; GFX950-GISEL-NEXT:    v_pk_min_f16 v0, v0, v16 | 
|  | ; GFX950-GISEL-NEXT:    v_pk_min_f16 v1, v1, v17 | 
|  | ; GFX950-GISEL-NEXT:    v_pk_min_f16 v2, v2, v18 | 
|  | ; GFX950-GISEL-NEXT:    v_pk_min_f16 v3, v3, v19 | 
|  | ; GFX950-GISEL-NEXT:    v_pk_min_f16 v4, v4, v20 | 
|  | ; GFX950-GISEL-NEXT:    v_pk_min_f16 v5, v5, v21 | 
|  | ; GFX950-GISEL-NEXT:    v_pk_min_f16 v6, v6, v22 | 
|  | ; GFX950-GISEL-NEXT:    v_pk_min_f16 v7, v7, v23 | 
|  | ; GFX950-GISEL-NEXT:    v_pk_min_f16 v8, v8, v24 | 
|  | ; GFX950-GISEL-NEXT:    v_pk_min_f16 v9, v9, v25 | 
|  | ; GFX950-GISEL-NEXT:    v_pk_min_f16 v10, v10, v26 | 
|  | ; GFX950-GISEL-NEXT:    v_pk_min_f16 v11, v11, v27 | 
|  | ; GFX950-GISEL-NEXT:    v_pk_min_f16 v12, v12, v28 | 
|  | ; GFX950-GISEL-NEXT:    v_pk_min_f16 v13, v13, v29 | 
|  | ; GFX950-GISEL-NEXT:    v_pk_min_f16 v14, v14, v30 | 
|  | ; GFX950-GISEL-NEXT:    s_waitcnt vmcnt(0) | 
|  | ; GFX950-GISEL-NEXT:    v_pk_max_f16 v16, v31, v31 | 
|  | ; GFX950-GISEL-NEXT:    s_nop 0 | 
|  | ; GFX950-GISEL-NEXT:    v_pk_min_f16 v15, v15, v16 | 
|  | ; GFX950-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX10-SDAG-LABEL: v_minimumnum_v32f16: | 
|  | ; GFX10-SDAG:       ; %bb.0: | 
|  | ; GFX10-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX10-SDAG-NEXT:    buffer_load_dword v31, off, s[0:3], s32 | 
|  | ; GFX10-SDAG-NEXT:    v_pk_max_f16 v16, v16, v16 | 
|  | ; GFX10-SDAG-NEXT:    v_pk_max_f16 v0, v0, v0 | 
|  | ; GFX10-SDAG-NEXT:    v_pk_max_f16 v17, v17, v17 | 
|  | ; GFX10-SDAG-NEXT:    v_pk_max_f16 v1, v1, v1 | 
|  | ; GFX10-SDAG-NEXT:    v_pk_max_f16 v18, v18, v18 | 
|  | ; GFX10-SDAG-NEXT:    v_pk_max_f16 v2, v2, v2 | 
|  | ; GFX10-SDAG-NEXT:    v_pk_max_f16 v19, v19, v19 | 
|  | ; GFX10-SDAG-NEXT:    v_pk_max_f16 v3, v3, v3 | 
|  | ; GFX10-SDAG-NEXT:    v_pk_max_f16 v20, v20, v20 | 
|  | ; GFX10-SDAG-NEXT:    v_pk_max_f16 v4, v4, v4 | 
|  | ; GFX10-SDAG-NEXT:    v_pk_max_f16 v21, v21, v21 | 
|  | ; GFX10-SDAG-NEXT:    v_pk_max_f16 v5, v5, v5 | 
|  | ; GFX10-SDAG-NEXT:    v_pk_max_f16 v22, v22, v22 | 
|  | ; GFX10-SDAG-NEXT:    v_pk_max_f16 v6, v6, v6 | 
|  | ; GFX10-SDAG-NEXT:    v_pk_max_f16 v23, v23, v23 | 
|  | ; GFX10-SDAG-NEXT:    v_pk_max_f16 v7, v7, v7 | 
|  | ; GFX10-SDAG-NEXT:    v_pk_max_f16 v24, v24, v24 | 
|  | ; GFX10-SDAG-NEXT:    v_pk_max_f16 v8, v8, v8 | 
|  | ; GFX10-SDAG-NEXT:    v_pk_max_f16 v25, v25, v25 | 
|  | ; GFX10-SDAG-NEXT:    v_pk_max_f16 v9, v9, v9 | 
|  | ; GFX10-SDAG-NEXT:    v_pk_max_f16 v26, v26, v26 | 
|  | ; GFX10-SDAG-NEXT:    v_pk_max_f16 v10, v10, v10 | 
|  | ; GFX10-SDAG-NEXT:    v_pk_max_f16 v27, v27, v27 | 
|  | ; GFX10-SDAG-NEXT:    v_pk_max_f16 v11, v11, v11 | 
|  | ; GFX10-SDAG-NEXT:    v_pk_max_f16 v28, v28, v28 | 
|  | ; GFX10-SDAG-NEXT:    v_pk_max_f16 v12, v12, v12 | 
|  | ; GFX10-SDAG-NEXT:    v_pk_max_f16 v29, v29, v29 | 
|  | ; GFX10-SDAG-NEXT:    v_pk_max_f16 v13, v13, v13 | 
|  | ; GFX10-SDAG-NEXT:    v_pk_max_f16 v30, v30, v30 | 
|  | ; GFX10-SDAG-NEXT:    v_pk_max_f16 v14, v14, v14 | 
|  | ; GFX10-SDAG-NEXT:    v_pk_max_f16 v15, v15, v15 | 
|  | ; GFX10-SDAG-NEXT:    v_pk_min_f16 v0, v0, v16 | 
|  | ; GFX10-SDAG-NEXT:    v_pk_min_f16 v1, v1, v17 | 
|  | ; GFX10-SDAG-NEXT:    v_pk_min_f16 v2, v2, v18 | 
|  | ; GFX10-SDAG-NEXT:    v_pk_min_f16 v3, v3, v19 | 
|  | ; GFX10-SDAG-NEXT:    v_pk_min_f16 v4, v4, v20 | 
|  | ; GFX10-SDAG-NEXT:    v_pk_min_f16 v5, v5, v21 | 
|  | ; GFX10-SDAG-NEXT:    v_pk_min_f16 v6, v6, v22 | 
|  | ; GFX10-SDAG-NEXT:    v_pk_min_f16 v7, v7, v23 | 
|  | ; GFX10-SDAG-NEXT:    v_pk_min_f16 v8, v8, v24 | 
|  | ; GFX10-SDAG-NEXT:    v_pk_min_f16 v9, v9, v25 | 
|  | ; GFX10-SDAG-NEXT:    v_pk_min_f16 v10, v10, v26 | 
|  | ; GFX10-SDAG-NEXT:    v_pk_min_f16 v11, v11, v27 | 
|  | ; GFX10-SDAG-NEXT:    v_pk_min_f16 v12, v12, v28 | 
|  | ; GFX10-SDAG-NEXT:    v_pk_min_f16 v13, v13, v29 | 
|  | ; GFX10-SDAG-NEXT:    v_pk_min_f16 v14, v14, v30 | 
|  | ; GFX10-SDAG-NEXT:    s_waitcnt vmcnt(0) | 
|  | ; GFX10-SDAG-NEXT:    v_pk_max_f16 v16, v31, v31 | 
|  | ; GFX10-SDAG-NEXT:    v_pk_min_f16 v15, v15, v16 | 
|  | ; GFX10-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX10-GISEL-LABEL: v_minimumnum_v32f16: | 
|  | ; GFX10-GISEL:       ; %bb.0: | 
|  | ; GFX10-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX10-GISEL-NEXT:    buffer_load_dword v31, off, s[0:3], s32 | 
|  | ; GFX10-GISEL-NEXT:    v_pk_max_f16 v0, v0, v0 | 
|  | ; GFX10-GISEL-NEXT:    v_pk_max_f16 v16, v16, v16 | 
|  | ; GFX10-GISEL-NEXT:    v_pk_max_f16 v1, v1, v1 | 
|  | ; GFX10-GISEL-NEXT:    v_pk_max_f16 v17, v17, v17 | 
|  | ; GFX10-GISEL-NEXT:    v_pk_max_f16 v2, v2, v2 | 
|  | ; GFX10-GISEL-NEXT:    v_pk_max_f16 v18, v18, v18 | 
|  | ; GFX10-GISEL-NEXT:    v_pk_max_f16 v3, v3, v3 | 
|  | ; GFX10-GISEL-NEXT:    v_pk_max_f16 v19, v19, v19 | 
|  | ; GFX10-GISEL-NEXT:    v_pk_max_f16 v4, v4, v4 | 
|  | ; GFX10-GISEL-NEXT:    v_pk_max_f16 v20, v20, v20 | 
|  | ; GFX10-GISEL-NEXT:    v_pk_max_f16 v5, v5, v5 | 
|  | ; GFX10-GISEL-NEXT:    v_pk_max_f16 v21, v21, v21 | 
|  | ; GFX10-GISEL-NEXT:    v_pk_max_f16 v6, v6, v6 | 
|  | ; GFX10-GISEL-NEXT:    v_pk_max_f16 v22, v22, v22 | 
|  | ; GFX10-GISEL-NEXT:    v_pk_max_f16 v7, v7, v7 | 
|  | ; GFX10-GISEL-NEXT:    v_pk_max_f16 v23, v23, v23 | 
|  | ; GFX10-GISEL-NEXT:    v_pk_max_f16 v8, v8, v8 | 
|  | ; GFX10-GISEL-NEXT:    v_pk_max_f16 v24, v24, v24 | 
|  | ; GFX10-GISEL-NEXT:    v_pk_max_f16 v9, v9, v9 | 
|  | ; GFX10-GISEL-NEXT:    v_pk_max_f16 v25, v25, v25 | 
|  | ; GFX10-GISEL-NEXT:    v_pk_max_f16 v10, v10, v10 | 
|  | ; GFX10-GISEL-NEXT:    v_pk_max_f16 v26, v26, v26 | 
|  | ; GFX10-GISEL-NEXT:    v_pk_max_f16 v11, v11, v11 | 
|  | ; GFX10-GISEL-NEXT:    v_pk_max_f16 v27, v27, v27 | 
|  | ; GFX10-GISEL-NEXT:    v_pk_max_f16 v12, v12, v12 | 
|  | ; GFX10-GISEL-NEXT:    v_pk_max_f16 v28, v28, v28 | 
|  | ; GFX10-GISEL-NEXT:    v_pk_max_f16 v13, v13, v13 | 
|  | ; GFX10-GISEL-NEXT:    v_pk_max_f16 v29, v29, v29 | 
|  | ; GFX10-GISEL-NEXT:    v_pk_max_f16 v14, v14, v14 | 
|  | ; GFX10-GISEL-NEXT:    v_pk_max_f16 v30, v30, v30 | 
|  | ; GFX10-GISEL-NEXT:    v_pk_max_f16 v15, v15, v15 | 
|  | ; GFX10-GISEL-NEXT:    v_pk_min_f16 v0, v0, v16 | 
|  | ; GFX10-GISEL-NEXT:    v_pk_min_f16 v1, v1, v17 | 
|  | ; GFX10-GISEL-NEXT:    v_pk_min_f16 v2, v2, v18 | 
|  | ; GFX10-GISEL-NEXT:    v_pk_min_f16 v3, v3, v19 | 
|  | ; GFX10-GISEL-NEXT:    v_pk_min_f16 v4, v4, v20 | 
|  | ; GFX10-GISEL-NEXT:    v_pk_min_f16 v5, v5, v21 | 
|  | ; GFX10-GISEL-NEXT:    v_pk_min_f16 v6, v6, v22 | 
|  | ; GFX10-GISEL-NEXT:    v_pk_min_f16 v7, v7, v23 | 
|  | ; GFX10-GISEL-NEXT:    v_pk_min_f16 v8, v8, v24 | 
|  | ; GFX10-GISEL-NEXT:    v_pk_min_f16 v9, v9, v25 | 
|  | ; GFX10-GISEL-NEXT:    v_pk_min_f16 v10, v10, v26 | 
|  | ; GFX10-GISEL-NEXT:    v_pk_min_f16 v11, v11, v27 | 
|  | ; GFX10-GISEL-NEXT:    v_pk_min_f16 v12, v12, v28 | 
|  | ; GFX10-GISEL-NEXT:    v_pk_min_f16 v13, v13, v29 | 
|  | ; GFX10-GISEL-NEXT:    v_pk_min_f16 v14, v14, v30 | 
|  | ; GFX10-GISEL-NEXT:    s_waitcnt vmcnt(0) | 
|  | ; GFX10-GISEL-NEXT:    v_pk_max_f16 v16, v31, v31 | 
|  | ; GFX10-GISEL-NEXT:    v_pk_min_f16 v15, v15, v16 | 
|  | ; GFX10-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX11-SDAG-LABEL: v_minimumnum_v32f16: | 
|  | ; GFX11-SDAG:       ; %bb.0: | 
|  | ; GFX11-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX11-SDAG-NEXT:    scratch_load_b32 v31, off, s32 | 
|  | ; GFX11-SDAG-NEXT:    v_pk_max_f16 v16, v16, v16 | 
|  | ; GFX11-SDAG-NEXT:    v_pk_max_f16 v0, v0, v0 | 
|  | ; GFX11-SDAG-NEXT:    v_pk_max_f16 v17, v17, v17 | 
|  | ; GFX11-SDAG-NEXT:    v_pk_max_f16 v1, v1, v1 | 
|  | ; GFX11-SDAG-NEXT:    v_pk_max_f16 v18, v18, v18 | 
|  | ; GFX11-SDAG-NEXT:    v_pk_max_f16 v2, v2, v2 | 
|  | ; GFX11-SDAG-NEXT:    v_pk_max_f16 v19, v19, v19 | 
|  | ; GFX11-SDAG-NEXT:    v_pk_max_f16 v3, v3, v3 | 
|  | ; GFX11-SDAG-NEXT:    v_pk_max_f16 v20, v20, v20 | 
|  | ; GFX11-SDAG-NEXT:    v_pk_max_f16 v4, v4, v4 | 
|  | ; GFX11-SDAG-NEXT:    v_pk_max_f16 v21, v21, v21 | 
|  | ; GFX11-SDAG-NEXT:    v_pk_max_f16 v5, v5, v5 | 
|  | ; GFX11-SDAG-NEXT:    v_pk_max_f16 v22, v22, v22 | 
|  | ; GFX11-SDAG-NEXT:    v_pk_max_f16 v6, v6, v6 | 
|  | ; GFX11-SDAG-NEXT:    v_pk_max_f16 v23, v23, v23 | 
|  | ; GFX11-SDAG-NEXT:    v_pk_max_f16 v7, v7, v7 | 
|  | ; GFX11-SDAG-NEXT:    v_pk_max_f16 v24, v24, v24 | 
|  | ; GFX11-SDAG-NEXT:    v_pk_max_f16 v8, v8, v8 | 
|  | ; GFX11-SDAG-NEXT:    v_pk_max_f16 v25, v25, v25 | 
|  | ; GFX11-SDAG-NEXT:    v_pk_max_f16 v9, v9, v9 | 
|  | ; GFX11-SDAG-NEXT:    v_pk_max_f16 v26, v26, v26 | 
|  | ; GFX11-SDAG-NEXT:    v_pk_max_f16 v10, v10, v10 | 
|  | ; GFX11-SDAG-NEXT:    v_pk_max_f16 v27, v27, v27 | 
|  | ; GFX11-SDAG-NEXT:    v_pk_max_f16 v11, v11, v11 | 
|  | ; GFX11-SDAG-NEXT:    v_pk_max_f16 v28, v28, v28 | 
|  | ; GFX11-SDAG-NEXT:    v_pk_max_f16 v12, v12, v12 | 
|  | ; GFX11-SDAG-NEXT:    v_pk_max_f16 v29, v29, v29 | 
|  | ; GFX11-SDAG-NEXT:    v_pk_max_f16 v13, v13, v13 | 
|  | ; GFX11-SDAG-NEXT:    v_pk_max_f16 v30, v30, v30 | 
|  | ; GFX11-SDAG-NEXT:    v_pk_max_f16 v14, v14, v14 | 
|  | ; GFX11-SDAG-NEXT:    v_pk_max_f16 v15, v15, v15 | 
|  | ; GFX11-SDAG-NEXT:    v_pk_min_f16 v0, v0, v16 | 
|  | ; GFX11-SDAG-NEXT:    v_pk_min_f16 v1, v1, v17 | 
|  | ; GFX11-SDAG-NEXT:    v_pk_min_f16 v2, v2, v18 | 
|  | ; GFX11-SDAG-NEXT:    v_pk_min_f16 v3, v3, v19 | 
|  | ; GFX11-SDAG-NEXT:    v_pk_min_f16 v4, v4, v20 | 
|  | ; GFX11-SDAG-NEXT:    v_pk_min_f16 v5, v5, v21 | 
|  | ; GFX11-SDAG-NEXT:    v_pk_min_f16 v6, v6, v22 | 
|  | ; GFX11-SDAG-NEXT:    v_pk_min_f16 v7, v7, v23 | 
|  | ; GFX11-SDAG-NEXT:    v_pk_min_f16 v8, v8, v24 | 
|  | ; GFX11-SDAG-NEXT:    v_pk_min_f16 v9, v9, v25 | 
|  | ; GFX11-SDAG-NEXT:    v_pk_min_f16 v10, v10, v26 | 
|  | ; GFX11-SDAG-NEXT:    v_pk_min_f16 v11, v11, v27 | 
|  | ; GFX11-SDAG-NEXT:    v_pk_min_f16 v12, v12, v28 | 
|  | ; GFX11-SDAG-NEXT:    v_pk_min_f16 v13, v13, v29 | 
|  | ; GFX11-SDAG-NEXT:    v_pk_min_f16 v14, v14, v30 | 
|  | ; GFX11-SDAG-NEXT:    s_waitcnt vmcnt(0) | 
|  | ; GFX11-SDAG-NEXT:    v_pk_max_f16 v16, v31, v31 | 
|  | ; GFX11-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX11-SDAG-NEXT:    v_pk_min_f16 v15, v15, v16 | 
|  | ; GFX11-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX11-GISEL-LABEL: v_minimumnum_v32f16: | 
|  | ; GFX11-GISEL:       ; %bb.0: | 
|  | ; GFX11-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX11-GISEL-NEXT:    scratch_load_b32 v31, off, s32 | 
|  | ; GFX11-GISEL-NEXT:    v_pk_max_f16 v0, v0, v0 | 
|  | ; GFX11-GISEL-NEXT:    v_pk_max_f16 v16, v16, v16 | 
|  | ; GFX11-GISEL-NEXT:    v_pk_max_f16 v1, v1, v1 | 
|  | ; GFX11-GISEL-NEXT:    v_pk_max_f16 v17, v17, v17 | 
|  | ; GFX11-GISEL-NEXT:    v_pk_max_f16 v2, v2, v2 | 
|  | ; GFX11-GISEL-NEXT:    v_pk_max_f16 v18, v18, v18 | 
|  | ; GFX11-GISEL-NEXT:    v_pk_max_f16 v3, v3, v3 | 
|  | ; GFX11-GISEL-NEXT:    v_pk_max_f16 v19, v19, v19 | 
|  | ; GFX11-GISEL-NEXT:    v_pk_max_f16 v4, v4, v4 | 
|  | ; GFX11-GISEL-NEXT:    v_pk_max_f16 v20, v20, v20 | 
|  | ; GFX11-GISEL-NEXT:    v_pk_max_f16 v5, v5, v5 | 
|  | ; GFX11-GISEL-NEXT:    v_pk_max_f16 v21, v21, v21 | 
|  | ; GFX11-GISEL-NEXT:    v_pk_max_f16 v6, v6, v6 | 
|  | ; GFX11-GISEL-NEXT:    v_pk_max_f16 v22, v22, v22 | 
|  | ; GFX11-GISEL-NEXT:    v_pk_max_f16 v7, v7, v7 | 
|  | ; GFX11-GISEL-NEXT:    v_pk_max_f16 v23, v23, v23 | 
|  | ; GFX11-GISEL-NEXT:    v_pk_max_f16 v8, v8, v8 | 
|  | ; GFX11-GISEL-NEXT:    v_pk_max_f16 v24, v24, v24 | 
|  | ; GFX11-GISEL-NEXT:    v_pk_max_f16 v9, v9, v9 | 
|  | ; GFX11-GISEL-NEXT:    v_pk_max_f16 v25, v25, v25 | 
|  | ; GFX11-GISEL-NEXT:    v_pk_max_f16 v10, v10, v10 | 
|  | ; GFX11-GISEL-NEXT:    v_pk_max_f16 v26, v26, v26 | 
|  | ; GFX11-GISEL-NEXT:    v_pk_max_f16 v11, v11, v11 | 
|  | ; GFX11-GISEL-NEXT:    v_pk_max_f16 v27, v27, v27 | 
|  | ; GFX11-GISEL-NEXT:    v_pk_max_f16 v12, v12, v12 | 
|  | ; GFX11-GISEL-NEXT:    v_pk_max_f16 v28, v28, v28 | 
|  | ; GFX11-GISEL-NEXT:    v_pk_max_f16 v13, v13, v13 | 
|  | ; GFX11-GISEL-NEXT:    v_pk_max_f16 v29, v29, v29 | 
|  | ; GFX11-GISEL-NEXT:    v_pk_max_f16 v14, v14, v14 | 
|  | ; GFX11-GISEL-NEXT:    v_pk_max_f16 v30, v30, v30 | 
|  | ; GFX11-GISEL-NEXT:    v_pk_max_f16 v15, v15, v15 | 
|  | ; GFX11-GISEL-NEXT:    v_pk_min_f16 v0, v0, v16 | 
|  | ; GFX11-GISEL-NEXT:    v_pk_min_f16 v1, v1, v17 | 
|  | ; GFX11-GISEL-NEXT:    v_pk_min_f16 v2, v2, v18 | 
|  | ; GFX11-GISEL-NEXT:    v_pk_min_f16 v3, v3, v19 | 
|  | ; GFX11-GISEL-NEXT:    v_pk_min_f16 v4, v4, v20 | 
|  | ; GFX11-GISEL-NEXT:    v_pk_min_f16 v5, v5, v21 | 
|  | ; GFX11-GISEL-NEXT:    v_pk_min_f16 v6, v6, v22 | 
|  | ; GFX11-GISEL-NEXT:    v_pk_min_f16 v7, v7, v23 | 
|  | ; GFX11-GISEL-NEXT:    v_pk_min_f16 v8, v8, v24 | 
|  | ; GFX11-GISEL-NEXT:    v_pk_min_f16 v9, v9, v25 | 
|  | ; GFX11-GISEL-NEXT:    v_pk_min_f16 v10, v10, v26 | 
|  | ; GFX11-GISEL-NEXT:    v_pk_min_f16 v11, v11, v27 | 
|  | ; GFX11-GISEL-NEXT:    v_pk_min_f16 v12, v12, v28 | 
|  | ; GFX11-GISEL-NEXT:    v_pk_min_f16 v13, v13, v29 | 
|  | ; GFX11-GISEL-NEXT:    v_pk_min_f16 v14, v14, v30 | 
|  | ; GFX11-GISEL-NEXT:    s_waitcnt vmcnt(0) | 
|  | ; GFX11-GISEL-NEXT:    v_pk_max_f16 v16, v31, v31 | 
|  | ; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX11-GISEL-NEXT:    v_pk_min_f16 v15, v15, v16 | 
|  | ; GFX11-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX12-SDAG-LABEL: v_minimumnum_v32f16: | 
|  | ; GFX12-SDAG:       ; %bb.0: | 
|  | ; GFX12-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    s_wait_expcnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    s_wait_samplecnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    s_wait_bvhcnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    s_wait_kmcnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    scratch_load_b32 v31, off, s32 | 
|  | ; GFX12-SDAG-NEXT:    v_pk_max_num_f16 v16, v16, v16 | 
|  | ; GFX12-SDAG-NEXT:    v_pk_max_num_f16 v0, v0, v0 | 
|  | ; GFX12-SDAG-NEXT:    v_pk_max_num_f16 v17, v17, v17 | 
|  | ; GFX12-SDAG-NEXT:    v_pk_max_num_f16 v1, v1, v1 | 
|  | ; GFX12-SDAG-NEXT:    v_pk_max_num_f16 v18, v18, v18 | 
|  | ; GFX12-SDAG-NEXT:    v_pk_max_num_f16 v2, v2, v2 | 
|  | ; GFX12-SDAG-NEXT:    v_pk_max_num_f16 v19, v19, v19 | 
|  | ; GFX12-SDAG-NEXT:    v_pk_max_num_f16 v3, v3, v3 | 
|  | ; GFX12-SDAG-NEXT:    v_pk_max_num_f16 v20, v20, v20 | 
|  | ; GFX12-SDAG-NEXT:    v_pk_max_num_f16 v4, v4, v4 | 
|  | ; GFX12-SDAG-NEXT:    v_pk_max_num_f16 v21, v21, v21 | 
|  | ; GFX12-SDAG-NEXT:    v_pk_max_num_f16 v5, v5, v5 | 
|  | ; GFX12-SDAG-NEXT:    v_pk_max_num_f16 v22, v22, v22 | 
|  | ; GFX12-SDAG-NEXT:    v_pk_max_num_f16 v6, v6, v6 | 
|  | ; GFX12-SDAG-NEXT:    v_pk_max_num_f16 v23, v23, v23 | 
|  | ; GFX12-SDAG-NEXT:    v_pk_max_num_f16 v7, v7, v7 | 
|  | ; GFX12-SDAG-NEXT:    v_pk_max_num_f16 v24, v24, v24 | 
|  | ; GFX12-SDAG-NEXT:    v_pk_max_num_f16 v8, v8, v8 | 
|  | ; GFX12-SDAG-NEXT:    v_pk_max_num_f16 v25, v25, v25 | 
|  | ; GFX12-SDAG-NEXT:    v_pk_max_num_f16 v9, v9, v9 | 
|  | ; GFX12-SDAG-NEXT:    v_pk_max_num_f16 v26, v26, v26 | 
|  | ; GFX12-SDAG-NEXT:    v_pk_max_num_f16 v10, v10, v10 | 
|  | ; GFX12-SDAG-NEXT:    v_pk_max_num_f16 v27, v27, v27 | 
|  | ; GFX12-SDAG-NEXT:    v_pk_max_num_f16 v11, v11, v11 | 
|  | ; GFX12-SDAG-NEXT:    v_pk_max_num_f16 v28, v28, v28 | 
|  | ; GFX12-SDAG-NEXT:    v_pk_max_num_f16 v12, v12, v12 | 
|  | ; GFX12-SDAG-NEXT:    v_pk_max_num_f16 v29, v29, v29 | 
|  | ; GFX12-SDAG-NEXT:    v_pk_max_num_f16 v13, v13, v13 | 
|  | ; GFX12-SDAG-NEXT:    v_pk_max_num_f16 v30, v30, v30 | 
|  | ; GFX12-SDAG-NEXT:    v_pk_max_num_f16 v14, v14, v14 | 
|  | ; GFX12-SDAG-NEXT:    v_pk_max_num_f16 v15, v15, v15 | 
|  | ; GFX12-SDAG-NEXT:    v_pk_min_num_f16 v0, v0, v16 | 
|  | ; GFX12-SDAG-NEXT:    v_pk_min_num_f16 v1, v1, v17 | 
|  | ; GFX12-SDAG-NEXT:    v_pk_min_num_f16 v2, v2, v18 | 
|  | ; GFX12-SDAG-NEXT:    v_pk_min_num_f16 v3, v3, v19 | 
|  | ; GFX12-SDAG-NEXT:    v_pk_min_num_f16 v4, v4, v20 | 
|  | ; GFX12-SDAG-NEXT:    v_pk_min_num_f16 v5, v5, v21 | 
|  | ; GFX12-SDAG-NEXT:    v_pk_min_num_f16 v6, v6, v22 | 
|  | ; GFX12-SDAG-NEXT:    v_pk_min_num_f16 v7, v7, v23 | 
|  | ; GFX12-SDAG-NEXT:    v_pk_min_num_f16 v8, v8, v24 | 
|  | ; GFX12-SDAG-NEXT:    v_pk_min_num_f16 v9, v9, v25 | 
|  | ; GFX12-SDAG-NEXT:    v_pk_min_num_f16 v10, v10, v26 | 
|  | ; GFX12-SDAG-NEXT:    v_pk_min_num_f16 v11, v11, v27 | 
|  | ; GFX12-SDAG-NEXT:    v_pk_min_num_f16 v12, v12, v28 | 
|  | ; GFX12-SDAG-NEXT:    v_pk_min_num_f16 v13, v13, v29 | 
|  | ; GFX12-SDAG-NEXT:    v_pk_min_num_f16 v14, v14, v30 | 
|  | ; GFX12-SDAG-NEXT:    s_wait_loadcnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    v_pk_max_num_f16 v16, v31, v31 | 
|  | ; GFX12-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX12-SDAG-NEXT:    v_pk_min_num_f16 v15, v15, v16 | 
|  | ; GFX12-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX12-GISEL-LABEL: v_minimumnum_v32f16: | 
|  | ; GFX12-GISEL:       ; %bb.0: | 
|  | ; GFX12-GISEL-NEXT:    s_wait_loadcnt_dscnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    s_wait_expcnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    s_wait_samplecnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    s_wait_bvhcnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    s_wait_kmcnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    scratch_load_b32 v31, off, s32 | 
|  | ; GFX12-GISEL-NEXT:    v_pk_max_num_f16 v0, v0, v0 | 
|  | ; GFX12-GISEL-NEXT:    v_pk_max_num_f16 v16, v16, v16 | 
|  | ; GFX12-GISEL-NEXT:    v_pk_max_num_f16 v1, v1, v1 | 
|  | ; GFX12-GISEL-NEXT:    v_pk_max_num_f16 v17, v17, v17 | 
|  | ; GFX12-GISEL-NEXT:    v_pk_max_num_f16 v2, v2, v2 | 
|  | ; GFX12-GISEL-NEXT:    v_pk_max_num_f16 v18, v18, v18 | 
|  | ; GFX12-GISEL-NEXT:    v_pk_max_num_f16 v3, v3, v3 | 
|  | ; GFX12-GISEL-NEXT:    v_pk_max_num_f16 v19, v19, v19 | 
|  | ; GFX12-GISEL-NEXT:    v_pk_max_num_f16 v4, v4, v4 | 
|  | ; GFX12-GISEL-NEXT:    v_pk_max_num_f16 v20, v20, v20 | 
|  | ; GFX12-GISEL-NEXT:    v_pk_max_num_f16 v5, v5, v5 | 
|  | ; GFX12-GISEL-NEXT:    v_pk_max_num_f16 v21, v21, v21 | 
|  | ; GFX12-GISEL-NEXT:    v_pk_max_num_f16 v6, v6, v6 | 
|  | ; GFX12-GISEL-NEXT:    v_pk_max_num_f16 v22, v22, v22 | 
|  | ; GFX12-GISEL-NEXT:    v_pk_max_num_f16 v7, v7, v7 | 
|  | ; GFX12-GISEL-NEXT:    v_pk_max_num_f16 v23, v23, v23 | 
|  | ; GFX12-GISEL-NEXT:    v_pk_max_num_f16 v8, v8, v8 | 
|  | ; GFX12-GISEL-NEXT:    v_pk_max_num_f16 v24, v24, v24 | 
|  | ; GFX12-GISEL-NEXT:    v_pk_max_num_f16 v9, v9, v9 | 
|  | ; GFX12-GISEL-NEXT:    v_pk_max_num_f16 v25, v25, v25 | 
|  | ; GFX12-GISEL-NEXT:    v_pk_max_num_f16 v10, v10, v10 | 
|  | ; GFX12-GISEL-NEXT:    v_pk_max_num_f16 v26, v26, v26 | 
|  | ; GFX12-GISEL-NEXT:    v_pk_max_num_f16 v11, v11, v11 | 
|  | ; GFX12-GISEL-NEXT:    v_pk_max_num_f16 v27, v27, v27 | 
|  | ; GFX12-GISEL-NEXT:    v_pk_max_num_f16 v12, v12, v12 | 
|  | ; GFX12-GISEL-NEXT:    v_pk_max_num_f16 v28, v28, v28 | 
|  | ; GFX12-GISEL-NEXT:    v_pk_max_num_f16 v13, v13, v13 | 
|  | ; GFX12-GISEL-NEXT:    v_pk_max_num_f16 v29, v29, v29 | 
|  | ; GFX12-GISEL-NEXT:    v_pk_max_num_f16 v14, v14, v14 | 
|  | ; GFX12-GISEL-NEXT:    v_pk_max_num_f16 v30, v30, v30 | 
|  | ; GFX12-GISEL-NEXT:    v_pk_max_num_f16 v15, v15, v15 | 
|  | ; GFX12-GISEL-NEXT:    v_pk_min_num_f16 v0, v0, v16 | 
|  | ; GFX12-GISEL-NEXT:    v_pk_min_num_f16 v1, v1, v17 | 
|  | ; GFX12-GISEL-NEXT:    v_pk_min_num_f16 v2, v2, v18 | 
|  | ; GFX12-GISEL-NEXT:    v_pk_min_num_f16 v3, v3, v19 | 
|  | ; GFX12-GISEL-NEXT:    v_pk_min_num_f16 v4, v4, v20 | 
|  | ; GFX12-GISEL-NEXT:    v_pk_min_num_f16 v5, v5, v21 | 
|  | ; GFX12-GISEL-NEXT:    v_pk_min_num_f16 v6, v6, v22 | 
|  | ; GFX12-GISEL-NEXT:    v_pk_min_num_f16 v7, v7, v23 | 
|  | ; GFX12-GISEL-NEXT:    v_pk_min_num_f16 v8, v8, v24 | 
|  | ; GFX12-GISEL-NEXT:    v_pk_min_num_f16 v9, v9, v25 | 
|  | ; GFX12-GISEL-NEXT:    v_pk_min_num_f16 v10, v10, v26 | 
|  | ; GFX12-GISEL-NEXT:    v_pk_min_num_f16 v11, v11, v27 | 
|  | ; GFX12-GISEL-NEXT:    v_pk_min_num_f16 v12, v12, v28 | 
|  | ; GFX12-GISEL-NEXT:    v_pk_min_num_f16 v13, v13, v29 | 
|  | ; GFX12-GISEL-NEXT:    v_pk_min_num_f16 v14, v14, v30 | 
|  | ; GFX12-GISEL-NEXT:    s_wait_loadcnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    v_pk_max_num_f16 v16, v31, v31 | 
|  | ; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX12-GISEL-NEXT:    v_pk_min_num_f16 v15, v15, v16 | 
|  | ; GFX12-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | %result = call <32 x half> @llvm.minimumnum.v32f16(<32 x half> %x, <32 x half> %y) | 
|  | ret <32 x half> %result | 
|  | } | 
|  |  | 
|  | define <2 x float> @v_minimumnum_v2f32(<2 x float> %x, <2 x float> %y) { | 
|  | ; GFX7-SDAG-LABEL: v_minimumnum_v2f32: | 
|  | ; GFX7-SDAG:       ; %bb.0: | 
|  | ; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX7-SDAG-NEXT:    v_mul_f32_e32 v2, 1.0, v2 | 
|  | ; GFX7-SDAG-NEXT:    v_mul_f32_e32 v0, 1.0, v0 | 
|  | ; GFX7-SDAG-NEXT:    v_min_f32_e32 v0, v0, v2 | 
|  | ; GFX7-SDAG-NEXT:    v_mul_f32_e32 v2, 1.0, v3 | 
|  | ; GFX7-SDAG-NEXT:    v_mul_f32_e32 v1, 1.0, v1 | 
|  | ; GFX7-SDAG-NEXT:    v_min_f32_e32 v1, v1, v2 | 
|  | ; GFX7-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX7-GISEL-LABEL: v_minimumnum_v2f32: | 
|  | ; GFX7-GISEL:       ; %bb.0: | 
|  | ; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX7-GISEL-NEXT:    v_mul_f32_e32 v0, 1.0, v0 | 
|  | ; GFX7-GISEL-NEXT:    v_mul_f32_e32 v2, 1.0, v2 | 
|  | ; GFX7-GISEL-NEXT:    v_min_f32_e32 v0, v0, v2 | 
|  | ; GFX7-GISEL-NEXT:    v_mul_f32_e32 v1, 1.0, v1 | 
|  | ; GFX7-GISEL-NEXT:    v_mul_f32_e32 v2, 1.0, v3 | 
|  | ; GFX7-GISEL-NEXT:    v_min_f32_e32 v1, v1, v2 | 
|  | ; GFX7-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX8-SDAG-LABEL: v_minimumnum_v2f32: | 
|  | ; GFX8-SDAG:       ; %bb.0: | 
|  | ; GFX8-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX8-SDAG-NEXT:    v_mul_f32_e32 v2, 1.0, v2 | 
|  | ; GFX8-SDAG-NEXT:    v_mul_f32_e32 v0, 1.0, v0 | 
|  | ; GFX8-SDAG-NEXT:    v_min_f32_e32 v0, v0, v2 | 
|  | ; GFX8-SDAG-NEXT:    v_mul_f32_e32 v2, 1.0, v3 | 
|  | ; GFX8-SDAG-NEXT:    v_mul_f32_e32 v1, 1.0, v1 | 
|  | ; GFX8-SDAG-NEXT:    v_min_f32_e32 v1, v1, v2 | 
|  | ; GFX8-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX8-GISEL-LABEL: v_minimumnum_v2f32: | 
|  | ; GFX8-GISEL:       ; %bb.0: | 
|  | ; GFX8-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX8-GISEL-NEXT:    v_mul_f32_e32 v0, 1.0, v0 | 
|  | ; GFX8-GISEL-NEXT:    v_mul_f32_e32 v2, 1.0, v2 | 
|  | ; GFX8-GISEL-NEXT:    v_min_f32_e32 v0, v0, v2 | 
|  | ; GFX8-GISEL-NEXT:    v_mul_f32_e32 v1, 1.0, v1 | 
|  | ; GFX8-GISEL-NEXT:    v_mul_f32_e32 v2, 1.0, v3 | 
|  | ; GFX8-GISEL-NEXT:    v_min_f32_e32 v1, v1, v2 | 
|  | ; GFX8-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX9-SDAG-LABEL: v_minimumnum_v2f32: | 
|  | ; GFX9-SDAG:       ; %bb.0: | 
|  | ; GFX9-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX9-SDAG-NEXT:    v_max_f32_e32 v2, v2, v2 | 
|  | ; GFX9-SDAG-NEXT:    v_max_f32_e32 v0, v0, v0 | 
|  | ; GFX9-SDAG-NEXT:    v_min_f32_e32 v0, v0, v2 | 
|  | ; GFX9-SDAG-NEXT:    v_max_f32_e32 v2, v3, v3 | 
|  | ; GFX9-SDAG-NEXT:    v_max_f32_e32 v1, v1, v1 | 
|  | ; GFX9-SDAG-NEXT:    v_min_f32_e32 v1, v1, v2 | 
|  | ; GFX9-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX9-GISEL-LABEL: v_minimumnum_v2f32: | 
|  | ; GFX9-GISEL:       ; %bb.0: | 
|  | ; GFX9-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX9-GISEL-NEXT:    v_max_f32_e32 v0, v0, v0 | 
|  | ; GFX9-GISEL-NEXT:    v_max_f32_e32 v2, v2, v2 | 
|  | ; GFX9-GISEL-NEXT:    v_min_f32_e32 v0, v0, v2 | 
|  | ; GFX9-GISEL-NEXT:    v_max_f32_e32 v1, v1, v1 | 
|  | ; GFX9-GISEL-NEXT:    v_max_f32_e32 v2, v3, v3 | 
|  | ; GFX9-GISEL-NEXT:    v_min_f32_e32 v1, v1, v2 | 
|  | ; GFX9-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX10-SDAG-LABEL: v_minimumnum_v2f32: | 
|  | ; GFX10-SDAG:       ; %bb.0: | 
|  | ; GFX10-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX10-SDAG-NEXT:    v_max_f32_e32 v2, v2, v2 | 
|  | ; GFX10-SDAG-NEXT:    v_max_f32_e32 v0, v0, v0 | 
|  | ; GFX10-SDAG-NEXT:    v_max_f32_e32 v3, v3, v3 | 
|  | ; GFX10-SDAG-NEXT:    v_max_f32_e32 v1, v1, v1 | 
|  | ; GFX10-SDAG-NEXT:    v_min_f32_e32 v0, v0, v2 | 
|  | ; GFX10-SDAG-NEXT:    v_min_f32_e32 v1, v1, v3 | 
|  | ; GFX10-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX10-GISEL-LABEL: v_minimumnum_v2f32: | 
|  | ; GFX10-GISEL:       ; %bb.0: | 
|  | ; GFX10-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX10-GISEL-NEXT:    v_max_f32_e32 v0, v0, v0 | 
|  | ; GFX10-GISEL-NEXT:    v_max_f32_e32 v2, v2, v2 | 
|  | ; GFX10-GISEL-NEXT:    v_max_f32_e32 v1, v1, v1 | 
|  | ; GFX10-GISEL-NEXT:    v_max_f32_e32 v3, v3, v3 | 
|  | ; GFX10-GISEL-NEXT:    v_min_f32_e32 v0, v0, v2 | 
|  | ; GFX10-GISEL-NEXT:    v_min_f32_e32 v1, v1, v3 | 
|  | ; GFX10-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX11-SDAG-LABEL: v_minimumnum_v2f32: | 
|  | ; GFX11-SDAG:       ; %bb.0: | 
|  | ; GFX11-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX11-SDAG-NEXT:    v_dual_max_f32 v2, v2, v2 :: v_dual_max_f32 v3, v3, v3 | 
|  | ; GFX11-SDAG-NEXT:    v_dual_max_f32 v0, v0, v0 :: v_dual_max_f32 v1, v1, v1 | 
|  | ; GFX11-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX11-SDAG-NEXT:    v_dual_min_f32 v0, v0, v2 :: v_dual_min_f32 v1, v1, v3 | 
|  | ; GFX11-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX11-GISEL-LABEL: v_minimumnum_v2f32: | 
|  | ; GFX11-GISEL:       ; %bb.0: | 
|  | ; GFX11-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX11-GISEL-NEXT:    v_dual_max_f32 v0, v0, v0 :: v_dual_max_f32 v1, v1, v1 | 
|  | ; GFX11-GISEL-NEXT:    v_dual_max_f32 v2, v2, v2 :: v_dual_max_f32 v3, v3, v3 | 
|  | ; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX11-GISEL-NEXT:    v_dual_min_f32 v0, v0, v2 :: v_dual_min_f32 v1, v1, v3 | 
|  | ; GFX11-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX12-SDAG-LABEL: v_minimumnum_v2f32: | 
|  | ; GFX12-SDAG:       ; %bb.0: | 
|  | ; GFX12-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    s_wait_expcnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    s_wait_samplecnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    s_wait_bvhcnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    s_wait_kmcnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    v_dual_max_num_f32 v2, v2, v2 :: v_dual_max_num_f32 v3, v3, v3 | 
|  | ; GFX12-SDAG-NEXT:    v_dual_max_num_f32 v0, v0, v0 :: v_dual_max_num_f32 v1, v1, v1 | 
|  | ; GFX12-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX12-SDAG-NEXT:    v_dual_min_num_f32 v0, v0, v2 :: v_dual_min_num_f32 v1, v1, v3 | 
|  | ; GFX12-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX12-GISEL-LABEL: v_minimumnum_v2f32: | 
|  | ; GFX12-GISEL:       ; %bb.0: | 
|  | ; GFX12-GISEL-NEXT:    s_wait_loadcnt_dscnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    s_wait_expcnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    s_wait_samplecnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    s_wait_bvhcnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    s_wait_kmcnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    v_dual_max_num_f32 v0, v0, v0 :: v_dual_max_num_f32 v1, v1, v1 | 
|  | ; GFX12-GISEL-NEXT:    v_dual_max_num_f32 v2, v2, v2 :: v_dual_max_num_f32 v3, v3, v3 | 
|  | ; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX12-GISEL-NEXT:    v_dual_min_num_f32 v0, v0, v2 :: v_dual_min_num_f32 v1, v1, v3 | 
|  | ; GFX12-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | %result = call <2 x float> @llvm.minimumnum.v2f32(<2 x float> %x, <2 x float> %y) | 
|  | ret <2 x float> %result | 
|  | } | 
|  |  | 
|  | define <2 x float> @v_minimumnum_v2f32_nnan(<2 x float> %x, <2 x float> %y) { | 
|  | ; GFX7-LABEL: v_minimumnum_v2f32_nnan: | 
|  | ; GFX7:       ; %bb.0: | 
|  | ; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX7-NEXT:    v_min_f32_e32 v0, v0, v2 | 
|  | ; GFX7-NEXT:    v_min_f32_e32 v1, v1, v3 | 
|  | ; GFX7-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX8-LABEL: v_minimumnum_v2f32_nnan: | 
|  | ; GFX8:       ; %bb.0: | 
|  | ; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX8-NEXT:    v_min_f32_e32 v0, v0, v2 | 
|  | ; GFX8-NEXT:    v_min_f32_e32 v1, v1, v3 | 
|  | ; GFX8-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX9-LABEL: v_minimumnum_v2f32_nnan: | 
|  | ; GFX9:       ; %bb.0: | 
|  | ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX9-NEXT:    v_min_f32_e32 v0, v0, v2 | 
|  | ; GFX9-NEXT:    v_min_f32_e32 v1, v1, v3 | 
|  | ; GFX9-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX10-LABEL: v_minimumnum_v2f32_nnan: | 
|  | ; GFX10:       ; %bb.0: | 
|  | ; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX10-NEXT:    v_min_f32_e32 v0, v0, v2 | 
|  | ; GFX10-NEXT:    v_min_f32_e32 v1, v1, v3 | 
|  | ; GFX10-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX11-LABEL: v_minimumnum_v2f32_nnan: | 
|  | ; GFX11:       ; %bb.0: | 
|  | ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX11-NEXT:    v_dual_min_f32 v0, v0, v2 :: v_dual_min_f32 v1, v1, v3 | 
|  | ; GFX11-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX12-LABEL: v_minimumnum_v2f32_nnan: | 
|  | ; GFX12:       ; %bb.0: | 
|  | ; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0 | 
|  | ; GFX12-NEXT:    s_wait_expcnt 0x0 | 
|  | ; GFX12-NEXT:    s_wait_samplecnt 0x0 | 
|  | ; GFX12-NEXT:    s_wait_bvhcnt 0x0 | 
|  | ; GFX12-NEXT:    s_wait_kmcnt 0x0 | 
|  | ; GFX12-NEXT:    v_dual_min_num_f32 v0, v0, v2 :: v_dual_min_num_f32 v1, v1, v3 | 
|  | ; GFX12-NEXT:    s_setpc_b64 s[30:31] | 
|  | %result = call nnan <2 x float> @llvm.minimumnum.v2f32(<2 x float> %x, <2 x float> %y) | 
|  | ret <2 x float> %result | 
|  | } | 
|  |  | 
|  | define <3 x float> @v_minimumnum_v3f32(<3 x float> %x, <3 x float> %y) { | 
|  | ; GFX7-SDAG-LABEL: v_minimumnum_v3f32: | 
|  | ; GFX7-SDAG:       ; %bb.0: | 
|  | ; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX7-SDAG-NEXT:    v_mul_f32_e32 v3, 1.0, v3 | 
|  | ; GFX7-SDAG-NEXT:    v_mul_f32_e32 v0, 1.0, v0 | 
|  | ; GFX7-SDAG-NEXT:    v_min_f32_e32 v0, v0, v3 | 
|  | ; GFX7-SDAG-NEXT:    v_mul_f32_e32 v3, 1.0, v4 | 
|  | ; GFX7-SDAG-NEXT:    v_mul_f32_e32 v1, 1.0, v1 | 
|  | ; GFX7-SDAG-NEXT:    v_min_f32_e32 v1, v1, v3 | 
|  | ; GFX7-SDAG-NEXT:    v_mul_f32_e32 v3, 1.0, v5 | 
|  | ; GFX7-SDAG-NEXT:    v_mul_f32_e32 v2, 1.0, v2 | 
|  | ; GFX7-SDAG-NEXT:    v_min_f32_e32 v2, v2, v3 | 
|  | ; GFX7-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX7-GISEL-LABEL: v_minimumnum_v3f32: | 
|  | ; GFX7-GISEL:       ; %bb.0: | 
|  | ; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX7-GISEL-NEXT:    v_mul_f32_e32 v0, 1.0, v0 | 
|  | ; GFX7-GISEL-NEXT:    v_mul_f32_e32 v3, 1.0, v3 | 
|  | ; GFX7-GISEL-NEXT:    v_min_f32_e32 v0, v0, v3 | 
|  | ; GFX7-GISEL-NEXT:    v_mul_f32_e32 v1, 1.0, v1 | 
|  | ; GFX7-GISEL-NEXT:    v_mul_f32_e32 v3, 1.0, v4 | 
|  | ; GFX7-GISEL-NEXT:    v_min_f32_e32 v1, v1, v3 | 
|  | ; GFX7-GISEL-NEXT:    v_mul_f32_e32 v2, 1.0, v2 | 
|  | ; GFX7-GISEL-NEXT:    v_mul_f32_e32 v3, 1.0, v5 | 
|  | ; GFX7-GISEL-NEXT:    v_min_f32_e32 v2, v2, v3 | 
|  | ; GFX7-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX8-SDAG-LABEL: v_minimumnum_v3f32: | 
|  | ; GFX8-SDAG:       ; %bb.0: | 
|  | ; GFX8-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX8-SDAG-NEXT:    v_mul_f32_e32 v3, 1.0, v3 | 
|  | ; GFX8-SDAG-NEXT:    v_mul_f32_e32 v0, 1.0, v0 | 
|  | ; GFX8-SDAG-NEXT:    v_min_f32_e32 v0, v0, v3 | 
|  | ; GFX8-SDAG-NEXT:    v_mul_f32_e32 v3, 1.0, v4 | 
|  | ; GFX8-SDAG-NEXT:    v_mul_f32_e32 v1, 1.0, v1 | 
|  | ; GFX8-SDAG-NEXT:    v_min_f32_e32 v1, v1, v3 | 
|  | ; GFX8-SDAG-NEXT:    v_mul_f32_e32 v3, 1.0, v5 | 
|  | ; GFX8-SDAG-NEXT:    v_mul_f32_e32 v2, 1.0, v2 | 
|  | ; GFX8-SDAG-NEXT:    v_min_f32_e32 v2, v2, v3 | 
|  | ; GFX8-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX8-GISEL-LABEL: v_minimumnum_v3f32: | 
|  | ; GFX8-GISEL:       ; %bb.0: | 
|  | ; GFX8-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX8-GISEL-NEXT:    v_mul_f32_e32 v0, 1.0, v0 | 
|  | ; GFX8-GISEL-NEXT:    v_mul_f32_e32 v3, 1.0, v3 | 
|  | ; GFX8-GISEL-NEXT:    v_min_f32_e32 v0, v0, v3 | 
|  | ; GFX8-GISEL-NEXT:    v_mul_f32_e32 v1, 1.0, v1 | 
|  | ; GFX8-GISEL-NEXT:    v_mul_f32_e32 v3, 1.0, v4 | 
|  | ; GFX8-GISEL-NEXT:    v_min_f32_e32 v1, v1, v3 | 
|  | ; GFX8-GISEL-NEXT:    v_mul_f32_e32 v2, 1.0, v2 | 
|  | ; GFX8-GISEL-NEXT:    v_mul_f32_e32 v3, 1.0, v5 | 
|  | ; GFX8-GISEL-NEXT:    v_min_f32_e32 v2, v2, v3 | 
|  | ; GFX8-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX9-SDAG-LABEL: v_minimumnum_v3f32: | 
|  | ; GFX9-SDAG:       ; %bb.0: | 
|  | ; GFX9-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX9-SDAG-NEXT:    v_max_f32_e32 v3, v3, v3 | 
|  | ; GFX9-SDAG-NEXT:    v_max_f32_e32 v0, v0, v0 | 
|  | ; GFX9-SDAG-NEXT:    v_min_f32_e32 v0, v0, v3 | 
|  | ; GFX9-SDAG-NEXT:    v_max_f32_e32 v3, v4, v4 | 
|  | ; GFX9-SDAG-NEXT:    v_max_f32_e32 v1, v1, v1 | 
|  | ; GFX9-SDAG-NEXT:    v_min_f32_e32 v1, v1, v3 | 
|  | ; GFX9-SDAG-NEXT:    v_max_f32_e32 v3, v5, v5 | 
|  | ; GFX9-SDAG-NEXT:    v_max_f32_e32 v2, v2, v2 | 
|  | ; GFX9-SDAG-NEXT:    v_min_f32_e32 v2, v2, v3 | 
|  | ; GFX9-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX9-GISEL-LABEL: v_minimumnum_v3f32: | 
|  | ; GFX9-GISEL:       ; %bb.0: | 
|  | ; GFX9-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX9-GISEL-NEXT:    v_max_f32_e32 v0, v0, v0 | 
|  | ; GFX9-GISEL-NEXT:    v_max_f32_e32 v3, v3, v3 | 
|  | ; GFX9-GISEL-NEXT:    v_min_f32_e32 v0, v0, v3 | 
|  | ; GFX9-GISEL-NEXT:    v_max_f32_e32 v1, v1, v1 | 
|  | ; GFX9-GISEL-NEXT:    v_max_f32_e32 v3, v4, v4 | 
|  | ; GFX9-GISEL-NEXT:    v_min_f32_e32 v1, v1, v3 | 
|  | ; GFX9-GISEL-NEXT:    v_max_f32_e32 v2, v2, v2 | 
|  | ; GFX9-GISEL-NEXT:    v_max_f32_e32 v3, v5, v5 | 
|  | ; GFX9-GISEL-NEXT:    v_min_f32_e32 v2, v2, v3 | 
|  | ; GFX9-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX10-SDAG-LABEL: v_minimumnum_v3f32: | 
|  | ; GFX10-SDAG:       ; %bb.0: | 
|  | ; GFX10-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX10-SDAG-NEXT:    v_max_f32_e32 v3, v3, v3 | 
|  | ; GFX10-SDAG-NEXT:    v_max_f32_e32 v0, v0, v0 | 
|  | ; GFX10-SDAG-NEXT:    v_max_f32_e32 v4, v4, v4 | 
|  | ; GFX10-SDAG-NEXT:    v_max_f32_e32 v1, v1, v1 | 
|  | ; GFX10-SDAG-NEXT:    v_max_f32_e32 v5, v5, v5 | 
|  | ; GFX10-SDAG-NEXT:    v_max_f32_e32 v2, v2, v2 | 
|  | ; GFX10-SDAG-NEXT:    v_min_f32_e32 v0, v0, v3 | 
|  | ; GFX10-SDAG-NEXT:    v_min_f32_e32 v1, v1, v4 | 
|  | ; GFX10-SDAG-NEXT:    v_min_f32_e32 v2, v2, v5 | 
|  | ; GFX10-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX10-GISEL-LABEL: v_minimumnum_v3f32: | 
|  | ; GFX10-GISEL:       ; %bb.0: | 
|  | ; GFX10-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX10-GISEL-NEXT:    v_max_f32_e32 v0, v0, v0 | 
|  | ; GFX10-GISEL-NEXT:    v_max_f32_e32 v3, v3, v3 | 
|  | ; GFX10-GISEL-NEXT:    v_max_f32_e32 v1, v1, v1 | 
|  | ; GFX10-GISEL-NEXT:    v_max_f32_e32 v4, v4, v4 | 
|  | ; GFX10-GISEL-NEXT:    v_max_f32_e32 v2, v2, v2 | 
|  | ; GFX10-GISEL-NEXT:    v_max_f32_e32 v5, v5, v5 | 
|  | ; GFX10-GISEL-NEXT:    v_min_f32_e32 v0, v0, v3 | 
|  | ; GFX10-GISEL-NEXT:    v_min_f32_e32 v1, v1, v4 | 
|  | ; GFX10-GISEL-NEXT:    v_min_f32_e32 v2, v2, v5 | 
|  | ; GFX10-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX11-SDAG-LABEL: v_minimumnum_v3f32: | 
|  | ; GFX11-SDAG:       ; %bb.0: | 
|  | ; GFX11-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX11-SDAG-NEXT:    v_dual_max_f32 v3, v3, v3 :: v_dual_max_f32 v0, v0, v0 | 
|  | ; GFX11-SDAG-NEXT:    v_dual_max_f32 v4, v4, v4 :: v_dual_max_f32 v1, v1, v1 | 
|  | ; GFX11-SDAG-NEXT:    v_dual_max_f32 v5, v5, v5 :: v_dual_max_f32 v2, v2, v2 | 
|  | ; GFX11-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2) | 
|  | ; GFX11-SDAG-NEXT:    v_dual_min_f32 v0, v0, v3 :: v_dual_min_f32 v1, v1, v4 | 
|  | ; GFX11-SDAG-NEXT:    v_min_f32_e32 v2, v2, v5 | 
|  | ; GFX11-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX11-GISEL-LABEL: v_minimumnum_v3f32: | 
|  | ; GFX11-GISEL:       ; %bb.0: | 
|  | ; GFX11-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX11-GISEL-NEXT:    v_dual_max_f32 v0, v0, v0 :: v_dual_max_f32 v3, v3, v3 | 
|  | ; GFX11-GISEL-NEXT:    v_dual_max_f32 v1, v1, v1 :: v_dual_max_f32 v4, v4, v4 | 
|  | ; GFX11-GISEL-NEXT:    v_dual_max_f32 v2, v2, v2 :: v_dual_max_f32 v5, v5, v5 | 
|  | ; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2) | 
|  | ; GFX11-GISEL-NEXT:    v_dual_min_f32 v0, v0, v3 :: v_dual_min_f32 v1, v1, v4 | 
|  | ; GFX11-GISEL-NEXT:    v_min_f32_e32 v2, v2, v5 | 
|  | ; GFX11-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX12-SDAG-LABEL: v_minimumnum_v3f32: | 
|  | ; GFX12-SDAG:       ; %bb.0: | 
|  | ; GFX12-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    s_wait_expcnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    s_wait_samplecnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    s_wait_bvhcnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    s_wait_kmcnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    v_dual_max_num_f32 v3, v3, v3 :: v_dual_max_num_f32 v0, v0, v0 | 
|  | ; GFX12-SDAG-NEXT:    v_dual_max_num_f32 v4, v4, v4 :: v_dual_max_num_f32 v1, v1, v1 | 
|  | ; GFX12-SDAG-NEXT:    v_dual_max_num_f32 v5, v5, v5 :: v_dual_max_num_f32 v2, v2, v2 | 
|  | ; GFX12-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2) | 
|  | ; GFX12-SDAG-NEXT:    v_dual_min_num_f32 v0, v0, v3 :: v_dual_min_num_f32 v1, v1, v4 | 
|  | ; GFX12-SDAG-NEXT:    v_min_num_f32_e32 v2, v2, v5 | 
|  | ; GFX12-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX12-GISEL-LABEL: v_minimumnum_v3f32: | 
|  | ; GFX12-GISEL:       ; %bb.0: | 
|  | ; GFX12-GISEL-NEXT:    s_wait_loadcnt_dscnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    s_wait_expcnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    s_wait_samplecnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    s_wait_bvhcnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    s_wait_kmcnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    v_dual_max_num_f32 v0, v0, v0 :: v_dual_max_num_f32 v3, v3, v3 | 
|  | ; GFX12-GISEL-NEXT:    v_dual_max_num_f32 v1, v1, v1 :: v_dual_max_num_f32 v4, v4, v4 | 
|  | ; GFX12-GISEL-NEXT:    v_dual_max_num_f32 v2, v2, v2 :: v_dual_max_num_f32 v5, v5, v5 | 
|  | ; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2) | 
|  | ; GFX12-GISEL-NEXT:    v_dual_min_num_f32 v0, v0, v3 :: v_dual_min_num_f32 v1, v1, v4 | 
|  | ; GFX12-GISEL-NEXT:    v_min_num_f32_e32 v2, v2, v5 | 
|  | ; GFX12-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | %result = call <3 x float> @llvm.minimumnum.v3f32(<3 x float> %x, <3 x float> %y) | 
|  | ret <3 x float> %result | 
|  | } | 
|  |  | 
|  | define <3 x float> @v_minimumnum_v3f32_nnan(<3 x float> %x, <3 x float> %y) { | 
|  | ; GFX7-LABEL: v_minimumnum_v3f32_nnan: | 
|  | ; GFX7:       ; %bb.0: | 
|  | ; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX7-NEXT:    v_min_f32_e32 v0, v0, v3 | 
|  | ; GFX7-NEXT:    v_min_f32_e32 v1, v1, v4 | 
|  | ; GFX7-NEXT:    v_min_f32_e32 v2, v2, v5 | 
|  | ; GFX7-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX8-LABEL: v_minimumnum_v3f32_nnan: | 
|  | ; GFX8:       ; %bb.0: | 
|  | ; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX8-NEXT:    v_min_f32_e32 v0, v0, v3 | 
|  | ; GFX8-NEXT:    v_min_f32_e32 v1, v1, v4 | 
|  | ; GFX8-NEXT:    v_min_f32_e32 v2, v2, v5 | 
|  | ; GFX8-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX9-LABEL: v_minimumnum_v3f32_nnan: | 
|  | ; GFX9:       ; %bb.0: | 
|  | ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX9-NEXT:    v_min_f32_e32 v0, v0, v3 | 
|  | ; GFX9-NEXT:    v_min_f32_e32 v1, v1, v4 | 
|  | ; GFX9-NEXT:    v_min_f32_e32 v2, v2, v5 | 
|  | ; GFX9-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX10-LABEL: v_minimumnum_v3f32_nnan: | 
|  | ; GFX10:       ; %bb.0: | 
|  | ; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX10-NEXT:    v_min_f32_e32 v0, v0, v3 | 
|  | ; GFX10-NEXT:    v_min_f32_e32 v1, v1, v4 | 
|  | ; GFX10-NEXT:    v_min_f32_e32 v2, v2, v5 | 
|  | ; GFX10-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX11-LABEL: v_minimumnum_v3f32_nnan: | 
|  | ; GFX11:       ; %bb.0: | 
|  | ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX11-NEXT:    v_dual_min_f32 v0, v0, v3 :: v_dual_min_f32 v1, v1, v4 | 
|  | ; GFX11-NEXT:    v_min_f32_e32 v2, v2, v5 | 
|  | ; GFX11-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX12-LABEL: v_minimumnum_v3f32_nnan: | 
|  | ; GFX12:       ; %bb.0: | 
|  | ; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0 | 
|  | ; GFX12-NEXT:    s_wait_expcnt 0x0 | 
|  | ; GFX12-NEXT:    s_wait_samplecnt 0x0 | 
|  | ; GFX12-NEXT:    s_wait_bvhcnt 0x0 | 
|  | ; GFX12-NEXT:    s_wait_kmcnt 0x0 | 
|  | ; GFX12-NEXT:    v_dual_min_num_f32 v0, v0, v3 :: v_dual_min_num_f32 v1, v1, v4 | 
|  | ; GFX12-NEXT:    v_min_num_f32_e32 v2, v2, v5 | 
|  | ; GFX12-NEXT:    s_setpc_b64 s[30:31] | 
|  | %result = call nnan <3 x float> @llvm.minimumnum.v3f32(<3 x float> %x, <3 x float> %y) | 
|  | ret <3 x float> %result | 
|  | } | 
|  |  | 
|  | define <4 x float> @v_minimumnum_v4f32(<4 x float> %x, <4 x float> %y) { | 
|  | ; GFX7-SDAG-LABEL: v_minimumnum_v4f32: | 
|  | ; GFX7-SDAG:       ; %bb.0: | 
|  | ; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX7-SDAG-NEXT:    v_mul_f32_e32 v4, 1.0, v4 | 
|  | ; GFX7-SDAG-NEXT:    v_mul_f32_e32 v0, 1.0, v0 | 
|  | ; GFX7-SDAG-NEXT:    v_min_f32_e32 v0, v0, v4 | 
|  | ; GFX7-SDAG-NEXT:    v_mul_f32_e32 v4, 1.0, v5 | 
|  | ; GFX7-SDAG-NEXT:    v_mul_f32_e32 v1, 1.0, v1 | 
|  | ; GFX7-SDAG-NEXT:    v_min_f32_e32 v1, v1, v4 | 
|  | ; GFX7-SDAG-NEXT:    v_mul_f32_e32 v4, 1.0, v6 | 
|  | ; GFX7-SDAG-NEXT:    v_mul_f32_e32 v2, 1.0, v2 | 
|  | ; GFX7-SDAG-NEXT:    v_min_f32_e32 v2, v2, v4 | 
|  | ; GFX7-SDAG-NEXT:    v_mul_f32_e32 v4, 1.0, v7 | 
|  | ; GFX7-SDAG-NEXT:    v_mul_f32_e32 v3, 1.0, v3 | 
|  | ; GFX7-SDAG-NEXT:    v_min_f32_e32 v3, v3, v4 | 
|  | ; GFX7-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX7-GISEL-LABEL: v_minimumnum_v4f32: | 
|  | ; GFX7-GISEL:       ; %bb.0: | 
|  | ; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX7-GISEL-NEXT:    v_mul_f32_e32 v0, 1.0, v0 | 
|  | ; GFX7-GISEL-NEXT:    v_mul_f32_e32 v4, 1.0, v4 | 
|  | ; GFX7-GISEL-NEXT:    v_min_f32_e32 v0, v0, v4 | 
|  | ; GFX7-GISEL-NEXT:    v_mul_f32_e32 v1, 1.0, v1 | 
|  | ; GFX7-GISEL-NEXT:    v_mul_f32_e32 v4, 1.0, v5 | 
|  | ; GFX7-GISEL-NEXT:    v_min_f32_e32 v1, v1, v4 | 
|  | ; GFX7-GISEL-NEXT:    v_mul_f32_e32 v2, 1.0, v2 | 
|  | ; GFX7-GISEL-NEXT:    v_mul_f32_e32 v4, 1.0, v6 | 
|  | ; GFX7-GISEL-NEXT:    v_min_f32_e32 v2, v2, v4 | 
|  | ; GFX7-GISEL-NEXT:    v_mul_f32_e32 v3, 1.0, v3 | 
|  | ; GFX7-GISEL-NEXT:    v_mul_f32_e32 v4, 1.0, v7 | 
|  | ; GFX7-GISEL-NEXT:    v_min_f32_e32 v3, v3, v4 | 
|  | ; GFX7-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX8-SDAG-LABEL: v_minimumnum_v4f32: | 
|  | ; GFX8-SDAG:       ; %bb.0: | 
|  | ; GFX8-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX8-SDAG-NEXT:    v_mul_f32_e32 v4, 1.0, v4 | 
|  | ; GFX8-SDAG-NEXT:    v_mul_f32_e32 v0, 1.0, v0 | 
|  | ; GFX8-SDAG-NEXT:    v_min_f32_e32 v0, v0, v4 | 
|  | ; GFX8-SDAG-NEXT:    v_mul_f32_e32 v4, 1.0, v5 | 
|  | ; GFX8-SDAG-NEXT:    v_mul_f32_e32 v1, 1.0, v1 | 
|  | ; GFX8-SDAG-NEXT:    v_min_f32_e32 v1, v1, v4 | 
|  | ; GFX8-SDAG-NEXT:    v_mul_f32_e32 v4, 1.0, v6 | 
|  | ; GFX8-SDAG-NEXT:    v_mul_f32_e32 v2, 1.0, v2 | 
|  | ; GFX8-SDAG-NEXT:    v_min_f32_e32 v2, v2, v4 | 
|  | ; GFX8-SDAG-NEXT:    v_mul_f32_e32 v4, 1.0, v7 | 
|  | ; GFX8-SDAG-NEXT:    v_mul_f32_e32 v3, 1.0, v3 | 
|  | ; GFX8-SDAG-NEXT:    v_min_f32_e32 v3, v3, v4 | 
|  | ; GFX8-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX8-GISEL-LABEL: v_minimumnum_v4f32: | 
|  | ; GFX8-GISEL:       ; %bb.0: | 
|  | ; GFX8-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX8-GISEL-NEXT:    v_mul_f32_e32 v0, 1.0, v0 | 
|  | ; GFX8-GISEL-NEXT:    v_mul_f32_e32 v4, 1.0, v4 | 
|  | ; GFX8-GISEL-NEXT:    v_min_f32_e32 v0, v0, v4 | 
|  | ; GFX8-GISEL-NEXT:    v_mul_f32_e32 v1, 1.0, v1 | 
|  | ; GFX8-GISEL-NEXT:    v_mul_f32_e32 v4, 1.0, v5 | 
|  | ; GFX8-GISEL-NEXT:    v_min_f32_e32 v1, v1, v4 | 
|  | ; GFX8-GISEL-NEXT:    v_mul_f32_e32 v2, 1.0, v2 | 
|  | ; GFX8-GISEL-NEXT:    v_mul_f32_e32 v4, 1.0, v6 | 
|  | ; GFX8-GISEL-NEXT:    v_min_f32_e32 v2, v2, v4 | 
|  | ; GFX8-GISEL-NEXT:    v_mul_f32_e32 v3, 1.0, v3 | 
|  | ; GFX8-GISEL-NEXT:    v_mul_f32_e32 v4, 1.0, v7 | 
|  | ; GFX8-GISEL-NEXT:    v_min_f32_e32 v3, v3, v4 | 
|  | ; GFX8-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX9-SDAG-LABEL: v_minimumnum_v4f32: | 
|  | ; GFX9-SDAG:       ; %bb.0: | 
|  | ; GFX9-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX9-SDAG-NEXT:    v_max_f32_e32 v4, v4, v4 | 
|  | ; GFX9-SDAG-NEXT:    v_max_f32_e32 v0, v0, v0 | 
|  | ; GFX9-SDAG-NEXT:    v_min_f32_e32 v0, v0, v4 | 
|  | ; GFX9-SDAG-NEXT:    v_max_f32_e32 v4, v5, v5 | 
|  | ; GFX9-SDAG-NEXT:    v_max_f32_e32 v1, v1, v1 | 
|  | ; GFX9-SDAG-NEXT:    v_min_f32_e32 v1, v1, v4 | 
|  | ; GFX9-SDAG-NEXT:    v_max_f32_e32 v4, v6, v6 | 
|  | ; GFX9-SDAG-NEXT:    v_max_f32_e32 v2, v2, v2 | 
|  | ; GFX9-SDAG-NEXT:    v_min_f32_e32 v2, v2, v4 | 
|  | ; GFX9-SDAG-NEXT:    v_max_f32_e32 v4, v7, v7 | 
|  | ; GFX9-SDAG-NEXT:    v_max_f32_e32 v3, v3, v3 | 
|  | ; GFX9-SDAG-NEXT:    v_min_f32_e32 v3, v3, v4 | 
|  | ; GFX9-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX9-GISEL-LABEL: v_minimumnum_v4f32: | 
|  | ; GFX9-GISEL:       ; %bb.0: | 
|  | ; GFX9-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX9-GISEL-NEXT:    v_max_f32_e32 v0, v0, v0 | 
|  | ; GFX9-GISEL-NEXT:    v_max_f32_e32 v4, v4, v4 | 
|  | ; GFX9-GISEL-NEXT:    v_min_f32_e32 v0, v0, v4 | 
|  | ; GFX9-GISEL-NEXT:    v_max_f32_e32 v1, v1, v1 | 
|  | ; GFX9-GISEL-NEXT:    v_max_f32_e32 v4, v5, v5 | 
|  | ; GFX9-GISEL-NEXT:    v_min_f32_e32 v1, v1, v4 | 
|  | ; GFX9-GISEL-NEXT:    v_max_f32_e32 v2, v2, v2 | 
|  | ; GFX9-GISEL-NEXT:    v_max_f32_e32 v4, v6, v6 | 
|  | ; GFX9-GISEL-NEXT:    v_min_f32_e32 v2, v2, v4 | 
|  | ; GFX9-GISEL-NEXT:    v_max_f32_e32 v3, v3, v3 | 
|  | ; GFX9-GISEL-NEXT:    v_max_f32_e32 v4, v7, v7 | 
|  | ; GFX9-GISEL-NEXT:    v_min_f32_e32 v3, v3, v4 | 
|  | ; GFX9-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX10-SDAG-LABEL: v_minimumnum_v4f32: | 
|  | ; GFX10-SDAG:       ; %bb.0: | 
|  | ; GFX10-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX10-SDAG-NEXT:    v_max_f32_e32 v4, v4, v4 | 
|  | ; GFX10-SDAG-NEXT:    v_max_f32_e32 v0, v0, v0 | 
|  | ; GFX10-SDAG-NEXT:    v_max_f32_e32 v5, v5, v5 | 
|  | ; GFX10-SDAG-NEXT:    v_max_f32_e32 v1, v1, v1 | 
|  | ; GFX10-SDAG-NEXT:    v_max_f32_e32 v6, v6, v6 | 
|  | ; GFX10-SDAG-NEXT:    v_max_f32_e32 v2, v2, v2 | 
|  | ; GFX10-SDAG-NEXT:    v_max_f32_e32 v7, v7, v7 | 
|  | ; GFX10-SDAG-NEXT:    v_max_f32_e32 v3, v3, v3 | 
|  | ; GFX10-SDAG-NEXT:    v_min_f32_e32 v0, v0, v4 | 
|  | ; GFX10-SDAG-NEXT:    v_min_f32_e32 v1, v1, v5 | 
|  | ; GFX10-SDAG-NEXT:    v_min_f32_e32 v2, v2, v6 | 
|  | ; GFX10-SDAG-NEXT:    v_min_f32_e32 v3, v3, v7 | 
|  | ; GFX10-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX10-GISEL-LABEL: v_minimumnum_v4f32: | 
|  | ; GFX10-GISEL:       ; %bb.0: | 
|  | ; GFX10-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX10-GISEL-NEXT:    v_max_f32_e32 v0, v0, v0 | 
|  | ; GFX10-GISEL-NEXT:    v_max_f32_e32 v4, v4, v4 | 
|  | ; GFX10-GISEL-NEXT:    v_max_f32_e32 v1, v1, v1 | 
|  | ; GFX10-GISEL-NEXT:    v_max_f32_e32 v5, v5, v5 | 
|  | ; GFX10-GISEL-NEXT:    v_max_f32_e32 v2, v2, v2 | 
|  | ; GFX10-GISEL-NEXT:    v_max_f32_e32 v6, v6, v6 | 
|  | ; GFX10-GISEL-NEXT:    v_max_f32_e32 v3, v3, v3 | 
|  | ; GFX10-GISEL-NEXT:    v_max_f32_e32 v7, v7, v7 | 
|  | ; GFX10-GISEL-NEXT:    v_min_f32_e32 v0, v0, v4 | 
|  | ; GFX10-GISEL-NEXT:    v_min_f32_e32 v1, v1, v5 | 
|  | ; GFX10-GISEL-NEXT:    v_min_f32_e32 v2, v2, v6 | 
|  | ; GFX10-GISEL-NEXT:    v_min_f32_e32 v3, v3, v7 | 
|  | ; GFX10-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX11-SDAG-LABEL: v_minimumnum_v4f32: | 
|  | ; GFX11-SDAG:       ; %bb.0: | 
|  | ; GFX11-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX11-SDAG-NEXT:    v_dual_max_f32 v4, v4, v4 :: v_dual_max_f32 v5, v5, v5 | 
|  | ; GFX11-SDAG-NEXT:    v_dual_max_f32 v0, v0, v0 :: v_dual_max_f32 v1, v1, v1 | 
|  | ; GFX11-SDAG-NEXT:    v_dual_max_f32 v6, v6, v6 :: v_dual_max_f32 v7, v7, v7 | 
|  | ; GFX11-SDAG-NEXT:    v_dual_max_f32 v2, v2, v2 :: v_dual_max_f32 v3, v3, v3 | 
|  | ; GFX11-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2) | 
|  | ; GFX11-SDAG-NEXT:    v_dual_min_f32 v0, v0, v4 :: v_dual_min_f32 v1, v1, v5 | 
|  | ; GFX11-SDAG-NEXT:    v_dual_min_f32 v2, v2, v6 :: v_dual_min_f32 v3, v3, v7 | 
|  | ; GFX11-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX11-GISEL-LABEL: v_minimumnum_v4f32: | 
|  | ; GFX11-GISEL:       ; %bb.0: | 
|  | ; GFX11-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX11-GISEL-NEXT:    v_dual_max_f32 v0, v0, v0 :: v_dual_max_f32 v1, v1, v1 | 
|  | ; GFX11-GISEL-NEXT:    v_dual_max_f32 v4, v4, v4 :: v_dual_max_f32 v5, v5, v5 | 
|  | ; GFX11-GISEL-NEXT:    v_dual_max_f32 v2, v2, v2 :: v_dual_max_f32 v3, v3, v3 | 
|  | ; GFX11-GISEL-NEXT:    v_dual_max_f32 v6, v6, v6 :: v_dual_max_f32 v7, v7, v7 | 
|  | ; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2) | 
|  | ; GFX11-GISEL-NEXT:    v_dual_min_f32 v0, v0, v4 :: v_dual_min_f32 v1, v1, v5 | 
|  | ; GFX11-GISEL-NEXT:    v_dual_min_f32 v2, v2, v6 :: v_dual_min_f32 v3, v3, v7 | 
|  | ; GFX11-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX12-SDAG-LABEL: v_minimumnum_v4f32: | 
|  | ; GFX12-SDAG:       ; %bb.0: | 
|  | ; GFX12-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    s_wait_expcnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    s_wait_samplecnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    s_wait_bvhcnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    s_wait_kmcnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    v_dual_max_num_f32 v4, v4, v4 :: v_dual_max_num_f32 v5, v5, v5 | 
|  | ; GFX12-SDAG-NEXT:    v_dual_max_num_f32 v0, v0, v0 :: v_dual_max_num_f32 v1, v1, v1 | 
|  | ; GFX12-SDAG-NEXT:    v_dual_max_num_f32 v6, v6, v6 :: v_dual_max_num_f32 v7, v7, v7 | 
|  | ; GFX12-SDAG-NEXT:    v_dual_max_num_f32 v2, v2, v2 :: v_dual_max_num_f32 v3, v3, v3 | 
|  | ; GFX12-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2) | 
|  | ; GFX12-SDAG-NEXT:    v_dual_min_num_f32 v0, v0, v4 :: v_dual_min_num_f32 v1, v1, v5 | 
|  | ; GFX12-SDAG-NEXT:    v_dual_min_num_f32 v2, v2, v6 :: v_dual_min_num_f32 v3, v3, v7 | 
|  | ; GFX12-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX12-GISEL-LABEL: v_minimumnum_v4f32: | 
|  | ; GFX12-GISEL:       ; %bb.0: | 
|  | ; GFX12-GISEL-NEXT:    s_wait_loadcnt_dscnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    s_wait_expcnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    s_wait_samplecnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    s_wait_bvhcnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    s_wait_kmcnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    v_dual_max_num_f32 v0, v0, v0 :: v_dual_max_num_f32 v1, v1, v1 | 
|  | ; GFX12-GISEL-NEXT:    v_dual_max_num_f32 v4, v4, v4 :: v_dual_max_num_f32 v5, v5, v5 | 
|  | ; GFX12-GISEL-NEXT:    v_dual_max_num_f32 v2, v2, v2 :: v_dual_max_num_f32 v3, v3, v3 | 
|  | ; GFX12-GISEL-NEXT:    v_dual_max_num_f32 v6, v6, v6 :: v_dual_max_num_f32 v7, v7, v7 | 
|  | ; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2) | 
|  | ; GFX12-GISEL-NEXT:    v_dual_min_num_f32 v0, v0, v4 :: v_dual_min_num_f32 v1, v1, v5 | 
|  | ; GFX12-GISEL-NEXT:    v_dual_min_num_f32 v2, v2, v6 :: v_dual_min_num_f32 v3, v3, v7 | 
|  | ; GFX12-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | %result = call <4 x float> @llvm.minimumnum.v4f32(<4 x float> %x, <4 x float> %y) | 
|  | ret <4 x float> %result | 
|  | } | 
|  |  | 
|  | define <4 x float> @v_minimumnum_v4f32_nnan(<4 x float> %x, <4 x float> %y) { | 
|  | ; GFX7-LABEL: v_minimumnum_v4f32_nnan: | 
|  | ; GFX7:       ; %bb.0: | 
|  | ; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX7-NEXT:    v_min_f32_e32 v0, v0, v4 | 
|  | ; GFX7-NEXT:    v_min_f32_e32 v1, v1, v5 | 
|  | ; GFX7-NEXT:    v_min_f32_e32 v2, v2, v6 | 
|  | ; GFX7-NEXT:    v_min_f32_e32 v3, v3, v7 | 
|  | ; GFX7-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX8-LABEL: v_minimumnum_v4f32_nnan: | 
|  | ; GFX8:       ; %bb.0: | 
|  | ; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX8-NEXT:    v_min_f32_e32 v0, v0, v4 | 
|  | ; GFX8-NEXT:    v_min_f32_e32 v1, v1, v5 | 
|  | ; GFX8-NEXT:    v_min_f32_e32 v2, v2, v6 | 
|  | ; GFX8-NEXT:    v_min_f32_e32 v3, v3, v7 | 
|  | ; GFX8-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX9-LABEL: v_minimumnum_v4f32_nnan: | 
|  | ; GFX9:       ; %bb.0: | 
|  | ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX9-NEXT:    v_min_f32_e32 v0, v0, v4 | 
|  | ; GFX9-NEXT:    v_min_f32_e32 v1, v1, v5 | 
|  | ; GFX9-NEXT:    v_min_f32_e32 v2, v2, v6 | 
|  | ; GFX9-NEXT:    v_min_f32_e32 v3, v3, v7 | 
|  | ; GFX9-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX10-LABEL: v_minimumnum_v4f32_nnan: | 
|  | ; GFX10:       ; %bb.0: | 
|  | ; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX10-NEXT:    v_min_f32_e32 v0, v0, v4 | 
|  | ; GFX10-NEXT:    v_min_f32_e32 v1, v1, v5 | 
|  | ; GFX10-NEXT:    v_min_f32_e32 v2, v2, v6 | 
|  | ; GFX10-NEXT:    v_min_f32_e32 v3, v3, v7 | 
|  | ; GFX10-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX11-LABEL: v_minimumnum_v4f32_nnan: | 
|  | ; GFX11:       ; %bb.0: | 
|  | ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX11-NEXT:    v_dual_min_f32 v0, v0, v4 :: v_dual_min_f32 v1, v1, v5 | 
|  | ; GFX11-NEXT:    v_dual_min_f32 v2, v2, v6 :: v_dual_min_f32 v3, v3, v7 | 
|  | ; GFX11-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX12-LABEL: v_minimumnum_v4f32_nnan: | 
|  | ; GFX12:       ; %bb.0: | 
|  | ; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0 | 
|  | ; GFX12-NEXT:    s_wait_expcnt 0x0 | 
|  | ; GFX12-NEXT:    s_wait_samplecnt 0x0 | 
|  | ; GFX12-NEXT:    s_wait_bvhcnt 0x0 | 
|  | ; GFX12-NEXT:    s_wait_kmcnt 0x0 | 
|  | ; GFX12-NEXT:    v_dual_min_num_f32 v0, v0, v4 :: v_dual_min_num_f32 v1, v1, v5 | 
|  | ; GFX12-NEXT:    v_dual_min_num_f32 v2, v2, v6 :: v_dual_min_num_f32 v3, v3, v7 | 
|  | ; GFX12-NEXT:    s_setpc_b64 s[30:31] | 
|  | %result = call nnan <4 x float> @llvm.minimumnum.v4f32(<4 x float> %x, <4 x float> %y) | 
|  | ret <4 x float> %result | 
|  | } | 
|  |  | 
|  | define <2 x double> @v_minimumnum_v2f64(<2 x double> %x, <2 x double> %y) { | 
|  | ; GFX7-SDAG-LABEL: v_minimumnum_v2f64: | 
|  | ; GFX7-SDAG:       ; %bb.0: | 
|  | ; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX7-SDAG-NEXT:    v_max_f64 v[4:5], v[4:5], v[4:5] | 
|  | ; GFX7-SDAG-NEXT:    v_max_f64 v[0:1], v[0:1], v[0:1] | 
|  | ; GFX7-SDAG-NEXT:    v_max_f64 v[6:7], v[6:7], v[6:7] | 
|  | ; GFX7-SDAG-NEXT:    v_max_f64 v[2:3], v[2:3], v[2:3] | 
|  | ; GFX7-SDAG-NEXT:    v_min_f64 v[0:1], v[0:1], v[4:5] | 
|  | ; GFX7-SDAG-NEXT:    v_min_f64 v[2:3], v[2:3], v[6:7] | 
|  | ; GFX7-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX7-GISEL-LABEL: v_minimumnum_v2f64: | 
|  | ; GFX7-GISEL:       ; %bb.0: | 
|  | ; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX7-GISEL-NEXT:    v_max_f64 v[0:1], v[0:1], v[0:1] | 
|  | ; GFX7-GISEL-NEXT:    v_max_f64 v[4:5], v[4:5], v[4:5] | 
|  | ; GFX7-GISEL-NEXT:    v_max_f64 v[2:3], v[2:3], v[2:3] | 
|  | ; GFX7-GISEL-NEXT:    v_max_f64 v[6:7], v[6:7], v[6:7] | 
|  | ; GFX7-GISEL-NEXT:    v_min_f64 v[0:1], v[0:1], v[4:5] | 
|  | ; GFX7-GISEL-NEXT:    v_min_f64 v[2:3], v[2:3], v[6:7] | 
|  | ; GFX7-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX8-SDAG-LABEL: v_minimumnum_v2f64: | 
|  | ; GFX8-SDAG:       ; %bb.0: | 
|  | ; GFX8-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX8-SDAG-NEXT:    v_max_f64 v[4:5], v[4:5], v[4:5] | 
|  | ; GFX8-SDAG-NEXT:    v_max_f64 v[0:1], v[0:1], v[0:1] | 
|  | ; GFX8-SDAG-NEXT:    v_max_f64 v[6:7], v[6:7], v[6:7] | 
|  | ; GFX8-SDAG-NEXT:    v_max_f64 v[2:3], v[2:3], v[2:3] | 
|  | ; GFX8-SDAG-NEXT:    v_min_f64 v[0:1], v[0:1], v[4:5] | 
|  | ; GFX8-SDAG-NEXT:    v_min_f64 v[2:3], v[2:3], v[6:7] | 
|  | ; GFX8-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX8-GISEL-LABEL: v_minimumnum_v2f64: | 
|  | ; GFX8-GISEL:       ; %bb.0: | 
|  | ; GFX8-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX8-GISEL-NEXT:    v_max_f64 v[0:1], v[0:1], v[0:1] | 
|  | ; GFX8-GISEL-NEXT:    v_max_f64 v[4:5], v[4:5], v[4:5] | 
|  | ; GFX8-GISEL-NEXT:    v_max_f64 v[2:3], v[2:3], v[2:3] | 
|  | ; GFX8-GISEL-NEXT:    v_max_f64 v[6:7], v[6:7], v[6:7] | 
|  | ; GFX8-GISEL-NEXT:    v_min_f64 v[0:1], v[0:1], v[4:5] | 
|  | ; GFX8-GISEL-NEXT:    v_min_f64 v[2:3], v[2:3], v[6:7] | 
|  | ; GFX8-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX900-SDAG-LABEL: v_minimumnum_v2f64: | 
|  | ; GFX900-SDAG:       ; %bb.0: | 
|  | ; GFX900-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX900-SDAG-NEXT:    v_max_f64 v[4:5], v[4:5], v[4:5] | 
|  | ; GFX900-SDAG-NEXT:    v_max_f64 v[0:1], v[0:1], v[0:1] | 
|  | ; GFX900-SDAG-NEXT:    v_max_f64 v[6:7], v[6:7], v[6:7] | 
|  | ; GFX900-SDAG-NEXT:    v_max_f64 v[2:3], v[2:3], v[2:3] | 
|  | ; GFX900-SDAG-NEXT:    v_min_f64 v[0:1], v[0:1], v[4:5] | 
|  | ; GFX900-SDAG-NEXT:    v_min_f64 v[2:3], v[2:3], v[6:7] | 
|  | ; GFX900-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX900-GISEL-LABEL: v_minimumnum_v2f64: | 
|  | ; GFX900-GISEL:       ; %bb.0: | 
|  | ; GFX900-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX900-GISEL-NEXT:    v_max_f64 v[0:1], v[0:1], v[0:1] | 
|  | ; GFX900-GISEL-NEXT:    v_max_f64 v[4:5], v[4:5], v[4:5] | 
|  | ; GFX900-GISEL-NEXT:    v_max_f64 v[2:3], v[2:3], v[2:3] | 
|  | ; GFX900-GISEL-NEXT:    v_max_f64 v[6:7], v[6:7], v[6:7] | 
|  | ; GFX900-GISEL-NEXT:    v_min_f64 v[0:1], v[0:1], v[4:5] | 
|  | ; GFX900-GISEL-NEXT:    v_min_f64 v[2:3], v[2:3], v[6:7] | 
|  | ; GFX900-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX950-SDAG-LABEL: v_minimumnum_v2f64: | 
|  | ; GFX950-SDAG:       ; %bb.0: | 
|  | ; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX950-SDAG-NEXT:    v_max_f64 v[4:5], v[4:5], v[4:5] | 
|  | ; GFX950-SDAG-NEXT:    v_max_f64 v[0:1], v[0:1], v[0:1] | 
|  | ; GFX950-SDAG-NEXT:    v_min_f64 v[0:1], v[0:1], v[4:5] | 
|  | ; GFX950-SDAG-NEXT:    v_max_f64 v[4:5], v[6:7], v[6:7] | 
|  | ; GFX950-SDAG-NEXT:    v_max_f64 v[2:3], v[2:3], v[2:3] | 
|  | ; GFX950-SDAG-NEXT:    v_min_f64 v[2:3], v[2:3], v[4:5] | 
|  | ; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX950-GISEL-LABEL: v_minimumnum_v2f64: | 
|  | ; GFX950-GISEL:       ; %bb.0: | 
|  | ; GFX950-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX950-GISEL-NEXT:    v_max_f64 v[0:1], v[0:1], v[0:1] | 
|  | ; GFX950-GISEL-NEXT:    v_max_f64 v[4:5], v[4:5], v[4:5] | 
|  | ; GFX950-GISEL-NEXT:    v_min_f64 v[0:1], v[0:1], v[4:5] | 
|  | ; GFX950-GISEL-NEXT:    v_max_f64 v[2:3], v[2:3], v[2:3] | 
|  | ; GFX950-GISEL-NEXT:    v_max_f64 v[4:5], v[6:7], v[6:7] | 
|  | ; GFX950-GISEL-NEXT:    v_min_f64 v[2:3], v[2:3], v[4:5] | 
|  | ; GFX950-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX10-SDAG-LABEL: v_minimumnum_v2f64: | 
|  | ; GFX10-SDAG:       ; %bb.0: | 
|  | ; GFX10-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX10-SDAG-NEXT:    v_max_f64 v[4:5], v[4:5], v[4:5] | 
|  | ; GFX10-SDAG-NEXT:    v_max_f64 v[0:1], v[0:1], v[0:1] | 
|  | ; GFX10-SDAG-NEXT:    v_max_f64 v[6:7], v[6:7], v[6:7] | 
|  | ; GFX10-SDAG-NEXT:    v_max_f64 v[2:3], v[2:3], v[2:3] | 
|  | ; GFX10-SDAG-NEXT:    v_min_f64 v[0:1], v[0:1], v[4:5] | 
|  | ; GFX10-SDAG-NEXT:    v_min_f64 v[2:3], v[2:3], v[6:7] | 
|  | ; GFX10-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX10-GISEL-LABEL: v_minimumnum_v2f64: | 
|  | ; GFX10-GISEL:       ; %bb.0: | 
|  | ; GFX10-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX10-GISEL-NEXT:    v_max_f64 v[0:1], v[0:1], v[0:1] | 
|  | ; GFX10-GISEL-NEXT:    v_max_f64 v[4:5], v[4:5], v[4:5] | 
|  | ; GFX10-GISEL-NEXT:    v_max_f64 v[2:3], v[2:3], v[2:3] | 
|  | ; GFX10-GISEL-NEXT:    v_max_f64 v[6:7], v[6:7], v[6:7] | 
|  | ; GFX10-GISEL-NEXT:    v_min_f64 v[0:1], v[0:1], v[4:5] | 
|  | ; GFX10-GISEL-NEXT:    v_min_f64 v[2:3], v[2:3], v[6:7] | 
|  | ; GFX10-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX11-SDAG-LABEL: v_minimumnum_v2f64: | 
|  | ; GFX11-SDAG:       ; %bb.0: | 
|  | ; GFX11-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX11-SDAG-NEXT:    v_max_f64 v[4:5], v[4:5], v[4:5] | 
|  | ; GFX11-SDAG-NEXT:    v_max_f64 v[0:1], v[0:1], v[0:1] | 
|  | ; GFX11-SDAG-NEXT:    v_max_f64 v[6:7], v[6:7], v[6:7] | 
|  | ; GFX11-SDAG-NEXT:    v_max_f64 v[2:3], v[2:3], v[2:3] | 
|  | ; GFX11-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2) | 
|  | ; GFX11-SDAG-NEXT:    v_min_f64 v[0:1], v[0:1], v[4:5] | 
|  | ; GFX11-SDAG-NEXT:    v_min_f64 v[2:3], v[2:3], v[6:7] | 
|  | ; GFX11-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX11-GISEL-LABEL: v_minimumnum_v2f64: | 
|  | ; GFX11-GISEL:       ; %bb.0: | 
|  | ; GFX11-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX11-GISEL-NEXT:    v_max_f64 v[0:1], v[0:1], v[0:1] | 
|  | ; GFX11-GISEL-NEXT:    v_max_f64 v[4:5], v[4:5], v[4:5] | 
|  | ; GFX11-GISEL-NEXT:    v_max_f64 v[2:3], v[2:3], v[2:3] | 
|  | ; GFX11-GISEL-NEXT:    v_max_f64 v[6:7], v[6:7], v[6:7] | 
|  | ; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2) | 
|  | ; GFX11-GISEL-NEXT:    v_min_f64 v[0:1], v[0:1], v[4:5] | 
|  | ; GFX11-GISEL-NEXT:    v_min_f64 v[2:3], v[2:3], v[6:7] | 
|  | ; GFX11-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX12-SDAG-LABEL: v_minimumnum_v2f64: | 
|  | ; GFX12-SDAG:       ; %bb.0: | 
|  | ; GFX12-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    s_wait_expcnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    s_wait_samplecnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    s_wait_bvhcnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    s_wait_kmcnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    v_max_num_f64_e32 v[4:5], v[4:5], v[4:5] | 
|  | ; GFX12-SDAG-NEXT:    v_max_num_f64_e32 v[0:1], v[0:1], v[0:1] | 
|  | ; GFX12-SDAG-NEXT:    v_max_num_f64_e32 v[6:7], v[6:7], v[6:7] | 
|  | ; GFX12-SDAG-NEXT:    v_max_num_f64_e32 v[2:3], v[2:3], v[2:3] | 
|  | ; GFX12-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2) | 
|  | ; GFX12-SDAG-NEXT:    v_min_num_f64_e32 v[0:1], v[0:1], v[4:5] | 
|  | ; GFX12-SDAG-NEXT:    v_min_num_f64_e32 v[2:3], v[2:3], v[6:7] | 
|  | ; GFX12-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX12-GISEL-LABEL: v_minimumnum_v2f64: | 
|  | ; GFX12-GISEL:       ; %bb.0: | 
|  | ; GFX12-GISEL-NEXT:    s_wait_loadcnt_dscnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    s_wait_expcnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    s_wait_samplecnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    s_wait_bvhcnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    s_wait_kmcnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    v_max_num_f64_e32 v[0:1], v[0:1], v[0:1] | 
|  | ; GFX12-GISEL-NEXT:    v_max_num_f64_e32 v[4:5], v[4:5], v[4:5] | 
|  | ; GFX12-GISEL-NEXT:    v_max_num_f64_e32 v[2:3], v[2:3], v[2:3] | 
|  | ; GFX12-GISEL-NEXT:    v_max_num_f64_e32 v[6:7], v[6:7], v[6:7] | 
|  | ; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2) | 
|  | ; GFX12-GISEL-NEXT:    v_min_num_f64_e32 v[0:1], v[0:1], v[4:5] | 
|  | ; GFX12-GISEL-NEXT:    v_min_num_f64_e32 v[2:3], v[2:3], v[6:7] | 
|  | ; GFX12-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | %result = call <2 x double> @llvm.minimumnum.v2f64(<2 x double> %x, <2 x double> %y) | 
|  | ret <2 x double> %result | 
|  | } | 
|  |  | 
|  | define <2 x double> @v_minimumnum_v2f64_nnan(<2 x double> %x, <2 x double> %y) { | 
|  | ; GFX7-LABEL: v_minimumnum_v2f64_nnan: | 
|  | ; GFX7:       ; %bb.0: | 
|  | ; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX7-NEXT:    v_min_f64 v[0:1], v[0:1], v[4:5] | 
|  | ; GFX7-NEXT:    v_min_f64 v[2:3], v[2:3], v[6:7] | 
|  | ; GFX7-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX8-LABEL: v_minimumnum_v2f64_nnan: | 
|  | ; GFX8:       ; %bb.0: | 
|  | ; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX8-NEXT:    v_min_f64 v[0:1], v[0:1], v[4:5] | 
|  | ; GFX8-NEXT:    v_min_f64 v[2:3], v[2:3], v[6:7] | 
|  | ; GFX8-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX9-LABEL: v_minimumnum_v2f64_nnan: | 
|  | ; GFX9:       ; %bb.0: | 
|  | ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX9-NEXT:    v_min_f64 v[0:1], v[0:1], v[4:5] | 
|  | ; GFX9-NEXT:    v_min_f64 v[2:3], v[2:3], v[6:7] | 
|  | ; GFX9-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX10-LABEL: v_minimumnum_v2f64_nnan: | 
|  | ; GFX10:       ; %bb.0: | 
|  | ; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX10-NEXT:    v_min_f64 v[0:1], v[0:1], v[4:5] | 
|  | ; GFX10-NEXT:    v_min_f64 v[2:3], v[2:3], v[6:7] | 
|  | ; GFX10-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX11-LABEL: v_minimumnum_v2f64_nnan: | 
|  | ; GFX11:       ; %bb.0: | 
|  | ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX11-NEXT:    v_min_f64 v[0:1], v[0:1], v[4:5] | 
|  | ; GFX11-NEXT:    v_min_f64 v[2:3], v[2:3], v[6:7] | 
|  | ; GFX11-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX12-LABEL: v_minimumnum_v2f64_nnan: | 
|  | ; GFX12:       ; %bb.0: | 
|  | ; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0 | 
|  | ; GFX12-NEXT:    s_wait_expcnt 0x0 | 
|  | ; GFX12-NEXT:    s_wait_samplecnt 0x0 | 
|  | ; GFX12-NEXT:    s_wait_bvhcnt 0x0 | 
|  | ; GFX12-NEXT:    s_wait_kmcnt 0x0 | 
|  | ; GFX12-NEXT:    v_min_num_f64_e32 v[0:1], v[0:1], v[4:5] | 
|  | ; GFX12-NEXT:    v_min_num_f64_e32 v[2:3], v[2:3], v[6:7] | 
|  | ; GFX12-NEXT:    s_setpc_b64 s[30:31] | 
|  | %result = call nnan <2 x double> @llvm.minimumnum.v2f64(<2 x double> %x, <2 x double> %y) | 
|  | ret <2 x double> %result | 
|  | } | 
|  |  | 
|  | define <3 x double> @v_minimumnum_v3f64(<3 x double> %x, <3 x double> %y) { | 
|  | ; GFX7-SDAG-LABEL: v_minimumnum_v3f64: | 
|  | ; GFX7-SDAG:       ; %bb.0: | 
|  | ; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX7-SDAG-NEXT:    v_max_f64 v[6:7], v[6:7], v[6:7] | 
|  | ; GFX7-SDAG-NEXT:    v_max_f64 v[0:1], v[0:1], v[0:1] | 
|  | ; GFX7-SDAG-NEXT:    v_max_f64 v[8:9], v[8:9], v[8:9] | 
|  | ; GFX7-SDAG-NEXT:    v_max_f64 v[2:3], v[2:3], v[2:3] | 
|  | ; GFX7-SDAG-NEXT:    v_max_f64 v[10:11], v[10:11], v[10:11] | 
|  | ; GFX7-SDAG-NEXT:    v_max_f64 v[4:5], v[4:5], v[4:5] | 
|  | ; GFX7-SDAG-NEXT:    v_min_f64 v[0:1], v[0:1], v[6:7] | 
|  | ; GFX7-SDAG-NEXT:    v_min_f64 v[2:3], v[2:3], v[8:9] | 
|  | ; GFX7-SDAG-NEXT:    v_min_f64 v[4:5], v[4:5], v[10:11] | 
|  | ; GFX7-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX7-GISEL-LABEL: v_minimumnum_v3f64: | 
|  | ; GFX7-GISEL:       ; %bb.0: | 
|  | ; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX7-GISEL-NEXT:    v_max_f64 v[0:1], v[0:1], v[0:1] | 
|  | ; GFX7-GISEL-NEXT:    v_max_f64 v[6:7], v[6:7], v[6:7] | 
|  | ; GFX7-GISEL-NEXT:    v_max_f64 v[2:3], v[2:3], v[2:3] | 
|  | ; GFX7-GISEL-NEXT:    v_max_f64 v[8:9], v[8:9], v[8:9] | 
|  | ; GFX7-GISEL-NEXT:    v_max_f64 v[4:5], v[4:5], v[4:5] | 
|  | ; GFX7-GISEL-NEXT:    v_max_f64 v[10:11], v[10:11], v[10:11] | 
|  | ; GFX7-GISEL-NEXT:    v_min_f64 v[0:1], v[0:1], v[6:7] | 
|  | ; GFX7-GISEL-NEXT:    v_min_f64 v[2:3], v[2:3], v[8:9] | 
|  | ; GFX7-GISEL-NEXT:    v_min_f64 v[4:5], v[4:5], v[10:11] | 
|  | ; GFX7-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX8-SDAG-LABEL: v_minimumnum_v3f64: | 
|  | ; GFX8-SDAG:       ; %bb.0: | 
|  | ; GFX8-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX8-SDAG-NEXT:    v_max_f64 v[6:7], v[6:7], v[6:7] | 
|  | ; GFX8-SDAG-NEXT:    v_max_f64 v[0:1], v[0:1], v[0:1] | 
|  | ; GFX8-SDAG-NEXT:    v_max_f64 v[8:9], v[8:9], v[8:9] | 
|  | ; GFX8-SDAG-NEXT:    v_max_f64 v[2:3], v[2:3], v[2:3] | 
|  | ; GFX8-SDAG-NEXT:    v_max_f64 v[10:11], v[10:11], v[10:11] | 
|  | ; GFX8-SDAG-NEXT:    v_max_f64 v[4:5], v[4:5], v[4:5] | 
|  | ; GFX8-SDAG-NEXT:    v_min_f64 v[0:1], v[0:1], v[6:7] | 
|  | ; GFX8-SDAG-NEXT:    v_min_f64 v[2:3], v[2:3], v[8:9] | 
|  | ; GFX8-SDAG-NEXT:    v_min_f64 v[4:5], v[4:5], v[10:11] | 
|  | ; GFX8-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX8-GISEL-LABEL: v_minimumnum_v3f64: | 
|  | ; GFX8-GISEL:       ; %bb.0: | 
|  | ; GFX8-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX8-GISEL-NEXT:    v_max_f64 v[0:1], v[0:1], v[0:1] | 
|  | ; GFX8-GISEL-NEXT:    v_max_f64 v[6:7], v[6:7], v[6:7] | 
|  | ; GFX8-GISEL-NEXT:    v_max_f64 v[2:3], v[2:3], v[2:3] | 
|  | ; GFX8-GISEL-NEXT:    v_max_f64 v[8:9], v[8:9], v[8:9] | 
|  | ; GFX8-GISEL-NEXT:    v_max_f64 v[4:5], v[4:5], v[4:5] | 
|  | ; GFX8-GISEL-NEXT:    v_max_f64 v[10:11], v[10:11], v[10:11] | 
|  | ; GFX8-GISEL-NEXT:    v_min_f64 v[0:1], v[0:1], v[6:7] | 
|  | ; GFX8-GISEL-NEXT:    v_min_f64 v[2:3], v[2:3], v[8:9] | 
|  | ; GFX8-GISEL-NEXT:    v_min_f64 v[4:5], v[4:5], v[10:11] | 
|  | ; GFX8-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX900-SDAG-LABEL: v_minimumnum_v3f64: | 
|  | ; GFX900-SDAG:       ; %bb.0: | 
|  | ; GFX900-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX900-SDAG-NEXT:    v_max_f64 v[6:7], v[6:7], v[6:7] | 
|  | ; GFX900-SDAG-NEXT:    v_max_f64 v[0:1], v[0:1], v[0:1] | 
|  | ; GFX900-SDAG-NEXT:    v_max_f64 v[8:9], v[8:9], v[8:9] | 
|  | ; GFX900-SDAG-NEXT:    v_max_f64 v[2:3], v[2:3], v[2:3] | 
|  | ; GFX900-SDAG-NEXT:    v_max_f64 v[10:11], v[10:11], v[10:11] | 
|  | ; GFX900-SDAG-NEXT:    v_max_f64 v[4:5], v[4:5], v[4:5] | 
|  | ; GFX900-SDAG-NEXT:    v_min_f64 v[0:1], v[0:1], v[6:7] | 
|  | ; GFX900-SDAG-NEXT:    v_min_f64 v[2:3], v[2:3], v[8:9] | 
|  | ; GFX900-SDAG-NEXT:    v_min_f64 v[4:5], v[4:5], v[10:11] | 
|  | ; GFX900-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX900-GISEL-LABEL: v_minimumnum_v3f64: | 
|  | ; GFX900-GISEL:       ; %bb.0: | 
|  | ; GFX900-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX900-GISEL-NEXT:    v_max_f64 v[0:1], v[0:1], v[0:1] | 
|  | ; GFX900-GISEL-NEXT:    v_max_f64 v[6:7], v[6:7], v[6:7] | 
|  | ; GFX900-GISEL-NEXT:    v_max_f64 v[2:3], v[2:3], v[2:3] | 
|  | ; GFX900-GISEL-NEXT:    v_max_f64 v[8:9], v[8:9], v[8:9] | 
|  | ; GFX900-GISEL-NEXT:    v_max_f64 v[4:5], v[4:5], v[4:5] | 
|  | ; GFX900-GISEL-NEXT:    v_max_f64 v[10:11], v[10:11], v[10:11] | 
|  | ; GFX900-GISEL-NEXT:    v_min_f64 v[0:1], v[0:1], v[6:7] | 
|  | ; GFX900-GISEL-NEXT:    v_min_f64 v[2:3], v[2:3], v[8:9] | 
|  | ; GFX900-GISEL-NEXT:    v_min_f64 v[4:5], v[4:5], v[10:11] | 
|  | ; GFX900-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX950-SDAG-LABEL: v_minimumnum_v3f64: | 
|  | ; GFX950-SDAG:       ; %bb.0: | 
|  | ; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX950-SDAG-NEXT:    v_max_f64 v[6:7], v[6:7], v[6:7] | 
|  | ; GFX950-SDAG-NEXT:    v_max_f64 v[0:1], v[0:1], v[0:1] | 
|  | ; GFX950-SDAG-NEXT:    v_min_f64 v[0:1], v[0:1], v[6:7] | 
|  | ; GFX950-SDAG-NEXT:    v_max_f64 v[6:7], v[8:9], v[8:9] | 
|  | ; GFX950-SDAG-NEXT:    v_max_f64 v[2:3], v[2:3], v[2:3] | 
|  | ; GFX950-SDAG-NEXT:    v_min_f64 v[2:3], v[2:3], v[6:7] | 
|  | ; GFX950-SDAG-NEXT:    v_max_f64 v[6:7], v[10:11], v[10:11] | 
|  | ; GFX950-SDAG-NEXT:    v_max_f64 v[4:5], v[4:5], v[4:5] | 
|  | ; GFX950-SDAG-NEXT:    v_min_f64 v[4:5], v[4:5], v[6:7] | 
|  | ; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX950-GISEL-LABEL: v_minimumnum_v3f64: | 
|  | ; GFX950-GISEL:       ; %bb.0: | 
|  | ; GFX950-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX950-GISEL-NEXT:    v_max_f64 v[0:1], v[0:1], v[0:1] | 
|  | ; GFX950-GISEL-NEXT:    v_max_f64 v[6:7], v[6:7], v[6:7] | 
|  | ; GFX950-GISEL-NEXT:    v_min_f64 v[0:1], v[0:1], v[6:7] | 
|  | ; GFX950-GISEL-NEXT:    v_max_f64 v[2:3], v[2:3], v[2:3] | 
|  | ; GFX950-GISEL-NEXT:    v_max_f64 v[6:7], v[8:9], v[8:9] | 
|  | ; GFX950-GISEL-NEXT:    v_min_f64 v[2:3], v[2:3], v[6:7] | 
|  | ; GFX950-GISEL-NEXT:    v_max_f64 v[4:5], v[4:5], v[4:5] | 
|  | ; GFX950-GISEL-NEXT:    v_max_f64 v[6:7], v[10:11], v[10:11] | 
|  | ; GFX950-GISEL-NEXT:    v_min_f64 v[4:5], v[4:5], v[6:7] | 
|  | ; GFX950-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX10-SDAG-LABEL: v_minimumnum_v3f64: | 
|  | ; GFX10-SDAG:       ; %bb.0: | 
|  | ; GFX10-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX10-SDAG-NEXT:    v_max_f64 v[6:7], v[6:7], v[6:7] | 
|  | ; GFX10-SDAG-NEXT:    v_max_f64 v[0:1], v[0:1], v[0:1] | 
|  | ; GFX10-SDAG-NEXT:    v_max_f64 v[8:9], v[8:9], v[8:9] | 
|  | ; GFX10-SDAG-NEXT:    v_max_f64 v[2:3], v[2:3], v[2:3] | 
|  | ; GFX10-SDAG-NEXT:    v_max_f64 v[10:11], v[10:11], v[10:11] | 
|  | ; GFX10-SDAG-NEXT:    v_max_f64 v[4:5], v[4:5], v[4:5] | 
|  | ; GFX10-SDAG-NEXT:    v_min_f64 v[0:1], v[0:1], v[6:7] | 
|  | ; GFX10-SDAG-NEXT:    v_min_f64 v[2:3], v[2:3], v[8:9] | 
|  | ; GFX10-SDAG-NEXT:    v_min_f64 v[4:5], v[4:5], v[10:11] | 
|  | ; GFX10-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX10-GISEL-LABEL: v_minimumnum_v3f64: | 
|  | ; GFX10-GISEL:       ; %bb.0: | 
|  | ; GFX10-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX10-GISEL-NEXT:    v_max_f64 v[0:1], v[0:1], v[0:1] | 
|  | ; GFX10-GISEL-NEXT:    v_max_f64 v[6:7], v[6:7], v[6:7] | 
|  | ; GFX10-GISEL-NEXT:    v_max_f64 v[2:3], v[2:3], v[2:3] | 
|  | ; GFX10-GISEL-NEXT:    v_max_f64 v[8:9], v[8:9], v[8:9] | 
|  | ; GFX10-GISEL-NEXT:    v_max_f64 v[4:5], v[4:5], v[4:5] | 
|  | ; GFX10-GISEL-NEXT:    v_max_f64 v[10:11], v[10:11], v[10:11] | 
|  | ; GFX10-GISEL-NEXT:    v_min_f64 v[0:1], v[0:1], v[6:7] | 
|  | ; GFX10-GISEL-NEXT:    v_min_f64 v[2:3], v[2:3], v[8:9] | 
|  | ; GFX10-GISEL-NEXT:    v_min_f64 v[4:5], v[4:5], v[10:11] | 
|  | ; GFX10-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX11-SDAG-LABEL: v_minimumnum_v3f64: | 
|  | ; GFX11-SDAG:       ; %bb.0: | 
|  | ; GFX11-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX11-SDAG-NEXT:    v_max_f64 v[6:7], v[6:7], v[6:7] | 
|  | ; GFX11-SDAG-NEXT:    v_max_f64 v[0:1], v[0:1], v[0:1] | 
|  | ; GFX11-SDAG-NEXT:    v_max_f64 v[8:9], v[8:9], v[8:9] | 
|  | ; GFX11-SDAG-NEXT:    v_max_f64 v[2:3], v[2:3], v[2:3] | 
|  | ; GFX11-SDAG-NEXT:    v_max_f64 v[10:11], v[10:11], v[10:11] | 
|  | ; GFX11-SDAG-NEXT:    v_max_f64 v[4:5], v[4:5], v[4:5] | 
|  | ; GFX11-SDAG-NEXT:    v_min_f64 v[0:1], v[0:1], v[6:7] | 
|  | ; GFX11-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_3) | 
|  | ; GFX11-SDAG-NEXT:    v_min_f64 v[2:3], v[2:3], v[8:9] | 
|  | ; GFX11-SDAG-NEXT:    v_min_f64 v[4:5], v[4:5], v[10:11] | 
|  | ; GFX11-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX11-GISEL-LABEL: v_minimumnum_v3f64: | 
|  | ; GFX11-GISEL:       ; %bb.0: | 
|  | ; GFX11-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX11-GISEL-NEXT:    v_max_f64 v[0:1], v[0:1], v[0:1] | 
|  | ; GFX11-GISEL-NEXT:    v_max_f64 v[6:7], v[6:7], v[6:7] | 
|  | ; GFX11-GISEL-NEXT:    v_max_f64 v[2:3], v[2:3], v[2:3] | 
|  | ; GFX11-GISEL-NEXT:    v_max_f64 v[8:9], v[8:9], v[8:9] | 
|  | ; GFX11-GISEL-NEXT:    v_max_f64 v[4:5], v[4:5], v[4:5] | 
|  | ; GFX11-GISEL-NEXT:    v_max_f64 v[10:11], v[10:11], v[10:11] | 
|  | ; GFX11-GISEL-NEXT:    v_min_f64 v[0:1], v[0:1], v[6:7] | 
|  | ; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_3) | 
|  | ; GFX11-GISEL-NEXT:    v_min_f64 v[2:3], v[2:3], v[8:9] | 
|  | ; GFX11-GISEL-NEXT:    v_min_f64 v[4:5], v[4:5], v[10:11] | 
|  | ; GFX11-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX12-SDAG-LABEL: v_minimumnum_v3f64: | 
|  | ; GFX12-SDAG:       ; %bb.0: | 
|  | ; GFX12-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    s_wait_expcnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    s_wait_samplecnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    s_wait_bvhcnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    s_wait_kmcnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    v_max_num_f64_e32 v[6:7], v[6:7], v[6:7] | 
|  | ; GFX12-SDAG-NEXT:    v_max_num_f64_e32 v[0:1], v[0:1], v[0:1] | 
|  | ; GFX12-SDAG-NEXT:    v_max_num_f64_e32 v[8:9], v[8:9], v[8:9] | 
|  | ; GFX12-SDAG-NEXT:    v_max_num_f64_e32 v[2:3], v[2:3], v[2:3] | 
|  | ; GFX12-SDAG-NEXT:    v_max_num_f64_e32 v[10:11], v[10:11], v[10:11] | 
|  | ; GFX12-SDAG-NEXT:    v_max_num_f64_e32 v[4:5], v[4:5], v[4:5] | 
|  | ; GFX12-SDAG-NEXT:    v_min_num_f64_e32 v[0:1], v[0:1], v[6:7] | 
|  | ; GFX12-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_3) | 
|  | ; GFX12-SDAG-NEXT:    v_min_num_f64_e32 v[2:3], v[2:3], v[8:9] | 
|  | ; GFX12-SDAG-NEXT:    v_min_num_f64_e32 v[4:5], v[4:5], v[10:11] | 
|  | ; GFX12-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX12-GISEL-LABEL: v_minimumnum_v3f64: | 
|  | ; GFX12-GISEL:       ; %bb.0: | 
|  | ; GFX12-GISEL-NEXT:    s_wait_loadcnt_dscnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    s_wait_expcnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    s_wait_samplecnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    s_wait_bvhcnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    s_wait_kmcnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    v_max_num_f64_e32 v[0:1], v[0:1], v[0:1] | 
|  | ; GFX12-GISEL-NEXT:    v_max_num_f64_e32 v[6:7], v[6:7], v[6:7] | 
|  | ; GFX12-GISEL-NEXT:    v_max_num_f64_e32 v[2:3], v[2:3], v[2:3] | 
|  | ; GFX12-GISEL-NEXT:    v_max_num_f64_e32 v[8:9], v[8:9], v[8:9] | 
|  | ; GFX12-GISEL-NEXT:    v_max_num_f64_e32 v[4:5], v[4:5], v[4:5] | 
|  | ; GFX12-GISEL-NEXT:    v_max_num_f64_e32 v[10:11], v[10:11], v[10:11] | 
|  | ; GFX12-GISEL-NEXT:    v_min_num_f64_e32 v[0:1], v[0:1], v[6:7] | 
|  | ; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_3) | 
|  | ; GFX12-GISEL-NEXT:    v_min_num_f64_e32 v[2:3], v[2:3], v[8:9] | 
|  | ; GFX12-GISEL-NEXT:    v_min_num_f64_e32 v[4:5], v[4:5], v[10:11] | 
|  | ; GFX12-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | %result = call <3 x double> @llvm.minimumnum.v3f64(<3 x double> %x, <3 x double> %y) | 
|  | ret <3 x double> %result | 
|  | } | 
|  |  | 
|  | define <3 x double> @v_minimumnum_v3f64_nnan(<3 x double> %x, <3 x double> %y) { | 
|  | ; GFX7-LABEL: v_minimumnum_v3f64_nnan: | 
|  | ; GFX7:       ; %bb.0: | 
|  | ; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX7-NEXT:    v_min_f64 v[0:1], v[0:1], v[6:7] | 
|  | ; GFX7-NEXT:    v_min_f64 v[2:3], v[2:3], v[8:9] | 
|  | ; GFX7-NEXT:    v_min_f64 v[4:5], v[4:5], v[10:11] | 
|  | ; GFX7-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX8-LABEL: v_minimumnum_v3f64_nnan: | 
|  | ; GFX8:       ; %bb.0: | 
|  | ; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX8-NEXT:    v_min_f64 v[0:1], v[0:1], v[6:7] | 
|  | ; GFX8-NEXT:    v_min_f64 v[2:3], v[2:3], v[8:9] | 
|  | ; GFX8-NEXT:    v_min_f64 v[4:5], v[4:5], v[10:11] | 
|  | ; GFX8-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX9-LABEL: v_minimumnum_v3f64_nnan: | 
|  | ; GFX9:       ; %bb.0: | 
|  | ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX9-NEXT:    v_min_f64 v[0:1], v[0:1], v[6:7] | 
|  | ; GFX9-NEXT:    v_min_f64 v[2:3], v[2:3], v[8:9] | 
|  | ; GFX9-NEXT:    v_min_f64 v[4:5], v[4:5], v[10:11] | 
|  | ; GFX9-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX10-LABEL: v_minimumnum_v3f64_nnan: | 
|  | ; GFX10:       ; %bb.0: | 
|  | ; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX10-NEXT:    v_min_f64 v[0:1], v[0:1], v[6:7] | 
|  | ; GFX10-NEXT:    v_min_f64 v[2:3], v[2:3], v[8:9] | 
|  | ; GFX10-NEXT:    v_min_f64 v[4:5], v[4:5], v[10:11] | 
|  | ; GFX10-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX11-LABEL: v_minimumnum_v3f64_nnan: | 
|  | ; GFX11:       ; %bb.0: | 
|  | ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX11-NEXT:    v_min_f64 v[0:1], v[0:1], v[6:7] | 
|  | ; GFX11-NEXT:    v_min_f64 v[2:3], v[2:3], v[8:9] | 
|  | ; GFX11-NEXT:    v_min_f64 v[4:5], v[4:5], v[10:11] | 
|  | ; GFX11-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX12-LABEL: v_minimumnum_v3f64_nnan: | 
|  | ; GFX12:       ; %bb.0: | 
|  | ; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0 | 
|  | ; GFX12-NEXT:    s_wait_expcnt 0x0 | 
|  | ; GFX12-NEXT:    s_wait_samplecnt 0x0 | 
|  | ; GFX12-NEXT:    s_wait_bvhcnt 0x0 | 
|  | ; GFX12-NEXT:    s_wait_kmcnt 0x0 | 
|  | ; GFX12-NEXT:    v_min_num_f64_e32 v[0:1], v[0:1], v[6:7] | 
|  | ; GFX12-NEXT:    v_min_num_f64_e32 v[2:3], v[2:3], v[8:9] | 
|  | ; GFX12-NEXT:    v_min_num_f64_e32 v[4:5], v[4:5], v[10:11] | 
|  | ; GFX12-NEXT:    s_setpc_b64 s[30:31] | 
|  | %result = call nnan <3 x double> @llvm.minimumnum.v3f64(<3 x double> %x, <3 x double> %y) | 
|  | ret <3 x double> %result | 
|  | } | 
|  |  | 
|  | define <4 x double> @v_minimumnum_v4f64(<4 x double> %x, <4 x double> %y) { | 
|  | ; GFX7-SDAG-LABEL: v_minimumnum_v4f64: | 
|  | ; GFX7-SDAG:       ; %bb.0: | 
|  | ; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX7-SDAG-NEXT:    v_max_f64 v[8:9], v[8:9], v[8:9] | 
|  | ; GFX7-SDAG-NEXT:    v_max_f64 v[0:1], v[0:1], v[0:1] | 
|  | ; GFX7-SDAG-NEXT:    v_max_f64 v[10:11], v[10:11], v[10:11] | 
|  | ; GFX7-SDAG-NEXT:    v_max_f64 v[2:3], v[2:3], v[2:3] | 
|  | ; GFX7-SDAG-NEXT:    v_max_f64 v[12:13], v[12:13], v[12:13] | 
|  | ; GFX7-SDAG-NEXT:    v_max_f64 v[4:5], v[4:5], v[4:5] | 
|  | ; GFX7-SDAG-NEXT:    v_max_f64 v[14:15], v[14:15], v[14:15] | 
|  | ; GFX7-SDAG-NEXT:    v_max_f64 v[6:7], v[6:7], v[6:7] | 
|  | ; GFX7-SDAG-NEXT:    v_min_f64 v[0:1], v[0:1], v[8:9] | 
|  | ; GFX7-SDAG-NEXT:    v_min_f64 v[2:3], v[2:3], v[10:11] | 
|  | ; GFX7-SDAG-NEXT:    v_min_f64 v[4:5], v[4:5], v[12:13] | 
|  | ; GFX7-SDAG-NEXT:    v_min_f64 v[6:7], v[6:7], v[14:15] | 
|  | ; GFX7-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX7-GISEL-LABEL: v_minimumnum_v4f64: | 
|  | ; GFX7-GISEL:       ; %bb.0: | 
|  | ; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX7-GISEL-NEXT:    v_max_f64 v[0:1], v[0:1], v[0:1] | 
|  | ; GFX7-GISEL-NEXT:    v_max_f64 v[8:9], v[8:9], v[8:9] | 
|  | ; GFX7-GISEL-NEXT:    v_max_f64 v[2:3], v[2:3], v[2:3] | 
|  | ; GFX7-GISEL-NEXT:    v_max_f64 v[10:11], v[10:11], v[10:11] | 
|  | ; GFX7-GISEL-NEXT:    v_max_f64 v[4:5], v[4:5], v[4:5] | 
|  | ; GFX7-GISEL-NEXT:    v_max_f64 v[12:13], v[12:13], v[12:13] | 
|  | ; GFX7-GISEL-NEXT:    v_max_f64 v[6:7], v[6:7], v[6:7] | 
|  | ; GFX7-GISEL-NEXT:    v_max_f64 v[14:15], v[14:15], v[14:15] | 
|  | ; GFX7-GISEL-NEXT:    v_min_f64 v[0:1], v[0:1], v[8:9] | 
|  | ; GFX7-GISEL-NEXT:    v_min_f64 v[2:3], v[2:3], v[10:11] | 
|  | ; GFX7-GISEL-NEXT:    v_min_f64 v[4:5], v[4:5], v[12:13] | 
|  | ; GFX7-GISEL-NEXT:    v_min_f64 v[6:7], v[6:7], v[14:15] | 
|  | ; GFX7-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX8-SDAG-LABEL: v_minimumnum_v4f64: | 
|  | ; GFX8-SDAG:       ; %bb.0: | 
|  | ; GFX8-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX8-SDAG-NEXT:    v_max_f64 v[8:9], v[8:9], v[8:9] | 
|  | ; GFX8-SDAG-NEXT:    v_max_f64 v[0:1], v[0:1], v[0:1] | 
|  | ; GFX8-SDAG-NEXT:    v_max_f64 v[10:11], v[10:11], v[10:11] | 
|  | ; GFX8-SDAG-NEXT:    v_max_f64 v[2:3], v[2:3], v[2:3] | 
|  | ; GFX8-SDAG-NEXT:    v_max_f64 v[12:13], v[12:13], v[12:13] | 
|  | ; GFX8-SDAG-NEXT:    v_max_f64 v[4:5], v[4:5], v[4:5] | 
|  | ; GFX8-SDAG-NEXT:    v_max_f64 v[14:15], v[14:15], v[14:15] | 
|  | ; GFX8-SDAG-NEXT:    v_max_f64 v[6:7], v[6:7], v[6:7] | 
|  | ; GFX8-SDAG-NEXT:    v_min_f64 v[0:1], v[0:1], v[8:9] | 
|  | ; GFX8-SDAG-NEXT:    v_min_f64 v[2:3], v[2:3], v[10:11] | 
|  | ; GFX8-SDAG-NEXT:    v_min_f64 v[4:5], v[4:5], v[12:13] | 
|  | ; GFX8-SDAG-NEXT:    v_min_f64 v[6:7], v[6:7], v[14:15] | 
|  | ; GFX8-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX8-GISEL-LABEL: v_minimumnum_v4f64: | 
|  | ; GFX8-GISEL:       ; %bb.0: | 
|  | ; GFX8-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX8-GISEL-NEXT:    v_max_f64 v[0:1], v[0:1], v[0:1] | 
|  | ; GFX8-GISEL-NEXT:    v_max_f64 v[8:9], v[8:9], v[8:9] | 
|  | ; GFX8-GISEL-NEXT:    v_max_f64 v[2:3], v[2:3], v[2:3] | 
|  | ; GFX8-GISEL-NEXT:    v_max_f64 v[10:11], v[10:11], v[10:11] | 
|  | ; GFX8-GISEL-NEXT:    v_max_f64 v[4:5], v[4:5], v[4:5] | 
|  | ; GFX8-GISEL-NEXT:    v_max_f64 v[12:13], v[12:13], v[12:13] | 
|  | ; GFX8-GISEL-NEXT:    v_max_f64 v[6:7], v[6:7], v[6:7] | 
|  | ; GFX8-GISEL-NEXT:    v_max_f64 v[14:15], v[14:15], v[14:15] | 
|  | ; GFX8-GISEL-NEXT:    v_min_f64 v[0:1], v[0:1], v[8:9] | 
|  | ; GFX8-GISEL-NEXT:    v_min_f64 v[2:3], v[2:3], v[10:11] | 
|  | ; GFX8-GISEL-NEXT:    v_min_f64 v[4:5], v[4:5], v[12:13] | 
|  | ; GFX8-GISEL-NEXT:    v_min_f64 v[6:7], v[6:7], v[14:15] | 
|  | ; GFX8-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX900-SDAG-LABEL: v_minimumnum_v4f64: | 
|  | ; GFX900-SDAG:       ; %bb.0: | 
|  | ; GFX900-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX900-SDAG-NEXT:    v_max_f64 v[8:9], v[8:9], v[8:9] | 
|  | ; GFX900-SDAG-NEXT:    v_max_f64 v[0:1], v[0:1], v[0:1] | 
|  | ; GFX900-SDAG-NEXT:    v_max_f64 v[10:11], v[10:11], v[10:11] | 
|  | ; GFX900-SDAG-NEXT:    v_max_f64 v[2:3], v[2:3], v[2:3] | 
|  | ; GFX900-SDAG-NEXT:    v_max_f64 v[12:13], v[12:13], v[12:13] | 
|  | ; GFX900-SDAG-NEXT:    v_max_f64 v[4:5], v[4:5], v[4:5] | 
|  | ; GFX900-SDAG-NEXT:    v_max_f64 v[14:15], v[14:15], v[14:15] | 
|  | ; GFX900-SDAG-NEXT:    v_max_f64 v[6:7], v[6:7], v[6:7] | 
|  | ; GFX900-SDAG-NEXT:    v_min_f64 v[0:1], v[0:1], v[8:9] | 
|  | ; GFX900-SDAG-NEXT:    v_min_f64 v[2:3], v[2:3], v[10:11] | 
|  | ; GFX900-SDAG-NEXT:    v_min_f64 v[4:5], v[4:5], v[12:13] | 
|  | ; GFX900-SDAG-NEXT:    v_min_f64 v[6:7], v[6:7], v[14:15] | 
|  | ; GFX900-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX900-GISEL-LABEL: v_minimumnum_v4f64: | 
|  | ; GFX900-GISEL:       ; %bb.0: | 
|  | ; GFX900-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX900-GISEL-NEXT:    v_max_f64 v[0:1], v[0:1], v[0:1] | 
|  | ; GFX900-GISEL-NEXT:    v_max_f64 v[8:9], v[8:9], v[8:9] | 
|  | ; GFX900-GISEL-NEXT:    v_max_f64 v[2:3], v[2:3], v[2:3] | 
|  | ; GFX900-GISEL-NEXT:    v_max_f64 v[10:11], v[10:11], v[10:11] | 
|  | ; GFX900-GISEL-NEXT:    v_max_f64 v[4:5], v[4:5], v[4:5] | 
|  | ; GFX900-GISEL-NEXT:    v_max_f64 v[12:13], v[12:13], v[12:13] | 
|  | ; GFX900-GISEL-NEXT:    v_max_f64 v[6:7], v[6:7], v[6:7] | 
|  | ; GFX900-GISEL-NEXT:    v_max_f64 v[14:15], v[14:15], v[14:15] | 
|  | ; GFX900-GISEL-NEXT:    v_min_f64 v[0:1], v[0:1], v[8:9] | 
|  | ; GFX900-GISEL-NEXT:    v_min_f64 v[2:3], v[2:3], v[10:11] | 
|  | ; GFX900-GISEL-NEXT:    v_min_f64 v[4:5], v[4:5], v[12:13] | 
|  | ; GFX900-GISEL-NEXT:    v_min_f64 v[6:7], v[6:7], v[14:15] | 
|  | ; GFX900-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX950-SDAG-LABEL: v_minimumnum_v4f64: | 
|  | ; GFX950-SDAG:       ; %bb.0: | 
|  | ; GFX950-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX950-SDAG-NEXT:    v_max_f64 v[8:9], v[8:9], v[8:9] | 
|  | ; GFX950-SDAG-NEXT:    v_max_f64 v[0:1], v[0:1], v[0:1] | 
|  | ; GFX950-SDAG-NEXT:    v_min_f64 v[0:1], v[0:1], v[8:9] | 
|  | ; GFX950-SDAG-NEXT:    v_max_f64 v[8:9], v[10:11], v[10:11] | 
|  | ; GFX950-SDAG-NEXT:    v_max_f64 v[2:3], v[2:3], v[2:3] | 
|  | ; GFX950-SDAG-NEXT:    v_min_f64 v[2:3], v[2:3], v[8:9] | 
|  | ; GFX950-SDAG-NEXT:    v_max_f64 v[8:9], v[12:13], v[12:13] | 
|  | ; GFX950-SDAG-NEXT:    v_max_f64 v[4:5], v[4:5], v[4:5] | 
|  | ; GFX950-SDAG-NEXT:    v_min_f64 v[4:5], v[4:5], v[8:9] | 
|  | ; GFX950-SDAG-NEXT:    v_max_f64 v[8:9], v[14:15], v[14:15] | 
|  | ; GFX950-SDAG-NEXT:    v_max_f64 v[6:7], v[6:7], v[6:7] | 
|  | ; GFX950-SDAG-NEXT:    v_min_f64 v[6:7], v[6:7], v[8:9] | 
|  | ; GFX950-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX950-GISEL-LABEL: v_minimumnum_v4f64: | 
|  | ; GFX950-GISEL:       ; %bb.0: | 
|  | ; GFX950-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX950-GISEL-NEXT:    v_max_f64 v[0:1], v[0:1], v[0:1] | 
|  | ; GFX950-GISEL-NEXT:    v_max_f64 v[8:9], v[8:9], v[8:9] | 
|  | ; GFX950-GISEL-NEXT:    v_min_f64 v[0:1], v[0:1], v[8:9] | 
|  | ; GFX950-GISEL-NEXT:    v_max_f64 v[2:3], v[2:3], v[2:3] | 
|  | ; GFX950-GISEL-NEXT:    v_max_f64 v[8:9], v[10:11], v[10:11] | 
|  | ; GFX950-GISEL-NEXT:    v_min_f64 v[2:3], v[2:3], v[8:9] | 
|  | ; GFX950-GISEL-NEXT:    v_max_f64 v[4:5], v[4:5], v[4:5] | 
|  | ; GFX950-GISEL-NEXT:    v_max_f64 v[8:9], v[12:13], v[12:13] | 
|  | ; GFX950-GISEL-NEXT:    v_min_f64 v[4:5], v[4:5], v[8:9] | 
|  | ; GFX950-GISEL-NEXT:    v_max_f64 v[6:7], v[6:7], v[6:7] | 
|  | ; GFX950-GISEL-NEXT:    v_max_f64 v[8:9], v[14:15], v[14:15] | 
|  | ; GFX950-GISEL-NEXT:    v_min_f64 v[6:7], v[6:7], v[8:9] | 
|  | ; GFX950-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX10-SDAG-LABEL: v_minimumnum_v4f64: | 
|  | ; GFX10-SDAG:       ; %bb.0: | 
|  | ; GFX10-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX10-SDAG-NEXT:    v_max_f64 v[8:9], v[8:9], v[8:9] | 
|  | ; GFX10-SDAG-NEXT:    v_max_f64 v[0:1], v[0:1], v[0:1] | 
|  | ; GFX10-SDAG-NEXT:    v_max_f64 v[10:11], v[10:11], v[10:11] | 
|  | ; GFX10-SDAG-NEXT:    v_max_f64 v[2:3], v[2:3], v[2:3] | 
|  | ; GFX10-SDAG-NEXT:    v_max_f64 v[12:13], v[12:13], v[12:13] | 
|  | ; GFX10-SDAG-NEXT:    v_max_f64 v[4:5], v[4:5], v[4:5] | 
|  | ; GFX10-SDAG-NEXT:    v_max_f64 v[14:15], v[14:15], v[14:15] | 
|  | ; GFX10-SDAG-NEXT:    v_max_f64 v[6:7], v[6:7], v[6:7] | 
|  | ; GFX10-SDAG-NEXT:    v_min_f64 v[0:1], v[0:1], v[8:9] | 
|  | ; GFX10-SDAG-NEXT:    v_min_f64 v[2:3], v[2:3], v[10:11] | 
|  | ; GFX10-SDAG-NEXT:    v_min_f64 v[4:5], v[4:5], v[12:13] | 
|  | ; GFX10-SDAG-NEXT:    v_min_f64 v[6:7], v[6:7], v[14:15] | 
|  | ; GFX10-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX10-GISEL-LABEL: v_minimumnum_v4f64: | 
|  | ; GFX10-GISEL:       ; %bb.0: | 
|  | ; GFX10-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX10-GISEL-NEXT:    v_max_f64 v[0:1], v[0:1], v[0:1] | 
|  | ; GFX10-GISEL-NEXT:    v_max_f64 v[8:9], v[8:9], v[8:9] | 
|  | ; GFX10-GISEL-NEXT:    v_max_f64 v[2:3], v[2:3], v[2:3] | 
|  | ; GFX10-GISEL-NEXT:    v_max_f64 v[10:11], v[10:11], v[10:11] | 
|  | ; GFX10-GISEL-NEXT:    v_max_f64 v[4:5], v[4:5], v[4:5] | 
|  | ; GFX10-GISEL-NEXT:    v_max_f64 v[12:13], v[12:13], v[12:13] | 
|  | ; GFX10-GISEL-NEXT:    v_max_f64 v[6:7], v[6:7], v[6:7] | 
|  | ; GFX10-GISEL-NEXT:    v_max_f64 v[14:15], v[14:15], v[14:15] | 
|  | ; GFX10-GISEL-NEXT:    v_min_f64 v[0:1], v[0:1], v[8:9] | 
|  | ; GFX10-GISEL-NEXT:    v_min_f64 v[2:3], v[2:3], v[10:11] | 
|  | ; GFX10-GISEL-NEXT:    v_min_f64 v[4:5], v[4:5], v[12:13] | 
|  | ; GFX10-GISEL-NEXT:    v_min_f64 v[6:7], v[6:7], v[14:15] | 
|  | ; GFX10-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX11-SDAG-LABEL: v_minimumnum_v4f64: | 
|  | ; GFX11-SDAG:       ; %bb.0: | 
|  | ; GFX11-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX11-SDAG-NEXT:    v_max_f64 v[8:9], v[8:9], v[8:9] | 
|  | ; GFX11-SDAG-NEXT:    v_max_f64 v[0:1], v[0:1], v[0:1] | 
|  | ; GFX11-SDAG-NEXT:    v_max_f64 v[10:11], v[10:11], v[10:11] | 
|  | ; GFX11-SDAG-NEXT:    v_max_f64 v[2:3], v[2:3], v[2:3] | 
|  | ; GFX11-SDAG-NEXT:    v_max_f64 v[12:13], v[12:13], v[12:13] | 
|  | ; GFX11-SDAG-NEXT:    v_max_f64 v[4:5], v[4:5], v[4:5] | 
|  | ; GFX11-SDAG-NEXT:    v_max_f64 v[14:15], v[14:15], v[14:15] | 
|  | ; GFX11-SDAG-NEXT:    v_max_f64 v[6:7], v[6:7], v[6:7] | 
|  | ; GFX11-SDAG-NEXT:    v_min_f64 v[0:1], v[0:1], v[8:9] | 
|  | ; GFX11-SDAG-NEXT:    v_min_f64 v[2:3], v[2:3], v[10:11] | 
|  | ; GFX11-SDAG-NEXT:    v_min_f64 v[4:5], v[4:5], v[12:13] | 
|  | ; GFX11-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_4) | 
|  | ; GFX11-SDAG-NEXT:    v_min_f64 v[6:7], v[6:7], v[14:15] | 
|  | ; GFX11-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX11-GISEL-LABEL: v_minimumnum_v4f64: | 
|  | ; GFX11-GISEL:       ; %bb.0: | 
|  | ; GFX11-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX11-GISEL-NEXT:    v_max_f64 v[0:1], v[0:1], v[0:1] | 
|  | ; GFX11-GISEL-NEXT:    v_max_f64 v[8:9], v[8:9], v[8:9] | 
|  | ; GFX11-GISEL-NEXT:    v_max_f64 v[2:3], v[2:3], v[2:3] | 
|  | ; GFX11-GISEL-NEXT:    v_max_f64 v[10:11], v[10:11], v[10:11] | 
|  | ; GFX11-GISEL-NEXT:    v_max_f64 v[4:5], v[4:5], v[4:5] | 
|  | ; GFX11-GISEL-NEXT:    v_max_f64 v[12:13], v[12:13], v[12:13] | 
|  | ; GFX11-GISEL-NEXT:    v_max_f64 v[6:7], v[6:7], v[6:7] | 
|  | ; GFX11-GISEL-NEXT:    v_max_f64 v[14:15], v[14:15], v[14:15] | 
|  | ; GFX11-GISEL-NEXT:    v_min_f64 v[0:1], v[0:1], v[8:9] | 
|  | ; GFX11-GISEL-NEXT:    v_min_f64 v[2:3], v[2:3], v[10:11] | 
|  | ; GFX11-GISEL-NEXT:    v_min_f64 v[4:5], v[4:5], v[12:13] | 
|  | ; GFX11-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_4) | 
|  | ; GFX11-GISEL-NEXT:    v_min_f64 v[6:7], v[6:7], v[14:15] | 
|  | ; GFX11-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX12-SDAG-LABEL: v_minimumnum_v4f64: | 
|  | ; GFX12-SDAG:       ; %bb.0: | 
|  | ; GFX12-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    s_wait_expcnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    s_wait_samplecnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    s_wait_bvhcnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    s_wait_kmcnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    v_max_num_f64_e32 v[8:9], v[8:9], v[8:9] | 
|  | ; GFX12-SDAG-NEXT:    v_max_num_f64_e32 v[0:1], v[0:1], v[0:1] | 
|  | ; GFX12-SDAG-NEXT:    v_max_num_f64_e32 v[10:11], v[10:11], v[10:11] | 
|  | ; GFX12-SDAG-NEXT:    v_max_num_f64_e32 v[2:3], v[2:3], v[2:3] | 
|  | ; GFX12-SDAG-NEXT:    v_max_num_f64_e32 v[12:13], v[12:13], v[12:13] | 
|  | ; GFX12-SDAG-NEXT:    v_max_num_f64_e32 v[4:5], v[4:5], v[4:5] | 
|  | ; GFX12-SDAG-NEXT:    v_max_num_f64_e32 v[14:15], v[14:15], v[14:15] | 
|  | ; GFX12-SDAG-NEXT:    v_max_num_f64_e32 v[6:7], v[6:7], v[6:7] | 
|  | ; GFX12-SDAG-NEXT:    v_min_num_f64_e32 v[0:1], v[0:1], v[8:9] | 
|  | ; GFX12-SDAG-NEXT:    v_min_num_f64_e32 v[2:3], v[2:3], v[10:11] | 
|  | ; GFX12-SDAG-NEXT:    v_min_num_f64_e32 v[4:5], v[4:5], v[12:13] | 
|  | ; GFX12-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_4) | 
|  | ; GFX12-SDAG-NEXT:    v_min_num_f64_e32 v[6:7], v[6:7], v[14:15] | 
|  | ; GFX12-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX12-GISEL-LABEL: v_minimumnum_v4f64: | 
|  | ; GFX12-GISEL:       ; %bb.0: | 
|  | ; GFX12-GISEL-NEXT:    s_wait_loadcnt_dscnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    s_wait_expcnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    s_wait_samplecnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    s_wait_bvhcnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    s_wait_kmcnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    v_max_num_f64_e32 v[0:1], v[0:1], v[0:1] | 
|  | ; GFX12-GISEL-NEXT:    v_max_num_f64_e32 v[8:9], v[8:9], v[8:9] | 
|  | ; GFX12-GISEL-NEXT:    v_max_num_f64_e32 v[2:3], v[2:3], v[2:3] | 
|  | ; GFX12-GISEL-NEXT:    v_max_num_f64_e32 v[10:11], v[10:11], v[10:11] | 
|  | ; GFX12-GISEL-NEXT:    v_max_num_f64_e32 v[4:5], v[4:5], v[4:5] | 
|  | ; GFX12-GISEL-NEXT:    v_max_num_f64_e32 v[12:13], v[12:13], v[12:13] | 
|  | ; GFX12-GISEL-NEXT:    v_max_num_f64_e32 v[6:7], v[6:7], v[6:7] | 
|  | ; GFX12-GISEL-NEXT:    v_max_num_f64_e32 v[14:15], v[14:15], v[14:15] | 
|  | ; GFX12-GISEL-NEXT:    v_min_num_f64_e32 v[0:1], v[0:1], v[8:9] | 
|  | ; GFX12-GISEL-NEXT:    v_min_num_f64_e32 v[2:3], v[2:3], v[10:11] | 
|  | ; GFX12-GISEL-NEXT:    v_min_num_f64_e32 v[4:5], v[4:5], v[12:13] | 
|  | ; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_4) | 
|  | ; GFX12-GISEL-NEXT:    v_min_num_f64_e32 v[6:7], v[6:7], v[14:15] | 
|  | ; GFX12-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | %result = call <4 x double> @llvm.minimumnum.v4f64(<4 x double> %x, <4 x double> %y) | 
|  | ret <4 x double> %result | 
|  | } | 
|  |  | 
|  | define <4 x double> @v_minimumnum_v4f64_nnan(<4 x double> %x, <4 x double> %y) { | 
|  | ; GFX7-LABEL: v_minimumnum_v4f64_nnan: | 
|  | ; GFX7:       ; %bb.0: | 
|  | ; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX7-NEXT:    v_min_f64 v[0:1], v[0:1], v[8:9] | 
|  | ; GFX7-NEXT:    v_min_f64 v[2:3], v[2:3], v[10:11] | 
|  | ; GFX7-NEXT:    v_min_f64 v[4:5], v[4:5], v[12:13] | 
|  | ; GFX7-NEXT:    v_min_f64 v[6:7], v[6:7], v[14:15] | 
|  | ; GFX7-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX8-LABEL: v_minimumnum_v4f64_nnan: | 
|  | ; GFX8:       ; %bb.0: | 
|  | ; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX8-NEXT:    v_min_f64 v[0:1], v[0:1], v[8:9] | 
|  | ; GFX8-NEXT:    v_min_f64 v[2:3], v[2:3], v[10:11] | 
|  | ; GFX8-NEXT:    v_min_f64 v[4:5], v[4:5], v[12:13] | 
|  | ; GFX8-NEXT:    v_min_f64 v[6:7], v[6:7], v[14:15] | 
|  | ; GFX8-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX9-LABEL: v_minimumnum_v4f64_nnan: | 
|  | ; GFX9:       ; %bb.0: | 
|  | ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX9-NEXT:    v_min_f64 v[0:1], v[0:1], v[8:9] | 
|  | ; GFX9-NEXT:    v_min_f64 v[2:3], v[2:3], v[10:11] | 
|  | ; GFX9-NEXT:    v_min_f64 v[4:5], v[4:5], v[12:13] | 
|  | ; GFX9-NEXT:    v_min_f64 v[6:7], v[6:7], v[14:15] | 
|  | ; GFX9-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX10-LABEL: v_minimumnum_v4f64_nnan: | 
|  | ; GFX10:       ; %bb.0: | 
|  | ; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX10-NEXT:    v_min_f64 v[0:1], v[0:1], v[8:9] | 
|  | ; GFX10-NEXT:    v_min_f64 v[2:3], v[2:3], v[10:11] | 
|  | ; GFX10-NEXT:    v_min_f64 v[4:5], v[4:5], v[12:13] | 
|  | ; GFX10-NEXT:    v_min_f64 v[6:7], v[6:7], v[14:15] | 
|  | ; GFX10-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX11-LABEL: v_minimumnum_v4f64_nnan: | 
|  | ; GFX11:       ; %bb.0: | 
|  | ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX11-NEXT:    v_min_f64 v[0:1], v[0:1], v[8:9] | 
|  | ; GFX11-NEXT:    v_min_f64 v[2:3], v[2:3], v[10:11] | 
|  | ; GFX11-NEXT:    v_min_f64 v[4:5], v[4:5], v[12:13] | 
|  | ; GFX11-NEXT:    v_min_f64 v[6:7], v[6:7], v[14:15] | 
|  | ; GFX11-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX12-LABEL: v_minimumnum_v4f64_nnan: | 
|  | ; GFX12:       ; %bb.0: | 
|  | ; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0 | 
|  | ; GFX12-NEXT:    s_wait_expcnt 0x0 | 
|  | ; GFX12-NEXT:    s_wait_samplecnt 0x0 | 
|  | ; GFX12-NEXT:    s_wait_bvhcnt 0x0 | 
|  | ; GFX12-NEXT:    s_wait_kmcnt 0x0 | 
|  | ; GFX12-NEXT:    v_min_num_f64_e32 v[0:1], v[0:1], v[8:9] | 
|  | ; GFX12-NEXT:    v_min_num_f64_e32 v[2:3], v[2:3], v[10:11] | 
|  | ; GFX12-NEXT:    v_min_num_f64_e32 v[4:5], v[4:5], v[12:13] | 
|  | ; GFX12-NEXT:    v_min_num_f64_e32 v[6:7], v[6:7], v[14:15] | 
|  | ; GFX12-NEXT:    s_setpc_b64 s[30:31] | 
|  | %result = call nnan <4 x double> @llvm.minimumnum.v4f64(<4 x double> %x, <4 x double> %y) | 
|  | ret <4 x double> %result | 
|  | } | 
|  |  | 
|  | define half @v_minimumnum_f16_no_ieee(half %x, half %y) #0 { | 
|  | ; GFX7-SDAG-LABEL: v_minimumnum_f16_no_ieee: | 
|  | ; GFX7-SDAG:       ; %bb.0: | 
|  | ; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v1, v1 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v0, v0 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v1, v1 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v0, v0 | 
|  | ; GFX7-SDAG-NEXT:    v_min_f32_e32 v0, v0, v1 | 
|  | ; GFX7-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX7-GISEL-LABEL: v_minimumnum_f16_no_ieee: | 
|  | ; GFX7-GISEL:       ; %bb.0: | 
|  | ; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v0, v0 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v1, v1 | 
|  | ; GFX7-GISEL-NEXT:    v_min_f32_e32 v0, v0, v1 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f16_f32_e32 v0, v0 | 
|  | ; GFX7-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX8-LABEL: v_minimumnum_f16_no_ieee: | 
|  | ; GFX8:       ; %bb.0: | 
|  | ; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX8-NEXT:    v_min_f16_e32 v0, v0, v1 | 
|  | ; GFX8-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX9-LABEL: v_minimumnum_f16_no_ieee: | 
|  | ; GFX9:       ; %bb.0: | 
|  | ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX9-NEXT:    v_min_f16_e32 v0, v0, v1 | 
|  | ; GFX9-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX10-LABEL: v_minimumnum_f16_no_ieee: | 
|  | ; GFX10:       ; %bb.0: | 
|  | ; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX10-NEXT:    v_min_f16_e32 v0, v0, v1 | 
|  | ; GFX10-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX11-TRUE16-LABEL: v_minimumnum_f16_no_ieee: | 
|  | ; GFX11-TRUE16:       ; %bb.0: | 
|  | ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX11-TRUE16-NEXT:    v_min_f16_e32 v0.l, v0.l, v1.l | 
|  | ; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX11-FAKE16-LABEL: v_minimumnum_f16_no_ieee: | 
|  | ; GFX11-FAKE16:       ; %bb.0: | 
|  | ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX11-FAKE16-NEXT:    v_min_f16_e32 v0, v0, v1 | 
|  | ; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX12-TRUE16-SDAG-LABEL: v_minimumnum_f16_no_ieee: | 
|  | ; GFX12-TRUE16-SDAG:       ; %bb.0: | 
|  | ; GFX12-TRUE16-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0 | 
|  | ; GFX12-TRUE16-SDAG-NEXT:    s_wait_expcnt 0x0 | 
|  | ; GFX12-TRUE16-SDAG-NEXT:    s_wait_samplecnt 0x0 | 
|  | ; GFX12-TRUE16-SDAG-NEXT:    s_wait_bvhcnt 0x0 | 
|  | ; GFX12-TRUE16-SDAG-NEXT:    s_wait_kmcnt 0x0 | 
|  | ; GFX12-TRUE16-SDAG-NEXT:    v_max_num_f16_e32 v0.h, v1.l, v1.l | 
|  | ; GFX12-TRUE16-SDAG-NEXT:    v_max_num_f16_e32 v0.l, v0.l, v0.l | 
|  | ; GFX12-TRUE16-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX12-TRUE16-SDAG-NEXT:    v_min_num_f16_e32 v0.l, v0.l, v0.h | 
|  | ; GFX12-TRUE16-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX12-TRUE16-GISEL-LABEL: v_minimumnum_f16_no_ieee: | 
|  | ; GFX12-TRUE16-GISEL:       ; %bb.0: | 
|  | ; GFX12-TRUE16-GISEL-NEXT:    s_wait_loadcnt_dscnt 0x0 | 
|  | ; GFX12-TRUE16-GISEL-NEXT:    s_wait_expcnt 0x0 | 
|  | ; GFX12-TRUE16-GISEL-NEXT:    s_wait_samplecnt 0x0 | 
|  | ; GFX12-TRUE16-GISEL-NEXT:    s_wait_bvhcnt 0x0 | 
|  | ; GFX12-TRUE16-GISEL-NEXT:    s_wait_kmcnt 0x0 | 
|  | ; GFX12-TRUE16-GISEL-NEXT:    v_max_num_f16_e32 v0.l, v0.l, v0.l | 
|  | ; GFX12-TRUE16-GISEL-NEXT:    v_max_num_f16_e32 v0.h, v1.l, v1.l | 
|  | ; GFX12-TRUE16-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX12-TRUE16-GISEL-NEXT:    v_min_num_f16_e32 v0.l, v0.l, v0.h | 
|  | ; GFX12-TRUE16-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX12-FAKE16-SDAG-LABEL: v_minimumnum_f16_no_ieee: | 
|  | ; GFX12-FAKE16-SDAG:       ; %bb.0: | 
|  | ; GFX12-FAKE16-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0 | 
|  | ; GFX12-FAKE16-SDAG-NEXT:    s_wait_expcnt 0x0 | 
|  | ; GFX12-FAKE16-SDAG-NEXT:    s_wait_samplecnt 0x0 | 
|  | ; GFX12-FAKE16-SDAG-NEXT:    s_wait_bvhcnt 0x0 | 
|  | ; GFX12-FAKE16-SDAG-NEXT:    s_wait_kmcnt 0x0 | 
|  | ; GFX12-FAKE16-SDAG-NEXT:    v_max_num_f16_e32 v1, v1, v1 | 
|  | ; GFX12-FAKE16-SDAG-NEXT:    v_max_num_f16_e32 v0, v0, v0 | 
|  | ; GFX12-FAKE16-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX12-FAKE16-SDAG-NEXT:    v_min_num_f16_e32 v0, v0, v1 | 
|  | ; GFX12-FAKE16-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX12-FAKE16-GISEL-LABEL: v_minimumnum_f16_no_ieee: | 
|  | ; GFX12-FAKE16-GISEL:       ; %bb.0: | 
|  | ; GFX12-FAKE16-GISEL-NEXT:    s_wait_loadcnt_dscnt 0x0 | 
|  | ; GFX12-FAKE16-GISEL-NEXT:    s_wait_expcnt 0x0 | 
|  | ; GFX12-FAKE16-GISEL-NEXT:    s_wait_samplecnt 0x0 | 
|  | ; GFX12-FAKE16-GISEL-NEXT:    s_wait_bvhcnt 0x0 | 
|  | ; GFX12-FAKE16-GISEL-NEXT:    s_wait_kmcnt 0x0 | 
|  | ; GFX12-FAKE16-GISEL-NEXT:    v_max_num_f16_e32 v0, v0, v0 | 
|  | ; GFX12-FAKE16-GISEL-NEXT:    v_max_num_f16_e32 v1, v1, v1 | 
|  | ; GFX12-FAKE16-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX12-FAKE16-GISEL-NEXT:    v_min_num_f16_e32 v0, v0, v1 | 
|  | ; GFX12-FAKE16-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | %result = call half @llvm.minimumnum.f16(half %x, half %y) | 
|  | ret half %result | 
|  | } | 
|  |  | 
|  | define half @v_minimumnum_f16_nan_no_ieee(half %x, half %y) #0 { | 
|  | ; GFX7-SDAG-LABEL: v_minimumnum_f16_nan_no_ieee: | 
|  | ; GFX7-SDAG:       ; %bb.0: | 
|  | ; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v1, v1 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v0, v0 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v1, v1 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v0, v0 | 
|  | ; GFX7-SDAG-NEXT:    v_min_f32_e32 v0, v0, v1 | 
|  | ; GFX7-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX7-GISEL-LABEL: v_minimumnum_f16_nan_no_ieee: | 
|  | ; GFX7-GISEL:       ; %bb.0: | 
|  | ; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v0, v0 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v1, v1 | 
|  | ; GFX7-GISEL-NEXT:    v_min_f32_e32 v0, v0, v1 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f16_f32_e32 v0, v0 | 
|  | ; GFX7-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX8-LABEL: v_minimumnum_f16_nan_no_ieee: | 
|  | ; GFX8:       ; %bb.0: | 
|  | ; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX8-NEXT:    v_min_f16_e32 v0, v0, v1 | 
|  | ; GFX8-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX9-LABEL: v_minimumnum_f16_nan_no_ieee: | 
|  | ; GFX9:       ; %bb.0: | 
|  | ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX9-NEXT:    v_min_f16_e32 v0, v0, v1 | 
|  | ; GFX9-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX10-LABEL: v_minimumnum_f16_nan_no_ieee: | 
|  | ; GFX10:       ; %bb.0: | 
|  | ; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX10-NEXT:    v_min_f16_e32 v0, v0, v1 | 
|  | ; GFX10-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX11-TRUE16-LABEL: v_minimumnum_f16_nan_no_ieee: | 
|  | ; GFX11-TRUE16:       ; %bb.0: | 
|  | ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX11-TRUE16-NEXT:    v_min_f16_e32 v0.l, v0.l, v1.l | 
|  | ; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX11-FAKE16-LABEL: v_minimumnum_f16_nan_no_ieee: | 
|  | ; GFX11-FAKE16:       ; %bb.0: | 
|  | ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX11-FAKE16-NEXT:    v_min_f16_e32 v0, v0, v1 | 
|  | ; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX12-TRUE16-LABEL: v_minimumnum_f16_nan_no_ieee: | 
|  | ; GFX12-TRUE16:       ; %bb.0: | 
|  | ; GFX12-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x0 | 
|  | ; GFX12-TRUE16-NEXT:    s_wait_expcnt 0x0 | 
|  | ; GFX12-TRUE16-NEXT:    s_wait_samplecnt 0x0 | 
|  | ; GFX12-TRUE16-NEXT:    s_wait_bvhcnt 0x0 | 
|  | ; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x0 | 
|  | ; GFX12-TRUE16-NEXT:    v_min_num_f16_e32 v0.l, v0.l, v1.l | 
|  | ; GFX12-TRUE16-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX12-FAKE16-LABEL: v_minimumnum_f16_nan_no_ieee: | 
|  | ; GFX12-FAKE16:       ; %bb.0: | 
|  | ; GFX12-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x0 | 
|  | ; GFX12-FAKE16-NEXT:    s_wait_expcnt 0x0 | 
|  | ; GFX12-FAKE16-NEXT:    s_wait_samplecnt 0x0 | 
|  | ; GFX12-FAKE16-NEXT:    s_wait_bvhcnt 0x0 | 
|  | ; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x0 | 
|  | ; GFX12-FAKE16-NEXT:    v_min_num_f16_e32 v0, v0, v1 | 
|  | ; GFX12-FAKE16-NEXT:    s_setpc_b64 s[30:31] | 
|  | %result = call nnan half @llvm.minimumnum.f16(half %x, half %y) | 
|  | ret half %result | 
|  | } | 
|  |  | 
|  | define float @v_minimumnum_f32_no_ieee(float %x, float %y) #0 { | 
|  | ; GFX7-LABEL: v_minimumnum_f32_no_ieee: | 
|  | ; GFX7:       ; %bb.0: | 
|  | ; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX7-NEXT:    v_min_f32_e32 v0, v0, v1 | 
|  | ; GFX7-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX8-LABEL: v_minimumnum_f32_no_ieee: | 
|  | ; GFX8:       ; %bb.0: | 
|  | ; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX8-NEXT:    v_min_f32_e32 v0, v0, v1 | 
|  | ; GFX8-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX9-LABEL: v_minimumnum_f32_no_ieee: | 
|  | ; GFX9:       ; %bb.0: | 
|  | ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX9-NEXT:    v_min_f32_e32 v0, v0, v1 | 
|  | ; GFX9-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX10-LABEL: v_minimumnum_f32_no_ieee: | 
|  | ; GFX10:       ; %bb.0: | 
|  | ; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX10-NEXT:    v_min_f32_e32 v0, v0, v1 | 
|  | ; GFX10-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX11-LABEL: v_minimumnum_f32_no_ieee: | 
|  | ; GFX11:       ; %bb.0: | 
|  | ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX11-NEXT:    v_min_f32_e32 v0, v0, v1 | 
|  | ; GFX11-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX12-SDAG-LABEL: v_minimumnum_f32_no_ieee: | 
|  | ; GFX12-SDAG:       ; %bb.0: | 
|  | ; GFX12-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    s_wait_expcnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    s_wait_samplecnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    s_wait_bvhcnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    s_wait_kmcnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    v_dual_max_num_f32 v1, v1, v1 :: v_dual_max_num_f32 v0, v0, v0 | 
|  | ; GFX12-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX12-SDAG-NEXT:    v_min_num_f32_e32 v0, v0, v1 | 
|  | ; GFX12-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX12-GISEL-LABEL: v_minimumnum_f32_no_ieee: | 
|  | ; GFX12-GISEL:       ; %bb.0: | 
|  | ; GFX12-GISEL-NEXT:    s_wait_loadcnt_dscnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    s_wait_expcnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    s_wait_samplecnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    s_wait_bvhcnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    s_wait_kmcnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    v_dual_max_num_f32 v0, v0, v0 :: v_dual_max_num_f32 v1, v1, v1 | 
|  | ; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX12-GISEL-NEXT:    v_min_num_f32_e32 v0, v0, v1 | 
|  | ; GFX12-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | %result = call float @llvm.minimumnum.f32(float %x, float %y) | 
|  | ret float %result | 
|  | } | 
|  |  | 
|  | define float @v_minimumnum_f32_nnan_no_ieee(float %x, float %y) #0 { | 
|  | ; GFX7-LABEL: v_minimumnum_f32_nnan_no_ieee: | 
|  | ; GFX7:       ; %bb.0: | 
|  | ; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX7-NEXT:    v_min_f32_e32 v0, v0, v1 | 
|  | ; GFX7-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX8-LABEL: v_minimumnum_f32_nnan_no_ieee: | 
|  | ; GFX8:       ; %bb.0: | 
|  | ; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX8-NEXT:    v_min_f32_e32 v0, v0, v1 | 
|  | ; GFX8-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX9-LABEL: v_minimumnum_f32_nnan_no_ieee: | 
|  | ; GFX9:       ; %bb.0: | 
|  | ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX9-NEXT:    v_min_f32_e32 v0, v0, v1 | 
|  | ; GFX9-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX10-LABEL: v_minimumnum_f32_nnan_no_ieee: | 
|  | ; GFX10:       ; %bb.0: | 
|  | ; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX10-NEXT:    v_min_f32_e32 v0, v0, v1 | 
|  | ; GFX10-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX11-LABEL: v_minimumnum_f32_nnan_no_ieee: | 
|  | ; GFX11:       ; %bb.0: | 
|  | ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX11-NEXT:    v_min_f32_e32 v0, v0, v1 | 
|  | ; GFX11-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX12-LABEL: v_minimumnum_f32_nnan_no_ieee: | 
|  | ; GFX12:       ; %bb.0: | 
|  | ; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0 | 
|  | ; GFX12-NEXT:    s_wait_expcnt 0x0 | 
|  | ; GFX12-NEXT:    s_wait_samplecnt 0x0 | 
|  | ; GFX12-NEXT:    s_wait_bvhcnt 0x0 | 
|  | ; GFX12-NEXT:    s_wait_kmcnt 0x0 | 
|  | ; GFX12-NEXT:    v_min_num_f32_e32 v0, v0, v1 | 
|  | ; GFX12-NEXT:    s_setpc_b64 s[30:31] | 
|  | %result = call nnan float @llvm.minimumnum.f32(float %x, float %y) | 
|  | ret float %result | 
|  | } | 
|  |  | 
|  | define double @v_minimumnum_f64_no_ieee(double %x, double %y) #0 { | 
|  | ; GFX7-LABEL: v_minimumnum_f64_no_ieee: | 
|  | ; GFX7:       ; %bb.0: | 
|  | ; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX7-NEXT:    v_min_f64 v[0:1], v[0:1], v[2:3] | 
|  | ; GFX7-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX8-LABEL: v_minimumnum_f64_no_ieee: | 
|  | ; GFX8:       ; %bb.0: | 
|  | ; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX8-NEXT:    v_min_f64 v[0:1], v[0:1], v[2:3] | 
|  | ; GFX8-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX9-LABEL: v_minimumnum_f64_no_ieee: | 
|  | ; GFX9:       ; %bb.0: | 
|  | ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX9-NEXT:    v_min_f64 v[0:1], v[0:1], v[2:3] | 
|  | ; GFX9-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX10-LABEL: v_minimumnum_f64_no_ieee: | 
|  | ; GFX10:       ; %bb.0: | 
|  | ; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX10-NEXT:    v_min_f64 v[0:1], v[0:1], v[2:3] | 
|  | ; GFX10-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX11-LABEL: v_minimumnum_f64_no_ieee: | 
|  | ; GFX11:       ; %bb.0: | 
|  | ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX11-NEXT:    v_min_f64 v[0:1], v[0:1], v[2:3] | 
|  | ; GFX11-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX12-SDAG-LABEL: v_minimumnum_f64_no_ieee: | 
|  | ; GFX12-SDAG:       ; %bb.0: | 
|  | ; GFX12-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    s_wait_expcnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    s_wait_samplecnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    s_wait_bvhcnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    s_wait_kmcnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    v_max_num_f64_e32 v[2:3], v[2:3], v[2:3] | 
|  | ; GFX12-SDAG-NEXT:    v_max_num_f64_e32 v[0:1], v[0:1], v[0:1] | 
|  | ; GFX12-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX12-SDAG-NEXT:    v_min_num_f64_e32 v[0:1], v[0:1], v[2:3] | 
|  | ; GFX12-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX12-GISEL-LABEL: v_minimumnum_f64_no_ieee: | 
|  | ; GFX12-GISEL:       ; %bb.0: | 
|  | ; GFX12-GISEL-NEXT:    s_wait_loadcnt_dscnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    s_wait_expcnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    s_wait_samplecnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    s_wait_bvhcnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    s_wait_kmcnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    v_max_num_f64_e32 v[0:1], v[0:1], v[0:1] | 
|  | ; GFX12-GISEL-NEXT:    v_max_num_f64_e32 v[2:3], v[2:3], v[2:3] | 
|  | ; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX12-GISEL-NEXT:    v_min_num_f64_e32 v[0:1], v[0:1], v[2:3] | 
|  | ; GFX12-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | %result = call double @llvm.minimumnum.f64(double %x, double %y) | 
|  | ret double %result | 
|  | } | 
|  |  | 
|  | define double @v_minimumnum_f64_nnan_no_ieee(double %x, double %y) #0 { | 
|  | ; GFX7-LABEL: v_minimumnum_f64_nnan_no_ieee: | 
|  | ; GFX7:       ; %bb.0: | 
|  | ; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX7-NEXT:    v_min_f64 v[0:1], v[0:1], v[2:3] | 
|  | ; GFX7-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX8-LABEL: v_minimumnum_f64_nnan_no_ieee: | 
|  | ; GFX8:       ; %bb.0: | 
|  | ; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX8-NEXT:    v_min_f64 v[0:1], v[0:1], v[2:3] | 
|  | ; GFX8-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX9-LABEL: v_minimumnum_f64_nnan_no_ieee: | 
|  | ; GFX9:       ; %bb.0: | 
|  | ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX9-NEXT:    v_min_f64 v[0:1], v[0:1], v[2:3] | 
|  | ; GFX9-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX10-LABEL: v_minimumnum_f64_nnan_no_ieee: | 
|  | ; GFX10:       ; %bb.0: | 
|  | ; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX10-NEXT:    v_min_f64 v[0:1], v[0:1], v[2:3] | 
|  | ; GFX10-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX11-LABEL: v_minimumnum_f64_nnan_no_ieee: | 
|  | ; GFX11:       ; %bb.0: | 
|  | ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX11-NEXT:    v_min_f64 v[0:1], v[0:1], v[2:3] | 
|  | ; GFX11-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX12-LABEL: v_minimumnum_f64_nnan_no_ieee: | 
|  | ; GFX12:       ; %bb.0: | 
|  | ; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0 | 
|  | ; GFX12-NEXT:    s_wait_expcnt 0x0 | 
|  | ; GFX12-NEXT:    s_wait_samplecnt 0x0 | 
|  | ; GFX12-NEXT:    s_wait_bvhcnt 0x0 | 
|  | ; GFX12-NEXT:    s_wait_kmcnt 0x0 | 
|  | ; GFX12-NEXT:    v_min_num_f64_e32 v[0:1], v[0:1], v[2:3] | 
|  | ; GFX12-NEXT:    s_setpc_b64 s[30:31] | 
|  | %result = call nnan double @llvm.minimumnum.f64(double %x, double %y) | 
|  | ret double %result | 
|  | } | 
|  |  | 
|  | define <2 x half> @v_minimumnum_v2f16_no_ieee(<2 x half> %x, <2 x half> %y) #0 { | 
|  | ; GFX7-SDAG-LABEL: v_minimumnum_v2f16_no_ieee: | 
|  | ; GFX7-SDAG:       ; %bb.0: | 
|  | ; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v3, v3 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v2, v2 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v0, v0 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v1, v1 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v3, v3 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v2, v2 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v0, v0 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v1, v1 | 
|  | ; GFX7-SDAG-NEXT:    v_min_f32_e32 v0, v0, v2 | 
|  | ; GFX7-SDAG-NEXT:    v_min_f32_e32 v1, v1, v3 | 
|  | ; GFX7-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX7-GISEL-LABEL: v_minimumnum_v2f16_no_ieee: | 
|  | ; GFX7-GISEL:       ; %bb.0: | 
|  | ; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v0, v0 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v2, v2 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v1, v1 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v3, v3 | 
|  | ; GFX7-GISEL-NEXT:    v_min_f32_e32 v0, v0, v2 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f16_f32_e32 v0, v0 | 
|  | ; GFX7-GISEL-NEXT:    v_min_f32_e32 v1, v1, v3 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f16_f32_e32 v1, v1 | 
|  | ; GFX7-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX8-SDAG-LABEL: v_minimumnum_v2f16_no_ieee: | 
|  | ; GFX8-SDAG:       ; %bb.0: | 
|  | ; GFX8-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX8-SDAG-NEXT:    v_min_f16_sdwa v2, v0, v1 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-SDAG-NEXT:    v_min_f16_e32 v0, v0, v1 | 
|  | ; GFX8-SDAG-NEXT:    v_or_b32_e32 v0, v0, v2 | 
|  | ; GFX8-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX8-GISEL-LABEL: v_minimumnum_v2f16_no_ieee: | 
|  | ; GFX8-GISEL:       ; %bb.0: | 
|  | ; GFX8-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX8-GISEL-NEXT:    v_min_f16_e32 v2, v0, v1 | 
|  | ; GFX8-GISEL-NEXT:    v_min_f16_sdwa v0, v0, v1 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-GISEL-NEXT:    v_or_b32_e32 v0, v2, v0 | 
|  | ; GFX8-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX9-LABEL: v_minimumnum_v2f16_no_ieee: | 
|  | ; GFX9:       ; %bb.0: | 
|  | ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX9-NEXT:    v_pk_min_f16 v0, v0, v1 | 
|  | ; GFX9-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX10-LABEL: v_minimumnum_v2f16_no_ieee: | 
|  | ; GFX10:       ; %bb.0: | 
|  | ; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX10-NEXT:    v_pk_min_f16 v0, v0, v1 | 
|  | ; GFX10-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX11-LABEL: v_minimumnum_v2f16_no_ieee: | 
|  | ; GFX11:       ; %bb.0: | 
|  | ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX11-NEXT:    v_pk_min_f16 v0, v0, v1 | 
|  | ; GFX11-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX12-SDAG-LABEL: v_minimumnum_v2f16_no_ieee: | 
|  | ; GFX12-SDAG:       ; %bb.0: | 
|  | ; GFX12-SDAG-NEXT:    s_wait_loadcnt_dscnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    s_wait_expcnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    s_wait_samplecnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    s_wait_bvhcnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    s_wait_kmcnt 0x0 | 
|  | ; GFX12-SDAG-NEXT:    v_pk_max_num_f16 v1, v1, v1 | 
|  | ; GFX12-SDAG-NEXT:    v_pk_max_num_f16 v0, v0, v0 | 
|  | ; GFX12-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX12-SDAG-NEXT:    v_pk_min_num_f16 v0, v0, v1 | 
|  | ; GFX12-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX12-GISEL-LABEL: v_minimumnum_v2f16_no_ieee: | 
|  | ; GFX12-GISEL:       ; %bb.0: | 
|  | ; GFX12-GISEL-NEXT:    s_wait_loadcnt_dscnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    s_wait_expcnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    s_wait_samplecnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    s_wait_bvhcnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    s_wait_kmcnt 0x0 | 
|  | ; GFX12-GISEL-NEXT:    v_pk_max_num_f16 v0, v0, v0 | 
|  | ; GFX12-GISEL-NEXT:    v_pk_max_num_f16 v1, v1, v1 | 
|  | ; GFX12-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1) | 
|  | ; GFX12-GISEL-NEXT:    v_pk_min_num_f16 v0, v0, v1 | 
|  | ; GFX12-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | %result = call <2 x half> @llvm.minimumnum.v2f16(<2 x half> %x, <2 x half> %y) | 
|  | ret <2 x half> %result | 
|  | } | 
|  |  | 
|  | define <2 x half> @v_minimumnum_v2f16_nnan_no_ieee(<2 x half> %x, <2 x half> %y) #0 { | 
|  | ; GFX7-SDAG-LABEL: v_minimumnum_v2f16_nnan_no_ieee: | 
|  | ; GFX7-SDAG:       ; %bb.0: | 
|  | ; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v3, v3 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v2, v2 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v0, v0 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v1, v1 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v3, v3 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v2, v2 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v0, v0 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v1, v1 | 
|  | ; GFX7-SDAG-NEXT:    v_min_f32_e32 v0, v0, v2 | 
|  | ; GFX7-SDAG-NEXT:    v_min_f32_e32 v1, v1, v3 | 
|  | ; GFX7-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX7-GISEL-LABEL: v_minimumnum_v2f16_nnan_no_ieee: | 
|  | ; GFX7-GISEL:       ; %bb.0: | 
|  | ; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v0, v0 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v2, v2 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v1, v1 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v3, v3 | 
|  | ; GFX7-GISEL-NEXT:    v_min_f32_e32 v0, v0, v2 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f16_f32_e32 v0, v0 | 
|  | ; GFX7-GISEL-NEXT:    v_min_f32_e32 v1, v1, v3 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f16_f32_e32 v1, v1 | 
|  | ; GFX7-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX8-SDAG-LABEL: v_minimumnum_v2f16_nnan_no_ieee: | 
|  | ; GFX8-SDAG:       ; %bb.0: | 
|  | ; GFX8-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX8-SDAG-NEXT:    v_min_f16_sdwa v2, v0, v1 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-SDAG-NEXT:    v_min_f16_e32 v0, v0, v1 | 
|  | ; GFX8-SDAG-NEXT:    v_or_b32_e32 v0, v0, v2 | 
|  | ; GFX8-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX8-GISEL-LABEL: v_minimumnum_v2f16_nnan_no_ieee: | 
|  | ; GFX8-GISEL:       ; %bb.0: | 
|  | ; GFX8-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX8-GISEL-NEXT:    v_min_f16_e32 v2, v0, v1 | 
|  | ; GFX8-GISEL-NEXT:    v_min_f16_sdwa v0, v0, v1 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-GISEL-NEXT:    v_or_b32_e32 v0, v2, v0 | 
|  | ; GFX8-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX9-LABEL: v_minimumnum_v2f16_nnan_no_ieee: | 
|  | ; GFX9:       ; %bb.0: | 
|  | ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX9-NEXT:    v_pk_min_f16 v0, v0, v1 | 
|  | ; GFX9-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX10-LABEL: v_minimumnum_v2f16_nnan_no_ieee: | 
|  | ; GFX10:       ; %bb.0: | 
|  | ; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX10-NEXT:    v_pk_min_f16 v0, v0, v1 | 
|  | ; GFX10-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX11-LABEL: v_minimumnum_v2f16_nnan_no_ieee: | 
|  | ; GFX11:       ; %bb.0: | 
|  | ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX11-NEXT:    v_pk_min_f16 v0, v0, v1 | 
|  | ; GFX11-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX12-LABEL: v_minimumnum_v2f16_nnan_no_ieee: | 
|  | ; GFX12:       ; %bb.0: | 
|  | ; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0 | 
|  | ; GFX12-NEXT:    s_wait_expcnt 0x0 | 
|  | ; GFX12-NEXT:    s_wait_samplecnt 0x0 | 
|  | ; GFX12-NEXT:    s_wait_bvhcnt 0x0 | 
|  | ; GFX12-NEXT:    s_wait_kmcnt 0x0 | 
|  | ; GFX12-NEXT:    v_pk_min_num_f16 v0, v0, v1 | 
|  | ; GFX12-NEXT:    s_setpc_b64 s[30:31] | 
|  | %result = call nnan <2 x half> @llvm.minimumnum.v2f16(<2 x half> %x, <2 x half> %y) | 
|  | ret <2 x half> %result | 
|  | } | 
|  |  | 
|  | define <3 x half> @v_minimumnum_v3f16_nnan_no_ieee(<3 x half> %x, <3 x half> %y) #0 { | 
|  | ; GFX7-SDAG-LABEL: v_minimumnum_v3f16_nnan_no_ieee: | 
|  | ; GFX7-SDAG:       ; %bb.0: | 
|  | ; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v5, v5 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v2, v2 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v4, v4 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v3, v3 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v0, v0 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v1, v1 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v5, v5 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v4, v4 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v3, v3 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v0, v0 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v1, v1 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v2, v2 | 
|  | ; GFX7-SDAG-NEXT:    v_min_f32_e32 v0, v0, v3 | 
|  | ; GFX7-SDAG-NEXT:    v_min_f32_e32 v1, v1, v4 | 
|  | ; GFX7-SDAG-NEXT:    v_min_f32_e32 v2, v2, v5 | 
|  | ; GFX7-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX7-GISEL-LABEL: v_minimumnum_v3f16_nnan_no_ieee: | 
|  | ; GFX7-GISEL:       ; %bb.0: | 
|  | ; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v0, v0 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v3, v3 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v1, v1 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v2, v2 | 
|  | ; GFX7-GISEL-NEXT:    v_min_f32_e32 v0, v0, v3 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v3, v4 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v4, v5 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f16_f32_e32 v0, v0 | 
|  | ; GFX7-GISEL-NEXT:    v_min_f32_e32 v1, v1, v3 | 
|  | ; GFX7-GISEL-NEXT:    v_min_f32_e32 v2, v2, v4 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f16_f32_e32 v1, v1 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f16_f32_e32 v2, v2 | 
|  | ; GFX7-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX8-SDAG-LABEL: v_minimumnum_v3f16_nnan_no_ieee: | 
|  | ; GFX8-SDAG:       ; %bb.0: | 
|  | ; GFX8-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX8-SDAG-NEXT:    v_min_f16_sdwa v4, v0, v2 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-SDAG-NEXT:    v_min_f16_e32 v0, v0, v2 | 
|  | ; GFX8-SDAG-NEXT:    v_min_f16_e32 v1, v1, v3 | 
|  | ; GFX8-SDAG-NEXT:    v_or_b32_e32 v0, v0, v4 | 
|  | ; GFX8-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX8-GISEL-LABEL: v_minimumnum_v3f16_nnan_no_ieee: | 
|  | ; GFX8-GISEL:       ; %bb.0: | 
|  | ; GFX8-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX8-GISEL-NEXT:    v_min_f16_e32 v4, v0, v2 | 
|  | ; GFX8-GISEL-NEXT:    v_min_f16_sdwa v0, v0, v2 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-GISEL-NEXT:    v_min_f16_e32 v1, v1, v3 | 
|  | ; GFX8-GISEL-NEXT:    v_or_b32_e32 v0, v4, v0 | 
|  | ; GFX8-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX9-SDAG-LABEL: v_minimumnum_v3f16_nnan_no_ieee: | 
|  | ; GFX9-SDAG:       ; %bb.0: | 
|  | ; GFX9-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX9-SDAG-NEXT:    v_pk_min_f16 v1, v1, v3 | 
|  | ; GFX9-SDAG-NEXT:    v_pk_min_f16 v0, v0, v2 | 
|  | ; GFX9-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX9-GISEL-LABEL: v_minimumnum_v3f16_nnan_no_ieee: | 
|  | ; GFX9-GISEL:       ; %bb.0: | 
|  | ; GFX9-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX9-GISEL-NEXT:    v_pk_min_f16 v0, v0, v2 | 
|  | ; GFX9-GISEL-NEXT:    v_pk_min_f16 v1, v1, v3 | 
|  | ; GFX9-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX10-LABEL: v_minimumnum_v3f16_nnan_no_ieee: | 
|  | ; GFX10:       ; %bb.0: | 
|  | ; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX10-NEXT:    v_pk_min_f16 v0, v0, v2 | 
|  | ; GFX10-NEXT:    v_pk_min_f16 v1, v1, v3 | 
|  | ; GFX10-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX11-LABEL: v_minimumnum_v3f16_nnan_no_ieee: | 
|  | ; GFX11:       ; %bb.0: | 
|  | ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX11-NEXT:    v_pk_min_f16 v0, v0, v2 | 
|  | ; GFX11-NEXT:    v_pk_min_f16 v1, v1, v3 | 
|  | ; GFX11-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX12-LABEL: v_minimumnum_v3f16_nnan_no_ieee: | 
|  | ; GFX12:       ; %bb.0: | 
|  | ; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0 | 
|  | ; GFX12-NEXT:    s_wait_expcnt 0x0 | 
|  | ; GFX12-NEXT:    s_wait_samplecnt 0x0 | 
|  | ; GFX12-NEXT:    s_wait_bvhcnt 0x0 | 
|  | ; GFX12-NEXT:    s_wait_kmcnt 0x0 | 
|  | ; GFX12-NEXT:    v_pk_min_num_f16 v0, v0, v2 | 
|  | ; GFX12-NEXT:    v_pk_min_num_f16 v1, v1, v3 | 
|  | ; GFX12-NEXT:    s_setpc_b64 s[30:31] | 
|  | %result = call nnan <3 x half> @llvm.minimumnum.v3f16(<3 x half> %x, <3 x half> %y) | 
|  | ret <3 x half> %result | 
|  | } | 
|  |  | 
|  | define <4 x half> @v_minimumnum_v4f16_nnan_no_ieee(<4 x half> %x, <4 x half> %y) #0 { | 
|  | ; GFX7-SDAG-LABEL: v_minimumnum_v4f16_nnan_no_ieee: | 
|  | ; GFX7-SDAG:       ; %bb.0: | 
|  | ; GFX7-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v7, v7 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v6, v6 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v3, v3 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v2, v2 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v5, v5 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v4, v4 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v0, v0 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f16_f32_e32 v1, v1 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v7, v7 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v6, v6 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v5, v5 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v4, v4 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v0, v0 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v1, v1 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v2, v2 | 
|  | ; GFX7-SDAG-NEXT:    v_cvt_f32_f16_e32 v3, v3 | 
|  | ; GFX7-SDAG-NEXT:    v_min_f32_e32 v0, v0, v4 | 
|  | ; GFX7-SDAG-NEXT:    v_min_f32_e32 v1, v1, v5 | 
|  | ; GFX7-SDAG-NEXT:    v_min_f32_e32 v2, v2, v6 | 
|  | ; GFX7-SDAG-NEXT:    v_min_f32_e32 v3, v3, v7 | 
|  | ; GFX7-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX7-GISEL-LABEL: v_minimumnum_v4f16_nnan_no_ieee: | 
|  | ; GFX7-GISEL:       ; %bb.0: | 
|  | ; GFX7-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v0, v0 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v4, v4 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v1, v1 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v5, v5 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v2, v2 | 
|  | ; GFX7-GISEL-NEXT:    v_min_f32_e32 v0, v0, v4 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v4, v6 | 
|  | ; GFX7-GISEL-NEXT:    v_min_f32_e32 v1, v1, v5 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v3, v3 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f32_f16_e32 v5, v7 | 
|  | ; GFX7-GISEL-NEXT:    v_min_f32_e32 v2, v2, v4 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f16_f32_e32 v0, v0 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f16_f32_e32 v1, v1 | 
|  | ; GFX7-GISEL-NEXT:    v_min_f32_e32 v3, v3, v5 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f16_f32_e32 v2, v2 | 
|  | ; GFX7-GISEL-NEXT:    v_cvt_f16_f32_e32 v3, v3 | 
|  | ; GFX7-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX8-SDAG-LABEL: v_minimumnum_v4f16_nnan_no_ieee: | 
|  | ; GFX8-SDAG:       ; %bb.0: | 
|  | ; GFX8-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX8-SDAG-NEXT:    v_min_f16_sdwa v4, v1, v3 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-SDAG-NEXT:    v_min_f16_sdwa v5, v0, v2 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-SDAG-NEXT:    v_min_f16_e32 v1, v1, v3 | 
|  | ; GFX8-SDAG-NEXT:    v_min_f16_e32 v0, v0, v2 | 
|  | ; GFX8-SDAG-NEXT:    v_or_b32_e32 v0, v0, v5 | 
|  | ; GFX8-SDAG-NEXT:    v_or_b32_e32 v1, v1, v4 | 
|  | ; GFX8-SDAG-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX8-GISEL-LABEL: v_minimumnum_v4f16_nnan_no_ieee: | 
|  | ; GFX8-GISEL:       ; %bb.0: | 
|  | ; GFX8-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX8-GISEL-NEXT:    v_min_f16_e32 v4, v0, v2 | 
|  | ; GFX8-GISEL-NEXT:    v_min_f16_sdwa v0, v0, v2 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-GISEL-NEXT:    v_min_f16_e32 v2, v1, v3 | 
|  | ; GFX8-GISEL-NEXT:    v_min_f16_sdwa v1, v1, v3 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
|  | ; GFX8-GISEL-NEXT:    v_or_b32_e32 v0, v4, v0 | 
|  | ; GFX8-GISEL-NEXT:    v_or_b32_e32 v1, v2, v1 | 
|  | ; GFX8-GISEL-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX9-LABEL: v_minimumnum_v4f16_nnan_no_ieee: | 
|  | ; GFX9:       ; %bb.0: | 
|  | ; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX9-NEXT:    v_pk_min_f16 v0, v0, v2 | 
|  | ; GFX9-NEXT:    v_pk_min_f16 v1, v1, v3 | 
|  | ; GFX9-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX10-LABEL: v_minimumnum_v4f16_nnan_no_ieee: | 
|  | ; GFX10:       ; %bb.0: | 
|  | ; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX10-NEXT:    v_pk_min_f16 v0, v0, v2 | 
|  | ; GFX10-NEXT:    v_pk_min_f16 v1, v1, v3 | 
|  | ; GFX10-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX11-LABEL: v_minimumnum_v4f16_nnan_no_ieee: | 
|  | ; GFX11:       ; %bb.0: | 
|  | ; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; GFX11-NEXT:    v_pk_min_f16 v0, v0, v2 | 
|  | ; GFX11-NEXT:    v_pk_min_f16 v1, v1, v3 | 
|  | ; GFX11-NEXT:    s_setpc_b64 s[30:31] | 
|  | ; | 
|  | ; GFX12-LABEL: v_minimumnum_v4f16_nnan_no_ieee: | 
|  | ; GFX12:       ; %bb.0: | 
|  | ; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0 | 
|  | ; GFX12-NEXT:    s_wait_expcnt 0x0 | 
|  | ; GFX12-NEXT:    s_wait_samplecnt 0x0 | 
|  | ; GFX12-NEXT:    s_wait_bvhcnt 0x0 | 
|  | ; GFX12-NEXT:    s_wait_kmcnt 0x0 | 
|  | ; GFX12-NEXT:    v_pk_min_num_f16 v0, v0, v2 | 
|  | ; GFX12-NEXT:    v_pk_min_num_f16 v1, v1, v3 | 
|  | ; GFX12-NEXT:    s_setpc_b64 s[30:31] | 
|  | %result = call nnan <4 x half> @llvm.minimumnum.v4f16(<4 x half> %x, <4 x half> %y) | 
|  | ret <4 x half> %result | 
|  | } | 
|  |  | 
|  | attributes #0 = { "amdgpu-ieee"="false" } | 
|  | ;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line: | 
|  | ; GFX900: {{.*}} | 
|  | ; GFX950: {{.*}} |