1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py 2# RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=hawaii -run-pass=instruction-select -verify-machineinstrs -o - %s | FileCheck -check-prefix=GFX7 %s 3 4# FIXME: Ideally this would fail to select with ieee mode enabled. 5--- 6 7name: fminnum_f32_f64_ieee_mode_on 8legalized: true 9regBankSelected: true 10machineFunctionInfo: 11 mode: 12 ieee: true 13 14body: | 15 bb.0: 16 liveins: $sgpr0, $vgpr0, $vgpr1, $vgpr3_vgpr4, $sgpr10_sgpr11, $vgpr10_vgpr11, $vgpr12_vgpr13 17 ; GFX7-LABEL: name: fminnum_f32_f64_ieee_mode_on 18 ; GFX7: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0 19 ; GFX7: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr0 20 ; GFX7: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr1 21 ; GFX7: [[COPY3:%[0-9]+]]:vreg_64 = COPY $vgpr3_vgpr4 22 ; GFX7: [[COPY4:%[0-9]+]]:sreg_64 = COPY $sgpr10_sgpr11 23 ; GFX7: [[COPY5:%[0-9]+]]:vreg_64 = COPY $vgpr10_vgpr11 24 ; GFX7: [[COPY6:%[0-9]+]]:vreg_64 = COPY $vgpr12_vgpr13 25 ; GFX7: %7:vgpr_32 = nofpexcept V_MIN_F32_e64 0, [[COPY1]], 0, [[COPY]], 0, 0, implicit $mode, implicit $exec 26 ; GFX7: %8:vgpr_32 = nofpexcept V_MIN_F32_e64 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec 27 ; GFX7: %9:vgpr_32 = nofpexcept V_MIN_F32_e64 0, [[COPY1]], 0, [[COPY2]], 0, 0, implicit $mode, implicit $exec 28 ; GFX7: FLAT_STORE_DWORD [[COPY3]], %7, 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 4, addrspace 1) 29 ; GFX7: FLAT_STORE_DWORD [[COPY3]], %8, 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 4, addrspace 1) 30 ; GFX7: FLAT_STORE_DWORD [[COPY3]], %9, 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 4, addrspace 1) 31 ; GFX7: %10:vreg_64 = nofpexcept V_MIN_F64 0, [[COPY4]], 0, [[COPY5]], 0, 0, implicit $mode, implicit $exec 32 ; GFX7: %11:vreg_64 = nofpexcept V_MIN_F64 0, [[COPY5]], 0, [[COPY4]], 0, 0, implicit $mode, implicit $exec 33 ; GFX7: %12:vreg_64 = nofpexcept V_MIN_F64 0, [[COPY5]], 0, [[COPY6]], 0, 0, implicit $mode, implicit $exec 34 ; GFX7: S_ENDPGM 0, implicit %10, implicit %11, implicit %12 35 %0:sgpr(s32) = COPY $sgpr0 36 %1:vgpr(s32) = COPY $vgpr0 37 %2:vgpr(s32) = COPY $vgpr1 38 %3:vgpr(p1) = COPY $vgpr3_vgpr4 39 40 %10:sgpr(s64) = COPY $sgpr10_sgpr11 41 %11:vgpr(s64) = COPY $vgpr10_vgpr11 42 %12:vgpr(s64) = COPY $vgpr12_vgpr13 43 44 ; minnum vs 45 %4:vgpr(s32) = G_FMINNUM %1, %0 46 47 ; minnum sv 48 %5:vgpr(s32) = G_FMINNUM %0, %1 49 50 ; minnum vv 51 %6:vgpr(s32) = G_FMINNUM %1, %2 52 53 G_STORE %4, %3 :: (store 4, addrspace 1) 54 G_STORE %5, %3 :: (store 4, addrspace 1) 55 G_STORE %6, %3 :: (store 4, addrspace 1) 56 57 ; 64-bit 58 59 ; minnum vs 60 %14:vgpr(s64) = G_FMINNUM %10, %11 61 62 ; minnum sv 63 %15:vgpr(s64) = G_FMINNUM %11, %10 64 65 ; minnum vv 66 %16:vgpr(s64) = G_FMINNUM %11, %12 67 68 S_ENDPGM 0, implicit %14, implicit %15, implicit %16 69... 70 71--- 72 73name: fminnum_f32_f64_ieee_mode_off 74legalized: true 75regBankSelected: true 76machineFunctionInfo: 77 mode: 78 ieee: false 79 80body: | 81 bb.0: 82 liveins: $sgpr0, $vgpr0, $vgpr1, $vgpr3_vgpr4, $sgpr10_sgpr11, $vgpr10_vgpr11, $vgpr12_vgpr13 83 ; GFX7-LABEL: name: fminnum_f32_f64_ieee_mode_off 84 ; GFX7: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0 85 ; GFX7: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr0 86 ; GFX7: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr1 87 ; GFX7: [[COPY3:%[0-9]+]]:vreg_64 = COPY $vgpr3_vgpr4 88 ; GFX7: [[COPY4:%[0-9]+]]:sreg_64 = COPY $sgpr10_sgpr11 89 ; GFX7: [[COPY5:%[0-9]+]]:vreg_64 = COPY $vgpr10_vgpr11 90 ; GFX7: [[COPY6:%[0-9]+]]:vreg_64 = COPY $vgpr12_vgpr13 91 ; GFX7: %7:vgpr_32 = nofpexcept V_MIN_F32_e64 0, [[COPY1]], 0, [[COPY]], 0, 0, implicit $mode, implicit $exec 92 ; GFX7: %8:vgpr_32 = nofpexcept V_MIN_F32_e64 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec 93 ; GFX7: %9:vgpr_32 = nofpexcept V_MIN_F32_e64 0, [[COPY1]], 0, [[COPY2]], 0, 0, implicit $mode, implicit $exec 94 ; GFX7: FLAT_STORE_DWORD [[COPY3]], %7, 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 4, addrspace 1) 95 ; GFX7: FLAT_STORE_DWORD [[COPY3]], %8, 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 4, addrspace 1) 96 ; GFX7: FLAT_STORE_DWORD [[COPY3]], %9, 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 4, addrspace 1) 97 ; GFX7: %10:vreg_64 = nofpexcept V_MIN_F64 0, [[COPY4]], 0, [[COPY5]], 0, 0, implicit $mode, implicit $exec 98 ; GFX7: %11:vreg_64 = nofpexcept V_MIN_F64 0, [[COPY5]], 0, [[COPY4]], 0, 0, implicit $mode, implicit $exec 99 ; GFX7: %12:vreg_64 = nofpexcept V_MIN_F64 0, [[COPY5]], 0, [[COPY6]], 0, 0, implicit $mode, implicit $exec 100 ; GFX7: S_ENDPGM 0, implicit %10, implicit %11, implicit %12 101 %0:sgpr(s32) = COPY $sgpr0 102 %1:vgpr(s32) = COPY $vgpr0 103 %2:vgpr(s32) = COPY $vgpr1 104 %3:vgpr(p1) = COPY $vgpr3_vgpr4 105 106 %10:sgpr(s64) = COPY $sgpr10_sgpr11 107 %11:vgpr(s64) = COPY $vgpr10_vgpr11 108 %12:vgpr(s64) = COPY $vgpr12_vgpr13 109 110 ; minnum vs 111 %4:vgpr(s32) = G_FMINNUM %1, %0 112 113 ; minnum sv 114 %5:vgpr(s32) = G_FMINNUM %0, %1 115 116 ; minnum vv 117 %6:vgpr(s32) = G_FMINNUM %1, %2 118 119 G_STORE %4, %3 :: (store 4, addrspace 1) 120 G_STORE %5, %3 :: (store 4, addrspace 1) 121 G_STORE %6, %3 :: (store 4, addrspace 1) 122 123 ; 64-bit 124 125 ; minnum vs 126 %14:vgpr(s64) = G_FMINNUM %10, %11 127 128 ; minnum sv 129 %15:vgpr(s64) = G_FMINNUM %11, %10 130 131 ; minnum vv 132 %16:vgpr(s64) = G_FMINNUM %11, %12 133 134 S_ENDPGM 0, implicit %14, implicit %15, implicit %16 135... 136