Add a target-specific branchless method for double-width relational
[oota-llvm.git] / test / CodeGen / X86 / long-setcc.ll
1 ; RUN: llc < %s -march=x86 | FileCheck %s
2
3 ; General case
4 define i1 @t1(i64 %x, i64 %y) nounwind {
5 ; CHECK: @t1
6 ; CHECK: subl
7 ; CHECK: sbbl
8 ; CHECK: setl %al
9   %B = icmp slt i64 %x, %y
10   ret i1 %B
11 }
12
13 ; Some special cases
14 define i1 @t2(i64 %x) nounwind {
15 ; CHECK: @t2
16 ; CHECK: shrl $31, %eax
17   %B = icmp slt i64 %x, 0
18   ret i1 %B
19 }
20
21 define i1 @t3(i64 %x) nounwind {
22 ; CHECK: @t3
23 ; CHECX: cmpl $0
24 ; CHECX: sete %al
25   %tmp = icmp ult i64 %x, 4294967296
26   ret i1 %tmp
27 }
28
29 define i1 @t4(i64 %x) nounwind {
30 ; CHECK: @t4
31 ; CHECX: cmpl $0
32 ; CHECX: setne %al
33   %tmp = icmp ugt i64 %x, 4294967295
34   ret i1 %tmp
35 }