1ee61a4dbSMatt Arsenault; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5 2ee61a4dbSMatt Arsenault; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx803 < %s | FileCheck -check-prefix=GFX8 %s 3ee61a4dbSMatt Arsenault; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx900 < %s | FileCheck -check-prefix=GFX9 %s 4ee61a4dbSMatt Arsenault; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1030 < %s | FileCheck -check-prefix=GFX10 %s 5ee61a4dbSMatt Arsenault; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1100 < %s | FileCheck -check-prefix=GFX11 %s 6ee61a4dbSMatt Arsenault; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1200 < %s | FileCheck -check-prefix=GFX12 %s 7ee61a4dbSMatt Arsenault 8ee61a4dbSMatt Arsenaultdefine half @v_maximumnum_f16(half %x, half %y) { 9ee61a4dbSMatt Arsenault; GFX8-LABEL: v_maximumnum_f16: 10ee61a4dbSMatt Arsenault; GFX8: ; %bb.0: 11ee61a4dbSMatt Arsenault; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 12ee61a4dbSMatt Arsenault; GFX8-NEXT: v_max_f16_e32 v1, v1, v1 13ee61a4dbSMatt Arsenault; GFX8-NEXT: v_max_f16_e32 v0, v0, v0 14ee61a4dbSMatt Arsenault; GFX8-NEXT: v_max_f16_e32 v0, v0, v1 15ee61a4dbSMatt Arsenault; GFX8-NEXT: s_setpc_b64 s[30:31] 16ee61a4dbSMatt Arsenault; 17ee61a4dbSMatt Arsenault; GFX9-LABEL: v_maximumnum_f16: 18ee61a4dbSMatt Arsenault; GFX9: ; %bb.0: 19ee61a4dbSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 20ee61a4dbSMatt Arsenault; GFX9-NEXT: v_max_f16_e32 v1, v1, v1 21ee61a4dbSMatt Arsenault; GFX9-NEXT: v_max_f16_e32 v0, v0, v0 22ee61a4dbSMatt Arsenault; GFX9-NEXT: v_max_f16_e32 v0, v0, v1 23ee61a4dbSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 24ee61a4dbSMatt Arsenault; 25ee61a4dbSMatt Arsenault; GFX10-LABEL: v_maximumnum_f16: 26ee61a4dbSMatt Arsenault; GFX10: ; %bb.0: 27ee61a4dbSMatt Arsenault; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 28ee61a4dbSMatt Arsenault; GFX10-NEXT: v_max_f16_e32 v1, v1, v1 29ee61a4dbSMatt Arsenault; GFX10-NEXT: v_max_f16_e32 v0, v0, v0 30ee61a4dbSMatt Arsenault; GFX10-NEXT: v_max_f16_e32 v0, v0, v1 31ee61a4dbSMatt Arsenault; GFX10-NEXT: s_setpc_b64 s[30:31] 32ee61a4dbSMatt Arsenault; 33ee61a4dbSMatt Arsenault; GFX11-LABEL: v_maximumnum_f16: 34ee61a4dbSMatt Arsenault; GFX11: ; %bb.0: 35ee61a4dbSMatt Arsenault; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 36ee61a4dbSMatt Arsenault; GFX11-NEXT: v_max_f16_e32 v1, v1, v1 37ee61a4dbSMatt Arsenault; GFX11-NEXT: v_max_f16_e32 v0, v0, v0 38ee61a4dbSMatt Arsenault; GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1) 39ee61a4dbSMatt Arsenault; GFX11-NEXT: v_max_f16_e32 v0, v0, v1 40ee61a4dbSMatt Arsenault; GFX11-NEXT: s_setpc_b64 s[30:31] 41ee61a4dbSMatt Arsenault; 42ee61a4dbSMatt Arsenault; GFX12-LABEL: v_maximumnum_f16: 43ee61a4dbSMatt Arsenault; GFX12: ; %bb.0: 44ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_loadcnt_dscnt 0x0 45ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_expcnt 0x0 46ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_samplecnt 0x0 47ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_bvhcnt 0x0 48ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_kmcnt 0x0 49ee61a4dbSMatt Arsenault; GFX12-NEXT: v_max_num_f16_e32 v1, v1, v1 50ee61a4dbSMatt Arsenault; GFX12-NEXT: v_max_num_f16_e32 v0, v0, v0 51ee61a4dbSMatt Arsenault; GFX12-NEXT: s_delay_alu instid0(VALU_DEP_1) 52ee61a4dbSMatt Arsenault; GFX12-NEXT: v_max_num_f16_e32 v0, v0, v1 53ee61a4dbSMatt Arsenault; GFX12-NEXT: s_setpc_b64 s[30:31] 54ee61a4dbSMatt Arsenault %result = call half @llvm.maximumnum.f16(half %x, half %y) 55ee61a4dbSMatt Arsenault ret half %result 56ee61a4dbSMatt Arsenault} 57ee61a4dbSMatt Arsenault 58ee61a4dbSMatt Arsenaultdefine half @v_maximumnum_f16_nnan(half %x, half %y) { 59ee61a4dbSMatt Arsenault; GFX8-LABEL: v_maximumnum_f16_nnan: 60ee61a4dbSMatt Arsenault; GFX8: ; %bb.0: 61ee61a4dbSMatt Arsenault; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 62ee61a4dbSMatt Arsenault; GFX8-NEXT: v_max_f16_e32 v0, v0, v1 63ee61a4dbSMatt Arsenault; GFX8-NEXT: s_setpc_b64 s[30:31] 64ee61a4dbSMatt Arsenault; 65ee61a4dbSMatt Arsenault; GFX9-LABEL: v_maximumnum_f16_nnan: 66ee61a4dbSMatt Arsenault; GFX9: ; %bb.0: 67ee61a4dbSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 68ee61a4dbSMatt Arsenault; GFX9-NEXT: v_max_f16_e32 v0, v0, v1 69ee61a4dbSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 70ee61a4dbSMatt Arsenault; 71ee61a4dbSMatt Arsenault; GFX10-LABEL: v_maximumnum_f16_nnan: 72ee61a4dbSMatt Arsenault; GFX10: ; %bb.0: 73ee61a4dbSMatt Arsenault; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 74ee61a4dbSMatt Arsenault; GFX10-NEXT: v_max_f16_e32 v0, v0, v1 75ee61a4dbSMatt Arsenault; GFX10-NEXT: s_setpc_b64 s[30:31] 76ee61a4dbSMatt Arsenault; 77ee61a4dbSMatt Arsenault; GFX11-LABEL: v_maximumnum_f16_nnan: 78ee61a4dbSMatt Arsenault; GFX11: ; %bb.0: 79ee61a4dbSMatt Arsenault; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 80ee61a4dbSMatt Arsenault; GFX11-NEXT: v_max_f16_e32 v0, v0, v1 81ee61a4dbSMatt Arsenault; GFX11-NEXT: s_setpc_b64 s[30:31] 82ee61a4dbSMatt Arsenault; 83ee61a4dbSMatt Arsenault; GFX12-LABEL: v_maximumnum_f16_nnan: 84ee61a4dbSMatt Arsenault; GFX12: ; %bb.0: 85ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_loadcnt_dscnt 0x0 86ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_expcnt 0x0 87ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_samplecnt 0x0 88ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_bvhcnt 0x0 89ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_kmcnt 0x0 90ee61a4dbSMatt Arsenault; GFX12-NEXT: v_max_num_f16_e32 v0, v0, v1 91ee61a4dbSMatt Arsenault; GFX12-NEXT: s_setpc_b64 s[30:31] 92ee61a4dbSMatt Arsenault %result = call nnan half @llvm.maximumnum.f16(half %x, half %y) 93ee61a4dbSMatt Arsenault ret half %result 94ee61a4dbSMatt Arsenault} 95ee61a4dbSMatt Arsenault 96ee61a4dbSMatt Arsenaultdefine half @v_maximumnum_f16_1.0(half %x) { 97ee61a4dbSMatt Arsenault; GFX8-LABEL: v_maximumnum_f16_1.0: 98ee61a4dbSMatt Arsenault; GFX8: ; %bb.0: 99ee61a4dbSMatt Arsenault; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 100ee61a4dbSMatt Arsenault; GFX8-NEXT: v_max_f16_e32 v0, v0, v0 101ee61a4dbSMatt Arsenault; GFX8-NEXT: v_max_f16_e32 v0, 1.0, v0 102ee61a4dbSMatt Arsenault; GFX8-NEXT: s_setpc_b64 s[30:31] 103ee61a4dbSMatt Arsenault; 104ee61a4dbSMatt Arsenault; GFX9-LABEL: v_maximumnum_f16_1.0: 105ee61a4dbSMatt Arsenault; GFX9: ; %bb.0: 106ee61a4dbSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 107ee61a4dbSMatt Arsenault; GFX9-NEXT: v_max_f16_e32 v0, v0, v0 108ee61a4dbSMatt Arsenault; GFX9-NEXT: v_max_f16_e32 v0, 1.0, v0 109ee61a4dbSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 110ee61a4dbSMatt Arsenault; 111ee61a4dbSMatt Arsenault; GFX10-LABEL: v_maximumnum_f16_1.0: 112ee61a4dbSMatt Arsenault; GFX10: ; %bb.0: 113ee61a4dbSMatt Arsenault; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 114ee61a4dbSMatt Arsenault; GFX10-NEXT: v_max_f16_e32 v0, v0, v0 115ee61a4dbSMatt Arsenault; GFX10-NEXT: v_max_f16_e32 v0, 1.0, v0 116ee61a4dbSMatt Arsenault; GFX10-NEXT: s_setpc_b64 s[30:31] 117ee61a4dbSMatt Arsenault; 118ee61a4dbSMatt Arsenault; GFX11-LABEL: v_maximumnum_f16_1.0: 119ee61a4dbSMatt Arsenault; GFX11: ; %bb.0: 120ee61a4dbSMatt Arsenault; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 121ee61a4dbSMatt Arsenault; GFX11-NEXT: v_max_f16_e32 v0, v0, v0 122ee61a4dbSMatt Arsenault; GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1) 123ee61a4dbSMatt Arsenault; GFX11-NEXT: v_max_f16_e32 v0, 1.0, v0 124ee61a4dbSMatt Arsenault; GFX11-NEXT: s_setpc_b64 s[30:31] 125ee61a4dbSMatt Arsenault; 126ee61a4dbSMatt Arsenault; GFX12-LABEL: v_maximumnum_f16_1.0: 127ee61a4dbSMatt Arsenault; GFX12: ; %bb.0: 128ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_loadcnt_dscnt 0x0 129ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_expcnt 0x0 130ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_samplecnt 0x0 131ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_bvhcnt 0x0 132ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_kmcnt 0x0 133ee61a4dbSMatt Arsenault; GFX12-NEXT: v_max_num_f16_e32 v0, v0, v0 134ee61a4dbSMatt Arsenault; GFX12-NEXT: s_delay_alu instid0(VALU_DEP_1) 135ee61a4dbSMatt Arsenault; GFX12-NEXT: v_max_num_f16_e32 v0, 1.0, v0 136ee61a4dbSMatt Arsenault; GFX12-NEXT: s_setpc_b64 s[30:31] 137ee61a4dbSMatt Arsenault %result = call half @llvm.maximumnum.f16(half %x, half 1.0) 138ee61a4dbSMatt Arsenault ret half %result 139ee61a4dbSMatt Arsenault} 140ee61a4dbSMatt Arsenault 141ee61a4dbSMatt Arsenaultdefine bfloat @v_maximumnum_bf16(bfloat %x, bfloat %y) { 142ee61a4dbSMatt Arsenault; GFX8-LABEL: v_maximumnum_bf16: 143ee61a4dbSMatt Arsenault; GFX8: ; %bb.0: 144ee61a4dbSMatt Arsenault; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 145ee61a4dbSMatt Arsenault; GFX8-NEXT: v_lshlrev_b32_e32 v2, 16, v0 146ee61a4dbSMatt Arsenault; GFX8-NEXT: v_cmp_u_f32_e32 vcc, v2, v2 147ee61a4dbSMatt Arsenault; GFX8-NEXT: v_lshlrev_b32_e32 v2, 16, v1 148ee61a4dbSMatt Arsenault; GFX8-NEXT: v_cndmask_b32_e32 v0, v0, v1, vcc 149ee61a4dbSMatt Arsenault; GFX8-NEXT: v_cmp_u_f32_e32 vcc, v2, v2 150ee61a4dbSMatt Arsenault; GFX8-NEXT: v_cndmask_b32_e32 v1, v1, v0, vcc 151ee61a4dbSMatt Arsenault; GFX8-NEXT: v_lshlrev_b32_e32 v2, 16, v1 152ee61a4dbSMatt Arsenault; GFX8-NEXT: v_lshlrev_b32_e32 v3, 16, v0 153ee61a4dbSMatt Arsenault; GFX8-NEXT: v_cmp_gt_f32_e32 vcc, v3, v2 154ee61a4dbSMatt Arsenault; GFX8-NEXT: v_cndmask_b32_e32 v2, v1, v0, vcc 155ee61a4dbSMatt Arsenault; GFX8-NEXT: v_lshlrev_b32_e32 v2, 16, v2 156ee61a4dbSMatt Arsenault; GFX8-NEXT: v_mul_f32_e32 v2, 1.0, v2 157ee61a4dbSMatt Arsenault; GFX8-NEXT: v_bfe_u32 v3, v2, 16, 1 158ee61a4dbSMatt Arsenault; GFX8-NEXT: v_add_u32_e32 v3, vcc, v3, v2 159ee61a4dbSMatt Arsenault; GFX8-NEXT: s_movk_i32 s4, 0x7fff 160ee61a4dbSMatt Arsenault; GFX8-NEXT: v_add_u32_e32 v3, vcc, s4, v3 161ee61a4dbSMatt Arsenault; GFX8-NEXT: v_or_b32_e32 v4, 0x400000, v2 162ee61a4dbSMatt Arsenault; GFX8-NEXT: v_cmp_u_f32_e32 vcc, v2, v2 163ee61a4dbSMatt Arsenault; GFX8-NEXT: v_cndmask_b32_e32 v2, v3, v4, vcc 164ee61a4dbSMatt Arsenault; GFX8-NEXT: v_lshrrev_b32_e32 v3, 16, v2 165ee61a4dbSMatt Arsenault; GFX8-NEXT: v_cmp_eq_u16_e32 vcc, 0, v0 166ee61a4dbSMatt Arsenault; GFX8-NEXT: v_cndmask_b32_e32 v0, v3, v0, vcc 167ee61a4dbSMatt Arsenault; GFX8-NEXT: v_cmp_eq_u16_e32 vcc, 0, v1 168ee61a4dbSMatt Arsenault; GFX8-NEXT: v_cndmask_b32_e32 v0, v0, v1, vcc 169ee61a4dbSMatt Arsenault; GFX8-NEXT: v_and_b32_e32 v1, 0xffff0000, v2 170ee61a4dbSMatt Arsenault; GFX8-NEXT: v_cmp_eq_f32_e32 vcc, 0, v1 171ee61a4dbSMatt Arsenault; GFX8-NEXT: v_cndmask_b32_e32 v0, v3, v0, vcc 172ee61a4dbSMatt Arsenault; GFX8-NEXT: s_setpc_b64 s[30:31] 173ee61a4dbSMatt Arsenault; 174ee61a4dbSMatt Arsenault; GFX9-LABEL: v_maximumnum_bf16: 175ee61a4dbSMatt Arsenault; GFX9: ; %bb.0: 176ee61a4dbSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 177ee61a4dbSMatt Arsenault; GFX9-NEXT: v_lshlrev_b32_e32 v2, 16, v0 178ee61a4dbSMatt Arsenault; GFX9-NEXT: v_cmp_u_f32_e32 vcc, v2, v2 179ee61a4dbSMatt Arsenault; GFX9-NEXT: v_lshlrev_b32_e32 v3, 16, v1 180ee61a4dbSMatt Arsenault; GFX9-NEXT: v_cndmask_b32_e32 v0, v0, v1, vcc 181ee61a4dbSMatt Arsenault; GFX9-NEXT: v_cmp_u_f32_e32 vcc, v3, v3 182ee61a4dbSMatt Arsenault; GFX9-NEXT: v_cndmask_b32_e32 v1, v1, v0, vcc 183ee61a4dbSMatt Arsenault; GFX9-NEXT: v_lshlrev_b32_e32 v2, 16, v0 184ee61a4dbSMatt Arsenault; GFX9-NEXT: v_lshlrev_b32_e32 v3, 16, v1 185ee61a4dbSMatt Arsenault; GFX9-NEXT: v_cmp_gt_f32_e32 vcc, v2, v3 186ee61a4dbSMatt Arsenault; GFX9-NEXT: v_cndmask_b32_e32 v2, v1, v0, vcc 187ee61a4dbSMatt Arsenault; GFX9-NEXT: v_lshlrev_b32_e32 v2, 16, v2 188ee61a4dbSMatt Arsenault; GFX9-NEXT: v_max_f32_e32 v2, v2, v2 189ee61a4dbSMatt Arsenault; GFX9-NEXT: v_bfe_u32 v3, v2, 16, 1 190ee61a4dbSMatt Arsenault; GFX9-NEXT: s_movk_i32 s4, 0x7fff 191ee61a4dbSMatt Arsenault; GFX9-NEXT: v_add3_u32 v3, v3, v2, s4 192ee61a4dbSMatt Arsenault; GFX9-NEXT: v_or_b32_e32 v4, 0x400000, v2 193ee61a4dbSMatt Arsenault; GFX9-NEXT: v_cmp_u_f32_e32 vcc, v2, v2 194ee61a4dbSMatt Arsenault; GFX9-NEXT: v_cndmask_b32_e32 v2, v3, v4, vcc 195ee61a4dbSMatt Arsenault; GFX9-NEXT: v_lshrrev_b32_e32 v3, 16, v2 196ee61a4dbSMatt Arsenault; GFX9-NEXT: v_cmp_eq_u16_e32 vcc, 0, v0 197ee61a4dbSMatt Arsenault; GFX9-NEXT: v_cndmask_b32_e32 v0, v3, v0, vcc 198ee61a4dbSMatt Arsenault; GFX9-NEXT: v_cmp_eq_u16_e32 vcc, 0, v1 199ee61a4dbSMatt Arsenault; GFX9-NEXT: v_cndmask_b32_e32 v0, v0, v1, vcc 200ee61a4dbSMatt Arsenault; GFX9-NEXT: v_and_b32_e32 v1, 0xffff0000, v2 201ee61a4dbSMatt Arsenault; GFX9-NEXT: v_cmp_eq_f32_e32 vcc, 0, v1 202ee61a4dbSMatt Arsenault; GFX9-NEXT: v_cndmask_b32_e32 v0, v3, v0, vcc 203ee61a4dbSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 204ee61a4dbSMatt Arsenault; 205ee61a4dbSMatt Arsenault; GFX10-LABEL: v_maximumnum_bf16: 206ee61a4dbSMatt Arsenault; GFX10: ; %bb.0: 207ee61a4dbSMatt Arsenault; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 208ee61a4dbSMatt Arsenault; GFX10-NEXT: v_lshlrev_b32_e32 v2, 16, v0 209ee61a4dbSMatt Arsenault; GFX10-NEXT: v_lshlrev_b32_e32 v3, 16, v1 210ee61a4dbSMatt Arsenault; GFX10-NEXT: v_cmp_u_f32_e32 vcc_lo, v2, v2 211ee61a4dbSMatt Arsenault; GFX10-NEXT: v_cndmask_b32_e32 v0, v0, v1, vcc_lo 212ee61a4dbSMatt Arsenault; GFX10-NEXT: v_cmp_u_f32_e32 vcc_lo, v3, v3 213ee61a4dbSMatt Arsenault; GFX10-NEXT: v_lshlrev_b32_e32 v2, 16, v0 214ee61a4dbSMatt Arsenault; GFX10-NEXT: v_cndmask_b32_e32 v1, v1, v0, vcc_lo 215ee61a4dbSMatt Arsenault; GFX10-NEXT: v_lshlrev_b32_e32 v3, 16, v1 216ee61a4dbSMatt Arsenault; GFX10-NEXT: v_cmp_gt_f32_e32 vcc_lo, v2, v3 217ee61a4dbSMatt Arsenault; GFX10-NEXT: v_cndmask_b32_e32 v2, v1, v0, vcc_lo 218ee61a4dbSMatt Arsenault; GFX10-NEXT: v_lshlrev_b32_e32 v2, 16, v2 219ee61a4dbSMatt Arsenault; GFX10-NEXT: v_max_f32_e32 v2, v2, v2 220ee61a4dbSMatt Arsenault; GFX10-NEXT: v_bfe_u32 v3, v2, 16, 1 221ee61a4dbSMatt Arsenault; GFX10-NEXT: v_or_b32_e32 v4, 0x400000, v2 222ee61a4dbSMatt Arsenault; GFX10-NEXT: v_cmp_u_f32_e32 vcc_lo, v2, v2 223ee61a4dbSMatt Arsenault; GFX10-NEXT: v_add3_u32 v3, v3, v2, 0x7fff 224ee61a4dbSMatt Arsenault; GFX10-NEXT: v_cndmask_b32_e32 v2, v3, v4, vcc_lo 225ee61a4dbSMatt Arsenault; GFX10-NEXT: v_cmp_eq_u16_e32 vcc_lo, 0, v0 226ee61a4dbSMatt Arsenault; GFX10-NEXT: v_lshrrev_b32_e32 v3, 16, v2 227ee61a4dbSMatt Arsenault; GFX10-NEXT: v_and_b32_e32 v2, 0xffff0000, v2 228ee61a4dbSMatt Arsenault; GFX10-NEXT: v_cndmask_b32_e32 v0, v3, v0, vcc_lo 229ee61a4dbSMatt Arsenault; GFX10-NEXT: v_cmp_eq_u16_e32 vcc_lo, 0, v1 230ee61a4dbSMatt Arsenault; GFX10-NEXT: v_cndmask_b32_e32 v0, v0, v1, vcc_lo 231ee61a4dbSMatt Arsenault; GFX10-NEXT: v_cmp_eq_f32_e32 vcc_lo, 0, v2 232ee61a4dbSMatt Arsenault; GFX10-NEXT: v_cndmask_b32_e32 v0, v3, v0, vcc_lo 233ee61a4dbSMatt Arsenault; GFX10-NEXT: s_setpc_b64 s[30:31] 234ee61a4dbSMatt Arsenault; 235ee61a4dbSMatt Arsenault; GFX11-LABEL: v_maximumnum_bf16: 236ee61a4dbSMatt Arsenault; GFX11: ; %bb.0: 237ee61a4dbSMatt Arsenault; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 238ee61a4dbSMatt Arsenault; GFX11-NEXT: v_lshlrev_b32_e32 v2, 16, v0 239ee61a4dbSMatt Arsenault; GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_2) 240ee61a4dbSMatt Arsenault; GFX11-NEXT: v_cmp_u_f32_e32 vcc_lo, v2, v2 241ee61a4dbSMatt Arsenault; GFX11-NEXT: v_cndmask_b32_e32 v0, v0, v1, vcc_lo 242ee61a4dbSMatt Arsenault; GFX11-NEXT: v_lshlrev_b32_e32 v3, 16, v1 243ee61a4dbSMatt Arsenault; GFX11-NEXT: v_lshlrev_b32_e32 v2, 16, v0 244ee61a4dbSMatt Arsenault; GFX11-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_1) 245ee61a4dbSMatt Arsenault; GFX11-NEXT: v_cmp_u_f32_e32 vcc_lo, v3, v3 246ee61a4dbSMatt Arsenault; GFX11-NEXT: v_cndmask_b32_e32 v1, v1, v0, vcc_lo 247ee61a4dbSMatt Arsenault; GFX11-NEXT: v_lshlrev_b32_e32 v3, 16, v1 248ee61a4dbSMatt Arsenault; GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1) 249ee61a4dbSMatt Arsenault; GFX11-NEXT: v_cmp_gt_f32_e32 vcc_lo, v2, v3 250ee61a4dbSMatt Arsenault; GFX11-NEXT: v_cndmask_b32_e32 v2, v1, v0, vcc_lo 251ee61a4dbSMatt Arsenault; GFX11-NEXT: v_lshlrev_b32_e32 v2, 16, v2 252ee61a4dbSMatt Arsenault; GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1) 253ee61a4dbSMatt Arsenault; GFX11-NEXT: v_max_f32_e32 v2, v2, v2 254ee61a4dbSMatt Arsenault; GFX11-NEXT: v_bfe_u32 v3, v2, 16, 1 255ee61a4dbSMatt Arsenault; GFX11-NEXT: v_or_b32_e32 v4, 0x400000, v2 256ee61a4dbSMatt Arsenault; GFX11-NEXT: v_cmp_u_f32_e32 vcc_lo, v2, v2 257ee61a4dbSMatt Arsenault; GFX11-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1) 258ee61a4dbSMatt Arsenault; GFX11-NEXT: v_add3_u32 v3, v3, v2, 0x7fff 259ee61a4dbSMatt Arsenault; GFX11-NEXT: v_cndmask_b32_e32 v2, v3, v4, vcc_lo 260ee61a4dbSMatt Arsenault; GFX11-NEXT: v_cmp_eq_u16_e32 vcc_lo, 0, v0 261ee61a4dbSMatt Arsenault; GFX11-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2) 262ee61a4dbSMatt Arsenault; GFX11-NEXT: v_lshrrev_b32_e32 v3, 16, v2 263ee61a4dbSMatt Arsenault; GFX11-NEXT: v_and_b32_e32 v2, 0xffff0000, v2 264ee61a4dbSMatt Arsenault; GFX11-NEXT: v_cndmask_b32_e32 v0, v3, v0, vcc_lo 265ee61a4dbSMatt Arsenault; GFX11-NEXT: v_cmp_eq_u16_e32 vcc_lo, 0, v1 266ee61a4dbSMatt Arsenault; GFX11-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_4) 267ee61a4dbSMatt Arsenault; GFX11-NEXT: v_cndmask_b32_e32 v0, v0, v1, vcc_lo 268ee61a4dbSMatt Arsenault; GFX11-NEXT: v_cmp_eq_f32_e32 vcc_lo, 0, v2 269ee61a4dbSMatt Arsenault; GFX11-NEXT: s_delay_alu instid0(VALU_DEP_2) 270ee61a4dbSMatt Arsenault; GFX11-NEXT: v_cndmask_b32_e32 v0, v3, v0, vcc_lo 271ee61a4dbSMatt Arsenault; GFX11-NEXT: s_setpc_b64 s[30:31] 272ee61a4dbSMatt Arsenault; 273ee61a4dbSMatt Arsenault; GFX12-LABEL: v_maximumnum_bf16: 274ee61a4dbSMatt Arsenault; GFX12: ; %bb.0: 275ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_loadcnt_dscnt 0x0 276ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_expcnt 0x0 277ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_samplecnt 0x0 278ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_bvhcnt 0x0 279ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_kmcnt 0x0 280ee61a4dbSMatt Arsenault; GFX12-NEXT: v_lshlrev_b32_e32 v2, 16, v0 281ee61a4dbSMatt Arsenault; GFX12-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_2) 282ee61a4dbSMatt Arsenault; GFX12-NEXT: v_cmp_u_f32_e32 vcc_lo, v2, v2 283ee61a4dbSMatt Arsenault; GFX12-NEXT: v_cndmask_b32_e32 v0, v0, v1, vcc_lo 284ee61a4dbSMatt Arsenault; GFX12-NEXT: v_lshlrev_b32_e32 v3, 16, v1 285ee61a4dbSMatt Arsenault; GFX12-NEXT: v_lshlrev_b32_e32 v2, 16, v0 286ee61a4dbSMatt Arsenault; GFX12-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_1) 287ee61a4dbSMatt Arsenault; GFX12-NEXT: v_cmp_u_f32_e32 vcc_lo, v3, v3 288ee61a4dbSMatt Arsenault; GFX12-NEXT: v_cndmask_b32_e32 v1, v1, v0, vcc_lo 289ee61a4dbSMatt Arsenault; GFX12-NEXT: v_lshlrev_b32_e32 v3, 16, v1 290ee61a4dbSMatt Arsenault; GFX12-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1) 291ee61a4dbSMatt Arsenault; GFX12-NEXT: v_cmp_gt_f32_e32 vcc_lo, v2, v3 292ee61a4dbSMatt Arsenault; GFX12-NEXT: v_cndmask_b32_e32 v2, v1, v0, vcc_lo 293ee61a4dbSMatt Arsenault; GFX12-NEXT: v_lshlrev_b32_e32 v2, 16, v2 294ee61a4dbSMatt Arsenault; GFX12-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1) 295ee61a4dbSMatt Arsenault; GFX12-NEXT: v_max_num_f32_e32 v2, v2, v2 296ee61a4dbSMatt Arsenault; GFX12-NEXT: v_bfe_u32 v3, v2, 16, 1 297ee61a4dbSMatt Arsenault; GFX12-NEXT: v_or_b32_e32 v4, 0x400000, v2 298ee61a4dbSMatt Arsenault; GFX12-NEXT: v_cmp_u_f32_e32 vcc_lo, v2, v2 299ee61a4dbSMatt Arsenault; GFX12-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1) 300ee61a4dbSMatt Arsenault; GFX12-NEXT: v_add3_u32 v3, v3, v2, 0x7fff 301ee61a4dbSMatt Arsenault; GFX12-NEXT: v_cndmask_b32_e32 v2, v3, v4, vcc_lo 302ee61a4dbSMatt Arsenault; GFX12-NEXT: v_cmp_eq_u16_e32 vcc_lo, 0, v0 303ee61a4dbSMatt Arsenault; GFX12-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2) 304ee61a4dbSMatt Arsenault; GFX12-NEXT: v_lshrrev_b32_e32 v3, 16, v2 305ee61a4dbSMatt Arsenault; GFX12-NEXT: v_and_b32_e32 v2, 0xffff0000, v2 306ee61a4dbSMatt Arsenault; GFX12-NEXT: v_cndmask_b32_e32 v0, v3, v0, vcc_lo 307ee61a4dbSMatt Arsenault; GFX12-NEXT: v_cmp_eq_u16_e32 vcc_lo, 0, v1 308ee61a4dbSMatt Arsenault; GFX12-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_4) 309ee61a4dbSMatt Arsenault; GFX12-NEXT: v_cndmask_b32_e32 v0, v0, v1, vcc_lo 310ee61a4dbSMatt Arsenault; GFX12-NEXT: v_cmp_eq_f32_e32 vcc_lo, 0, v2 311ee61a4dbSMatt Arsenault; GFX12-NEXT: s_delay_alu instid0(VALU_DEP_2) 312ee61a4dbSMatt Arsenault; GFX12-NEXT: v_cndmask_b32_e32 v0, v3, v0, vcc_lo 313ee61a4dbSMatt Arsenault; GFX12-NEXT: s_setpc_b64 s[30:31] 314ee61a4dbSMatt Arsenault %result = call bfloat @llvm.maximumnum.bf16(bfloat %x, bfloat %y) 315ee61a4dbSMatt Arsenault ret bfloat %result 316ee61a4dbSMatt Arsenault} 317ee61a4dbSMatt Arsenault 318ee61a4dbSMatt Arsenaultdefine bfloat @v_maximumnum_bf16_nnan(bfloat %x, bfloat %y) { 319ee61a4dbSMatt Arsenault; GFX8-LABEL: v_maximumnum_bf16_nnan: 320ee61a4dbSMatt Arsenault; GFX8: ; %bb.0: 321ee61a4dbSMatt Arsenault; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 322ee61a4dbSMatt Arsenault; GFX8-NEXT: v_lshlrev_b32_e32 v2, 16, v1 323ee61a4dbSMatt Arsenault; GFX8-NEXT: v_lshlrev_b32_e32 v3, 16, v0 324ee61a4dbSMatt Arsenault; GFX8-NEXT: v_cmp_gt_f32_e32 vcc, v3, v2 325ee61a4dbSMatt Arsenault; GFX8-NEXT: v_cndmask_b32_e32 v2, v1, v0, vcc 326ee61a4dbSMatt Arsenault; GFX8-NEXT: v_cmp_eq_u16_e32 vcc, 0, v0 327ee61a4dbSMatt Arsenault; GFX8-NEXT: v_cndmask_b32_e32 v0, v2, v0, vcc 328ee61a4dbSMatt Arsenault; GFX8-NEXT: v_cmp_eq_u16_e32 vcc, 0, v1 329ee61a4dbSMatt Arsenault; GFX8-NEXT: v_cndmask_b32_e32 v0, v0, v1, vcc 330ee61a4dbSMatt Arsenault; GFX8-NEXT: v_lshlrev_b32_e32 v1, 16, v2 331ee61a4dbSMatt Arsenault; GFX8-NEXT: v_cmp_eq_f32_e32 vcc, 0, v1 332ee61a4dbSMatt Arsenault; GFX8-NEXT: v_cndmask_b32_e32 v0, v2, v0, vcc 333ee61a4dbSMatt Arsenault; GFX8-NEXT: s_setpc_b64 s[30:31] 334ee61a4dbSMatt Arsenault; 335ee61a4dbSMatt Arsenault; GFX9-LABEL: v_maximumnum_bf16_nnan: 336ee61a4dbSMatt Arsenault; GFX9: ; %bb.0: 337ee61a4dbSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 338ee61a4dbSMatt Arsenault; GFX9-NEXT: v_lshlrev_b32_e32 v2, 16, v1 339ee61a4dbSMatt Arsenault; GFX9-NEXT: v_lshlrev_b32_e32 v3, 16, v0 340ee61a4dbSMatt Arsenault; GFX9-NEXT: v_cmp_gt_f32_e32 vcc, v3, v2 341ee61a4dbSMatt Arsenault; GFX9-NEXT: v_cndmask_b32_e32 v2, v1, v0, vcc 342ee61a4dbSMatt Arsenault; GFX9-NEXT: v_cmp_eq_u16_e32 vcc, 0, v0 343ee61a4dbSMatt Arsenault; GFX9-NEXT: v_cndmask_b32_e32 v0, v2, v0, vcc 344ee61a4dbSMatt Arsenault; GFX9-NEXT: v_cmp_eq_u16_e32 vcc, 0, v1 345ee61a4dbSMatt Arsenault; GFX9-NEXT: v_cndmask_b32_e32 v0, v0, v1, vcc 346ee61a4dbSMatt Arsenault; GFX9-NEXT: v_lshlrev_b32_e32 v1, 16, v2 347ee61a4dbSMatt Arsenault; GFX9-NEXT: v_cmp_eq_f32_e32 vcc, 0, v1 348ee61a4dbSMatt Arsenault; GFX9-NEXT: v_cndmask_b32_e32 v0, v2, v0, vcc 349ee61a4dbSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 350ee61a4dbSMatt Arsenault; 351ee61a4dbSMatt Arsenault; GFX10-LABEL: v_maximumnum_bf16_nnan: 352ee61a4dbSMatt Arsenault; GFX10: ; %bb.0: 353ee61a4dbSMatt Arsenault; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 354ee61a4dbSMatt Arsenault; GFX10-NEXT: v_lshlrev_b32_e32 v2, 16, v1 355ee61a4dbSMatt Arsenault; GFX10-NEXT: v_lshlrev_b32_e32 v3, 16, v0 356ee61a4dbSMatt Arsenault; GFX10-NEXT: v_cmp_gt_f32_e32 vcc_lo, v3, v2 357ee61a4dbSMatt Arsenault; GFX10-NEXT: v_cndmask_b32_e32 v2, v1, v0, vcc_lo 358ee61a4dbSMatt Arsenault; GFX10-NEXT: v_cmp_eq_u16_e32 vcc_lo, 0, v0 359ee61a4dbSMatt Arsenault; GFX10-NEXT: v_lshlrev_b32_e32 v3, 16, v2 360ee61a4dbSMatt Arsenault; GFX10-NEXT: v_cndmask_b32_e32 v0, v2, v0, vcc_lo 361ee61a4dbSMatt Arsenault; GFX10-NEXT: v_cmp_eq_u16_e32 vcc_lo, 0, v1 362ee61a4dbSMatt Arsenault; GFX10-NEXT: v_cndmask_b32_e32 v0, v0, v1, vcc_lo 363ee61a4dbSMatt Arsenault; GFX10-NEXT: v_cmp_eq_f32_e32 vcc_lo, 0, v3 364ee61a4dbSMatt Arsenault; GFX10-NEXT: v_cndmask_b32_e32 v0, v2, v0, vcc_lo 365ee61a4dbSMatt Arsenault; GFX10-NEXT: s_setpc_b64 s[30:31] 366ee61a4dbSMatt Arsenault; 367ee61a4dbSMatt Arsenault; GFX11-LABEL: v_maximumnum_bf16_nnan: 368ee61a4dbSMatt Arsenault; GFX11: ; %bb.0: 369ee61a4dbSMatt Arsenault; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 370ee61a4dbSMatt Arsenault; GFX11-NEXT: v_lshlrev_b32_e32 v2, 16, v1 371ee61a4dbSMatt Arsenault; GFX11-NEXT: v_lshlrev_b32_e32 v3, 16, v0 372ee61a4dbSMatt Arsenault; GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_2) 373ee61a4dbSMatt Arsenault; GFX11-NEXT: v_cmp_gt_f32_e32 vcc_lo, v3, v2 374ee61a4dbSMatt Arsenault; GFX11-NEXT: v_cndmask_b32_e32 v2, v1, v0, vcc_lo 375ee61a4dbSMatt Arsenault; GFX11-NEXT: v_cmp_eq_u16_e32 vcc_lo, 0, v0 376ee61a4dbSMatt Arsenault; GFX11-NEXT: v_dual_cndmask_b32 v0, v2, v0 :: v_dual_lshlrev_b32 v3, 16, v2 377ee61a4dbSMatt Arsenault; GFX11-NEXT: v_cmp_eq_u16_e32 vcc_lo, 0, v1 378ee61a4dbSMatt Arsenault; GFX11-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_3) 379ee61a4dbSMatt Arsenault; GFX11-NEXT: v_cndmask_b32_e32 v0, v0, v1, vcc_lo 380ee61a4dbSMatt Arsenault; GFX11-NEXT: v_cmp_eq_f32_e32 vcc_lo, 0, v3 381ee61a4dbSMatt Arsenault; GFX11-NEXT: s_delay_alu instid0(VALU_DEP_2) 382ee61a4dbSMatt Arsenault; GFX11-NEXT: v_cndmask_b32_e32 v0, v2, v0, vcc_lo 383ee61a4dbSMatt Arsenault; GFX11-NEXT: s_setpc_b64 s[30:31] 384ee61a4dbSMatt Arsenault; 385ee61a4dbSMatt Arsenault; GFX12-LABEL: v_maximumnum_bf16_nnan: 386ee61a4dbSMatt Arsenault; GFX12: ; %bb.0: 387ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_loadcnt_dscnt 0x0 388ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_expcnt 0x0 389ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_samplecnt 0x0 390ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_bvhcnt 0x0 391ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_kmcnt 0x0 392ee61a4dbSMatt Arsenault; GFX12-NEXT: v_lshlrev_b32_e32 v2, 16, v1 393ee61a4dbSMatt Arsenault; GFX12-NEXT: v_lshlrev_b32_e32 v3, 16, v0 394ee61a4dbSMatt Arsenault; GFX12-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_2) 395ee61a4dbSMatt Arsenault; GFX12-NEXT: v_cmp_gt_f32_e32 vcc_lo, v3, v2 396ee61a4dbSMatt Arsenault; GFX12-NEXT: v_cndmask_b32_e32 v2, v1, v0, vcc_lo 397ee61a4dbSMatt Arsenault; GFX12-NEXT: v_cmp_eq_u16_e32 vcc_lo, 0, v0 398ee61a4dbSMatt Arsenault; GFX12-NEXT: v_dual_cndmask_b32 v0, v2, v0 :: v_dual_lshlrev_b32 v3, 16, v2 399ee61a4dbSMatt Arsenault; GFX12-NEXT: v_cmp_eq_u16_e32 vcc_lo, 0, v1 400ee61a4dbSMatt Arsenault; GFX12-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_3) 401ee61a4dbSMatt Arsenault; GFX12-NEXT: v_cndmask_b32_e32 v0, v0, v1, vcc_lo 402ee61a4dbSMatt Arsenault; GFX12-NEXT: v_cmp_eq_f32_e32 vcc_lo, 0, v3 403ee61a4dbSMatt Arsenault; GFX12-NEXT: s_delay_alu instid0(VALU_DEP_2) 404ee61a4dbSMatt Arsenault; GFX12-NEXT: v_cndmask_b32_e32 v0, v2, v0, vcc_lo 405ee61a4dbSMatt Arsenault; GFX12-NEXT: s_setpc_b64 s[30:31] 406ee61a4dbSMatt Arsenault %result = call nnan bfloat @llvm.maximumnum.bf16(bfloat %x, bfloat %y) 407ee61a4dbSMatt Arsenault ret bfloat %result 408ee61a4dbSMatt Arsenault} 409ee61a4dbSMatt Arsenault 410ee61a4dbSMatt Arsenaultdefine float @v_maximumnum_f32(float %x, float %y) { 411ee61a4dbSMatt Arsenault; GFX8-LABEL: v_maximumnum_f32: 412ee61a4dbSMatt Arsenault; GFX8: ; %bb.0: 413ee61a4dbSMatt Arsenault; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 414ee61a4dbSMatt Arsenault; GFX8-NEXT: v_mul_f32_e32 v1, 1.0, v1 415ee61a4dbSMatt Arsenault; GFX8-NEXT: v_mul_f32_e32 v0, 1.0, v0 416ee61a4dbSMatt Arsenault; GFX8-NEXT: v_max_f32_e32 v0, v0, v1 417ee61a4dbSMatt Arsenault; GFX8-NEXT: s_setpc_b64 s[30:31] 418ee61a4dbSMatt Arsenault; 419ee61a4dbSMatt Arsenault; GFX9-LABEL: v_maximumnum_f32: 420ee61a4dbSMatt Arsenault; GFX9: ; %bb.0: 421ee61a4dbSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 422ee61a4dbSMatt Arsenault; GFX9-NEXT: v_max_f32_e32 v1, v1, v1 423ee61a4dbSMatt Arsenault; GFX9-NEXT: v_max_f32_e32 v0, v0, v0 424ee61a4dbSMatt Arsenault; GFX9-NEXT: v_max_f32_e32 v0, v0, v1 425ee61a4dbSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 426ee61a4dbSMatt Arsenault; 427ee61a4dbSMatt Arsenault; GFX10-LABEL: v_maximumnum_f32: 428ee61a4dbSMatt Arsenault; GFX10: ; %bb.0: 429ee61a4dbSMatt Arsenault; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 430ee61a4dbSMatt Arsenault; GFX10-NEXT: v_max_f32_e32 v1, v1, v1 431ee61a4dbSMatt Arsenault; GFX10-NEXT: v_max_f32_e32 v0, v0, v0 432ee61a4dbSMatt Arsenault; GFX10-NEXT: v_max_f32_e32 v0, v0, v1 433ee61a4dbSMatt Arsenault; GFX10-NEXT: s_setpc_b64 s[30:31] 434ee61a4dbSMatt Arsenault; 435ee61a4dbSMatt Arsenault; GFX11-LABEL: v_maximumnum_f32: 436ee61a4dbSMatt Arsenault; GFX11: ; %bb.0: 437ee61a4dbSMatt Arsenault; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 438ee61a4dbSMatt Arsenault; GFX11-NEXT: v_dual_max_f32 v1, v1, v1 :: v_dual_max_f32 v0, v0, v0 439ee61a4dbSMatt Arsenault; GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1) 440ee61a4dbSMatt Arsenault; GFX11-NEXT: v_max_f32_e32 v0, v0, v1 441ee61a4dbSMatt Arsenault; GFX11-NEXT: s_setpc_b64 s[30:31] 442ee61a4dbSMatt Arsenault; 443ee61a4dbSMatt Arsenault; GFX12-LABEL: v_maximumnum_f32: 444ee61a4dbSMatt Arsenault; GFX12: ; %bb.0: 445ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_loadcnt_dscnt 0x0 446ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_expcnt 0x0 447ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_samplecnt 0x0 448ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_bvhcnt 0x0 449ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_kmcnt 0x0 450ee61a4dbSMatt Arsenault; GFX12-NEXT: v_dual_max_num_f32 v1, v1, v1 :: v_dual_max_num_f32 v0, v0, v0 451ee61a4dbSMatt Arsenault; GFX12-NEXT: s_delay_alu instid0(VALU_DEP_1) 452ee61a4dbSMatt Arsenault; GFX12-NEXT: v_max_num_f32_e32 v0, v0, v1 453ee61a4dbSMatt Arsenault; GFX12-NEXT: s_setpc_b64 s[30:31] 454ee61a4dbSMatt Arsenault %result = call float @llvm.maximumnum.f32(float %x, float %y) 455ee61a4dbSMatt Arsenault ret float %result 456ee61a4dbSMatt Arsenault} 457ee61a4dbSMatt Arsenault 458ee61a4dbSMatt Arsenaultdefine float @v_maximumnum_f32_nnan(float %x, float %y) { 459ee61a4dbSMatt Arsenault; GFX8-LABEL: v_maximumnum_f32_nnan: 460ee61a4dbSMatt Arsenault; GFX8: ; %bb.0: 461ee61a4dbSMatt Arsenault; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 462ee61a4dbSMatt Arsenault; GFX8-NEXT: v_max_f32_e32 v0, v0, v1 463ee61a4dbSMatt Arsenault; GFX8-NEXT: s_setpc_b64 s[30:31] 464ee61a4dbSMatt Arsenault; 465ee61a4dbSMatt Arsenault; GFX9-LABEL: v_maximumnum_f32_nnan: 466ee61a4dbSMatt Arsenault; GFX9: ; %bb.0: 467ee61a4dbSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 468ee61a4dbSMatt Arsenault; GFX9-NEXT: v_max_f32_e32 v0, v0, v1 469ee61a4dbSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 470ee61a4dbSMatt Arsenault; 471ee61a4dbSMatt Arsenault; GFX10-LABEL: v_maximumnum_f32_nnan: 472ee61a4dbSMatt Arsenault; GFX10: ; %bb.0: 473ee61a4dbSMatt Arsenault; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 474ee61a4dbSMatt Arsenault; GFX10-NEXT: v_max_f32_e32 v0, v0, v1 475ee61a4dbSMatt Arsenault; GFX10-NEXT: s_setpc_b64 s[30:31] 476ee61a4dbSMatt Arsenault; 477ee61a4dbSMatt Arsenault; GFX11-LABEL: v_maximumnum_f32_nnan: 478ee61a4dbSMatt Arsenault; GFX11: ; %bb.0: 479ee61a4dbSMatt Arsenault; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 480ee61a4dbSMatt Arsenault; GFX11-NEXT: v_max_f32_e32 v0, v0, v1 481ee61a4dbSMatt Arsenault; GFX11-NEXT: s_setpc_b64 s[30:31] 482ee61a4dbSMatt Arsenault; 483ee61a4dbSMatt Arsenault; GFX12-LABEL: v_maximumnum_f32_nnan: 484ee61a4dbSMatt Arsenault; GFX12: ; %bb.0: 485ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_loadcnt_dscnt 0x0 486ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_expcnt 0x0 487ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_samplecnt 0x0 488ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_bvhcnt 0x0 489ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_kmcnt 0x0 490ee61a4dbSMatt Arsenault; GFX12-NEXT: v_max_num_f32_e32 v0, v0, v1 491ee61a4dbSMatt Arsenault; GFX12-NEXT: s_setpc_b64 s[30:31] 492ee61a4dbSMatt Arsenault %result = call nnan float @llvm.maximumnum.f32(float %x, float %y) 493ee61a4dbSMatt Arsenault ret float %result 494ee61a4dbSMatt Arsenault} 495ee61a4dbSMatt Arsenault 496ee61a4dbSMatt Arsenaultdefine double @v_maximumnum_f64(double %x, double %y) { 497ee61a4dbSMatt Arsenault; GFX8-LABEL: v_maximumnum_f64: 498ee61a4dbSMatt Arsenault; GFX8: ; %bb.0: 499ee61a4dbSMatt Arsenault; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 500ee61a4dbSMatt Arsenault; GFX8-NEXT: v_max_f64 v[2:3], v[2:3], v[2:3] 501ee61a4dbSMatt Arsenault; GFX8-NEXT: v_max_f64 v[0:1], v[0:1], v[0:1] 502ee61a4dbSMatt Arsenault; GFX8-NEXT: v_max_f64 v[0:1], v[0:1], v[2:3] 503ee61a4dbSMatt Arsenault; GFX8-NEXT: s_setpc_b64 s[30:31] 504ee61a4dbSMatt Arsenault; 505ee61a4dbSMatt Arsenault; GFX9-LABEL: v_maximumnum_f64: 506ee61a4dbSMatt Arsenault; GFX9: ; %bb.0: 507ee61a4dbSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 508ee61a4dbSMatt Arsenault; GFX9-NEXT: v_max_f64 v[2:3], v[2:3], v[2:3] 509ee61a4dbSMatt Arsenault; GFX9-NEXT: v_max_f64 v[0:1], v[0:1], v[0:1] 510ee61a4dbSMatt Arsenault; GFX9-NEXT: v_max_f64 v[0:1], v[0:1], v[2:3] 511ee61a4dbSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 512ee61a4dbSMatt Arsenault; 513ee61a4dbSMatt Arsenault; GFX10-LABEL: v_maximumnum_f64: 514ee61a4dbSMatt Arsenault; GFX10: ; %bb.0: 515ee61a4dbSMatt Arsenault; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 516ee61a4dbSMatt Arsenault; GFX10-NEXT: v_max_f64 v[2:3], v[2:3], v[2:3] 517ee61a4dbSMatt Arsenault; GFX10-NEXT: v_max_f64 v[0:1], v[0:1], v[0:1] 518ee61a4dbSMatt Arsenault; GFX10-NEXT: v_max_f64 v[0:1], v[0:1], v[2:3] 519ee61a4dbSMatt Arsenault; GFX10-NEXT: s_setpc_b64 s[30:31] 520ee61a4dbSMatt Arsenault; 521ee61a4dbSMatt Arsenault; GFX11-LABEL: v_maximumnum_f64: 522ee61a4dbSMatt Arsenault; GFX11: ; %bb.0: 523ee61a4dbSMatt Arsenault; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 524ee61a4dbSMatt Arsenault; GFX11-NEXT: v_max_f64 v[2:3], v[2:3], v[2:3] 525ee61a4dbSMatt Arsenault; GFX11-NEXT: v_max_f64 v[0:1], v[0:1], v[0:1] 526ee61a4dbSMatt Arsenault; GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1) 527ee61a4dbSMatt Arsenault; GFX11-NEXT: v_max_f64 v[0:1], v[0:1], v[2:3] 528ee61a4dbSMatt Arsenault; GFX11-NEXT: s_setpc_b64 s[30:31] 529ee61a4dbSMatt Arsenault; 530ee61a4dbSMatt Arsenault; GFX12-LABEL: v_maximumnum_f64: 531ee61a4dbSMatt Arsenault; GFX12: ; %bb.0: 532ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_loadcnt_dscnt 0x0 533ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_expcnt 0x0 534ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_samplecnt 0x0 535ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_bvhcnt 0x0 536ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_kmcnt 0x0 537ee61a4dbSMatt Arsenault; GFX12-NEXT: v_max_num_f64_e32 v[2:3], v[2:3], v[2:3] 538ee61a4dbSMatt Arsenault; GFX12-NEXT: v_max_num_f64_e32 v[0:1], v[0:1], v[0:1] 539ee61a4dbSMatt Arsenault; GFX12-NEXT: s_delay_alu instid0(VALU_DEP_1) 540ee61a4dbSMatt Arsenault; GFX12-NEXT: v_max_num_f64_e32 v[0:1], v[0:1], v[2:3] 541ee61a4dbSMatt Arsenault; GFX12-NEXT: s_setpc_b64 s[30:31] 542ee61a4dbSMatt Arsenault %result = call double @llvm.maximumnum.f64(double %x, double %y) 543ee61a4dbSMatt Arsenault ret double %result 544ee61a4dbSMatt Arsenault} 545ee61a4dbSMatt Arsenault 546ee61a4dbSMatt Arsenaultdefine double @v_maximumnum_f64_nnan(double %x, double %y) { 547ee61a4dbSMatt Arsenault; GFX8-LABEL: v_maximumnum_f64_nnan: 548ee61a4dbSMatt Arsenault; GFX8: ; %bb.0: 549ee61a4dbSMatt Arsenault; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 550ee61a4dbSMatt Arsenault; GFX8-NEXT: v_max_f64 v[0:1], v[0:1], v[2:3] 551ee61a4dbSMatt Arsenault; GFX8-NEXT: s_setpc_b64 s[30:31] 552ee61a4dbSMatt Arsenault; 553ee61a4dbSMatt Arsenault; GFX9-LABEL: v_maximumnum_f64_nnan: 554ee61a4dbSMatt Arsenault; GFX9: ; %bb.0: 555ee61a4dbSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 556ee61a4dbSMatt Arsenault; GFX9-NEXT: v_max_f64 v[0:1], v[0:1], v[2:3] 557ee61a4dbSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 558ee61a4dbSMatt Arsenault; 559ee61a4dbSMatt Arsenault; GFX10-LABEL: v_maximumnum_f64_nnan: 560ee61a4dbSMatt Arsenault; GFX10: ; %bb.0: 561ee61a4dbSMatt Arsenault; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 562ee61a4dbSMatt Arsenault; GFX10-NEXT: v_max_f64 v[0:1], v[0:1], v[2:3] 563ee61a4dbSMatt Arsenault; GFX10-NEXT: s_setpc_b64 s[30:31] 564ee61a4dbSMatt Arsenault; 565ee61a4dbSMatt Arsenault; GFX11-LABEL: v_maximumnum_f64_nnan: 566ee61a4dbSMatt Arsenault; GFX11: ; %bb.0: 567ee61a4dbSMatt Arsenault; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 568ee61a4dbSMatt Arsenault; GFX11-NEXT: v_max_f64 v[0:1], v[0:1], v[2:3] 569ee61a4dbSMatt Arsenault; GFX11-NEXT: s_setpc_b64 s[30:31] 570ee61a4dbSMatt Arsenault; 571ee61a4dbSMatt Arsenault; GFX12-LABEL: v_maximumnum_f64_nnan: 572ee61a4dbSMatt Arsenault; GFX12: ; %bb.0: 573ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_loadcnt_dscnt 0x0 574ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_expcnt 0x0 575ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_samplecnt 0x0 576ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_bvhcnt 0x0 577ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_kmcnt 0x0 578ee61a4dbSMatt Arsenault; GFX12-NEXT: v_max_num_f64_e32 v[0:1], v[0:1], v[2:3] 579ee61a4dbSMatt Arsenault; GFX12-NEXT: s_setpc_b64 s[30:31] 580ee61a4dbSMatt Arsenault %result = call nnan double @llvm.maximumnum.f64(double %x, double %y) 581ee61a4dbSMatt Arsenault ret double %result 582ee61a4dbSMatt Arsenault} 583ee61a4dbSMatt Arsenault 584ee61a4dbSMatt Arsenaultdefine float @v_maximumnum_f32_1.0(float %x) { 585ee61a4dbSMatt Arsenault; GFX8-LABEL: v_maximumnum_f32_1.0: 586ee61a4dbSMatt Arsenault; GFX8: ; %bb.0: 587ee61a4dbSMatt Arsenault; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 588ee61a4dbSMatt Arsenault; GFX8-NEXT: v_mul_f32_e32 v0, 1.0, v0 589ee61a4dbSMatt Arsenault; GFX8-NEXT: v_max_f32_e32 v0, 1.0, v0 590ee61a4dbSMatt Arsenault; GFX8-NEXT: s_setpc_b64 s[30:31] 591ee61a4dbSMatt Arsenault; 592ee61a4dbSMatt Arsenault; GFX9-LABEL: v_maximumnum_f32_1.0: 593ee61a4dbSMatt Arsenault; GFX9: ; %bb.0: 594ee61a4dbSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 595ee61a4dbSMatt Arsenault; GFX9-NEXT: v_max_f32_e32 v0, v0, v0 596ee61a4dbSMatt Arsenault; GFX9-NEXT: v_max_f32_e32 v0, 1.0, v0 597ee61a4dbSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 598ee61a4dbSMatt Arsenault; 599ee61a4dbSMatt Arsenault; GFX10-LABEL: v_maximumnum_f32_1.0: 600ee61a4dbSMatt Arsenault; GFX10: ; %bb.0: 601ee61a4dbSMatt Arsenault; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 602ee61a4dbSMatt Arsenault; GFX10-NEXT: v_max_f32_e32 v0, v0, v0 603ee61a4dbSMatt Arsenault; GFX10-NEXT: v_max_f32_e32 v0, 1.0, v0 604ee61a4dbSMatt Arsenault; GFX10-NEXT: s_setpc_b64 s[30:31] 605ee61a4dbSMatt Arsenault; 606ee61a4dbSMatt Arsenault; GFX11-LABEL: v_maximumnum_f32_1.0: 607ee61a4dbSMatt Arsenault; GFX11: ; %bb.0: 608ee61a4dbSMatt Arsenault; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 609ee61a4dbSMatt Arsenault; GFX11-NEXT: v_max_f32_e32 v0, v0, v0 610ee61a4dbSMatt Arsenault; GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1) 611ee61a4dbSMatt Arsenault; GFX11-NEXT: v_max_f32_e32 v0, 1.0, v0 612ee61a4dbSMatt Arsenault; GFX11-NEXT: s_setpc_b64 s[30:31] 613ee61a4dbSMatt Arsenault; 614ee61a4dbSMatt Arsenault; GFX12-LABEL: v_maximumnum_f32_1.0: 615ee61a4dbSMatt Arsenault; GFX12: ; %bb.0: 616ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_loadcnt_dscnt 0x0 617ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_expcnt 0x0 618ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_samplecnt 0x0 619ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_bvhcnt 0x0 620ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_kmcnt 0x0 621ee61a4dbSMatt Arsenault; GFX12-NEXT: v_max_num_f32_e32 v0, v0, v0 622ee61a4dbSMatt Arsenault; GFX12-NEXT: s_delay_alu instid0(VALU_DEP_1) 623ee61a4dbSMatt Arsenault; GFX12-NEXT: v_max_num_f32_e32 v0, 1.0, v0 624ee61a4dbSMatt Arsenault; GFX12-NEXT: s_setpc_b64 s[30:31] 625ee61a4dbSMatt Arsenault %result = call float @llvm.maximumnum.f32(float %x, float 1.0) 626ee61a4dbSMatt Arsenault ret float %result 627ee61a4dbSMatt Arsenault} 628ee61a4dbSMatt Arsenault 629ee61a4dbSMatt Arsenaultdefine float @v_maximumnum_f32_rhs_not_snan(float %x, float %y) { 630ee61a4dbSMatt Arsenault; GFX8-LABEL: v_maximumnum_f32_rhs_not_snan: 631ee61a4dbSMatt Arsenault; GFX8: ; %bb.0: 632ee61a4dbSMatt Arsenault; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 633ee61a4dbSMatt Arsenault; GFX8-NEXT: v_mul_f32_e32 v1, 1.0, v1 634ee61a4dbSMatt Arsenault; GFX8-NEXT: v_mul_f32_e32 v0, 1.0, v0 635ee61a4dbSMatt Arsenault; GFX8-NEXT: v_max_f32_e32 v0, v0, v1 636ee61a4dbSMatt Arsenault; GFX8-NEXT: s_setpc_b64 s[30:31] 637ee61a4dbSMatt Arsenault; 638ee61a4dbSMatt Arsenault; GFX9-LABEL: v_maximumnum_f32_rhs_not_snan: 639ee61a4dbSMatt Arsenault; GFX9: ; %bb.0: 640ee61a4dbSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 641ee61a4dbSMatt Arsenault; GFX9-NEXT: v_max_f32_e32 v1, v1, v1 642ee61a4dbSMatt Arsenault; GFX9-NEXT: v_max_f32_e32 v0, v0, v0 643ee61a4dbSMatt Arsenault; GFX9-NEXT: v_max_f32_e32 v0, v0, v1 644ee61a4dbSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 645ee61a4dbSMatt Arsenault; 646ee61a4dbSMatt Arsenault; GFX10-LABEL: v_maximumnum_f32_rhs_not_snan: 647ee61a4dbSMatt Arsenault; GFX10: ; %bb.0: 648ee61a4dbSMatt Arsenault; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 649ee61a4dbSMatt Arsenault; GFX10-NEXT: v_max_f32_e32 v1, v1, v1 650ee61a4dbSMatt Arsenault; GFX10-NEXT: v_max_f32_e32 v0, v0, v0 651ee61a4dbSMatt Arsenault; GFX10-NEXT: v_max_f32_e32 v0, v0, v1 652ee61a4dbSMatt Arsenault; GFX10-NEXT: s_setpc_b64 s[30:31] 653ee61a4dbSMatt Arsenault; 654ee61a4dbSMatt Arsenault; GFX11-LABEL: v_maximumnum_f32_rhs_not_snan: 655ee61a4dbSMatt Arsenault; GFX11: ; %bb.0: 656ee61a4dbSMatt Arsenault; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 657ee61a4dbSMatt Arsenault; GFX11-NEXT: v_dual_max_f32 v1, v1, v1 :: v_dual_max_f32 v0, v0, v0 658ee61a4dbSMatt Arsenault; GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1) 659ee61a4dbSMatt Arsenault; GFX11-NEXT: v_max_f32_e32 v0, v0, v1 660ee61a4dbSMatt Arsenault; GFX11-NEXT: s_setpc_b64 s[30:31] 661ee61a4dbSMatt Arsenault; 662ee61a4dbSMatt Arsenault; GFX12-LABEL: v_maximumnum_f32_rhs_not_snan: 663ee61a4dbSMatt Arsenault; GFX12: ; %bb.0: 664ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_loadcnt_dscnt 0x0 665ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_expcnt 0x0 666ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_samplecnt 0x0 667ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_bvhcnt 0x0 668ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_kmcnt 0x0 669ee61a4dbSMatt Arsenault; GFX12-NEXT: v_dual_max_num_f32 v1, v1, v1 :: v_dual_max_num_f32 v0, v0, v0 670ee61a4dbSMatt Arsenault; GFX12-NEXT: s_delay_alu instid0(VALU_DEP_1) 671ee61a4dbSMatt Arsenault; GFX12-NEXT: v_max_num_f32_e32 v0, v0, v1 672ee61a4dbSMatt Arsenault; GFX12-NEXT: s_setpc_b64 s[30:31] 673ee61a4dbSMatt Arsenault %canon.y = call float @llvm.canonicalize.f32(float %y) 674ee61a4dbSMatt Arsenault %result = call float @llvm.maximumnum.f32(float %x, float %canon.y) 675ee61a4dbSMatt Arsenault ret float %result 676ee61a4dbSMatt Arsenault} 677ee61a4dbSMatt Arsenault 678ee61a4dbSMatt Arsenaultdefine float @v_maximumnum_f32_lhs_not_snan(float %x, float %y) { 679ee61a4dbSMatt Arsenault; GFX8-LABEL: v_maximumnum_f32_lhs_not_snan: 680ee61a4dbSMatt Arsenault; GFX8: ; %bb.0: 681ee61a4dbSMatt Arsenault; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 682ee61a4dbSMatt Arsenault; GFX8-NEXT: v_mul_f32_e32 v0, 1.0, v0 683ee61a4dbSMatt Arsenault; GFX8-NEXT: v_mul_f32_e32 v1, 1.0, v1 684ee61a4dbSMatt Arsenault; GFX8-NEXT: v_max_f32_e32 v0, v0, v1 685ee61a4dbSMatt Arsenault; GFX8-NEXT: s_setpc_b64 s[30:31] 686ee61a4dbSMatt Arsenault; 687ee61a4dbSMatt Arsenault; GFX9-LABEL: v_maximumnum_f32_lhs_not_snan: 688ee61a4dbSMatt Arsenault; GFX9: ; %bb.0: 689ee61a4dbSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 690ee61a4dbSMatt Arsenault; GFX9-NEXT: v_max_f32_e32 v0, v0, v0 691ee61a4dbSMatt Arsenault; GFX9-NEXT: v_max_f32_e32 v1, v1, v1 692ee61a4dbSMatt Arsenault; GFX9-NEXT: v_max_f32_e32 v0, v0, v1 693ee61a4dbSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 694ee61a4dbSMatt Arsenault; 695ee61a4dbSMatt Arsenault; GFX10-LABEL: v_maximumnum_f32_lhs_not_snan: 696ee61a4dbSMatt Arsenault; GFX10: ; %bb.0: 697ee61a4dbSMatt Arsenault; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 698ee61a4dbSMatt Arsenault; GFX10-NEXT: v_max_f32_e32 v0, v0, v0 699ee61a4dbSMatt Arsenault; GFX10-NEXT: v_max_f32_e32 v1, v1, v1 700ee61a4dbSMatt Arsenault; GFX10-NEXT: v_max_f32_e32 v0, v0, v1 701ee61a4dbSMatt Arsenault; GFX10-NEXT: s_setpc_b64 s[30:31] 702ee61a4dbSMatt Arsenault; 703ee61a4dbSMatt Arsenault; GFX11-LABEL: v_maximumnum_f32_lhs_not_snan: 704ee61a4dbSMatt Arsenault; GFX11: ; %bb.0: 705ee61a4dbSMatt Arsenault; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 706ee61a4dbSMatt Arsenault; GFX11-NEXT: v_dual_max_f32 v0, v0, v0 :: v_dual_max_f32 v1, v1, v1 707ee61a4dbSMatt Arsenault; GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1) 708ee61a4dbSMatt Arsenault; GFX11-NEXT: v_max_f32_e32 v0, v0, v1 709ee61a4dbSMatt Arsenault; GFX11-NEXT: s_setpc_b64 s[30:31] 710ee61a4dbSMatt Arsenault; 711ee61a4dbSMatt Arsenault; GFX12-LABEL: v_maximumnum_f32_lhs_not_snan: 712ee61a4dbSMatt Arsenault; GFX12: ; %bb.0: 713ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_loadcnt_dscnt 0x0 714ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_expcnt 0x0 715ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_samplecnt 0x0 716ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_bvhcnt 0x0 717ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_kmcnt 0x0 718ee61a4dbSMatt Arsenault; GFX12-NEXT: v_dual_max_num_f32 v0, v0, v0 :: v_dual_max_num_f32 v1, v1, v1 719ee61a4dbSMatt Arsenault; GFX12-NEXT: s_delay_alu instid0(VALU_DEP_1) 720ee61a4dbSMatt Arsenault; GFX12-NEXT: v_max_num_f32_e32 v0, v0, v1 721ee61a4dbSMatt Arsenault; GFX12-NEXT: s_setpc_b64 s[30:31] 722ee61a4dbSMatt Arsenault %canon.x = call float @llvm.canonicalize.f32(float %x) 723ee61a4dbSMatt Arsenault %result = call float @llvm.maximumnum.f32(float %canon.x, float %y) 724ee61a4dbSMatt Arsenault ret float %result 725ee61a4dbSMatt Arsenault} 726ee61a4dbSMatt Arsenault 727ee61a4dbSMatt Arsenaultdefine float @v_maximumnum_f32_both_operands_not_snan(float %x, float %y) { 728ee61a4dbSMatt Arsenault; GFX8-LABEL: v_maximumnum_f32_both_operands_not_snan: 729ee61a4dbSMatt Arsenault; GFX8: ; %bb.0: 730ee61a4dbSMatt Arsenault; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 731ee61a4dbSMatt Arsenault; GFX8-NEXT: v_mul_f32_e32 v0, 1.0, v0 732ee61a4dbSMatt Arsenault; GFX8-NEXT: v_mul_f32_e32 v1, 1.0, v1 733ee61a4dbSMatt Arsenault; GFX8-NEXT: v_max_f32_e32 v0, v0, v1 734ee61a4dbSMatt Arsenault; GFX8-NEXT: s_setpc_b64 s[30:31] 735ee61a4dbSMatt Arsenault; 736ee61a4dbSMatt Arsenault; GFX9-LABEL: v_maximumnum_f32_both_operands_not_snan: 737ee61a4dbSMatt Arsenault; GFX9: ; %bb.0: 738ee61a4dbSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 739ee61a4dbSMatt Arsenault; GFX9-NEXT: v_max_f32_e32 v0, v0, v0 740ee61a4dbSMatt Arsenault; GFX9-NEXT: v_max_f32_e32 v1, v1, v1 741ee61a4dbSMatt Arsenault; GFX9-NEXT: v_max_f32_e32 v0, v0, v1 742ee61a4dbSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 743ee61a4dbSMatt Arsenault; 744ee61a4dbSMatt Arsenault; GFX10-LABEL: v_maximumnum_f32_both_operands_not_snan: 745ee61a4dbSMatt Arsenault; GFX10: ; %bb.0: 746ee61a4dbSMatt Arsenault; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 747ee61a4dbSMatt Arsenault; GFX10-NEXT: v_max_f32_e32 v0, v0, v0 748ee61a4dbSMatt Arsenault; GFX10-NEXT: v_max_f32_e32 v1, v1, v1 749ee61a4dbSMatt Arsenault; GFX10-NEXT: v_max_f32_e32 v0, v0, v1 750ee61a4dbSMatt Arsenault; GFX10-NEXT: s_setpc_b64 s[30:31] 751ee61a4dbSMatt Arsenault; 752ee61a4dbSMatt Arsenault; GFX11-LABEL: v_maximumnum_f32_both_operands_not_snan: 753ee61a4dbSMatt Arsenault; GFX11: ; %bb.0: 754ee61a4dbSMatt Arsenault; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 755ee61a4dbSMatt Arsenault; GFX11-NEXT: v_dual_max_f32 v0, v0, v0 :: v_dual_max_f32 v1, v1, v1 756ee61a4dbSMatt Arsenault; GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1) 757ee61a4dbSMatt Arsenault; GFX11-NEXT: v_max_f32_e32 v0, v0, v1 758ee61a4dbSMatt Arsenault; GFX11-NEXT: s_setpc_b64 s[30:31] 759ee61a4dbSMatt Arsenault; 760ee61a4dbSMatt Arsenault; GFX12-LABEL: v_maximumnum_f32_both_operands_not_snan: 761ee61a4dbSMatt Arsenault; GFX12: ; %bb.0: 762ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_loadcnt_dscnt 0x0 763ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_expcnt 0x0 764ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_samplecnt 0x0 765ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_bvhcnt 0x0 766ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_kmcnt 0x0 767ee61a4dbSMatt Arsenault; GFX12-NEXT: v_dual_max_num_f32 v0, v0, v0 :: v_dual_max_num_f32 v1, v1, v1 768ee61a4dbSMatt Arsenault; GFX12-NEXT: s_delay_alu instid0(VALU_DEP_1) 769ee61a4dbSMatt Arsenault; GFX12-NEXT: v_max_num_f32_e32 v0, v0, v1 770ee61a4dbSMatt Arsenault; GFX12-NEXT: s_setpc_b64 s[30:31] 771ee61a4dbSMatt Arsenault %canon.x = call float @llvm.canonicalize.f32(float %x) 772ee61a4dbSMatt Arsenault %canon.y = call float @llvm.canonicalize.f32(float %y) 773ee61a4dbSMatt Arsenault %result = call float @llvm.maximumnum.f32(float %canon.x, float %canon.y) 774ee61a4dbSMatt Arsenault ret float %result 775ee61a4dbSMatt Arsenault} 776ee61a4dbSMatt Arsenault 777ee61a4dbSMatt Arsenaultdefine double @v_maximumnum_f64_1.0(double %x) { 778ee61a4dbSMatt Arsenault; GFX8-LABEL: v_maximumnum_f64_1.0: 779ee61a4dbSMatt Arsenault; GFX8: ; %bb.0: 780ee61a4dbSMatt Arsenault; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 781ee61a4dbSMatt Arsenault; GFX8-NEXT: v_max_f64 v[0:1], v[0:1], v[0:1] 782ee61a4dbSMatt Arsenault; GFX8-NEXT: v_max_f64 v[0:1], v[0:1], 1.0 783ee61a4dbSMatt Arsenault; GFX8-NEXT: s_setpc_b64 s[30:31] 784ee61a4dbSMatt Arsenault; 785ee61a4dbSMatt Arsenault; GFX9-LABEL: v_maximumnum_f64_1.0: 786ee61a4dbSMatt Arsenault; GFX9: ; %bb.0: 787ee61a4dbSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 788ee61a4dbSMatt Arsenault; GFX9-NEXT: v_max_f64 v[0:1], v[0:1], v[0:1] 789ee61a4dbSMatt Arsenault; GFX9-NEXT: v_max_f64 v[0:1], v[0:1], 1.0 790ee61a4dbSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 791ee61a4dbSMatt Arsenault; 792ee61a4dbSMatt Arsenault; GFX10-LABEL: v_maximumnum_f64_1.0: 793ee61a4dbSMatt Arsenault; GFX10: ; %bb.0: 794ee61a4dbSMatt Arsenault; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 795ee61a4dbSMatt Arsenault; GFX10-NEXT: v_max_f64 v[0:1], v[0:1], v[0:1] 796ee61a4dbSMatt Arsenault; GFX10-NEXT: v_max_f64 v[0:1], v[0:1], 1.0 797ee61a4dbSMatt Arsenault; GFX10-NEXT: s_setpc_b64 s[30:31] 798ee61a4dbSMatt Arsenault; 799ee61a4dbSMatt Arsenault; GFX11-LABEL: v_maximumnum_f64_1.0: 800ee61a4dbSMatt Arsenault; GFX11: ; %bb.0: 801ee61a4dbSMatt Arsenault; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 802ee61a4dbSMatt Arsenault; GFX11-NEXT: v_max_f64 v[0:1], v[0:1], v[0:1] 803ee61a4dbSMatt Arsenault; GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1) 804ee61a4dbSMatt Arsenault; GFX11-NEXT: v_max_f64 v[0:1], v[0:1], 1.0 805ee61a4dbSMatt Arsenault; GFX11-NEXT: s_setpc_b64 s[30:31] 806ee61a4dbSMatt Arsenault; 807ee61a4dbSMatt Arsenault; GFX12-LABEL: v_maximumnum_f64_1.0: 808ee61a4dbSMatt Arsenault; GFX12: ; %bb.0: 809ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_loadcnt_dscnt 0x0 810ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_expcnt 0x0 811ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_samplecnt 0x0 812ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_bvhcnt 0x0 813ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_kmcnt 0x0 814ee61a4dbSMatt Arsenault; GFX12-NEXT: v_max_num_f64_e32 v[0:1], v[0:1], v[0:1] 815ee61a4dbSMatt Arsenault; GFX12-NEXT: s_delay_alu instid0(VALU_DEP_1) 816ee61a4dbSMatt Arsenault; GFX12-NEXT: v_max_num_f64_e32 v[0:1], 1.0, v[0:1] 817ee61a4dbSMatt Arsenault; GFX12-NEXT: s_setpc_b64 s[30:31] 818ee61a4dbSMatt Arsenault %result = call double @llvm.maximumnum.f64(double %x, double 1.0) 819ee61a4dbSMatt Arsenault ret double %result 820ee61a4dbSMatt Arsenault} 821ee61a4dbSMatt Arsenault 822ee61a4dbSMatt Arsenaultdefine half @v_maximumnum_f16_s_v(half inreg %x, half %y) { 823ee61a4dbSMatt Arsenault; GFX8-LABEL: v_maximumnum_f16_s_v: 824ee61a4dbSMatt Arsenault; GFX8: ; %bb.0: 825ee61a4dbSMatt Arsenault; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 826ee61a4dbSMatt Arsenault; GFX8-NEXT: v_max_f16_e32 v0, v0, v0 8276548b635SShilei Tian; GFX8-NEXT: v_max_f16_e64 v1, s16, s16 828ee61a4dbSMatt Arsenault; GFX8-NEXT: v_max_f16_e32 v0, v1, v0 829ee61a4dbSMatt Arsenault; GFX8-NEXT: s_setpc_b64 s[30:31] 830ee61a4dbSMatt Arsenault; 831ee61a4dbSMatt Arsenault; GFX9-LABEL: v_maximumnum_f16_s_v: 832ee61a4dbSMatt Arsenault; GFX9: ; %bb.0: 833ee61a4dbSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 834ee61a4dbSMatt Arsenault; GFX9-NEXT: v_max_f16_e32 v0, v0, v0 8356548b635SShilei Tian; GFX9-NEXT: v_max_f16_e64 v1, s16, s16 836ee61a4dbSMatt Arsenault; GFX9-NEXT: v_max_f16_e32 v0, v1, v0 837ee61a4dbSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 838ee61a4dbSMatt Arsenault; 839ee61a4dbSMatt Arsenault; GFX10-LABEL: v_maximumnum_f16_s_v: 840ee61a4dbSMatt Arsenault; GFX10: ; %bb.0: 841ee61a4dbSMatt Arsenault; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 842ee61a4dbSMatt Arsenault; GFX10-NEXT: v_max_f16_e32 v0, v0, v0 8436548b635SShilei Tian; GFX10-NEXT: v_max_f16_e64 v1, s16, s16 844ee61a4dbSMatt Arsenault; GFX10-NEXT: v_max_f16_e32 v0, v1, v0 845ee61a4dbSMatt Arsenault; GFX10-NEXT: s_setpc_b64 s[30:31] 846ee61a4dbSMatt Arsenault; 847ee61a4dbSMatt Arsenault; GFX11-LABEL: v_maximumnum_f16_s_v: 848ee61a4dbSMatt Arsenault; GFX11: ; %bb.0: 849ee61a4dbSMatt Arsenault; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 850ee61a4dbSMatt Arsenault; GFX11-NEXT: v_max_f16_e32 v0, v0, v0 851ee61a4dbSMatt Arsenault; GFX11-NEXT: v_max_f16_e64 v1, s0, s0 852ee61a4dbSMatt Arsenault; GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1) 853ee61a4dbSMatt Arsenault; GFX11-NEXT: v_max_f16_e32 v0, v1, v0 854ee61a4dbSMatt Arsenault; GFX11-NEXT: s_setpc_b64 s[30:31] 855ee61a4dbSMatt Arsenault; 856ee61a4dbSMatt Arsenault; GFX12-LABEL: v_maximumnum_f16_s_v: 857ee61a4dbSMatt Arsenault; GFX12: ; %bb.0: 858ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_loadcnt_dscnt 0x0 859ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_expcnt 0x0 860ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_samplecnt 0x0 861ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_bvhcnt 0x0 862ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_kmcnt 0x0 863ee61a4dbSMatt Arsenault; GFX12-NEXT: v_max_num_f16_e32 v0, v0, v0 864ee61a4dbSMatt Arsenault; GFX12-NEXT: v_max_num_f16_e64 v1, s0, s0 865ee61a4dbSMatt Arsenault; GFX12-NEXT: s_delay_alu instid0(VALU_DEP_1) 866ee61a4dbSMatt Arsenault; GFX12-NEXT: v_max_num_f16_e32 v0, v1, v0 867ee61a4dbSMatt Arsenault; GFX12-NEXT: s_setpc_b64 s[30:31] 868ee61a4dbSMatt Arsenault %result = call half @llvm.maximumnum.f16(half %x, half %y) 869ee61a4dbSMatt Arsenault ret half %result 870ee61a4dbSMatt Arsenault} 871ee61a4dbSMatt Arsenault 872ee61a4dbSMatt Arsenaultdefine half @v_maximumnum_f16_v_s(half %x, half inreg %y) { 873ee61a4dbSMatt Arsenault; GFX8-LABEL: v_maximumnum_f16_v_s: 874ee61a4dbSMatt Arsenault; GFX8: ; %bb.0: 875ee61a4dbSMatt Arsenault; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 8766548b635SShilei Tian; GFX8-NEXT: v_max_f16_e64 v1, s16, s16 877ee61a4dbSMatt Arsenault; GFX8-NEXT: v_max_f16_e32 v0, v0, v0 878ee61a4dbSMatt Arsenault; GFX8-NEXT: v_max_f16_e32 v0, v0, v1 879ee61a4dbSMatt Arsenault; GFX8-NEXT: s_setpc_b64 s[30:31] 880ee61a4dbSMatt Arsenault; 881ee61a4dbSMatt Arsenault; GFX9-LABEL: v_maximumnum_f16_v_s: 882ee61a4dbSMatt Arsenault; GFX9: ; %bb.0: 883ee61a4dbSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 8846548b635SShilei Tian; GFX9-NEXT: v_max_f16_e64 v1, s16, s16 885ee61a4dbSMatt Arsenault; GFX9-NEXT: v_max_f16_e32 v0, v0, v0 886ee61a4dbSMatt Arsenault; GFX9-NEXT: v_max_f16_e32 v0, v0, v1 887ee61a4dbSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 888ee61a4dbSMatt Arsenault; 889ee61a4dbSMatt Arsenault; GFX10-LABEL: v_maximumnum_f16_v_s: 890ee61a4dbSMatt Arsenault; GFX10: ; %bb.0: 891ee61a4dbSMatt Arsenault; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 8926548b635SShilei Tian; GFX10-NEXT: v_max_f16_e64 v1, s16, s16 893ee61a4dbSMatt Arsenault; GFX10-NEXT: v_max_f16_e32 v0, v0, v0 894ee61a4dbSMatt Arsenault; GFX10-NEXT: v_max_f16_e32 v0, v0, v1 895ee61a4dbSMatt Arsenault; GFX10-NEXT: s_setpc_b64 s[30:31] 896ee61a4dbSMatt Arsenault; 897ee61a4dbSMatt Arsenault; GFX11-LABEL: v_maximumnum_f16_v_s: 898ee61a4dbSMatt Arsenault; GFX11: ; %bb.0: 899ee61a4dbSMatt Arsenault; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 900ee61a4dbSMatt Arsenault; GFX11-NEXT: v_max_f16_e64 v1, s0, s0 901ee61a4dbSMatt Arsenault; GFX11-NEXT: v_max_f16_e32 v0, v0, v0 902ee61a4dbSMatt Arsenault; GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1) 903ee61a4dbSMatt Arsenault; GFX11-NEXT: v_max_f16_e32 v0, v0, v1 904ee61a4dbSMatt Arsenault; GFX11-NEXT: s_setpc_b64 s[30:31] 905ee61a4dbSMatt Arsenault; 906ee61a4dbSMatt Arsenault; GFX12-LABEL: v_maximumnum_f16_v_s: 907ee61a4dbSMatt Arsenault; GFX12: ; %bb.0: 908ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_loadcnt_dscnt 0x0 909ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_expcnt 0x0 910ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_samplecnt 0x0 911ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_bvhcnt 0x0 912ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_kmcnt 0x0 913ee61a4dbSMatt Arsenault; GFX12-NEXT: v_max_num_f16_e64 v1, s0, s0 914ee61a4dbSMatt Arsenault; GFX12-NEXT: v_max_num_f16_e32 v0, v0, v0 915ee61a4dbSMatt Arsenault; GFX12-NEXT: s_delay_alu instid0(VALU_DEP_1) 916ee61a4dbSMatt Arsenault; GFX12-NEXT: v_max_num_f16_e32 v0, v0, v1 917ee61a4dbSMatt Arsenault; GFX12-NEXT: s_setpc_b64 s[30:31] 918ee61a4dbSMatt Arsenault %result = call half @llvm.maximumnum.f16(half %x, half %y) 919ee61a4dbSMatt Arsenault ret half %result 920ee61a4dbSMatt Arsenault} 921ee61a4dbSMatt Arsenault 922ee61a4dbSMatt Arsenaultdefine half @v_maximumnum_f16_s_s(half inreg %x, half inreg %y) { 923ee61a4dbSMatt Arsenault; GFX8-LABEL: v_maximumnum_f16_s_s: 924ee61a4dbSMatt Arsenault; GFX8: ; %bb.0: 925ee61a4dbSMatt Arsenault; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 9266548b635SShilei Tian; GFX8-NEXT: v_max_f16_e64 v0, s17, s17 9276548b635SShilei Tian; GFX8-NEXT: v_max_f16_e64 v1, s16, s16 928ee61a4dbSMatt Arsenault; GFX8-NEXT: v_max_f16_e32 v0, v1, v0 929ee61a4dbSMatt Arsenault; GFX8-NEXT: s_setpc_b64 s[30:31] 930ee61a4dbSMatt Arsenault; 931ee61a4dbSMatt Arsenault; GFX9-LABEL: v_maximumnum_f16_s_s: 932ee61a4dbSMatt Arsenault; GFX9: ; %bb.0: 933ee61a4dbSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 9346548b635SShilei Tian; GFX9-NEXT: v_max_f16_e64 v0, s17, s17 9356548b635SShilei Tian; GFX9-NEXT: v_max_f16_e64 v1, s16, s16 936ee61a4dbSMatt Arsenault; GFX9-NEXT: v_max_f16_e32 v0, v1, v0 937ee61a4dbSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 938ee61a4dbSMatt Arsenault; 939ee61a4dbSMatt Arsenault; GFX10-LABEL: v_maximumnum_f16_s_s: 940ee61a4dbSMatt Arsenault; GFX10: ; %bb.0: 941ee61a4dbSMatt Arsenault; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 9426548b635SShilei Tian; GFX10-NEXT: v_max_f16_e64 v0, s17, s17 9436548b635SShilei Tian; GFX10-NEXT: v_max_f16_e64 v1, s16, s16 944ee61a4dbSMatt Arsenault; GFX10-NEXT: v_max_f16_e32 v0, v1, v0 945ee61a4dbSMatt Arsenault; GFX10-NEXT: s_setpc_b64 s[30:31] 946ee61a4dbSMatt Arsenault; 947ee61a4dbSMatt Arsenault; GFX11-LABEL: v_maximumnum_f16_s_s: 948ee61a4dbSMatt Arsenault; GFX11: ; %bb.0: 949ee61a4dbSMatt Arsenault; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 950ee61a4dbSMatt Arsenault; GFX11-NEXT: v_max_f16_e64 v0, s1, s1 951ee61a4dbSMatt Arsenault; GFX11-NEXT: v_max_f16_e64 v1, s0, s0 952ee61a4dbSMatt Arsenault; GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1) 953ee61a4dbSMatt Arsenault; GFX11-NEXT: v_max_f16_e32 v0, v1, v0 954ee61a4dbSMatt Arsenault; GFX11-NEXT: s_setpc_b64 s[30:31] 955ee61a4dbSMatt Arsenault; 956ee61a4dbSMatt Arsenault; GFX12-LABEL: v_maximumnum_f16_s_s: 957ee61a4dbSMatt Arsenault; GFX12: ; %bb.0: 958ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_loadcnt_dscnt 0x0 959ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_expcnt 0x0 960ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_samplecnt 0x0 961ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_bvhcnt 0x0 962ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_kmcnt 0x0 963ee61a4dbSMatt Arsenault; GFX12-NEXT: v_max_num_f16_e64 v0, s1, s1 964ee61a4dbSMatt Arsenault; GFX12-NEXT: v_max_num_f16_e64 v1, s0, s0 965ee61a4dbSMatt Arsenault; GFX12-NEXT: s_delay_alu instid0(VALU_DEP_1) 966ee61a4dbSMatt Arsenault; GFX12-NEXT: v_max_num_f16_e32 v0, v1, v0 967ee61a4dbSMatt Arsenault; GFX12-NEXT: s_setpc_b64 s[30:31] 968ee61a4dbSMatt Arsenault %result = call half @llvm.maximumnum.f16(half %x, half %y) 969ee61a4dbSMatt Arsenault ret half %result 970ee61a4dbSMatt Arsenault} 971ee61a4dbSMatt Arsenault 972ee61a4dbSMatt Arsenaultdefine float @v_maximumnum_f32_s_v(float inreg %x, float %y) { 973ee61a4dbSMatt Arsenault; GFX8-LABEL: v_maximumnum_f32_s_v: 974ee61a4dbSMatt Arsenault; GFX8: ; %bb.0: 975ee61a4dbSMatt Arsenault; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 976ee61a4dbSMatt Arsenault; GFX8-NEXT: v_mul_f32_e32 v0, 1.0, v0 9776548b635SShilei Tian; GFX8-NEXT: v_mul_f32_e64 v1, 1.0, s16 978ee61a4dbSMatt Arsenault; GFX8-NEXT: v_max_f32_e32 v0, v1, v0 979ee61a4dbSMatt Arsenault; GFX8-NEXT: s_setpc_b64 s[30:31] 980ee61a4dbSMatt Arsenault; 981ee61a4dbSMatt Arsenault; GFX9-LABEL: v_maximumnum_f32_s_v: 982ee61a4dbSMatt Arsenault; GFX9: ; %bb.0: 983ee61a4dbSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 984ee61a4dbSMatt Arsenault; GFX9-NEXT: v_max_f32_e32 v0, v0, v0 9856548b635SShilei Tian; GFX9-NEXT: v_max_f32_e64 v1, s16, s16 986ee61a4dbSMatt Arsenault; GFX9-NEXT: v_max_f32_e32 v0, v1, v0 987ee61a4dbSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 988ee61a4dbSMatt Arsenault; 989ee61a4dbSMatt Arsenault; GFX10-LABEL: v_maximumnum_f32_s_v: 990ee61a4dbSMatt Arsenault; GFX10: ; %bb.0: 991ee61a4dbSMatt Arsenault; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 992ee61a4dbSMatt Arsenault; GFX10-NEXT: v_max_f32_e32 v0, v0, v0 9936548b635SShilei Tian; GFX10-NEXT: v_max_f32_e64 v1, s16, s16 994ee61a4dbSMatt Arsenault; GFX10-NEXT: v_max_f32_e32 v0, v1, v0 995ee61a4dbSMatt Arsenault; GFX10-NEXT: s_setpc_b64 s[30:31] 996ee61a4dbSMatt Arsenault; 997ee61a4dbSMatt Arsenault; GFX11-LABEL: v_maximumnum_f32_s_v: 998ee61a4dbSMatt Arsenault; GFX11: ; %bb.0: 999ee61a4dbSMatt Arsenault; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1000ee61a4dbSMatt Arsenault; GFX11-NEXT: v_max_f32_e32 v0, v0, v0 1001ee61a4dbSMatt Arsenault; GFX11-NEXT: v_max_f32_e64 v1, s0, s0 1002ee61a4dbSMatt Arsenault; GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1) 1003ee61a4dbSMatt Arsenault; GFX11-NEXT: v_max_f32_e32 v0, v1, v0 1004ee61a4dbSMatt Arsenault; GFX11-NEXT: s_setpc_b64 s[30:31] 1005ee61a4dbSMatt Arsenault; 1006ee61a4dbSMatt Arsenault; GFX12-LABEL: v_maximumnum_f32_s_v: 1007ee61a4dbSMatt Arsenault; GFX12: ; %bb.0: 1008ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_loadcnt_dscnt 0x0 1009ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_expcnt 0x0 1010ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_samplecnt 0x0 1011ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_bvhcnt 0x0 1012ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_kmcnt 0x0 1013ee61a4dbSMatt Arsenault; GFX12-NEXT: v_max_num_f32_e32 v0, v0, v0 1014ee61a4dbSMatt Arsenault; GFX12-NEXT: v_max_num_f32_e64 v1, s0, s0 1015ee61a4dbSMatt Arsenault; GFX12-NEXT: s_delay_alu instid0(VALU_DEP_1) 1016ee61a4dbSMatt Arsenault; GFX12-NEXT: v_max_num_f32_e32 v0, v1, v0 1017ee61a4dbSMatt Arsenault; GFX12-NEXT: s_setpc_b64 s[30:31] 1018ee61a4dbSMatt Arsenault %result = call float @llvm.maximumnum.f32(float %x, float %y) 1019ee61a4dbSMatt Arsenault ret float %result 1020ee61a4dbSMatt Arsenault} 1021ee61a4dbSMatt Arsenault 1022ee61a4dbSMatt Arsenaultdefine float @v_maximumnum_f32_v_s(float %x, float inreg %y) { 1023ee61a4dbSMatt Arsenault; GFX8-LABEL: v_maximumnum_f32_v_s: 1024ee61a4dbSMatt Arsenault; GFX8: ; %bb.0: 1025ee61a4dbSMatt Arsenault; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 10266548b635SShilei Tian; GFX8-NEXT: v_mul_f32_e64 v1, 1.0, s16 1027ee61a4dbSMatt Arsenault; GFX8-NEXT: v_mul_f32_e32 v0, 1.0, v0 1028ee61a4dbSMatt Arsenault; GFX8-NEXT: v_max_f32_e32 v0, v0, v1 1029ee61a4dbSMatt Arsenault; GFX8-NEXT: s_setpc_b64 s[30:31] 1030ee61a4dbSMatt Arsenault; 1031ee61a4dbSMatt Arsenault; GFX9-LABEL: v_maximumnum_f32_v_s: 1032ee61a4dbSMatt Arsenault; GFX9: ; %bb.0: 1033ee61a4dbSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 10346548b635SShilei Tian; GFX9-NEXT: v_max_f32_e64 v1, s16, s16 1035ee61a4dbSMatt Arsenault; GFX9-NEXT: v_max_f32_e32 v0, v0, v0 1036ee61a4dbSMatt Arsenault; GFX9-NEXT: v_max_f32_e32 v0, v0, v1 1037ee61a4dbSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 1038ee61a4dbSMatt Arsenault; 1039ee61a4dbSMatt Arsenault; GFX10-LABEL: v_maximumnum_f32_v_s: 1040ee61a4dbSMatt Arsenault; GFX10: ; %bb.0: 1041ee61a4dbSMatt Arsenault; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 10426548b635SShilei Tian; GFX10-NEXT: v_max_f32_e64 v1, s16, s16 1043ee61a4dbSMatt Arsenault; GFX10-NEXT: v_max_f32_e32 v0, v0, v0 1044ee61a4dbSMatt Arsenault; GFX10-NEXT: v_max_f32_e32 v0, v0, v1 1045ee61a4dbSMatt Arsenault; GFX10-NEXT: s_setpc_b64 s[30:31] 1046ee61a4dbSMatt Arsenault; 1047ee61a4dbSMatt Arsenault; GFX11-LABEL: v_maximumnum_f32_v_s: 1048ee61a4dbSMatt Arsenault; GFX11: ; %bb.0: 1049ee61a4dbSMatt Arsenault; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1050ee61a4dbSMatt Arsenault; GFX11-NEXT: v_max_f32_e64 v1, s0, s0 1051ee61a4dbSMatt Arsenault; GFX11-NEXT: v_max_f32_e32 v0, v0, v0 1052ee61a4dbSMatt Arsenault; GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1) 1053ee61a4dbSMatt Arsenault; GFX11-NEXT: v_max_f32_e32 v0, v0, v1 1054ee61a4dbSMatt Arsenault; GFX11-NEXT: s_setpc_b64 s[30:31] 1055ee61a4dbSMatt Arsenault; 1056ee61a4dbSMatt Arsenault; GFX12-LABEL: v_maximumnum_f32_v_s: 1057ee61a4dbSMatt Arsenault; GFX12: ; %bb.0: 1058ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_loadcnt_dscnt 0x0 1059ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_expcnt 0x0 1060ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_samplecnt 0x0 1061ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_bvhcnt 0x0 1062ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_kmcnt 0x0 1063ee61a4dbSMatt Arsenault; GFX12-NEXT: v_max_num_f32_e64 v1, s0, s0 1064ee61a4dbSMatt Arsenault; GFX12-NEXT: v_max_num_f32_e32 v0, v0, v0 1065ee61a4dbSMatt Arsenault; GFX12-NEXT: s_delay_alu instid0(VALU_DEP_1) 1066ee61a4dbSMatt Arsenault; GFX12-NEXT: v_max_num_f32_e32 v0, v0, v1 1067ee61a4dbSMatt Arsenault; GFX12-NEXT: s_setpc_b64 s[30:31] 1068ee61a4dbSMatt Arsenault %result = call float @llvm.maximumnum.f32(float %x, float %y) 1069ee61a4dbSMatt Arsenault ret float %result 1070ee61a4dbSMatt Arsenault} 1071ee61a4dbSMatt Arsenault 1072ee61a4dbSMatt Arsenaultdefine float @v_maximumnum_f32_s_s(float inreg %x, float inreg %y) { 1073ee61a4dbSMatt Arsenault; GFX8-LABEL: v_maximumnum_f32_s_s: 1074ee61a4dbSMatt Arsenault; GFX8: ; %bb.0: 1075ee61a4dbSMatt Arsenault; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 10766548b635SShilei Tian; GFX8-NEXT: v_mul_f32_e64 v0, 1.0, s17 10776548b635SShilei Tian; GFX8-NEXT: v_mul_f32_e64 v1, 1.0, s16 1078ee61a4dbSMatt Arsenault; GFX8-NEXT: v_max_f32_e32 v0, v1, v0 1079ee61a4dbSMatt Arsenault; GFX8-NEXT: s_setpc_b64 s[30:31] 1080ee61a4dbSMatt Arsenault; 1081ee61a4dbSMatt Arsenault; GFX9-LABEL: v_maximumnum_f32_s_s: 1082ee61a4dbSMatt Arsenault; GFX9: ; %bb.0: 1083ee61a4dbSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 10846548b635SShilei Tian; GFX9-NEXT: v_max_f32_e64 v0, s17, s17 10856548b635SShilei Tian; GFX9-NEXT: v_max_f32_e64 v1, s16, s16 1086ee61a4dbSMatt Arsenault; GFX9-NEXT: v_max_f32_e32 v0, v1, v0 1087ee61a4dbSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 1088ee61a4dbSMatt Arsenault; 1089ee61a4dbSMatt Arsenault; GFX10-LABEL: v_maximumnum_f32_s_s: 1090ee61a4dbSMatt Arsenault; GFX10: ; %bb.0: 1091ee61a4dbSMatt Arsenault; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 10926548b635SShilei Tian; GFX10-NEXT: v_max_f32_e64 v0, s17, s17 10936548b635SShilei Tian; GFX10-NEXT: v_max_f32_e64 v1, s16, s16 1094ee61a4dbSMatt Arsenault; GFX10-NEXT: v_max_f32_e32 v0, v1, v0 1095ee61a4dbSMatt Arsenault; GFX10-NEXT: s_setpc_b64 s[30:31] 1096ee61a4dbSMatt Arsenault; 1097ee61a4dbSMatt Arsenault; GFX11-LABEL: v_maximumnum_f32_s_s: 1098ee61a4dbSMatt Arsenault; GFX11: ; %bb.0: 1099ee61a4dbSMatt Arsenault; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1100ee61a4dbSMatt Arsenault; GFX11-NEXT: v_max_f32_e64 v0, s1, s1 1101ee61a4dbSMatt Arsenault; GFX11-NEXT: v_max_f32_e64 v1, s0, s0 1102ee61a4dbSMatt Arsenault; GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1) 1103ee61a4dbSMatt Arsenault; GFX11-NEXT: v_max_f32_e32 v0, v1, v0 1104ee61a4dbSMatt Arsenault; GFX11-NEXT: s_setpc_b64 s[30:31] 1105ee61a4dbSMatt Arsenault; 1106ee61a4dbSMatt Arsenault; GFX12-LABEL: v_maximumnum_f32_s_s: 1107ee61a4dbSMatt Arsenault; GFX12: ; %bb.0: 1108ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_loadcnt_dscnt 0x0 1109ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_expcnt 0x0 1110ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_samplecnt 0x0 1111ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_bvhcnt 0x0 1112ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_kmcnt 0x0 1113ee61a4dbSMatt Arsenault; GFX12-NEXT: v_max_num_f32_e64 v0, s1, s1 1114ee61a4dbSMatt Arsenault; GFX12-NEXT: v_max_num_f32_e64 v1, s0, s0 1115ee61a4dbSMatt Arsenault; GFX12-NEXT: s_delay_alu instid0(VALU_DEP_1) 1116ee61a4dbSMatt Arsenault; GFX12-NEXT: v_max_num_f32_e32 v0, v1, v0 1117ee61a4dbSMatt Arsenault; GFX12-NEXT: s_setpc_b64 s[30:31] 1118ee61a4dbSMatt Arsenault %result = call float @llvm.maximumnum.f32(float %x, float %y) 1119ee61a4dbSMatt Arsenault ret float %result 1120ee61a4dbSMatt Arsenault} 1121ee61a4dbSMatt Arsenault 1122ee61a4dbSMatt Arsenaultdefine double @v_maximumnum_f64_s_v(double inreg %x, double %y) { 1123ee61a4dbSMatt Arsenault; GFX8-LABEL: v_maximumnum_f64_s_v: 1124ee61a4dbSMatt Arsenault; GFX8: ; %bb.0: 1125ee61a4dbSMatt Arsenault; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1126ee61a4dbSMatt Arsenault; GFX8-NEXT: v_max_f64 v[0:1], v[0:1], v[0:1] 11276548b635SShilei Tian; GFX8-NEXT: v_max_f64 v[2:3], s[16:17], s[16:17] 1128ee61a4dbSMatt Arsenault; GFX8-NEXT: v_max_f64 v[0:1], v[2:3], v[0:1] 1129ee61a4dbSMatt Arsenault; GFX8-NEXT: s_setpc_b64 s[30:31] 1130ee61a4dbSMatt Arsenault; 1131ee61a4dbSMatt Arsenault; GFX9-LABEL: v_maximumnum_f64_s_v: 1132ee61a4dbSMatt Arsenault; GFX9: ; %bb.0: 1133ee61a4dbSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1134ee61a4dbSMatt Arsenault; GFX9-NEXT: v_max_f64 v[0:1], v[0:1], v[0:1] 11356548b635SShilei Tian; GFX9-NEXT: v_max_f64 v[2:3], s[16:17], s[16:17] 1136ee61a4dbSMatt Arsenault; GFX9-NEXT: v_max_f64 v[0:1], v[2:3], v[0:1] 1137ee61a4dbSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 1138ee61a4dbSMatt Arsenault; 1139ee61a4dbSMatt Arsenault; GFX10-LABEL: v_maximumnum_f64_s_v: 1140ee61a4dbSMatt Arsenault; GFX10: ; %bb.0: 1141ee61a4dbSMatt Arsenault; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 11426548b635SShilei Tian; GFX10-NEXT: v_max_f64 v[2:3], s[16:17], s[16:17] 1143ee61a4dbSMatt Arsenault; GFX10-NEXT: v_max_f64 v[0:1], v[0:1], v[0:1] 1144ee61a4dbSMatt Arsenault; GFX10-NEXT: v_max_f64 v[0:1], v[2:3], v[0:1] 1145ee61a4dbSMatt Arsenault; GFX10-NEXT: s_setpc_b64 s[30:31] 1146ee61a4dbSMatt Arsenault; 1147ee61a4dbSMatt Arsenault; GFX11-LABEL: v_maximumnum_f64_s_v: 1148ee61a4dbSMatt Arsenault; GFX11: ; %bb.0: 1149ee61a4dbSMatt Arsenault; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1150ee61a4dbSMatt Arsenault; GFX11-NEXT: v_max_f64 v[2:3], s[0:1], s[0:1] 1151ee61a4dbSMatt Arsenault; GFX11-NEXT: v_max_f64 v[0:1], v[0:1], v[0:1] 1152ee61a4dbSMatt Arsenault; GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1) 1153ee61a4dbSMatt Arsenault; GFX11-NEXT: v_max_f64 v[0:1], v[2:3], v[0:1] 1154ee61a4dbSMatt Arsenault; GFX11-NEXT: s_setpc_b64 s[30:31] 1155ee61a4dbSMatt Arsenault; 1156ee61a4dbSMatt Arsenault; GFX12-LABEL: v_maximumnum_f64_s_v: 1157ee61a4dbSMatt Arsenault; GFX12: ; %bb.0: 1158ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_loadcnt_dscnt 0x0 1159ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_expcnt 0x0 1160ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_samplecnt 0x0 1161ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_bvhcnt 0x0 1162ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_kmcnt 0x0 1163ee61a4dbSMatt Arsenault; GFX12-NEXT: v_max_num_f64_e64 v[2:3], s[0:1], s[0:1] 1164ee61a4dbSMatt Arsenault; GFX12-NEXT: v_max_num_f64_e32 v[0:1], v[0:1], v[0:1] 1165ee61a4dbSMatt Arsenault; GFX12-NEXT: s_delay_alu instid0(VALU_DEP_1) 1166ee61a4dbSMatt Arsenault; GFX12-NEXT: v_max_num_f64_e32 v[0:1], v[2:3], v[0:1] 1167ee61a4dbSMatt Arsenault; GFX12-NEXT: s_setpc_b64 s[30:31] 1168ee61a4dbSMatt Arsenault %result = call double @llvm.maximumnum.f64(double %x, double %y) 1169ee61a4dbSMatt Arsenault ret double %result 1170ee61a4dbSMatt Arsenault} 1171ee61a4dbSMatt Arsenault 1172ee61a4dbSMatt Arsenaultdefine double @v_maximumnum_f64_v_s(double %x, double inreg %y) { 1173ee61a4dbSMatt Arsenault; GFX8-LABEL: v_maximumnum_f64_v_s: 1174ee61a4dbSMatt Arsenault; GFX8: ; %bb.0: 1175ee61a4dbSMatt Arsenault; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 11766548b635SShilei Tian; GFX8-NEXT: v_max_f64 v[2:3], s[16:17], s[16:17] 1177ee61a4dbSMatt Arsenault; GFX8-NEXT: v_max_f64 v[0:1], v[0:1], v[0:1] 1178ee61a4dbSMatt Arsenault; GFX8-NEXT: v_max_f64 v[0:1], v[0:1], v[2:3] 1179ee61a4dbSMatt Arsenault; GFX8-NEXT: s_setpc_b64 s[30:31] 1180ee61a4dbSMatt Arsenault; 1181ee61a4dbSMatt Arsenault; GFX9-LABEL: v_maximumnum_f64_v_s: 1182ee61a4dbSMatt Arsenault; GFX9: ; %bb.0: 1183ee61a4dbSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 11846548b635SShilei Tian; GFX9-NEXT: v_max_f64 v[2:3], s[16:17], s[16:17] 1185ee61a4dbSMatt Arsenault; GFX9-NEXT: v_max_f64 v[0:1], v[0:1], v[0:1] 1186ee61a4dbSMatt Arsenault; GFX9-NEXT: v_max_f64 v[0:1], v[0:1], v[2:3] 1187ee61a4dbSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 1188ee61a4dbSMatt Arsenault; 1189ee61a4dbSMatt Arsenault; GFX10-LABEL: v_maximumnum_f64_v_s: 1190ee61a4dbSMatt Arsenault; GFX10: ; %bb.0: 1191ee61a4dbSMatt Arsenault; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 11926548b635SShilei Tian; GFX10-NEXT: v_max_f64 v[2:3], s[16:17], s[16:17] 1193ee61a4dbSMatt Arsenault; GFX10-NEXT: v_max_f64 v[0:1], v[0:1], v[0:1] 1194ee61a4dbSMatt Arsenault; GFX10-NEXT: v_max_f64 v[0:1], v[0:1], v[2:3] 1195ee61a4dbSMatt Arsenault; GFX10-NEXT: s_setpc_b64 s[30:31] 1196ee61a4dbSMatt Arsenault; 1197ee61a4dbSMatt Arsenault; GFX11-LABEL: v_maximumnum_f64_v_s: 1198ee61a4dbSMatt Arsenault; GFX11: ; %bb.0: 1199ee61a4dbSMatt Arsenault; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1200ee61a4dbSMatt Arsenault; GFX11-NEXT: v_max_f64 v[2:3], s[0:1], s[0:1] 1201ee61a4dbSMatt Arsenault; GFX11-NEXT: v_max_f64 v[0:1], v[0:1], v[0:1] 1202ee61a4dbSMatt Arsenault; GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1) 1203ee61a4dbSMatt Arsenault; GFX11-NEXT: v_max_f64 v[0:1], v[0:1], v[2:3] 1204ee61a4dbSMatt Arsenault; GFX11-NEXT: s_setpc_b64 s[30:31] 1205ee61a4dbSMatt Arsenault; 1206ee61a4dbSMatt Arsenault; GFX12-LABEL: v_maximumnum_f64_v_s: 1207ee61a4dbSMatt Arsenault; GFX12: ; %bb.0: 1208ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_loadcnt_dscnt 0x0 1209ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_expcnt 0x0 1210ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_samplecnt 0x0 1211ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_bvhcnt 0x0 1212ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_kmcnt 0x0 1213ee61a4dbSMatt Arsenault; GFX12-NEXT: v_max_num_f64_e64 v[2:3], s[0:1], s[0:1] 1214ee61a4dbSMatt Arsenault; GFX12-NEXT: v_max_num_f64_e32 v[0:1], v[0:1], v[0:1] 1215ee61a4dbSMatt Arsenault; GFX12-NEXT: s_delay_alu instid0(VALU_DEP_1) 1216ee61a4dbSMatt Arsenault; GFX12-NEXT: v_max_num_f64_e32 v[0:1], v[0:1], v[2:3] 1217ee61a4dbSMatt Arsenault; GFX12-NEXT: s_setpc_b64 s[30:31] 1218ee61a4dbSMatt Arsenault %result = call double @llvm.maximumnum.f64(double %x, double %y) 1219ee61a4dbSMatt Arsenault ret double %result 1220ee61a4dbSMatt Arsenault} 1221ee61a4dbSMatt Arsenault 1222ee61a4dbSMatt Arsenaultdefine double @v_maximumnum_f64_s_s(double inreg %x, double inreg %y) { 1223ee61a4dbSMatt Arsenault; GFX8-LABEL: v_maximumnum_f64_s_s: 1224ee61a4dbSMatt Arsenault; GFX8: ; %bb.0: 1225ee61a4dbSMatt Arsenault; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 12266548b635SShilei Tian; GFX8-NEXT: v_max_f64 v[0:1], s[18:19], s[18:19] 12276548b635SShilei Tian; GFX8-NEXT: v_max_f64 v[2:3], s[16:17], s[16:17] 1228ee61a4dbSMatt Arsenault; GFX8-NEXT: v_max_f64 v[0:1], v[2:3], v[0:1] 1229ee61a4dbSMatt Arsenault; GFX8-NEXT: s_setpc_b64 s[30:31] 1230ee61a4dbSMatt Arsenault; 1231ee61a4dbSMatt Arsenault; GFX9-LABEL: v_maximumnum_f64_s_s: 1232ee61a4dbSMatt Arsenault; GFX9: ; %bb.0: 1233ee61a4dbSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 12346548b635SShilei Tian; GFX9-NEXT: v_max_f64 v[0:1], s[18:19], s[18:19] 12356548b635SShilei Tian; GFX9-NEXT: v_max_f64 v[2:3], s[16:17], s[16:17] 1236ee61a4dbSMatt Arsenault; GFX9-NEXT: v_max_f64 v[0:1], v[2:3], v[0:1] 1237ee61a4dbSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 1238ee61a4dbSMatt Arsenault; 1239ee61a4dbSMatt Arsenault; GFX10-LABEL: v_maximumnum_f64_s_s: 1240ee61a4dbSMatt Arsenault; GFX10: ; %bb.0: 1241ee61a4dbSMatt Arsenault; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 12426548b635SShilei Tian; GFX10-NEXT: v_max_f64 v[0:1], s[18:19], s[18:19] 12436548b635SShilei Tian; GFX10-NEXT: v_max_f64 v[2:3], s[16:17], s[16:17] 1244ee61a4dbSMatt Arsenault; GFX10-NEXT: v_max_f64 v[0:1], v[2:3], v[0:1] 1245ee61a4dbSMatt Arsenault; GFX10-NEXT: s_setpc_b64 s[30:31] 1246ee61a4dbSMatt Arsenault; 1247ee61a4dbSMatt Arsenault; GFX11-LABEL: v_maximumnum_f64_s_s: 1248ee61a4dbSMatt Arsenault; GFX11: ; %bb.0: 1249ee61a4dbSMatt Arsenault; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1250ee61a4dbSMatt Arsenault; GFX11-NEXT: v_max_f64 v[0:1], s[2:3], s[2:3] 1251ee61a4dbSMatt Arsenault; GFX11-NEXT: v_max_f64 v[2:3], s[0:1], s[0:1] 1252ee61a4dbSMatt Arsenault; GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1) 1253ee61a4dbSMatt Arsenault; GFX11-NEXT: v_max_f64 v[0:1], v[2:3], v[0:1] 1254ee61a4dbSMatt Arsenault; GFX11-NEXT: s_setpc_b64 s[30:31] 1255ee61a4dbSMatt Arsenault; 1256ee61a4dbSMatt Arsenault; GFX12-LABEL: v_maximumnum_f64_s_s: 1257ee61a4dbSMatt Arsenault; GFX12: ; %bb.0: 1258ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_loadcnt_dscnt 0x0 1259ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_expcnt 0x0 1260ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_samplecnt 0x0 1261ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_bvhcnt 0x0 1262ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_kmcnt 0x0 1263ee61a4dbSMatt Arsenault; GFX12-NEXT: v_max_num_f64_e64 v[0:1], s[2:3], s[2:3] 1264ee61a4dbSMatt Arsenault; GFX12-NEXT: v_max_num_f64_e64 v[2:3], s[0:1], s[0:1] 1265ee61a4dbSMatt Arsenault; GFX12-NEXT: s_delay_alu instid0(VALU_DEP_1) 1266ee61a4dbSMatt Arsenault; GFX12-NEXT: v_max_num_f64_e32 v[0:1], v[2:3], v[0:1] 1267ee61a4dbSMatt Arsenault; GFX12-NEXT: s_setpc_b64 s[30:31] 1268ee61a4dbSMatt Arsenault %result = call double @llvm.maximumnum.f64(double %x, double %y) 1269ee61a4dbSMatt Arsenault ret double %result 1270ee61a4dbSMatt Arsenault} 1271ee61a4dbSMatt Arsenault 1272ee61a4dbSMatt Arsenaultdefine float @v_maximumnum_f32_fabs_rhs(float %x, float %y) { 1273ee61a4dbSMatt Arsenault; GFX8-LABEL: v_maximumnum_f32_fabs_rhs: 1274ee61a4dbSMatt Arsenault; GFX8: ; %bb.0: 1275ee61a4dbSMatt Arsenault; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1276ee61a4dbSMatt Arsenault; GFX8-NEXT: v_mul_f32_e64 v1, 1.0, |v1| 1277ee61a4dbSMatt Arsenault; GFX8-NEXT: v_mul_f32_e32 v0, 1.0, v0 1278ee61a4dbSMatt Arsenault; GFX8-NEXT: v_max_f32_e32 v0, v0, v1 1279ee61a4dbSMatt Arsenault; GFX8-NEXT: s_setpc_b64 s[30:31] 1280ee61a4dbSMatt Arsenault; 1281ee61a4dbSMatt Arsenault; GFX9-LABEL: v_maximumnum_f32_fabs_rhs: 1282ee61a4dbSMatt Arsenault; GFX9: ; %bb.0: 1283ee61a4dbSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1284ee61a4dbSMatt Arsenault; GFX9-NEXT: v_max_f32_e64 v1, |v1|, |v1| 1285ee61a4dbSMatt Arsenault; GFX9-NEXT: v_max_f32_e32 v0, v0, v0 1286ee61a4dbSMatt Arsenault; GFX9-NEXT: v_max_f32_e32 v0, v0, v1 1287ee61a4dbSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 1288ee61a4dbSMatt Arsenault; 1289ee61a4dbSMatt Arsenault; GFX10-LABEL: v_maximumnum_f32_fabs_rhs: 1290ee61a4dbSMatt Arsenault; GFX10: ; %bb.0: 1291ee61a4dbSMatt Arsenault; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1292ee61a4dbSMatt Arsenault; GFX10-NEXT: v_max_f32_e64 v1, |v1|, |v1| 1293ee61a4dbSMatt Arsenault; GFX10-NEXT: v_max_f32_e32 v0, v0, v0 1294ee61a4dbSMatt Arsenault; GFX10-NEXT: v_max_f32_e32 v0, v0, v1 1295ee61a4dbSMatt Arsenault; GFX10-NEXT: s_setpc_b64 s[30:31] 1296ee61a4dbSMatt Arsenault; 1297ee61a4dbSMatt Arsenault; GFX11-LABEL: v_maximumnum_f32_fabs_rhs: 1298ee61a4dbSMatt Arsenault; GFX11: ; %bb.0: 1299ee61a4dbSMatt Arsenault; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1300ee61a4dbSMatt Arsenault; GFX11-NEXT: v_max_f32_e64 v1, |v1|, |v1| 1301ee61a4dbSMatt Arsenault; GFX11-NEXT: v_max_f32_e32 v0, v0, v0 1302ee61a4dbSMatt Arsenault; GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1) 1303ee61a4dbSMatt Arsenault; GFX11-NEXT: v_max_f32_e32 v0, v0, v1 1304ee61a4dbSMatt Arsenault; GFX11-NEXT: s_setpc_b64 s[30:31] 1305ee61a4dbSMatt Arsenault; 1306ee61a4dbSMatt Arsenault; GFX12-LABEL: v_maximumnum_f32_fabs_rhs: 1307ee61a4dbSMatt Arsenault; GFX12: ; %bb.0: 1308ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_loadcnt_dscnt 0x0 1309ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_expcnt 0x0 1310ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_samplecnt 0x0 1311ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_bvhcnt 0x0 1312ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_kmcnt 0x0 1313ee61a4dbSMatt Arsenault; GFX12-NEXT: v_max_num_f32_e64 v1, |v1|, |v1| 1314ee61a4dbSMatt Arsenault; GFX12-NEXT: v_max_num_f32_e32 v0, v0, v0 1315ee61a4dbSMatt Arsenault; GFX12-NEXT: s_delay_alu instid0(VALU_DEP_1) 1316ee61a4dbSMatt Arsenault; GFX12-NEXT: v_max_num_f32_e32 v0, v0, v1 1317ee61a4dbSMatt Arsenault; GFX12-NEXT: s_setpc_b64 s[30:31] 1318ee61a4dbSMatt Arsenault %fabs.y = call float @llvm.fabs.f32(float %y) 1319ee61a4dbSMatt Arsenault %result = call float @llvm.maximumnum.f32(float %x, float %fabs.y) 1320ee61a4dbSMatt Arsenault ret float %result 1321ee61a4dbSMatt Arsenault} 1322ee61a4dbSMatt Arsenault 1323ee61a4dbSMatt Arsenaultdefine float @v_maximumnum_f32_fneg_fabs_rhs(float %x, float %y) { 1324ee61a4dbSMatt Arsenault; GFX8-LABEL: v_maximumnum_f32_fneg_fabs_rhs: 1325ee61a4dbSMatt Arsenault; GFX8: ; %bb.0: 1326ee61a4dbSMatt Arsenault; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1327ee61a4dbSMatt Arsenault; GFX8-NEXT: v_mul_f32_e64 v1, -1.0, |v1| 1328ee61a4dbSMatt Arsenault; GFX8-NEXT: v_mul_f32_e32 v0, 1.0, v0 1329ee61a4dbSMatt Arsenault; GFX8-NEXT: v_max_f32_e32 v0, v0, v1 1330ee61a4dbSMatt Arsenault; GFX8-NEXT: s_setpc_b64 s[30:31] 1331ee61a4dbSMatt Arsenault; 1332ee61a4dbSMatt Arsenault; GFX9-LABEL: v_maximumnum_f32_fneg_fabs_rhs: 1333ee61a4dbSMatt Arsenault; GFX9: ; %bb.0: 1334ee61a4dbSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1335ee61a4dbSMatt Arsenault; GFX9-NEXT: v_max_f32_e64 v1, -|v1|, -|v1| 1336ee61a4dbSMatt Arsenault; GFX9-NEXT: v_max_f32_e32 v0, v0, v0 1337ee61a4dbSMatt Arsenault; GFX9-NEXT: v_max_f32_e32 v0, v0, v1 1338ee61a4dbSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 1339ee61a4dbSMatt Arsenault; 1340ee61a4dbSMatt Arsenault; GFX10-LABEL: v_maximumnum_f32_fneg_fabs_rhs: 1341ee61a4dbSMatt Arsenault; GFX10: ; %bb.0: 1342ee61a4dbSMatt Arsenault; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1343ee61a4dbSMatt Arsenault; GFX10-NEXT: v_max_f32_e64 v1, -|v1|, -|v1| 1344ee61a4dbSMatt Arsenault; GFX10-NEXT: v_max_f32_e32 v0, v0, v0 1345ee61a4dbSMatt Arsenault; GFX10-NEXT: v_max_f32_e32 v0, v0, v1 1346ee61a4dbSMatt Arsenault; GFX10-NEXT: s_setpc_b64 s[30:31] 1347ee61a4dbSMatt Arsenault; 1348ee61a4dbSMatt Arsenault; GFX11-LABEL: v_maximumnum_f32_fneg_fabs_rhs: 1349ee61a4dbSMatt Arsenault; GFX11: ; %bb.0: 1350ee61a4dbSMatt Arsenault; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1351ee61a4dbSMatt Arsenault; GFX11-NEXT: v_max_f32_e64 v1, -|v1|, -|v1| 1352ee61a4dbSMatt Arsenault; GFX11-NEXT: v_max_f32_e32 v0, v0, v0 1353ee61a4dbSMatt Arsenault; GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1) 1354ee61a4dbSMatt Arsenault; GFX11-NEXT: v_max_f32_e32 v0, v0, v1 1355ee61a4dbSMatt Arsenault; GFX11-NEXT: s_setpc_b64 s[30:31] 1356ee61a4dbSMatt Arsenault; 1357ee61a4dbSMatt Arsenault; GFX12-LABEL: v_maximumnum_f32_fneg_fabs_rhs: 1358ee61a4dbSMatt Arsenault; GFX12: ; %bb.0: 1359ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_loadcnt_dscnt 0x0 1360ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_expcnt 0x0 1361ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_samplecnt 0x0 1362ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_bvhcnt 0x0 1363ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_kmcnt 0x0 1364ee61a4dbSMatt Arsenault; GFX12-NEXT: v_max_num_f32_e64 v1, -|v1|, -|v1| 1365ee61a4dbSMatt Arsenault; GFX12-NEXT: v_max_num_f32_e32 v0, v0, v0 1366ee61a4dbSMatt Arsenault; GFX12-NEXT: s_delay_alu instid0(VALU_DEP_1) 1367ee61a4dbSMatt Arsenault; GFX12-NEXT: v_max_num_f32_e32 v0, v0, v1 1368ee61a4dbSMatt Arsenault; GFX12-NEXT: s_setpc_b64 s[30:31] 1369ee61a4dbSMatt Arsenault %fabs.y = call float @llvm.fabs.f32(float %y) 1370ee61a4dbSMatt Arsenault %fneg.fabs.y = fneg float %fabs.y 1371ee61a4dbSMatt Arsenault %result = call float @llvm.maximumnum.f32(float %x, float %fneg.fabs.y) 1372ee61a4dbSMatt Arsenault ret float %result 1373ee61a4dbSMatt Arsenault} 1374ee61a4dbSMatt Arsenault 1375ee61a4dbSMatt Arsenaultdefine float @v_maximumnum_f32_fabs(float %x, float %y) { 1376ee61a4dbSMatt Arsenault; GFX8-LABEL: v_maximumnum_f32_fabs: 1377ee61a4dbSMatt Arsenault; GFX8: ; %bb.0: 1378ee61a4dbSMatt Arsenault; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1379ee61a4dbSMatt Arsenault; GFX8-NEXT: v_mul_f32_e64 v1, 1.0, |v1| 1380ee61a4dbSMatt Arsenault; GFX8-NEXT: v_mul_f32_e64 v0, 1.0, |v0| 1381ee61a4dbSMatt Arsenault; GFX8-NEXT: v_max_f32_e32 v0, v0, v1 1382ee61a4dbSMatt Arsenault; GFX8-NEXT: s_setpc_b64 s[30:31] 1383ee61a4dbSMatt Arsenault; 1384ee61a4dbSMatt Arsenault; GFX9-LABEL: v_maximumnum_f32_fabs: 1385ee61a4dbSMatt Arsenault; GFX9: ; %bb.0: 1386ee61a4dbSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1387ee61a4dbSMatt Arsenault; GFX9-NEXT: v_max_f32_e64 v1, |v1|, |v1| 1388ee61a4dbSMatt Arsenault; GFX9-NEXT: v_max_f32_e64 v0, |v0|, |v0| 1389ee61a4dbSMatt Arsenault; GFX9-NEXT: v_max_f32_e32 v0, v0, v1 1390ee61a4dbSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 1391ee61a4dbSMatt Arsenault; 1392ee61a4dbSMatt Arsenault; GFX10-LABEL: v_maximumnum_f32_fabs: 1393ee61a4dbSMatt Arsenault; GFX10: ; %bb.0: 1394ee61a4dbSMatt Arsenault; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1395ee61a4dbSMatt Arsenault; GFX10-NEXT: v_max_f32_e64 v1, |v1|, |v1| 1396ee61a4dbSMatt Arsenault; GFX10-NEXT: v_max_f32_e64 v0, |v0|, |v0| 1397ee61a4dbSMatt Arsenault; GFX10-NEXT: v_max_f32_e32 v0, v0, v1 1398ee61a4dbSMatt Arsenault; GFX10-NEXT: s_setpc_b64 s[30:31] 1399ee61a4dbSMatt Arsenault; 1400ee61a4dbSMatt Arsenault; GFX11-LABEL: v_maximumnum_f32_fabs: 1401ee61a4dbSMatt Arsenault; GFX11: ; %bb.0: 1402ee61a4dbSMatt Arsenault; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1403ee61a4dbSMatt Arsenault; GFX11-NEXT: v_max_f32_e64 v1, |v1|, |v1| 1404ee61a4dbSMatt Arsenault; GFX11-NEXT: v_max_f32_e64 v0, |v0|, |v0| 1405ee61a4dbSMatt Arsenault; GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1) 1406ee61a4dbSMatt Arsenault; GFX11-NEXT: v_max_f32_e32 v0, v0, v1 1407ee61a4dbSMatt Arsenault; GFX11-NEXT: s_setpc_b64 s[30:31] 1408ee61a4dbSMatt Arsenault; 1409ee61a4dbSMatt Arsenault; GFX12-LABEL: v_maximumnum_f32_fabs: 1410ee61a4dbSMatt Arsenault; GFX12: ; %bb.0: 1411ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_loadcnt_dscnt 0x0 1412ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_expcnt 0x0 1413ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_samplecnt 0x0 1414ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_bvhcnt 0x0 1415ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_kmcnt 0x0 1416ee61a4dbSMatt Arsenault; GFX12-NEXT: v_max_num_f32_e64 v1, |v1|, |v1| 1417ee61a4dbSMatt Arsenault; GFX12-NEXT: v_max_num_f32_e64 v0, |v0|, |v0| 1418ee61a4dbSMatt Arsenault; GFX12-NEXT: s_delay_alu instid0(VALU_DEP_1) 1419ee61a4dbSMatt Arsenault; GFX12-NEXT: v_max_num_f32_e32 v0, v0, v1 1420ee61a4dbSMatt Arsenault; GFX12-NEXT: s_setpc_b64 s[30:31] 1421ee61a4dbSMatt Arsenault %fabs.x = call float @llvm.fabs.f32(float %x) 1422ee61a4dbSMatt Arsenault %fabs.y = call float @llvm.fabs.f32(float %y) 1423ee61a4dbSMatt Arsenault %result = call float @llvm.maximumnum.f32(float %fabs.x, float %fabs.y) 1424ee61a4dbSMatt Arsenault ret float %result 1425ee61a4dbSMatt Arsenault} 1426ee61a4dbSMatt Arsenault 1427ee61a4dbSMatt Arsenaultdefine float @v_maximumnum_f32_fneg(float %x, float %y) { 1428ee61a4dbSMatt Arsenault; GFX8-LABEL: v_maximumnum_f32_fneg: 1429ee61a4dbSMatt Arsenault; GFX8: ; %bb.0: 1430ee61a4dbSMatt Arsenault; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1431ee61a4dbSMatt Arsenault; GFX8-NEXT: v_mul_f32_e32 v1, -1.0, v1 1432ee61a4dbSMatt Arsenault; GFX8-NEXT: v_mul_f32_e32 v0, -1.0, v0 1433ee61a4dbSMatt Arsenault; GFX8-NEXT: v_max_f32_e32 v0, v0, v1 1434ee61a4dbSMatt Arsenault; GFX8-NEXT: s_setpc_b64 s[30:31] 1435ee61a4dbSMatt Arsenault; 1436ee61a4dbSMatt Arsenault; GFX9-LABEL: v_maximumnum_f32_fneg: 1437ee61a4dbSMatt Arsenault; GFX9: ; %bb.0: 1438ee61a4dbSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1439ee61a4dbSMatt Arsenault; GFX9-NEXT: v_max_f32_e64 v1, -v1, -v1 1440ee61a4dbSMatt Arsenault; GFX9-NEXT: v_max_f32_e64 v0, -v0, -v0 1441ee61a4dbSMatt Arsenault; GFX9-NEXT: v_max_f32_e32 v0, v0, v1 1442ee61a4dbSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 1443ee61a4dbSMatt Arsenault; 1444ee61a4dbSMatt Arsenault; GFX10-LABEL: v_maximumnum_f32_fneg: 1445ee61a4dbSMatt Arsenault; GFX10: ; %bb.0: 1446ee61a4dbSMatt Arsenault; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1447ee61a4dbSMatt Arsenault; GFX10-NEXT: v_max_f32_e64 v1, -v1, -v1 1448ee61a4dbSMatt Arsenault; GFX10-NEXT: v_max_f32_e64 v0, -v0, -v0 1449ee61a4dbSMatt Arsenault; GFX10-NEXT: v_max_f32_e32 v0, v0, v1 1450ee61a4dbSMatt Arsenault; GFX10-NEXT: s_setpc_b64 s[30:31] 1451ee61a4dbSMatt Arsenault; 1452ee61a4dbSMatt Arsenault; GFX11-LABEL: v_maximumnum_f32_fneg: 1453ee61a4dbSMatt Arsenault; GFX11: ; %bb.0: 1454ee61a4dbSMatt Arsenault; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1455ee61a4dbSMatt Arsenault; GFX11-NEXT: v_max_f32_e64 v1, -v1, -v1 1456ee61a4dbSMatt Arsenault; GFX11-NEXT: v_max_f32_e64 v0, -v0, -v0 1457ee61a4dbSMatt Arsenault; GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1) 1458ee61a4dbSMatt Arsenault; GFX11-NEXT: v_max_f32_e32 v0, v0, v1 1459ee61a4dbSMatt Arsenault; GFX11-NEXT: s_setpc_b64 s[30:31] 1460ee61a4dbSMatt Arsenault; 1461ee61a4dbSMatt Arsenault; GFX12-LABEL: v_maximumnum_f32_fneg: 1462ee61a4dbSMatt Arsenault; GFX12: ; %bb.0: 1463ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_loadcnt_dscnt 0x0 1464ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_expcnt 0x0 1465ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_samplecnt 0x0 1466ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_bvhcnt 0x0 1467ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_kmcnt 0x0 1468ee61a4dbSMatt Arsenault; GFX12-NEXT: v_max_num_f32_e64 v1, -v1, -v1 1469ee61a4dbSMatt Arsenault; GFX12-NEXT: v_max_num_f32_e64 v0, -v0, -v0 1470ee61a4dbSMatt Arsenault; GFX12-NEXT: s_delay_alu instid0(VALU_DEP_1) 1471ee61a4dbSMatt Arsenault; GFX12-NEXT: v_max_num_f32_e32 v0, v0, v1 1472ee61a4dbSMatt Arsenault; GFX12-NEXT: s_setpc_b64 s[30:31] 1473ee61a4dbSMatt Arsenault %fneg.x = fneg float %x 1474ee61a4dbSMatt Arsenault %fneg.y = fneg float %y 1475ee61a4dbSMatt Arsenault %result = call float @llvm.maximumnum.f32(float %fneg.x, float %fneg.y) 1476ee61a4dbSMatt Arsenault ret float %result 1477ee61a4dbSMatt Arsenault} 1478ee61a4dbSMatt Arsenault 1479ee61a4dbSMatt Arsenaultdefine half @v_maximumnum_f16_fabs_rhs(half %x, half %y) { 1480ee61a4dbSMatt Arsenault; GFX8-LABEL: v_maximumnum_f16_fabs_rhs: 1481ee61a4dbSMatt Arsenault; GFX8: ; %bb.0: 1482ee61a4dbSMatt Arsenault; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1483ee61a4dbSMatt Arsenault; GFX8-NEXT: v_max_f16_e64 v1, |v1|, |v1| 1484ee61a4dbSMatt Arsenault; GFX8-NEXT: v_max_f16_e32 v0, v0, v0 1485ee61a4dbSMatt Arsenault; GFX8-NEXT: v_max_f16_e32 v0, v0, v1 1486ee61a4dbSMatt Arsenault; GFX8-NEXT: s_setpc_b64 s[30:31] 1487ee61a4dbSMatt Arsenault; 1488ee61a4dbSMatt Arsenault; GFX9-LABEL: v_maximumnum_f16_fabs_rhs: 1489ee61a4dbSMatt Arsenault; GFX9: ; %bb.0: 1490ee61a4dbSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1491ee61a4dbSMatt Arsenault; GFX9-NEXT: v_max_f16_e64 v1, |v1|, |v1| 1492ee61a4dbSMatt Arsenault; GFX9-NEXT: v_max_f16_e32 v0, v0, v0 1493ee61a4dbSMatt Arsenault; GFX9-NEXT: v_max_f16_e32 v0, v0, v1 1494ee61a4dbSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 1495ee61a4dbSMatt Arsenault; 1496ee61a4dbSMatt Arsenault; GFX10-LABEL: v_maximumnum_f16_fabs_rhs: 1497ee61a4dbSMatt Arsenault; GFX10: ; %bb.0: 1498ee61a4dbSMatt Arsenault; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1499ee61a4dbSMatt Arsenault; GFX10-NEXT: v_max_f16_e64 v1, |v1|, |v1| 1500ee61a4dbSMatt Arsenault; GFX10-NEXT: v_max_f16_e32 v0, v0, v0 1501ee61a4dbSMatt Arsenault; GFX10-NEXT: v_max_f16_e32 v0, v0, v1 1502ee61a4dbSMatt Arsenault; GFX10-NEXT: s_setpc_b64 s[30:31] 1503ee61a4dbSMatt Arsenault; 1504ee61a4dbSMatt Arsenault; GFX11-LABEL: v_maximumnum_f16_fabs_rhs: 1505ee61a4dbSMatt Arsenault; GFX11: ; %bb.0: 1506ee61a4dbSMatt Arsenault; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1507ee61a4dbSMatt Arsenault; GFX11-NEXT: v_max_f16_e64 v1, |v1|, |v1| 1508ee61a4dbSMatt Arsenault; GFX11-NEXT: v_max_f16_e32 v0, v0, v0 1509ee61a4dbSMatt Arsenault; GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1) 1510ee61a4dbSMatt Arsenault; GFX11-NEXT: v_max_f16_e32 v0, v0, v1 1511ee61a4dbSMatt Arsenault; GFX11-NEXT: s_setpc_b64 s[30:31] 1512ee61a4dbSMatt Arsenault; 1513ee61a4dbSMatt Arsenault; GFX12-LABEL: v_maximumnum_f16_fabs_rhs: 1514ee61a4dbSMatt Arsenault; GFX12: ; %bb.0: 1515ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_loadcnt_dscnt 0x0 1516ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_expcnt 0x0 1517ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_samplecnt 0x0 1518ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_bvhcnt 0x0 1519ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_kmcnt 0x0 1520ee61a4dbSMatt Arsenault; GFX12-NEXT: v_max_num_f16_e64 v1, |v1|, |v1| 1521ee61a4dbSMatt Arsenault; GFX12-NEXT: v_max_num_f16_e32 v0, v0, v0 1522ee61a4dbSMatt Arsenault; GFX12-NEXT: s_delay_alu instid0(VALU_DEP_1) 1523ee61a4dbSMatt Arsenault; GFX12-NEXT: v_max_num_f16_e32 v0, v0, v1 1524ee61a4dbSMatt Arsenault; GFX12-NEXT: s_setpc_b64 s[30:31] 1525ee61a4dbSMatt Arsenault %fabs.y = call half @llvm.fabs.f16(half %y) 1526ee61a4dbSMatt Arsenault %result = call half @llvm.maximumnum.f16(half %x, half %fabs.y) 1527ee61a4dbSMatt Arsenault ret half %result 1528ee61a4dbSMatt Arsenault} 1529ee61a4dbSMatt Arsenault 1530ee61a4dbSMatt Arsenaultdefine half @v_maximumnum_f16_fneg_fabs_rhs(half %x, half %y) { 1531ee61a4dbSMatt Arsenault; GFX8-LABEL: v_maximumnum_f16_fneg_fabs_rhs: 1532ee61a4dbSMatt Arsenault; GFX8: ; %bb.0: 1533ee61a4dbSMatt Arsenault; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1534ee61a4dbSMatt Arsenault; GFX8-NEXT: v_max_f16_e64 v1, -|v1|, -|v1| 1535ee61a4dbSMatt Arsenault; GFX8-NEXT: v_max_f16_e32 v0, v0, v0 1536ee61a4dbSMatt Arsenault; GFX8-NEXT: v_max_f16_e32 v0, v0, v1 1537ee61a4dbSMatt Arsenault; GFX8-NEXT: s_setpc_b64 s[30:31] 1538ee61a4dbSMatt Arsenault; 1539ee61a4dbSMatt Arsenault; GFX9-LABEL: v_maximumnum_f16_fneg_fabs_rhs: 1540ee61a4dbSMatt Arsenault; GFX9: ; %bb.0: 1541ee61a4dbSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1542ee61a4dbSMatt Arsenault; GFX9-NEXT: v_max_f16_e64 v1, -|v1|, -|v1| 1543ee61a4dbSMatt Arsenault; GFX9-NEXT: v_max_f16_e32 v0, v0, v0 1544ee61a4dbSMatt Arsenault; GFX9-NEXT: v_max_f16_e32 v0, v0, v1 1545ee61a4dbSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 1546ee61a4dbSMatt Arsenault; 1547ee61a4dbSMatt Arsenault; GFX10-LABEL: v_maximumnum_f16_fneg_fabs_rhs: 1548ee61a4dbSMatt Arsenault; GFX10: ; %bb.0: 1549ee61a4dbSMatt Arsenault; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1550ee61a4dbSMatt Arsenault; GFX10-NEXT: v_max_f16_e64 v1, -|v1|, -|v1| 1551ee61a4dbSMatt Arsenault; GFX10-NEXT: v_max_f16_e32 v0, v0, v0 1552ee61a4dbSMatt Arsenault; GFX10-NEXT: v_max_f16_e32 v0, v0, v1 1553ee61a4dbSMatt Arsenault; GFX10-NEXT: s_setpc_b64 s[30:31] 1554ee61a4dbSMatt Arsenault; 1555ee61a4dbSMatt Arsenault; GFX11-LABEL: v_maximumnum_f16_fneg_fabs_rhs: 1556ee61a4dbSMatt Arsenault; GFX11: ; %bb.0: 1557ee61a4dbSMatt Arsenault; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1558ee61a4dbSMatt Arsenault; GFX11-NEXT: v_max_f16_e64 v1, -|v1|, -|v1| 1559ee61a4dbSMatt Arsenault; GFX11-NEXT: v_max_f16_e32 v0, v0, v0 1560ee61a4dbSMatt Arsenault; GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1) 1561ee61a4dbSMatt Arsenault; GFX11-NEXT: v_max_f16_e32 v0, v0, v1 1562ee61a4dbSMatt Arsenault; GFX11-NEXT: s_setpc_b64 s[30:31] 1563ee61a4dbSMatt Arsenault; 1564ee61a4dbSMatt Arsenault; GFX12-LABEL: v_maximumnum_f16_fneg_fabs_rhs: 1565ee61a4dbSMatt Arsenault; GFX12: ; %bb.0: 1566ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_loadcnt_dscnt 0x0 1567ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_expcnt 0x0 1568ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_samplecnt 0x0 1569ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_bvhcnt 0x0 1570ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_kmcnt 0x0 1571ee61a4dbSMatt Arsenault; GFX12-NEXT: v_max_num_f16_e64 v1, -|v1|, -|v1| 1572ee61a4dbSMatt Arsenault; GFX12-NEXT: v_max_num_f16_e32 v0, v0, v0 1573ee61a4dbSMatt Arsenault; GFX12-NEXT: s_delay_alu instid0(VALU_DEP_1) 1574ee61a4dbSMatt Arsenault; GFX12-NEXT: v_max_num_f16_e32 v0, v0, v1 1575ee61a4dbSMatt Arsenault; GFX12-NEXT: s_setpc_b64 s[30:31] 1576ee61a4dbSMatt Arsenault %fabs.y = call half @llvm.fabs.f16(half %y) 1577ee61a4dbSMatt Arsenault %fneg.fabs.y = fneg half %fabs.y 1578ee61a4dbSMatt Arsenault %result = call half @llvm.maximumnum.f16(half %x, half %fneg.fabs.y) 1579ee61a4dbSMatt Arsenault ret half %result 1580ee61a4dbSMatt Arsenault} 1581ee61a4dbSMatt Arsenault 1582ee61a4dbSMatt Arsenaultdefine half @v_maximumnum_f16_fabs(half %x, half %y) { 1583ee61a4dbSMatt Arsenault; GFX8-LABEL: v_maximumnum_f16_fabs: 1584ee61a4dbSMatt Arsenault; GFX8: ; %bb.0: 1585ee61a4dbSMatt Arsenault; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1586ee61a4dbSMatt Arsenault; GFX8-NEXT: v_max_f16_e64 v1, |v1|, |v1| 1587ee61a4dbSMatt Arsenault; GFX8-NEXT: v_max_f16_e64 v0, |v0|, |v0| 1588ee61a4dbSMatt Arsenault; GFX8-NEXT: v_max_f16_e32 v0, v0, v1 1589ee61a4dbSMatt Arsenault; GFX8-NEXT: s_setpc_b64 s[30:31] 1590ee61a4dbSMatt Arsenault; 1591ee61a4dbSMatt Arsenault; GFX9-LABEL: v_maximumnum_f16_fabs: 1592ee61a4dbSMatt Arsenault; GFX9: ; %bb.0: 1593ee61a4dbSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1594ee61a4dbSMatt Arsenault; GFX9-NEXT: v_max_f16_e64 v1, |v1|, |v1| 1595ee61a4dbSMatt Arsenault; GFX9-NEXT: v_max_f16_e64 v0, |v0|, |v0| 1596ee61a4dbSMatt Arsenault; GFX9-NEXT: v_max_f16_e32 v0, v0, v1 1597ee61a4dbSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 1598ee61a4dbSMatt Arsenault; 1599ee61a4dbSMatt Arsenault; GFX10-LABEL: v_maximumnum_f16_fabs: 1600ee61a4dbSMatt Arsenault; GFX10: ; %bb.0: 1601ee61a4dbSMatt Arsenault; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1602ee61a4dbSMatt Arsenault; GFX10-NEXT: v_max_f16_e64 v1, |v1|, |v1| 1603ee61a4dbSMatt Arsenault; GFX10-NEXT: v_max_f16_e64 v0, |v0|, |v0| 1604ee61a4dbSMatt Arsenault; GFX10-NEXT: v_max_f16_e32 v0, v0, v1 1605ee61a4dbSMatt Arsenault; GFX10-NEXT: s_setpc_b64 s[30:31] 1606ee61a4dbSMatt Arsenault; 1607ee61a4dbSMatt Arsenault; GFX11-LABEL: v_maximumnum_f16_fabs: 1608ee61a4dbSMatt Arsenault; GFX11: ; %bb.0: 1609ee61a4dbSMatt Arsenault; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1610ee61a4dbSMatt Arsenault; GFX11-NEXT: v_max_f16_e64 v1, |v1|, |v1| 1611ee61a4dbSMatt Arsenault; GFX11-NEXT: v_max_f16_e64 v0, |v0|, |v0| 1612ee61a4dbSMatt Arsenault; GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1) 1613ee61a4dbSMatt Arsenault; GFX11-NEXT: v_max_f16_e32 v0, v0, v1 1614ee61a4dbSMatt Arsenault; GFX11-NEXT: s_setpc_b64 s[30:31] 1615ee61a4dbSMatt Arsenault; 1616ee61a4dbSMatt Arsenault; GFX12-LABEL: v_maximumnum_f16_fabs: 1617ee61a4dbSMatt Arsenault; GFX12: ; %bb.0: 1618ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_loadcnt_dscnt 0x0 1619ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_expcnt 0x0 1620ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_samplecnt 0x0 1621ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_bvhcnt 0x0 1622ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_kmcnt 0x0 1623ee61a4dbSMatt Arsenault; GFX12-NEXT: v_max_num_f16_e64 v1, |v1|, |v1| 1624ee61a4dbSMatt Arsenault; GFX12-NEXT: v_max_num_f16_e64 v0, |v0|, |v0| 1625ee61a4dbSMatt Arsenault; GFX12-NEXT: s_delay_alu instid0(VALU_DEP_1) 1626ee61a4dbSMatt Arsenault; GFX12-NEXT: v_max_num_f16_e32 v0, v0, v1 1627ee61a4dbSMatt Arsenault; GFX12-NEXT: s_setpc_b64 s[30:31] 1628ee61a4dbSMatt Arsenault %fabs.x = call half @llvm.fabs.f16(half %x) 1629ee61a4dbSMatt Arsenault %fabs.y = call half @llvm.fabs.f16(half %y) 1630ee61a4dbSMatt Arsenault %result = call half @llvm.maximumnum.f16(half %fabs.x, half %fabs.y) 1631ee61a4dbSMatt Arsenault ret half %result 1632ee61a4dbSMatt Arsenault} 1633ee61a4dbSMatt Arsenault 1634ee61a4dbSMatt Arsenaultdefine half @v_maximumnum_f16_fneg(half %x, half %y) { 1635ee61a4dbSMatt Arsenault; GFX8-LABEL: v_maximumnum_f16_fneg: 1636ee61a4dbSMatt Arsenault; GFX8: ; %bb.0: 1637ee61a4dbSMatt Arsenault; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1638ee61a4dbSMatt Arsenault; GFX8-NEXT: v_max_f16_e64 v1, -v1, -v1 1639ee61a4dbSMatt Arsenault; GFX8-NEXT: v_max_f16_e64 v0, -v0, -v0 1640ee61a4dbSMatt Arsenault; GFX8-NEXT: v_max_f16_e32 v0, v0, v1 1641ee61a4dbSMatt Arsenault; GFX8-NEXT: s_setpc_b64 s[30:31] 1642ee61a4dbSMatt Arsenault; 1643ee61a4dbSMatt Arsenault; GFX9-LABEL: v_maximumnum_f16_fneg: 1644ee61a4dbSMatt Arsenault; GFX9: ; %bb.0: 1645ee61a4dbSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1646ee61a4dbSMatt Arsenault; GFX9-NEXT: v_max_f16_e64 v1, -v1, -v1 1647ee61a4dbSMatt Arsenault; GFX9-NEXT: v_max_f16_e64 v0, -v0, -v0 1648ee61a4dbSMatt Arsenault; GFX9-NEXT: v_max_f16_e32 v0, v0, v1 1649ee61a4dbSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 1650ee61a4dbSMatt Arsenault; 1651ee61a4dbSMatt Arsenault; GFX10-LABEL: v_maximumnum_f16_fneg: 1652ee61a4dbSMatt Arsenault; GFX10: ; %bb.0: 1653ee61a4dbSMatt Arsenault; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1654ee61a4dbSMatt Arsenault; GFX10-NEXT: v_max_f16_e64 v1, -v1, -v1 1655ee61a4dbSMatt Arsenault; GFX10-NEXT: v_max_f16_e64 v0, -v0, -v0 1656ee61a4dbSMatt Arsenault; GFX10-NEXT: v_max_f16_e32 v0, v0, v1 1657ee61a4dbSMatt Arsenault; GFX10-NEXT: s_setpc_b64 s[30:31] 1658ee61a4dbSMatt Arsenault; 1659ee61a4dbSMatt Arsenault; GFX11-LABEL: v_maximumnum_f16_fneg: 1660ee61a4dbSMatt Arsenault; GFX11: ; %bb.0: 1661ee61a4dbSMatt Arsenault; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1662ee61a4dbSMatt Arsenault; GFX11-NEXT: v_max_f16_e64 v1, -v1, -v1 1663ee61a4dbSMatt Arsenault; GFX11-NEXT: v_max_f16_e64 v0, -v0, -v0 1664ee61a4dbSMatt Arsenault; GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1) 1665ee61a4dbSMatt Arsenault; GFX11-NEXT: v_max_f16_e32 v0, v0, v1 1666ee61a4dbSMatt Arsenault; GFX11-NEXT: s_setpc_b64 s[30:31] 1667ee61a4dbSMatt Arsenault; 1668ee61a4dbSMatt Arsenault; GFX12-LABEL: v_maximumnum_f16_fneg: 1669ee61a4dbSMatt Arsenault; GFX12: ; %bb.0: 1670ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_loadcnt_dscnt 0x0 1671ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_expcnt 0x0 1672ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_samplecnt 0x0 1673ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_bvhcnt 0x0 1674ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_kmcnt 0x0 1675ee61a4dbSMatt Arsenault; GFX12-NEXT: v_max_num_f16_e64 v1, -v1, -v1 1676ee61a4dbSMatt Arsenault; GFX12-NEXT: v_max_num_f16_e64 v0, -v0, -v0 1677ee61a4dbSMatt Arsenault; GFX12-NEXT: s_delay_alu instid0(VALU_DEP_1) 1678ee61a4dbSMatt Arsenault; GFX12-NEXT: v_max_num_f16_e32 v0, v0, v1 1679ee61a4dbSMatt Arsenault; GFX12-NEXT: s_setpc_b64 s[30:31] 1680ee61a4dbSMatt Arsenault %fneg.x = fneg half %x 1681ee61a4dbSMatt Arsenault %fneg.y = fneg half %y 1682ee61a4dbSMatt Arsenault %result = call half @llvm.maximumnum.f16(half %fneg.x, half %fneg.y) 1683ee61a4dbSMatt Arsenault ret half %result 1684ee61a4dbSMatt Arsenault} 1685ee61a4dbSMatt Arsenault 1686ee61a4dbSMatt Arsenaultdefine double @v_maximumnum_f64_fneg(double %x, double %y) { 1687ee61a4dbSMatt Arsenault; GFX8-LABEL: v_maximumnum_f64_fneg: 1688ee61a4dbSMatt Arsenault; GFX8: ; %bb.0: 1689ee61a4dbSMatt Arsenault; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1690ee61a4dbSMatt Arsenault; GFX8-NEXT: v_max_f64 v[2:3], -v[2:3], -v[2:3] 1691ee61a4dbSMatt Arsenault; GFX8-NEXT: v_max_f64 v[0:1], -v[0:1], -v[0:1] 1692ee61a4dbSMatt Arsenault; GFX8-NEXT: v_max_f64 v[0:1], v[0:1], v[2:3] 1693ee61a4dbSMatt Arsenault; GFX8-NEXT: s_setpc_b64 s[30:31] 1694ee61a4dbSMatt Arsenault; 1695ee61a4dbSMatt Arsenault; GFX9-LABEL: v_maximumnum_f64_fneg: 1696ee61a4dbSMatt Arsenault; GFX9: ; %bb.0: 1697ee61a4dbSMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1698ee61a4dbSMatt Arsenault; GFX9-NEXT: v_max_f64 v[2:3], -v[2:3], -v[2:3] 1699ee61a4dbSMatt Arsenault; GFX9-NEXT: v_max_f64 v[0:1], -v[0:1], -v[0:1] 1700ee61a4dbSMatt Arsenault; GFX9-NEXT: v_max_f64 v[0:1], v[0:1], v[2:3] 1701ee61a4dbSMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 1702ee61a4dbSMatt Arsenault; 1703ee61a4dbSMatt Arsenault; GFX10-LABEL: v_maximumnum_f64_fneg: 1704ee61a4dbSMatt Arsenault; GFX10: ; %bb.0: 1705ee61a4dbSMatt Arsenault; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1706ee61a4dbSMatt Arsenault; GFX10-NEXT: v_max_f64 v[2:3], -v[2:3], -v[2:3] 1707ee61a4dbSMatt Arsenault; GFX10-NEXT: v_max_f64 v[0:1], -v[0:1], -v[0:1] 1708ee61a4dbSMatt Arsenault; GFX10-NEXT: v_max_f64 v[0:1], v[0:1], v[2:3] 1709ee61a4dbSMatt Arsenault; GFX10-NEXT: s_setpc_b64 s[30:31] 1710ee61a4dbSMatt Arsenault; 1711ee61a4dbSMatt Arsenault; GFX11-LABEL: v_maximumnum_f64_fneg: 1712ee61a4dbSMatt Arsenault; GFX11: ; %bb.0: 1713ee61a4dbSMatt Arsenault; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1714ee61a4dbSMatt Arsenault; GFX11-NEXT: v_max_f64 v[2:3], -v[2:3], -v[2:3] 1715ee61a4dbSMatt Arsenault; GFX11-NEXT: v_max_f64 v[0:1], -v[0:1], -v[0:1] 1716ee61a4dbSMatt Arsenault; GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1) 1717ee61a4dbSMatt Arsenault; GFX11-NEXT: v_max_f64 v[0:1], v[0:1], v[2:3] 1718ee61a4dbSMatt Arsenault; GFX11-NEXT: s_setpc_b64 s[30:31] 1719ee61a4dbSMatt Arsenault; 1720ee61a4dbSMatt Arsenault; GFX12-LABEL: v_maximumnum_f64_fneg: 1721ee61a4dbSMatt Arsenault; GFX12: ; %bb.0: 1722ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_loadcnt_dscnt 0x0 1723ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_expcnt 0x0 1724ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_samplecnt 0x0 1725ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_bvhcnt 0x0 1726ee61a4dbSMatt Arsenault; GFX12-NEXT: s_wait_kmcnt 0x0 1727ee61a4dbSMatt Arsenault; GFX12-NEXT: v_max_num_f64_e64 v[2:3], -v[2:3], -v[2:3] 1728ee61a4dbSMatt Arsenault; GFX12-NEXT: v_max_num_f64_e64 v[0:1], -v[0:1], -v[0:1] 1729ee61a4dbSMatt Arsenault; GFX12-NEXT: s_delay_alu instid0(VALU_DEP_1) 1730ee61a4dbSMatt Arsenault; GFX12-NEXT: v_max_num_f64_e32 v[0:1], v[0:1], v[2:3] 1731ee61a4dbSMatt Arsenault; GFX12-NEXT: s_setpc_b64 s[30:31] 1732ee61a4dbSMatt Arsenault %fneg.x = fneg double %x 1733ee61a4dbSMatt Arsenault %fneg.y = fneg double %y 1734ee61a4dbSMatt Arsenault %result = call double @llvm.maximumnum.f64(double %fneg.x, double %fneg.y) 1735ee61a4dbSMatt Arsenault ret double %result 1736ee61a4dbSMatt Arsenault} 17375883ad34SMatt Arsenault 17385883ad34SMatt Arsenaultdefine <2 x half> @v_maximumnum_v2f16(<2 x half> %x, <2 x half> %y) { 17395883ad34SMatt Arsenault; GFX8-LABEL: v_maximumnum_v2f16: 17405883ad34SMatt Arsenault; GFX8: ; %bb.0: 17415883ad34SMatt Arsenault; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 17425883ad34SMatt Arsenault; GFX8-NEXT: v_max_f16_sdwa v2, v1, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 17435883ad34SMatt Arsenault; GFX8-NEXT: v_max_f16_sdwa v3, v0, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 17445883ad34SMatt Arsenault; GFX8-NEXT: v_max_f16_e32 v1, v1, v1 17455883ad34SMatt Arsenault; GFX8-NEXT: v_max_f16_e32 v0, v0, v0 17465883ad34SMatt Arsenault; GFX8-NEXT: v_max_f16_sdwa v2, v3, v2 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD 17475883ad34SMatt Arsenault; GFX8-NEXT: v_max_f16_e32 v0, v0, v1 17485883ad34SMatt Arsenault; GFX8-NEXT: v_or_b32_e32 v0, v0, v2 17495883ad34SMatt Arsenault; GFX8-NEXT: s_setpc_b64 s[30:31] 17505883ad34SMatt Arsenault; 17515883ad34SMatt Arsenault; GFX9-LABEL: v_maximumnum_v2f16: 17525883ad34SMatt Arsenault; GFX9: ; %bb.0: 17535883ad34SMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 17545883ad34SMatt Arsenault; GFX9-NEXT: v_pk_max_f16 v1, v1, v1 17555883ad34SMatt Arsenault; GFX9-NEXT: v_pk_max_f16 v0, v0, v0 17565883ad34SMatt Arsenault; GFX9-NEXT: v_pk_max_f16 v0, v0, v1 17575883ad34SMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 17585883ad34SMatt Arsenault; 17595883ad34SMatt Arsenault; GFX10-LABEL: v_maximumnum_v2f16: 17605883ad34SMatt Arsenault; GFX10: ; %bb.0: 17615883ad34SMatt Arsenault; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 17625883ad34SMatt Arsenault; GFX10-NEXT: v_pk_max_f16 v1, v1, v1 17635883ad34SMatt Arsenault; GFX10-NEXT: v_pk_max_f16 v0, v0, v0 17645883ad34SMatt Arsenault; GFX10-NEXT: v_pk_max_f16 v0, v0, v1 17655883ad34SMatt Arsenault; GFX10-NEXT: s_setpc_b64 s[30:31] 17665883ad34SMatt Arsenault; 17675883ad34SMatt Arsenault; GFX11-LABEL: v_maximumnum_v2f16: 17685883ad34SMatt Arsenault; GFX11: ; %bb.0: 17695883ad34SMatt Arsenault; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 17705883ad34SMatt Arsenault; GFX11-NEXT: v_pk_max_f16 v1, v1, v1 17715883ad34SMatt Arsenault; GFX11-NEXT: v_pk_max_f16 v0, v0, v0 17725883ad34SMatt Arsenault; GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1) 17735883ad34SMatt Arsenault; GFX11-NEXT: v_pk_max_f16 v0, v0, v1 17745883ad34SMatt Arsenault; GFX11-NEXT: s_setpc_b64 s[30:31] 17755883ad34SMatt Arsenault; 17765883ad34SMatt Arsenault; GFX12-LABEL: v_maximumnum_v2f16: 17775883ad34SMatt Arsenault; GFX12: ; %bb.0: 17785883ad34SMatt Arsenault; GFX12-NEXT: s_wait_loadcnt_dscnt 0x0 17795883ad34SMatt Arsenault; GFX12-NEXT: s_wait_expcnt 0x0 17805883ad34SMatt Arsenault; GFX12-NEXT: s_wait_samplecnt 0x0 17815883ad34SMatt Arsenault; GFX12-NEXT: s_wait_bvhcnt 0x0 17825883ad34SMatt Arsenault; GFX12-NEXT: s_wait_kmcnt 0x0 17835883ad34SMatt Arsenault; GFX12-NEXT: v_pk_max_num_f16 v1, v1, v1 17845883ad34SMatt Arsenault; GFX12-NEXT: v_pk_max_num_f16 v0, v0, v0 17855883ad34SMatt Arsenault; GFX12-NEXT: s_delay_alu instid0(VALU_DEP_1) 17865883ad34SMatt Arsenault; GFX12-NEXT: v_pk_max_num_f16 v0, v0, v1 17875883ad34SMatt Arsenault; GFX12-NEXT: s_setpc_b64 s[30:31] 17885883ad34SMatt Arsenault %result = call <2 x half> @llvm.maximumnum.v2f16(<2 x half> %x, <2 x half> %y) 17895883ad34SMatt Arsenault ret <2 x half> %result 17905883ad34SMatt Arsenault} 17915883ad34SMatt Arsenault 17925883ad34SMatt Arsenaultdefine <2 x half> @v_maximumnum_v2f16_nnan(<2 x half> %x, <2 x half> %y) { 17935883ad34SMatt Arsenault; GFX8-LABEL: v_maximumnum_v2f16_nnan: 17945883ad34SMatt Arsenault; GFX8: ; %bb.0: 17955883ad34SMatt Arsenault; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 17965883ad34SMatt Arsenault; GFX8-NEXT: v_max_f16_sdwa v2, v0, v1 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 17975883ad34SMatt Arsenault; GFX8-NEXT: v_max_f16_e32 v0, v0, v1 17985883ad34SMatt Arsenault; GFX8-NEXT: v_or_b32_e32 v0, v0, v2 17995883ad34SMatt Arsenault; GFX8-NEXT: s_setpc_b64 s[30:31] 18005883ad34SMatt Arsenault; 18015883ad34SMatt Arsenault; GFX9-LABEL: v_maximumnum_v2f16_nnan: 18025883ad34SMatt Arsenault; GFX9: ; %bb.0: 18035883ad34SMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 18045883ad34SMatt Arsenault; GFX9-NEXT: v_pk_max_f16 v0, v0, v1 18055883ad34SMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 18065883ad34SMatt Arsenault; 18075883ad34SMatt Arsenault; GFX10-LABEL: v_maximumnum_v2f16_nnan: 18085883ad34SMatt Arsenault; GFX10: ; %bb.0: 18095883ad34SMatt Arsenault; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 18105883ad34SMatt Arsenault; GFX10-NEXT: v_pk_max_f16 v0, v0, v1 18115883ad34SMatt Arsenault; GFX10-NEXT: s_setpc_b64 s[30:31] 18125883ad34SMatt Arsenault; 18135883ad34SMatt Arsenault; GFX11-LABEL: v_maximumnum_v2f16_nnan: 18145883ad34SMatt Arsenault; GFX11: ; %bb.0: 18155883ad34SMatt Arsenault; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 18165883ad34SMatt Arsenault; GFX11-NEXT: v_pk_max_f16 v0, v0, v1 18175883ad34SMatt Arsenault; GFX11-NEXT: s_setpc_b64 s[30:31] 18185883ad34SMatt Arsenault; 18195883ad34SMatt Arsenault; GFX12-LABEL: v_maximumnum_v2f16_nnan: 18205883ad34SMatt Arsenault; GFX12: ; %bb.0: 18215883ad34SMatt Arsenault; GFX12-NEXT: s_wait_loadcnt_dscnt 0x0 18225883ad34SMatt Arsenault; GFX12-NEXT: s_wait_expcnt 0x0 18235883ad34SMatt Arsenault; GFX12-NEXT: s_wait_samplecnt 0x0 18245883ad34SMatt Arsenault; GFX12-NEXT: s_wait_bvhcnt 0x0 18255883ad34SMatt Arsenault; GFX12-NEXT: s_wait_kmcnt 0x0 18265883ad34SMatt Arsenault; GFX12-NEXT: v_pk_max_num_f16 v0, v0, v1 18275883ad34SMatt Arsenault; GFX12-NEXT: s_setpc_b64 s[30:31] 18285883ad34SMatt Arsenault %result = call nnan <2 x half> @llvm.maximumnum.v2f16(<2 x half> %x, <2 x half> %y) 18295883ad34SMatt Arsenault ret <2 x half> %result 18305883ad34SMatt Arsenault} 18315883ad34SMatt Arsenault 18325883ad34SMatt Arsenaultdefine <3 x half> @v_maximumnum_v3f16(<3 x half> %x, <3 x half> %y) { 18335883ad34SMatt Arsenault; GFX8-LABEL: v_maximumnum_v3f16: 18345883ad34SMatt Arsenault; GFX8: ; %bb.0: 18355883ad34SMatt Arsenault; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 18365883ad34SMatt Arsenault; GFX8-NEXT: v_max_f16_sdwa v4, v2, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 18375883ad34SMatt Arsenault; GFX8-NEXT: v_max_f16_sdwa v5, v0, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 18385883ad34SMatt Arsenault; GFX8-NEXT: v_max_f16_e32 v2, v2, v2 18395883ad34SMatt Arsenault; GFX8-NEXT: v_max_f16_e32 v0, v0, v0 18405883ad34SMatt Arsenault; GFX8-NEXT: v_max_f16_sdwa v4, v5, v4 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD 1841*15473820SPhoebe Wang; GFX8-NEXT: v_max_f16_e32 v3, v3, v3 18425883ad34SMatt Arsenault; GFX8-NEXT: v_max_f16_e32 v1, v1, v1 1843*15473820SPhoebe Wang; GFX8-NEXT: v_max_f16_e32 v0, v0, v2 1844*15473820SPhoebe Wang; GFX8-NEXT: v_max_f16_e32 v1, v1, v3 18455883ad34SMatt Arsenault; GFX8-NEXT: v_or_b32_e32 v0, v0, v4 18465883ad34SMatt Arsenault; GFX8-NEXT: s_setpc_b64 s[30:31] 18475883ad34SMatt Arsenault; 18485883ad34SMatt Arsenault; GFX9-LABEL: v_maximumnum_v3f16: 18495883ad34SMatt Arsenault; GFX9: ; %bb.0: 18505883ad34SMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 18515883ad34SMatt Arsenault; GFX9-NEXT: v_pk_max_f16 v2, v2, v2 18525883ad34SMatt Arsenault; GFX9-NEXT: v_pk_max_f16 v0, v0, v0 18535883ad34SMatt Arsenault; GFX9-NEXT: v_pk_max_f16 v0, v0, v2 18545883ad34SMatt Arsenault; GFX9-NEXT: v_pk_max_f16 v2, v3, v3 18555883ad34SMatt Arsenault; GFX9-NEXT: v_pk_max_f16 v1, v1, v1 18565883ad34SMatt Arsenault; GFX9-NEXT: v_pk_max_f16 v1, v1, v2 18575883ad34SMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 18585883ad34SMatt Arsenault; 18595883ad34SMatt Arsenault; GFX10-LABEL: v_maximumnum_v3f16: 18605883ad34SMatt Arsenault; GFX10: ; %bb.0: 18615883ad34SMatt Arsenault; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 18625883ad34SMatt Arsenault; GFX10-NEXT: v_pk_max_f16 v2, v2, v2 18635883ad34SMatt Arsenault; GFX10-NEXT: v_pk_max_f16 v0, v0, v0 18645883ad34SMatt Arsenault; GFX10-NEXT: v_pk_max_f16 v3, v3, v3 18655883ad34SMatt Arsenault; GFX10-NEXT: v_pk_max_f16 v1, v1, v1 18665883ad34SMatt Arsenault; GFX10-NEXT: v_pk_max_f16 v0, v0, v2 18675883ad34SMatt Arsenault; GFX10-NEXT: v_pk_max_f16 v1, v1, v3 18685883ad34SMatt Arsenault; GFX10-NEXT: s_setpc_b64 s[30:31] 18695883ad34SMatt Arsenault; 18705883ad34SMatt Arsenault; GFX11-LABEL: v_maximumnum_v3f16: 18715883ad34SMatt Arsenault; GFX11: ; %bb.0: 18725883ad34SMatt Arsenault; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 18735883ad34SMatt Arsenault; GFX11-NEXT: v_pk_max_f16 v2, v2, v2 18745883ad34SMatt Arsenault; GFX11-NEXT: v_pk_max_f16 v0, v0, v0 18755883ad34SMatt Arsenault; GFX11-NEXT: v_pk_max_f16 v3, v3, v3 18765883ad34SMatt Arsenault; GFX11-NEXT: v_pk_max_f16 v1, v1, v1 18775883ad34SMatt Arsenault; GFX11-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2) 18785883ad34SMatt Arsenault; GFX11-NEXT: v_pk_max_f16 v0, v0, v2 18795883ad34SMatt Arsenault; GFX11-NEXT: v_pk_max_f16 v1, v1, v3 18805883ad34SMatt Arsenault; GFX11-NEXT: s_setpc_b64 s[30:31] 18815883ad34SMatt Arsenault; 18825883ad34SMatt Arsenault; GFX12-LABEL: v_maximumnum_v3f16: 18835883ad34SMatt Arsenault; GFX12: ; %bb.0: 18845883ad34SMatt Arsenault; GFX12-NEXT: s_wait_loadcnt_dscnt 0x0 18855883ad34SMatt Arsenault; GFX12-NEXT: s_wait_expcnt 0x0 18865883ad34SMatt Arsenault; GFX12-NEXT: s_wait_samplecnt 0x0 18875883ad34SMatt Arsenault; GFX12-NEXT: s_wait_bvhcnt 0x0 18885883ad34SMatt Arsenault; GFX12-NEXT: s_wait_kmcnt 0x0 18895883ad34SMatt Arsenault; GFX12-NEXT: v_pk_max_num_f16 v2, v2, v2 18905883ad34SMatt Arsenault; GFX12-NEXT: v_pk_max_num_f16 v0, v0, v0 18915883ad34SMatt Arsenault; GFX12-NEXT: v_pk_max_num_f16 v3, v3, v3 18925883ad34SMatt Arsenault; GFX12-NEXT: v_pk_max_num_f16 v1, v1, v1 18935883ad34SMatt Arsenault; GFX12-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2) 18945883ad34SMatt Arsenault; GFX12-NEXT: v_pk_max_num_f16 v0, v0, v2 18955883ad34SMatt Arsenault; GFX12-NEXT: v_pk_max_num_f16 v1, v1, v3 18965883ad34SMatt Arsenault; GFX12-NEXT: s_setpc_b64 s[30:31] 18975883ad34SMatt Arsenault %result = call <3 x half> @llvm.maximumnum.v3f16(<3 x half> %x, <3 x half> %y) 18985883ad34SMatt Arsenault ret <3 x half> %result 18995883ad34SMatt Arsenault} 19005883ad34SMatt Arsenault 19015883ad34SMatt Arsenaultdefine <3 x half> @v_maximumnum_v3f16_nnan(<3 x half> %x, <3 x half> %y) { 19025883ad34SMatt Arsenault; GFX8-LABEL: v_maximumnum_v3f16_nnan: 19035883ad34SMatt Arsenault; GFX8: ; %bb.0: 19045883ad34SMatt Arsenault; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 19055883ad34SMatt Arsenault; GFX8-NEXT: v_max_f16_sdwa v4, v0, v2 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 19065883ad34SMatt Arsenault; GFX8-NEXT: v_max_f16_e32 v0, v0, v2 19075883ad34SMatt Arsenault; GFX8-NEXT: v_max_f16_e32 v1, v1, v3 1908*15473820SPhoebe Wang; GFX8-NEXT: v_or_b32_e32 v0, v0, v4 19095883ad34SMatt Arsenault; GFX8-NEXT: s_setpc_b64 s[30:31] 19105883ad34SMatt Arsenault; 19115883ad34SMatt Arsenault; GFX9-LABEL: v_maximumnum_v3f16_nnan: 19125883ad34SMatt Arsenault; GFX9: ; %bb.0: 19135883ad34SMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 19145883ad34SMatt Arsenault; GFX9-NEXT: v_pk_max_f16 v0, v0, v2 19155883ad34SMatt Arsenault; GFX9-NEXT: v_pk_max_f16 v1, v1, v3 19165883ad34SMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 19175883ad34SMatt Arsenault; 19185883ad34SMatt Arsenault; GFX10-LABEL: v_maximumnum_v3f16_nnan: 19195883ad34SMatt Arsenault; GFX10: ; %bb.0: 19205883ad34SMatt Arsenault; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 19215883ad34SMatt Arsenault; GFX10-NEXT: v_pk_max_f16 v0, v0, v2 19225883ad34SMatt Arsenault; GFX10-NEXT: v_pk_max_f16 v1, v1, v3 19235883ad34SMatt Arsenault; GFX10-NEXT: s_setpc_b64 s[30:31] 19245883ad34SMatt Arsenault; 19255883ad34SMatt Arsenault; GFX11-LABEL: v_maximumnum_v3f16_nnan: 19265883ad34SMatt Arsenault; GFX11: ; %bb.0: 19275883ad34SMatt Arsenault; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 19285883ad34SMatt Arsenault; GFX11-NEXT: v_pk_max_f16 v0, v0, v2 19295883ad34SMatt Arsenault; GFX11-NEXT: v_pk_max_f16 v1, v1, v3 19305883ad34SMatt Arsenault; GFX11-NEXT: s_setpc_b64 s[30:31] 19315883ad34SMatt Arsenault; 19325883ad34SMatt Arsenault; GFX12-LABEL: v_maximumnum_v3f16_nnan: 19335883ad34SMatt Arsenault; GFX12: ; %bb.0: 19345883ad34SMatt Arsenault; GFX12-NEXT: s_wait_loadcnt_dscnt 0x0 19355883ad34SMatt Arsenault; GFX12-NEXT: s_wait_expcnt 0x0 19365883ad34SMatt Arsenault; GFX12-NEXT: s_wait_samplecnt 0x0 19375883ad34SMatt Arsenault; GFX12-NEXT: s_wait_bvhcnt 0x0 19385883ad34SMatt Arsenault; GFX12-NEXT: s_wait_kmcnt 0x0 19395883ad34SMatt Arsenault; GFX12-NEXT: v_pk_max_num_f16 v0, v0, v2 19405883ad34SMatt Arsenault; GFX12-NEXT: v_pk_max_num_f16 v1, v1, v3 19415883ad34SMatt Arsenault; GFX12-NEXT: s_setpc_b64 s[30:31] 19425883ad34SMatt Arsenault %result = call nnan <3 x half> @llvm.maximumnum.v3f16(<3 x half> %x, <3 x half> %y) 19435883ad34SMatt Arsenault ret <3 x half> %result 19445883ad34SMatt Arsenault} 19455883ad34SMatt Arsenault 19465883ad34SMatt Arsenaultdefine <4 x half> @v_maximumnum_v4f16(<4 x half> %x, <4 x half> %y) { 19475883ad34SMatt Arsenault; GFX8-LABEL: v_maximumnum_v4f16: 19485883ad34SMatt Arsenault; GFX8: ; %bb.0: 19495883ad34SMatt Arsenault; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1950*15473820SPhoebe Wang; GFX8-NEXT: v_max_f16_sdwa v4, v3, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 1951*15473820SPhoebe Wang; GFX8-NEXT: v_max_f16_sdwa v5, v1, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 19525883ad34SMatt Arsenault; GFX8-NEXT: v_max_f16_sdwa v4, v5, v4 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD 1953*15473820SPhoebe Wang; GFX8-NEXT: v_max_f16_sdwa v5, v2, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 1954*15473820SPhoebe Wang; GFX8-NEXT: v_max_f16_sdwa v6, v0, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 19555883ad34SMatt Arsenault; GFX8-NEXT: v_max_f16_e32 v3, v3, v3 19565883ad34SMatt Arsenault; GFX8-NEXT: v_max_f16_e32 v1, v1, v1 1957*15473820SPhoebe Wang; GFX8-NEXT: v_max_f16_e32 v2, v2, v2 1958*15473820SPhoebe Wang; GFX8-NEXT: v_max_f16_e32 v0, v0, v0 1959*15473820SPhoebe Wang; GFX8-NEXT: v_max_f16_sdwa v5, v6, v5 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD 19605883ad34SMatt Arsenault; GFX8-NEXT: v_max_f16_e32 v1, v1, v3 1961*15473820SPhoebe Wang; GFX8-NEXT: v_max_f16_e32 v0, v0, v2 1962*15473820SPhoebe Wang; GFX8-NEXT: v_or_b32_e32 v0, v0, v5 1963*15473820SPhoebe Wang; GFX8-NEXT: v_or_b32_e32 v1, v1, v4 19645883ad34SMatt Arsenault; GFX8-NEXT: s_setpc_b64 s[30:31] 19655883ad34SMatt Arsenault; 19665883ad34SMatt Arsenault; GFX9-LABEL: v_maximumnum_v4f16: 19675883ad34SMatt Arsenault; GFX9: ; %bb.0: 19685883ad34SMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 19695883ad34SMatt Arsenault; GFX9-NEXT: v_pk_max_f16 v2, v2, v2 19705883ad34SMatt Arsenault; GFX9-NEXT: v_pk_max_f16 v0, v0, v0 19715883ad34SMatt Arsenault; GFX9-NEXT: v_pk_max_f16 v0, v0, v2 19725883ad34SMatt Arsenault; GFX9-NEXT: v_pk_max_f16 v2, v3, v3 19735883ad34SMatt Arsenault; GFX9-NEXT: v_pk_max_f16 v1, v1, v1 19745883ad34SMatt Arsenault; GFX9-NEXT: v_pk_max_f16 v1, v1, v2 19755883ad34SMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 19765883ad34SMatt Arsenault; 19775883ad34SMatt Arsenault; GFX10-LABEL: v_maximumnum_v4f16: 19785883ad34SMatt Arsenault; GFX10: ; %bb.0: 19795883ad34SMatt Arsenault; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 19805883ad34SMatt Arsenault; GFX10-NEXT: v_pk_max_f16 v2, v2, v2 19815883ad34SMatt Arsenault; GFX10-NEXT: v_pk_max_f16 v0, v0, v0 19825883ad34SMatt Arsenault; GFX10-NEXT: v_pk_max_f16 v3, v3, v3 19835883ad34SMatt Arsenault; GFX10-NEXT: v_pk_max_f16 v1, v1, v1 19845883ad34SMatt Arsenault; GFX10-NEXT: v_pk_max_f16 v0, v0, v2 19855883ad34SMatt Arsenault; GFX10-NEXT: v_pk_max_f16 v1, v1, v3 19865883ad34SMatt Arsenault; GFX10-NEXT: s_setpc_b64 s[30:31] 19875883ad34SMatt Arsenault; 19885883ad34SMatt Arsenault; GFX11-LABEL: v_maximumnum_v4f16: 19895883ad34SMatt Arsenault; GFX11: ; %bb.0: 19905883ad34SMatt Arsenault; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 19915883ad34SMatt Arsenault; GFX11-NEXT: v_pk_max_f16 v2, v2, v2 19925883ad34SMatt Arsenault; GFX11-NEXT: v_pk_max_f16 v0, v0, v0 19935883ad34SMatt Arsenault; GFX11-NEXT: v_pk_max_f16 v3, v3, v3 19945883ad34SMatt Arsenault; GFX11-NEXT: v_pk_max_f16 v1, v1, v1 19955883ad34SMatt Arsenault; GFX11-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2) 19965883ad34SMatt Arsenault; GFX11-NEXT: v_pk_max_f16 v0, v0, v2 19975883ad34SMatt Arsenault; GFX11-NEXT: v_pk_max_f16 v1, v1, v3 19985883ad34SMatt Arsenault; GFX11-NEXT: s_setpc_b64 s[30:31] 19995883ad34SMatt Arsenault; 20005883ad34SMatt Arsenault; GFX12-LABEL: v_maximumnum_v4f16: 20015883ad34SMatt Arsenault; GFX12: ; %bb.0: 20025883ad34SMatt Arsenault; GFX12-NEXT: s_wait_loadcnt_dscnt 0x0 20035883ad34SMatt Arsenault; GFX12-NEXT: s_wait_expcnt 0x0 20045883ad34SMatt Arsenault; GFX12-NEXT: s_wait_samplecnt 0x0 20055883ad34SMatt Arsenault; GFX12-NEXT: s_wait_bvhcnt 0x0 20065883ad34SMatt Arsenault; GFX12-NEXT: s_wait_kmcnt 0x0 20075883ad34SMatt Arsenault; GFX12-NEXT: v_pk_max_num_f16 v2, v2, v2 20085883ad34SMatt Arsenault; GFX12-NEXT: v_pk_max_num_f16 v0, v0, v0 20095883ad34SMatt Arsenault; GFX12-NEXT: v_pk_max_num_f16 v3, v3, v3 20105883ad34SMatt Arsenault; GFX12-NEXT: v_pk_max_num_f16 v1, v1, v1 20115883ad34SMatt Arsenault; GFX12-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2) 20125883ad34SMatt Arsenault; GFX12-NEXT: v_pk_max_num_f16 v0, v0, v2 20135883ad34SMatt Arsenault; GFX12-NEXT: v_pk_max_num_f16 v1, v1, v3 20145883ad34SMatt Arsenault; GFX12-NEXT: s_setpc_b64 s[30:31] 20155883ad34SMatt Arsenault %result = call <4 x half> @llvm.maximumnum.v4f16(<4 x half> %x, <4 x half> %y) 20165883ad34SMatt Arsenault ret <4 x half> %result 20175883ad34SMatt Arsenault} 20185883ad34SMatt Arsenault 20195883ad34SMatt Arsenaultdefine <4 x half> @v_maximumnum_v4f16_nnan(<4 x half> %x, <4 x half> %y) { 20205883ad34SMatt Arsenault; GFX8-LABEL: v_maximumnum_v4f16_nnan: 20215883ad34SMatt Arsenault; GFX8: ; %bb.0: 20225883ad34SMatt Arsenault; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2023*15473820SPhoebe Wang; GFX8-NEXT: v_max_f16_sdwa v4, v1, v3 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 2024*15473820SPhoebe Wang; GFX8-NEXT: v_max_f16_sdwa v5, v0, v2 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 20255883ad34SMatt Arsenault; GFX8-NEXT: v_max_f16_e32 v1, v1, v3 2026*15473820SPhoebe Wang; GFX8-NEXT: v_max_f16_e32 v0, v0, v2 2027*15473820SPhoebe Wang; GFX8-NEXT: v_or_b32_e32 v0, v0, v5 2028*15473820SPhoebe Wang; GFX8-NEXT: v_or_b32_e32 v1, v1, v4 20295883ad34SMatt Arsenault; GFX8-NEXT: s_setpc_b64 s[30:31] 20305883ad34SMatt Arsenault; 20315883ad34SMatt Arsenault; GFX9-LABEL: v_maximumnum_v4f16_nnan: 20325883ad34SMatt Arsenault; GFX9: ; %bb.0: 20335883ad34SMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 20345883ad34SMatt Arsenault; GFX9-NEXT: v_pk_max_f16 v0, v0, v2 20355883ad34SMatt Arsenault; GFX9-NEXT: v_pk_max_f16 v1, v1, v3 20365883ad34SMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 20375883ad34SMatt Arsenault; 20385883ad34SMatt Arsenault; GFX10-LABEL: v_maximumnum_v4f16_nnan: 20395883ad34SMatt Arsenault; GFX10: ; %bb.0: 20405883ad34SMatt Arsenault; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 20415883ad34SMatt Arsenault; GFX10-NEXT: v_pk_max_f16 v0, v0, v2 20425883ad34SMatt Arsenault; GFX10-NEXT: v_pk_max_f16 v1, v1, v3 20435883ad34SMatt Arsenault; GFX10-NEXT: s_setpc_b64 s[30:31] 20445883ad34SMatt Arsenault; 20455883ad34SMatt Arsenault; GFX11-LABEL: v_maximumnum_v4f16_nnan: 20465883ad34SMatt Arsenault; GFX11: ; %bb.0: 20475883ad34SMatt Arsenault; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 20485883ad34SMatt Arsenault; GFX11-NEXT: v_pk_max_f16 v0, v0, v2 20495883ad34SMatt Arsenault; GFX11-NEXT: v_pk_max_f16 v1, v1, v3 20505883ad34SMatt Arsenault; GFX11-NEXT: s_setpc_b64 s[30:31] 20515883ad34SMatt Arsenault; 20525883ad34SMatt Arsenault; GFX12-LABEL: v_maximumnum_v4f16_nnan: 20535883ad34SMatt Arsenault; GFX12: ; %bb.0: 20545883ad34SMatt Arsenault; GFX12-NEXT: s_wait_loadcnt_dscnt 0x0 20555883ad34SMatt Arsenault; GFX12-NEXT: s_wait_expcnt 0x0 20565883ad34SMatt Arsenault; GFX12-NEXT: s_wait_samplecnt 0x0 20575883ad34SMatt Arsenault; GFX12-NEXT: s_wait_bvhcnt 0x0 20585883ad34SMatt Arsenault; GFX12-NEXT: s_wait_kmcnt 0x0 20595883ad34SMatt Arsenault; GFX12-NEXT: v_pk_max_num_f16 v0, v0, v2 20605883ad34SMatt Arsenault; GFX12-NEXT: v_pk_max_num_f16 v1, v1, v3 20615883ad34SMatt Arsenault; GFX12-NEXT: s_setpc_b64 s[30:31] 20625883ad34SMatt Arsenault %result = call nnan <4 x half> @llvm.maximumnum.v4f16(<4 x half> %x, <4 x half> %y) 20635883ad34SMatt Arsenault ret <4 x half> %result 20645883ad34SMatt Arsenault} 20655883ad34SMatt Arsenault 20665883ad34SMatt Arsenaultdefine <6 x half> @v_maximumnum_v6f16(<6 x half> %x, <6 x half> %y) { 20675883ad34SMatt Arsenault; GFX8-LABEL: v_maximumnum_v6f16: 20685883ad34SMatt Arsenault; GFX8: ; %bb.0: 20695883ad34SMatt Arsenault; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2070*15473820SPhoebe Wang; GFX8-NEXT: v_max_f16_sdwa v6, v5, v5 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 2071*15473820SPhoebe Wang; GFX8-NEXT: v_max_f16_sdwa v7, v2, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 20725883ad34SMatt Arsenault; GFX8-NEXT: v_max_f16_sdwa v6, v7, v6 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD 2073*15473820SPhoebe Wang; GFX8-NEXT: v_max_f16_sdwa v7, v4, v4 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 2074*15473820SPhoebe Wang; GFX8-NEXT: v_max_f16_sdwa v8, v1, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 2075*15473820SPhoebe Wang; GFX8-NEXT: v_max_f16_sdwa v7, v8, v7 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD 2076*15473820SPhoebe Wang; GFX8-NEXT: v_max_f16_sdwa v8, v3, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 2077*15473820SPhoebe Wang; GFX8-NEXT: v_max_f16_sdwa v9, v0, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 2078*15473820SPhoebe Wang; GFX8-NEXT: v_max_f16_e32 v5, v5, v5 2079*15473820SPhoebe Wang; GFX8-NEXT: v_max_f16_e32 v2, v2, v2 20805883ad34SMatt Arsenault; GFX8-NEXT: v_max_f16_e32 v4, v4, v4 20815883ad34SMatt Arsenault; GFX8-NEXT: v_max_f16_e32 v1, v1, v1 2082*15473820SPhoebe Wang; GFX8-NEXT: v_max_f16_e32 v3, v3, v3 2083*15473820SPhoebe Wang; GFX8-NEXT: v_max_f16_e32 v0, v0, v0 2084*15473820SPhoebe Wang; GFX8-NEXT: v_max_f16_sdwa v8, v9, v8 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD 2085*15473820SPhoebe Wang; GFX8-NEXT: v_max_f16_e32 v2, v2, v5 20865883ad34SMatt Arsenault; GFX8-NEXT: v_max_f16_e32 v1, v1, v4 2087*15473820SPhoebe Wang; GFX8-NEXT: v_max_f16_e32 v0, v0, v3 2088*15473820SPhoebe Wang; GFX8-NEXT: v_or_b32_e32 v0, v0, v8 2089*15473820SPhoebe Wang; GFX8-NEXT: v_or_b32_e32 v1, v1, v7 2090*15473820SPhoebe Wang; GFX8-NEXT: v_or_b32_e32 v2, v2, v6 20915883ad34SMatt Arsenault; GFX8-NEXT: s_setpc_b64 s[30:31] 20925883ad34SMatt Arsenault; 20935883ad34SMatt Arsenault; GFX9-LABEL: v_maximumnum_v6f16: 20945883ad34SMatt Arsenault; GFX9: ; %bb.0: 20955883ad34SMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 20965883ad34SMatt Arsenault; GFX9-NEXT: v_pk_max_f16 v3, v3, v3 20975883ad34SMatt Arsenault; GFX9-NEXT: v_pk_max_f16 v0, v0, v0 20985883ad34SMatt Arsenault; GFX9-NEXT: v_pk_max_f16 v0, v0, v3 20995883ad34SMatt Arsenault; GFX9-NEXT: v_pk_max_f16 v3, v4, v4 21005883ad34SMatt Arsenault; GFX9-NEXT: v_pk_max_f16 v1, v1, v1 21015883ad34SMatt Arsenault; GFX9-NEXT: v_pk_max_f16 v1, v1, v3 21025883ad34SMatt Arsenault; GFX9-NEXT: v_pk_max_f16 v3, v5, v5 21035883ad34SMatt Arsenault; GFX9-NEXT: v_pk_max_f16 v2, v2, v2 21045883ad34SMatt Arsenault; GFX9-NEXT: v_pk_max_f16 v2, v2, v3 21055883ad34SMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 21065883ad34SMatt Arsenault; 21075883ad34SMatt Arsenault; GFX10-LABEL: v_maximumnum_v6f16: 21085883ad34SMatt Arsenault; GFX10: ; %bb.0: 21095883ad34SMatt Arsenault; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 21105883ad34SMatt Arsenault; GFX10-NEXT: v_pk_max_f16 v3, v3, v3 21115883ad34SMatt Arsenault; GFX10-NEXT: v_pk_max_f16 v0, v0, v0 21125883ad34SMatt Arsenault; GFX10-NEXT: v_pk_max_f16 v4, v4, v4 21135883ad34SMatt Arsenault; GFX10-NEXT: v_pk_max_f16 v1, v1, v1 21145883ad34SMatt Arsenault; GFX10-NEXT: v_pk_max_f16 v5, v5, v5 21155883ad34SMatt Arsenault; GFX10-NEXT: v_pk_max_f16 v2, v2, v2 21165883ad34SMatt Arsenault; GFX10-NEXT: v_pk_max_f16 v0, v0, v3 21175883ad34SMatt Arsenault; GFX10-NEXT: v_pk_max_f16 v1, v1, v4 21185883ad34SMatt Arsenault; GFX10-NEXT: v_pk_max_f16 v2, v2, v5 21195883ad34SMatt Arsenault; GFX10-NEXT: s_setpc_b64 s[30:31] 21205883ad34SMatt Arsenault; 21215883ad34SMatt Arsenault; GFX11-LABEL: v_maximumnum_v6f16: 21225883ad34SMatt Arsenault; GFX11: ; %bb.0: 21235883ad34SMatt Arsenault; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 21245883ad34SMatt Arsenault; GFX11-NEXT: v_pk_max_f16 v3, v3, v3 21255883ad34SMatt Arsenault; GFX11-NEXT: v_pk_max_f16 v0, v0, v0 21265883ad34SMatt Arsenault; GFX11-NEXT: v_pk_max_f16 v4, v4, v4 21275883ad34SMatt Arsenault; GFX11-NEXT: v_pk_max_f16 v1, v1, v1 21285883ad34SMatt Arsenault; GFX11-NEXT: v_pk_max_f16 v5, v5, v5 21295883ad34SMatt Arsenault; GFX11-NEXT: v_pk_max_f16 v2, v2, v2 21305883ad34SMatt Arsenault; GFX11-NEXT: v_pk_max_f16 v0, v0, v3 21315883ad34SMatt Arsenault; GFX11-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_3) 21325883ad34SMatt Arsenault; GFX11-NEXT: v_pk_max_f16 v1, v1, v4 21335883ad34SMatt Arsenault; GFX11-NEXT: v_pk_max_f16 v2, v2, v5 21345883ad34SMatt Arsenault; GFX11-NEXT: s_setpc_b64 s[30:31] 21355883ad34SMatt Arsenault; 21365883ad34SMatt Arsenault; GFX12-LABEL: v_maximumnum_v6f16: 21375883ad34SMatt Arsenault; GFX12: ; %bb.0: 21385883ad34SMatt Arsenault; GFX12-NEXT: s_wait_loadcnt_dscnt 0x0 21395883ad34SMatt Arsenault; GFX12-NEXT: s_wait_expcnt 0x0 21405883ad34SMatt Arsenault; GFX12-NEXT: s_wait_samplecnt 0x0 21415883ad34SMatt Arsenault; GFX12-NEXT: s_wait_bvhcnt 0x0 21425883ad34SMatt Arsenault; GFX12-NEXT: s_wait_kmcnt 0x0 21435883ad34SMatt Arsenault; GFX12-NEXT: v_pk_max_num_f16 v3, v3, v3 21445883ad34SMatt Arsenault; GFX12-NEXT: v_pk_max_num_f16 v0, v0, v0 21455883ad34SMatt Arsenault; GFX12-NEXT: v_pk_max_num_f16 v4, v4, v4 21465883ad34SMatt Arsenault; GFX12-NEXT: v_pk_max_num_f16 v1, v1, v1 21475883ad34SMatt Arsenault; GFX12-NEXT: v_pk_max_num_f16 v5, v5, v5 21485883ad34SMatt Arsenault; GFX12-NEXT: v_pk_max_num_f16 v2, v2, v2 21495883ad34SMatt Arsenault; GFX12-NEXT: v_pk_max_num_f16 v0, v0, v3 21505883ad34SMatt Arsenault; GFX12-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_3) 21515883ad34SMatt Arsenault; GFX12-NEXT: v_pk_max_num_f16 v1, v1, v4 21525883ad34SMatt Arsenault; GFX12-NEXT: v_pk_max_num_f16 v2, v2, v5 21535883ad34SMatt Arsenault; GFX12-NEXT: s_setpc_b64 s[30:31] 21545883ad34SMatt Arsenault %result = call <6 x half> @llvm.maximumnum.v6f16(<6 x half> %x, <6 x half> %y) 21555883ad34SMatt Arsenault ret <6 x half> %result 21565883ad34SMatt Arsenault} 21575883ad34SMatt Arsenault 21585883ad34SMatt Arsenaultdefine <8 x half> @v_maximumnum_v8f16(<8 x half> %x, <8 x half> %y) { 21595883ad34SMatt Arsenault; GFX8-LABEL: v_maximumnum_v8f16: 21605883ad34SMatt Arsenault; GFX8: ; %bb.0: 21615883ad34SMatt Arsenault; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2162*15473820SPhoebe Wang; GFX8-NEXT: v_max_f16_sdwa v8, v7, v7 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 2163*15473820SPhoebe Wang; GFX8-NEXT: v_max_f16_sdwa v9, v3, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 21645883ad34SMatt Arsenault; GFX8-NEXT: v_max_f16_sdwa v8, v9, v8 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD 2165*15473820SPhoebe Wang; GFX8-NEXT: v_max_f16_sdwa v9, v6, v6 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 2166*15473820SPhoebe Wang; GFX8-NEXT: v_max_f16_sdwa v10, v2, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 2167*15473820SPhoebe Wang; GFX8-NEXT: v_max_f16_sdwa v9, v10, v9 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD 2168*15473820SPhoebe Wang; GFX8-NEXT: v_max_f16_sdwa v10, v5, v5 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 2169*15473820SPhoebe Wang; GFX8-NEXT: v_max_f16_sdwa v11, v1, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 2170*15473820SPhoebe Wang; GFX8-NEXT: v_max_f16_sdwa v10, v11, v10 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD 2171*15473820SPhoebe Wang; GFX8-NEXT: v_max_f16_sdwa v11, v4, v4 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 2172*15473820SPhoebe Wang; GFX8-NEXT: v_max_f16_sdwa v12, v0, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 2173*15473820SPhoebe Wang; GFX8-NEXT: v_max_f16_e32 v7, v7, v7 2174*15473820SPhoebe Wang; GFX8-NEXT: v_max_f16_e32 v3, v3, v3 2175*15473820SPhoebe Wang; GFX8-NEXT: v_max_f16_e32 v6, v6, v6 2176*15473820SPhoebe Wang; GFX8-NEXT: v_max_f16_e32 v2, v2, v2 21775883ad34SMatt Arsenault; GFX8-NEXT: v_max_f16_e32 v5, v5, v5 21785883ad34SMatt Arsenault; GFX8-NEXT: v_max_f16_e32 v1, v1, v1 2179*15473820SPhoebe Wang; GFX8-NEXT: v_max_f16_e32 v4, v4, v4 2180*15473820SPhoebe Wang; GFX8-NEXT: v_max_f16_e32 v0, v0, v0 2181*15473820SPhoebe Wang; GFX8-NEXT: v_max_f16_sdwa v11, v12, v11 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD 2182*15473820SPhoebe Wang; GFX8-NEXT: v_max_f16_e32 v3, v3, v7 2183*15473820SPhoebe Wang; GFX8-NEXT: v_max_f16_e32 v2, v2, v6 21845883ad34SMatt Arsenault; GFX8-NEXT: v_max_f16_e32 v1, v1, v5 2185*15473820SPhoebe Wang; GFX8-NEXT: v_max_f16_e32 v0, v0, v4 2186*15473820SPhoebe Wang; GFX8-NEXT: v_or_b32_e32 v0, v0, v11 2187*15473820SPhoebe Wang; GFX8-NEXT: v_or_b32_e32 v1, v1, v10 2188*15473820SPhoebe Wang; GFX8-NEXT: v_or_b32_e32 v2, v2, v9 2189*15473820SPhoebe Wang; GFX8-NEXT: v_or_b32_e32 v3, v3, v8 21905883ad34SMatt Arsenault; GFX8-NEXT: s_setpc_b64 s[30:31] 21915883ad34SMatt Arsenault; 21925883ad34SMatt Arsenault; GFX9-LABEL: v_maximumnum_v8f16: 21935883ad34SMatt Arsenault; GFX9: ; %bb.0: 21945883ad34SMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 21955883ad34SMatt Arsenault; GFX9-NEXT: v_pk_max_f16 v4, v4, v4 21965883ad34SMatt Arsenault; GFX9-NEXT: v_pk_max_f16 v0, v0, v0 21975883ad34SMatt Arsenault; GFX9-NEXT: v_pk_max_f16 v0, v0, v4 21985883ad34SMatt Arsenault; GFX9-NEXT: v_pk_max_f16 v4, v5, v5 21995883ad34SMatt Arsenault; GFX9-NEXT: v_pk_max_f16 v1, v1, v1 22005883ad34SMatt Arsenault; GFX9-NEXT: v_pk_max_f16 v1, v1, v4 22015883ad34SMatt Arsenault; GFX9-NEXT: v_pk_max_f16 v4, v6, v6 22025883ad34SMatt Arsenault; GFX9-NEXT: v_pk_max_f16 v2, v2, v2 22035883ad34SMatt Arsenault; GFX9-NEXT: v_pk_max_f16 v2, v2, v4 22045883ad34SMatt Arsenault; GFX9-NEXT: v_pk_max_f16 v4, v7, v7 22055883ad34SMatt Arsenault; GFX9-NEXT: v_pk_max_f16 v3, v3, v3 22065883ad34SMatt Arsenault; GFX9-NEXT: v_pk_max_f16 v3, v3, v4 22075883ad34SMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 22085883ad34SMatt Arsenault; 22095883ad34SMatt Arsenault; GFX10-LABEL: v_maximumnum_v8f16: 22105883ad34SMatt Arsenault; GFX10: ; %bb.0: 22115883ad34SMatt Arsenault; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 22125883ad34SMatt Arsenault; GFX10-NEXT: v_pk_max_f16 v4, v4, v4 22135883ad34SMatt Arsenault; GFX10-NEXT: v_pk_max_f16 v0, v0, v0 22145883ad34SMatt Arsenault; GFX10-NEXT: v_pk_max_f16 v5, v5, v5 22155883ad34SMatt Arsenault; GFX10-NEXT: v_pk_max_f16 v1, v1, v1 22165883ad34SMatt Arsenault; GFX10-NEXT: v_pk_max_f16 v6, v6, v6 22175883ad34SMatt Arsenault; GFX10-NEXT: v_pk_max_f16 v2, v2, v2 22185883ad34SMatt Arsenault; GFX10-NEXT: v_pk_max_f16 v7, v7, v7 22195883ad34SMatt Arsenault; GFX10-NEXT: v_pk_max_f16 v3, v3, v3 22205883ad34SMatt Arsenault; GFX10-NEXT: v_pk_max_f16 v0, v0, v4 22215883ad34SMatt Arsenault; GFX10-NEXT: v_pk_max_f16 v1, v1, v5 22225883ad34SMatt Arsenault; GFX10-NEXT: v_pk_max_f16 v2, v2, v6 22235883ad34SMatt Arsenault; GFX10-NEXT: v_pk_max_f16 v3, v3, v7 22245883ad34SMatt Arsenault; GFX10-NEXT: s_setpc_b64 s[30:31] 22255883ad34SMatt Arsenault; 22265883ad34SMatt Arsenault; GFX11-LABEL: v_maximumnum_v8f16: 22275883ad34SMatt Arsenault; GFX11: ; %bb.0: 22285883ad34SMatt Arsenault; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 22295883ad34SMatt Arsenault; GFX11-NEXT: v_pk_max_f16 v4, v4, v4 22305883ad34SMatt Arsenault; GFX11-NEXT: v_pk_max_f16 v0, v0, v0 22315883ad34SMatt Arsenault; GFX11-NEXT: v_pk_max_f16 v5, v5, v5 22325883ad34SMatt Arsenault; GFX11-NEXT: v_pk_max_f16 v1, v1, v1 22335883ad34SMatt Arsenault; GFX11-NEXT: v_pk_max_f16 v6, v6, v6 22345883ad34SMatt Arsenault; GFX11-NEXT: v_pk_max_f16 v2, v2, v2 22355883ad34SMatt Arsenault; GFX11-NEXT: v_pk_max_f16 v7, v7, v7 22365883ad34SMatt Arsenault; GFX11-NEXT: v_pk_max_f16 v3, v3, v3 22375883ad34SMatt Arsenault; GFX11-NEXT: v_pk_max_f16 v0, v0, v4 22385883ad34SMatt Arsenault; GFX11-NEXT: v_pk_max_f16 v1, v1, v5 22395883ad34SMatt Arsenault; GFX11-NEXT: v_pk_max_f16 v2, v2, v6 22405883ad34SMatt Arsenault; GFX11-NEXT: s_delay_alu instid0(VALU_DEP_4) 22415883ad34SMatt Arsenault; GFX11-NEXT: v_pk_max_f16 v3, v3, v7 22425883ad34SMatt Arsenault; GFX11-NEXT: s_setpc_b64 s[30:31] 22435883ad34SMatt Arsenault; 22445883ad34SMatt Arsenault; GFX12-LABEL: v_maximumnum_v8f16: 22455883ad34SMatt Arsenault; GFX12: ; %bb.0: 22465883ad34SMatt Arsenault; GFX12-NEXT: s_wait_loadcnt_dscnt 0x0 22475883ad34SMatt Arsenault; GFX12-NEXT: s_wait_expcnt 0x0 22485883ad34SMatt Arsenault; GFX12-NEXT: s_wait_samplecnt 0x0 22495883ad34SMatt Arsenault; GFX12-NEXT: s_wait_bvhcnt 0x0 22505883ad34SMatt Arsenault; GFX12-NEXT: s_wait_kmcnt 0x0 22515883ad34SMatt Arsenault; GFX12-NEXT: v_pk_max_num_f16 v4, v4, v4 22525883ad34SMatt Arsenault; GFX12-NEXT: v_pk_max_num_f16 v0, v0, v0 22535883ad34SMatt Arsenault; GFX12-NEXT: v_pk_max_num_f16 v5, v5, v5 22545883ad34SMatt Arsenault; GFX12-NEXT: v_pk_max_num_f16 v1, v1, v1 22555883ad34SMatt Arsenault; GFX12-NEXT: v_pk_max_num_f16 v6, v6, v6 22565883ad34SMatt Arsenault; GFX12-NEXT: v_pk_max_num_f16 v2, v2, v2 22575883ad34SMatt Arsenault; GFX12-NEXT: v_pk_max_num_f16 v7, v7, v7 22585883ad34SMatt Arsenault; GFX12-NEXT: v_pk_max_num_f16 v3, v3, v3 22595883ad34SMatt Arsenault; GFX12-NEXT: v_pk_max_num_f16 v0, v0, v4 22605883ad34SMatt Arsenault; GFX12-NEXT: v_pk_max_num_f16 v1, v1, v5 22615883ad34SMatt Arsenault; GFX12-NEXT: v_pk_max_num_f16 v2, v2, v6 22625883ad34SMatt Arsenault; GFX12-NEXT: s_delay_alu instid0(VALU_DEP_4) 22635883ad34SMatt Arsenault; GFX12-NEXT: v_pk_max_num_f16 v3, v3, v7 22645883ad34SMatt Arsenault; GFX12-NEXT: s_setpc_b64 s[30:31] 22655883ad34SMatt Arsenault %result = call <8 x half> @llvm.maximumnum.v8f16(<8 x half> %x, <8 x half> %y) 22665883ad34SMatt Arsenault ret <8 x half> %result 22675883ad34SMatt Arsenault} 22685883ad34SMatt Arsenault 22695883ad34SMatt Arsenaultdefine <2 x float> @v_maximumnum_v2f32(<2 x float> %x, <2 x float> %y) { 22705883ad34SMatt Arsenault; GFX8-LABEL: v_maximumnum_v2f32: 22715883ad34SMatt Arsenault; GFX8: ; %bb.0: 22725883ad34SMatt Arsenault; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 22735883ad34SMatt Arsenault; GFX8-NEXT: v_mul_f32_e32 v2, 1.0, v2 22745883ad34SMatt Arsenault; GFX8-NEXT: v_mul_f32_e32 v0, 1.0, v0 22755883ad34SMatt Arsenault; GFX8-NEXT: v_max_f32_e32 v0, v0, v2 22765883ad34SMatt Arsenault; GFX8-NEXT: v_mul_f32_e32 v2, 1.0, v3 22775883ad34SMatt Arsenault; GFX8-NEXT: v_mul_f32_e32 v1, 1.0, v1 22785883ad34SMatt Arsenault; GFX8-NEXT: v_max_f32_e32 v1, v1, v2 22795883ad34SMatt Arsenault; GFX8-NEXT: s_setpc_b64 s[30:31] 22805883ad34SMatt Arsenault; 22815883ad34SMatt Arsenault; GFX9-LABEL: v_maximumnum_v2f32: 22825883ad34SMatt Arsenault; GFX9: ; %bb.0: 22835883ad34SMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 22845883ad34SMatt Arsenault; GFX9-NEXT: v_max_f32_e32 v2, v2, v2 22855883ad34SMatt Arsenault; GFX9-NEXT: v_max_f32_e32 v0, v0, v0 22865883ad34SMatt Arsenault; GFX9-NEXT: v_max_f32_e32 v0, v0, v2 22875883ad34SMatt Arsenault; GFX9-NEXT: v_max_f32_e32 v2, v3, v3 22885883ad34SMatt Arsenault; GFX9-NEXT: v_max_f32_e32 v1, v1, v1 22895883ad34SMatt Arsenault; GFX9-NEXT: v_max_f32_e32 v1, v1, v2 22905883ad34SMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 22915883ad34SMatt Arsenault; 22925883ad34SMatt Arsenault; GFX10-LABEL: v_maximumnum_v2f32: 22935883ad34SMatt Arsenault; GFX10: ; %bb.0: 22945883ad34SMatt Arsenault; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 22955883ad34SMatt Arsenault; GFX10-NEXT: v_max_f32_e32 v2, v2, v2 22965883ad34SMatt Arsenault; GFX10-NEXT: v_max_f32_e32 v0, v0, v0 22975883ad34SMatt Arsenault; GFX10-NEXT: v_max_f32_e32 v3, v3, v3 22985883ad34SMatt Arsenault; GFX10-NEXT: v_max_f32_e32 v1, v1, v1 22995883ad34SMatt Arsenault; GFX10-NEXT: v_max_f32_e32 v0, v0, v2 23005883ad34SMatt Arsenault; GFX10-NEXT: v_max_f32_e32 v1, v1, v3 23015883ad34SMatt Arsenault; GFX10-NEXT: s_setpc_b64 s[30:31] 23025883ad34SMatt Arsenault; 23035883ad34SMatt Arsenault; GFX11-LABEL: v_maximumnum_v2f32: 23045883ad34SMatt Arsenault; GFX11: ; %bb.0: 23055883ad34SMatt Arsenault; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 23065883ad34SMatt Arsenault; GFX11-NEXT: v_dual_max_f32 v2, v2, v2 :: v_dual_max_f32 v3, v3, v3 23075883ad34SMatt Arsenault; GFX11-NEXT: v_dual_max_f32 v0, v0, v0 :: v_dual_max_f32 v1, v1, v1 23085883ad34SMatt Arsenault; GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1) 23095883ad34SMatt Arsenault; GFX11-NEXT: v_dual_max_f32 v0, v0, v2 :: v_dual_max_f32 v1, v1, v3 23105883ad34SMatt Arsenault; GFX11-NEXT: s_setpc_b64 s[30:31] 23115883ad34SMatt Arsenault; 23125883ad34SMatt Arsenault; GFX12-LABEL: v_maximumnum_v2f32: 23135883ad34SMatt Arsenault; GFX12: ; %bb.0: 23145883ad34SMatt Arsenault; GFX12-NEXT: s_wait_loadcnt_dscnt 0x0 23155883ad34SMatt Arsenault; GFX12-NEXT: s_wait_expcnt 0x0 23165883ad34SMatt Arsenault; GFX12-NEXT: s_wait_samplecnt 0x0 23175883ad34SMatt Arsenault; GFX12-NEXT: s_wait_bvhcnt 0x0 23185883ad34SMatt Arsenault; GFX12-NEXT: s_wait_kmcnt 0x0 23195883ad34SMatt Arsenault; GFX12-NEXT: v_dual_max_num_f32 v2, v2, v2 :: v_dual_max_num_f32 v3, v3, v3 23205883ad34SMatt Arsenault; GFX12-NEXT: v_dual_max_num_f32 v0, v0, v0 :: v_dual_max_num_f32 v1, v1, v1 23215883ad34SMatt Arsenault; GFX12-NEXT: s_delay_alu instid0(VALU_DEP_1) 23225883ad34SMatt Arsenault; GFX12-NEXT: v_dual_max_num_f32 v0, v0, v2 :: v_dual_max_num_f32 v1, v1, v3 23235883ad34SMatt Arsenault; GFX12-NEXT: s_setpc_b64 s[30:31] 23245883ad34SMatt Arsenault %result = call <2 x float> @llvm.maximumnum.v2f32(<2 x float> %x, <2 x float> %y) 23255883ad34SMatt Arsenault ret <2 x float> %result 23265883ad34SMatt Arsenault} 23275883ad34SMatt Arsenault 23285883ad34SMatt Arsenaultdefine <2 x float> @v_maximumnum_v2f32_nnan(<2 x float> %x, <2 x float> %y) { 23295883ad34SMatt Arsenault; GFX8-LABEL: v_maximumnum_v2f32_nnan: 23305883ad34SMatt Arsenault; GFX8: ; %bb.0: 23315883ad34SMatt Arsenault; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 23325883ad34SMatt Arsenault; GFX8-NEXT: v_max_f32_e32 v0, v0, v2 23335883ad34SMatt Arsenault; GFX8-NEXT: v_max_f32_e32 v1, v1, v3 23345883ad34SMatt Arsenault; GFX8-NEXT: s_setpc_b64 s[30:31] 23355883ad34SMatt Arsenault; 23365883ad34SMatt Arsenault; GFX9-LABEL: v_maximumnum_v2f32_nnan: 23375883ad34SMatt Arsenault; GFX9: ; %bb.0: 23385883ad34SMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 23395883ad34SMatt Arsenault; GFX9-NEXT: v_max_f32_e32 v0, v0, v2 23405883ad34SMatt Arsenault; GFX9-NEXT: v_max_f32_e32 v1, v1, v3 23415883ad34SMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 23425883ad34SMatt Arsenault; 23435883ad34SMatt Arsenault; GFX10-LABEL: v_maximumnum_v2f32_nnan: 23445883ad34SMatt Arsenault; GFX10: ; %bb.0: 23455883ad34SMatt Arsenault; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 23465883ad34SMatt Arsenault; GFX10-NEXT: v_max_f32_e32 v0, v0, v2 23475883ad34SMatt Arsenault; GFX10-NEXT: v_max_f32_e32 v1, v1, v3 23485883ad34SMatt Arsenault; GFX10-NEXT: s_setpc_b64 s[30:31] 23495883ad34SMatt Arsenault; 23505883ad34SMatt Arsenault; GFX11-LABEL: v_maximumnum_v2f32_nnan: 23515883ad34SMatt Arsenault; GFX11: ; %bb.0: 23525883ad34SMatt Arsenault; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 23535883ad34SMatt Arsenault; GFX11-NEXT: v_dual_max_f32 v0, v0, v2 :: v_dual_max_f32 v1, v1, v3 23545883ad34SMatt Arsenault; GFX11-NEXT: s_setpc_b64 s[30:31] 23555883ad34SMatt Arsenault; 23565883ad34SMatt Arsenault; GFX12-LABEL: v_maximumnum_v2f32_nnan: 23575883ad34SMatt Arsenault; GFX12: ; %bb.0: 23585883ad34SMatt Arsenault; GFX12-NEXT: s_wait_loadcnt_dscnt 0x0 23595883ad34SMatt Arsenault; GFX12-NEXT: s_wait_expcnt 0x0 23605883ad34SMatt Arsenault; GFX12-NEXT: s_wait_samplecnt 0x0 23615883ad34SMatt Arsenault; GFX12-NEXT: s_wait_bvhcnt 0x0 23625883ad34SMatt Arsenault; GFX12-NEXT: s_wait_kmcnt 0x0 23635883ad34SMatt Arsenault; GFX12-NEXT: v_dual_max_num_f32 v0, v0, v2 :: v_dual_max_num_f32 v1, v1, v3 23645883ad34SMatt Arsenault; GFX12-NEXT: s_setpc_b64 s[30:31] 23655883ad34SMatt Arsenault %result = call nnan <2 x float> @llvm.maximumnum.v2f32(<2 x float> %x, <2 x float> %y) 23665883ad34SMatt Arsenault ret <2 x float> %result 23675883ad34SMatt Arsenault} 23685883ad34SMatt Arsenault 23695883ad34SMatt Arsenaultdefine <3 x float> @v_maximumnum_v3f32(<3 x float> %x, <3 x float> %y) { 23705883ad34SMatt Arsenault; GFX8-LABEL: v_maximumnum_v3f32: 23715883ad34SMatt Arsenault; GFX8: ; %bb.0: 23725883ad34SMatt Arsenault; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 23735883ad34SMatt Arsenault; GFX8-NEXT: v_mul_f32_e32 v3, 1.0, v3 23745883ad34SMatt Arsenault; GFX8-NEXT: v_mul_f32_e32 v0, 1.0, v0 23755883ad34SMatt Arsenault; GFX8-NEXT: v_max_f32_e32 v0, v0, v3 23765883ad34SMatt Arsenault; GFX8-NEXT: v_mul_f32_e32 v3, 1.0, v4 23775883ad34SMatt Arsenault; GFX8-NEXT: v_mul_f32_e32 v1, 1.0, v1 23785883ad34SMatt Arsenault; GFX8-NEXT: v_max_f32_e32 v1, v1, v3 23795883ad34SMatt Arsenault; GFX8-NEXT: v_mul_f32_e32 v3, 1.0, v5 23805883ad34SMatt Arsenault; GFX8-NEXT: v_mul_f32_e32 v2, 1.0, v2 23815883ad34SMatt Arsenault; GFX8-NEXT: v_max_f32_e32 v2, v2, v3 23825883ad34SMatt Arsenault; GFX8-NEXT: s_setpc_b64 s[30:31] 23835883ad34SMatt Arsenault; 23845883ad34SMatt Arsenault; GFX9-LABEL: v_maximumnum_v3f32: 23855883ad34SMatt Arsenault; GFX9: ; %bb.0: 23865883ad34SMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 23875883ad34SMatt Arsenault; GFX9-NEXT: v_max_f32_e32 v3, v3, v3 23885883ad34SMatt Arsenault; GFX9-NEXT: v_max_f32_e32 v0, v0, v0 23895883ad34SMatt Arsenault; GFX9-NEXT: v_max_f32_e32 v0, v0, v3 23905883ad34SMatt Arsenault; GFX9-NEXT: v_max_f32_e32 v3, v4, v4 23915883ad34SMatt Arsenault; GFX9-NEXT: v_max_f32_e32 v1, v1, v1 23925883ad34SMatt Arsenault; GFX9-NEXT: v_max_f32_e32 v1, v1, v3 23935883ad34SMatt Arsenault; GFX9-NEXT: v_max_f32_e32 v3, v5, v5 23945883ad34SMatt Arsenault; GFX9-NEXT: v_max_f32_e32 v2, v2, v2 23955883ad34SMatt Arsenault; GFX9-NEXT: v_max_f32_e32 v2, v2, v3 23965883ad34SMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 23975883ad34SMatt Arsenault; 23985883ad34SMatt Arsenault; GFX10-LABEL: v_maximumnum_v3f32: 23995883ad34SMatt Arsenault; GFX10: ; %bb.0: 24005883ad34SMatt Arsenault; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 24015883ad34SMatt Arsenault; GFX10-NEXT: v_max_f32_e32 v3, v3, v3 24025883ad34SMatt Arsenault; GFX10-NEXT: v_max_f32_e32 v0, v0, v0 24035883ad34SMatt Arsenault; GFX10-NEXT: v_max_f32_e32 v4, v4, v4 24045883ad34SMatt Arsenault; GFX10-NEXT: v_max_f32_e32 v1, v1, v1 24055883ad34SMatt Arsenault; GFX10-NEXT: v_max_f32_e32 v5, v5, v5 24065883ad34SMatt Arsenault; GFX10-NEXT: v_max_f32_e32 v2, v2, v2 24075883ad34SMatt Arsenault; GFX10-NEXT: v_max_f32_e32 v0, v0, v3 24085883ad34SMatt Arsenault; GFX10-NEXT: v_max_f32_e32 v1, v1, v4 24095883ad34SMatt Arsenault; GFX10-NEXT: v_max_f32_e32 v2, v2, v5 24105883ad34SMatt Arsenault; GFX10-NEXT: s_setpc_b64 s[30:31] 24115883ad34SMatt Arsenault; 24125883ad34SMatt Arsenault; GFX11-LABEL: v_maximumnum_v3f32: 24135883ad34SMatt Arsenault; GFX11: ; %bb.0: 24145883ad34SMatt Arsenault; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 24155883ad34SMatt Arsenault; GFX11-NEXT: v_dual_max_f32 v3, v3, v3 :: v_dual_max_f32 v0, v0, v0 24165883ad34SMatt Arsenault; GFX11-NEXT: v_dual_max_f32 v4, v4, v4 :: v_dual_max_f32 v1, v1, v1 24175883ad34SMatt Arsenault; GFX11-NEXT: v_dual_max_f32 v5, v5, v5 :: v_dual_max_f32 v2, v2, v2 24185883ad34SMatt Arsenault; GFX11-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2) 24195883ad34SMatt Arsenault; GFX11-NEXT: v_dual_max_f32 v0, v0, v3 :: v_dual_max_f32 v1, v1, v4 24205883ad34SMatt Arsenault; GFX11-NEXT: v_max_f32_e32 v2, v2, v5 24215883ad34SMatt Arsenault; GFX11-NEXT: s_setpc_b64 s[30:31] 24225883ad34SMatt Arsenault; 24235883ad34SMatt Arsenault; GFX12-LABEL: v_maximumnum_v3f32: 24245883ad34SMatt Arsenault; GFX12: ; %bb.0: 24255883ad34SMatt Arsenault; GFX12-NEXT: s_wait_loadcnt_dscnt 0x0 24265883ad34SMatt Arsenault; GFX12-NEXT: s_wait_expcnt 0x0 24275883ad34SMatt Arsenault; GFX12-NEXT: s_wait_samplecnt 0x0 24285883ad34SMatt Arsenault; GFX12-NEXT: s_wait_bvhcnt 0x0 24295883ad34SMatt Arsenault; GFX12-NEXT: s_wait_kmcnt 0x0 24305883ad34SMatt Arsenault; GFX12-NEXT: v_dual_max_num_f32 v3, v3, v3 :: v_dual_max_num_f32 v0, v0, v0 24315883ad34SMatt Arsenault; GFX12-NEXT: v_dual_max_num_f32 v4, v4, v4 :: v_dual_max_num_f32 v1, v1, v1 24325883ad34SMatt Arsenault; GFX12-NEXT: v_dual_max_num_f32 v5, v5, v5 :: v_dual_max_num_f32 v2, v2, v2 24335883ad34SMatt Arsenault; GFX12-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2) 24345883ad34SMatt Arsenault; GFX12-NEXT: v_dual_max_num_f32 v0, v0, v3 :: v_dual_max_num_f32 v1, v1, v4 24355883ad34SMatt Arsenault; GFX12-NEXT: v_max_num_f32_e32 v2, v2, v5 24365883ad34SMatt Arsenault; GFX12-NEXT: s_setpc_b64 s[30:31] 24375883ad34SMatt Arsenault %result = call <3 x float> @llvm.maximumnum.v3f32(<3 x float> %x, <3 x float> %y) 24385883ad34SMatt Arsenault ret <3 x float> %result 24395883ad34SMatt Arsenault} 24405883ad34SMatt Arsenault 24415883ad34SMatt Arsenaultdefine <3 x float> @v_maximumnum_v3f32_nnan(<3 x float> %x, <3 x float> %y) { 24425883ad34SMatt Arsenault; GFX8-LABEL: v_maximumnum_v3f32_nnan: 24435883ad34SMatt Arsenault; GFX8: ; %bb.0: 24445883ad34SMatt Arsenault; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 24455883ad34SMatt Arsenault; GFX8-NEXT: v_max_f32_e32 v0, v0, v3 24465883ad34SMatt Arsenault; GFX8-NEXT: v_max_f32_e32 v1, v1, v4 24475883ad34SMatt Arsenault; GFX8-NEXT: v_max_f32_e32 v2, v2, v5 24485883ad34SMatt Arsenault; GFX8-NEXT: s_setpc_b64 s[30:31] 24495883ad34SMatt Arsenault; 24505883ad34SMatt Arsenault; GFX9-LABEL: v_maximumnum_v3f32_nnan: 24515883ad34SMatt Arsenault; GFX9: ; %bb.0: 24525883ad34SMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 24535883ad34SMatt Arsenault; GFX9-NEXT: v_max_f32_e32 v0, v0, v3 24545883ad34SMatt Arsenault; GFX9-NEXT: v_max_f32_e32 v1, v1, v4 24555883ad34SMatt Arsenault; GFX9-NEXT: v_max_f32_e32 v2, v2, v5 24565883ad34SMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 24575883ad34SMatt Arsenault; 24585883ad34SMatt Arsenault; GFX10-LABEL: v_maximumnum_v3f32_nnan: 24595883ad34SMatt Arsenault; GFX10: ; %bb.0: 24605883ad34SMatt Arsenault; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 24615883ad34SMatt Arsenault; GFX10-NEXT: v_max_f32_e32 v0, v0, v3 24625883ad34SMatt Arsenault; GFX10-NEXT: v_max_f32_e32 v1, v1, v4 24635883ad34SMatt Arsenault; GFX10-NEXT: v_max_f32_e32 v2, v2, v5 24645883ad34SMatt Arsenault; GFX10-NEXT: s_setpc_b64 s[30:31] 24655883ad34SMatt Arsenault; 24665883ad34SMatt Arsenault; GFX11-LABEL: v_maximumnum_v3f32_nnan: 24675883ad34SMatt Arsenault; GFX11: ; %bb.0: 24685883ad34SMatt Arsenault; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 24695883ad34SMatt Arsenault; GFX11-NEXT: v_dual_max_f32 v0, v0, v3 :: v_dual_max_f32 v1, v1, v4 24705883ad34SMatt Arsenault; GFX11-NEXT: v_max_f32_e32 v2, v2, v5 24715883ad34SMatt Arsenault; GFX11-NEXT: s_setpc_b64 s[30:31] 24725883ad34SMatt Arsenault; 24735883ad34SMatt Arsenault; GFX12-LABEL: v_maximumnum_v3f32_nnan: 24745883ad34SMatt Arsenault; GFX12: ; %bb.0: 24755883ad34SMatt Arsenault; GFX12-NEXT: s_wait_loadcnt_dscnt 0x0 24765883ad34SMatt Arsenault; GFX12-NEXT: s_wait_expcnt 0x0 24775883ad34SMatt Arsenault; GFX12-NEXT: s_wait_samplecnt 0x0 24785883ad34SMatt Arsenault; GFX12-NEXT: s_wait_bvhcnt 0x0 24795883ad34SMatt Arsenault; GFX12-NEXT: s_wait_kmcnt 0x0 24805883ad34SMatt Arsenault; GFX12-NEXT: v_dual_max_num_f32 v0, v0, v3 :: v_dual_max_num_f32 v1, v1, v4 24815883ad34SMatt Arsenault; GFX12-NEXT: v_max_num_f32_e32 v2, v2, v5 24825883ad34SMatt Arsenault; GFX12-NEXT: s_setpc_b64 s[30:31] 24835883ad34SMatt Arsenault %result = call nnan <3 x float> @llvm.maximumnum.v3f32(<3 x float> %x, <3 x float> %y) 24845883ad34SMatt Arsenault ret <3 x float> %result 24855883ad34SMatt Arsenault} 24865883ad34SMatt Arsenault 24875883ad34SMatt Arsenaultdefine <4 x float> @v_maximumnum_v4f32(<4 x float> %x, <4 x float> %y) { 24885883ad34SMatt Arsenault; GFX8-LABEL: v_maximumnum_v4f32: 24895883ad34SMatt Arsenault; GFX8: ; %bb.0: 24905883ad34SMatt Arsenault; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 24915883ad34SMatt Arsenault; GFX8-NEXT: v_mul_f32_e32 v4, 1.0, v4 24925883ad34SMatt Arsenault; GFX8-NEXT: v_mul_f32_e32 v0, 1.0, v0 24935883ad34SMatt Arsenault; GFX8-NEXT: v_max_f32_e32 v0, v0, v4 24945883ad34SMatt Arsenault; GFX8-NEXT: v_mul_f32_e32 v4, 1.0, v5 24955883ad34SMatt Arsenault; GFX8-NEXT: v_mul_f32_e32 v1, 1.0, v1 24965883ad34SMatt Arsenault; GFX8-NEXT: v_max_f32_e32 v1, v1, v4 24975883ad34SMatt Arsenault; GFX8-NEXT: v_mul_f32_e32 v4, 1.0, v6 24985883ad34SMatt Arsenault; GFX8-NEXT: v_mul_f32_e32 v2, 1.0, v2 24995883ad34SMatt Arsenault; GFX8-NEXT: v_max_f32_e32 v2, v2, v4 25005883ad34SMatt Arsenault; GFX8-NEXT: v_mul_f32_e32 v4, 1.0, v7 25015883ad34SMatt Arsenault; GFX8-NEXT: v_mul_f32_e32 v3, 1.0, v3 25025883ad34SMatt Arsenault; GFX8-NEXT: v_max_f32_e32 v3, v3, v4 25035883ad34SMatt Arsenault; GFX8-NEXT: s_setpc_b64 s[30:31] 25045883ad34SMatt Arsenault; 25055883ad34SMatt Arsenault; GFX9-LABEL: v_maximumnum_v4f32: 25065883ad34SMatt Arsenault; GFX9: ; %bb.0: 25075883ad34SMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 25085883ad34SMatt Arsenault; GFX9-NEXT: v_max_f32_e32 v4, v4, v4 25095883ad34SMatt Arsenault; GFX9-NEXT: v_max_f32_e32 v0, v0, v0 25105883ad34SMatt Arsenault; GFX9-NEXT: v_max_f32_e32 v0, v0, v4 25115883ad34SMatt Arsenault; GFX9-NEXT: v_max_f32_e32 v4, v5, v5 25125883ad34SMatt Arsenault; GFX9-NEXT: v_max_f32_e32 v1, v1, v1 25135883ad34SMatt Arsenault; GFX9-NEXT: v_max_f32_e32 v1, v1, v4 25145883ad34SMatt Arsenault; GFX9-NEXT: v_max_f32_e32 v4, v6, v6 25155883ad34SMatt Arsenault; GFX9-NEXT: v_max_f32_e32 v2, v2, v2 25165883ad34SMatt Arsenault; GFX9-NEXT: v_max_f32_e32 v2, v2, v4 25175883ad34SMatt Arsenault; GFX9-NEXT: v_max_f32_e32 v4, v7, v7 25185883ad34SMatt Arsenault; GFX9-NEXT: v_max_f32_e32 v3, v3, v3 25195883ad34SMatt Arsenault; GFX9-NEXT: v_max_f32_e32 v3, v3, v4 25205883ad34SMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 25215883ad34SMatt Arsenault; 25225883ad34SMatt Arsenault; GFX10-LABEL: v_maximumnum_v4f32: 25235883ad34SMatt Arsenault; GFX10: ; %bb.0: 25245883ad34SMatt Arsenault; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 25255883ad34SMatt Arsenault; GFX10-NEXT: v_max_f32_e32 v4, v4, v4 25265883ad34SMatt Arsenault; GFX10-NEXT: v_max_f32_e32 v0, v0, v0 25275883ad34SMatt Arsenault; GFX10-NEXT: v_max_f32_e32 v5, v5, v5 25285883ad34SMatt Arsenault; GFX10-NEXT: v_max_f32_e32 v1, v1, v1 25295883ad34SMatt Arsenault; GFX10-NEXT: v_max_f32_e32 v6, v6, v6 25305883ad34SMatt Arsenault; GFX10-NEXT: v_max_f32_e32 v2, v2, v2 25315883ad34SMatt Arsenault; GFX10-NEXT: v_max_f32_e32 v7, v7, v7 25325883ad34SMatt Arsenault; GFX10-NEXT: v_max_f32_e32 v3, v3, v3 25335883ad34SMatt Arsenault; GFX10-NEXT: v_max_f32_e32 v0, v0, v4 25345883ad34SMatt Arsenault; GFX10-NEXT: v_max_f32_e32 v1, v1, v5 25355883ad34SMatt Arsenault; GFX10-NEXT: v_max_f32_e32 v2, v2, v6 25365883ad34SMatt Arsenault; GFX10-NEXT: v_max_f32_e32 v3, v3, v7 25375883ad34SMatt Arsenault; GFX10-NEXT: s_setpc_b64 s[30:31] 25385883ad34SMatt Arsenault; 25395883ad34SMatt Arsenault; GFX11-LABEL: v_maximumnum_v4f32: 25405883ad34SMatt Arsenault; GFX11: ; %bb.0: 25415883ad34SMatt Arsenault; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 25425883ad34SMatt Arsenault; GFX11-NEXT: v_dual_max_f32 v4, v4, v4 :: v_dual_max_f32 v5, v5, v5 25435883ad34SMatt Arsenault; GFX11-NEXT: v_dual_max_f32 v0, v0, v0 :: v_dual_max_f32 v1, v1, v1 25445883ad34SMatt Arsenault; GFX11-NEXT: v_dual_max_f32 v6, v6, v6 :: v_dual_max_f32 v7, v7, v7 25455883ad34SMatt Arsenault; GFX11-NEXT: v_dual_max_f32 v2, v2, v2 :: v_dual_max_f32 v3, v3, v3 25465883ad34SMatt Arsenault; GFX11-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2) 25475883ad34SMatt Arsenault; GFX11-NEXT: v_dual_max_f32 v0, v0, v4 :: v_dual_max_f32 v1, v1, v5 25485883ad34SMatt Arsenault; GFX11-NEXT: v_dual_max_f32 v2, v2, v6 :: v_dual_max_f32 v3, v3, v7 25495883ad34SMatt Arsenault; GFX11-NEXT: s_setpc_b64 s[30:31] 25505883ad34SMatt Arsenault; 25515883ad34SMatt Arsenault; GFX12-LABEL: v_maximumnum_v4f32: 25525883ad34SMatt Arsenault; GFX12: ; %bb.0: 25535883ad34SMatt Arsenault; GFX12-NEXT: s_wait_loadcnt_dscnt 0x0 25545883ad34SMatt Arsenault; GFX12-NEXT: s_wait_expcnt 0x0 25555883ad34SMatt Arsenault; GFX12-NEXT: s_wait_samplecnt 0x0 25565883ad34SMatt Arsenault; GFX12-NEXT: s_wait_bvhcnt 0x0 25575883ad34SMatt Arsenault; GFX12-NEXT: s_wait_kmcnt 0x0 25585883ad34SMatt Arsenault; GFX12-NEXT: v_dual_max_num_f32 v4, v4, v4 :: v_dual_max_num_f32 v5, v5, v5 25595883ad34SMatt Arsenault; GFX12-NEXT: v_dual_max_num_f32 v0, v0, v0 :: v_dual_max_num_f32 v1, v1, v1 25605883ad34SMatt Arsenault; GFX12-NEXT: v_dual_max_num_f32 v6, v6, v6 :: v_dual_max_num_f32 v7, v7, v7 25615883ad34SMatt Arsenault; GFX12-NEXT: v_dual_max_num_f32 v2, v2, v2 :: v_dual_max_num_f32 v3, v3, v3 25625883ad34SMatt Arsenault; GFX12-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2) 25635883ad34SMatt Arsenault; GFX12-NEXT: v_dual_max_num_f32 v0, v0, v4 :: v_dual_max_num_f32 v1, v1, v5 25645883ad34SMatt Arsenault; GFX12-NEXT: v_dual_max_num_f32 v2, v2, v6 :: v_dual_max_num_f32 v3, v3, v7 25655883ad34SMatt Arsenault; GFX12-NEXT: s_setpc_b64 s[30:31] 25665883ad34SMatt Arsenault %result = call <4 x float> @llvm.maximumnum.v4f32(<4 x float> %x, <4 x float> %y) 25675883ad34SMatt Arsenault ret <4 x float> %result 25685883ad34SMatt Arsenault} 25695883ad34SMatt Arsenault 25705883ad34SMatt Arsenaultdefine <4 x float> @v_maximumnum_v4f32_nnan(<4 x float> %x, <4 x float> %y) { 25715883ad34SMatt Arsenault; GFX8-LABEL: v_maximumnum_v4f32_nnan: 25725883ad34SMatt Arsenault; GFX8: ; %bb.0: 25735883ad34SMatt Arsenault; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 25745883ad34SMatt Arsenault; GFX8-NEXT: v_max_f32_e32 v0, v0, v4 25755883ad34SMatt Arsenault; GFX8-NEXT: v_max_f32_e32 v1, v1, v5 25765883ad34SMatt Arsenault; GFX8-NEXT: v_max_f32_e32 v2, v2, v6 25775883ad34SMatt Arsenault; GFX8-NEXT: v_max_f32_e32 v3, v3, v7 25785883ad34SMatt Arsenault; GFX8-NEXT: s_setpc_b64 s[30:31] 25795883ad34SMatt Arsenault; 25805883ad34SMatt Arsenault; GFX9-LABEL: v_maximumnum_v4f32_nnan: 25815883ad34SMatt Arsenault; GFX9: ; %bb.0: 25825883ad34SMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 25835883ad34SMatt Arsenault; GFX9-NEXT: v_max_f32_e32 v0, v0, v4 25845883ad34SMatt Arsenault; GFX9-NEXT: v_max_f32_e32 v1, v1, v5 25855883ad34SMatt Arsenault; GFX9-NEXT: v_max_f32_e32 v2, v2, v6 25865883ad34SMatt Arsenault; GFX9-NEXT: v_max_f32_e32 v3, v3, v7 25875883ad34SMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 25885883ad34SMatt Arsenault; 25895883ad34SMatt Arsenault; GFX10-LABEL: v_maximumnum_v4f32_nnan: 25905883ad34SMatt Arsenault; GFX10: ; %bb.0: 25915883ad34SMatt Arsenault; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 25925883ad34SMatt Arsenault; GFX10-NEXT: v_max_f32_e32 v0, v0, v4 25935883ad34SMatt Arsenault; GFX10-NEXT: v_max_f32_e32 v1, v1, v5 25945883ad34SMatt Arsenault; GFX10-NEXT: v_max_f32_e32 v2, v2, v6 25955883ad34SMatt Arsenault; GFX10-NEXT: v_max_f32_e32 v3, v3, v7 25965883ad34SMatt Arsenault; GFX10-NEXT: s_setpc_b64 s[30:31] 25975883ad34SMatt Arsenault; 25985883ad34SMatt Arsenault; GFX11-LABEL: v_maximumnum_v4f32_nnan: 25995883ad34SMatt Arsenault; GFX11: ; %bb.0: 26005883ad34SMatt Arsenault; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 26015883ad34SMatt Arsenault; GFX11-NEXT: v_dual_max_f32 v0, v0, v4 :: v_dual_max_f32 v1, v1, v5 26025883ad34SMatt Arsenault; GFX11-NEXT: v_dual_max_f32 v2, v2, v6 :: v_dual_max_f32 v3, v3, v7 26035883ad34SMatt Arsenault; GFX11-NEXT: s_setpc_b64 s[30:31] 26045883ad34SMatt Arsenault; 26055883ad34SMatt Arsenault; GFX12-LABEL: v_maximumnum_v4f32_nnan: 26065883ad34SMatt Arsenault; GFX12: ; %bb.0: 26075883ad34SMatt Arsenault; GFX12-NEXT: s_wait_loadcnt_dscnt 0x0 26085883ad34SMatt Arsenault; GFX12-NEXT: s_wait_expcnt 0x0 26095883ad34SMatt Arsenault; GFX12-NEXT: s_wait_samplecnt 0x0 26105883ad34SMatt Arsenault; GFX12-NEXT: s_wait_bvhcnt 0x0 26115883ad34SMatt Arsenault; GFX12-NEXT: s_wait_kmcnt 0x0 26125883ad34SMatt Arsenault; GFX12-NEXT: v_dual_max_num_f32 v0, v0, v4 :: v_dual_max_num_f32 v1, v1, v5 26135883ad34SMatt Arsenault; GFX12-NEXT: v_dual_max_num_f32 v2, v2, v6 :: v_dual_max_num_f32 v3, v3, v7 26145883ad34SMatt Arsenault; GFX12-NEXT: s_setpc_b64 s[30:31] 26155883ad34SMatt Arsenault %result = call nnan <4 x float> @llvm.maximumnum.v4f32(<4 x float> %x, <4 x float> %y) 26165883ad34SMatt Arsenault ret <4 x float> %result 26175883ad34SMatt Arsenault} 26185883ad34SMatt Arsenault 26195883ad34SMatt Arsenaultdefine <2 x double> @v_maximumnum_v2f64(<2 x double> %x, <2 x double> %y) { 26205883ad34SMatt Arsenault; GFX8-LABEL: v_maximumnum_v2f64: 26215883ad34SMatt Arsenault; GFX8: ; %bb.0: 26225883ad34SMatt Arsenault; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 26235883ad34SMatt Arsenault; GFX8-NEXT: v_max_f64 v[4:5], v[4:5], v[4:5] 26245883ad34SMatt Arsenault; GFX8-NEXT: v_max_f64 v[0:1], v[0:1], v[0:1] 26255883ad34SMatt Arsenault; GFX8-NEXT: v_max_f64 v[6:7], v[6:7], v[6:7] 26265883ad34SMatt Arsenault; GFX8-NEXT: v_max_f64 v[2:3], v[2:3], v[2:3] 26275883ad34SMatt Arsenault; GFX8-NEXT: v_max_f64 v[0:1], v[0:1], v[4:5] 26285883ad34SMatt Arsenault; GFX8-NEXT: v_max_f64 v[2:3], v[2:3], v[6:7] 26295883ad34SMatt Arsenault; GFX8-NEXT: s_setpc_b64 s[30:31] 26305883ad34SMatt Arsenault; 26315883ad34SMatt Arsenault; GFX9-LABEL: v_maximumnum_v2f64: 26325883ad34SMatt Arsenault; GFX9: ; %bb.0: 26335883ad34SMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 26345883ad34SMatt Arsenault; GFX9-NEXT: v_max_f64 v[4:5], v[4:5], v[4:5] 26355883ad34SMatt Arsenault; GFX9-NEXT: v_max_f64 v[0:1], v[0:1], v[0:1] 26365883ad34SMatt Arsenault; GFX9-NEXT: v_max_f64 v[6:7], v[6:7], v[6:7] 26375883ad34SMatt Arsenault; GFX9-NEXT: v_max_f64 v[2:3], v[2:3], v[2:3] 26385883ad34SMatt Arsenault; GFX9-NEXT: v_max_f64 v[0:1], v[0:1], v[4:5] 26395883ad34SMatt Arsenault; GFX9-NEXT: v_max_f64 v[2:3], v[2:3], v[6:7] 26405883ad34SMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 26415883ad34SMatt Arsenault; 26425883ad34SMatt Arsenault; GFX10-LABEL: v_maximumnum_v2f64: 26435883ad34SMatt Arsenault; GFX10: ; %bb.0: 26445883ad34SMatt Arsenault; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 26455883ad34SMatt Arsenault; GFX10-NEXT: v_max_f64 v[4:5], v[4:5], v[4:5] 26465883ad34SMatt Arsenault; GFX10-NEXT: v_max_f64 v[0:1], v[0:1], v[0:1] 26475883ad34SMatt Arsenault; GFX10-NEXT: v_max_f64 v[6:7], v[6:7], v[6:7] 26485883ad34SMatt Arsenault; GFX10-NEXT: v_max_f64 v[2:3], v[2:3], v[2:3] 26495883ad34SMatt Arsenault; GFX10-NEXT: v_max_f64 v[0:1], v[0:1], v[4:5] 26505883ad34SMatt Arsenault; GFX10-NEXT: v_max_f64 v[2:3], v[2:3], v[6:7] 26515883ad34SMatt Arsenault; GFX10-NEXT: s_setpc_b64 s[30:31] 26525883ad34SMatt Arsenault; 26535883ad34SMatt Arsenault; GFX11-LABEL: v_maximumnum_v2f64: 26545883ad34SMatt Arsenault; GFX11: ; %bb.0: 26555883ad34SMatt Arsenault; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 26565883ad34SMatt Arsenault; GFX11-NEXT: v_max_f64 v[4:5], v[4:5], v[4:5] 26575883ad34SMatt Arsenault; GFX11-NEXT: v_max_f64 v[0:1], v[0:1], v[0:1] 26585883ad34SMatt Arsenault; GFX11-NEXT: v_max_f64 v[6:7], v[6:7], v[6:7] 26595883ad34SMatt Arsenault; GFX11-NEXT: v_max_f64 v[2:3], v[2:3], v[2:3] 26605883ad34SMatt Arsenault; GFX11-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2) 26615883ad34SMatt Arsenault; GFX11-NEXT: v_max_f64 v[0:1], v[0:1], v[4:5] 26625883ad34SMatt Arsenault; GFX11-NEXT: v_max_f64 v[2:3], v[2:3], v[6:7] 26635883ad34SMatt Arsenault; GFX11-NEXT: s_setpc_b64 s[30:31] 26645883ad34SMatt Arsenault; 26655883ad34SMatt Arsenault; GFX12-LABEL: v_maximumnum_v2f64: 26665883ad34SMatt Arsenault; GFX12: ; %bb.0: 26675883ad34SMatt Arsenault; GFX12-NEXT: s_wait_loadcnt_dscnt 0x0 26685883ad34SMatt Arsenault; GFX12-NEXT: s_wait_expcnt 0x0 26695883ad34SMatt Arsenault; GFX12-NEXT: s_wait_samplecnt 0x0 26705883ad34SMatt Arsenault; GFX12-NEXT: s_wait_bvhcnt 0x0 26715883ad34SMatt Arsenault; GFX12-NEXT: s_wait_kmcnt 0x0 26725883ad34SMatt Arsenault; GFX12-NEXT: v_max_num_f64_e32 v[4:5], v[4:5], v[4:5] 26735883ad34SMatt Arsenault; GFX12-NEXT: v_max_num_f64_e32 v[0:1], v[0:1], v[0:1] 26745883ad34SMatt Arsenault; GFX12-NEXT: v_max_num_f64_e32 v[6:7], v[6:7], v[6:7] 26755883ad34SMatt Arsenault; GFX12-NEXT: v_max_num_f64_e32 v[2:3], v[2:3], v[2:3] 26765883ad34SMatt Arsenault; GFX12-NEXT: s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2) 26775883ad34SMatt Arsenault; GFX12-NEXT: v_max_num_f64_e32 v[0:1], v[0:1], v[4:5] 26785883ad34SMatt Arsenault; GFX12-NEXT: v_max_num_f64_e32 v[2:3], v[2:3], v[6:7] 26795883ad34SMatt Arsenault; GFX12-NEXT: s_setpc_b64 s[30:31] 26805883ad34SMatt Arsenault %result = call <2 x double> @llvm.maximumnum.v2f64(<2 x double> %x, <2 x double> %y) 26815883ad34SMatt Arsenault ret <2 x double> %result 26825883ad34SMatt Arsenault} 26835883ad34SMatt Arsenault 26845883ad34SMatt Arsenaultdefine <2 x double> @v_maximumnum_v2f64_nnan(<2 x double> %x, <2 x double> %y) { 26855883ad34SMatt Arsenault; GFX8-LABEL: v_maximumnum_v2f64_nnan: 26865883ad34SMatt Arsenault; GFX8: ; %bb.0: 26875883ad34SMatt Arsenault; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 26885883ad34SMatt Arsenault; GFX8-NEXT: v_max_f64 v[0:1], v[0:1], v[4:5] 26895883ad34SMatt Arsenault; GFX8-NEXT: v_max_f64 v[2:3], v[2:3], v[6:7] 26905883ad34SMatt Arsenault; GFX8-NEXT: s_setpc_b64 s[30:31] 26915883ad34SMatt Arsenault; 26925883ad34SMatt Arsenault; GFX9-LABEL: v_maximumnum_v2f64_nnan: 26935883ad34SMatt Arsenault; GFX9: ; %bb.0: 26945883ad34SMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 26955883ad34SMatt Arsenault; GFX9-NEXT: v_max_f64 v[0:1], v[0:1], v[4:5] 26965883ad34SMatt Arsenault; GFX9-NEXT: v_max_f64 v[2:3], v[2:3], v[6:7] 26975883ad34SMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 26985883ad34SMatt Arsenault; 26995883ad34SMatt Arsenault; GFX10-LABEL: v_maximumnum_v2f64_nnan: 27005883ad34SMatt Arsenault; GFX10: ; %bb.0: 27015883ad34SMatt Arsenault; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 27025883ad34SMatt Arsenault; GFX10-NEXT: v_max_f64 v[0:1], v[0:1], v[4:5] 27035883ad34SMatt Arsenault; GFX10-NEXT: v_max_f64 v[2:3], v[2:3], v[6:7] 27045883ad34SMatt Arsenault; GFX10-NEXT: s_setpc_b64 s[30:31] 27055883ad34SMatt Arsenault; 27065883ad34SMatt Arsenault; GFX11-LABEL: v_maximumnum_v2f64_nnan: 27075883ad34SMatt Arsenault; GFX11: ; %bb.0: 27085883ad34SMatt Arsenault; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 27095883ad34SMatt Arsenault; GFX11-NEXT: v_max_f64 v[0:1], v[0:1], v[4:5] 27105883ad34SMatt Arsenault; GFX11-NEXT: v_max_f64 v[2:3], v[2:3], v[6:7] 27115883ad34SMatt Arsenault; GFX11-NEXT: s_setpc_b64 s[30:31] 27125883ad34SMatt Arsenault; 27135883ad34SMatt Arsenault; GFX12-LABEL: v_maximumnum_v2f64_nnan: 27145883ad34SMatt Arsenault; GFX12: ; %bb.0: 27155883ad34SMatt Arsenault; GFX12-NEXT: s_wait_loadcnt_dscnt 0x0 27165883ad34SMatt Arsenault; GFX12-NEXT: s_wait_expcnt 0x0 27175883ad34SMatt Arsenault; GFX12-NEXT: s_wait_samplecnt 0x0 27185883ad34SMatt Arsenault; GFX12-NEXT: s_wait_bvhcnt 0x0 27195883ad34SMatt Arsenault; GFX12-NEXT: s_wait_kmcnt 0x0 27205883ad34SMatt Arsenault; GFX12-NEXT: v_max_num_f64_e32 v[0:1], v[0:1], v[4:5] 27215883ad34SMatt Arsenault; GFX12-NEXT: v_max_num_f64_e32 v[2:3], v[2:3], v[6:7] 27225883ad34SMatt Arsenault; GFX12-NEXT: s_setpc_b64 s[30:31] 27235883ad34SMatt Arsenault %result = call nnan <2 x double> @llvm.maximumnum.v2f64(<2 x double> %x, <2 x double> %y) 27245883ad34SMatt Arsenault ret <2 x double> %result 27255883ad34SMatt Arsenault} 27265883ad34SMatt Arsenault 27275883ad34SMatt Arsenaultdefine <3 x double> @v_maximumnum_v3f64(<3 x double> %x, <3 x double> %y) { 27285883ad34SMatt Arsenault; GFX8-LABEL: v_maximumnum_v3f64: 27295883ad34SMatt Arsenault; GFX8: ; %bb.0: 27305883ad34SMatt Arsenault; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 27315883ad34SMatt Arsenault; GFX8-NEXT: v_max_f64 v[6:7], v[6:7], v[6:7] 27325883ad34SMatt Arsenault; GFX8-NEXT: v_max_f64 v[0:1], v[0:1], v[0:1] 27335883ad34SMatt Arsenault; GFX8-NEXT: v_max_f64 v[8:9], v[8:9], v[8:9] 27345883ad34SMatt Arsenault; GFX8-NEXT: v_max_f64 v[2:3], v[2:3], v[2:3] 27355883ad34SMatt Arsenault; GFX8-NEXT: v_max_f64 v[10:11], v[10:11], v[10:11] 27365883ad34SMatt Arsenault; GFX8-NEXT: v_max_f64 v[4:5], v[4:5], v[4:5] 27375883ad34SMatt Arsenault; GFX8-NEXT: v_max_f64 v[0:1], v[0:1], v[6:7] 27385883ad34SMatt Arsenault; GFX8-NEXT: v_max_f64 v[2:3], v[2:3], v[8:9] 27395883ad34SMatt Arsenault; GFX8-NEXT: v_max_f64 v[4:5], v[4:5], v[10:11] 27405883ad34SMatt Arsenault; GFX8-NEXT: s_setpc_b64 s[30:31] 27415883ad34SMatt Arsenault; 27425883ad34SMatt Arsenault; GFX9-LABEL: v_maximumnum_v3f64: 27435883ad34SMatt Arsenault; GFX9: ; %bb.0: 27445883ad34SMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 27455883ad34SMatt Arsenault; GFX9-NEXT: v_max_f64 v[6:7], v[6:7], v[6:7] 27465883ad34SMatt Arsenault; GFX9-NEXT: v_max_f64 v[0:1], v[0:1], v[0:1] 27475883ad34SMatt Arsenault; GFX9-NEXT: v_max_f64 v[8:9], v[8:9], v[8:9] 27485883ad34SMatt Arsenault; GFX9-NEXT: v_max_f64 v[2:3], v[2:3], v[2:3] 27495883ad34SMatt Arsenault; GFX9-NEXT: v_max_f64 v[10:11], v[10:11], v[10:11] 27505883ad34SMatt Arsenault; GFX9-NEXT: v_max_f64 v[4:5], v[4:5], v[4:5] 27515883ad34SMatt Arsenault; GFX9-NEXT: v_max_f64 v[0:1], v[0:1], v[6:7] 27525883ad34SMatt Arsenault; GFX9-NEXT: v_max_f64 v[2:3], v[2:3], v[8:9] 27535883ad34SMatt Arsenault; GFX9-NEXT: v_max_f64 v[4:5], v[4:5], v[10:11] 27545883ad34SMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 27555883ad34SMatt Arsenault; 27565883ad34SMatt Arsenault; GFX10-LABEL: v_maximumnum_v3f64: 27575883ad34SMatt Arsenault; GFX10: ; %bb.0: 27585883ad34SMatt Arsenault; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 27595883ad34SMatt Arsenault; GFX10-NEXT: v_max_f64 v[6:7], v[6:7], v[6:7] 27605883ad34SMatt Arsenault; GFX10-NEXT: v_max_f64 v[0:1], v[0:1], v[0:1] 27615883ad34SMatt Arsenault; GFX10-NEXT: v_max_f64 v[8:9], v[8:9], v[8:9] 27625883ad34SMatt Arsenault; GFX10-NEXT: v_max_f64 v[2:3], v[2:3], v[2:3] 27635883ad34SMatt Arsenault; GFX10-NEXT: v_max_f64 v[10:11], v[10:11], v[10:11] 27645883ad34SMatt Arsenault; GFX10-NEXT: v_max_f64 v[4:5], v[4:5], v[4:5] 27655883ad34SMatt Arsenault; GFX10-NEXT: v_max_f64 v[0:1], v[0:1], v[6:7] 27665883ad34SMatt Arsenault; GFX10-NEXT: v_max_f64 v[2:3], v[2:3], v[8:9] 27675883ad34SMatt Arsenault; GFX10-NEXT: v_max_f64 v[4:5], v[4:5], v[10:11] 27685883ad34SMatt Arsenault; GFX10-NEXT: s_setpc_b64 s[30:31] 27695883ad34SMatt Arsenault; 27705883ad34SMatt Arsenault; GFX11-LABEL: v_maximumnum_v3f64: 27715883ad34SMatt Arsenault; GFX11: ; %bb.0: 27725883ad34SMatt Arsenault; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 27735883ad34SMatt Arsenault; GFX11-NEXT: v_max_f64 v[6:7], v[6:7], v[6:7] 27745883ad34SMatt Arsenault; GFX11-NEXT: v_max_f64 v[0:1], v[0:1], v[0:1] 27755883ad34SMatt Arsenault; GFX11-NEXT: v_max_f64 v[8:9], v[8:9], v[8:9] 27765883ad34SMatt Arsenault; GFX11-NEXT: v_max_f64 v[2:3], v[2:3], v[2:3] 27775883ad34SMatt Arsenault; GFX11-NEXT: v_max_f64 v[10:11], v[10:11], v[10:11] 27785883ad34SMatt Arsenault; GFX11-NEXT: v_max_f64 v[4:5], v[4:5], v[4:5] 27795883ad34SMatt Arsenault; GFX11-NEXT: v_max_f64 v[0:1], v[0:1], v[6:7] 27805883ad34SMatt Arsenault; GFX11-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_3) 27815883ad34SMatt Arsenault; GFX11-NEXT: v_max_f64 v[2:3], v[2:3], v[8:9] 27825883ad34SMatt Arsenault; GFX11-NEXT: v_max_f64 v[4:5], v[4:5], v[10:11] 27835883ad34SMatt Arsenault; GFX11-NEXT: s_setpc_b64 s[30:31] 27845883ad34SMatt Arsenault; 27855883ad34SMatt Arsenault; GFX12-LABEL: v_maximumnum_v3f64: 27865883ad34SMatt Arsenault; GFX12: ; %bb.0: 27875883ad34SMatt Arsenault; GFX12-NEXT: s_wait_loadcnt_dscnt 0x0 27885883ad34SMatt Arsenault; GFX12-NEXT: s_wait_expcnt 0x0 27895883ad34SMatt Arsenault; GFX12-NEXT: s_wait_samplecnt 0x0 27905883ad34SMatt Arsenault; GFX12-NEXT: s_wait_bvhcnt 0x0 27915883ad34SMatt Arsenault; GFX12-NEXT: s_wait_kmcnt 0x0 27925883ad34SMatt Arsenault; GFX12-NEXT: v_max_num_f64_e32 v[6:7], v[6:7], v[6:7] 27935883ad34SMatt Arsenault; GFX12-NEXT: v_max_num_f64_e32 v[0:1], v[0:1], v[0:1] 27945883ad34SMatt Arsenault; GFX12-NEXT: v_max_num_f64_e32 v[8:9], v[8:9], v[8:9] 27955883ad34SMatt Arsenault; GFX12-NEXT: v_max_num_f64_e32 v[2:3], v[2:3], v[2:3] 27965883ad34SMatt Arsenault; GFX12-NEXT: v_max_num_f64_e32 v[10:11], v[10:11], v[10:11] 27975883ad34SMatt Arsenault; GFX12-NEXT: v_max_num_f64_e32 v[4:5], v[4:5], v[4:5] 27985883ad34SMatt Arsenault; GFX12-NEXT: v_max_num_f64_e32 v[0:1], v[0:1], v[6:7] 27995883ad34SMatt Arsenault; GFX12-NEXT: s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_3) 28005883ad34SMatt Arsenault; GFX12-NEXT: v_max_num_f64_e32 v[2:3], v[2:3], v[8:9] 28015883ad34SMatt Arsenault; GFX12-NEXT: v_max_num_f64_e32 v[4:5], v[4:5], v[10:11] 28025883ad34SMatt Arsenault; GFX12-NEXT: s_setpc_b64 s[30:31] 28035883ad34SMatt Arsenault %result = call <3 x double> @llvm.maximumnum.v3f64(<3 x double> %x, <3 x double> %y) 28045883ad34SMatt Arsenault ret <3 x double> %result 28055883ad34SMatt Arsenault} 28065883ad34SMatt Arsenault 28075883ad34SMatt Arsenaultdefine <3 x double> @v_maximumnum_v3f64_nnan(<3 x double> %x, <3 x double> %y) { 28085883ad34SMatt Arsenault; GFX8-LABEL: v_maximumnum_v3f64_nnan: 28095883ad34SMatt Arsenault; GFX8: ; %bb.0: 28105883ad34SMatt Arsenault; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 28115883ad34SMatt Arsenault; GFX8-NEXT: v_max_f64 v[0:1], v[0:1], v[6:7] 28125883ad34SMatt Arsenault; GFX8-NEXT: v_max_f64 v[2:3], v[2:3], v[8:9] 28135883ad34SMatt Arsenault; GFX8-NEXT: v_max_f64 v[4:5], v[4:5], v[10:11] 28145883ad34SMatt Arsenault; GFX8-NEXT: s_setpc_b64 s[30:31] 28155883ad34SMatt Arsenault; 28165883ad34SMatt Arsenault; GFX9-LABEL: v_maximumnum_v3f64_nnan: 28175883ad34SMatt Arsenault; GFX9: ; %bb.0: 28185883ad34SMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 28195883ad34SMatt Arsenault; GFX9-NEXT: v_max_f64 v[0:1], v[0:1], v[6:7] 28205883ad34SMatt Arsenault; GFX9-NEXT: v_max_f64 v[2:3], v[2:3], v[8:9] 28215883ad34SMatt Arsenault; GFX9-NEXT: v_max_f64 v[4:5], v[4:5], v[10:11] 28225883ad34SMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 28235883ad34SMatt Arsenault; 28245883ad34SMatt Arsenault; GFX10-LABEL: v_maximumnum_v3f64_nnan: 28255883ad34SMatt Arsenault; GFX10: ; %bb.0: 28265883ad34SMatt Arsenault; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 28275883ad34SMatt Arsenault; GFX10-NEXT: v_max_f64 v[0:1], v[0:1], v[6:7] 28285883ad34SMatt Arsenault; GFX10-NEXT: v_max_f64 v[2:3], v[2:3], v[8:9] 28295883ad34SMatt Arsenault; GFX10-NEXT: v_max_f64 v[4:5], v[4:5], v[10:11] 28305883ad34SMatt Arsenault; GFX10-NEXT: s_setpc_b64 s[30:31] 28315883ad34SMatt Arsenault; 28325883ad34SMatt Arsenault; GFX11-LABEL: v_maximumnum_v3f64_nnan: 28335883ad34SMatt Arsenault; GFX11: ; %bb.0: 28345883ad34SMatt Arsenault; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 28355883ad34SMatt Arsenault; GFX11-NEXT: v_max_f64 v[0:1], v[0:1], v[6:7] 28365883ad34SMatt Arsenault; GFX11-NEXT: v_max_f64 v[2:3], v[2:3], v[8:9] 28375883ad34SMatt Arsenault; GFX11-NEXT: v_max_f64 v[4:5], v[4:5], v[10:11] 28385883ad34SMatt Arsenault; GFX11-NEXT: s_setpc_b64 s[30:31] 28395883ad34SMatt Arsenault; 28405883ad34SMatt Arsenault; GFX12-LABEL: v_maximumnum_v3f64_nnan: 28415883ad34SMatt Arsenault; GFX12: ; %bb.0: 28425883ad34SMatt Arsenault; GFX12-NEXT: s_wait_loadcnt_dscnt 0x0 28435883ad34SMatt Arsenault; GFX12-NEXT: s_wait_expcnt 0x0 28445883ad34SMatt Arsenault; GFX12-NEXT: s_wait_samplecnt 0x0 28455883ad34SMatt Arsenault; GFX12-NEXT: s_wait_bvhcnt 0x0 28465883ad34SMatt Arsenault; GFX12-NEXT: s_wait_kmcnt 0x0 28475883ad34SMatt Arsenault; GFX12-NEXT: v_max_num_f64_e32 v[0:1], v[0:1], v[6:7] 28485883ad34SMatt Arsenault; GFX12-NEXT: v_max_num_f64_e32 v[2:3], v[2:3], v[8:9] 28495883ad34SMatt Arsenault; GFX12-NEXT: v_max_num_f64_e32 v[4:5], v[4:5], v[10:11] 28505883ad34SMatt Arsenault; GFX12-NEXT: s_setpc_b64 s[30:31] 28515883ad34SMatt Arsenault %result = call nnan <3 x double> @llvm.maximumnum.v3f64(<3 x double> %x, <3 x double> %y) 28525883ad34SMatt Arsenault ret <3 x double> %result 28535883ad34SMatt Arsenault} 28545883ad34SMatt Arsenault 28555883ad34SMatt Arsenaultdefine <4 x double> @v_maximumnum_v4f64(<4 x double> %x, <4 x double> %y) { 28565883ad34SMatt Arsenault; GFX8-LABEL: v_maximumnum_v4f64: 28575883ad34SMatt Arsenault; GFX8: ; %bb.0: 28585883ad34SMatt Arsenault; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 28595883ad34SMatt Arsenault; GFX8-NEXT: v_max_f64 v[8:9], v[8:9], v[8:9] 28605883ad34SMatt Arsenault; GFX8-NEXT: v_max_f64 v[0:1], v[0:1], v[0:1] 28615883ad34SMatt Arsenault; GFX8-NEXT: v_max_f64 v[10:11], v[10:11], v[10:11] 28625883ad34SMatt Arsenault; GFX8-NEXT: v_max_f64 v[2:3], v[2:3], v[2:3] 28635883ad34SMatt Arsenault; GFX8-NEXT: v_max_f64 v[12:13], v[12:13], v[12:13] 28645883ad34SMatt Arsenault; GFX8-NEXT: v_max_f64 v[4:5], v[4:5], v[4:5] 28655883ad34SMatt Arsenault; GFX8-NEXT: v_max_f64 v[14:15], v[14:15], v[14:15] 28665883ad34SMatt Arsenault; GFX8-NEXT: v_max_f64 v[6:7], v[6:7], v[6:7] 28675883ad34SMatt Arsenault; GFX8-NEXT: v_max_f64 v[0:1], v[0:1], v[8:9] 28685883ad34SMatt Arsenault; GFX8-NEXT: v_max_f64 v[2:3], v[2:3], v[10:11] 28695883ad34SMatt Arsenault; GFX8-NEXT: v_max_f64 v[4:5], v[4:5], v[12:13] 28705883ad34SMatt Arsenault; GFX8-NEXT: v_max_f64 v[6:7], v[6:7], v[14:15] 28715883ad34SMatt Arsenault; GFX8-NEXT: s_setpc_b64 s[30:31] 28725883ad34SMatt Arsenault; 28735883ad34SMatt Arsenault; GFX9-LABEL: v_maximumnum_v4f64: 28745883ad34SMatt Arsenault; GFX9: ; %bb.0: 28755883ad34SMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 28765883ad34SMatt Arsenault; GFX9-NEXT: v_max_f64 v[8:9], v[8:9], v[8:9] 28775883ad34SMatt Arsenault; GFX9-NEXT: v_max_f64 v[0:1], v[0:1], v[0:1] 28785883ad34SMatt Arsenault; GFX9-NEXT: v_max_f64 v[10:11], v[10:11], v[10:11] 28795883ad34SMatt Arsenault; GFX9-NEXT: v_max_f64 v[2:3], v[2:3], v[2:3] 28805883ad34SMatt Arsenault; GFX9-NEXT: v_max_f64 v[12:13], v[12:13], v[12:13] 28815883ad34SMatt Arsenault; GFX9-NEXT: v_max_f64 v[4:5], v[4:5], v[4:5] 28825883ad34SMatt Arsenault; GFX9-NEXT: v_max_f64 v[14:15], v[14:15], v[14:15] 28835883ad34SMatt Arsenault; GFX9-NEXT: v_max_f64 v[6:7], v[6:7], v[6:7] 28845883ad34SMatt Arsenault; GFX9-NEXT: v_max_f64 v[0:1], v[0:1], v[8:9] 28855883ad34SMatt Arsenault; GFX9-NEXT: v_max_f64 v[2:3], v[2:3], v[10:11] 28865883ad34SMatt Arsenault; GFX9-NEXT: v_max_f64 v[4:5], v[4:5], v[12:13] 28875883ad34SMatt Arsenault; GFX9-NEXT: v_max_f64 v[6:7], v[6:7], v[14:15] 28885883ad34SMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 28895883ad34SMatt Arsenault; 28905883ad34SMatt Arsenault; GFX10-LABEL: v_maximumnum_v4f64: 28915883ad34SMatt Arsenault; GFX10: ; %bb.0: 28925883ad34SMatt Arsenault; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 28935883ad34SMatt Arsenault; GFX10-NEXT: v_max_f64 v[8:9], v[8:9], v[8:9] 28945883ad34SMatt Arsenault; GFX10-NEXT: v_max_f64 v[0:1], v[0:1], v[0:1] 28955883ad34SMatt Arsenault; GFX10-NEXT: v_max_f64 v[10:11], v[10:11], v[10:11] 28965883ad34SMatt Arsenault; GFX10-NEXT: v_max_f64 v[2:3], v[2:3], v[2:3] 28975883ad34SMatt Arsenault; GFX10-NEXT: v_max_f64 v[12:13], v[12:13], v[12:13] 28985883ad34SMatt Arsenault; GFX10-NEXT: v_max_f64 v[4:5], v[4:5], v[4:5] 28995883ad34SMatt Arsenault; GFX10-NEXT: v_max_f64 v[14:15], v[14:15], v[14:15] 29005883ad34SMatt Arsenault; GFX10-NEXT: v_max_f64 v[6:7], v[6:7], v[6:7] 29015883ad34SMatt Arsenault; GFX10-NEXT: v_max_f64 v[0:1], v[0:1], v[8:9] 29025883ad34SMatt Arsenault; GFX10-NEXT: v_max_f64 v[2:3], v[2:3], v[10:11] 29035883ad34SMatt Arsenault; GFX10-NEXT: v_max_f64 v[4:5], v[4:5], v[12:13] 29045883ad34SMatt Arsenault; GFX10-NEXT: v_max_f64 v[6:7], v[6:7], v[14:15] 29055883ad34SMatt Arsenault; GFX10-NEXT: s_setpc_b64 s[30:31] 29065883ad34SMatt Arsenault; 29075883ad34SMatt Arsenault; GFX11-LABEL: v_maximumnum_v4f64: 29085883ad34SMatt Arsenault; GFX11: ; %bb.0: 29095883ad34SMatt Arsenault; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 29105883ad34SMatt Arsenault; GFX11-NEXT: v_max_f64 v[8:9], v[8:9], v[8:9] 29115883ad34SMatt Arsenault; GFX11-NEXT: v_max_f64 v[0:1], v[0:1], v[0:1] 29125883ad34SMatt Arsenault; GFX11-NEXT: v_max_f64 v[10:11], v[10:11], v[10:11] 29135883ad34SMatt Arsenault; GFX11-NEXT: v_max_f64 v[2:3], v[2:3], v[2:3] 29145883ad34SMatt Arsenault; GFX11-NEXT: v_max_f64 v[12:13], v[12:13], v[12:13] 29155883ad34SMatt Arsenault; GFX11-NEXT: v_max_f64 v[4:5], v[4:5], v[4:5] 29165883ad34SMatt Arsenault; GFX11-NEXT: v_max_f64 v[14:15], v[14:15], v[14:15] 29175883ad34SMatt Arsenault; GFX11-NEXT: v_max_f64 v[6:7], v[6:7], v[6:7] 29185883ad34SMatt Arsenault; GFX11-NEXT: v_max_f64 v[0:1], v[0:1], v[8:9] 29195883ad34SMatt Arsenault; GFX11-NEXT: v_max_f64 v[2:3], v[2:3], v[10:11] 29205883ad34SMatt Arsenault; GFX11-NEXT: v_max_f64 v[4:5], v[4:5], v[12:13] 29215883ad34SMatt Arsenault; GFX11-NEXT: s_delay_alu instid0(VALU_DEP_4) 29225883ad34SMatt Arsenault; GFX11-NEXT: v_max_f64 v[6:7], v[6:7], v[14:15] 29235883ad34SMatt Arsenault; GFX11-NEXT: s_setpc_b64 s[30:31] 29245883ad34SMatt Arsenault; 29255883ad34SMatt Arsenault; GFX12-LABEL: v_maximumnum_v4f64: 29265883ad34SMatt Arsenault; GFX12: ; %bb.0: 29275883ad34SMatt Arsenault; GFX12-NEXT: s_wait_loadcnt_dscnt 0x0 29285883ad34SMatt Arsenault; GFX12-NEXT: s_wait_expcnt 0x0 29295883ad34SMatt Arsenault; GFX12-NEXT: s_wait_samplecnt 0x0 29305883ad34SMatt Arsenault; GFX12-NEXT: s_wait_bvhcnt 0x0 29315883ad34SMatt Arsenault; GFX12-NEXT: s_wait_kmcnt 0x0 29325883ad34SMatt Arsenault; GFX12-NEXT: v_max_num_f64_e32 v[8:9], v[8:9], v[8:9] 29335883ad34SMatt Arsenault; GFX12-NEXT: v_max_num_f64_e32 v[0:1], v[0:1], v[0:1] 29345883ad34SMatt Arsenault; GFX12-NEXT: v_max_num_f64_e32 v[10:11], v[10:11], v[10:11] 29355883ad34SMatt Arsenault; GFX12-NEXT: v_max_num_f64_e32 v[2:3], v[2:3], v[2:3] 29365883ad34SMatt Arsenault; GFX12-NEXT: v_max_num_f64_e32 v[12:13], v[12:13], v[12:13] 29375883ad34SMatt Arsenault; GFX12-NEXT: v_max_num_f64_e32 v[4:5], v[4:5], v[4:5] 29385883ad34SMatt Arsenault; GFX12-NEXT: v_max_num_f64_e32 v[14:15], v[14:15], v[14:15] 29395883ad34SMatt Arsenault; GFX12-NEXT: v_max_num_f64_e32 v[6:7], v[6:7], v[6:7] 29405883ad34SMatt Arsenault; GFX12-NEXT: v_max_num_f64_e32 v[0:1], v[0:1], v[8:9] 29415883ad34SMatt Arsenault; GFX12-NEXT: v_max_num_f64_e32 v[2:3], v[2:3], v[10:11] 29425883ad34SMatt Arsenault; GFX12-NEXT: v_max_num_f64_e32 v[4:5], v[4:5], v[12:13] 29435883ad34SMatt Arsenault; GFX12-NEXT: s_delay_alu instid0(VALU_DEP_4) 29445883ad34SMatt Arsenault; GFX12-NEXT: v_max_num_f64_e32 v[6:7], v[6:7], v[14:15] 29455883ad34SMatt Arsenault; GFX12-NEXT: s_setpc_b64 s[30:31] 29465883ad34SMatt Arsenault %result = call <4 x double> @llvm.maximumnum.v4f64(<4 x double> %x, <4 x double> %y) 29475883ad34SMatt Arsenault ret <4 x double> %result 29485883ad34SMatt Arsenault} 29495883ad34SMatt Arsenault 29505883ad34SMatt Arsenaultdefine <4 x double> @v_maximumnum_v4f64_nnan(<4 x double> %x, <4 x double> %y) { 29515883ad34SMatt Arsenault; GFX8-LABEL: v_maximumnum_v4f64_nnan: 29525883ad34SMatt Arsenault; GFX8: ; %bb.0: 29535883ad34SMatt Arsenault; GFX8-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 29545883ad34SMatt Arsenault; GFX8-NEXT: v_max_f64 v[0:1], v[0:1], v[8:9] 29555883ad34SMatt Arsenault; GFX8-NEXT: v_max_f64 v[2:3], v[2:3], v[10:11] 29565883ad34SMatt Arsenault; GFX8-NEXT: v_max_f64 v[4:5], v[4:5], v[12:13] 29575883ad34SMatt Arsenault; GFX8-NEXT: v_max_f64 v[6:7], v[6:7], v[14:15] 29585883ad34SMatt Arsenault; GFX8-NEXT: s_setpc_b64 s[30:31] 29595883ad34SMatt Arsenault; 29605883ad34SMatt Arsenault; GFX9-LABEL: v_maximumnum_v4f64_nnan: 29615883ad34SMatt Arsenault; GFX9: ; %bb.0: 29625883ad34SMatt Arsenault; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 29635883ad34SMatt Arsenault; GFX9-NEXT: v_max_f64 v[0:1], v[0:1], v[8:9] 29645883ad34SMatt Arsenault; GFX9-NEXT: v_max_f64 v[2:3], v[2:3], v[10:11] 29655883ad34SMatt Arsenault; GFX9-NEXT: v_max_f64 v[4:5], v[4:5], v[12:13] 29665883ad34SMatt Arsenault; GFX9-NEXT: v_max_f64 v[6:7], v[6:7], v[14:15] 29675883ad34SMatt Arsenault; GFX9-NEXT: s_setpc_b64 s[30:31] 29685883ad34SMatt Arsenault; 29695883ad34SMatt Arsenault; GFX10-LABEL: v_maximumnum_v4f64_nnan: 29705883ad34SMatt Arsenault; GFX10: ; %bb.0: 29715883ad34SMatt Arsenault; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 29725883ad34SMatt Arsenault; GFX10-NEXT: v_max_f64 v[0:1], v[0:1], v[8:9] 29735883ad34SMatt Arsenault; GFX10-NEXT: v_max_f64 v[2:3], v[2:3], v[10:11] 29745883ad34SMatt Arsenault; GFX10-NEXT: v_max_f64 v[4:5], v[4:5], v[12:13] 29755883ad34SMatt Arsenault; GFX10-NEXT: v_max_f64 v[6:7], v[6:7], v[14:15] 29765883ad34SMatt Arsenault; GFX10-NEXT: s_setpc_b64 s[30:31] 29775883ad34SMatt Arsenault; 29785883ad34SMatt Arsenault; GFX11-LABEL: v_maximumnum_v4f64_nnan: 29795883ad34SMatt Arsenault; GFX11: ; %bb.0: 29805883ad34SMatt Arsenault; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 29815883ad34SMatt Arsenault; GFX11-NEXT: v_max_f64 v[0:1], v[0:1], v[8:9] 29825883ad34SMatt Arsenault; GFX11-NEXT: v_max_f64 v[2:3], v[2:3], v[10:11] 29835883ad34SMatt Arsenault; GFX11-NEXT: v_max_f64 v[4:5], v[4:5], v[12:13] 29845883ad34SMatt Arsenault; GFX11-NEXT: v_max_f64 v[6:7], v[6:7], v[14:15] 29855883ad34SMatt Arsenault; GFX11-NEXT: s_setpc_b64 s[30:31] 29865883ad34SMatt Arsenault; 29875883ad34SMatt Arsenault; GFX12-LABEL: v_maximumnum_v4f64_nnan: 29885883ad34SMatt Arsenault; GFX12: ; %bb.0: 29895883ad34SMatt Arsenault; GFX12-NEXT: s_wait_loadcnt_dscnt 0x0 29905883ad34SMatt Arsenault; GFX12-NEXT: s_wait_expcnt 0x0 29915883ad34SMatt Arsenault; GFX12-NEXT: s_wait_samplecnt 0x0 29925883ad34SMatt Arsenault; GFX12-NEXT: s_wait_bvhcnt 0x0 29935883ad34SMatt Arsenault; GFX12-NEXT: s_wait_kmcnt 0x0 29945883ad34SMatt Arsenault; GFX12-NEXT: v_max_num_f64_e32 v[0:1], v[0:1], v[8:9] 29955883ad34SMatt Arsenault; GFX12-NEXT: v_max_num_f64_e32 v[2:3], v[2:3], v[10:11] 29965883ad34SMatt Arsenault; GFX12-NEXT: v_max_num_f64_e32 v[4:5], v[4:5], v[12:13] 29975883ad34SMatt Arsenault; GFX12-NEXT: v_max_num_f64_e32 v[6:7], v[6:7], v[14:15] 29985883ad34SMatt Arsenault; GFX12-NEXT: s_setpc_b64 s[30:31] 29995883ad34SMatt Arsenault %result = call nnan <4 x double> @llvm.maximumnum.v4f64(<4 x double> %x, <4 x double> %y) 30005883ad34SMatt Arsenault ret <4 x double> %result 30015883ad34SMatt Arsenault} 3002