brintos

brintos / llvm-project-archived public Read only

0
0
Text · 15.0 KiB · cad4d45 Raw
483 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc --mtriple=loongarch32 --mattr=+f,-d < %s | FileCheck %s --check-prefix=LA323; RUN: llc --mtriple=loongarch64 --mattr=+f,-d < %s | FileCheck %s --check-prefix=LA644 5declare i1 @llvm.experimental.constrained.fcmps.f32(float, float, metadata, metadata)6declare i1 @llvm.experimental.constrained.fcmp.f32(float, float, metadata, metadata)7 8define i32 @fcmps_oeq(float %a, float %b) nounwind strictfp {9; LA32-LABEL: fcmps_oeq:10; LA32:       # %bb.0:11; LA32-NEXT:    fcmp.seq.s $fcc0, $fa0, $fa112; LA32-NEXT:    movcf2gr $a0, $fcc013; LA32-NEXT:    ret14;15; LA64-LABEL: fcmps_oeq:16; LA64:       # %bb.0:17; LA64-NEXT:    fcmp.seq.s $fcc0, $fa0, $fa118; LA64-NEXT:    movcf2gr $a0, $fcc019; LA64-NEXT:    ret20  %1 = call i1 @llvm.experimental.constrained.fcmps.f32(float %a, float %b, metadata !"oeq", metadata !"fpexcept.strict") strictfp21  %2 = zext i1 %1 to i3222  ret i32 %223}24 25define i32 @fcmps_ogt(float %a, float %b) nounwind strictfp {26; LA32-LABEL: fcmps_ogt:27; LA32:       # %bb.0:28; LA32-NEXT:    fcmp.slt.s $fcc0, $fa1, $fa029; LA32-NEXT:    movcf2gr $a0, $fcc030; LA32-NEXT:    ret31;32; LA64-LABEL: fcmps_ogt:33; LA64:       # %bb.0:34; LA64-NEXT:    fcmp.slt.s $fcc0, $fa1, $fa035; LA64-NEXT:    movcf2gr $a0, $fcc036; LA64-NEXT:    ret37  %1 = call i1 @llvm.experimental.constrained.fcmps.f32(float %a, float %b, metadata !"ogt", metadata !"fpexcept.strict") strictfp38  %2 = zext i1 %1 to i3239  ret i32 %240}41 42define i32 @fcmps_oge(float %a, float %b) nounwind strictfp {43; LA32-LABEL: fcmps_oge:44; LA32:       # %bb.0:45; LA32-NEXT:    fcmp.sle.s $fcc0, $fa1, $fa046; LA32-NEXT:    movcf2gr $a0, $fcc047; LA32-NEXT:    ret48;49; LA64-LABEL: fcmps_oge:50; LA64:       # %bb.0:51; LA64-NEXT:    fcmp.sle.s $fcc0, $fa1, $fa052; LA64-NEXT:    movcf2gr $a0, $fcc053; LA64-NEXT:    ret54  %1 = call i1 @llvm.experimental.constrained.fcmps.f32(float %a, float %b, metadata !"oge", metadata !"fpexcept.strict") strictfp55  %2 = zext i1 %1 to i3256  ret i32 %257}58 59define i32 @fcmps_olt(float %a, float %b) nounwind strictfp {60; LA32-LABEL: fcmps_olt:61; LA32:       # %bb.0:62; LA32-NEXT:    fcmp.slt.s $fcc0, $fa0, $fa163; LA32-NEXT:    movcf2gr $a0, $fcc064; LA32-NEXT:    ret65;66; LA64-LABEL: fcmps_olt:67; LA64:       # %bb.0:68; LA64-NEXT:    fcmp.slt.s $fcc0, $fa0, $fa169; LA64-NEXT:    movcf2gr $a0, $fcc070; LA64-NEXT:    ret71  %1 = call i1 @llvm.experimental.constrained.fcmps.f32(float %a, float %b, metadata !"olt", metadata !"fpexcept.strict") strictfp72  %2 = zext i1 %1 to i3273  ret i32 %274}75 76define i32 @fcmps_ole(float %a, float %b) nounwind strictfp {77; LA32-LABEL: fcmps_ole:78; LA32:       # %bb.0:79; LA32-NEXT:    fcmp.sle.s $fcc0, $fa0, $fa180; LA32-NEXT:    movcf2gr $a0, $fcc081; LA32-NEXT:    ret82;83; LA64-LABEL: fcmps_ole:84; LA64:       # %bb.0:85; LA64-NEXT:    fcmp.sle.s $fcc0, $fa0, $fa186; LA64-NEXT:    movcf2gr $a0, $fcc087; LA64-NEXT:    ret88  %1 = call i1 @llvm.experimental.constrained.fcmps.f32(float %a, float %b, metadata !"ole", metadata !"fpexcept.strict") strictfp89  %2 = zext i1 %1 to i3290  ret i32 %291}92 93define i32 @fcmps_one(float %a, float %b) nounwind strictfp {94; LA32-LABEL: fcmps_one:95; LA32:       # %bb.0:96; LA32-NEXT:    fcmp.sne.s $fcc0, $fa0, $fa197; LA32-NEXT:    movcf2gr $a0, $fcc098; LA32-NEXT:    ret99;100; LA64-LABEL: fcmps_one:101; LA64:       # %bb.0:102; LA64-NEXT:    fcmp.sne.s $fcc0, $fa0, $fa1103; LA64-NEXT:    movcf2gr $a0, $fcc0104; LA64-NEXT:    ret105  %1 = call i1 @llvm.experimental.constrained.fcmps.f32(float %a, float %b, metadata !"one", metadata !"fpexcept.strict") strictfp106  %2 = zext i1 %1 to i32107  ret i32 %2108}109 110define i32 @fcmps_ord(float %a, float %b) nounwind strictfp {111; LA32-LABEL: fcmps_ord:112; LA32:       # %bb.0:113; LA32-NEXT:    fcmp.sor.s $fcc0, $fa0, $fa1114; LA32-NEXT:    movcf2gr $a0, $fcc0115; LA32-NEXT:    ret116;117; LA64-LABEL: fcmps_ord:118; LA64:       # %bb.0:119; LA64-NEXT:    fcmp.sor.s $fcc0, $fa0, $fa1120; LA64-NEXT:    movcf2gr $a0, $fcc0121; LA64-NEXT:    ret122  %1 = call i1 @llvm.experimental.constrained.fcmps.f32(float %a, float %b, metadata !"ord", metadata !"fpexcept.strict") strictfp123  %2 = zext i1 %1 to i32124  ret i32 %2125}126 127define i32 @fcmps_ueq(float %a, float %b) nounwind strictfp {128; LA32-LABEL: fcmps_ueq:129; LA32:       # %bb.0:130; LA32-NEXT:    fcmp.sueq.s $fcc0, $fa0, $fa1131; LA32-NEXT:    movcf2gr $a0, $fcc0132; LA32-NEXT:    ret133;134; LA64-LABEL: fcmps_ueq:135; LA64:       # %bb.0:136; LA64-NEXT:    fcmp.sueq.s $fcc0, $fa0, $fa1137; LA64-NEXT:    movcf2gr $a0, $fcc0138; LA64-NEXT:    ret139  %1 = call i1 @llvm.experimental.constrained.fcmps.f32(float %a, float %b, metadata !"ueq", metadata !"fpexcept.strict") strictfp140  %2 = zext i1 %1 to i32141  ret i32 %2142}143 144define i32 @fcmps_ugt(float %a, float %b) nounwind strictfp {145; LA32-LABEL: fcmps_ugt:146; LA32:       # %bb.0:147; LA32-NEXT:    fcmp.sult.s $fcc0, $fa1, $fa0148; LA32-NEXT:    movcf2gr $a0, $fcc0149; LA32-NEXT:    ret150;151; LA64-LABEL: fcmps_ugt:152; LA64:       # %bb.0:153; LA64-NEXT:    fcmp.sult.s $fcc0, $fa1, $fa0154; LA64-NEXT:    movcf2gr $a0, $fcc0155; LA64-NEXT:    ret156  %1 = call i1 @llvm.experimental.constrained.fcmps.f32(float %a, float %b, metadata !"ugt", metadata !"fpexcept.strict") strictfp157  %2 = zext i1 %1 to i32158  ret i32 %2159}160 161define i32 @fcmps_uge(float %a, float %b) nounwind strictfp {162; LA32-LABEL: fcmps_uge:163; LA32:       # %bb.0:164; LA32-NEXT:    fcmp.sule.s $fcc0, $fa1, $fa0165; LA32-NEXT:    movcf2gr $a0, $fcc0166; LA32-NEXT:    ret167;168; LA64-LABEL: fcmps_uge:169; LA64:       # %bb.0:170; LA64-NEXT:    fcmp.sule.s $fcc0, $fa1, $fa0171; LA64-NEXT:    movcf2gr $a0, $fcc0172; LA64-NEXT:    ret173  %1 = call i1 @llvm.experimental.constrained.fcmps.f32(float %a, float %b, metadata !"uge", metadata !"fpexcept.strict") strictfp174  %2 = zext i1 %1 to i32175  ret i32 %2176}177 178define i32 @fcmps_ult(float %a, float %b) nounwind strictfp {179; LA32-LABEL: fcmps_ult:180; LA32:       # %bb.0:181; LA32-NEXT:    fcmp.sult.s $fcc0, $fa0, $fa1182; LA32-NEXT:    movcf2gr $a0, $fcc0183; LA32-NEXT:    ret184;185; LA64-LABEL: fcmps_ult:186; LA64:       # %bb.0:187; LA64-NEXT:    fcmp.sult.s $fcc0, $fa0, $fa1188; LA64-NEXT:    movcf2gr $a0, $fcc0189; LA64-NEXT:    ret190  %1 = call i1 @llvm.experimental.constrained.fcmps.f32(float %a, float %b, metadata !"ult", metadata !"fpexcept.strict") strictfp191  %2 = zext i1 %1 to i32192  ret i32 %2193}194 195define i32 @fcmps_ule(float %a, float %b) nounwind strictfp {196; LA32-LABEL: fcmps_ule:197; LA32:       # %bb.0:198; LA32-NEXT:    fcmp.sule.s $fcc0, $fa0, $fa1199; LA32-NEXT:    movcf2gr $a0, $fcc0200; LA32-NEXT:    ret201;202; LA64-LABEL: fcmps_ule:203; LA64:       # %bb.0:204; LA64-NEXT:    fcmp.sule.s $fcc0, $fa0, $fa1205; LA64-NEXT:    movcf2gr $a0, $fcc0206; LA64-NEXT:    ret207  %1 = call i1 @llvm.experimental.constrained.fcmps.f32(float %a, float %b, metadata !"ule", metadata !"fpexcept.strict") strictfp208  %2 = zext i1 %1 to i32209  ret i32 %2210}211 212define i32 @fcmps_une(float %a, float %b) nounwind strictfp {213; LA32-LABEL: fcmps_une:214; LA32:       # %bb.0:215; LA32-NEXT:    fcmp.sune.s $fcc0, $fa0, $fa1216; LA32-NEXT:    movcf2gr $a0, $fcc0217; LA32-NEXT:    ret218;219; LA64-LABEL: fcmps_une:220; LA64:       # %bb.0:221; LA64-NEXT:    fcmp.sune.s $fcc0, $fa0, $fa1222; LA64-NEXT:    movcf2gr $a0, $fcc0223; LA64-NEXT:    ret224  %1 = call i1 @llvm.experimental.constrained.fcmps.f32(float %a, float %b, metadata !"une", metadata !"fpexcept.strict") strictfp225  %2 = zext i1 %1 to i32226  ret i32 %2227}228 229define i32 @fcmps_uno(float %a, float %b) nounwind strictfp {230; LA32-LABEL: fcmps_uno:231; LA32:       # %bb.0:232; LA32-NEXT:    fcmp.sun.s $fcc0, $fa0, $fa1233; LA32-NEXT:    movcf2gr $a0, $fcc0234; LA32-NEXT:    ret235;236; LA64-LABEL: fcmps_uno:237; LA64:       # %bb.0:238; LA64-NEXT:    fcmp.sun.s $fcc0, $fa0, $fa1239; LA64-NEXT:    movcf2gr $a0, $fcc0240; LA64-NEXT:    ret241  %1 = call i1 @llvm.experimental.constrained.fcmps.f32(float %a, float %b, metadata !"uno", metadata !"fpexcept.strict") strictfp242  %2 = zext i1 %1 to i32243  ret i32 %2244}245 246define i32 @fcmp_oeq(float %a, float %b) nounwind strictfp {247; LA32-LABEL: fcmp_oeq:248; LA32:       # %bb.0:249; LA32-NEXT:    fcmp.ceq.s $fcc0, $fa0, $fa1250; LA32-NEXT:    movcf2gr $a0, $fcc0251; LA32-NEXT:    ret252;253; LA64-LABEL: fcmp_oeq:254; LA64:       # %bb.0:255; LA64-NEXT:    fcmp.ceq.s $fcc0, $fa0, $fa1256; LA64-NEXT:    movcf2gr $a0, $fcc0257; LA64-NEXT:    ret258  %1 = call i1 @llvm.experimental.constrained.fcmp.f32(float %a, float %b, metadata !"oeq", metadata !"fpexcept.strict") strictfp259  %2 = zext i1 %1 to i32260  ret i32 %2261}262 263define i32 @fcmp_ogt(float %a, float %b) nounwind strictfp {264; LA32-LABEL: fcmp_ogt:265; LA32:       # %bb.0:266; LA32-NEXT:    fcmp.clt.s $fcc0, $fa1, $fa0267; LA32-NEXT:    movcf2gr $a0, $fcc0268; LA32-NEXT:    ret269;270; LA64-LABEL: fcmp_ogt:271; LA64:       # %bb.0:272; LA64-NEXT:    fcmp.clt.s $fcc0, $fa1, $fa0273; LA64-NEXT:    movcf2gr $a0, $fcc0274; LA64-NEXT:    ret275  %1 = call i1 @llvm.experimental.constrained.fcmp.f32(float %a, float %b, metadata !"ogt", metadata !"fpexcept.strict") strictfp276  %2 = zext i1 %1 to i32277  ret i32 %2278}279 280define i32 @fcmp_oge(float %a, float %b) nounwind strictfp {281; LA32-LABEL: fcmp_oge:282; LA32:       # %bb.0:283; LA32-NEXT:    fcmp.cle.s $fcc0, $fa1, $fa0284; LA32-NEXT:    movcf2gr $a0, $fcc0285; LA32-NEXT:    ret286;287; LA64-LABEL: fcmp_oge:288; LA64:       # %bb.0:289; LA64-NEXT:    fcmp.cle.s $fcc0, $fa1, $fa0290; LA64-NEXT:    movcf2gr $a0, $fcc0291; LA64-NEXT:    ret292  %1 = call i1 @llvm.experimental.constrained.fcmp.f32(float %a, float %b, metadata !"oge", metadata !"fpexcept.strict") strictfp293  %2 = zext i1 %1 to i32294  ret i32 %2295}296 297define i32 @fcmp_olt(float %a, float %b) nounwind strictfp {298; LA32-LABEL: fcmp_olt:299; LA32:       # %bb.0:300; LA32-NEXT:    fcmp.clt.s $fcc0, $fa0, $fa1301; LA32-NEXT:    movcf2gr $a0, $fcc0302; LA32-NEXT:    ret303;304; LA64-LABEL: fcmp_olt:305; LA64:       # %bb.0:306; LA64-NEXT:    fcmp.clt.s $fcc0, $fa0, $fa1307; LA64-NEXT:    movcf2gr $a0, $fcc0308; LA64-NEXT:    ret309  %1 = call i1 @llvm.experimental.constrained.fcmp.f32(float %a, float %b, metadata !"olt", metadata !"fpexcept.strict") strictfp310  %2 = zext i1 %1 to i32311  ret i32 %2312}313 314define i32 @fcmp_ole(float %a, float %b) nounwind strictfp {315; LA32-LABEL: fcmp_ole:316; LA32:       # %bb.0:317; LA32-NEXT:    fcmp.cle.s $fcc0, $fa0, $fa1318; LA32-NEXT:    movcf2gr $a0, $fcc0319; LA32-NEXT:    ret320;321; LA64-LABEL: fcmp_ole:322; LA64:       # %bb.0:323; LA64-NEXT:    fcmp.cle.s $fcc0, $fa0, $fa1324; LA64-NEXT:    movcf2gr $a0, $fcc0325; LA64-NEXT:    ret326  %1 = call i1 @llvm.experimental.constrained.fcmp.f32(float %a, float %b, metadata !"ole", metadata !"fpexcept.strict") strictfp327  %2 = zext i1 %1 to i32328  ret i32 %2329}330 331define i32 @fcmp_one(float %a, float %b) nounwind strictfp {332; LA32-LABEL: fcmp_one:333; LA32:       # %bb.0:334; LA32-NEXT:    fcmp.cne.s $fcc0, $fa0, $fa1335; LA32-NEXT:    movcf2gr $a0, $fcc0336; LA32-NEXT:    ret337;338; LA64-LABEL: fcmp_one:339; LA64:       # %bb.0:340; LA64-NEXT:    fcmp.cne.s $fcc0, $fa0, $fa1341; LA64-NEXT:    movcf2gr $a0, $fcc0342; LA64-NEXT:    ret343  %1 = call i1 @llvm.experimental.constrained.fcmp.f32(float %a, float %b, metadata !"one", metadata !"fpexcept.strict") strictfp344  %2 = zext i1 %1 to i32345  ret i32 %2346}347 348define i32 @fcmp_ord(float %a, float %b) nounwind strictfp {349; LA32-LABEL: fcmp_ord:350; LA32:       # %bb.0:351; LA32-NEXT:    fcmp.cor.s $fcc0, $fa0, $fa1352; LA32-NEXT:    movcf2gr $a0, $fcc0353; LA32-NEXT:    ret354;355; LA64-LABEL: fcmp_ord:356; LA64:       # %bb.0:357; LA64-NEXT:    fcmp.cor.s $fcc0, $fa0, $fa1358; LA64-NEXT:    movcf2gr $a0, $fcc0359; LA64-NEXT:    ret360  %1 = call i1 @llvm.experimental.constrained.fcmp.f32(float %a, float %b, metadata !"ord", metadata !"fpexcept.strict") strictfp361  %2 = zext i1 %1 to i32362  ret i32 %2363}364 365define i32 @fcmp_ueq(float %a, float %b) nounwind strictfp {366; LA32-LABEL: fcmp_ueq:367; LA32:       # %bb.0:368; LA32-NEXT:    fcmp.cueq.s $fcc0, $fa0, $fa1369; LA32-NEXT:    movcf2gr $a0, $fcc0370; LA32-NEXT:    ret371;372; LA64-LABEL: fcmp_ueq:373; LA64:       # %bb.0:374; LA64-NEXT:    fcmp.cueq.s $fcc0, $fa0, $fa1375; LA64-NEXT:    movcf2gr $a0, $fcc0376; LA64-NEXT:    ret377  %1 = call i1 @llvm.experimental.constrained.fcmp.f32(float %a, float %b, metadata !"ueq", metadata !"fpexcept.strict") strictfp378  %2 = zext i1 %1 to i32379  ret i32 %2380}381 382define i32 @fcmp_ugt(float %a, float %b) nounwind strictfp {383; LA32-LABEL: fcmp_ugt:384; LA32:       # %bb.0:385; LA32-NEXT:    fcmp.cult.s $fcc0, $fa1, $fa0386; LA32-NEXT:    movcf2gr $a0, $fcc0387; LA32-NEXT:    ret388;389; LA64-LABEL: fcmp_ugt:390; LA64:       # %bb.0:391; LA64-NEXT:    fcmp.cult.s $fcc0, $fa1, $fa0392; LA64-NEXT:    movcf2gr $a0, $fcc0393; LA64-NEXT:    ret394  %1 = call i1 @llvm.experimental.constrained.fcmp.f32(float %a, float %b, metadata !"ugt", metadata !"fpexcept.strict") strictfp395  %2 = zext i1 %1 to i32396  ret i32 %2397}398 399define i32 @fcmp_uge(float %a, float %b) nounwind strictfp {400; LA32-LABEL: fcmp_uge:401; LA32:       # %bb.0:402; LA32-NEXT:    fcmp.cule.s $fcc0, $fa1, $fa0403; LA32-NEXT:    movcf2gr $a0, $fcc0404; LA32-NEXT:    ret405;406; LA64-LABEL: fcmp_uge:407; LA64:       # %bb.0:408; LA64-NEXT:    fcmp.cule.s $fcc0, $fa1, $fa0409; LA64-NEXT:    movcf2gr $a0, $fcc0410; LA64-NEXT:    ret411  %1 = call i1 @llvm.experimental.constrained.fcmp.f32(float %a, float %b, metadata !"uge", metadata !"fpexcept.strict") strictfp412  %2 = zext i1 %1 to i32413  ret i32 %2414}415 416define i32 @fcmp_ult(float %a, float %b) nounwind strictfp {417; LA32-LABEL: fcmp_ult:418; LA32:       # %bb.0:419; LA32-NEXT:    fcmp.cult.s $fcc0, $fa0, $fa1420; LA32-NEXT:    movcf2gr $a0, $fcc0421; LA32-NEXT:    ret422;423; LA64-LABEL: fcmp_ult:424; LA64:       # %bb.0:425; LA64-NEXT:    fcmp.cult.s $fcc0, $fa0, $fa1426; LA64-NEXT:    movcf2gr $a0, $fcc0427; LA64-NEXT:    ret428  %1 = call i1 @llvm.experimental.constrained.fcmp.f32(float %a, float %b, metadata !"ult", metadata !"fpexcept.strict") strictfp429  %2 = zext i1 %1 to i32430  ret i32 %2431}432 433define i32 @fcmp_ule(float %a, float %b) nounwind strictfp {434; LA32-LABEL: fcmp_ule:435; LA32:       # %bb.0:436; LA32-NEXT:    fcmp.cule.s $fcc0, $fa0, $fa1437; LA32-NEXT:    movcf2gr $a0, $fcc0438; LA32-NEXT:    ret439;440; LA64-LABEL: fcmp_ule:441; LA64:       # %bb.0:442; LA64-NEXT:    fcmp.cule.s $fcc0, $fa0, $fa1443; LA64-NEXT:    movcf2gr $a0, $fcc0444; LA64-NEXT:    ret445  %1 = call i1 @llvm.experimental.constrained.fcmp.f32(float %a, float %b, metadata !"ule", metadata !"fpexcept.strict") strictfp446  %2 = zext i1 %1 to i32447  ret i32 %2448}449 450define i32 @fcmp_une(float %a, float %b) nounwind strictfp {451; LA32-LABEL: fcmp_une:452; LA32:       # %bb.0:453; LA32-NEXT:    fcmp.cune.s $fcc0, $fa0, $fa1454; LA32-NEXT:    movcf2gr $a0, $fcc0455; LA32-NEXT:    ret456;457; LA64-LABEL: fcmp_une:458; LA64:       # %bb.0:459; LA64-NEXT:    fcmp.cune.s $fcc0, $fa0, $fa1460; LA64-NEXT:    movcf2gr $a0, $fcc0461; LA64-NEXT:    ret462  %1 = call i1 @llvm.experimental.constrained.fcmp.f32(float %a, float %b, metadata !"une", metadata !"fpexcept.strict") strictfp463  %2 = zext i1 %1 to i32464  ret i32 %2465}466 467define i32 @fcmp_uno(float %a, float %b) nounwind strictfp {468; LA32-LABEL: fcmp_uno:469; LA32:       # %bb.0:470; LA32-NEXT:    fcmp.cun.s $fcc0, $fa0, $fa1471; LA32-NEXT:    movcf2gr $a0, $fcc0472; LA32-NEXT:    ret473;474; LA64-LABEL: fcmp_uno:475; LA64:       # %bb.0:476; LA64-NEXT:    fcmp.cun.s $fcc0, $fa0, $fa1477; LA64-NEXT:    movcf2gr $a0, $fcc0478; LA64-NEXT:    ret479  %1 = call i1 @llvm.experimental.constrained.fcmp.f32(float %a, float %b, metadata !"uno", metadata !"fpexcept.strict") strictfp480  %2 = zext i1 %1 to i32481  ret i32 %2482}483