1 ; RUN: llc < %s -mtriple=ve-unknown-unknown | FileCheck %s
3 define zeroext i1 @setcceq(i32, i32) {
4 ; CHECK-LABEL: setcceq:
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
15 define zeroext i1 @setccne(i32, i32) {
16 ; CHECK-LABEL: setccne:
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
27 define zeroext i1 @setccugt(i32, i32) {
28 ; CHECK-LABEL: setccugt:
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
39 define zeroext i1 @setccuge(i32, i32) {
40 ; CHECK-LABEL: setccuge:
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
51 define zeroext i1 @setccult(i32, i32) {
52 ; CHECK-LABEL: setccult:
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
63 define zeroext i1 @setccule(i32, i32) {
64 ; CHECK-LABEL: setccule:
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
75 define zeroext i1 @setccsgt(i32, i32) {
76 ; CHECK-LABEL: setccsgt:
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
87 define zeroext i1 @setccsge(i32, i32) {
88 ; CHECK-LABEL: setccsge:
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
99 define zeroext i1 @setccslt(i32, i32) {
100 ; CHECK-LABEL: setccslt:
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
111 define zeroext i1 @setccsle(i32, i32) {
112 ; CHECK-LABEL: setccsle:
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