llvm-6502/test/CodeGen/X86/long-setcc.ll
Andrew Trick d8fa01fbd7 Reapply Eli's r127852 now that the pre-RA scheduler can spill EFLAGS.
(target-specific branchless method for double-width relational comparisons on x86)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128175 91177308-0d34-0410-b5e6-96231b3b80d8
2011-03-23 22:16:02 +00:00

36 lines
602 B
LLVM

; RUN: llc < %s -march=x86 | FileCheck %s
; General case
define i1 @t1(i64 %x, i64 %y) nounwind {
; CHECK: @t1
; CHECK: subl
; CHECK: sbbl
; CHECK: setl %al
%B = icmp slt i64 %x, %y
ret i1 %B
}
; Some special cases
define i1 @t2(i64 %x) nounwind {
; CHECK: @t2
; CHECK: shrl $31, %eax
%B = icmp slt i64 %x, 0
ret i1 %B
}
define i1 @t3(i64 %x) nounwind {
; CHECK: @t3
; CHECX: cmpl $0
; CHECX: sete %al
%tmp = icmp ult i64 %x, 4294967296
ret i1 %tmp
}
define i1 @t4(i64 %x) nounwind {
; CHECK: @t4
; CHECX: cmpl $0
; CHECX: setne %al
%tmp = icmp ugt i64 %x, 4294967295
ret i1 %tmp
}