1; RUN: llc < %s -mtriple=ve-unknown-unknown | FileCheck %s 2 3define i32 @selectcceq(i32, i32, i32, i32) { 4; CHECK-LABEL: selectcceq: 5; CHECK: # %bb.0: 6; CHECK-NEXT: or %s1, 12, (0)1 7; CHECK-NEXT: cmps.w.sx %s0, %s0, %s1 8; CHECK-NEXT: cmov.w.eq %s3, %s2, %s0 9; CHECK-NEXT: or %s0, 0, %s3 10; CHECK-NEXT: b.l.t (, %s10) 11 %5 = icmp eq i32 %0, 12 12 %6 = select i1 %5, i32 %2, i32 %3 13 ret i32 %6 14} 15 16define i32 @selectccne(i32, i32, i32, i32) { 17; CHECK-LABEL: selectccne: 18; CHECK: # %bb.0: 19; CHECK-NEXT: or %s1, 12, (0)1 20; CHECK-NEXT: cmps.w.sx %s0, %s0, %s1 21; CHECK-NEXT: cmov.w.ne %s3, %s2, %s0 22; CHECK-NEXT: or %s0, 0, %s3 23; CHECK-NEXT: b.l.t (, %s10) 24 %5 = icmp ne i32 %0, 12 25 %6 = select i1 %5, i32 %2, i32 %3 26 ret i32 %6 27} 28 29define i32 @selectccsgt(i32, i32, i32, i32) { 30; CHECK-LABEL: selectccsgt: 31; CHECK: # %bb.0: 32; CHECK-NEXT: or %s1, 12, (0)1 33; CHECK-NEXT: cmps.w.sx %s0, %s0, %s1 34; CHECK-NEXT: cmov.w.gt %s3, %s2, %s0 35; CHECK-NEXT: or %s0, 0, %s3 36; CHECK-NEXT: b.l.t (, %s10) 37 %5 = icmp sgt i32 %0, 12 38 %6 = select i1 %5, i32 %2, i32 %3 39 ret i32 %6 40} 41 42define i32 @selectccsge(i32, i32, i32, i32) { 43; CHECK-LABEL: selectccsge: 44; CHECK: # %bb.0: 45; CHECK-NEXT: or %s1, 11, (0)1 46; CHECK-NEXT: cmps.w.sx %s0, %s0, %s1 47; CHECK-NEXT: cmov.w.gt %s3, %s2, %s0 48; CHECK-NEXT: or %s0, 0, %s3 49; CHECK-NEXT: b.l.t (, %s10) 50 %5 = icmp sge i32 %0, 12 51 %6 = select i1 %5, i32 %2, i32 %3 52 ret i32 %6 53} 54 55define i32 @selectccslt(i32, i32, i32, i32) { 56; CHECK-LABEL: selectccslt: 57; CHECK: # %bb.0: 58; CHECK-NEXT: or %s1, 12, (0)1 59; CHECK-NEXT: cmps.w.sx %s0, %s0, %s1 60; CHECK-NEXT: cmov.w.lt %s3, %s2, %s0 61; CHECK-NEXT: or %s0, 0, %s3 62; CHECK-NEXT: b.l.t (, %s10) 63 %5 = icmp slt i32 %0, 12 64 %6 = select i1 %5, i32 %2, i32 %3 65 ret i32 %6 66} 67 68define i32 @selectccsle(i32, i32, i32, i32) { 69; CHECK-LABEL: selectccsle: 70; CHECK: # %bb.0: 71; CHECK-NEXT: or %s1, 13, (0)1 72; CHECK-NEXT: cmps.w.sx %s0, %s0, %s1 73; CHECK-NEXT: cmov.w.lt %s3, %s2, %s0 74; CHECK-NEXT: or %s0, 0, %s3 75; CHECK-NEXT: b.l.t (, %s10) 76 %5 = icmp sle i32 %0, 12 77 %6 = select i1 %5, i32 %2, i32 %3 78 ret i32 %6 79} 80 81define i32 @selectccugt(i32, i32, i32, i32) { 82; CHECK-LABEL: selectccugt: 83; CHECK: # %bb.0: 84; CHECK-NEXT: or %s1, 12, (0)1 85; CHECK-NEXT: cmpu.w %s0, %s0, %s1 86; CHECK-NEXT: cmov.w.gt %s3, %s2, %s0 87; CHECK-NEXT: or %s0, 0, %s3 88; CHECK-NEXT: b.l.t (, %s10) 89 %5 = icmp ugt i32 %0, 12 90 %6 = select i1 %5, i32 %2, i32 %3 91 ret i32 %6 92} 93 94define i32 @selectccuge(i32, i32, i32, i32) { 95; CHECK-LABEL: selectccuge: 96; CHECK: # %bb.0: 97; CHECK-NEXT: or %s1, 11, (0)1 98; CHECK-NEXT: cmpu.w %s0, %s0, %s1 99; CHECK-NEXT: cmov.w.gt %s3, %s2, %s0 100; CHECK-NEXT: or %s0, 0, %s3 101; CHECK-NEXT: b.l.t (, %s10) 102 %5 = icmp uge i32 %0, 12 103 %6 = select i1 %5, i32 %2, i32 %3 104 ret i32 %6 105} 106 107define i32 @selectccult(i32, i32, i32, i32) { 108; CHECK-LABEL: selectccult: 109; CHECK: # %bb.0: 110; CHECK-NEXT: or %s1, 12, (0)1 111; CHECK-NEXT: cmpu.w %s0, %s0, %s1 112; CHECK-NEXT: cmov.w.lt %s3, %s2, %s0 113; CHECK-NEXT: or %s0, 0, %s3 114; CHECK-NEXT: b.l.t (, %s10) 115 %5 = icmp ult i32 %0, 12 116 %6 = select i1 %5, i32 %2, i32 %3 117 ret i32 %6 118} 119 120define i32 @selectccule(i32, i32, i32, i32) { 121; CHECK-LABEL: selectccule: 122; CHECK: # %bb.0: 123; CHECK-NEXT: or %s1, 13, (0)1 124; CHECK-NEXT: cmpu.w %s0, %s0, %s1 125; CHECK-NEXT: cmov.w.lt %s3, %s2, %s0 126; CHECK-NEXT: or %s0, 0, %s3 127; CHECK-NEXT: b.l.t (, %s10) 128 %5 = icmp ule i32 %0, 12 129 %6 = select i1 %5, i32 %2, i32 %3 130 ret i32 %6 131} 132 133define i32 @selectccugt2(i32, i32, i32, i32) { 134; CHECK-LABEL: selectccugt2: 135; CHECK: # %bb.0: 136; CHECK-NEXT: or %s1, 12, (0)1 137; CHECK-NEXT: cmpu.w %s0, %s0, %s1 138; CHECK-NEXT: cmov.w.gt %s3, %s2, %s0 139; CHECK-NEXT: or %s0, 0, %s3 140; CHECK-NEXT: b.l.t (, %s10) 141 %5 = icmp ugt i32 %0, 12 142 %6 = select i1 %5, i32 %2, i32 %3 143 ret i32 %6 144} 145 146define i32 @selectccuge2(i32, i32, i32, i32) { 147; CHECK-LABEL: selectccuge2: 148; CHECK: # %bb.0: 149; CHECK-NEXT: or %s1, 11, (0)1 150; CHECK-NEXT: cmpu.w %s0, %s0, %s1 151; CHECK-NEXT: cmov.w.gt %s3, %s2, %s0 152; CHECK-NEXT: or %s0, 0, %s3 153; CHECK-NEXT: b.l.t (, %s10) 154 %5 = icmp uge i32 %0, 12 155 %6 = select i1 %5, i32 %2, i32 %3 156 ret i32 %6 157} 158 159define i32 @selectccult2(i32, i32, i32, i32) { 160; CHECK-LABEL: selectccult2: 161; CHECK: # %bb.0: 162; CHECK-NEXT: or %s1, 12, (0)1 163; CHECK-NEXT: cmpu.w %s0, %s0, %s1 164; CHECK-NEXT: cmov.w.lt %s3, %s2, %s0 165; CHECK-NEXT: or %s0, 0, %s3 166; CHECK-NEXT: b.l.t (, %s10) 167 %5 = icmp ult i32 %0, 12 168 %6 = select i1 %5, i32 %2, i32 %3 169 ret i32 %6 170} 171 172define i32 @selectccule2(i32, i32, i32, i32) { 173; CHECK-LABEL: selectccule2: 174; CHECK: # %bb.0: 175; CHECK-NEXT: or %s1, 13, (0)1 176; CHECK-NEXT: cmpu.w %s0, %s0, %s1 177; CHECK-NEXT: cmov.w.lt %s3, %s2, %s0 178; CHECK-NEXT: or %s0, 0, %s3 179; CHECK-NEXT: b.l.t (, %s10) 180 %5 = icmp ule i32 %0, 12 181 %6 = select i1 %5, i32 %2, i32 %3 182 ret i32 %6 183} 184