brintos

brintos / llvm-project-archived public Read only

0
0
Text · 7.6 KiB · 1f6d231 Raw
274 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 5;; Test single-precision floating-point values selection after comparison6 7define float @fcmp_false(float %a, float %b, float %x, float %y) {8; LA32-LABEL: fcmp_false:9; LA32:       # %bb.0:10; LA32-NEXT:    fmov.s $fa0, $fa311; LA32-NEXT:    ret12;13; LA64-LABEL: fcmp_false:14; LA64:       # %bb.0:15; LA64-NEXT:    fmov.s $fa0, $fa316; LA64-NEXT:    ret17  %cmp = fcmp false float %a, %b18  %res = select i1 %cmp, float %x, float %y19  ret float %res20}21 22define float @fcmp_oeq(float %a, float %b, float %x, float %y) {23; LA32-LABEL: fcmp_oeq:24; LA32:       # %bb.0:25; LA32-NEXT:    fcmp.ceq.s $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.s $fcc0, $fa0, $fa132; LA64-NEXT:    fsel $fa0, $fa3, $fa2, $fcc033; LA64-NEXT:    ret34  %cmp = fcmp oeq float %a, %b35  %res = select i1 %cmp, float %x, float %y36  ret float %res37}38 39define float @fcmp_ogt(float %a, float %b, float %x, float %y) {40; LA32-LABEL: fcmp_ogt:41; LA32:       # %bb.0:42; LA32-NEXT:    fcmp.clt.s $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.s $fcc0, $fa1, $fa049; LA64-NEXT:    fsel $fa0, $fa3, $fa2, $fcc050; LA64-NEXT:    ret51  %cmp = fcmp ogt float %a, %b52  %res = select i1 %cmp, float %x, float %y53  ret float %res54}55 56define float @fcmp_oge(float %a, float %b, float %x, float %y) {57; LA32-LABEL: fcmp_oge:58; LA32:       # %bb.0:59; LA32-NEXT:    fcmp.cle.s $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.s $fcc0, $fa1, $fa066; LA64-NEXT:    fsel $fa0, $fa3, $fa2, $fcc067; LA64-NEXT:    ret68  %cmp = fcmp oge float %a, %b69  %res = select i1 %cmp, float %x, float %y70  ret float %res71}72 73define float @fcmp_olt(float %a, float %b, float %x, float %y) {74; LA32-LABEL: fcmp_olt:75; LA32:       # %bb.0:76; LA32-NEXT:    fcmp.clt.s $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.s $fcc0, $fa0, $fa183; LA64-NEXT:    fsel $fa0, $fa3, $fa2, $fcc084; LA64-NEXT:    ret85  %cmp = fcmp olt float %a, %b86  %res = select i1 %cmp, float %x, float %y87  ret float %res88}89 90define float @fcmp_ole(float %a, float %b, float %x, float %y) {91; LA32-LABEL: fcmp_ole:92; LA32:       # %bb.0:93; LA32-NEXT:    fcmp.cle.s $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.s $fcc0, $fa0, $fa1100; LA64-NEXT:    fsel $fa0, $fa3, $fa2, $fcc0101; LA64-NEXT:    ret102  %cmp = fcmp ole float %a, %b103  %res = select i1 %cmp, float %x, float %y104  ret float %res105}106 107define float @fcmp_one(float %a, float %b, float %x, float %y) {108; LA32-LABEL: fcmp_one:109; LA32:       # %bb.0:110; LA32-NEXT:    fcmp.cne.s $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.s $fcc0, $fa0, $fa1117; LA64-NEXT:    fsel $fa0, $fa3, $fa2, $fcc0118; LA64-NEXT:    ret119  %cmp = fcmp one float %a, %b120  %res = select i1 %cmp, float %x, float %y121  ret float %res122}123 124define float @fcmp_ord(float %a, float %b, float %x, float %y) {125; LA32-LABEL: fcmp_ord:126; LA32:       # %bb.0:127; LA32-NEXT:    fcmp.cor.s $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.s $fcc0, $fa0, $fa1134; LA64-NEXT:    fsel $fa0, $fa3, $fa2, $fcc0135; LA64-NEXT:    ret136  %cmp = fcmp ord float %a, %b137  %res = select i1 %cmp, float %x, float %y138  ret float %res139}140 141define float @fcmp_ueq(float %a, float %b, float %x, float %y) {142; LA32-LABEL: fcmp_ueq:143; LA32:       # %bb.0:144; LA32-NEXT:    fcmp.cueq.s $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.s $fcc0, $fa0, $fa1151; LA64-NEXT:    fsel $fa0, $fa3, $fa2, $fcc0152; LA64-NEXT:    ret153  %cmp = fcmp ueq float %a, %b154  %res = select i1 %cmp, float %x, float %y155  ret float %res156}157 158define float @fcmp_ugt(float %a, float %b, float %x, float %y) {159; LA32-LABEL: fcmp_ugt:160; LA32:       # %bb.0:161; LA32-NEXT:    fcmp.cult.s $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.s $fcc0, $fa1, $fa0168; LA64-NEXT:    fsel $fa0, $fa3, $fa2, $fcc0169; LA64-NEXT:    ret170  %cmp = fcmp ugt float %a, %b171  %res = select i1 %cmp, float %x, float %y172  ret float %res173}174 175define float @fcmp_uge(float %a, float %b, float %x, float %y) {176; LA32-LABEL: fcmp_uge:177; LA32:       # %bb.0:178; LA32-NEXT:    fcmp.cule.s $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.s $fcc0, $fa1, $fa0185; LA64-NEXT:    fsel $fa0, $fa3, $fa2, $fcc0186; LA64-NEXT:    ret187  %cmp = fcmp uge float %a, %b188  %res = select i1 %cmp, float %x, float %y189  ret float %res190}191 192define float @fcmp_ult(float %a, float %b, float %x, float %y) {193; LA32-LABEL: fcmp_ult:194; LA32:       # %bb.0:195; LA32-NEXT:    fcmp.cult.s $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.s $fcc0, $fa0, $fa1202; LA64-NEXT:    fsel $fa0, $fa3, $fa2, $fcc0203; LA64-NEXT:    ret204  %cmp = fcmp ult float %a, %b205  %res = select i1 %cmp, float %x, float %y206  ret float %res207}208 209define float @fcmp_ule(float %a, float %b, float %x, float %y) {210; LA32-LABEL: fcmp_ule:211; LA32:       # %bb.0:212; LA32-NEXT:    fcmp.cule.s $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.s $fcc0, $fa0, $fa1219; LA64-NEXT:    fsel $fa0, $fa3, $fa2, $fcc0220; LA64-NEXT:    ret221  %cmp = fcmp ule float %a, %b222  %res = select i1 %cmp, float %x, float %y223  ret float %res224}225 226define float @fcmp_une(float %a, float %b, float %x, float %y) {227; LA32-LABEL: fcmp_une:228; LA32:       # %bb.0:229; LA32-NEXT:    fcmp.cune.s $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.s $fcc0, $fa0, $fa1236; LA64-NEXT:    fsel $fa0, $fa3, $fa2, $fcc0237; LA64-NEXT:    ret238  %cmp = fcmp une float %a, %b239  %res = select i1 %cmp, float %x, float %y240  ret float %res241}242 243define float @fcmp_uno(float %a, float %b, float %x, float %y) {244; LA32-LABEL: fcmp_uno:245; LA32:       # %bb.0:246; LA32-NEXT:    fcmp.cun.s $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.s $fcc0, $fa0, $fa1253; LA64-NEXT:    fsel $fa0, $fa3, $fa2, $fcc0254; LA64-NEXT:    ret255  %cmp = fcmp uno float %a, %b256  %res = select i1 %cmp, float %x, float %y257  ret float %res258}259 260define float @fcmp_true(float %a, float %b, float %x, float %y) {261; LA32-LABEL: fcmp_true:262; LA32:       # %bb.0:263; LA32-NEXT:    fmov.s $fa0, $fa2264; LA32-NEXT:    ret265;266; LA64-LABEL: fcmp_true:267; LA64:       # %bb.0:268; LA64-NEXT:    fmov.s $fa0, $fa2269; LA64-NEXT:    ret270  %cmp = fcmp true float %a, %b271  %res = select i1 %cmp, float %x, float %y272  ret float %res273}274