brintos

brintos / llvm-project-archived public Read only

0
0
Text · 7.7 KiB · 8d26996 Raw
274 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc --mtriple=loongarch32 --mattr=+d < %s | FileCheck %s --check-prefix=LA323; RUN: llc --mtriple=loongarch64 --mattr=+d < %s | FileCheck %s --check-prefix=LA644 5;; Test double-precision floating-point values selection after comparison6 7define double @fcmp_false(double %a, double %b, double %x, double %y) {8; LA32-LABEL: fcmp_false:9; LA32:       # %bb.0:10; LA32-NEXT:    fmov.d $fa0, $fa311; LA32-NEXT:    ret12;13; LA64-LABEL: fcmp_false:14; LA64:       # %bb.0:15; LA64-NEXT:    fmov.d $fa0, $fa316; LA64-NEXT:    ret17  %cmp = fcmp false double %a, %b18  %res = select i1 %cmp, double %x, double %y19  ret double %res20}21 22define double @fcmp_oeq(double %a, double %b, double %x, double %y) {23; LA32-LABEL: fcmp_oeq:24; LA32:       # %bb.0:25; LA32-NEXT:    fcmp.ceq.d $fcc0, $fa0, $fa126; LA32-NEXT:    fsel $fa0, $fa3, $fa2, $fcc027; LA32-NEXT:    ret28;29; LA64-LABEL: fcmp_oeq:30; LA64:       # %bb.0:31; LA64-NEXT:    fcmp.ceq.d $fcc0, $fa0, $fa132; LA64-NEXT:    fsel $fa0, $fa3, $fa2, $fcc033; LA64-NEXT:    ret34  %cmp = fcmp oeq double %a, %b35  %res = select i1 %cmp, double %x, double %y36  ret double %res37}38 39define double @fcmp_ogt(double %a, double %b, double %x, double %y) {40; LA32-LABEL: fcmp_ogt:41; LA32:       # %bb.0:42; LA32-NEXT:    fcmp.clt.d $fcc0, $fa1, $fa043; LA32-NEXT:    fsel $fa0, $fa3, $fa2, $fcc044; LA32-NEXT:    ret45;46; LA64-LABEL: fcmp_ogt:47; LA64:       # %bb.0:48; LA64-NEXT:    fcmp.clt.d $fcc0, $fa1, $fa049; LA64-NEXT:    fsel $fa0, $fa3, $fa2, $fcc050; LA64-NEXT:    ret51  %cmp = fcmp ogt double %a, %b52  %res = select i1 %cmp, double %x, double %y53  ret double %res54}55 56define double @fcmp_oge(double %a, double %b, double %x, double %y) {57; LA32-LABEL: fcmp_oge:58; LA32:       # %bb.0:59; LA32-NEXT:    fcmp.cle.d $fcc0, $fa1, $fa060; LA32-NEXT:    fsel $fa0, $fa3, $fa2, $fcc061; LA32-NEXT:    ret62;63; LA64-LABEL: fcmp_oge:64; LA64:       # %bb.0:65; LA64-NEXT:    fcmp.cle.d $fcc0, $fa1, $fa066; LA64-NEXT:    fsel $fa0, $fa3, $fa2, $fcc067; LA64-NEXT:    ret68  %cmp = fcmp oge double %a, %b69  %res = select i1 %cmp, double %x, double %y70  ret double %res71}72 73define double @fcmp_olt(double %a, double %b, double %x, double %y) {74; LA32-LABEL: fcmp_olt:75; LA32:       # %bb.0:76; LA32-NEXT:    fcmp.clt.d $fcc0, $fa0, $fa177; LA32-NEXT:    fsel $fa0, $fa3, $fa2, $fcc078; LA32-NEXT:    ret79;80; LA64-LABEL: fcmp_olt:81; LA64:       # %bb.0:82; LA64-NEXT:    fcmp.clt.d $fcc0, $fa0, $fa183; LA64-NEXT:    fsel $fa0, $fa3, $fa2, $fcc084; LA64-NEXT:    ret85  %cmp = fcmp olt double %a, %b86  %res = select i1 %cmp, double %x, double %y87  ret double %res88}89 90define double @fcmp_ole(double %a, double %b, double %x, double %y) {91; LA32-LABEL: fcmp_ole:92; LA32:       # %bb.0:93; LA32-NEXT:    fcmp.cle.d $fcc0, $fa0, $fa194; LA32-NEXT:    fsel $fa0, $fa3, $fa2, $fcc095; LA32-NEXT:    ret96;97; LA64-LABEL: fcmp_ole:98; LA64:       # %bb.0:99; LA64-NEXT:    fcmp.cle.d $fcc0, $fa0, $fa1100; LA64-NEXT:    fsel $fa0, $fa3, $fa2, $fcc0101; LA64-NEXT:    ret102  %cmp = fcmp ole double %a, %b103  %res = select i1 %cmp, double %x, double %y104  ret double %res105}106 107define double @fcmp_one(double %a, double %b, double %x, double %y) {108; LA32-LABEL: fcmp_one:109; LA32:       # %bb.0:110; LA32-NEXT:    fcmp.cne.d $fcc0, $fa0, $fa1111; LA32-NEXT:    fsel $fa0, $fa3, $fa2, $fcc0112; LA32-NEXT:    ret113;114; LA64-LABEL: fcmp_one:115; LA64:       # %bb.0:116; LA64-NEXT:    fcmp.cne.d $fcc0, $fa0, $fa1117; LA64-NEXT:    fsel $fa0, $fa3, $fa2, $fcc0118; LA64-NEXT:    ret119  %cmp = fcmp one double %a, %b120  %res = select i1 %cmp, double %x, double %y121  ret double %res122}123 124define double @fcmp_ord(double %a, double %b, double %x, double %y) {125; LA32-LABEL: fcmp_ord:126; LA32:       # %bb.0:127; LA32-NEXT:    fcmp.cor.d $fcc0, $fa0, $fa1128; LA32-NEXT:    fsel $fa0, $fa3, $fa2, $fcc0129; LA32-NEXT:    ret130;131; LA64-LABEL: fcmp_ord:132; LA64:       # %bb.0:133; LA64-NEXT:    fcmp.cor.d $fcc0, $fa0, $fa1134; LA64-NEXT:    fsel $fa0, $fa3, $fa2, $fcc0135; LA64-NEXT:    ret136  %cmp = fcmp ord double %a, %b137  %res = select i1 %cmp, double %x, double %y138  ret double %res139}140 141define double @fcmp_ueq(double %a, double %b, double %x, double %y) {142; LA32-LABEL: fcmp_ueq:143; LA32:       # %bb.0:144; LA32-NEXT:    fcmp.cueq.d $fcc0, $fa0, $fa1145; LA32-NEXT:    fsel $fa0, $fa3, $fa2, $fcc0146; LA32-NEXT:    ret147;148; LA64-LABEL: fcmp_ueq:149; LA64:       # %bb.0:150; LA64-NEXT:    fcmp.cueq.d $fcc0, $fa0, $fa1151; LA64-NEXT:    fsel $fa0, $fa3, $fa2, $fcc0152; LA64-NEXT:    ret153  %cmp = fcmp ueq double %a, %b154  %res = select i1 %cmp, double %x, double %y155  ret double %res156}157 158define double @fcmp_ugt(double %a, double %b, double %x, double %y) {159; LA32-LABEL: fcmp_ugt:160; LA32:       # %bb.0:161; LA32-NEXT:    fcmp.cult.d $fcc0, $fa1, $fa0162; LA32-NEXT:    fsel $fa0, $fa3, $fa2, $fcc0163; LA32-NEXT:    ret164;165; LA64-LABEL: fcmp_ugt:166; LA64:       # %bb.0:167; LA64-NEXT:    fcmp.cult.d $fcc0, $fa1, $fa0168; LA64-NEXT:    fsel $fa0, $fa3, $fa2, $fcc0169; LA64-NEXT:    ret170  %cmp = fcmp ugt double %a, %b171  %res = select i1 %cmp, double %x, double %y172  ret double %res173}174 175define double @fcmp_uge(double %a, double %b, double %x, double %y) {176; LA32-LABEL: fcmp_uge:177; LA32:       # %bb.0:178; LA32-NEXT:    fcmp.cule.d $fcc0, $fa1, $fa0179; LA32-NEXT:    fsel $fa0, $fa3, $fa2, $fcc0180; LA32-NEXT:    ret181;182; LA64-LABEL: fcmp_uge:183; LA64:       # %bb.0:184; LA64-NEXT:    fcmp.cule.d $fcc0, $fa1, $fa0185; LA64-NEXT:    fsel $fa0, $fa3, $fa2, $fcc0186; LA64-NEXT:    ret187  %cmp = fcmp uge double %a, %b188  %res = select i1 %cmp, double %x, double %y189  ret double %res190}191 192define double @fcmp_ult(double %a, double %b, double %x, double %y) {193; LA32-LABEL: fcmp_ult:194; LA32:       # %bb.0:195; LA32-NEXT:    fcmp.cult.d $fcc0, $fa0, $fa1196; LA32-NEXT:    fsel $fa0, $fa3, $fa2, $fcc0197; LA32-NEXT:    ret198;199; LA64-LABEL: fcmp_ult:200; LA64:       # %bb.0:201; LA64-NEXT:    fcmp.cult.d $fcc0, $fa0, $fa1202; LA64-NEXT:    fsel $fa0, $fa3, $fa2, $fcc0203; LA64-NEXT:    ret204  %cmp = fcmp ult double %a, %b205  %res = select i1 %cmp, double %x, double %y206  ret double %res207}208 209define double @fcmp_ule(double %a, double %b, double %x, double %y) {210; LA32-LABEL: fcmp_ule:211; LA32:       # %bb.0:212; LA32-NEXT:    fcmp.cule.d $fcc0, $fa0, $fa1213; LA32-NEXT:    fsel $fa0, $fa3, $fa2, $fcc0214; LA32-NEXT:    ret215;216; LA64-LABEL: fcmp_ule:217; LA64:       # %bb.0:218; LA64-NEXT:    fcmp.cule.d $fcc0, $fa0, $fa1219; LA64-NEXT:    fsel $fa0, $fa3, $fa2, $fcc0220; LA64-NEXT:    ret221  %cmp = fcmp ule double %a, %b222  %res = select i1 %cmp, double %x, double %y223  ret double %res224}225 226define double @fcmp_une(double %a, double %b, double %x, double %y) {227; LA32-LABEL: fcmp_une:228; LA32:       # %bb.0:229; LA32-NEXT:    fcmp.cune.d $fcc0, $fa0, $fa1230; LA32-NEXT:    fsel $fa0, $fa3, $fa2, $fcc0231; LA32-NEXT:    ret232;233; LA64-LABEL: fcmp_une:234; LA64:       # %bb.0:235; LA64-NEXT:    fcmp.cune.d $fcc0, $fa0, $fa1236; LA64-NEXT:    fsel $fa0, $fa3, $fa2, $fcc0237; LA64-NEXT:    ret238  %cmp = fcmp une double %a, %b239  %res = select i1 %cmp, double %x, double %y240  ret double %res241}242 243define double @fcmp_uno(double %a, double %b, double %x, double %y) {244; LA32-LABEL: fcmp_uno:245; LA32:       # %bb.0:246; LA32-NEXT:    fcmp.cun.d $fcc0, $fa0, $fa1247; LA32-NEXT:    fsel $fa0, $fa3, $fa2, $fcc0248; LA32-NEXT:    ret249;250; LA64-LABEL: fcmp_uno:251; LA64:       # %bb.0:252; LA64-NEXT:    fcmp.cun.d $fcc0, $fa0, $fa1253; LA64-NEXT:    fsel $fa0, $fa3, $fa2, $fcc0254; LA64-NEXT:    ret255  %cmp = fcmp uno double %a, %b256  %res = select i1 %cmp, double %x, double %y257  ret double %res258}259 260define double @fcmp_true(double %a, double %b, double %x, double %y) {261; LA32-LABEL: fcmp_true:262; LA32:       # %bb.0:263; LA32-NEXT:    fmov.d $fa0, $fa2264; LA32-NEXT:    ret265;266; LA64-LABEL: fcmp_true:267; LA64:       # %bb.0:268; LA64-NEXT:    fmov.d $fa0, $fa2269; LA64-NEXT:    ret270  %cmp = fcmp true double %a, %b271  %res = select i1 %cmp, double %x, double %y272  ret double %res273}274