brintos

brintos / llvm-project-archived public Read only

0
0
Text · 6.9 KiB · 9454a06 Raw
247 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=mipsisa32r6-unknown-linux-gnu -verify-machineinstrs -o - %s | FileCheck %s3 4 5define i1 @isnan_float(float %x) nounwind {6; CHECK-LABEL: isnan_float:7; CHECK:       # %bb.0:8; CHECK-NEXT:    class.s $f0, $f129; CHECK-NEXT:    mfc1 $1, $f010; CHECK-NEXT:    andi $1, $1, 311; CHECK-NEXT:    jr $ra12; CHECK-NEXT:    sltu $2, $zero, $113  %1 = call i1 @llvm.is.fpclass.f32(float %x, i32 3)  ; nan14  ret i1 %115}16 17define i1 @isnan_double(double %x) nounwind {18; CHECK-LABEL: isnan_double:19; CHECK:       # %bb.0:20; CHECK-NEXT:    class.d $f0, $f1221; CHECK-NEXT:    mfc1 $1, $f022; CHECK-NEXT:    andi $1, $1, 323; CHECK-NEXT:    jr $ra24; CHECK-NEXT:    sltu $2, $zero, $125  %1 = call i1 @llvm.is.fpclass.f64(double %x, i32 3)  ; nan26  ret i1 %127}28 29define i1 @isnan_float_strictfp(float %x) strictfp nounwind {30; CHECK-LABEL: isnan_float_strictfp:31; CHECK:       # %bb.0:32; CHECK-NEXT:    class.s $f0, $f1233; CHECK-NEXT:    mfc1 $1, $f034; CHECK-NEXT:    andi $1, $1, 335; CHECK-NEXT:    jr $ra36; CHECK-NEXT:    sltu $2, $zero, $137  %1 = call i1 @llvm.is.fpclass.f32(float %x, i32 3) strictfp ; nan38  ret i1 %139}40 41define i1 @isnan_double_strictfp(double %x) strictfp nounwind {42; CHECK-LABEL: isnan_double_strictfp:43; CHECK:       # %bb.0:44; CHECK-NEXT:    class.d $f0, $f1245; CHECK-NEXT:    mfc1 $1, $f046; CHECK-NEXT:    andi $1, $1, 347; CHECK-NEXT:    jr $ra48; CHECK-NEXT:    sltu $2, $zero, $149  %1 = call i1 @llvm.is.fpclass.f64(double %x, i32 3) strictfp ; nan50  ret i1 %151}52 53define i1 @isinf_float(float %x) nounwind {54; CHECK-LABEL: isinf_float:55; CHECK:       # %bb.0:56; CHECK-NEXT:    class.s $f0, $f1257; CHECK-NEXT:    mfc1 $1, $f058; CHECK-NEXT:    andi $1, $1, 6859; CHECK-NEXT:    jr $ra60; CHECK-NEXT:    sltu $2, $zero, $161  %1 = call i1 @llvm.is.fpclass.f32(float %x, i32 516)  ; 0x204 = "inf"62  ret i1 %163}64 65define i1 @isfinite_float(float %x) nounwind {66; CHECK-LABEL: isfinite_float:67; CHECK:       # %bb.0:68; CHECK-NEXT:    class.s $f0, $f1269; CHECK-NEXT:    mfc1 $1, $f070; CHECK-NEXT:    andi $1, $1, 95271; CHECK-NEXT:    jr $ra72; CHECK-NEXT:    sltu $2, $zero, $173  %1 = call i1 @llvm.is.fpclass.f32(float %x, i32 504)  ; 0x1f8 = "finite"74  ret i1 %175}76 77define i1 @isnormal_float(float %x) nounwind {78; CHECK-LABEL: isnormal_float:79; CHECK:       # %bb.0:80; CHECK-NEXT:    class.s $f0, $f1281; CHECK-NEXT:    mfc1 $1, $f082; CHECK-NEXT:    andi $1, $1, 13683; CHECK-NEXT:    jr $ra84; CHECK-NEXT:    sltu $2, $zero, $185  %1 = call i1 @llvm.is.fpclass.f32(float %x, i32 264)  ; 0x108 = "normal"86  ret i1 %187}88 89define i1 @issubnormal_float(float %x) nounwind {90; CHECK-LABEL: issubnormal_float:91; CHECK:       # %bb.0:92; CHECK-NEXT:    class.s $f0, $f1293; CHECK-NEXT:    mfc1 $1, $f094; CHECK-NEXT:    andi $1, $1, 27295; CHECK-NEXT:    jr $ra96; CHECK-NEXT:    sltu $2, $zero, $197  %1 = call i1 @llvm.is.fpclass.f32(float %x, i32 144)  ; 0x90 = "subnormal"98  ret i1 %199}100 101define i1 @iszero_float(float %x) nounwind {102; CHECK-LABEL: iszero_float:103; CHECK:       # %bb.0:104; CHECK-NEXT:    class.s $f0, $f12105; CHECK-NEXT:    mfc1 $1, $f0106; CHECK-NEXT:    andi $1, $1, 544107; CHECK-NEXT:    jr $ra108; CHECK-NEXT:    sltu $2, $zero, $1109  %1 = call i1 @llvm.is.fpclass.f32(float %x, i32 96)  ; 0x60 = "zero"110  ret i1 %1111}112 113define i1 @issnan_float(float %x) nounwind {114; CHECK-LABEL: issnan_float:115; CHECK:       # %bb.0:116; CHECK-NEXT:    class.s $f0, $f12117; CHECK-NEXT:    mfc1 $1, $f0118; CHECK-NEXT:    andi $1, $1, 1119; CHECK-NEXT:    jr $ra120; CHECK-NEXT:    sltu $2, $zero, $1121  %1 = call i1 @llvm.is.fpclass.f32(float %x, i32 1)122  ret i1 %1123}124 125define i1 @issnan_double(double %x) nounwind {126; CHECK-LABEL: issnan_double:127; CHECK:       # %bb.0:128; CHECK-NEXT:    class.d $f0, $f12129; CHECK-NEXT:    mfc1 $1, $f0130; CHECK-NEXT:    andi $1, $1, 1131; CHECK-NEXT:    jr $ra132; CHECK-NEXT:    sltu $2, $zero, $1133  %1 = call i1 @llvm.is.fpclass.f64(double %x, i32 1)134  ret i1 %1135}136 137define i1 @isqnan_float(float %x) nounwind {138; CHECK-LABEL: isqnan_float:139; CHECK:       # %bb.0:140; CHECK-NEXT:    class.s $f0, $f12141; CHECK-NEXT:    mfc1 $1, $f0142; CHECK-NEXT:    andi $1, $1, 2143; CHECK-NEXT:    jr $ra144; CHECK-NEXT:    sltu $2, $zero, $1145  %1 = call i1 @llvm.is.fpclass.f32(float %x, i32 2)146  ret i1 %1147}148 149define i1 @isqnan_double(double %x) nounwind {150; CHECK-LABEL: isqnan_double:151; CHECK:       # %bb.0:152; CHECK-NEXT:    class.d $f0, $f12153; CHECK-NEXT:    mfc1 $1, $f0154; CHECK-NEXT:    andi $1, $1, 2155; CHECK-NEXT:    jr $ra156; CHECK-NEXT:    sltu $2, $zero, $1157  %1 = call i1 @llvm.is.fpclass.f64(double %x, i32 2)158  ret i1 %1159}160 161define i1 @isposzero_double(double %x) nounwind {162; CHECK-LABEL: isposzero_double:163; CHECK:       # %bb.0:164; CHECK-NEXT:    class.d $f0, $f12165; CHECK-NEXT:    mfc1 $1, $f0166; CHECK-NEXT:    andi $1, $1, 512167; CHECK-NEXT:    jr $ra168; CHECK-NEXT:    sltu $2, $zero, $1169  %1 = call i1 @llvm.is.fpclass.f64(double %x, i32 64)170  ret i1 %1171}172 173define i1 @isnegzero_double(double %x) nounwind {174; CHECK-LABEL: isnegzero_double:175; CHECK:       # %bb.0:176; CHECK-NEXT:    class.d $f0, $f12177; CHECK-NEXT:    mfc1 $1, $f0178; CHECK-NEXT:    andi $1, $1, 32179; CHECK-NEXT:    jr $ra180; CHECK-NEXT:    sltu $2, $zero, $1181  %1 = call i1 @llvm.is.fpclass.f64(double %x, i32 32)182  ret i1 %1183}184 185define i1 @isposnormal_double(double %x) nounwind {186; CHECK-LABEL: isposnormal_double:187; CHECK:       # %bb.0:188; CHECK-NEXT:    class.d $f0, $f12189; CHECK-NEXT:    mfc1 $1, $f0190; CHECK-NEXT:    andi $1, $1, 128191; CHECK-NEXT:    jr $ra192; CHECK-NEXT:    sltu $2, $zero, $1193  %1 = call i1 @llvm.is.fpclass.f64(double %x, i32 256)194  ret i1 %1195}196 197define i1 @isnegnormal_double(double %x) nounwind {198; CHECK-LABEL: isnegnormal_double:199; CHECK:       # %bb.0:200; CHECK-NEXT:    class.d $f0, $f12201; CHECK-NEXT:    mfc1 $1, $f0202; CHECK-NEXT:    andi $1, $1, 8203; CHECK-NEXT:    jr $ra204; CHECK-NEXT:    sltu $2, $zero, $1205  %1 = call i1 @llvm.is.fpclass.f64(double %x, i32 8)206  ret i1 %1207}208 209define i1 @isnormal_double(double %x) nounwind {210; CHECK-LABEL: isnormal_double:211; CHECK:       # %bb.0:212; CHECK-NEXT:    class.d $f0, $f12213; CHECK-NEXT:    mfc1 $1, $f0214; CHECK-NEXT:    andi $1, $1, 136215; CHECK-NEXT:    jr $ra216; CHECK-NEXT:    sltu $2, $zero, $1217  %1 = call i1 @llvm.is.fpclass.f64(double %x, i32 264)218  ret i1 %1219}220 221define i1 @isclass_00d_double(double %x) nounwind {222; CHECK-LABEL: isclass_00d_double:223; CHECK:       # %bb.0:224; CHECK-NEXT:    class.d $f0, $f12225; CHECK-NEXT:    mfc1 $1, $f0226; CHECK-NEXT:    andi $1, $1, 13227; CHECK-NEXT:    jr $ra228; CHECK-NEXT:    sltu $2, $zero, $1229  %1 = call i1 @llvm.is.fpclass.f64(double %x, i32 13)230  ret i1 %1231}232 233define i1 @isclass_1c0_float(float %x) nounwind {234; CHECK-LABEL: isclass_1c0_float:235; CHECK:       # %bb.0:236; CHECK-NEXT:    class.s $f0, $f12237; CHECK-NEXT:    mfc1 $1, $f0238; CHECK-NEXT:    andi $1, $1, 896239; CHECK-NEXT:    jr $ra240; CHECK-NEXT:    sltu $2, $zero, $1241  %1 = call i1 @llvm.is.fpclass.f32(float %x, i32 448)242  ret i1 %1243}244 245declare i1 @llvm.is.fpclass.f32(float, i32)246declare i1 @llvm.is.fpclass.f64(double, i32)247