188 lines · plain
1; RUN: llc < %s -mtriple=ve-unknown-unknown | FileCheck %s2 3define zeroext i1 @setccaf(double, double) {4; CHECK-LABEL: setccaf:5; CHECK: # %bb.0:6; CHECK-NEXT: or %s0, 0, (0)17; CHECK-NEXT: b.l.t (, %s10)8 %3 = fcmp false double %0, %19 ret i1 %310}11 12define zeroext i1 @setccat(double, double) {13; CHECK-LABEL: setccat:14; CHECK: # %bb.0:15; CHECK-NEXT: or %s0, 1, (0)116; CHECK-NEXT: b.l.t (, %s10)17 %3 = fcmp true double %0, %118 ret i1 %319}20 21define zeroext i1 @setccoeq(double, double) {22; CHECK-LABEL: setccoeq:23; CHECK: # %bb.0:24; CHECK-NEXT: fcmp.d %s0, %s0, %s125; CHECK-NEXT: or %s1, 0, (0)126; CHECK-NEXT: cmov.d.eq %s1, (63)0, %s027; CHECK-NEXT: adds.w.zx %s0, %s1, (0)128; CHECK-NEXT: b.l.t (, %s10)29 %3 = fcmp oeq double %0, %130 ret i1 %331}32 33define zeroext i1 @setccone(double, double) {34; CHECK-LABEL: setccone:35; CHECK: # %bb.0:36; CHECK-NEXT: fcmp.d %s0, %s0, %s137; CHECK-NEXT: or %s1, 0, (0)138; CHECK-NEXT: cmov.d.ne %s1, (63)0, %s039; CHECK-NEXT: adds.w.zx %s0, %s1, (0)140; CHECK-NEXT: b.l.t (, %s10)41 %3 = fcmp one double %0, %142 ret i1 %343}44 45define zeroext i1 @setccogt(double, double) {46; CHECK-LABEL: setccogt:47; CHECK: # %bb.0:48; CHECK-NEXT: fcmp.d %s0, %s0, %s149; CHECK-NEXT: or %s1, 0, (0)150; CHECK-NEXT: cmov.d.gt %s1, (63)0, %s051; CHECK-NEXT: adds.w.zx %s0, %s1, (0)152; CHECK-NEXT: b.l.t (, %s10)53 %3 = fcmp ogt double %0, %154 ret i1 %355}56 57define zeroext i1 @setccoge(double, double) {58; CHECK-LABEL: setccoge:59; CHECK: # %bb.0:60; CHECK-NEXT: fcmp.d %s0, %s0, %s161; CHECK-NEXT: or %s1, 0, (0)162; CHECK-NEXT: cmov.d.ge %s1, (63)0, %s063; CHECK-NEXT: adds.w.zx %s0, %s1, (0)164; CHECK-NEXT: b.l.t (, %s10)65 %3 = fcmp oge double %0, %166 ret i1 %367}68 69define zeroext i1 @setccolt(double, double) {70; CHECK-LABEL: setccolt:71; CHECK: # %bb.0:72; CHECK-NEXT: fcmp.d %s0, %s0, %s173; CHECK-NEXT: or %s1, 0, (0)174; CHECK-NEXT: cmov.d.lt %s1, (63)0, %s075; CHECK-NEXT: adds.w.zx %s0, %s1, (0)176; CHECK-NEXT: b.l.t (, %s10)77 %3 = fcmp olt double %0, %178 ret i1 %379}80 81define zeroext i1 @setccole(double, double) {82; CHECK-LABEL: setccole:83; CHECK: # %bb.0:84; CHECK-NEXT: fcmp.d %s0, %s0, %s185; CHECK-NEXT: or %s1, 0, (0)186; CHECK-NEXT: cmov.d.le %s1, (63)0, %s087; CHECK-NEXT: adds.w.zx %s0, %s1, (0)188; CHECK-NEXT: b.l.t (, %s10)89 %3 = fcmp ole double %0, %190 ret i1 %391}92 93define zeroext i1 @setccord(double, double) {94; CHECK-LABEL: setccord:95; CHECK: # %bb.0:96; CHECK-NEXT: fcmp.d %s0, %s0, %s197; CHECK-NEXT: or %s1, 0, (0)198; CHECK-NEXT: cmov.d.num %s1, (63)0, %s099; CHECK-NEXT: adds.w.zx %s0, %s1, (0)1100; CHECK-NEXT: b.l.t (, %s10)101 %3 = fcmp ord double %0, %1102 ret i1 %3103}104 105define zeroext i1 @setccuno(double, double) {106; CHECK-LABEL: setccuno:107; CHECK: # %bb.0:108; CHECK-NEXT: fcmp.d %s0, %s0, %s1109; CHECK-NEXT: or %s1, 0, (0)1110; CHECK-NEXT: cmov.d.nan %s1, (63)0, %s0111; CHECK-NEXT: adds.w.zx %s0, %s1, (0)1112; CHECK-NEXT: b.l.t (, %s10)113 %3 = fcmp uno double %0, %1114 ret i1 %3115}116 117define zeroext i1 @setccueq(double, double) {118; CHECK-LABEL: setccueq:119; CHECK: # %bb.0:120; CHECK-NEXT: fcmp.d %s0, %s0, %s1121; CHECK-NEXT: or %s1, 0, (0)1122; CHECK-NEXT: cmov.d.eqnan %s1, (63)0, %s0123; CHECK-NEXT: adds.w.zx %s0, %s1, (0)1124; CHECK-NEXT: b.l.t (, %s10)125 %3 = fcmp ueq double %0, %1126 ret i1 %3127}128 129define zeroext i1 @setccune(double, double) {130; CHECK-LABEL: setccune:131; CHECK: # %bb.0:132; CHECK-NEXT: fcmp.d %s0, %s0, %s1133; CHECK-NEXT: or %s1, 0, (0)1134; CHECK-NEXT: cmov.d.nenan %s1, (63)0, %s0135; CHECK-NEXT: adds.w.zx %s0, %s1, (0)1136; CHECK-NEXT: b.l.t (, %s10)137 %3 = fcmp une double %0, %1138 ret i1 %3139}140 141define zeroext i1 @setccugt(double, double) {142; CHECK-LABEL: setccugt:143; CHECK: # %bb.0:144; CHECK-NEXT: fcmp.d %s0, %s0, %s1145; CHECK-NEXT: or %s1, 0, (0)1146; CHECK-NEXT: cmov.d.gtnan %s1, (63)0, %s0147; CHECK-NEXT: adds.w.zx %s0, %s1, (0)1148; CHECK-NEXT: b.l.t (, %s10)149 %3 = fcmp ugt double %0, %1150 ret i1 %3151}152 153define zeroext i1 @setccuge(double, double) {154; CHECK-LABEL: setccuge:155; CHECK: # %bb.0:156; CHECK-NEXT: fcmp.d %s0, %s0, %s1157; CHECK-NEXT: or %s1, 0, (0)1158; CHECK-NEXT: cmov.d.genan %s1, (63)0, %s0159; CHECK-NEXT: adds.w.zx %s0, %s1, (0)1160; CHECK-NEXT: b.l.t (, %s10)161 %3 = fcmp uge double %0, %1162 ret i1 %3163}164 165define zeroext i1 @setccult(double, double) {166; CHECK-LABEL: setccult:167; CHECK: # %bb.0:168; CHECK-NEXT: fcmp.d %s0, %s0, %s1169; CHECK-NEXT: or %s1, 0, (0)1170; CHECK-NEXT: cmov.d.ltnan %s1, (63)0, %s0171; CHECK-NEXT: adds.w.zx %s0, %s1, (0)1172; CHECK-NEXT: b.l.t (, %s10)173 %3 = fcmp ult double %0, %1174 ret i1 %3175}176 177define zeroext i1 @setccule(double, double) {178; CHECK-LABEL: setccule:179; CHECK: # %bb.0:180; CHECK-NEXT: fcmp.d %s0, %s0, %s1181; CHECK-NEXT: or %s1, 0, (0)1182; CHECK-NEXT: cmov.d.lenan %s1, (63)0, %s0183; CHECK-NEXT: adds.w.zx %s0, %s1, (0)1184; CHECK-NEXT: b.l.t (, %s10)185 %3 = fcmp ule double %0, %1186 ret i1 %3187}188