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