1; RUN: llc < %s -mtriple=ve-unknown-unknown | FileCheck %s 2 3define float @selectccaf(float, float, float, float) { 4; CHECK-LABEL: selectccaf: 5; CHECK: # %bb.0: 6; CHECK-NEXT: or %s0, 0, %s3 7; CHECK-NEXT: b.l.t (, %s10) 8 %5 = fcmp false float %0, 0.0 9 %6 = select i1 %5, float %2, float %3 10 ret float %6 11} 12 13define float @selectccat(float, float, float, float) { 14; CHECK-LABEL: selectccat: 15; CHECK: # %bb.0: 16; CHECK-NEXT: or %s0, 0, %s2 17; CHECK-NEXT: b.l.t (, %s10) 18 %5 = fcmp true float %0, 0.0 19 %6 = select i1 %5, float %2, float %3 20 ret float %6 21} 22 23define float @selectccoeq(float, float, float, float) { 24; CHECK-LABEL: selectccoeq: 25; CHECK: # %bb.0: 26; CHECK-NEXT: cmov.s.eq %s3, %s2, %s0 27; CHECK-NEXT: or %s0, 0, %s3 28; CHECK-NEXT: b.l.t (, %s10) 29 %5 = fcmp oeq float %0, 0.0 30 %6 = select i1 %5, float %2, float %3 31 ret float %6 32} 33 34define float @selectccone(float, float, float, float) { 35; CHECK-LABEL: selectccone: 36; CHECK: # %bb.0: 37; CHECK-NEXT: cmov.s.ne %s3, %s2, %s0 38; CHECK-NEXT: or %s0, 0, %s3 39; CHECK-NEXT: b.l.t (, %s10) 40 %5 = fcmp one float %0, 0.0 41 %6 = select i1 %5, float %2, float %3 42 ret float %6 43} 44 45define float @selectccogt(float, float, float, float) { 46; CHECK-LABEL: selectccogt: 47; CHECK: # %bb.0: 48; CHECK-NEXT: cmov.s.gt %s3, %s2, %s0 49; CHECK-NEXT: or %s0, 0, %s3 50; CHECK-NEXT: b.l.t (, %s10) 51 %5 = fcmp ogt float %0, 0.0 52 %6 = select i1 %5, float %2, float %3 53 ret float %6 54} 55 56define float @selectccoge(float, float, float, float) { 57; CHECK-LABEL: selectccoge: 58; CHECK: # %bb.0: 59; CHECK-NEXT: cmov.s.ge %s3, %s2, %s0 60; CHECK-NEXT: or %s0, 0, %s3 61; CHECK-NEXT: b.l.t (, %s10) 62 %5 = fcmp oge float %0, 0.0 63 %6 = select i1 %5, float %2, float %3 64 ret float %6 65} 66 67define float @selectccolt(float, float, float, float) { 68; CHECK-LABEL: selectccolt: 69; CHECK: # %bb.0: 70; CHECK-NEXT: cmov.s.lt %s3, %s2, %s0 71; CHECK-NEXT: or %s0, 0, %s3 72; CHECK-NEXT: b.l.t (, %s10) 73 %5 = fcmp olt float %0, 0.0 74 %6 = select i1 %5, float %2, float %3 75 ret float %6 76} 77 78define float @selectccole(float, float, float, float) { 79; CHECK-LABEL: selectccole: 80; CHECK: # %bb.0: 81; CHECK-NEXT: cmov.s.le %s3, %s2, %s0 82; CHECK-NEXT: or %s0, 0, %s3 83; CHECK-NEXT: b.l.t (, %s10) 84 %5 = fcmp ole float %0, 0.0 85 %6 = select i1 %5, float %2, float %3 86 ret float %6 87} 88 89define float @selectccord(float, float, float, float) { 90; CHECK-LABEL: selectccord: 91; CHECK: # %bb.0: 92; CHECK-NEXT: fcmp.s %s0, %s0, %s0 93; CHECK-NEXT: cmov.s.num %s3, %s2, %s0 94; CHECK-NEXT: or %s0, 0, %s3 95; CHECK-NEXT: b.l.t (, %s10) 96 %5 = fcmp ord float %0, 0.0 97 %6 = select i1 %5, float %2, float %3 98 ret float %6 99} 100 101define float @selectccuno(float, float, float, float) { 102; CHECK-LABEL: selectccuno: 103; CHECK: # %bb.0: 104; CHECK-NEXT: fcmp.s %s0, %s0, %s0 105; CHECK-NEXT: cmov.s.nan %s3, %s2, %s0 106; CHECK-NEXT: or %s0, 0, %s3 107; CHECK-NEXT: b.l.t (, %s10) 108 %5 = fcmp uno float %0, 0.0 109 %6 = select i1 %5, float %2, float %3 110 ret float %6 111} 112 113define float @selectccueq(float, float, float, float) { 114; CHECK-LABEL: selectccueq: 115; CHECK: # %bb.0: 116; CHECK-NEXT: cmov.s.eqnan %s3, %s2, %s0 117; CHECK-NEXT: or %s0, 0, %s3 118; CHECK-NEXT: b.l.t (, %s10) 119 %5 = fcmp ueq float %0, 0.0 120 %6 = select i1 %5, float %2, float %3 121 ret float %6 122} 123 124define float @selectccune(float, float, float, float) { 125; CHECK-LABEL: selectccune: 126; CHECK: # %bb.0: 127; CHECK-NEXT: cmov.s.nenan %s3, %s2, %s0 128; CHECK-NEXT: or %s0, 0, %s3 129; CHECK-NEXT: b.l.t (, %s10) 130 %5 = fcmp une float %0, 0.0 131 %6 = select i1 %5, float %2, float %3 132 ret float %6 133} 134 135define float @selectccugt(float, float, float, float) { 136; CHECK-LABEL: selectccugt: 137; CHECK: # %bb.0: 138; CHECK-NEXT: cmov.s.gtnan %s3, %s2, %s0 139; CHECK-NEXT: or %s0, 0, %s3 140; CHECK-NEXT: b.l.t (, %s10) 141 %5 = fcmp ugt float %0, 0.0 142 %6 = select i1 %5, float %2, float %3 143 ret float %6 144} 145 146define float @selectccuge(float, float, float, float) { 147; CHECK-LABEL: selectccuge: 148; CHECK: # %bb.0: 149; CHECK-NEXT: cmov.s.genan %s3, %s2, %s0 150; CHECK-NEXT: or %s0, 0, %s3 151; CHECK-NEXT: b.l.t (, %s10) 152 %5 = fcmp uge float %0, 0.0 153 %6 = select i1 %5, float %2, float %3 154 ret float %6 155} 156 157define float @selectccult(float, float, float, float) { 158; CHECK-LABEL: selectccult: 159; CHECK: # %bb.0: 160; CHECK-NEXT: cmov.s.ltnan %s3, %s2, %s0 161; CHECK-NEXT: or %s0, 0, %s3 162; CHECK-NEXT: b.l.t (, %s10) 163 %5 = fcmp ult float %0, 0.0 164 %6 = select i1 %5, float %2, float %3 165 ret float %6 166} 167 168define float @selectccule(float, float, float, float) { 169; CHECK-LABEL: selectccule: 170; CHECK: # %bb.0: 171; CHECK-NEXT: cmov.s.lenan %s3, %s2, %s0 172; CHECK-NEXT: or %s0, 0, %s3 173; CHECK-NEXT: b.l.t (, %s10) 174 %5 = fcmp ule float %0, 0.0 175 %6 = select i1 %5, float %2, float %3 176 ret float %6 177} 178