587 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 52; RUN: llc -mtriple=mips -mcpu=mips32r2 < %s | FileCheck %s3 4define i32 @fcmp_olt_f32(float %a, float %b) #0 {5; CHECK-LABEL: fcmp_olt_f32:6; CHECK: # %bb.0:7; CHECK-NEXT: addiu $2, $zero, 18; CHECK-NEXT: c.olt.s $f12, $f149; CHECK-NEXT: jr $ra10; CHECK-NEXT: movf $2, $zero, $fcc011 %cmp = call i1 @llvm.experimental.constrained.fcmp.f32(float %a, float %b, metadata !"olt", metadata !"fpexcept.strict") #012 %conv = zext i1 %cmp to i3213 ret i32 %conv14}15 16define i32 @fcmp_ole_f32(float %a, float %b) #0 {17; CHECK-LABEL: fcmp_ole_f32:18; CHECK: # %bb.0:19; CHECK-NEXT: addiu $2, $zero, 120; CHECK-NEXT: c.ole.s $f12, $f1421; CHECK-NEXT: jr $ra22; CHECK-NEXT: movf $2, $zero, $fcc023 %cmp = call i1 @llvm.experimental.constrained.fcmp.f32(float %a, float %b, metadata !"ole", metadata !"fpexcept.strict") #024 %conv = zext i1 %cmp to i3225 ret i32 %conv26}27 28define i32 @fcmp_ogt_f32(float %a, float %b) #0 {29; CHECK-LABEL: fcmp_ogt_f32:30; CHECK: # %bb.0:31; CHECK-NEXT: addiu $2, $zero, 132; CHECK-NEXT: c.ule.s $f12, $f1433; CHECK-NEXT: jr $ra34; CHECK-NEXT: movt $2, $zero, $fcc035 %cmp = call i1 @llvm.experimental.constrained.fcmp.f32(float %a, float %b, metadata !"ogt", metadata !"fpexcept.strict") #036 %conv = zext i1 %cmp to i3237 ret i32 %conv38}39 40define i32 @fcmp_oge_f32(float %a, float %b) #0 {41; CHECK-LABEL: fcmp_oge_f32:42; CHECK: # %bb.0:43; CHECK-NEXT: addiu $2, $zero, 144; CHECK-NEXT: c.ult.s $f12, $f1445; CHECK-NEXT: jr $ra46; CHECK-NEXT: movt $2, $zero, $fcc047 %cmp = call i1 @llvm.experimental.constrained.fcmp.f32(float %a, float %b, metadata !"oge", metadata !"fpexcept.strict") #048 %conv = zext i1 %cmp to i3249 ret i32 %conv50}51 52define i32 @fcmp_oeq_f32(float %a, float %b) #0 {53; CHECK-LABEL: fcmp_oeq_f32:54; CHECK: # %bb.0:55; CHECK-NEXT: addiu $2, $zero, 156; CHECK-NEXT: c.eq.s $f12, $f1457; CHECK-NEXT: jr $ra58; CHECK-NEXT: movf $2, $zero, $fcc059 %cmp = call i1 @llvm.experimental.constrained.fcmp.f32(float %a, float %b, metadata !"oeq", metadata !"fpexcept.strict") #060 %conv = zext i1 %cmp to i3261 ret i32 %conv62}63 64define i32 @fcmp_one_f32(float %a, float %b) #0 {65; CHECK-LABEL: fcmp_one_f32:66; CHECK: # %bb.0:67; CHECK-NEXT: addiu $2, $zero, 168; CHECK-NEXT: c.ueq.s $f12, $f1469; CHECK-NEXT: jr $ra70; CHECK-NEXT: movt $2, $zero, $fcc071 %cmp = call i1 @llvm.experimental.constrained.fcmp.f32(float %a, float %b, metadata !"one", metadata !"fpexcept.strict") #072 %conv = zext i1 %cmp to i3273 ret i32 %conv74}75 76define i32 @fcmp_ult_f32(float %a, float %b) #0 {77; CHECK-LABEL: fcmp_ult_f32:78; CHECK: # %bb.0:79; CHECK-NEXT: addiu $2, $zero, 180; CHECK-NEXT: c.ult.s $f12, $f1481; CHECK-NEXT: jr $ra82; CHECK-NEXT: movf $2, $zero, $fcc083 %cmp = call i1 @llvm.experimental.constrained.fcmp.f32(float %a, float %b, metadata !"ult", metadata !"fpexcept.strict") #084 %conv = zext i1 %cmp to i3285 ret i32 %conv86}87 88define i32 @fcmp_ule_f32(float %a, float %b) #0 {89; CHECK-LABEL: fcmp_ule_f32:90; CHECK: # %bb.0:91; CHECK-NEXT: addiu $2, $zero, 192; CHECK-NEXT: c.ule.s $f12, $f1493; CHECK-NEXT: jr $ra94; CHECK-NEXT: movf $2, $zero, $fcc095 %cmp = call i1 @llvm.experimental.constrained.fcmp.f32(float %a, float %b, metadata !"ule", metadata !"fpexcept.strict") #096 %conv = zext i1 %cmp to i3297 ret i32 %conv98}99 100define i32 @fcmp_ugt_f32(float %a, float %b) #0 {101; CHECK-LABEL: fcmp_ugt_f32:102; CHECK: # %bb.0:103; CHECK-NEXT: addiu $2, $zero, 1104; CHECK-NEXT: c.ole.s $f12, $f14105; CHECK-NEXT: jr $ra106; CHECK-NEXT: movt $2, $zero, $fcc0107 %cmp = call i1 @llvm.experimental.constrained.fcmp.f32(float %a, float %b, metadata !"ugt", metadata !"fpexcept.strict") #0108 %conv = zext i1 %cmp to i32109 ret i32 %conv110}111 112define i32 @fcmp_uge_f32(float %a, float %b) #0 {113; CHECK-LABEL: fcmp_uge_f32:114; CHECK: # %bb.0:115; CHECK-NEXT: addiu $2, $zero, 1116; CHECK-NEXT: c.olt.s $f12, $f14117; CHECK-NEXT: jr $ra118; CHECK-NEXT: movt $2, $zero, $fcc0119 %cmp = call i1 @llvm.experimental.constrained.fcmp.f32(float %a, float %b, metadata !"uge", metadata !"fpexcept.strict") #0120 %conv = zext i1 %cmp to i32121 ret i32 %conv122}123 124define i32 @fcmp_ueq_f32(float %a, float %b) #0 {125; CHECK-LABEL: fcmp_ueq_f32:126; CHECK: # %bb.0:127; CHECK-NEXT: addiu $2, $zero, 1128; CHECK-NEXT: c.ueq.s $f12, $f14129; CHECK-NEXT: jr $ra130; CHECK-NEXT: movf $2, $zero, $fcc0131 %cmp = call i1 @llvm.experimental.constrained.fcmp.f32(float %a, float %b, metadata !"ueq", metadata !"fpexcept.strict") #0132 %conv = zext i1 %cmp to i32133 ret i32 %conv134}135 136define i32 @fcmp_une_f32(float %a, float %b) #0 {137; CHECK-LABEL: fcmp_une_f32:138; CHECK: # %bb.0:139; CHECK-NEXT: addiu $2, $zero, 1140; CHECK-NEXT: c.eq.s $f12, $f14141; CHECK-NEXT: jr $ra142; CHECK-NEXT: movt $2, $zero, $fcc0143 %cmp = call i1 @llvm.experimental.constrained.fcmp.f32(float %a, float %b, metadata !"une", metadata !"fpexcept.strict") #0144 %conv = zext i1 %cmp to i32145 ret i32 %conv146}147 148define i32 @fcmps_olt_f32(float %a, float %b) #0 {149; CHECK-LABEL: fcmps_olt_f32:150; CHECK: # %bb.0:151; CHECK-NEXT: addiu $2, $zero, 1152; CHECK-NEXT: c.olt.s $f12, $f14153; CHECK-NEXT: jr $ra154; CHECK-NEXT: movf $2, $zero, $fcc0155 %cmp = call i1 @llvm.experimental.constrained.fcmps.f32(float %a, float %b, metadata !"olt", metadata !"fpexcept.strict") #0156 %conv = zext i1 %cmp to i32157 ret i32 %conv158}159 160define i32 @fcmps_ole_f32(float %a, float %b) #0 {161; CHECK-LABEL: fcmps_ole_f32:162; CHECK: # %bb.0:163; CHECK-NEXT: addiu $2, $zero, 1164; CHECK-NEXT: c.ole.s $f12, $f14165; CHECK-NEXT: jr $ra166; CHECK-NEXT: movf $2, $zero, $fcc0167 %cmp = call i1 @llvm.experimental.constrained.fcmps.f32(float %a, float %b, metadata !"ole", metadata !"fpexcept.strict") #0168 %conv = zext i1 %cmp to i32169 ret i32 %conv170}171 172define i32 @fcmps_ogt_f32(float %a, float %b) #0 {173; CHECK-LABEL: fcmps_ogt_f32:174; CHECK: # %bb.0:175; CHECK-NEXT: addiu $2, $zero, 1176; CHECK-NEXT: c.ule.s $f12, $f14177; CHECK-NEXT: jr $ra178; CHECK-NEXT: movt $2, $zero, $fcc0179 %cmp = call i1 @llvm.experimental.constrained.fcmps.f32(float %a, float %b, metadata !"ogt", metadata !"fpexcept.strict") #0180 %conv = zext i1 %cmp to i32181 ret i32 %conv182}183 184define i32 @fcmps_oge_f32(float %a, float %b) #0 {185; CHECK-LABEL: fcmps_oge_f32:186; CHECK: # %bb.0:187; CHECK-NEXT: addiu $2, $zero, 1188; CHECK-NEXT: c.ult.s $f12, $f14189; CHECK-NEXT: jr $ra190; CHECK-NEXT: movt $2, $zero, $fcc0191 %cmp = call i1 @llvm.experimental.constrained.fcmps.f32(float %a, float %b, metadata !"oge", metadata !"fpexcept.strict") #0192 %conv = zext i1 %cmp to i32193 ret i32 %conv194}195 196define i32 @fcmps_oeq_f32(float %a, float %b) #0 {197; CHECK-LABEL: fcmps_oeq_f32:198; CHECK: # %bb.0:199; CHECK-NEXT: addiu $2, $zero, 1200; CHECK-NEXT: c.eq.s $f12, $f14201; CHECK-NEXT: jr $ra202; CHECK-NEXT: movf $2, $zero, $fcc0203 %cmp = call i1 @llvm.experimental.constrained.fcmps.f32(float %a, float %b, metadata !"oeq", metadata !"fpexcept.strict") #0204 %conv = zext i1 %cmp to i32205 ret i32 %conv206}207 208define i32 @fcmps_one_f32(float %a, float %b) #0 {209; CHECK-LABEL: fcmps_one_f32:210; CHECK: # %bb.0:211; CHECK-NEXT: addiu $2, $zero, 1212; CHECK-NEXT: c.ueq.s $f12, $f14213; CHECK-NEXT: jr $ra214; CHECK-NEXT: movt $2, $zero, $fcc0215 %cmp = call i1 @llvm.experimental.constrained.fcmps.f32(float %a, float %b, metadata !"one", metadata !"fpexcept.strict") #0216 %conv = zext i1 %cmp to i32217 ret i32 %conv218}219 220define i32 @fcmps_ult_f32(float %a, float %b) #0 {221; CHECK-LABEL: fcmps_ult_f32:222; CHECK: # %bb.0:223; CHECK-NEXT: addiu $2, $zero, 1224; CHECK-NEXT: c.ult.s $f12, $f14225; CHECK-NEXT: jr $ra226; CHECK-NEXT: movf $2, $zero, $fcc0227 %cmp = call i1 @llvm.experimental.constrained.fcmps.f32(float %a, float %b, metadata !"ult", metadata !"fpexcept.strict") #0228 %conv = zext i1 %cmp to i32229 ret i32 %conv230}231 232define i32 @fcmps_ule_f32(float %a, float %b) #0 {233; CHECK-LABEL: fcmps_ule_f32:234; CHECK: # %bb.0:235; CHECK-NEXT: addiu $2, $zero, 1236; CHECK-NEXT: c.ule.s $f12, $f14237; CHECK-NEXT: jr $ra238; CHECK-NEXT: movf $2, $zero, $fcc0239 %cmp = call i1 @llvm.experimental.constrained.fcmps.f32(float %a, float %b, metadata !"ule", metadata !"fpexcept.strict") #0240 %conv = zext i1 %cmp to i32241 ret i32 %conv242}243 244define i32 @fcmps_ugt_f32(float %a, float %b) #0 {245; CHECK-LABEL: fcmps_ugt_f32:246; CHECK: # %bb.0:247; CHECK-NEXT: addiu $2, $zero, 1248; CHECK-NEXT: c.ole.s $f12, $f14249; CHECK-NEXT: jr $ra250; CHECK-NEXT: movt $2, $zero, $fcc0251 %cmp = call i1 @llvm.experimental.constrained.fcmps.f32(float %a, float %b, metadata !"ugt", metadata !"fpexcept.strict") #0252 %conv = zext i1 %cmp to i32253 ret i32 %conv254}255 256define i32 @fcmps_uge_f32(float %a, float %b) #0 {257; CHECK-LABEL: fcmps_uge_f32:258; CHECK: # %bb.0:259; CHECK-NEXT: addiu $2, $zero, 1260; CHECK-NEXT: c.olt.s $f12, $f14261; CHECK-NEXT: jr $ra262; CHECK-NEXT: movt $2, $zero, $fcc0263 %cmp = call i1 @llvm.experimental.constrained.fcmps.f32(float %a, float %b, metadata !"uge", metadata !"fpexcept.strict") #0264 %conv = zext i1 %cmp to i32265 ret i32 %conv266}267 268define i32 @fcmps_ueq_f32(float %a, float %b) #0 {269; CHECK-LABEL: fcmps_ueq_f32:270; CHECK: # %bb.0:271; CHECK-NEXT: addiu $2, $zero, 1272; CHECK-NEXT: c.ueq.s $f12, $f14273; CHECK-NEXT: jr $ra274; CHECK-NEXT: movf $2, $zero, $fcc0275 %cmp = call i1 @llvm.experimental.constrained.fcmps.f32(float %a, float %b, metadata !"ueq", metadata !"fpexcept.strict") #0276 %conv = zext i1 %cmp to i32277 ret i32 %conv278}279 280define i32 @fcmps_une_f32(float %a, float %b) #0 {281; CHECK-LABEL: fcmps_une_f32:282; CHECK: # %bb.0:283; CHECK-NEXT: addiu $2, $zero, 1284; CHECK-NEXT: c.eq.s $f12, $f14285; CHECK-NEXT: jr $ra286; CHECK-NEXT: movt $2, $zero, $fcc0287 %cmp = call i1 @llvm.experimental.constrained.fcmps.f32(float %a, float %b, metadata !"une", metadata !"fpexcept.strict") #0288 %conv = zext i1 %cmp to i32289 ret i32 %conv290}291 292define i32 @fcmp_olt_f64(double %a, double %b) #0 {293; CHECK-LABEL: fcmp_olt_f64:294; CHECK: # %bb.0:295; CHECK-NEXT: addiu $2, $zero, 1296; CHECK-NEXT: c.olt.d $f12, $f14297; CHECK-NEXT: jr $ra298; CHECK-NEXT: movf $2, $zero, $fcc0299 %cmp = call i1 @llvm.experimental.constrained.fcmp.f64(double %a, double %b, metadata !"olt", metadata !"fpexcept.strict") #0300 %conv = zext i1 %cmp to i32301 ret i32 %conv302}303 304define i32 @fcmp_ole_f64(double %a, double %b) #0 {305; CHECK-LABEL: fcmp_ole_f64:306; CHECK: # %bb.0:307; CHECK-NEXT: addiu $2, $zero, 1308; CHECK-NEXT: c.ole.d $f12, $f14309; CHECK-NEXT: jr $ra310; CHECK-NEXT: movf $2, $zero, $fcc0311 %cmp = call i1 @llvm.experimental.constrained.fcmp.f64(double %a, double %b, metadata !"ole", metadata !"fpexcept.strict") #0312 %conv = zext i1 %cmp to i32313 ret i32 %conv314}315 316define i32 @fcmp_ogt_f64(double %a, double %b) #0 {317; CHECK-LABEL: fcmp_ogt_f64:318; CHECK: # %bb.0:319; CHECK-NEXT: addiu $2, $zero, 1320; CHECK-NEXT: c.ule.d $f12, $f14321; CHECK-NEXT: jr $ra322; CHECK-NEXT: movt $2, $zero, $fcc0323 %cmp = call i1 @llvm.experimental.constrained.fcmp.f64(double %a, double %b, metadata !"ogt", metadata !"fpexcept.strict") #0324 %conv = zext i1 %cmp to i32325 ret i32 %conv326}327 328define i32 @fcmp_oge_f64(double %a, double %b) #0 {329; CHECK-LABEL: fcmp_oge_f64:330; CHECK: # %bb.0:331; CHECK-NEXT: addiu $2, $zero, 1332; CHECK-NEXT: c.ult.d $f12, $f14333; CHECK-NEXT: jr $ra334; CHECK-NEXT: movt $2, $zero, $fcc0335 %cmp = call i1 @llvm.experimental.constrained.fcmp.f64(double %a, double %b, metadata !"oge", metadata !"fpexcept.strict") #0336 %conv = zext i1 %cmp to i32337 ret i32 %conv338}339 340define i32 @fcmp_oeq_f64(double %a, double %b) #0 {341; CHECK-LABEL: fcmp_oeq_f64:342; CHECK: # %bb.0:343; CHECK-NEXT: addiu $2, $zero, 1344; CHECK-NEXT: c.eq.d $f12, $f14345; CHECK-NEXT: jr $ra346; CHECK-NEXT: movf $2, $zero, $fcc0347 %cmp = call i1 @llvm.experimental.constrained.fcmp.f64(double %a, double %b, metadata !"oeq", metadata !"fpexcept.strict") #0348 %conv = zext i1 %cmp to i32349 ret i32 %conv350}351 352define i32 @fcmp_one_f64(double %a, double %b) #0 {353; CHECK-LABEL: fcmp_one_f64:354; CHECK: # %bb.0:355; CHECK-NEXT: addiu $2, $zero, 1356; CHECK-NEXT: c.ueq.d $f12, $f14357; CHECK-NEXT: jr $ra358; CHECK-NEXT: movt $2, $zero, $fcc0359 %cmp = call i1 @llvm.experimental.constrained.fcmp.f64(double %a, double %b, metadata !"one", metadata !"fpexcept.strict") #0360 %conv = zext i1 %cmp to i32361 ret i32 %conv362}363 364define i32 @fcmp_ult_f64(double %a, double %b) #0 {365; CHECK-LABEL: fcmp_ult_f64:366; CHECK: # %bb.0:367; CHECK-NEXT: addiu $2, $zero, 1368; CHECK-NEXT: c.ult.d $f12, $f14369; CHECK-NEXT: jr $ra370; CHECK-NEXT: movf $2, $zero, $fcc0371 %cmp = call i1 @llvm.experimental.constrained.fcmp.f64(double %a, double %b, metadata !"ult", metadata !"fpexcept.strict") #0372 %conv = zext i1 %cmp to i32373 ret i32 %conv374}375 376define i32 @fcmp_ule_f64(double %a, double %b) #0 {377; CHECK-LABEL: fcmp_ule_f64:378; CHECK: # %bb.0:379; CHECK-NEXT: addiu $2, $zero, 1380; CHECK-NEXT: c.ule.d $f12, $f14381; CHECK-NEXT: jr $ra382; CHECK-NEXT: movf $2, $zero, $fcc0383 %cmp = call i1 @llvm.experimental.constrained.fcmp.f64(double %a, double %b, metadata !"ule", metadata !"fpexcept.strict") #0384 %conv = zext i1 %cmp to i32385 ret i32 %conv386}387 388define i32 @fcmp_ugt_f64(double %a, double %b) #0 {389; CHECK-LABEL: fcmp_ugt_f64:390; CHECK: # %bb.0:391; CHECK-NEXT: addiu $2, $zero, 1392; CHECK-NEXT: c.ole.d $f12, $f14393; CHECK-NEXT: jr $ra394; CHECK-NEXT: movt $2, $zero, $fcc0395 %cmp = call i1 @llvm.experimental.constrained.fcmp.f64(double %a, double %b, metadata !"ugt", metadata !"fpexcept.strict") #0396 %conv = zext i1 %cmp to i32397 ret i32 %conv398}399 400define i32 @fcmp_uge_f64(double %a, double %b) #0 {401; CHECK-LABEL: fcmp_uge_f64:402; CHECK: # %bb.0:403; CHECK-NEXT: addiu $2, $zero, 1404; CHECK-NEXT: c.olt.d $f12, $f14405; CHECK-NEXT: jr $ra406; CHECK-NEXT: movt $2, $zero, $fcc0407 %cmp = call i1 @llvm.experimental.constrained.fcmp.f64(double %a, double %b, metadata !"uge", metadata !"fpexcept.strict") #0408 %conv = zext i1 %cmp to i32409 ret i32 %conv410}411 412define i32 @fcmp_ueq_f64(double %a, double %b) #0 {413; CHECK-LABEL: fcmp_ueq_f64:414; CHECK: # %bb.0:415; CHECK-NEXT: addiu $2, $zero, 1416; CHECK-NEXT: c.ueq.d $f12, $f14417; CHECK-NEXT: jr $ra418; CHECK-NEXT: movf $2, $zero, $fcc0419 %cmp = call i1 @llvm.experimental.constrained.fcmp.f64(double %a, double %b, metadata !"ueq", metadata !"fpexcept.strict") #0420 %conv = zext i1 %cmp to i32421 ret i32 %conv422}423 424define i32 @fcmp_une_f64(double %a, double %b) #0 {425; CHECK-LABEL: fcmp_une_f64:426; CHECK: # %bb.0:427; CHECK-NEXT: addiu $2, $zero, 1428; CHECK-NEXT: c.eq.d $f12, $f14429; CHECK-NEXT: jr $ra430; CHECK-NEXT: movt $2, $zero, $fcc0431 %cmp = call i1 @llvm.experimental.constrained.fcmp.f64(double %a, double %b, metadata !"une", metadata !"fpexcept.strict") #0432 %conv = zext i1 %cmp to i32433 ret i32 %conv434}435 436define i32 @fcmps_olt_f64(double %a, double %b) #0 {437; CHECK-LABEL: fcmps_olt_f64:438; CHECK: # %bb.0:439; CHECK-NEXT: addiu $2, $zero, 1440; CHECK-NEXT: c.olt.d $f12, $f14441; CHECK-NEXT: jr $ra442; CHECK-NEXT: movf $2, $zero, $fcc0443 %cmp = call i1 @llvm.experimental.constrained.fcmps.f64(double %a, double %b, metadata !"olt", metadata !"fpexcept.strict") #0444 %conv = zext i1 %cmp to i32445 ret i32 %conv446}447 448define i32 @fcmps_ole_f64(double %a, double %b) #0 {449; CHECK-LABEL: fcmps_ole_f64:450; CHECK: # %bb.0:451; CHECK-NEXT: addiu $2, $zero, 1452; CHECK-NEXT: c.ole.d $f12, $f14453; CHECK-NEXT: jr $ra454; CHECK-NEXT: movf $2, $zero, $fcc0455 %cmp = call i1 @llvm.experimental.constrained.fcmps.f64(double %a, double %b, metadata !"ole", metadata !"fpexcept.strict") #0456 %conv = zext i1 %cmp to i32457 ret i32 %conv458}459 460define i32 @fcmps_ogt_f64(double %a, double %b) #0 {461; CHECK-LABEL: fcmps_ogt_f64:462; CHECK: # %bb.0:463; CHECK-NEXT: addiu $2, $zero, 1464; CHECK-NEXT: c.ule.d $f12, $f14465; CHECK-NEXT: jr $ra466; CHECK-NEXT: movt $2, $zero, $fcc0467 %cmp = call i1 @llvm.experimental.constrained.fcmps.f64(double %a, double %b, metadata !"ogt", metadata !"fpexcept.strict") #0468 %conv = zext i1 %cmp to i32469 ret i32 %conv470}471 472define i32 @fcmps_oge_f64(double %a, double %b) #0 {473; CHECK-LABEL: fcmps_oge_f64:474; CHECK: # %bb.0:475; CHECK-NEXT: addiu $2, $zero, 1476; CHECK-NEXT: c.ult.d $f12, $f14477; CHECK-NEXT: jr $ra478; CHECK-NEXT: movt $2, $zero, $fcc0479 %cmp = call i1 @llvm.experimental.constrained.fcmps.f64(double %a, double %b, metadata !"oge", metadata !"fpexcept.strict") #0480 %conv = zext i1 %cmp to i32481 ret i32 %conv482}483 484define i32 @fcmps_oeq_f64(double %a, double %b) #0 {485; CHECK-LABEL: fcmps_oeq_f64:486; CHECK: # %bb.0:487; CHECK-NEXT: addiu $2, $zero, 1488; CHECK-NEXT: c.eq.d $f12, $f14489; CHECK-NEXT: jr $ra490; CHECK-NEXT: movf $2, $zero, $fcc0491 %cmp = call i1 @llvm.experimental.constrained.fcmps.f64(double %a, double %b, metadata !"oeq", metadata !"fpexcept.strict") #0492 %conv = zext i1 %cmp to i32493 ret i32 %conv494}495 496define i32 @fcmps_one_f64(double %a, double %b) #0 {497; CHECK-LABEL: fcmps_one_f64:498; CHECK: # %bb.0:499; CHECK-NEXT: addiu $2, $zero, 1500; CHECK-NEXT: c.ueq.d $f12, $f14501; CHECK-NEXT: jr $ra502; CHECK-NEXT: movt $2, $zero, $fcc0503 %cmp = call i1 @llvm.experimental.constrained.fcmps.f64(double %a, double %b, metadata !"one", metadata !"fpexcept.strict") #0504 %conv = zext i1 %cmp to i32505 ret i32 %conv506}507 508define i32 @fcmps_ult_f64(double %a, double %b) #0 {509; CHECK-LABEL: fcmps_ult_f64:510; CHECK: # %bb.0:511; CHECK-NEXT: addiu $2, $zero, 1512; CHECK-NEXT: c.ult.d $f12, $f14513; CHECK-NEXT: jr $ra514; CHECK-NEXT: movf $2, $zero, $fcc0515 %cmp = call i1 @llvm.experimental.constrained.fcmps.f64(double %a, double %b, metadata !"ult", metadata !"fpexcept.strict") #0516 %conv = zext i1 %cmp to i32517 ret i32 %conv518}519 520define i32 @fcmps_ule_f64(double %a, double %b) #0 {521; CHECK-LABEL: fcmps_ule_f64:522; CHECK: # %bb.0:523; CHECK-NEXT: addiu $2, $zero, 1524; CHECK-NEXT: c.ule.d $f12, $f14525; CHECK-NEXT: jr $ra526; CHECK-NEXT: movf $2, $zero, $fcc0527 %cmp = call i1 @llvm.experimental.constrained.fcmps.f64(double %a, double %b, metadata !"ule", metadata !"fpexcept.strict") #0528 %conv = zext i1 %cmp to i32529 ret i32 %conv530}531 532define i32 @fcmps_ugt_f64(double %a, double %b) #0 {533; CHECK-LABEL: fcmps_ugt_f64:534; CHECK: # %bb.0:535; CHECK-NEXT: addiu $2, $zero, 1536; CHECK-NEXT: c.ole.d $f12, $f14537; CHECK-NEXT: jr $ra538; CHECK-NEXT: movt $2, $zero, $fcc0539 %cmp = call i1 @llvm.experimental.constrained.fcmps.f64(double %a, double %b, metadata !"ugt", metadata !"fpexcept.strict") #0540 %conv = zext i1 %cmp to i32541 ret i32 %conv542}543 544define i32 @fcmps_uge_f64(double %a, double %b) #0 {545; CHECK-LABEL: fcmps_uge_f64:546; CHECK: # %bb.0:547; CHECK-NEXT: addiu $2, $zero, 1548; CHECK-NEXT: c.olt.d $f12, $f14549; CHECK-NEXT: jr $ra550; CHECK-NEXT: movt $2, $zero, $fcc0551 %cmp = call i1 @llvm.experimental.constrained.fcmps.f64(double %a, double %b, metadata !"uge", metadata !"fpexcept.strict") #0552 %conv = zext i1 %cmp to i32553 ret i32 %conv554}555 556define i32 @fcmps_ueq_f64(double %a, double %b) #0 {557; CHECK-LABEL: fcmps_ueq_f64:558; CHECK: # %bb.0:559; CHECK-NEXT: addiu $2, $zero, 1560; CHECK-NEXT: c.ueq.d $f12, $f14561; CHECK-NEXT: jr $ra562; CHECK-NEXT: movf $2, $zero, $fcc0563 %cmp = call i1 @llvm.experimental.constrained.fcmps.f64(double %a, double %b, metadata !"ueq", metadata !"fpexcept.strict") #0564 %conv = zext i1 %cmp to i32565 ret i32 %conv566}567 568define i32 @fcmps_une_f64(double %a, double %b) #0 {569; CHECK-LABEL: fcmps_une_f64:570; CHECK: # %bb.0:571; CHECK-NEXT: addiu $2, $zero, 1572; CHECK-NEXT: c.eq.d $f12, $f14573; CHECK-NEXT: jr $ra574; CHECK-NEXT: movt $2, $zero, $fcc0575 %cmp = call i1 @llvm.experimental.constrained.fcmps.f64(double %a, double %b, metadata !"une", metadata !"fpexcept.strict") #0576 %conv = zext i1 %cmp to i32577 ret i32 %conv578}579 580 581attributes #0 = { strictfp }582 583declare i1 @llvm.experimental.constrained.fcmps.f32(float, float, metadata, metadata)584declare i1 @llvm.experimental.constrained.fcmp.f32(float, float, metadata, metadata)585declare i1 @llvm.experimental.constrained.fcmps.f64(double, double, metadata, metadata)586declare i1 @llvm.experimental.constrained.fcmp.f64(double, double, metadata, metadata)587