[AArch64,ELF] Restrict MOVZ/MOVK to non-PIC large code model (#70178)
[llvm-project.git] / llvm / test / CodeGen / VE / Scalar / setcci64.ll
blob63da7a60792915d1370fae250ac3c2a3de4f6d76
1 ; RUN: llc < %s -mtriple=ve-unknown-unknown | FileCheck %s
3 define zeroext i1 @setcceq(i64, i64) {
4 ; CHECK-LABEL: setcceq:
5 ; CHECK:       # %bb.0:
6 ; CHECK-NEXT:    cmps.l %s0, %s0, %s1
7 ; CHECK-NEXT:    or %s1, 0, (0)1
8 ; CHECK-NEXT:    cmov.l.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 i64 %0, %1
12   ret i1 %3
15 define zeroext i1 @setccne(i64, i64) {
16 ; CHECK-LABEL: setccne:
17 ; CHECK:       # %bb.0:
18 ; CHECK-NEXT:    cmps.l %s0, %s0, %s1
19 ; CHECK-NEXT:    or %s1, 0, (0)1
20 ; CHECK-NEXT:    cmov.l.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 i64 %0, %1
24   ret i1 %3
27 define zeroext i1 @setccugt(i64, i64) {
28 ; CHECK-LABEL: setccugt:
29 ; CHECK:       # %bb.0:
30 ; CHECK-NEXT:    cmpu.l %s0, %s0, %s1
31 ; CHECK-NEXT:    or %s1, 0, (0)1
32 ; CHECK-NEXT:    cmov.l.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 i64 %0, %1
36   ret i1 %3
39 define zeroext i1 @setccuge(i64, i64) {
40 ; CHECK-LABEL: setccuge:
41 ; CHECK:       # %bb.0:
42 ; CHECK-NEXT:    cmpu.l %s0, %s0, %s1
43 ; CHECK-NEXT:    or %s1, 0, (0)1
44 ; CHECK-NEXT:    cmov.l.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 i64 %0, %1
48   ret i1 %3
51 define zeroext i1 @setccult(i64, i64) {
52 ; CHECK-LABEL: setccult:
53 ; CHECK:       # %bb.0:
54 ; CHECK-NEXT:    cmpu.l %s0, %s0, %s1
55 ; CHECK-NEXT:    or %s1, 0, (0)1
56 ; CHECK-NEXT:    cmov.l.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 i64 %0, %1
60   ret i1 %3
63 define zeroext i1 @setccule(i64, i64) {
64 ; CHECK-LABEL: setccule:
65 ; CHECK:       # %bb.0:
66 ; CHECK-NEXT:    cmpu.l %s0, %s0, %s1
67 ; CHECK-NEXT:    or %s1, 0, (0)1
68 ; CHECK-NEXT:    cmov.l.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 i64 %0, %1
72   ret i1 %3
75 define zeroext i1 @setccsgt(i64, i64) {
76 ; CHECK-LABEL: setccsgt:
77 ; CHECK:       # %bb.0:
78 ; CHECK-NEXT:    cmps.l %s0, %s0, %s1
79 ; CHECK-NEXT:    or %s1, 0, (0)1
80 ; CHECK-NEXT:    cmov.l.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 i64 %0, %1
84   ret i1 %3
87 define zeroext i1 @setccsge(i64, i64) {
88 ; CHECK-LABEL: setccsge:
89 ; CHECK:       # %bb.0:
90 ; CHECK-NEXT:    cmps.l %s0, %s0, %s1
91 ; CHECK-NEXT:    or %s1, 0, (0)1
92 ; CHECK-NEXT:    cmov.l.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 i64 %0, %1
96   ret i1 %3
99 define zeroext i1 @setccslt(i64, i64) {
100 ; CHECK-LABEL: setccslt:
101 ; CHECK:       # %bb.0:
102 ; CHECK-NEXT:    cmps.l %s0, %s0, %s1
103 ; CHECK-NEXT:    or %s1, 0, (0)1
104 ; CHECK-NEXT:    cmov.l.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 i64 %0, %1
108   ret i1 %3
111 define zeroext i1 @setccsle(i64, i64) {
112 ; CHECK-LABEL: setccsle:
113 ; CHECK:       # %bb.0:
114 ; CHECK-NEXT:    cmps.l %s0, %s0, %s1
115 ; CHECK-NEXT:    or %s1, 0, (0)1
116 ; CHECK-NEXT:    cmov.l.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 i64 %0, %1
120   ret i1 %3