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