190 lines · plain
1; RUN: llc < %s -mtriple=ve-unknown-unknown | FileCheck %s2 3define double @selectccaf(double, double, double, double) {4; CHECK-LABEL: selectccaf:5; CHECK: # %bb.0:6; CHECK-NEXT: or %s0, 0, %s37; CHECK-NEXT: b.l.t (, %s10)8 %5 = fcmp false double %0, %19 %6 = select i1 %5, double %2, double %310 ret double %611}12 13define double @selectccat(double, double, double, double) {14; CHECK-LABEL: selectccat:15; CHECK: # %bb.0:16; CHECK-NEXT: or %s0, 0, %s217; CHECK-NEXT: b.l.t (, %s10)18 %5 = fcmp true double %0, %119 %6 = select i1 %5, double %2, double %320 ret double %621}22 23define double @selectccoeq(double, double, double, double) {24; CHECK-LABEL: selectccoeq:25; CHECK: # %bb.0:26; CHECK-NEXT: fcmp.d %s0, %s0, %s127; CHECK-NEXT: cmov.d.eq %s3, %s2, %s028; CHECK-NEXT: or %s0, 0, %s329; CHECK-NEXT: b.l.t (, %s10)30 %5 = fcmp oeq double %0, %131 %6 = select i1 %5, double %2, double %332 ret double %633}34 35define double @selectccone(double, double, double, double) {36; CHECK-LABEL: selectccone:37; CHECK: # %bb.0:38; CHECK-NEXT: fcmp.d %s0, %s0, %s139; CHECK-NEXT: cmov.d.ne %s3, %s2, %s040; CHECK-NEXT: or %s0, 0, %s341; CHECK-NEXT: b.l.t (, %s10)42 %5 = fcmp one double %0, %143 %6 = select i1 %5, double %2, double %344 ret double %645}46 47define double @selectccogt(double, double, double, double) {48; CHECK-LABEL: selectccogt:49; CHECK: # %bb.0:50; CHECK-NEXT: fcmp.d %s0, %s0, %s151; CHECK-NEXT: cmov.d.gt %s3, %s2, %s052; CHECK-NEXT: or %s0, 0, %s353; CHECK-NEXT: b.l.t (, %s10)54 %5 = fcmp ogt double %0, %155 %6 = select i1 %5, double %2, double %356 ret double %657}58 59define double @selectccoge(double, double, double, double) {60; CHECK-LABEL: selectccoge:61; CHECK: # %bb.0:62; CHECK-NEXT: fcmp.d %s0, %s0, %s163; CHECK-NEXT: cmov.d.ge %s3, %s2, %s064; CHECK-NEXT: or %s0, 0, %s365; CHECK-NEXT: b.l.t (, %s10)66 %5 = fcmp oge double %0, %167 %6 = select i1 %5, double %2, double %368 ret double %669}70 71define double @selectccolt(double, double, double, double) {72; CHECK-LABEL: selectccolt:73; CHECK: # %bb.0:74; CHECK-NEXT: fcmp.d %s0, %s0, %s175; CHECK-NEXT: cmov.d.lt %s3, %s2, %s076; CHECK-NEXT: or %s0, 0, %s377; CHECK-NEXT: b.l.t (, %s10)78 %5 = fcmp olt double %0, %179 %6 = select i1 %5, double %2, double %380 ret double %681}82 83define double @selectccole(double, double, double, double) {84; CHECK-LABEL: selectccole:85; CHECK: # %bb.0:86; CHECK-NEXT: fcmp.d %s0, %s0, %s187; CHECK-NEXT: cmov.d.le %s3, %s2, %s088; CHECK-NEXT: or %s0, 0, %s389; CHECK-NEXT: b.l.t (, %s10)90 %5 = fcmp ole double %0, %191 %6 = select i1 %5, double %2, double %392 ret double %693}94 95define double @selectccord(double, double, double, double) {96; CHECK-LABEL: selectccord:97; CHECK: # %bb.0:98; CHECK-NEXT: fcmp.d %s0, %s0, %s199; CHECK-NEXT: cmov.d.num %s3, %s2, %s0100; CHECK-NEXT: or %s0, 0, %s3101; CHECK-NEXT: b.l.t (, %s10)102 %5 = fcmp ord double %0, %1103 %6 = select i1 %5, double %2, double %3104 ret double %6105}106 107define double @selectccuno(double, double, double, double) {108; CHECK-LABEL: selectccuno:109; CHECK: # %bb.0:110; CHECK-NEXT: fcmp.d %s0, %s0, %s1111; CHECK-NEXT: cmov.d.nan %s3, %s2, %s0112; CHECK-NEXT: or %s0, 0, %s3113; CHECK-NEXT: b.l.t (, %s10)114 %5 = fcmp uno double %0, %1115 %6 = select i1 %5, double %2, double %3116 ret double %6117}118 119define double @selectccueq(double, double, double, double) {120; CHECK-LABEL: selectccueq:121; CHECK: # %bb.0:122; CHECK-NEXT: fcmp.d %s0, %s0, %s1123; CHECK-NEXT: cmov.d.eqnan %s3, %s2, %s0124; CHECK-NEXT: or %s0, 0, %s3125; CHECK-NEXT: b.l.t (, %s10)126 %5 = fcmp ueq double %0, %1127 %6 = select i1 %5, double %2, double %3128 ret double %6129}130 131define double @selectccune(double, double, double, double) {132; CHECK-LABEL: selectccune:133; CHECK: # %bb.0:134; CHECK-NEXT: fcmp.d %s0, %s0, %s1135; CHECK-NEXT: cmov.d.nenan %s3, %s2, %s0136; CHECK-NEXT: or %s0, 0, %s3137; CHECK-NEXT: b.l.t (, %s10)138 %5 = fcmp une double %0, %1139 %6 = select i1 %5, double %2, double %3140 ret double %6141}142 143define double @selectccugt(double, double, double, double) {144; CHECK-LABEL: selectccugt:145; CHECK: # %bb.0:146; CHECK-NEXT: fcmp.d %s0, %s0, %s1147; CHECK-NEXT: cmov.d.gtnan %s3, %s2, %s0148; CHECK-NEXT: or %s0, 0, %s3149; CHECK-NEXT: b.l.t (, %s10)150 %5 = fcmp ugt double %0, %1151 %6 = select i1 %5, double %2, double %3152 ret double %6153}154 155define double @selectccuge(double, double, double, double) {156; CHECK-LABEL: selectccuge:157; CHECK: # %bb.0:158; CHECK-NEXT: fcmp.d %s0, %s0, %s1159; CHECK-NEXT: cmov.d.genan %s3, %s2, %s0160; CHECK-NEXT: or %s0, 0, %s3161; CHECK-NEXT: b.l.t (, %s10)162 %5 = fcmp uge double %0, %1163 %6 = select i1 %5, double %2, double %3164 ret double %6165}166 167define double @selectccult(double, double, double, double) {168; CHECK-LABEL: selectccult:169; CHECK: # %bb.0:170; CHECK-NEXT: fcmp.d %s0, %s0, %s1171; CHECK-NEXT: cmov.d.ltnan %s3, %s2, %s0172; CHECK-NEXT: or %s0, 0, %s3173; CHECK-NEXT: b.l.t (, %s10)174 %5 = fcmp ult double %0, %1175 %6 = select i1 %5, double %2, double %3176 ret double %6177}178 179define double @selectccule(double, double, double, double) {180; CHECK-LABEL: selectccule:181; CHECK: # %bb.0:182; CHECK-NEXT: fcmp.d %s0, %s0, %s1183; CHECK-NEXT: cmov.d.lenan %s3, %s2, %s0184; CHECK-NEXT: or %s0, 0, %s3185; CHECK-NEXT: b.l.t (, %s10)186 %5 = fcmp ule double %0, %1187 %6 = select i1 %5, double %2, double %3188 ret double %6189}190