1 ; RUN: llc < %s -mtriple=ve-unknown-unknown | FileCheck %s
3 define zeroext i1 @setcceq(i32, i32) {
4 ; CHECK-LABEL: setcceq:
6 ; CHECK-NEXT: or %s1, 12, (0)1
7 ; CHECK-NEXT: cmps.w.sx %s0, %s0, %s1
8 ; CHECK-NEXT: or %s1, 0, (0)1
9 ; CHECK-NEXT: cmov.w.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 i32 %0, 12
16 define zeroext i1 @setccne(i32, i32) {
17 ; CHECK-LABEL: setccne:
19 ; CHECK-NEXT: or %s1, 12, (0)1
20 ; CHECK-NEXT: cmps.w.sx %s0, %s0, %s1
21 ; CHECK-NEXT: or %s1, 0, (0)1
22 ; CHECK-NEXT: cmov.w.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 i32 %0, 12
29 define zeroext i1 @setccugt(i32, i32) {
30 ; CHECK-LABEL: setccugt:
32 ; CHECK-NEXT: or %s1, 12, (0)1
33 ; CHECK-NEXT: cmpu.w %s0, %s0, %s1
34 ; CHECK-NEXT: or %s1, 0, (0)1
35 ; CHECK-NEXT: cmov.w.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 i32 %0, 12
42 define zeroext i1 @setccuge(i32, i32) {
43 ; CHECK-LABEL: setccuge:
45 ; CHECK-NEXT: or %s1, 11, (0)1
46 ; CHECK-NEXT: cmpu.w %s0, %s0, %s1
47 ; CHECK-NEXT: or %s1, 0, (0)1
48 ; CHECK-NEXT: cmov.w.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 i32 %0, 12
55 define zeroext i1 @setccult(i32, i32) {
56 ; CHECK-LABEL: setccult:
58 ; CHECK-NEXT: or %s1, 12, (0)1
59 ; CHECK-NEXT: cmpu.w %s0, %s0, %s1
60 ; CHECK-NEXT: or %s1, 0, (0)1
61 ; CHECK-NEXT: cmov.w.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 i32 %0, 12
68 define zeroext i1 @setccule(i32, i32) {
69 ; CHECK-LABEL: setccule:
71 ; CHECK-NEXT: or %s1, 13, (0)1
72 ; CHECK-NEXT: cmpu.w %s0, %s0, %s1
73 ; CHECK-NEXT: or %s1, 0, (0)1
74 ; CHECK-NEXT: cmov.w.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 i32 %0, 12
81 define zeroext i1 @setccsgt(i32, i32) {
82 ; CHECK-LABEL: setccsgt:
84 ; CHECK-NEXT: or %s1, 12, (0)1
85 ; CHECK-NEXT: cmps.w.sx %s0, %s0, %s1
86 ; CHECK-NEXT: or %s1, 0, (0)1
87 ; CHECK-NEXT: cmov.w.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 i32 %0, 12
94 define zeroext i1 @setccsge(i32, i32) {
95 ; CHECK-LABEL: setccsge:
97 ; CHECK-NEXT: or %s1, 11, (0)1
98 ; CHECK-NEXT: cmps.w.sx %s0, %s0, %s1
99 ; CHECK-NEXT: or %s1, 0, (0)1
100 ; CHECK-NEXT: cmov.w.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 i32 %0, 12
107 define zeroext i1 @setccslt(i32, i32) {
108 ; CHECK-LABEL: setccslt:
110 ; CHECK-NEXT: or %s1, 12, (0)1
111 ; CHECK-NEXT: cmps.w.sx %s0, %s0, %s1
112 ; CHECK-NEXT: or %s1, 0, (0)1
113 ; CHECK-NEXT: cmov.w.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 i32 %0, 12
120 define zeroext i1 @setccsle(i32, i32) {
121 ; CHECK-LABEL: setccsle:
123 ; CHECK-NEXT: or %s1, 13, (0)1
124 ; CHECK-NEXT: cmps.w.sx %s0, %s0, %s1
125 ; CHECK-NEXT: or %s1, 0, (0)1
126 ; CHECK-NEXT: cmov.w.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 i32 %0, 12