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