200 lines · plain
1; RUN: llc < %s -mtriple=ve-unknown-unknown | FileCheck %s2 3define zeroext i1 @setccaf(float, float) {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 float %0, 0.09 ret i1 %310}11 12define zeroext i1 @setccat(float, float) {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 float %0, 0.018 ret i1 %319}20 21define zeroext i1 @setccoeq(float, float) {22; CHECK-LABEL: setccoeq:23; CHECK: # %bb.0:24; CHECK-NEXT: lea.sl %s1, 025; CHECK-NEXT: fcmp.s %s0, %s0, %s126; CHECK-NEXT: or %s1, 0, (0)127; CHECK-NEXT: cmov.s.eq %s1, (63)0, %s028; CHECK-NEXT: adds.w.zx %s0, %s1, (0)129; CHECK-NEXT: b.l.t (, %s10)30 %3 = fcmp oeq float %0, 0.031 ret i1 %332}33 34define zeroext i1 @setccone(float, float) {35; CHECK-LABEL: setccone:36; CHECK: # %bb.0:37; CHECK-NEXT: lea.sl %s1, 038; CHECK-NEXT: fcmp.s %s0, %s0, %s139; CHECK-NEXT: or %s1, 0, (0)140; CHECK-NEXT: cmov.s.ne %s1, (63)0, %s041; CHECK-NEXT: adds.w.zx %s0, %s1, (0)142; CHECK-NEXT: b.l.t (, %s10)43 %3 = fcmp one float %0, 0.044 ret i1 %345}46 47define zeroext i1 @setccogt(float, float) {48; CHECK-LABEL: setccogt:49; CHECK: # %bb.0:50; CHECK-NEXT: lea.sl %s1, 051; CHECK-NEXT: fcmp.s %s0, %s0, %s152; CHECK-NEXT: or %s1, 0, (0)153; CHECK-NEXT: cmov.s.gt %s1, (63)0, %s054; CHECK-NEXT: adds.w.zx %s0, %s1, (0)155; CHECK-NEXT: b.l.t (, %s10)56 %3 = fcmp ogt float %0, 0.057 ret i1 %358}59 60define zeroext i1 @setccoge(float, float) {61; CHECK-LABEL: setccoge:62; CHECK: # %bb.0:63; CHECK-NEXT: lea.sl %s1, 064; CHECK-NEXT: fcmp.s %s0, %s0, %s165; CHECK-NEXT: or %s1, 0, (0)166; CHECK-NEXT: cmov.s.ge %s1, (63)0, %s067; CHECK-NEXT: adds.w.zx %s0, %s1, (0)168; CHECK-NEXT: b.l.t (, %s10)69 %3 = fcmp oge float %0, 0.070 ret i1 %371}72 73define zeroext i1 @setccolt(float, float) {74; CHECK-LABEL: setccolt:75; CHECK: # %bb.0:76; CHECK-NEXT: lea.sl %s1, 077; CHECK-NEXT: fcmp.s %s0, %s0, %s178; CHECK-NEXT: or %s1, 0, (0)179; CHECK-NEXT: cmov.s.lt %s1, (63)0, %s080; CHECK-NEXT: adds.w.zx %s0, %s1, (0)181; CHECK-NEXT: b.l.t (, %s10)82 %3 = fcmp olt float %0, 0.083 ret i1 %384}85 86define zeroext i1 @setccole(float, float) {87; CHECK-LABEL: setccole:88; CHECK: # %bb.0:89; CHECK-NEXT: lea.sl %s1, 090; CHECK-NEXT: fcmp.s %s0, %s0, %s191; CHECK-NEXT: or %s1, 0, (0)192; CHECK-NEXT: cmov.s.le %s1, (63)0, %s093; CHECK-NEXT: adds.w.zx %s0, %s1, (0)194; CHECK-NEXT: b.l.t (, %s10)95 %3 = fcmp ole float %0, 0.096 ret i1 %397}98 99define zeroext i1 @setccord(float, float) {100; CHECK-LABEL: setccord:101; CHECK: # %bb.0:102; CHECK-NEXT: fcmp.s %s0, %s0, %s0103; CHECK-NEXT: or %s1, 0, (0)1104; CHECK-NEXT: cmov.s.num %s1, (63)0, %s0105; CHECK-NEXT: adds.w.zx %s0, %s1, (0)1106; CHECK-NEXT: b.l.t (, %s10)107 %3 = fcmp ord float %0, 0.0108 ret i1 %3109}110 111define zeroext i1 @setccuno(float, float) {112; CHECK-LABEL: setccuno:113; CHECK: # %bb.0:114; CHECK-NEXT: fcmp.s %s0, %s0, %s0115; CHECK-NEXT: or %s1, 0, (0)1116; CHECK-NEXT: cmov.s.nan %s1, (63)0, %s0117; CHECK-NEXT: adds.w.zx %s0, %s1, (0)1118; CHECK-NEXT: b.l.t (, %s10)119 %3 = fcmp uno float %0, 0.0120 ret i1 %3121}122 123define zeroext i1 @setccueq(float, float) {124; CHECK-LABEL: setccueq:125; CHECK: # %bb.0:126; CHECK-NEXT: lea.sl %s1, 0127; CHECK-NEXT: fcmp.s %s0, %s0, %s1128; CHECK-NEXT: or %s1, 0, (0)1129; CHECK-NEXT: cmov.s.eqnan %s1, (63)0, %s0130; CHECK-NEXT: adds.w.zx %s0, %s1, (0)1131; CHECK-NEXT: b.l.t (, %s10)132 %3 = fcmp ueq float %0, 0.0133 ret i1 %3134}135 136define zeroext i1 @setccune(float, float) {137; CHECK-LABEL: setccune:138; CHECK: # %bb.0:139; CHECK-NEXT: lea.sl %s1, 0140; CHECK-NEXT: fcmp.s %s0, %s0, %s1141; CHECK-NEXT: or %s1, 0, (0)1142; CHECK-NEXT: cmov.s.nenan %s1, (63)0, %s0143; CHECK-NEXT: adds.w.zx %s0, %s1, (0)1144; CHECK-NEXT: b.l.t (, %s10)145 %3 = fcmp une float %0, 0.0146 ret i1 %3147}148 149define zeroext i1 @setccugt(float, float) {150; CHECK-LABEL: setccugt:151; CHECK: # %bb.0:152; CHECK-NEXT: lea.sl %s1, 0153; CHECK-NEXT: fcmp.s %s0, %s0, %s1154; CHECK-NEXT: or %s1, 0, (0)1155; CHECK-NEXT: cmov.s.gtnan %s1, (63)0, %s0156; CHECK-NEXT: adds.w.zx %s0, %s1, (0)1157; CHECK-NEXT: b.l.t (, %s10)158 %3 = fcmp ugt float %0, 0.0159 ret i1 %3160}161 162define zeroext i1 @setccuge(float, float) {163; CHECK-LABEL: setccuge:164; CHECK: # %bb.0:165; CHECK-NEXT: lea.sl %s1, 0166; CHECK-NEXT: fcmp.s %s0, %s0, %s1167; CHECK-NEXT: or %s1, 0, (0)1168; CHECK-NEXT: cmov.s.genan %s1, (63)0, %s0169; CHECK-NEXT: adds.w.zx %s0, %s1, (0)1170; CHECK-NEXT: b.l.t (, %s10)171 %3 = fcmp uge float %0, 0.0172 ret i1 %3173}174 175define zeroext i1 @setccult(float, float) {176; CHECK-LABEL: setccult:177; CHECK: # %bb.0:178; CHECK-NEXT: lea.sl %s1, 0179; CHECK-NEXT: fcmp.s %s0, %s0, %s1180; CHECK-NEXT: or %s1, 0, (0)1181; CHECK-NEXT: cmov.s.ltnan %s1, (63)0, %s0182; CHECK-NEXT: adds.w.zx %s0, %s1, (0)1183; CHECK-NEXT: b.l.t (, %s10)184 %3 = fcmp ult float %0, 0.0185 ret i1 %3186}187 188define zeroext i1 @setccule(float, float) {189; CHECK-LABEL: setccule:190; CHECK: # %bb.0:191; CHECK-NEXT: lea.sl %s1, 0192; CHECK-NEXT: fcmp.s %s0, %s0, %s1193; CHECK-NEXT: or %s1, 0, (0)1194; CHECK-NEXT: cmov.s.lenan %s1, (63)0, %s0195; CHECK-NEXT: adds.w.zx %s0, %s1, (0)1196; CHECK-NEXT: b.l.t (, %s10)197 %3 = fcmp ule float %0, 0.0198 ret i1 %3199}200