170 lines · plain
1; RUN: llc < %s -mtriple=ve-unknown-unknown | FileCheck %s2 3define i32 @selectcceq(i32, i32, i32, i32) {4; CHECK-LABEL: selectcceq:5; CHECK: # %bb.0:6; CHECK-NEXT: cmpu.w %s0, %s0, %s17; CHECK-NEXT: cmov.w.eq %s3, %s2, %s08; CHECK-NEXT: or %s0, 0, %s39; CHECK-NEXT: b.l.t (, %s10)10 %5 = icmp eq i32 %0, %111 %6 = select i1 %5, i32 %2, i32 %312 ret i32 %613}14 15define i32 @selectccne(i32, i32, i32, i32) {16; CHECK-LABEL: selectccne:17; CHECK: # %bb.0:18; CHECK-NEXT: cmpu.w %s0, %s0, %s119; CHECK-NEXT: cmov.w.ne %s3, %s2, %s020; CHECK-NEXT: or %s0, 0, %s321; CHECK-NEXT: b.l.t (, %s10)22 %5 = icmp ne i32 %0, %123 %6 = select i1 %5, i32 %2, i32 %324 ret i32 %625}26 27define i32 @selectccsgt(i32, i32, i32, i32) {28; CHECK-LABEL: selectccsgt:29; CHECK: # %bb.0:30; CHECK-NEXT: cmps.w.zx %s0, %s0, %s131; CHECK-NEXT: cmov.w.gt %s3, %s2, %s032; CHECK-NEXT: or %s0, 0, %s333; CHECK-NEXT: b.l.t (, %s10)34 %5 = icmp sgt i32 %0, %135 %6 = select i1 %5, i32 %2, i32 %336 ret i32 %637}38 39define i32 @selectccsge(i32, i32, i32, i32) {40; CHECK-LABEL: selectccsge:41; CHECK: # %bb.0:42; CHECK-NEXT: cmps.w.zx %s0, %s0, %s143; CHECK-NEXT: cmov.w.ge %s3, %s2, %s044; CHECK-NEXT: or %s0, 0, %s345; CHECK-NEXT: b.l.t (, %s10)46 %5 = icmp sge i32 %0, %147 %6 = select i1 %5, i32 %2, i32 %348 ret i32 %649}50 51define i32 @selectccslt(i32, i32, i32, i32) {52; CHECK-LABEL: selectccslt:53; CHECK: # %bb.0:54; CHECK-NEXT: cmps.w.zx %s0, %s0, %s155; CHECK-NEXT: cmov.w.lt %s3, %s2, %s056; CHECK-NEXT: or %s0, 0, %s357; CHECK-NEXT: b.l.t (, %s10)58 %5 = icmp slt i32 %0, %159 %6 = select i1 %5, i32 %2, i32 %360 ret i32 %661}62 63define i32 @selectccsle(i32, i32, i32, i32) {64; CHECK-LABEL: selectccsle:65; CHECK: # %bb.0:66; CHECK-NEXT: cmps.w.zx %s0, %s0, %s167; CHECK-NEXT: cmov.w.le %s3, %s2, %s068; CHECK-NEXT: or %s0, 0, %s369; CHECK-NEXT: b.l.t (, %s10)70 %5 = icmp sle i32 %0, %171 %6 = select i1 %5, i32 %2, i32 %372 ret i32 %673}74 75define i32 @selectccugt(i32, i32, i32, i32) {76; CHECK-LABEL: selectccugt:77; CHECK: # %bb.0:78; CHECK-NEXT: cmpu.w %s0, %s0, %s179; CHECK-NEXT: cmov.w.gt %s3, %s2, %s080; CHECK-NEXT: or %s0, 0, %s381; CHECK-NEXT: b.l.t (, %s10)82 %5 = icmp ugt i32 %0, %183 %6 = select i1 %5, i32 %2, i32 %384 ret i32 %685}86 87define i32 @selectccuge(i32, i32, i32, i32) {88; CHECK-LABEL: selectccuge:89; CHECK: # %bb.0:90; CHECK-NEXT: cmpu.w %s0, %s0, %s191; CHECK-NEXT: cmov.w.ge %s3, %s2, %s092; CHECK-NEXT: or %s0, 0, %s393; CHECK-NEXT: b.l.t (, %s10)94 %5 = icmp uge i32 %0, %195 %6 = select i1 %5, i32 %2, i32 %396 ret i32 %697}98 99define i32 @selectccult(i32, i32, i32, i32) {100; CHECK-LABEL: selectccult:101; CHECK: # %bb.0:102; CHECK-NEXT: cmpu.w %s0, %s0, %s1103; CHECK-NEXT: cmov.w.lt %s3, %s2, %s0104; CHECK-NEXT: or %s0, 0, %s3105; CHECK-NEXT: b.l.t (, %s10)106 %5 = icmp ult i32 %0, %1107 %6 = select i1 %5, i32 %2, i32 %3108 ret i32 %6109}110 111define i32 @selectccule(i32, i32, i32, i32) {112; CHECK-LABEL: selectccule:113; CHECK: # %bb.0:114; CHECK-NEXT: cmpu.w %s0, %s0, %s1115; CHECK-NEXT: cmov.w.le %s3, %s2, %s0116; CHECK-NEXT: or %s0, 0, %s3117; CHECK-NEXT: b.l.t (, %s10)118 %5 = icmp ule i32 %0, %1119 %6 = select i1 %5, i32 %2, i32 %3120 ret i32 %6121}122 123define i32 @selectccugt2(i32, i32, i32, i32) {124; CHECK-LABEL: selectccugt2:125; CHECK: # %bb.0:126; CHECK-NEXT: cmpu.w %s0, %s0, %s1127; CHECK-NEXT: cmov.w.gt %s3, %s2, %s0128; CHECK-NEXT: or %s0, 0, %s3129; CHECK-NEXT: b.l.t (, %s10)130 %5 = icmp ugt i32 %0, %1131 %6 = select i1 %5, i32 %2, i32 %3132 ret i32 %6133}134 135define i32 @selectccuge2(i32, i32, i32, i32) {136; CHECK-LABEL: selectccuge2:137; CHECK: # %bb.0:138; CHECK-NEXT: cmpu.w %s0, %s0, %s1139; CHECK-NEXT: cmov.w.ge %s3, %s2, %s0140; CHECK-NEXT: or %s0, 0, %s3141; CHECK-NEXT: b.l.t (, %s10)142 %5 = icmp uge i32 %0, %1143 %6 = select i1 %5, i32 %2, i32 %3144 ret i32 %6145}146 147define i32 @selectccult2(i32, i32, i32, i32) {148; CHECK-LABEL: selectccult2:149; CHECK: # %bb.0:150; CHECK-NEXT: cmpu.w %s0, %s0, %s1151; CHECK-NEXT: cmov.w.lt %s3, %s2, %s0152; CHECK-NEXT: or %s0, 0, %s3153; CHECK-NEXT: b.l.t (, %s10)154 %5 = icmp ult i32 %0, %1155 %6 = select i1 %5, i32 %2, i32 %3156 ret i32 %6157}158 159define i32 @selectccule2(i32, i32, i32, i32) {160; CHECK-LABEL: selectccule2:161; CHECK: # %bb.0:162; CHECK-NEXT: cmpu.w %s0, %s0, %s1163; CHECK-NEXT: cmov.w.le %s3, %s2, %s0164; CHECK-NEXT: or %s0, 0, %s3165; CHECK-NEXT: b.l.t (, %s10)166 %5 = icmp ule i32 %0, %1167 %6 = select i1 %5, i32 %2, i32 %3168 ret i32 %6169}170