1; RUN: llc < %s -mtriple=ve-unknown-unknown | FileCheck %s 2 3define zeroext i1 @setcceq(i32, i32) { 4; CHECK-LABEL: setcceq: 5; CHECK: # %bb.0: 6; CHECK-NEXT: cmps.w.sx %s0, %s0, %s1 7; CHECK-NEXT: or %s1, 0, (0)1 8; CHECK-NEXT: cmov.w.eq %s1, (63)0, %s0 9; CHECK-NEXT: adds.w.zx %s0, %s1, (0)1 10; CHECK-NEXT: b.l.t (, %s10) 11 %3 = icmp eq i32 %0, %1 12 ret i1 %3 13} 14 15define zeroext i1 @setccne(i32, i32) { 16; CHECK-LABEL: setccne: 17; CHECK: # %bb.0: 18; CHECK-NEXT: cmps.w.sx %s0, %s0, %s1 19; CHECK-NEXT: or %s1, 0, (0)1 20; CHECK-NEXT: cmov.w.ne %s1, (63)0, %s0 21; CHECK-NEXT: adds.w.zx %s0, %s1, (0)1 22; CHECK-NEXT: b.l.t (, %s10) 23 %3 = icmp ne i32 %0, %1 24 ret i1 %3 25} 26 27define zeroext i1 @setccugt(i32, i32) { 28; CHECK-LABEL: setccugt: 29; CHECK: # %bb.0: 30; CHECK-NEXT: cmpu.w %s0, %s0, %s1 31; CHECK-NEXT: or %s1, 0, (0)1 32; CHECK-NEXT: cmov.w.gt %s1, (63)0, %s0 33; CHECK-NEXT: adds.w.zx %s0, %s1, (0)1 34; CHECK-NEXT: b.l.t (, %s10) 35 %3 = icmp ugt i32 %0, %1 36 ret i1 %3 37} 38 39define zeroext i1 @setccuge(i32, i32) { 40; CHECK-LABEL: setccuge: 41; CHECK: # %bb.0: 42; CHECK-NEXT: cmpu.w %s0, %s0, %s1 43; CHECK-NEXT: or %s1, 0, (0)1 44; CHECK-NEXT: cmov.w.ge %s1, (63)0, %s0 45; CHECK-NEXT: adds.w.zx %s0, %s1, (0)1 46; CHECK-NEXT: b.l.t (, %s10) 47 %3 = icmp uge i32 %0, %1 48 ret i1 %3 49} 50 51define zeroext i1 @setccult(i32, i32) { 52; CHECK-LABEL: setccult: 53; CHECK: # %bb.0: 54; CHECK-NEXT: cmpu.w %s0, %s0, %s1 55; CHECK-NEXT: or %s1, 0, (0)1 56; CHECK-NEXT: cmov.w.lt %s1, (63)0, %s0 57; CHECK-NEXT: adds.w.zx %s0, %s1, (0)1 58; CHECK-NEXT: b.l.t (, %s10) 59 %3 = icmp ult i32 %0, %1 60 ret i1 %3 61} 62 63define zeroext i1 @setccule(i32, i32) { 64; CHECK-LABEL: setccule: 65; CHECK: # %bb.0: 66; CHECK-NEXT: cmpu.w %s0, %s0, %s1 67; CHECK-NEXT: or %s1, 0, (0)1 68; CHECK-NEXT: cmov.w.le %s1, (63)0, %s0 69; CHECK-NEXT: adds.w.zx %s0, %s1, (0)1 70; CHECK-NEXT: b.l.t (, %s10) 71 %3 = icmp ule i32 %0, %1 72 ret i1 %3 73} 74 75define zeroext i1 @setccsgt(i32, i32) { 76; CHECK-LABEL: setccsgt: 77; CHECK: # %bb.0: 78; CHECK-NEXT: cmps.w.sx %s0, %s0, %s1 79; CHECK-NEXT: or %s1, 0, (0)1 80; CHECK-NEXT: cmov.w.gt %s1, (63)0, %s0 81; CHECK-NEXT: adds.w.zx %s0, %s1, (0)1 82; CHECK-NEXT: b.l.t (, %s10) 83 %3 = icmp sgt i32 %0, %1 84 ret i1 %3 85} 86 87define zeroext i1 @setccsge(i32, i32) { 88; CHECK-LABEL: setccsge: 89; CHECK: # %bb.0: 90; CHECK-NEXT: cmps.w.sx %s0, %s0, %s1 91; CHECK-NEXT: or %s1, 0, (0)1 92; CHECK-NEXT: cmov.w.ge %s1, (63)0, %s0 93; CHECK-NEXT: adds.w.zx %s0, %s1, (0)1 94; CHECK-NEXT: b.l.t (, %s10) 95 %3 = icmp sge i32 %0, %1 96 ret i1 %3 97} 98 99define zeroext i1 @setccslt(i32, i32) { 100; CHECK-LABEL: setccslt: 101; CHECK: # %bb.0: 102; CHECK-NEXT: cmps.w.sx %s0, %s0, %s1 103; CHECK-NEXT: or %s1, 0, (0)1 104; CHECK-NEXT: cmov.w.lt %s1, (63)0, %s0 105; CHECK-NEXT: adds.w.zx %s0, %s1, (0)1 106; CHECK-NEXT: b.l.t (, %s10) 107 %3 = icmp slt i32 %0, %1 108 ret i1 %3 109} 110 111define zeroext i1 @setccsle(i32, i32) { 112; CHECK-LABEL: setccsle: 113; CHECK: # %bb.0: 114; CHECK-NEXT: cmps.w.sx %s0, %s0, %s1 115; CHECK-NEXT: or %s1, 0, (0)1 116; CHECK-NEXT: cmov.w.le %s1, (63)0, %s0 117; CHECK-NEXT: adds.w.zx %s0, %s1, (0)1 118; CHECK-NEXT: b.l.t (, %s10) 119 %3 = icmp sle i32 %0, %1 120 ret i1 %3 121} 122