For x86, canonicalize max
[oota-llvm.git] / test / CodeGen / X86 / jump_sign.ll
1 ; RUN: llc < %s -march=x86 | FileCheck %s
2
3 define i32 @f(i32 %X) {
4 entry:
5 ; CHECK: f:
6 ; CHECK: jns
7         %tmp1 = add i32 %X, 1           ; <i32> [#uses=1]
8         %tmp = icmp slt i32 %tmp1, 0            ; <i1> [#uses=1]
9         br i1 %tmp, label %cond_true, label %cond_next
10
11 cond_true:              ; preds = %entry
12         %tmp2 = tail call i32 (...)* @bar( )            ; <i32> [#uses=0]
13         br label %cond_next
14
15 cond_next:              ; preds = %cond_true, %entry
16         %tmp3 = tail call i32 (...)* @baz( )            ; <i32> [#uses=0]
17         ret i32 undef
18 }
19
20 declare i32 @bar(...)
21
22 declare i32 @baz(...)
23
24 ; rdar://10633221
25 define i32 @g(i32 %a, i32 %b) nounwind {
26 entry:
27 ; CHECK: g:
28 ; CHECK-NOT: test
29 ; CHECK: cmovs
30   %sub = sub nsw i32 %a, %b
31   %cmp = icmp sgt i32 %sub, 0
32   %cond = select i1 %cmp, i32 %sub, i32 0
33   ret i32 %cond
34 }