1*fb9e685fSYunQiang Su; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 2*fb9e685fSYunQiang Su; RUN: llc --mtriple=loongarch32 --mattr=+f,-d < %s | FileCheck %s --check-prefix=LA32F 3*fb9e685fSYunQiang Su; RUN: llc --mtriple=loongarch32 --mattr=+d < %s | FileCheck %s --check-prefix=LA32D 4*fb9e685fSYunQiang Su; RUN: llc --mtriple=loongarch64 --mattr=+f,-d < %s | FileCheck %s --check-prefix=LA64F 5*fb9e685fSYunQiang Su; RUN: llc --mtriple=loongarch64 --mattr=+d < %s | FileCheck %s --check-prefix=LA64D 6*fb9e685fSYunQiang Su 7*fb9e685fSYunQiang Sudeclare float @llvm.maximumnum.f32(float, float) 8*fb9e685fSYunQiang Sudeclare double @llvm.maximumnum.f64(double, double) 9*fb9e685fSYunQiang Sudeclare float @llvm.minimumnum.f32(float, float) 10*fb9e685fSYunQiang Sudeclare double @llvm.minimumnum.f64(double, double) 11*fb9e685fSYunQiang Su 12*fb9e685fSYunQiang Sudefine float @maximumnum_float(float %x, float %y) { 13*fb9e685fSYunQiang Su; 14*fb9e685fSYunQiang Su; LA32F-LABEL: maximumnum_float: 15*fb9e685fSYunQiang Su; LA32F: # %bb.0: 16*fb9e685fSYunQiang Su; LA32F-NEXT: fmax.s $fa1, $fa1, $fa1 17*fb9e685fSYunQiang Su; LA32F-NEXT: fmax.s $fa0, $fa0, $fa0 18*fb9e685fSYunQiang Su; LA32F-NEXT: fmax.s $fa0, $fa0, $fa1 19*fb9e685fSYunQiang Su; LA32F-NEXT: ret 20*fb9e685fSYunQiang Su; 21*fb9e685fSYunQiang Su; LA32D-LABEL: maximumnum_float: 22*fb9e685fSYunQiang Su; LA32D: # %bb.0: 23*fb9e685fSYunQiang Su; LA32D-NEXT: fmax.s $fa1, $fa1, $fa1 24*fb9e685fSYunQiang Su; LA32D-NEXT: fmax.s $fa0, $fa0, $fa0 25*fb9e685fSYunQiang Su; LA32D-NEXT: fmax.s $fa0, $fa0, $fa1 26*fb9e685fSYunQiang Su; LA32D-NEXT: ret 27*fb9e685fSYunQiang Su; 28*fb9e685fSYunQiang Su; LA64F-LABEL: maximumnum_float: 29*fb9e685fSYunQiang Su; LA64F: # %bb.0: 30*fb9e685fSYunQiang Su; LA64F-NEXT: fmax.s $fa1, $fa1, $fa1 31*fb9e685fSYunQiang Su; LA64F-NEXT: fmax.s $fa0, $fa0, $fa0 32*fb9e685fSYunQiang Su; LA64F-NEXT: fmax.s $fa0, $fa0, $fa1 33*fb9e685fSYunQiang Su; LA64F-NEXT: ret 34*fb9e685fSYunQiang Su; 35*fb9e685fSYunQiang Su; LA64D-LABEL: maximumnum_float: 36*fb9e685fSYunQiang Su; LA64D: # %bb.0: 37*fb9e685fSYunQiang Su; LA64D-NEXT: fmax.s $fa1, $fa1, $fa1 38*fb9e685fSYunQiang Su; LA64D-NEXT: fmax.s $fa0, $fa0, $fa0 39*fb9e685fSYunQiang Su; LA64D-NEXT: fmax.s $fa0, $fa0, $fa1 40*fb9e685fSYunQiang Su; LA64D-NEXT: ret 41*fb9e685fSYunQiang Su %z = call float @llvm.maximumnum.f32(float %x, float %y) 42*fb9e685fSYunQiang Su ret float %z 43*fb9e685fSYunQiang Su} 44*fb9e685fSYunQiang Su 45*fb9e685fSYunQiang Sudefine float @maximumnum_float_nsz(float %x, float %y) { 46*fb9e685fSYunQiang Su; 47*fb9e685fSYunQiang Su; LA32F-LABEL: maximumnum_float_nsz: 48*fb9e685fSYunQiang Su; LA32F: # %bb.0: 49*fb9e685fSYunQiang Su; LA32F-NEXT: fmax.s $fa1, $fa1, $fa1 50*fb9e685fSYunQiang Su; LA32F-NEXT: fmax.s $fa0, $fa0, $fa0 51*fb9e685fSYunQiang Su; LA32F-NEXT: fmax.s $fa0, $fa0, $fa1 52*fb9e685fSYunQiang Su; LA32F-NEXT: ret 53*fb9e685fSYunQiang Su; 54*fb9e685fSYunQiang Su; LA32D-LABEL: maximumnum_float_nsz: 55*fb9e685fSYunQiang Su; LA32D: # %bb.0: 56*fb9e685fSYunQiang Su; LA32D-NEXT: fmax.s $fa1, $fa1, $fa1 57*fb9e685fSYunQiang Su; LA32D-NEXT: fmax.s $fa0, $fa0, $fa0 58*fb9e685fSYunQiang Su; LA32D-NEXT: fmax.s $fa0, $fa0, $fa1 59*fb9e685fSYunQiang Su; LA32D-NEXT: ret 60*fb9e685fSYunQiang Su; 61*fb9e685fSYunQiang Su; LA64F-LABEL: maximumnum_float_nsz: 62*fb9e685fSYunQiang Su; LA64F: # %bb.0: 63*fb9e685fSYunQiang Su; LA64F-NEXT: fmax.s $fa1, $fa1, $fa1 64*fb9e685fSYunQiang Su; LA64F-NEXT: fmax.s $fa0, $fa0, $fa0 65*fb9e685fSYunQiang Su; LA64F-NEXT: fmax.s $fa0, $fa0, $fa1 66*fb9e685fSYunQiang Su; LA64F-NEXT: ret 67*fb9e685fSYunQiang Su; 68*fb9e685fSYunQiang Su; LA64D-LABEL: maximumnum_float_nsz: 69*fb9e685fSYunQiang Su; LA64D: # %bb.0: 70*fb9e685fSYunQiang Su; LA64D-NEXT: fmax.s $fa1, $fa1, $fa1 71*fb9e685fSYunQiang Su; LA64D-NEXT: fmax.s $fa0, $fa0, $fa0 72*fb9e685fSYunQiang Su; LA64D-NEXT: fmax.s $fa0, $fa0, $fa1 73*fb9e685fSYunQiang Su; LA64D-NEXT: ret 74*fb9e685fSYunQiang Su %z = call nsz float @llvm.maximumnum.f32(float %x, float %y) 75*fb9e685fSYunQiang Su ret float %z 76*fb9e685fSYunQiang Su} 77*fb9e685fSYunQiang Su 78*fb9e685fSYunQiang Sudefine float @maximumnum_float_nnan(float %x, float %y) { 79*fb9e685fSYunQiang Su; 80*fb9e685fSYunQiang Su; LA32F-LABEL: maximumnum_float_nnan: 81*fb9e685fSYunQiang Su; LA32F: # %bb.0: 82*fb9e685fSYunQiang Su; LA32F-NEXT: fmax.s $fa0, $fa0, $fa1 83*fb9e685fSYunQiang Su; LA32F-NEXT: ret 84*fb9e685fSYunQiang Su; 85*fb9e685fSYunQiang Su; LA32D-LABEL: maximumnum_float_nnan: 86*fb9e685fSYunQiang Su; LA32D: # %bb.0: 87*fb9e685fSYunQiang Su; LA32D-NEXT: fmax.s $fa0, $fa0, $fa1 88*fb9e685fSYunQiang Su; LA32D-NEXT: ret 89*fb9e685fSYunQiang Su; 90*fb9e685fSYunQiang Su; LA64F-LABEL: maximumnum_float_nnan: 91*fb9e685fSYunQiang Su; LA64F: # %bb.0: 92*fb9e685fSYunQiang Su; LA64F-NEXT: fmax.s $fa0, $fa0, $fa1 93*fb9e685fSYunQiang Su; LA64F-NEXT: ret 94*fb9e685fSYunQiang Su; 95*fb9e685fSYunQiang Su; LA64D-LABEL: maximumnum_float_nnan: 96*fb9e685fSYunQiang Su; LA64D: # %bb.0: 97*fb9e685fSYunQiang Su; LA64D-NEXT: fmax.s $fa0, $fa0, $fa1 98*fb9e685fSYunQiang Su; LA64D-NEXT: ret 99*fb9e685fSYunQiang Su %z = call nnan float @llvm.maximumnum.f32(float %x, float %y) 100*fb9e685fSYunQiang Su ret float %z 101*fb9e685fSYunQiang Su} 102*fb9e685fSYunQiang Su 103*fb9e685fSYunQiang Su 104*fb9e685fSYunQiang Sudefine double @maximumnum_double(double %x, double %y) { 105*fb9e685fSYunQiang Su; 106*fb9e685fSYunQiang Su; LA32F-LABEL: maximumnum_double: 107*fb9e685fSYunQiang Su; LA32F: # %bb.0: 108*fb9e685fSYunQiang Su; LA32F-NEXT: addi.w $sp, $sp, -16 109*fb9e685fSYunQiang Su; LA32F-NEXT: .cfi_def_cfa_offset 16 110*fb9e685fSYunQiang Su; LA32F-NEXT: st.w $ra, $sp, 12 # 4-byte Folded Spill 111*fb9e685fSYunQiang Su; LA32F-NEXT: .cfi_offset 1, -4 112*fb9e685fSYunQiang Su; LA32F-NEXT: bl %plt(fmaximum_num) 113*fb9e685fSYunQiang Su; LA32F-NEXT: ld.w $ra, $sp, 12 # 4-byte Folded Reload 114*fb9e685fSYunQiang Su; LA32F-NEXT: addi.w $sp, $sp, 16 115*fb9e685fSYunQiang Su; LA32F-NEXT: ret 116*fb9e685fSYunQiang Su; 117*fb9e685fSYunQiang Su; LA32D-LABEL: maximumnum_double: 118*fb9e685fSYunQiang Su; LA32D: # %bb.0: 119*fb9e685fSYunQiang Su; LA32D-NEXT: fmax.d $fa1, $fa1, $fa1 120*fb9e685fSYunQiang Su; LA32D-NEXT: fmax.d $fa0, $fa0, $fa0 121*fb9e685fSYunQiang Su; LA32D-NEXT: fmax.d $fa0, $fa0, $fa1 122*fb9e685fSYunQiang Su; LA32D-NEXT: ret 123*fb9e685fSYunQiang Su; 124*fb9e685fSYunQiang Su; LA64F-LABEL: maximumnum_double: 125*fb9e685fSYunQiang Su; LA64F: # %bb.0: 126*fb9e685fSYunQiang Su; LA64F-NEXT: addi.d $sp, $sp, -16 127*fb9e685fSYunQiang Su; LA64F-NEXT: .cfi_def_cfa_offset 16 128*fb9e685fSYunQiang Su; LA64F-NEXT: st.d $ra, $sp, 8 # 8-byte Folded Spill 129*fb9e685fSYunQiang Su; LA64F-NEXT: .cfi_offset 1, -8 130*fb9e685fSYunQiang Su; LA64F-NEXT: bl %plt(fmaximum_num) 131*fb9e685fSYunQiang Su; LA64F-NEXT: ld.d $ra, $sp, 8 # 8-byte Folded Reload 132*fb9e685fSYunQiang Su; LA64F-NEXT: addi.d $sp, $sp, 16 133*fb9e685fSYunQiang Su; LA64F-NEXT: ret 134*fb9e685fSYunQiang Su; 135*fb9e685fSYunQiang Su; LA64D-LABEL: maximumnum_double: 136*fb9e685fSYunQiang Su; LA64D: # %bb.0: 137*fb9e685fSYunQiang Su; LA64D-NEXT: fmax.d $fa1, $fa1, $fa1 138*fb9e685fSYunQiang Su; LA64D-NEXT: fmax.d $fa0, $fa0, $fa0 139*fb9e685fSYunQiang Su; LA64D-NEXT: fmax.d $fa0, $fa0, $fa1 140*fb9e685fSYunQiang Su; LA64D-NEXT: ret 141*fb9e685fSYunQiang Su %z = call double @llvm.maximumnum.f64(double %x, double %y) 142*fb9e685fSYunQiang Su ret double %z 143*fb9e685fSYunQiang Su} 144*fb9e685fSYunQiang Su 145*fb9e685fSYunQiang Sudefine double @maximumnum_double_nsz(double %x, double %y) { 146*fb9e685fSYunQiang Su; 147*fb9e685fSYunQiang Su; LA32F-LABEL: maximumnum_double_nsz: 148*fb9e685fSYunQiang Su; LA32F: # %bb.0: 149*fb9e685fSYunQiang Su; LA32F-NEXT: addi.w $sp, $sp, -16 150*fb9e685fSYunQiang Su; LA32F-NEXT: .cfi_def_cfa_offset 16 151*fb9e685fSYunQiang Su; LA32F-NEXT: st.w $ra, $sp, 12 # 4-byte Folded Spill 152*fb9e685fSYunQiang Su; LA32F-NEXT: .cfi_offset 1, -4 153*fb9e685fSYunQiang Su; LA32F-NEXT: bl %plt(fmaximum_num) 154*fb9e685fSYunQiang Su; LA32F-NEXT: ld.w $ra, $sp, 12 # 4-byte Folded Reload 155*fb9e685fSYunQiang Su; LA32F-NEXT: addi.w $sp, $sp, 16 156*fb9e685fSYunQiang Su; LA32F-NEXT: ret 157*fb9e685fSYunQiang Su; 158*fb9e685fSYunQiang Su; LA32D-LABEL: maximumnum_double_nsz: 159*fb9e685fSYunQiang Su; LA32D: # %bb.0: 160*fb9e685fSYunQiang Su; LA32D-NEXT: fmax.d $fa1, $fa1, $fa1 161*fb9e685fSYunQiang Su; LA32D-NEXT: fmax.d $fa0, $fa0, $fa0 162*fb9e685fSYunQiang Su; LA32D-NEXT: fmax.d $fa0, $fa0, $fa1 163*fb9e685fSYunQiang Su; LA32D-NEXT: ret 164*fb9e685fSYunQiang Su; 165*fb9e685fSYunQiang Su; LA64F-LABEL: maximumnum_double_nsz: 166*fb9e685fSYunQiang Su; LA64F: # %bb.0: 167*fb9e685fSYunQiang Su; LA64F-NEXT: addi.d $sp, $sp, -16 168*fb9e685fSYunQiang Su; LA64F-NEXT: .cfi_def_cfa_offset 16 169*fb9e685fSYunQiang Su; LA64F-NEXT: st.d $ra, $sp, 8 # 8-byte Folded Spill 170*fb9e685fSYunQiang Su; LA64F-NEXT: .cfi_offset 1, -8 171*fb9e685fSYunQiang Su; LA64F-NEXT: bl %plt(fmaximum_num) 172*fb9e685fSYunQiang Su; LA64F-NEXT: ld.d $ra, $sp, 8 # 8-byte Folded Reload 173*fb9e685fSYunQiang Su; LA64F-NEXT: addi.d $sp, $sp, 16 174*fb9e685fSYunQiang Su; LA64F-NEXT: ret 175*fb9e685fSYunQiang Su; 176*fb9e685fSYunQiang Su; LA64D-LABEL: maximumnum_double_nsz: 177*fb9e685fSYunQiang Su; LA64D: # %bb.0: 178*fb9e685fSYunQiang Su; LA64D-NEXT: fmax.d $fa1, $fa1, $fa1 179*fb9e685fSYunQiang Su; LA64D-NEXT: fmax.d $fa0, $fa0, $fa0 180*fb9e685fSYunQiang Su; LA64D-NEXT: fmax.d $fa0, $fa0, $fa1 181*fb9e685fSYunQiang Su; LA64D-NEXT: ret 182*fb9e685fSYunQiang Su %z = call nsz double @llvm.maximumnum.f64(double %x, double %y) 183*fb9e685fSYunQiang Su ret double %z 184*fb9e685fSYunQiang Su} 185*fb9e685fSYunQiang Su 186*fb9e685fSYunQiang Sudefine double @maximumnum_double_nnan(double %x, double %y) { 187*fb9e685fSYunQiang Su; 188*fb9e685fSYunQiang Su; LA32F-LABEL: maximumnum_double_nnan: 189*fb9e685fSYunQiang Su; LA32F: # %bb.0: 190*fb9e685fSYunQiang Su; LA32F-NEXT: addi.w $sp, $sp, -16 191*fb9e685fSYunQiang Su; LA32F-NEXT: .cfi_def_cfa_offset 16 192*fb9e685fSYunQiang Su; LA32F-NEXT: st.w $ra, $sp, 12 # 4-byte Folded Spill 193*fb9e685fSYunQiang Su; LA32F-NEXT: .cfi_offset 1, -4 194*fb9e685fSYunQiang Su; LA32F-NEXT: bl %plt(fmaximum_num) 195*fb9e685fSYunQiang Su; LA32F-NEXT: ld.w $ra, $sp, 12 # 4-byte Folded Reload 196*fb9e685fSYunQiang Su; LA32F-NEXT: addi.w $sp, $sp, 16 197*fb9e685fSYunQiang Su; LA32F-NEXT: ret 198*fb9e685fSYunQiang Su; 199*fb9e685fSYunQiang Su; LA32D-LABEL: maximumnum_double_nnan: 200*fb9e685fSYunQiang Su; LA32D: # %bb.0: 201*fb9e685fSYunQiang Su; LA32D-NEXT: fmax.d $fa0, $fa0, $fa1 202*fb9e685fSYunQiang Su; LA32D-NEXT: ret 203*fb9e685fSYunQiang Su; 204*fb9e685fSYunQiang Su; LA64F-LABEL: maximumnum_double_nnan: 205*fb9e685fSYunQiang Su; LA64F: # %bb.0: 206*fb9e685fSYunQiang Su; LA64F-NEXT: addi.d $sp, $sp, -16 207*fb9e685fSYunQiang Su; LA64F-NEXT: .cfi_def_cfa_offset 16 208*fb9e685fSYunQiang Su; LA64F-NEXT: st.d $ra, $sp, 8 # 8-byte Folded Spill 209*fb9e685fSYunQiang Su; LA64F-NEXT: .cfi_offset 1, -8 210*fb9e685fSYunQiang Su; LA64F-NEXT: bl %plt(fmaximum_num) 211*fb9e685fSYunQiang Su; LA64F-NEXT: ld.d $ra, $sp, 8 # 8-byte Folded Reload 212*fb9e685fSYunQiang Su; LA64F-NEXT: addi.d $sp, $sp, 16 213*fb9e685fSYunQiang Su; LA64F-NEXT: ret 214*fb9e685fSYunQiang Su; 215*fb9e685fSYunQiang Su; LA64D-LABEL: maximumnum_double_nnan: 216*fb9e685fSYunQiang Su; LA64D: # %bb.0: 217*fb9e685fSYunQiang Su; LA64D-NEXT: fmax.d $fa0, $fa0, $fa1 218*fb9e685fSYunQiang Su; LA64D-NEXT: ret 219*fb9e685fSYunQiang Su %z = call nnan double @llvm.maximumnum.f64(double %x, double %y) 220*fb9e685fSYunQiang Su ret double %z 221*fb9e685fSYunQiang Su} 222*fb9e685fSYunQiang Su 223*fb9e685fSYunQiang Sudefine float @minimumnum_float(float %x, float %y) { 224*fb9e685fSYunQiang Su; 225*fb9e685fSYunQiang Su; LA32F-LABEL: minimumnum_float: 226*fb9e685fSYunQiang Su; LA32F: # %bb.0: 227*fb9e685fSYunQiang Su; LA32F-NEXT: fmax.s $fa1, $fa1, $fa1 228*fb9e685fSYunQiang Su; LA32F-NEXT: fmax.s $fa0, $fa0, $fa0 229*fb9e685fSYunQiang Su; LA32F-NEXT: fmin.s $fa0, $fa0, $fa1 230*fb9e685fSYunQiang Su; LA32F-NEXT: ret 231*fb9e685fSYunQiang Su; 232*fb9e685fSYunQiang Su; LA32D-LABEL: minimumnum_float: 233*fb9e685fSYunQiang Su; LA32D: # %bb.0: 234*fb9e685fSYunQiang Su; LA32D-NEXT: fmax.s $fa1, $fa1, $fa1 235*fb9e685fSYunQiang Su; LA32D-NEXT: fmax.s $fa0, $fa0, $fa0 236*fb9e685fSYunQiang Su; LA32D-NEXT: fmin.s $fa0, $fa0, $fa1 237*fb9e685fSYunQiang Su; LA32D-NEXT: ret 238*fb9e685fSYunQiang Su; 239*fb9e685fSYunQiang Su; LA64F-LABEL: minimumnum_float: 240*fb9e685fSYunQiang Su; LA64F: # %bb.0: 241*fb9e685fSYunQiang Su; LA64F-NEXT: fmax.s $fa1, $fa1, $fa1 242*fb9e685fSYunQiang Su; LA64F-NEXT: fmax.s $fa0, $fa0, $fa0 243*fb9e685fSYunQiang Su; LA64F-NEXT: fmin.s $fa0, $fa0, $fa1 244*fb9e685fSYunQiang Su; LA64F-NEXT: ret 245*fb9e685fSYunQiang Su; 246*fb9e685fSYunQiang Su; LA64D-LABEL: minimumnum_float: 247*fb9e685fSYunQiang Su; LA64D: # %bb.0: 248*fb9e685fSYunQiang Su; LA64D-NEXT: fmax.s $fa1, $fa1, $fa1 249*fb9e685fSYunQiang Su; LA64D-NEXT: fmax.s $fa0, $fa0, $fa0 250*fb9e685fSYunQiang Su; LA64D-NEXT: fmin.s $fa0, $fa0, $fa1 251*fb9e685fSYunQiang Su; LA64D-NEXT: ret 252*fb9e685fSYunQiang Su %z = call float @llvm.minimumnum.f32(float %x, float %y) 253*fb9e685fSYunQiang Su ret float %z 254*fb9e685fSYunQiang Su} 255*fb9e685fSYunQiang Su 256*fb9e685fSYunQiang Sudefine float @minimumnum_float_nsz(float %x, float %y) { 257*fb9e685fSYunQiang Su; 258*fb9e685fSYunQiang Su; LA32F-LABEL: minimumnum_float_nsz: 259*fb9e685fSYunQiang Su; LA32F: # %bb.0: 260*fb9e685fSYunQiang Su; LA32F-NEXT: fmax.s $fa1, $fa1, $fa1 261*fb9e685fSYunQiang Su; LA32F-NEXT: fmax.s $fa0, $fa0, $fa0 262*fb9e685fSYunQiang Su; LA32F-NEXT: fmin.s $fa0, $fa0, $fa1 263*fb9e685fSYunQiang Su; LA32F-NEXT: ret 264*fb9e685fSYunQiang Su; 265*fb9e685fSYunQiang Su; LA32D-LABEL: minimumnum_float_nsz: 266*fb9e685fSYunQiang Su; LA32D: # %bb.0: 267*fb9e685fSYunQiang Su; LA32D-NEXT: fmax.s $fa1, $fa1, $fa1 268*fb9e685fSYunQiang Su; LA32D-NEXT: fmax.s $fa0, $fa0, $fa0 269*fb9e685fSYunQiang Su; LA32D-NEXT: fmin.s $fa0, $fa0, $fa1 270*fb9e685fSYunQiang Su; LA32D-NEXT: ret 271*fb9e685fSYunQiang Su; 272*fb9e685fSYunQiang Su; LA64F-LABEL: minimumnum_float_nsz: 273*fb9e685fSYunQiang Su; LA64F: # %bb.0: 274*fb9e685fSYunQiang Su; LA64F-NEXT: fmax.s $fa1, $fa1, $fa1 275*fb9e685fSYunQiang Su; LA64F-NEXT: fmax.s $fa0, $fa0, $fa0 276*fb9e685fSYunQiang Su; LA64F-NEXT: fmin.s $fa0, $fa0, $fa1 277*fb9e685fSYunQiang Su; LA64F-NEXT: ret 278*fb9e685fSYunQiang Su; 279*fb9e685fSYunQiang Su; LA64D-LABEL: minimumnum_float_nsz: 280*fb9e685fSYunQiang Su; LA64D: # %bb.0: 281*fb9e685fSYunQiang Su; LA64D-NEXT: fmax.s $fa1, $fa1, $fa1 282*fb9e685fSYunQiang Su; LA64D-NEXT: fmax.s $fa0, $fa0, $fa0 283*fb9e685fSYunQiang Su; LA64D-NEXT: fmin.s $fa0, $fa0, $fa1 284*fb9e685fSYunQiang Su; LA64D-NEXT: ret 285*fb9e685fSYunQiang Su %z = call nsz float @llvm.minimumnum.f32(float %x, float %y) 286*fb9e685fSYunQiang Su ret float %z 287*fb9e685fSYunQiang Su} 288*fb9e685fSYunQiang Su 289*fb9e685fSYunQiang Sudefine float @minimumnum_float_nnan(float %x, float %y) { 290*fb9e685fSYunQiang Su; 291*fb9e685fSYunQiang Su; LA32F-LABEL: minimumnum_float_nnan: 292*fb9e685fSYunQiang Su; LA32F: # %bb.0: 293*fb9e685fSYunQiang Su; LA32F-NEXT: fmin.s $fa0, $fa0, $fa1 294*fb9e685fSYunQiang Su; LA32F-NEXT: ret 295*fb9e685fSYunQiang Su; 296*fb9e685fSYunQiang Su; LA32D-LABEL: minimumnum_float_nnan: 297*fb9e685fSYunQiang Su; LA32D: # %bb.0: 298*fb9e685fSYunQiang Su; LA32D-NEXT: fmin.s $fa0, $fa0, $fa1 299*fb9e685fSYunQiang Su; LA32D-NEXT: ret 300*fb9e685fSYunQiang Su; 301*fb9e685fSYunQiang Su; LA64F-LABEL: minimumnum_float_nnan: 302*fb9e685fSYunQiang Su; LA64F: # %bb.0: 303*fb9e685fSYunQiang Su; LA64F-NEXT: fmin.s $fa0, $fa0, $fa1 304*fb9e685fSYunQiang Su; LA64F-NEXT: ret 305*fb9e685fSYunQiang Su; 306*fb9e685fSYunQiang Su; LA64D-LABEL: minimumnum_float_nnan: 307*fb9e685fSYunQiang Su; LA64D: # %bb.0: 308*fb9e685fSYunQiang Su; LA64D-NEXT: fmin.s $fa0, $fa0, $fa1 309*fb9e685fSYunQiang Su; LA64D-NEXT: ret 310*fb9e685fSYunQiang Su %z = call nnan float @llvm.minimumnum.f32(float %x, float %y) 311*fb9e685fSYunQiang Su ret float %z 312*fb9e685fSYunQiang Su} 313*fb9e685fSYunQiang Su 314*fb9e685fSYunQiang Sudefine double @minimumnum_double(double %x, double %y) { 315*fb9e685fSYunQiang Su; 316*fb9e685fSYunQiang Su; LA32F-LABEL: minimumnum_double: 317*fb9e685fSYunQiang Su; LA32F: # %bb.0: 318*fb9e685fSYunQiang Su; LA32F-NEXT: addi.w $sp, $sp, -16 319*fb9e685fSYunQiang Su; LA32F-NEXT: .cfi_def_cfa_offset 16 320*fb9e685fSYunQiang Su; LA32F-NEXT: st.w $ra, $sp, 12 # 4-byte Folded Spill 321*fb9e685fSYunQiang Su; LA32F-NEXT: .cfi_offset 1, -4 322*fb9e685fSYunQiang Su; LA32F-NEXT: bl %plt(fminimum_num) 323*fb9e685fSYunQiang Su; LA32F-NEXT: ld.w $ra, $sp, 12 # 4-byte Folded Reload 324*fb9e685fSYunQiang Su; LA32F-NEXT: addi.w $sp, $sp, 16 325*fb9e685fSYunQiang Su; LA32F-NEXT: ret 326*fb9e685fSYunQiang Su; 327*fb9e685fSYunQiang Su; LA32D-LABEL: minimumnum_double: 328*fb9e685fSYunQiang Su; LA32D: # %bb.0: 329*fb9e685fSYunQiang Su; LA32D-NEXT: fmax.d $fa1, $fa1, $fa1 330*fb9e685fSYunQiang Su; LA32D-NEXT: fmax.d $fa0, $fa0, $fa0 331*fb9e685fSYunQiang Su; LA32D-NEXT: fmin.d $fa0, $fa0, $fa1 332*fb9e685fSYunQiang Su; LA32D-NEXT: ret 333*fb9e685fSYunQiang Su; 334*fb9e685fSYunQiang Su; LA64F-LABEL: minimumnum_double: 335*fb9e685fSYunQiang Su; LA64F: # %bb.0: 336*fb9e685fSYunQiang Su; LA64F-NEXT: addi.d $sp, $sp, -16 337*fb9e685fSYunQiang Su; LA64F-NEXT: .cfi_def_cfa_offset 16 338*fb9e685fSYunQiang Su; LA64F-NEXT: st.d $ra, $sp, 8 # 8-byte Folded Spill 339*fb9e685fSYunQiang Su; LA64F-NEXT: .cfi_offset 1, -8 340*fb9e685fSYunQiang Su; LA64F-NEXT: bl %plt(fminimum_num) 341*fb9e685fSYunQiang Su; LA64F-NEXT: ld.d $ra, $sp, 8 # 8-byte Folded Reload 342*fb9e685fSYunQiang Su; LA64F-NEXT: addi.d $sp, $sp, 16 343*fb9e685fSYunQiang Su; LA64F-NEXT: ret 344*fb9e685fSYunQiang Su; 345*fb9e685fSYunQiang Su; LA64D-LABEL: minimumnum_double: 346*fb9e685fSYunQiang Su; LA64D: # %bb.0: 347*fb9e685fSYunQiang Su; LA64D-NEXT: fmax.d $fa1, $fa1, $fa1 348*fb9e685fSYunQiang Su; LA64D-NEXT: fmax.d $fa0, $fa0, $fa0 349*fb9e685fSYunQiang Su; LA64D-NEXT: fmin.d $fa0, $fa0, $fa1 350*fb9e685fSYunQiang Su; LA64D-NEXT: ret 351*fb9e685fSYunQiang Su %z = call double @llvm.minimumnum.f64(double %x, double %y) 352*fb9e685fSYunQiang Su ret double %z 353*fb9e685fSYunQiang Su} 354*fb9e685fSYunQiang Su 355*fb9e685fSYunQiang Sudefine double @minimumnum_double_nsz(double %x, double %y) { 356*fb9e685fSYunQiang Su; 357*fb9e685fSYunQiang Su; LA32F-LABEL: minimumnum_double_nsz: 358*fb9e685fSYunQiang Su; LA32F: # %bb.0: 359*fb9e685fSYunQiang Su; LA32F-NEXT: addi.w $sp, $sp, -16 360*fb9e685fSYunQiang Su; LA32F-NEXT: .cfi_def_cfa_offset 16 361*fb9e685fSYunQiang Su; LA32F-NEXT: st.w $ra, $sp, 12 # 4-byte Folded Spill 362*fb9e685fSYunQiang Su; LA32F-NEXT: .cfi_offset 1, -4 363*fb9e685fSYunQiang Su; LA32F-NEXT: bl %plt(fminimum_num) 364*fb9e685fSYunQiang Su; LA32F-NEXT: ld.w $ra, $sp, 12 # 4-byte Folded Reload 365*fb9e685fSYunQiang Su; LA32F-NEXT: addi.w $sp, $sp, 16 366*fb9e685fSYunQiang Su; LA32F-NEXT: ret 367*fb9e685fSYunQiang Su; 368*fb9e685fSYunQiang Su; LA32D-LABEL: minimumnum_double_nsz: 369*fb9e685fSYunQiang Su; LA32D: # %bb.0: 370*fb9e685fSYunQiang Su; LA32D-NEXT: fmax.d $fa1, $fa1, $fa1 371*fb9e685fSYunQiang Su; LA32D-NEXT: fmax.d $fa0, $fa0, $fa0 372*fb9e685fSYunQiang Su; LA32D-NEXT: fmin.d $fa0, $fa0, $fa1 373*fb9e685fSYunQiang Su; LA32D-NEXT: ret 374*fb9e685fSYunQiang Su; 375*fb9e685fSYunQiang Su; LA64F-LABEL: minimumnum_double_nsz: 376*fb9e685fSYunQiang Su; LA64F: # %bb.0: 377*fb9e685fSYunQiang Su; LA64F-NEXT: addi.d $sp, $sp, -16 378*fb9e685fSYunQiang Su; LA64F-NEXT: .cfi_def_cfa_offset 16 379*fb9e685fSYunQiang Su; LA64F-NEXT: st.d $ra, $sp, 8 # 8-byte Folded Spill 380*fb9e685fSYunQiang Su; LA64F-NEXT: .cfi_offset 1, -8 381*fb9e685fSYunQiang Su; LA64F-NEXT: bl %plt(fminimum_num) 382*fb9e685fSYunQiang Su; LA64F-NEXT: ld.d $ra, $sp, 8 # 8-byte Folded Reload 383*fb9e685fSYunQiang Su; LA64F-NEXT: addi.d $sp, $sp, 16 384*fb9e685fSYunQiang Su; LA64F-NEXT: ret 385*fb9e685fSYunQiang Su; 386*fb9e685fSYunQiang Su; LA64D-LABEL: minimumnum_double_nsz: 387*fb9e685fSYunQiang Su; LA64D: # %bb.0: 388*fb9e685fSYunQiang Su; LA64D-NEXT: fmax.d $fa1, $fa1, $fa1 389*fb9e685fSYunQiang Su; LA64D-NEXT: fmax.d $fa0, $fa0, $fa0 390*fb9e685fSYunQiang Su; LA64D-NEXT: fmin.d $fa0, $fa0, $fa1 391*fb9e685fSYunQiang Su; LA64D-NEXT: ret 392*fb9e685fSYunQiang Su %z = call nsz double @llvm.minimumnum.f64(double %x, double %y) 393*fb9e685fSYunQiang Su ret double %z 394*fb9e685fSYunQiang Su} 395*fb9e685fSYunQiang Su 396*fb9e685fSYunQiang Sudefine double @minimumnum_double_nnan(double %x, double %y) { 397*fb9e685fSYunQiang Su; 398*fb9e685fSYunQiang Su; LA32F-LABEL: minimumnum_double_nnan: 399*fb9e685fSYunQiang Su; LA32F: # %bb.0: 400*fb9e685fSYunQiang Su; LA32F-NEXT: addi.w $sp, $sp, -16 401*fb9e685fSYunQiang Su; LA32F-NEXT: .cfi_def_cfa_offset 16 402*fb9e685fSYunQiang Su; LA32F-NEXT: st.w $ra, $sp, 12 # 4-byte Folded Spill 403*fb9e685fSYunQiang Su; LA32F-NEXT: .cfi_offset 1, -4 404*fb9e685fSYunQiang Su; LA32F-NEXT: bl %plt(fminimum_num) 405*fb9e685fSYunQiang Su; LA32F-NEXT: ld.w $ra, $sp, 12 # 4-byte Folded Reload 406*fb9e685fSYunQiang Su; LA32F-NEXT: addi.w $sp, $sp, 16 407*fb9e685fSYunQiang Su; LA32F-NEXT: ret 408*fb9e685fSYunQiang Su; 409*fb9e685fSYunQiang Su; LA32D-LABEL: minimumnum_double_nnan: 410*fb9e685fSYunQiang Su; LA32D: # %bb.0: 411*fb9e685fSYunQiang Su; LA32D-NEXT: fmin.d $fa0, $fa0, $fa1 412*fb9e685fSYunQiang Su; LA32D-NEXT: ret 413*fb9e685fSYunQiang Su; 414*fb9e685fSYunQiang Su; LA64F-LABEL: minimumnum_double_nnan: 415*fb9e685fSYunQiang Su; LA64F: # %bb.0: 416*fb9e685fSYunQiang Su; LA64F-NEXT: addi.d $sp, $sp, -16 417*fb9e685fSYunQiang Su; LA64F-NEXT: .cfi_def_cfa_offset 16 418*fb9e685fSYunQiang Su; LA64F-NEXT: st.d $ra, $sp, 8 # 8-byte Folded Spill 419*fb9e685fSYunQiang Su; LA64F-NEXT: .cfi_offset 1, -8 420*fb9e685fSYunQiang Su; LA64F-NEXT: bl %plt(fminimum_num) 421*fb9e685fSYunQiang Su; LA64F-NEXT: ld.d $ra, $sp, 8 # 8-byte Folded Reload 422*fb9e685fSYunQiang Su; LA64F-NEXT: addi.d $sp, $sp, 16 423*fb9e685fSYunQiang Su; LA64F-NEXT: ret 424*fb9e685fSYunQiang Su; 425*fb9e685fSYunQiang Su; LA64D-LABEL: minimumnum_double_nnan: 426*fb9e685fSYunQiang Su; LA64D: # %bb.0: 427*fb9e685fSYunQiang Su; LA64D-NEXT: fmin.d $fa0, $fa0, $fa1 428*fb9e685fSYunQiang Su; LA64D-NEXT: ret 429*fb9e685fSYunQiang Su %z = call nnan double @llvm.minimumnum.f64(double %x, double %y) 430*fb9e685fSYunQiang Su ret double %z 431*fb9e685fSYunQiang Su} 432