mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-11-16 11:05:54 +00:00
d8fa01fbd7
(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
36 lines
602 B
LLVM
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
|
|
}
|