xref: /llvm-project/llvm/test/CodeGen/Lanai/comparisons_i64.ll (revision 99909e93086e8d4e97a22ced0509678d04868037)
150d4e989SJacques Pienaar; RUN: llc < %s | FileCheck %s
250d4e989SJacques Pienaar
350d4e989SJacques Pienaar; Test that basic 64-bit integer comparison operations assemble as expected.
450d4e989SJacques Pienaar
550d4e989SJacques Pienaartarget datalayout = "E-m:e-p:32:32-i64:64-a:0:32-n32-S64"
650d4e989SJacques Pienaartarget triple = "lanai"
750d4e989SJacques Pienaar
850d4e989SJacques Pienaar; CHECK-LABEL: eq_i64:
950d4e989SJacques Pienaar; CHECK: xor
1050d4e989SJacques Pienaar; CHECK: xor
1150d4e989SJacques Pienaar; CHECK: or.f
1250d4e989SJacques Pienaar; CHECK-NEXT: seq
1350d4e989SJacques Pienaardefine i32 @eq_i64(i64 inreg %x, i64 inreg %y) {
1450d4e989SJacques Pienaar  %a = icmp eq i64 %x, %y
1550d4e989SJacques Pienaar  %b = zext i1 %a to i32
1650d4e989SJacques Pienaar  ret i32 %b
1750d4e989SJacques Pienaar}
1850d4e989SJacques Pienaar
1950d4e989SJacques Pienaar; CHECK-LABEL: ne_i64:
2050d4e989SJacques Pienaar; CHECK: xor
2150d4e989SJacques Pienaar; CHECK: xor
2250d4e989SJacques Pienaar; CHECK: or.f
2350d4e989SJacques Pienaar; CHECK-NEXT: sne
2450d4e989SJacques Pienaardefine i32 @ne_i64(i64 inreg %x, i64 inreg %y) {
2550d4e989SJacques Pienaar  %a = icmp ne i64 %x, %y
2650d4e989SJacques Pienaar  %b = zext i1 %a to i32
2750d4e989SJacques Pienaar  ret i32 %b
2850d4e989SJacques Pienaar}
2950d4e989SJacques Pienaar
3050d4e989SJacques Pienaar; CHECK-LABEL: slt_i64:
31*99909e93SAmaury Sechet; CHECK: sub.f %r6, %r18, %r0
32*99909e93SAmaury Sechet; CHECK-NEXT: slt %r3
33*99909e93SAmaury Sechet; CHECK-NEXT: sub.f %r7, %r19, %r0
34*99909e93SAmaury Sechet; CHECK-NEXT: sult %r9
35*99909e93SAmaury Sechet; CHECK-NEXT: sub.f %r6, %r18, %r0
36*99909e93SAmaury Sechet; CHECK-NEXT: sel.eq %r9, %r3, %rv
3750d4e989SJacques Pienaardefine i32 @slt_i64(i64 inreg %x, i64 inreg %y) {
3850d4e989SJacques Pienaar  %a = icmp slt i64 %x, %y
3950d4e989SJacques Pienaar  %b = zext i1 %a to i32
4050d4e989SJacques Pienaar  ret i32 %b
4150d4e989SJacques Pienaar}
4250d4e989SJacques Pienaar
4350d4e989SJacques Pienaar; CHECK-LABEL: sle_i64:
44*99909e93SAmaury Sechet; CHECK: sub.f %r6, %r18, %r0
45*99909e93SAmaury Sechet; CHECK-NEXT: sle %r3
46*99909e93SAmaury Sechet; CHECK-NEXT: sub.f %r7, %r19, %r0
47*99909e93SAmaury Sechet; CHECK-NEXT: sule %r9
48*99909e93SAmaury Sechet; CHECK-NEXT: sub.f %r6, %r18, %r0
49*99909e93SAmaury Sechet; CHECK-NEXT: sel.eq %r9, %r3, %rv
5050d4e989SJacques Pienaardefine i32 @sle_i64(i64 inreg %x, i64 inreg %y) {
5150d4e989SJacques Pienaar  %a = icmp sle i64 %x, %y
5250d4e989SJacques Pienaar  %b = zext i1 %a to i32
5350d4e989SJacques Pienaar  ret i32 %b
5450d4e989SJacques Pienaar}
5550d4e989SJacques Pienaar
5650d4e989SJacques Pienaar; CHECK-LABEL: ult_i64:
57*99909e93SAmaury Sechet; CHECK: sub.f %r6, %r18, %r0
58*99909e93SAmaury Sechet; CHECK-NEXT: sult %r3
59*99909e93SAmaury Sechet; CHECK-NEXT: sub.f %r7, %r19, %r0
60*99909e93SAmaury Sechet; CHECK-NEXT: sult %r9
61*99909e93SAmaury Sechet; CHECK-NEXT: sub.f %r6, %r18, %r0
62*99909e93SAmaury Sechet; CHECK-NEXT: sel.eq %r9, %r3, %rv
6350d4e989SJacques Pienaardefine i32 @ult_i64(i64 inreg %x, i64 inreg %y) {
6450d4e989SJacques Pienaar  %a = icmp ult i64 %x, %y
6550d4e989SJacques Pienaar  %b = zext i1 %a to i32
6650d4e989SJacques Pienaar  ret i32 %b
6750d4e989SJacques Pienaar}
6850d4e989SJacques Pienaar
6950d4e989SJacques Pienaar; CHECK-LABEL: ule_i64:
70*99909e93SAmaury Sechet; CHECK: sub.f %r6, %r18, %r0
71*99909e93SAmaury Sechet; CHECK-NEXT: sule %r3
72*99909e93SAmaury Sechet; CHECK-NEXT: sub.f %r7, %r19, %r0
73*99909e93SAmaury Sechet; CHECK-NEXT: sule %r9
74*99909e93SAmaury Sechet; CHECK-NEXT: sub.f %r6, %r18, %r0
75*99909e93SAmaury Sechet; CHECK-NEXT: sel.eq %r9, %r3, %rv
7650d4e989SJacques Pienaardefine i32 @ule_i64(i64 inreg %x, i64 inreg %y) {
7750d4e989SJacques Pienaar  %a = icmp ule i64 %x, %y
7850d4e989SJacques Pienaar  %b = zext i1 %a to i32
7950d4e989SJacques Pienaar  ret i32 %b
8050d4e989SJacques Pienaar}
8150d4e989SJacques Pienaar
8250d4e989SJacques Pienaar; CHECK-LABEL: sgt_i64:
83*99909e93SAmaury Sechet; CHECK: sub.f %r6, %r18, %r0
84*99909e93SAmaury Sechet; CHECK-NEXT: sgt %r3
85*99909e93SAmaury Sechet; CHECK-NEXT: sub.f %r7, %r19, %r0
86*99909e93SAmaury Sechet; CHECK-NEXT: sugt %r9
87*99909e93SAmaury Sechet; CHECK-NEXT: sub.f %r6, %r18, %r0
88*99909e93SAmaury Sechet; CHECK-NEXT: sel.eq %r9, %r3, %rv
8950d4e989SJacques Pienaardefine i32 @sgt_i64(i64 inreg %x, i64 inreg %y) {
9050d4e989SJacques Pienaar  %a = icmp sgt i64 %x, %y
9150d4e989SJacques Pienaar  %b = zext i1 %a to i32
9250d4e989SJacques Pienaar  ret i32 %b
9350d4e989SJacques Pienaar}
9450d4e989SJacques Pienaar
9550d4e989SJacques Pienaar; CHECK-LABEL: sge_i64:
96*99909e93SAmaury Sechet; CHECK: sub.f %r6, %r18, %r0
97*99909e93SAmaury Sechet; CHECK-NEXT: sge %r3
98*99909e93SAmaury Sechet; CHECK-NEXT: sub.f %r7, %r19, %r0
99*99909e93SAmaury Sechet; CHECK-NEXT: suge %r9
100*99909e93SAmaury Sechet; CHECK-NEXT: sub.f %r6, %r18, %r0
101*99909e93SAmaury Sechet; CHECK-NEXT: sel.eq %r9, %r3, %rv
10250d4e989SJacques Pienaardefine i32 @sge_i64(i64 inreg %x, i64 inreg %y) {
10350d4e989SJacques Pienaar  %a = icmp sge i64 %x, %y
10450d4e989SJacques Pienaar  %b = zext i1 %a to i32
10550d4e989SJacques Pienaar  ret i32 %b
10650d4e989SJacques Pienaar}
10750d4e989SJacques Pienaar
10850d4e989SJacques Pienaar; CHECK-LABEL: ugt_i64:
109*99909e93SAmaury Sechet; CHECK: sub.f %r6, %r18, %r0
110*99909e93SAmaury Sechet; CHECK-NEXT: sugt %r3
111*99909e93SAmaury Sechet; CHECK-NEXT: sub.f %r7, %r19, %r0
112*99909e93SAmaury Sechet; CHECK-NEXT: sugt %r9
113*99909e93SAmaury Sechet; CHECK-NEXT: sub.f %r6, %r18, %r0
114*99909e93SAmaury Sechet; CHECK-NEXT: sel.eq %r9, %r3, %rv
11550d4e989SJacques Pienaardefine i32 @ugt_i64(i64 inreg %x, i64 inreg %y) {
11650d4e989SJacques Pienaar  %a = icmp ugt i64 %x, %y
11750d4e989SJacques Pienaar  %b = zext i1 %a to i32
11850d4e989SJacques Pienaar  ret i32 %b
11950d4e989SJacques Pienaar}
12050d4e989SJacques Pienaar
12150d4e989SJacques Pienaar; CHECK-LABEL: uge_i64:
122*99909e93SAmaury Sechet; CHECK: sub.f %r6, %r18, %r0
123*99909e93SAmaury Sechet; CHECK-NEXT: suge %r3
124*99909e93SAmaury Sechet; CHECK-NEXT: sub.f %r7, %r19, %r0
125*99909e93SAmaury Sechet; CHECK-NEXT: suge %r9
126*99909e93SAmaury Sechet; CHECK-NEXT: sub.f %r6, %r18, %r0
127*99909e93SAmaury Sechet; CHECK-NEXT: sel.eq %r9, %r3, %rv
12850d4e989SJacques Pienaardefine i32 @uge_i64(i64 inreg %x, i64 inreg %y) {
12950d4e989SJacques Pienaar  %a = icmp uge i64 %x, %y
13050d4e989SJacques Pienaar  %b = zext i1 %a to i32
13150d4e989SJacques Pienaar  ret i32 %b
13250d4e989SJacques Pienaar}
133