brintos

brintos / llvm-project-archived public Read only

0
0
Text · 24.9 KiB · af128fa Raw
844 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 32; RUN: llc --mtriple=loongarch32 --mattr=+f --verify-machineinstrs < %s | FileCheck %s3; RUN: llc --mtriple=loongarch64 --mattr=+f --verify-machineinstrs < %s | FileCheck %s4 5define i1 @isnan_f(float %x) {6; CHECK-LABEL: isnan_f:7; CHECK:       # %bb.0: # %entry8; CHECK-NEXT:    fclass.s $fa0, $fa09; CHECK-NEXT:    movfr2gr.s $a0, $fa010; CHECK-NEXT:    andi $a0, $a0, 311; CHECK-NEXT:    sltu $a0, $zero, $a012; CHECK-NEXT:    ret13entry:14  %0 = tail call i1 @llvm.is.fpclass.f32(float %x, i32 3)  ; "nan"15  ret i1 %016}17 18define i1 @isnot_nan_f(float %x) {19; CHECK-LABEL: isnot_nan_f:20; CHECK:       # %bb.0: # %entry21; CHECK-NEXT:    fclass.s $fa0, $fa022; CHECK-NEXT:    movfr2gr.s $a0, $fa023; CHECK-NEXT:    andi $a0, $a0, 102024; CHECK-NEXT:    sltu $a0, $zero, $a025; CHECK-NEXT:    ret26entry:27  %0 = tail call i1 @llvm.is.fpclass.f32(float %x, i32 1020)  ; 0x3fc = "zero|subnormal|normal|inf"28  ret i1 %029}30 31define i1 @issignaling_f(float %x) {32; CHECK-LABEL: issignaling_f:33; CHECK:       # %bb.0: # %entry34; CHECK-NEXT:    fclass.s $fa0, $fa035; CHECK-NEXT:    movfr2gr.s $a0, $fa036; CHECK-NEXT:    andi $a0, $a0, 137; CHECK-NEXT:    sltu $a0, $zero, $a038; CHECK-NEXT:    ret39entry:40  %0 = tail call i1 @llvm.is.fpclass.f32(float %x, i32 1)  ; "snan"41  ret i1 %042}43 44define i1 @not_issignaling_f(float %x) {45; CHECK-LABEL: not_issignaling_f:46; CHECK:       # %bb.0: # %entry47; CHECK-NEXT:    fclass.s $fa0, $fa048; CHECK-NEXT:    movfr2gr.s $a0, $fa049; CHECK-NEXT:    andi $a0, $a0, 102250; CHECK-NEXT:    sltu $a0, $zero, $a051; CHECK-NEXT:    ret52entry:53  %0 = tail call i1 @llvm.is.fpclass.f32(float %x, i32 1022)  ; ~"snan"54  ret i1 %055}56 57define i1 @isquiet_f(float %x) {58; CHECK-LABEL: isquiet_f:59; CHECK:       # %bb.0: # %entry60; CHECK-NEXT:    fclass.s $fa0, $fa061; CHECK-NEXT:    movfr2gr.s $a0, $fa062; CHECK-NEXT:    andi $a0, $a0, 263; CHECK-NEXT:    sltu $a0, $zero, $a064; CHECK-NEXT:    ret65entry:66  %0 = tail call i1 @llvm.is.fpclass.f32(float %x, i32 2)  ; "qnan"67  ret i1 %068}69 70define i1 @not_isquiet_f(float %x) {71; CHECK-LABEL: not_isquiet_f:72; CHECK:       # %bb.0: # %entry73; CHECK-NEXT:    fclass.s $fa0, $fa074; CHECK-NEXT:    movfr2gr.s $a0, $fa075; CHECK-NEXT:    andi $a0, $a0, 102176; CHECK-NEXT:    sltu $a0, $zero, $a077; CHECK-NEXT:    ret78entry:79  %0 = tail call i1 @llvm.is.fpclass.f32(float %x, i32 1021)  ; ~"qnan"80  ret i1 %081}82 83define i1 @isinf_f(float %x) {84; CHECK-LABEL: isinf_f:85; CHECK:       # %bb.0: # %entry86; CHECK-NEXT:    fclass.s $fa0, $fa087; CHECK-NEXT:    movfr2gr.s $a0, $fa088; CHECK-NEXT:    andi $a0, $a0, 6889; CHECK-NEXT:    sltu $a0, $zero, $a090; CHECK-NEXT:    ret91entry:92  %0 = tail call i1 @llvm.is.fpclass.f32(float %x, i32 516)  ; 0x204 = "inf"93  ret i1 %094}95 96define i1 @not_isinf_f(float %x) {97; CHECK-LABEL: not_isinf_f:98; CHECK:       # %bb.0: # %entry99; CHECK-NEXT:    fclass.s $fa0, $fa0100; CHECK-NEXT:    movfr2gr.s $a0, $fa0101; CHECK-NEXT:    andi $a0, $a0, 955102; CHECK-NEXT:    sltu $a0, $zero, $a0103; CHECK-NEXT:    ret104entry:105  %0 = tail call i1 @llvm.is.fpclass.f32(float %x, i32 507)  ; ~0x204 = "~inf"106  ret i1 %0107}108 109define i1 @is_plus_inf_f(float %x) {110; CHECK-LABEL: is_plus_inf_f:111; CHECK:       # %bb.0: # %entry112; CHECK-NEXT:    fclass.s $fa0, $fa0113; CHECK-NEXT:    movfr2gr.s $a0, $fa0114; CHECK-NEXT:    andi $a0, $a0, 64115; CHECK-NEXT:    sltu $a0, $zero, $a0116; CHECK-NEXT:    ret117entry:118  %0 = tail call i1 @llvm.is.fpclass.f32(float %x, i32 512)  ; 0x200 = "+inf"119  ret i1 %0120}121 122define i1 @is_minus_inf_f(float %x) {123; CHECK-LABEL: is_minus_inf_f:124; CHECK:       # %bb.0: # %entry125; CHECK-NEXT:    fclass.s $fa0, $fa0126; CHECK-NEXT:    movfr2gr.s $a0, $fa0127; CHECK-NEXT:    andi $a0, $a0, 4128; CHECK-NEXT:    sltu $a0, $zero, $a0129; CHECK-NEXT:    ret130entry:131  %0 = tail call i1 @llvm.is.fpclass.f32(float %x, i32 4)  ; "-inf"132  ret i1 %0133}134 135define i1 @not_is_minus_inf_f(float %x) {136; CHECK-LABEL: not_is_minus_inf_f:137; CHECK:       # %bb.0: # %entry138; CHECK-NEXT:    fclass.s $fa0, $fa0139; CHECK-NEXT:    movfr2gr.s $a0, $fa0140; CHECK-NEXT:    andi $a0, $a0, 1019141; CHECK-NEXT:    sltu $a0, $zero, $a0142; CHECK-NEXT:    ret143entry:144  %0 = tail call i1 @llvm.is.fpclass.f32(float %x, i32 1019)  ; ~"-inf"145  ret i1 %0146}147 148define i1 @isfinite_f(float %x) {149; CHECK-LABEL: isfinite_f:150; CHECK:       # %bb.0: # %entry151; CHECK-NEXT:    fclass.s $fa0, $fa0152; CHECK-NEXT:    movfr2gr.s $a0, $fa0153; CHECK-NEXT:    andi $a0, $a0, 952154; CHECK-NEXT:    sltu $a0, $zero, $a0155; CHECK-NEXT:    ret156entry:157  %0 = tail call i1 @llvm.is.fpclass.f32(float %x, i32 504)  ; 0x1f8 = "finite"158  ret i1 %0159}160 161define i1 @not_isfinite_f(float %x) {162; CHECK-LABEL: not_isfinite_f:163; CHECK:       # %bb.0: # %entry164; CHECK-NEXT:    fclass.s $fa0, $fa0165; CHECK-NEXT:    movfr2gr.s $a0, $fa0166; CHECK-NEXT:    andi $a0, $a0, 71167; CHECK-NEXT:    sltu $a0, $zero, $a0168; CHECK-NEXT:    ret169entry:170  %0 = tail call i1 @llvm.is.fpclass.f32(float %x, i32 519)  ; ~0x1f8 = "~finite"171  ret i1 %0172}173 174define i1 @is_plus_finite_f(float %x) {175; CHECK-LABEL: is_plus_finite_f:176; CHECK:       # %bb.0: # %entry177; CHECK-NEXT:    fclass.s $fa0, $fa0178; CHECK-NEXT:    movfr2gr.s $a0, $fa0179; CHECK-NEXT:    andi $a0, $a0, 896180; CHECK-NEXT:    sltu $a0, $zero, $a0181; CHECK-NEXT:    ret182entry:183  %0 = tail call i1 @llvm.is.fpclass.f32(float %x, i32 448)  ; 0x1c0 = "+finite"184  ret i1 %0185}186 187define i1 @not_is_plus_finite_f(float %x) {188; CHECK-LABEL: not_is_plus_finite_f:189; CHECK:       # %bb.0: # %entry190; CHECK-NEXT:    fclass.s $fa0, $fa0191; CHECK-NEXT:    movfr2gr.s $a0, $fa0192; CHECK-NEXT:    andi $a0, $a0, 127193; CHECK-NEXT:    sltu $a0, $zero, $a0194; CHECK-NEXT:    ret195entry:196  %0 = tail call i1 @llvm.is.fpclass.f32(float %x, i32 575)  ; ~0x1c0 = ~"+finite"197  ret i1 %0198}199 200define i1 @is_minus_finite_f(float %x) {201; CHECK-LABEL: is_minus_finite_f:202; CHECK:       # %bb.0: # %entry203; CHECK-NEXT:    fclass.s $fa0, $fa0204; CHECK-NEXT:    movfr2gr.s $a0, $fa0205; CHECK-NEXT:    andi $a0, $a0, 56206; CHECK-NEXT:    sltu $a0, $zero, $a0207; CHECK-NEXT:    ret208entry:209  %0 = tail call i1 @llvm.is.fpclass.f32(float %x, i32 56)  ; 0x38 = "-finite"210  ret i1 %0211}212 213define i1 @not_is_minus_finite_f(float %x) {214; CHECK-LABEL: not_is_minus_finite_f:215; CHECK:       # %bb.0: # %entry216; CHECK-NEXT:    fclass.s $fa0, $fa0217; CHECK-NEXT:    movfr2gr.s $a0, $fa0218; CHECK-NEXT:    andi $a0, $a0, 967219; CHECK-NEXT:    sltu $a0, $zero, $a0220; CHECK-NEXT:    ret221entry:222  %0 = tail call i1 @llvm.is.fpclass.f32(float %x, i32 967)  ; ~0x38 = ~"-finite"223  ret i1 %0224}225 226define i1 @isnormal_f(float %x) {227; CHECK-LABEL: isnormal_f:228; CHECK:       # %bb.0: # %entry229; CHECK-NEXT:    fclass.s $fa0, $fa0230; CHECK-NEXT:    movfr2gr.s $a0, $fa0231; CHECK-NEXT:    andi $a0, $a0, 136232; CHECK-NEXT:    sltu $a0, $zero, $a0233; CHECK-NEXT:    ret234entry:235  %0 = tail call i1 @llvm.is.fpclass.f32(float %x, i32 264)  ; 0x108 = "normal"236  ret i1 %0237}238 239define i1 @not_isnormal_f(float %x) {240; CHECK-LABEL: not_isnormal_f:241; CHECK:       # %bb.0: # %entry242; CHECK-NEXT:    fclass.s $fa0, $fa0243; CHECK-NEXT:    movfr2gr.s $a0, $fa0244; CHECK-NEXT:    andi $a0, $a0, 887245; CHECK-NEXT:    sltu $a0, $zero, $a0246; CHECK-NEXT:    ret247entry:248  %0 = tail call i1 @llvm.is.fpclass.f32(float %x, i32 759)  ; ~0x108 = "~normal"249  ret i1 %0250}251 252define i1 @is_plus_normal_f(float %x) {253; CHECK-LABEL: is_plus_normal_f:254; CHECK:       # %bb.0: # %entry255; CHECK-NEXT:    fclass.s $fa0, $fa0256; CHECK-NEXT:    movfr2gr.s $a0, $fa0257; CHECK-NEXT:    andi $a0, $a0, 128258; CHECK-NEXT:    sltu $a0, $zero, $a0259; CHECK-NEXT:    ret260entry:261  %0 = tail call i1 @llvm.is.fpclass.f32(float %x, i32 256)  ; 0x100 = "+normal"262  ret i1 %0263}264 265define i1 @issubnormal_f(float %x) {266; CHECK-LABEL: issubnormal_f:267; CHECK:       # %bb.0: # %entry268; CHECK-NEXT:    fclass.s $fa0, $fa0269; CHECK-NEXT:    movfr2gr.s $a0, $fa0270; CHECK-NEXT:    andi $a0, $a0, 272271; CHECK-NEXT:    sltu $a0, $zero, $a0272; CHECK-NEXT:    ret273entry:274  %0 = tail call i1 @llvm.is.fpclass.f32(float %x, i32 144)  ; 0x90 = "subnormal"275  ret i1 %0276}277 278define i1 @not_issubnormal_f(float %x) {279; CHECK-LABEL: not_issubnormal_f:280; CHECK:       # %bb.0: # %entry281; CHECK-NEXT:    fclass.s $fa0, $fa0282; CHECK-NEXT:    movfr2gr.s $a0, $fa0283; CHECK-NEXT:    andi $a0, $a0, 751284; CHECK-NEXT:    sltu $a0, $zero, $a0285; CHECK-NEXT:    ret286entry:287  %0 = tail call i1 @llvm.is.fpclass.f32(float %x, i32 879)  ; ~0x90 = "~subnormal"288  ret i1 %0289}290 291define i1 @is_plus_subnormal_f(float %x) {292; CHECK-LABEL: is_plus_subnormal_f:293; CHECK:       # %bb.0: # %entry294; CHECK-NEXT:    fclass.s $fa0, $fa0295; CHECK-NEXT:    movfr2gr.s $a0, $fa0296; CHECK-NEXT:    andi $a0, $a0, 256297; CHECK-NEXT:    sltu $a0, $zero, $a0298; CHECK-NEXT:    ret299entry:300  %0 = tail call i1 @llvm.is.fpclass.f32(float %x, i32 128)  ; 0x80 = "+subnormal"301  ret i1 %0302}303 304define i1 @not_is_plus_subnormal_f(float %x) {305; CHECK-LABEL: not_is_plus_subnormal_f:306; CHECK:       # %bb.0: # %entry307; CHECK-NEXT:    fclass.s $fa0, $fa0308; CHECK-NEXT:    movfr2gr.s $a0, $fa0309; CHECK-NEXT:    andi $a0, $a0, 767310; CHECK-NEXT:    sltu $a0, $zero, $a0311; CHECK-NEXT:    ret312entry:313  %0 = tail call i1 @llvm.is.fpclass.f32(float %x, i32 895)  ; ~0x80 = ~"+subnormal"314  ret i1 %0315}316 317define i1 @is_minus_subnormal_f(float %x) {318; CHECK-LABEL: is_minus_subnormal_f:319; CHECK:       # %bb.0: # %entry320; CHECK-NEXT:    fclass.s $fa0, $fa0321; CHECK-NEXT:    movfr2gr.s $a0, $fa0322; CHECK-NEXT:    andi $a0, $a0, 16323; CHECK-NEXT:    sltu $a0, $zero, $a0324; CHECK-NEXT:    ret325entry:326  %0 = tail call i1 @llvm.is.fpclass.f32(float %x, i32 16)  ; 0x10 = "-subnormal"327  ret i1 %0328}329 330define i1 @not_is_minus_subnormal_f(float %x) {331; CHECK-LABEL: not_is_minus_subnormal_f:332; CHECK:       # %bb.0: # %entry333; CHECK-NEXT:    fclass.s $fa0, $fa0334; CHECK-NEXT:    movfr2gr.s $a0, $fa0335; CHECK-NEXT:    andi $a0, $a0, 1007336; CHECK-NEXT:    sltu $a0, $zero, $a0337; CHECK-NEXT:    ret338entry:339  %0 = tail call i1 @llvm.is.fpclass.f32(float %x, i32 1007)  ; ~0x10 = ~"-subnormal"340  ret i1 %0341}342 343define i1 @iszero_f(float %x) {344; CHECK-LABEL: iszero_f:345; CHECK:       # %bb.0: # %entry346; CHECK-NEXT:    fclass.s $fa0, $fa0347; CHECK-NEXT:    movfr2gr.s $a0, $fa0348; CHECK-NEXT:    andi $a0, $a0, 544349; CHECK-NEXT:    sltu $a0, $zero, $a0350; CHECK-NEXT:    ret351entry:352  %0 = tail call i1 @llvm.is.fpclass.f32(float %x, i32 96)  ; 0x60 = "zero"353  ret i1 %0354}355 356define i1 @not_iszero_f(float %x) {357; CHECK-LABEL: not_iszero_f:358; CHECK:       # %bb.0: # %entry359; CHECK-NEXT:    fclass.s $fa0, $fa0360; CHECK-NEXT:    movfr2gr.s $a0, $fa0361; CHECK-NEXT:    andi $a0, $a0, 479362; CHECK-NEXT:    sltu $a0, $zero, $a0363; CHECK-NEXT:    ret364entry:365  %0 = tail call i1 @llvm.is.fpclass.f32(float %x, i32 927)  ; ~0x60 = "~zero"366  ret i1 %0367}368 369define i1 @issubnormal_or_zero_f(float %x) {370; CHECK-LABEL: issubnormal_or_zero_f:371; CHECK:       # %bb.0: # %entry372; CHECK-NEXT:    fclass.s $fa0, $fa0373; CHECK-NEXT:    movfr2gr.s $a0, $fa0374; CHECK-NEXT:    andi $a0, $a0, 816375; CHECK-NEXT:    sltu $a0, $zero, $a0376; CHECK-NEXT:    ret377entry:378  %0 = tail call i1 @llvm.is.fpclass.f32(float %x, i32 240)  ; 0xf0 = "subnormal|zero"379  ret i1 %0380}381 382define i1 @not_issubnormal_or_zero_f(float %x) {383; CHECK-LABEL: not_issubnormal_or_zero_f:384; CHECK:       # %bb.0: # %entry385; CHECK-NEXT:    fclass.s $fa0, $fa0386; CHECK-NEXT:    movfr2gr.s $a0, $fa0387; CHECK-NEXT:    andi $a0, $a0, 207388; CHECK-NEXT:    sltu $a0, $zero, $a0389; CHECK-NEXT:    ret390entry:391  %0 = tail call i1 @llvm.is.fpclass.f32(float %x, i32 783)  ; ~0xf0 = "~(subnormal|zero)"392  ret i1 %0393}394 395define i1 @is_plus_zero_f(float %x) {396; CHECK-LABEL: is_plus_zero_f:397; CHECK:       # %bb.0: # %entry398; CHECK-NEXT:    fclass.s $fa0, $fa0399; CHECK-NEXT:    movfr2gr.s $a0, $fa0400; CHECK-NEXT:    andi $a0, $a0, 512401; CHECK-NEXT:    sltu $a0, $zero, $a0402; CHECK-NEXT:    ret403entry:404  %0 = tail call i1 @llvm.is.fpclass.f32(float %x, i32 64)  ; 0x40 = "+zero"405  ret i1 %0406}407 408define i1 @not_is_plus_zero_f(float %x) {409; CHECK-LABEL: not_is_plus_zero_f:410; CHECK:       # %bb.0: # %entry411; CHECK-NEXT:    fclass.s $fa0, $fa0412; CHECK-NEXT:    movfr2gr.s $a0, $fa0413; CHECK-NEXT:    andi $a0, $a0, 511414; CHECK-NEXT:    sltu $a0, $zero, $a0415; CHECK-NEXT:    ret416entry:417  %0 = tail call i1 @llvm.is.fpclass.f32(float %x, i32 959)  ; ~0x40 = ~"+zero"418  ret i1 %0419}420 421define i1 @is_minus_zero_f(float %x) {422; CHECK-LABEL: is_minus_zero_f:423; CHECK:       # %bb.0: # %entry424; CHECK-NEXT:    fclass.s $fa0, $fa0425; CHECK-NEXT:    movfr2gr.s $a0, $fa0426; CHECK-NEXT:    andi $a0, $a0, 32427; CHECK-NEXT:    sltu $a0, $zero, $a0428; CHECK-NEXT:    ret429entry:430  %0 = tail call i1 @llvm.is.fpclass.f32(float %x, i32 32)  ; 0x20 = "-zero"431  ret i1 %0432}433 434define i1 @not_is_minus_zero_f(float %x) {435; CHECK-LABEL: not_is_minus_zero_f:436; CHECK:       # %bb.0: # %entry437; CHECK-NEXT:    fclass.s $fa0, $fa0438; CHECK-NEXT:    movfr2gr.s $a0, $fa0439; CHECK-NEXT:    andi $a0, $a0, 991440; CHECK-NEXT:    sltu $a0, $zero, $a0441; CHECK-NEXT:    ret442entry:443  %0 = tail call i1 @llvm.is.fpclass.f32(float %x, i32 991)  ; ~0x20 = ~"-zero"444  ret i1 %0445}446 447define i1 @isnone_f(float %x) {448; CHECK-LABEL: isnone_f:449; CHECK:       # %bb.0: # %entry450; CHECK-NEXT:    fclass.s $fa0, $fa0451; CHECK-NEXT:    movfr2gr.s $a0, $fa0452; CHECK-NEXT:    andi $a0, $a0, 0453; CHECK-NEXT:    sltu $a0, $zero, $a0454; CHECK-NEXT:    ret455entry:456  %0 = tail call i1 @llvm.is.fpclass.f32(float %x, i32 0)457  ret i1 %0458}459 460define i1 @isany_f(float %x) {461; CHECK-LABEL: isany_f:462; CHECK:       # %bb.0: # %entry463; CHECK-NEXT:    fclass.s $fa0, $fa0464; CHECK-NEXT:    movfr2gr.s $a0, $fa0465; CHECK-NEXT:    andi $a0, $a0, 1023466; CHECK-NEXT:    sltu $a0, $zero, $a0467; CHECK-NEXT:    ret468entry:469  %0 = tail call i1 @llvm.is.fpclass.f32(float %x, i32 1023)470  ret i1 %0471}472 473define i1 @iszero_or_nan_f(float %x) {474; CHECK-LABEL: iszero_or_nan_f:475; CHECK:       # %bb.0: # %entry476; CHECK-NEXT:    fclass.s $fa0, $fa0477; CHECK-NEXT:    movfr2gr.s $a0, $fa0478; CHECK-NEXT:    andi $a0, $a0, 547479; CHECK-NEXT:    sltu $a0, $zero, $a0480; CHECK-NEXT:    ret481entry:482  %0 = tail call i1 @llvm.is.fpclass.f32(float %x, i32 99)  ; 0x60|0x3 = "zero|nan"483  ret i1 %0484}485 486define i1 @not_iszero_or_nan_f(float %x) {487; CHECK-LABEL: not_iszero_or_nan_f:488; CHECK:       # %bb.0: # %entry489; CHECK-NEXT:    fclass.s $fa0, $fa0490; CHECK-NEXT:    movfr2gr.s $a0, $fa0491; CHECK-NEXT:    andi $a0, $a0, 476492; CHECK-NEXT:    sltu $a0, $zero, $a0493; CHECK-NEXT:    ret494entry:495  %0 = tail call i1 @llvm.is.fpclass.f32(float %x, i32 924)  ; ~0x60 = "~(zero|nan)"496  ret i1 %0497}498 499define i1 @iszero_or_qnan_f(float %x) {500; CHECK-LABEL: iszero_or_qnan_f:501; CHECK:       # %bb.0: # %entry502; CHECK-NEXT:    fclass.s $fa0, $fa0503; CHECK-NEXT:    movfr2gr.s $a0, $fa0504; CHECK-NEXT:    andi $a0, $a0, 546505; CHECK-NEXT:    sltu $a0, $zero, $a0506; CHECK-NEXT:    ret507entry:508  %0 = tail call i1 @llvm.is.fpclass.f32(float %x, i32 98)  ; 0x60|0x2 = "zero|qnan"509  ret i1 %0510}511 512define i1 @iszero_or_snan_f(float %x) {513; CHECK-LABEL: iszero_or_snan_f:514; CHECK:       # %bb.0: # %entry515; CHECK-NEXT:    fclass.s $fa0, $fa0516; CHECK-NEXT:    movfr2gr.s $a0, $fa0517; CHECK-NEXT:    andi $a0, $a0, 545518; CHECK-NEXT:    sltu $a0, $zero, $a0519; CHECK-NEXT:    ret520entry:521  %0 = tail call i1 @llvm.is.fpclass.f32(float %x, i32 97)  ; 0x60|0x1 = "zero|snan"522  ret i1 %0523}524 525define i1 @not_iszero_or_qnan_f(float %x) {526; CHECK-LABEL: not_iszero_or_qnan_f:527; CHECK:       # %bb.0: # %entry528; CHECK-NEXT:    fclass.s $fa0, $fa0529; CHECK-NEXT:    movfr2gr.s $a0, $fa0530; CHECK-NEXT:    andi $a0, $a0, 477531; CHECK-NEXT:    sltu $a0, $zero, $a0532; CHECK-NEXT:    ret533entry:534  %0 = tail call i1 @llvm.is.fpclass.f32(float %x, i32 925)  ; ~(0x60|0x2) = "~(zero|qnan)"535  ret i1 %0536}537 538define i1 @not_iszero_or_snan_f(float %x) {539; CHECK-LABEL: not_iszero_or_snan_f:540; CHECK:       # %bb.0: # %entry541; CHECK-NEXT:    fclass.s $fa0, $fa0542; CHECK-NEXT:    movfr2gr.s $a0, $fa0543; CHECK-NEXT:    andi $a0, $a0, 478544; CHECK-NEXT:    sltu $a0, $zero, $a0545; CHECK-NEXT:    ret546entry:547  %0 = tail call i1 @llvm.is.fpclass.f32(float %x, i32 926)  ; ~(0x60|0x1) = "~(zero|snan)"548  ret i1 %0549}550 551define i1 @isinf_or_nan_f(float %x) {552; CHECK-LABEL: isinf_or_nan_f:553; CHECK:       # %bb.0: # %entry554; CHECK-NEXT:    fclass.s $fa0, $fa0555; CHECK-NEXT:    movfr2gr.s $a0, $fa0556; CHECK-NEXT:    andi $a0, $a0, 71557; CHECK-NEXT:    sltu $a0, $zero, $a0558; CHECK-NEXT:    ret559entry:560  %0 = tail call i1 @llvm.is.fpclass.f32(float %x, i32 519)  ; 0x204|0x3 = "inf|nan"561  ret i1 %0562}563 564define i1 @not_isinf_or_nan_f(float %x) {565; CHECK-LABEL: not_isinf_or_nan_f:566; CHECK:       # %bb.0: # %entry567; CHECK-NEXT:    fclass.s $fa0, $fa0568; CHECK-NEXT:    movfr2gr.s $a0, $fa0569; CHECK-NEXT:    andi $a0, $a0, 952570; CHECK-NEXT:    sltu $a0, $zero, $a0571; CHECK-NEXT:    ret572entry:573  %0 = tail call i1 @llvm.is.fpclass.f32(float %x, i32 504)  ; ~(0x204|0x3) = "~(inf|nan)"574  ret i1 %0575}576 577define i1 @isfinite_or_nan_f(float %x) {578; CHECK-LABEL: isfinite_or_nan_f:579; CHECK:       # %bb.0: # %entry580; CHECK-NEXT:    fclass.s $fa0, $fa0581; CHECK-NEXT:    movfr2gr.s $a0, $fa0582; CHECK-NEXT:    andi $a0, $a0, 955583; CHECK-NEXT:    sltu $a0, $zero, $a0584; CHECK-NEXT:    ret585entry:586  %0 = tail call i1 @llvm.is.fpclass.f32(float %x, i32 507)  ; 0x1f8|0x3 = "finite|nan"587  ret i1 %0588}589 590define i1 @not_isfinite_or_nan_f(float %x) {591; CHECK-LABEL: not_isfinite_or_nan_f:592; CHECK:       # %bb.0: # %entry593; CHECK-NEXT:    fclass.s $fa0, $fa0594; CHECK-NEXT:    movfr2gr.s $a0, $fa0595; CHECK-NEXT:    andi $a0, $a0, 68596; CHECK-NEXT:    sltu $a0, $zero, $a0597; CHECK-NEXT:    ret598entry:599  %0 = tail call i1 @llvm.is.fpclass.f32(float %x, i32 516)  ; ~(0x1f8|0x3) = "~(finite|nan)"600  ret i1 %0601}602 603define i1 @is_plus_inf_or_nan_f(float %x) {604; CHECK-LABEL: is_plus_inf_or_nan_f:605; CHECK:       # %bb.0:606; CHECK-NEXT:    fclass.s $fa0, $fa0607; CHECK-NEXT:    movfr2gr.s $a0, $fa0608; CHECK-NEXT:    andi $a0, $a0, 67609; CHECK-NEXT:    sltu $a0, $zero, $a0610; CHECK-NEXT:    ret611  %class = tail call i1 @llvm.is.fpclass.f32(float %x, i32 515)  ; 0x200|0x3 = "+inf|nan"612  ret i1 %class613}614 615define i1 @is_minus_inf_or_nan_f(float %x) {616; CHECK-LABEL: is_minus_inf_or_nan_f:617; CHECK:       # %bb.0:618; CHECK-NEXT:    fclass.s $fa0, $fa0619; CHECK-NEXT:    movfr2gr.s $a0, $fa0620; CHECK-NEXT:    andi $a0, $a0, 7621; CHECK-NEXT:    sltu $a0, $zero, $a0622; CHECK-NEXT:    ret623  %class = tail call i1 @llvm.is.fpclass.f32(float %x, i32 7)  ; "-inf|nan"624  ret i1 %class625}626 627define i1 @not_is_plus_inf_or_nan_f(float %x) {628; CHECK-LABEL: not_is_plus_inf_or_nan_f:629; CHECK:       # %bb.0:630; CHECK-NEXT:    fclass.s $fa0, $fa0631; CHECK-NEXT:    movfr2gr.s $a0, $fa0632; CHECK-NEXT:    andi $a0, $a0, 956633; CHECK-NEXT:    sltu $a0, $zero, $a0634; CHECK-NEXT:    ret635  %class = tail call i1 @llvm.is.fpclass.f32(float %x, i32 508)  ; ~(0x200|0x3) = "~(+inf|nan)"636  ret i1 %class637}638 639define i1 @not_is_minus_inf_or_nan_f(float %x) {640; CHECK-LABEL: not_is_minus_inf_or_nan_f:641; CHECK:       # %bb.0:642; CHECK-NEXT:    fclass.s $fa0, $fa0643; CHECK-NEXT:    movfr2gr.s $a0, $fa0644; CHECK-NEXT:    andi $a0, $a0, 1016645; CHECK-NEXT:    sltu $a0, $zero, $a0646; CHECK-NEXT:    ret647  %class = tail call i1 @llvm.is.fpclass.f32(float %x, i32 1016)  ; "~(-inf|nan)"648  ret i1 %class649}650 651define i1 @is_plus_inf_or_snan_f(float %x) {652; CHECK-LABEL: is_plus_inf_or_snan_f:653; CHECK:       # %bb.0:654; CHECK-NEXT:    fclass.s $fa0, $fa0655; CHECK-NEXT:    movfr2gr.s $a0, $fa0656; CHECK-NEXT:    andi $a0, $a0, 65657; CHECK-NEXT:    sltu $a0, $zero, $a0658; CHECK-NEXT:    ret659  %class = tail call i1 @llvm.is.fpclass.f32(float %x, i32 513)  ; 0x200|0x1 = "+inf|snan"660  ret i1 %class661}662 663define i1 @is_plus_inf_or_qnan_f(float %x) {664; CHECK-LABEL: is_plus_inf_or_qnan_f:665; CHECK:       # %bb.0:666; CHECK-NEXT:    fclass.s $fa0, $fa0667; CHECK-NEXT:    movfr2gr.s $a0, $fa0668; CHECK-NEXT:    andi $a0, $a0, 66669; CHECK-NEXT:    sltu $a0, $zero, $a0670; CHECK-NEXT:    ret671  %class = tail call i1 @llvm.is.fpclass.f32(float %x, i32 514)  ; 0x200|0x1 = "+inf|qnan"672  ret i1 %class673}674 675define i1 @not_is_plus_inf_or_snan_f(float %x) {676; CHECK-LABEL: not_is_plus_inf_or_snan_f:677; CHECK:       # %bb.0:678; CHECK-NEXT:    fclass.s $fa0, $fa0679; CHECK-NEXT:    movfr2gr.s $a0, $fa0680; CHECK-NEXT:    andi $a0, $a0, 958681; CHECK-NEXT:    sltu $a0, $zero, $a0682; CHECK-NEXT:    ret683  %class = tail call i1 @llvm.is.fpclass.f32(float %x, i32 510) ; ~(+inf|snan)684  ret i1 %class685}686 687define i1 @not_is_plus_inf_or_qnan_f(float %x) {688; CHECK-LABEL: not_is_plus_inf_or_qnan_f:689; CHECK:       # %bb.0:690; CHECK-NEXT:    fclass.s $fa0, $fa0691; CHECK-NEXT:    movfr2gr.s $a0, $fa0692; CHECK-NEXT:    andi $a0, $a0, 957693; CHECK-NEXT:    sltu $a0, $zero, $a0694; CHECK-NEXT:    ret695  %class = tail call i1 @llvm.is.fpclass.f32(float %x, i32 509) ; ~(+inf|qnan)696  ret i1 %class697}698 699define i1 @is_minus_inf_or_snan_f(float %x) {700; CHECK-LABEL: is_minus_inf_or_snan_f:701; CHECK:       # %bb.0:702; CHECK-NEXT:    fclass.s $fa0, $fa0703; CHECK-NEXT:    movfr2gr.s $a0, $fa0704; CHECK-NEXT:    andi $a0, $a0, 5705; CHECK-NEXT:    sltu $a0, $zero, $a0706; CHECK-NEXT:    ret707  %class = tail call i1 @llvm.is.fpclass.f32(float %x, i32 5)  ; "-inf|snan"708  ret i1 %class709}710 711define i1 @is_minus_inf_or_qnan_f(float %x) {712; CHECK-LABEL: is_minus_inf_or_qnan_f:713; CHECK:       # %bb.0:714; CHECK-NEXT:    fclass.s $fa0, $fa0715; CHECK-NEXT:    movfr2gr.s $a0, $fa0716; CHECK-NEXT:    andi $a0, $a0, 6717; CHECK-NEXT:    sltu $a0, $zero, $a0718; CHECK-NEXT:    ret719  %class = tail call i1 @llvm.is.fpclass.f32(float %x, i32 6)  ; "-inf|qnan"720  ret i1 %class721}722 723define i1 @not_is_minus_inf_or_snan_f(float %x) {724; CHECK-LABEL: not_is_minus_inf_or_snan_f:725; CHECK:       # %bb.0:726; CHECK-NEXT:    fclass.s $fa0, $fa0727; CHECK-NEXT:    movfr2gr.s $a0, $fa0728; CHECK-NEXT:    andi $a0, $a0, 1018729; CHECK-NEXT:    sltu $a0, $zero, $a0730; CHECK-NEXT:    ret731  %class = tail call i1 @llvm.is.fpclass.f32(float %x, i32 1018)  ; "~(-inf|snan)"732  ret i1 %class733}734 735define i1 @not_is_minus_inf_or_qnan_f(float %x) {736; CHECK-LABEL: not_is_minus_inf_or_qnan_f:737; CHECK:       # %bb.0:738; CHECK-NEXT:    fclass.s $fa0, $fa0739; CHECK-NEXT:    movfr2gr.s $a0, $fa0740; CHECK-NEXT:    andi $a0, $a0, 1017741; CHECK-NEXT:    sltu $a0, $zero, $a0742; CHECK-NEXT:    ret743  %class = tail call i1 @llvm.is.fpclass.f32(float %x, i32 1017)  ; "-inf|qnan"744  ret i1 %class745}746 747define i1 @issubnormal_or_nan_f(float %x) {748; CHECK-LABEL: issubnormal_or_nan_f:749; CHECK:       # %bb.0:750; CHECK-NEXT:    fclass.s $fa0, $fa0751; CHECK-NEXT:    movfr2gr.s $a0, $fa0752; CHECK-NEXT:    andi $a0, $a0, 275753; CHECK-NEXT:    sltu $a0, $zero, $a0754; CHECK-NEXT:    ret755  %class = tail call i1 @llvm.is.fpclass.f32(float %x, i32 147)  ; 0x90|0x3 = "subnormal|nan"756  ret i1 %class757}758 759define i1 @issubnormal_or_zero_or_nan_f(float %x) {760; CHECK-LABEL: issubnormal_or_zero_or_nan_f:761; CHECK:       # %bb.0:762; CHECK-NEXT:    fclass.s $fa0, $fa0763; CHECK-NEXT:    movfr2gr.s $a0, $fa0764; CHECK-NEXT:    andi $a0, $a0, 819765; CHECK-NEXT:    sltu $a0, $zero, $a0766; CHECK-NEXT:    ret767  %class = tail call i1 @llvm.is.fpclass.f32(float %x, i32 243)  ; 0xf0|0x3 = "subnormal|zero|nan"768  ret i1 %class769}770 771define i1 @issubnormal_or_zero_or_snan_f(float %x) {772; CHECK-LABEL: issubnormal_or_zero_or_snan_f:773; CHECK:       # %bb.0:774; CHECK-NEXT:    fclass.s $fa0, $fa0775; CHECK-NEXT:    movfr2gr.s $a0, $fa0776; CHECK-NEXT:    andi $a0, $a0, 817777; CHECK-NEXT:    sltu $a0, $zero, $a0778; CHECK-NEXT:    ret779  %class = tail call i1 @llvm.is.fpclass.f32(float %x, i32 241)  ; 0x90|0x1 = "subnormal|snan"780  ret i1 %class781}782 783define i1 @issubnormal_or_zero_or_qnan_f(float %x) {784; CHECK-LABEL: issubnormal_or_zero_or_qnan_f:785; CHECK:       # %bb.0:786; CHECK-NEXT:    fclass.s $fa0, $fa0787; CHECK-NEXT:    movfr2gr.s $a0, $fa0788; CHECK-NEXT:    andi $a0, $a0, 818789; CHECK-NEXT:    sltu $a0, $zero, $a0790; CHECK-NEXT:    ret791  %class = tail call i1 @llvm.is.fpclass.f32(float %x, i32 242)  ; 0x90|0x2 = "subnormal|qnan"792  ret i1 %class793}794 795define i1 @not_issubnormal_or_nan_f(float %x) {796; CHECK-LABEL: not_issubnormal_or_nan_f:797; CHECK:       # %bb.0:798; CHECK-NEXT:    fclass.s $fa0, $fa0799; CHECK-NEXT:    movfr2gr.s $a0, $fa0800; CHECK-NEXT:    andi $a0, $a0, 748801; CHECK-NEXT:    sltu $a0, $zero, $a0802; CHECK-NEXT:    ret803  %class = tail call i1 @llvm.is.fpclass.f32(float %x, i32 876)  ; ~(0x90|0x3) = ~"subnormal|nan"804  ret i1 %class805}806 807define i1 @not_issubnormal_or_zero_or_nan_f(float %x) {808; CHECK-LABEL: not_issubnormal_or_zero_or_nan_f:809; CHECK:       # %bb.0:810; CHECK-NEXT:    fclass.s $fa0, $fa0811; CHECK-NEXT:    movfr2gr.s $a0, $fa0812; CHECK-NEXT:    andi $a0, $a0, 204813; CHECK-NEXT:    sltu $a0, $zero, $a0814; CHECK-NEXT:    ret815  %class = tail call i1 @llvm.is.fpclass.f32(float %x, i32 780)  ; ~(0xf0|0x3) = ~"subnormal|zero|nan"816  ret i1 %class817}818 819define i1 @not_issubnormal_or_zero_or_snan_f(float %x) {820; CHECK-LABEL: not_issubnormal_or_zero_or_snan_f:821; CHECK:       # %bb.0:822; CHECK-NEXT:    fclass.s $fa0, $fa0823; CHECK-NEXT:    movfr2gr.s $a0, $fa0824; CHECK-NEXT:    andi $a0, $a0, 206825; CHECK-NEXT:    sltu $a0, $zero, $a0826; CHECK-NEXT:    ret827  %class = tail call i1 @llvm.is.fpclass.f32(float %x, i32 782)  ; ~(0x90|0x1) = ~"subnormal|snan"828  ret i1 %class829}830 831define i1 @not_issubnormal_or_zero_or_qnan_f(float %x) {832; CHECK-LABEL: not_issubnormal_or_zero_or_qnan_f:833; CHECK:       # %bb.0:834; CHECK-NEXT:    fclass.s $fa0, $fa0835; CHECK-NEXT:    movfr2gr.s $a0, $fa0836; CHECK-NEXT:    andi $a0, $a0, 205837; CHECK-NEXT:    sltu $a0, $zero, $a0838; CHECK-NEXT:    ret839  %class = tail call i1 @llvm.is.fpclass.f32(float %x, i32 781)  ; ~(0x90|0x2) = ~"subnormal|qnan"840  ret i1 %class841}842 843declare i1 @llvm.is.fpclass.f32(float, i32)844