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