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