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